react-native-windows 0.76.2 → 0.77.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/NativeAnimatedAllowlist.windows.js +122 -0
  8. package/Libraries/Animated/animations/Animation.js +60 -25
  9. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  10. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  11. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  12. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  13. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  14. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  15. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  17. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  18. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  19. package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
  20. package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
  21. package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
  22. package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  24. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  26. package/Libraries/Animated/useAnimatedProps.js +41 -35
  27. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  28. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  29. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  30. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  31. package/Libraries/Components/Button.js +9 -4
  32. package/Libraries/Components/Button.windows.js +19 -5
  33. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  34. package/Libraries/Components/Glyph/Glyph.js +2 -1
  35. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  36. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  37. package/Libraries/Components/Pressable/Pressable.js +4 -4
  38. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  39. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  40. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  41. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  42. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  43. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  44. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  45. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  46. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  47. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  48. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  49. package/Libraries/Components/Switch/Switch.js +8 -6
  50. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  51. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  52. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  53. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  54. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  55. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  56. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  57. package/Libraries/Components/TextInput/TextInput.js +37 -13
  58. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  59. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  60. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  61. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  62. package/Libraries/Components/Touchable/Position.js +7 -2
  63. package/Libraries/Components/Touchable/Touchable.js +4 -0
  64. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  65. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  66. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  67. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  68. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  71. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  73. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  74. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  75. package/Libraries/Components/View/View.js +4 -4
  76. package/Libraries/Components/View/View.windows.js +88 -57
  77. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  78. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  79. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  80. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  81. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  82. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  83. package/Libraries/Core/ExceptionsManager.js +50 -29
  84. package/Libraries/Core/ReactNativeVersion.js +3 -3
  85. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  86. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  87. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  88. package/Libraries/Core/setUpErrorHandling.js +20 -18
  89. package/Libraries/Core/setUpReactDevTools.js +107 -8
  90. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  91. package/Libraries/Core/setUpTimers.js +21 -18
  92. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  93. package/Libraries/Image/AssetSourceResolver.js +12 -1
  94. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  95. package/Libraries/Image/Image.android.js +1 -5
  96. package/Libraries/Image/Image.d.ts +20 -29
  97. package/Libraries/Image/Image.ios.js +0 -2
  98. package/Libraries/Image/Image.windows.js +5 -1
  99. package/Libraries/Image/ImageBackground.js +2 -5
  100. package/Libraries/Image/ImageProps.js +7 -6
  101. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  102. package/Libraries/Image/ImageResizeMode.js +4 -1
  103. package/Libraries/Image/ImageSource.d.ts +0 -2
  104. package/Libraries/Image/ImageSource.js +0 -2
  105. package/Libraries/Image/ImageTypes.flow.js +11 -9
  106. package/Libraries/Image/ImageUtils.js +6 -3
  107. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  108. package/Libraries/Inspector/Inspector.js +1 -0
  109. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  110. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  111. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  112. package/Libraries/Interaction/InteractionManager.js +6 -1
  113. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  114. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  115. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  116. package/Libraries/Lists/FlatList.d.ts +1 -2
  117. package/Libraries/Lists/FlatList.js +2 -2
  118. package/Libraries/Lists/SectionListModern.js +7 -7
  119. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  120. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  121. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  122. package/Libraries/LogBox/LogBox.js +18 -5
  123. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  124. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  125. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  126. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  129. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  131. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  132. package/Libraries/Modal/Modal.d.ts +12 -0
  133. package/Libraries/Modal/Modal.js +31 -4
  134. package/Libraries/Modal/Modal.windows.js +370 -0
  135. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  136. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  137. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  138. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  139. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  140. package/Libraries/Network/XHRInterceptor.js +63 -14
  141. package/Libraries/Network/XMLHttpRequest.js +26 -1
  142. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  143. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  144. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  145. package/Libraries/Pressability/HoverState.js +2 -0
  146. package/Libraries/Pressability/Pressability.js +2 -3
  147. package/Libraries/Pressability/Pressability.windows.js +2 -3
  148. package/Libraries/Pressability/usePressability.js +4 -1
  149. package/Libraries/ReactNative/AppContainer.js +1 -1
  150. package/Libraries/ReactNative/AppRegistry.js +1 -11
  151. package/Libraries/ReactNative/DisplayMode.js +1 -1
  152. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  153. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  154. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  155. package/Libraries/ReactNative/renderApplication.js +9 -8
  156. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  157. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  158. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  159. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  160. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  161. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  162. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  163. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  166. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  167. package/Libraries/StyleSheet/processTransform.js +3 -34
  168. package/Libraries/Text/Text.js +248 -249
  169. package/Libraries/Text/Text.windows.js +298 -292
  170. package/Libraries/Text/TextNativeComponent.js +0 -1
  171. package/Libraries/Text/TextProps.windows.js +2 -0
  172. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  173. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  174. package/Libraries/Types/CoreEventTypes.js +4 -6
  175. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  176. package/Libraries/Utilities/Appearance.js +3 -1
  177. package/Libraries/Utilities/BackHandler.android.js +6 -18
  178. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  179. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  180. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  181. package/Libraries/Utilities/HMRClient.js +3 -4
  182. package/Libraries/Utilities/Platform.flow.js +2 -2
  183. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  184. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  185. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  186. package/Libraries/Utilities/useMergeRefs.js +26 -7
  187. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  188. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  189. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  190. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  191. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  192. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  193. package/Microsoft.ReactNative/CompositionComponentView.idl +2 -1
  194. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  195. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +6 -3
  196. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +7 -0
  198. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +2 -0
  199. package/Microsoft.ReactNative/Fabric/ComponentView.cpp +45 -50
  200. package/Microsoft.ReactNative/Fabric/ComponentView.h +14 -22
  201. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +943 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +80 -0
  203. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +223 -21
  204. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  205. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +187 -6
  206. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +10 -1
  207. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +8 -32
  208. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +349 -929
  209. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +32 -29
  210. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +9 -2
  211. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +2 -1
  212. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
  213. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +181 -123
  214. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +16 -8
  215. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +99 -37
  216. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +25 -3
  217. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +64 -3
  218. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +12 -0
  219. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +51 -3
  220. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +3 -0
  221. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +18 -8
  222. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +3 -0
  223. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  224. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +56 -7
  225. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +8 -0
  226. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  227. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +9 -3
  228. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  229. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +35 -0
  230. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -0
  231. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +1 -1
  232. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  233. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  234. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  235. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  236. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +1 -5
  237. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +26 -0
  238. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +1 -1
  239. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  240. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  241. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  242. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  243. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  244. package/Microsoft.ReactNative/ReactNativeIsland.idl +3 -2
  245. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  246. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  247. package/Microsoft.ReactNative/ViewProps.idl +2 -0
  248. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  249. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  250. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  251. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  252. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  253. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  254. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  255. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  256. package/Microsoft.ReactNative.Cxx/ComponentView.Experimental.interop.h +14 -0
  257. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  258. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  259. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  260. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  261. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  262. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  263. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  264. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  265. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  266. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  267. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  268. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  269. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  270. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  271. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  272. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  273. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  274. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  275. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  276. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  277. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  278. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  279. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  280. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  281. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  282. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  283. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  284. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  285. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  286. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  287. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  288. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  289. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  290. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  291. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  292. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  293. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  294. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  295. package/PropertySheets/Bundle.Common.targets +1 -1
  296. package/PropertySheets/Bundle.props +3 -0
  297. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  298. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  299. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  300. package/ReactCommon/ReactCommon.vcxproj +5 -0
  301. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  302. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  303. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  304. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  305. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
  309. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  310. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  311. package/Shared/InspectorPackagerConnection.cpp +3 -6
  312. package/Shared/InspectorPackagerConnection.h +2 -2
  313. package/Shared/InstanceManager.h +1 -1
  314. package/Shared/OInstance.h +1 -1
  315. package/Shared/Shared.vcxitems +20 -2
  316. package/Shared/Shared.vcxitems.filters +4 -1
  317. package/Shared/TurboModuleManager.cpp +29 -4
  318. package/codegen/NativeAccessibilityInfoSpec.g.h +28 -9
  319. package/codegen/NativeAccessibilityManagerSpec.g.h +20 -13
  320. package/codegen/NativeActionSheetManagerSpec.g.h +5 -0
  321. package/codegen/NativeAlertManagerSpec.g.h +1 -0
  322. package/codegen/NativeAnimatedModuleSpec.g.h +1 -0
  323. package/codegen/NativeAnimatedTurboModuleSpec.g.h +1 -0
  324. package/codegen/NativeAppStateSpec.g.h +1 -0
  325. package/codegen/NativeAppThemeSpec.g.h +1 -0
  326. package/codegen/NativeAppearanceSpec.g.h +1 -0
  327. package/codegen/NativeBlobModuleSpec.g.h +1 -0
  328. package/codegen/NativeBugReportingSpec.g.h +1 -0
  329. package/codegen/NativeClipboardSpec.g.h +1 -0
  330. package/codegen/NativeDOMSpec.g.h +1 -0
  331. package/codegen/NativeDevLoadingViewSpec.g.h +1 -0
  332. package/codegen/NativeDevMenuSpec.g.h +1 -0
  333. package/codegen/NativeDevSettingsSpec.g.h +1 -0
  334. package/codegen/NativeDeviceEventManagerSpec.g.h +1 -0
  335. package/codegen/NativeDeviceInfoSpec.g.h +1 -0
  336. package/codegen/NativeDialogManagerAndroidSpec.g.h +1 -0
  337. package/codegen/NativeDialogManagerWindowsSpec.g.h +1 -0
  338. package/codegen/NativeExceptionsManagerSpec.g.h +2 -7
  339. package/codegen/NativeFileReaderModuleSpec.g.h +1 -0
  340. package/codegen/NativeFrameRateLoggerSpec.g.h +1 -0
  341. package/codegen/NativeHeadlessJsTaskSupportSpec.g.h +1 -0
  342. package/codegen/NativeI18nManagerSpec.g.h +1 -0
  343. package/codegen/NativeIdleCallbacksSpec.g.h +1 -0
  344. package/codegen/NativeImageEditorSpec.g.h +1 -0
  345. package/codegen/NativeImageLoaderAndroidSpec.g.h +1 -0
  346. package/codegen/NativeImageLoaderIOSSpec.g.h +1 -0
  347. package/codegen/NativeImageStoreAndroidSpec.g.h +1 -0
  348. package/codegen/NativeImageStoreIOSSpec.g.h +1 -0
  349. package/codegen/NativeIntentAndroidSpec.g.h +1 -0
  350. package/codegen/NativeIntersectionObserverSpec.g.h +3 -0
  351. package/codegen/NativeJSCHeapCaptureSpec.g.h +1 -0
  352. package/codegen/NativeJSCSamplingProfilerSpec.g.h +1 -0
  353. package/codegen/NativeKeyboardObserverSpec.g.h +1 -0
  354. package/codegen/NativeLinkingManagerSpec.g.h +1 -0
  355. package/codegen/NativeLogBoxSpec.g.h +1 -0
  356. package/codegen/NativeMicrotasksSpec.g.h +1 -0
  357. package/codegen/NativeModalManagerSpec.g.h +1 -0
  358. package/codegen/NativeMutationObserverSpec.g.h +1 -0
  359. package/codegen/NativeNetworkingAndroidSpec.g.h +1 -0
  360. package/codegen/NativeNetworkingIOSSpec.g.h +1 -0
  361. package/codegen/NativePerformanceSpec.g.h +128 -3
  362. package/codegen/NativePermissionsAndroidSpec.g.h +1 -0
  363. package/codegen/NativePlatformConstantsAndroidSpec.g.h +1 -0
  364. package/codegen/NativePlatformConstantsIOSSpec.g.h +1 -0
  365. package/codegen/NativePlatformConstantsWindowsSpec.g.h +1 -0
  366. package/codegen/NativePushNotificationManagerIOSSpec.g.h +1 -0
  367. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  368. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  369. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +126 -137
  370. package/codegen/NativeRedBoxSpec.g.h +1 -0
  371. package/codegen/NativeSampleTurboModuleSpec.g.h +1 -0
  372. package/codegen/NativeSegmentFetcherSpec.g.h +1 -0
  373. package/codegen/NativeSettingsManagerSpec.g.h +1 -0
  374. package/codegen/NativeShareModuleSpec.g.h +1 -0
  375. package/codegen/NativeSoundManagerSpec.g.h +1 -0
  376. package/codegen/NativeSourceCodeSpec.g.h +1 -0
  377. package/codegen/NativeStatusBarManagerAndroidSpec.g.h +1 -0
  378. package/codegen/NativeStatusBarManagerIOSSpec.g.h +1 -0
  379. package/codegen/NativeTimingSpec.g.h +1 -0
  380. package/codegen/NativeToastAndroidSpec.g.h +1 -0
  381. package/codegen/NativeUIManagerSpec.g.h +1 -0
  382. package/codegen/NativeVibrationSpec.g.h +1 -0
  383. package/codegen/NativeWebSocketModuleSpec.g.h +1 -0
  384. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  385. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  386. package/codegen/react/components/rnwcore/Props.h +1 -0
  387. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  388. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  389. package/codegen/react/components/rnwcore/States.h +0 -12
  390. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  391. package/codegen/rnwcoreJSI.h +942 -511
  392. package/index.js +10 -3
  393. package/index.windows.js +10 -3
  394. package/jest/setup.js +36 -1
  395. package/just-task.js +15 -0
  396. package/package.json +22 -22
  397. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  398. package/src/private/animated/useAnimatedPropsMemo.js +348 -0
  399. package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
  400. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  401. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  402. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  403. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  404. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  405. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  406. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  407. package/src/private/devmenu/DevMenu.d.ts +20 -0
  408. package/src/private/devmenu/DevMenu.js +31 -0
  409. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  410. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  411. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  412. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  413. package/src/private/setup/setUpDOM.js +14 -6
  414. package/src/private/setup/setUpMutationObserver.js +5 -0
  415. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  416. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  417. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  418. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  419. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  420. package/src/private/specs/modules/NativeAppearance.js +4 -10
  421. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  422. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  423. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  424. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  425. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  426. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  427. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  428. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  429. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  430. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  431. package/src/private/webapis/performance/EventTiming.js +13 -8
  432. package/src/private/webapis/performance/Performance.js +66 -73
  433. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  434. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  435. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  436. package/src/private/webapis/performance/UserTiming.js +11 -7
  437. package/src/private/webapis/performance/Utilities.js +18 -0
  438. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  439. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  440. package/templates/cpp-lib/template.config.js +13 -7
  441. package/templates/templateUtils.js +10 -0
  442. package/types/index.d.ts +1 -1
  443. package/types/public/ReactNativeTypes.d.ts +4 -8
  444. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  445. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  446. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  447. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  448. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  449. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  450. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  451. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  452. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -52
  453. package/codegen/NativePerformanceObserverSpec.g.h +0 -130
  454. package/src/private/components/useSyncOnScroll.js +0 -48
  455. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  456. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  457. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  458. package/types/experimental.d.ts +0 -59
  459. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -0,0 +1,80 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+
5
+ #pragma once
6
+
7
+ #include <Fabric/ComponentView.h>
8
+ #include <Microsoft.ReactNative.Cxx/ReactContext.h>
9
+ #include <react/renderer/components/view/ViewEventEmitter.h>
10
+ #include <react/renderer/components/view/ViewProps.h>
11
+ #include "CompositionHelpers.h"
12
+
13
+ namespace winrt::Microsoft::ReactNative::Composition::implementation {
14
+
15
+ struct ComponentView;
16
+
17
+ // Controls adding/removing appropriate visuals to a parent to render a specific border without requiring
18
+ struct BorderPrimitive {
19
+ static constexpr size_t SpecialBorderLayerCount = 8;
20
+
21
+ // Use when attaching to an existing visual - We do this for View's border properties, to optimize the number of
22
+ // visuals for each view.
23
+ BorderPrimitive(
24
+ winrt::Microsoft::ReactNative::Composition::implementation::ComponentView &outer,
25
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &rootVisual);
26
+
27
+ // This ctor creates a new root visual that can then be added to the visual tree
28
+ BorderPrimitive(winrt::Microsoft::ReactNative::Composition::implementation::ComponentView &outer);
29
+
30
+ void markNeedsUpdate() noexcept;
31
+
32
+ // We hoist focus visuals up the tree to allow them to be higher in the z-order.
33
+ // This means a single BorderPrimitive may change the owning ComponentView as focus moves around
34
+ void setOuter(winrt::Microsoft::ReactNative::Composition::implementation::ComponentView *outer) noexcept;
35
+
36
+ void updateProps(
37
+ const facebook::react::ViewProps &oldViewProps,
38
+ const facebook::react::ViewProps &newViewProps) noexcept;
39
+ void finalize(
40
+ facebook::react::LayoutMetrics const &layoutMetrics,
41
+ const facebook::react::BorderMetrics &borderMetrics) noexcept;
42
+ void onThemeChanged(
43
+ facebook::react::LayoutMetrics const &layoutMetrics,
44
+ const facebook::react::BorderMetrics &borderMetrics) noexcept;
45
+
46
+ uint8_t numberOfVisuals() const noexcept;
47
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual RootVisual() const noexcept;
48
+
49
+ static facebook::react::BorderMetrics resolveAndAlignBorderMetrics(
50
+ facebook::react::LayoutMetrics const &layoutMetrics,
51
+ const facebook::react::ViewProps &viewProps) noexcept;
52
+
53
+ static bool requiresBorder(
54
+ const facebook::react::BorderMetrics &borderMetrics,
55
+ winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme) noexcept;
56
+
57
+ static winrt::com_ptr<ID2D1PathGeometry> GenerateRoundedRectPathGeometry(
58
+ winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext,
59
+ const facebook::react::RectangleCorners<facebook::react::CornerRadii> &baseRadius,
60
+ const facebook::react::RectangleEdges<float> &inset,
61
+ const facebook::react::RectangleEdges<float> &rectPathGeometry) noexcept;
62
+
63
+ private:
64
+ std::array<winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual, SpecialBorderLayerCount>
65
+ FindSpecialBorderLayers() const noexcept;
66
+
67
+ bool TryUpdateSpecialBorderLayers(
68
+ winrt::Microsoft::ReactNative::Composition::implementation::Theme *theme,
69
+ std::array<winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual, SpecialBorderLayerCount>
70
+ &spBorderVisuals,
71
+ facebook::react::LayoutMetrics const &layoutMetrics,
72
+ const facebook::react::BorderMetrics &borderMetrics) noexcept;
73
+
74
+ uint8_t m_numBorderVisuals{0};
75
+ winrt::Microsoft::ReactNative::Composition::implementation::ComponentView *m_outer;
76
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_rootVisual{nullptr};
77
+ bool m_needsUpdate{true};
78
+ };
79
+
80
+ } // namespace winrt::Microsoft::ReactNative::Composition::implementation
@@ -1,6 +1,8 @@
1
1
  #include "pch.h"
2
2
  #include "CompositionDynamicAutomationProvider.h"
3
3
  #include <Fabric/ComponentView.h>
4
+ #include <Fabric/Composition/SwitchComponentView.h>
5
+ #include <Fabric/Composition/TextInput/WindowsTextInputComponentView.h>
4
6
  #include <Unicode.h>
5
7
  #include "RootComponentView.h"
6
8
  #include "UiaHelpers.h"
@@ -9,7 +11,21 @@ namespace winrt::Microsoft::ReactNative::implementation {
9
11
 
10
12
  CompositionDynamicAutomationProvider::CompositionDynamicAutomationProvider(
11
13
  const winrt::Microsoft::ReactNative::Composition::ComponentView &componentView) noexcept
12
- : m_view{componentView} {}
14
+ : m_view{componentView} {
15
+ auto strongView = m_view.view();
16
+
17
+ if (!strongView)
18
+ return;
19
+
20
+ auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
21
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
22
+ if (!props)
23
+ return;
24
+
25
+ if (props->accessibilityState.has_value() && props->accessibilityState->selected.has_value()) {
26
+ AddSelectionItemsToContainer(this);
27
+ }
28
+ }
13
29
 
14
30
  HRESULT __stdcall CompositionDynamicAutomationProvider::Navigate(
15
31
  NavigateDirection direction,
@@ -141,6 +157,20 @@ bool expandableControl(const facebook::react::SharedViewProps props) {
141
157
  return false;
142
158
  }
143
159
 
160
+ bool togglableControl(const facebook::react::SharedViewProps props) {
161
+ if (props->accessibilityState.has_value() &&
162
+ props->accessibilityState->checked != facebook::react::AccessibilityState::None) {
163
+ return true;
164
+ }
165
+ auto accessibilityActions = props->accessibilityActions;
166
+ for (size_t i = 0; i < accessibilityActions.size(); i++) {
167
+ if (accessibilityActions[i].name == "toggle") {
168
+ return true;
169
+ }
170
+ }
171
+ return false;
172
+ }
173
+
144
174
  HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTERNID patternId, IUnknown **pRetVal) {
145
175
  if (pRetVal == nullptr)
146
176
  return E_POINTER;
@@ -162,10 +192,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
162
192
  props->accessibilityRole.empty() ? compositionView->DefaultControlType() : props->accessibilityRole;
163
193
  // Invoke control pattern is used to support controls that do not maintain state
164
194
  // when activated but rather initiate or perform a single, unambiguous action.
165
- if (patternId == UIA_InvokePatternId &&
166
- (accessibilityRole == "button" || accessibilityRole == "imagebutton" || accessibilityRole == "link" ||
167
- accessibilityRole == "splitbutton" || (accessibilityRole == "menuitem" && props->onAccessibilityTap) ||
168
- (accessibilityRole == "treeitem" && props->onAccessibilityTap))) {
195
+ if (patternId == UIA_InvokePatternId && (props->onAccessibilityTap)) {
169
196
  *pRetVal = static_cast<IInvokeProvider *>(this);
170
197
  AddRef();
171
198
  }
@@ -176,32 +203,36 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
176
203
  }
177
204
 
178
205
  if (patternId == UIA_ValuePatternId &&
179
- (accessibilityRole == "textinput" || accessibilityRole == "searchbox" ||
180
- (accessibilityRole == "button" && accessibilityValueHasValue(props->accessibilityValue)) ||
181
- (accessibilityRole == "combobox" && accessibilityValueHasValue(props->accessibilityValue)) ||
182
- (accessibilityRole == "link" && accessibilityValueHasValue(props->accessibilityValue)) ||
183
- (accessibilityRole == "listitem" && accessibilityValueHasValue(props->accessibilityValue)) ||
184
- (accessibilityRole == "progressbar" && accessibilityValueHasValue(props->accessibilityValue)) ||
185
- (accessibilityRole == "adjustable" && accessibilityValueHasValue(props->accessibilityValue)) ||
186
- (accessibilityRole == "spinbutton" && accessibilityValueHasValue(props->accessibilityValue)))) {
206
+ (strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::WindowsTextInputComponentView>() ||
207
+ accessibilityValueHasValue(props->accessibilityValue))) {
187
208
  *pRetVal = static_cast<IValueProvider *>(this);
188
209
  AddRef();
189
210
  }
190
211
 
191
- if (patternId == UIA_TogglePatternId && (accessibilityRole == "switch" || accessibilityRole == "checkbox")) {
212
+ if (patternId == UIA_TogglePatternId &&
213
+ (strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::SwitchComponentView>() ||
214
+ togglableControl(props))) {
192
215
  *pRetVal = static_cast<IToggleProvider *>(this);
193
216
  AddRef();
194
217
  }
195
218
 
196
- if (patternId == UIA_ExpandCollapsePatternId &&
197
- (accessibilityRole == "combobox" || accessibilityRole == "splitbutton" || accessibilityRole == "treeitem" ||
198
- (expandableControl(props) &&
199
- (accessibilityRole == "toolbar" || accessibilityRole == "menuitem" || accessibilityRole == "menubar" ||
200
- accessibilityRole == "listitem" || accessibilityRole == "group" || accessibilityRole == "button")))) {
219
+ if (patternId == UIA_ExpandCollapsePatternId && expandableControl(props)) {
201
220
  *pRetVal = static_cast<IExpandCollapseProvider *>(this);
202
221
  AddRef();
203
222
  }
204
223
 
224
+ if (patternId == UIA_SelectionPatternId && props->accessibilityState.has_value() &&
225
+ props->accessibilityState->multiselectable.has_value() && props->accessibilityState->required.has_value()) {
226
+ *pRetVal = static_cast<ISelectionProvider *>(this);
227
+ AddRef();
228
+ }
229
+
230
+ if (patternId == UIA_SelectionItemPatternId && props->accessibilityState.has_value() &&
231
+ props->accessibilityState->selected.has_value()) {
232
+ *pRetVal = static_cast<ISelectionItemProvider *>(this);
233
+ AddRef();
234
+ }
235
+
205
236
  return S_OK;
206
237
  }
207
238
 
@@ -345,6 +376,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPropertyValue(PROPERT
345
376
  case UIA_IsOffscreenPropertyId: {
346
377
  pRetVal->vt = VT_BOOL;
347
378
  pRetVal->boolVal = (compositionView->getClipState() == ClipState::FullyClipped) ? VARIANT_TRUE : VARIANT_FALSE;
379
+ break;
348
380
  }
349
381
  case UIA_HelpTextPropertyId: {
350
382
  pRetVal->vt = VT_BSTR;
@@ -508,8 +540,13 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::get_ToggleState(ToggleSt
508
540
  if (!strongView)
509
541
  return UIA_E_ELEMENTNOTAVAILABLE;
510
542
 
511
- *pRetVal =
512
- winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->getToggleState();
543
+ auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
544
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
545
+
546
+ *pRetVal = (props->accessibilityState.has_value() &&
547
+ props->accessibilityState->checked != facebook::react::AccessibilityState::None)
548
+ ? GetToggleState(props->accessibilityState)
549
+ : winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->getToggleState();
513
550
  return S_OK;
514
551
  }
515
552
 
@@ -562,4 +599,169 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::Collapse() {
562
599
  return S_OK;
563
600
  }
564
601
 
602
+ HRESULT __stdcall CompositionDynamicAutomationProvider::get_CanSelectMultiple(BOOL *pRetVal) {
603
+ if (pRetVal == nullptr)
604
+ return E_POINTER;
605
+ auto strongView = m_view.view();
606
+
607
+ if (!strongView)
608
+ return UIA_E_ELEMENTNOTAVAILABLE;
609
+
610
+ auto props =
611
+ std::static_pointer_cast<const facebook::react::ViewProps>(winrt::get_self<ComponentView>(strongView)->props());
612
+
613
+ if (props == nullptr)
614
+ return UIA_E_ELEMENTNOTAVAILABLE;
615
+
616
+ *pRetVal = (props->accessibilityState.has_value() && props->accessibilityState->multiselectable.has_value())
617
+ ? props->accessibilityState->multiselectable.value()
618
+ : false;
619
+
620
+ return S_OK;
621
+ }
622
+
623
+ HRESULT __stdcall CompositionDynamicAutomationProvider::get_IsSelectionRequired(BOOL *pRetVal) {
624
+ if (pRetVal == nullptr)
625
+ return E_POINTER;
626
+ auto strongView = m_view.view();
627
+
628
+ if (!strongView)
629
+ return UIA_E_ELEMENTNOTAVAILABLE;
630
+
631
+ auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
632
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
633
+
634
+ if (props == nullptr)
635
+ return UIA_E_ELEMENTNOTAVAILABLE;
636
+
637
+ *pRetVal = (props->accessibilityState.has_value() && props->accessibilityState->required.has_value())
638
+ ? props->accessibilityState->required.value()
639
+ : false;
640
+
641
+ return S_OK;
642
+ }
643
+
644
+ HRESULT __stdcall CompositionDynamicAutomationProvider::GetSelection(SAFEARRAY **pRetVal) {
645
+ auto strongView = m_view.view();
646
+
647
+ if (!strongView)
648
+ return UIA_E_ELEMENTNOTAVAILABLE;
649
+
650
+ std::vector<int> selectedItems;
651
+ for (size_t i = 0; i < m_selectionItems.size(); i++) {
652
+ auto selectionItem = m_selectionItems.at(i);
653
+ auto provider = selectionItem.as<CompositionDynamicAutomationProvider>();
654
+ BOOL selected;
655
+ auto hr = provider->get_IsSelected(&selected);
656
+ if (hr == S_OK && selected) {
657
+ selectedItems.push_back(int(i));
658
+ }
659
+ }
660
+
661
+ *pRetVal = SafeArrayCreateVector(VT_UNKNOWN, 0, ULONG(selectedItems.size()));
662
+ if (*pRetVal == nullptr)
663
+ return E_OUTOFMEMORY;
664
+
665
+ for (size_t i = 0; i < selectedItems.size(); i++) {
666
+ auto pos = static_cast<long>(i);
667
+ SafeArrayPutElement(*pRetVal, &pos, m_selectionItems.at(selectedItems.at(i)).get());
668
+ }
669
+ return S_OK;
670
+ }
671
+
672
+ void CompositionDynamicAutomationProvider::AddToSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item) {
673
+ if (std::find(m_selectionItems.begin(), m_selectionItems.end(), item) != m_selectionItems.end()) {
674
+ return;
675
+ }
676
+ m_selectionItems.push_back(item);
677
+ }
678
+
679
+ void CompositionDynamicAutomationProvider::RemoveFromSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item) {
680
+ std::erase(m_selectionItems, item);
681
+ }
682
+
683
+ HRESULT __stdcall CompositionDynamicAutomationProvider::AddToSelection() {
684
+ auto strongView = m_view.view();
685
+
686
+ if (!strongView)
687
+ return UIA_E_ELEMENTNOTAVAILABLE;
688
+
689
+ DispatchAccessibilityAction(m_view, "addToSelection");
690
+ return S_OK;
691
+ }
692
+
693
+ HRESULT __stdcall CompositionDynamicAutomationProvider::get_IsSelected(BOOL *pRetVal) {
694
+ if (pRetVal == nullptr)
695
+ return E_POINTER;
696
+ auto strongView = m_view.view();
697
+
698
+ if (!strongView)
699
+ return UIA_E_ELEMENTNOTAVAILABLE;
700
+
701
+ auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
702
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
703
+
704
+ if (props == nullptr)
705
+ return UIA_E_ELEMENTNOTAVAILABLE;
706
+
707
+ *pRetVal = (props->accessibilityState.has_value() && props->accessibilityState->selected.has_value())
708
+ ? props->accessibilityState->selected.value()
709
+ : false;
710
+
711
+ return S_OK;
712
+ }
713
+
714
+ IRawElementProviderSimple *findSelectionContainer(winrt::Microsoft::ReactNative::ComponentView current) {
715
+ if (!current)
716
+ return nullptr;
717
+
718
+ auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
719
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(current)->props());
720
+ if (props->accessibilityState.has_value() && props->accessibilityState->multiselectable.has_value() &&
721
+ props->accessibilityState->required.has_value()) {
722
+ auto uiaProvider =
723
+ current.as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>()->EnsureUiaProvider();
724
+ if (uiaProvider != nullptr) {
725
+ auto spProviderSimple = uiaProvider.try_as<IRawElementProviderSimple>();
726
+ if (spProviderSimple != nullptr) {
727
+ spProviderSimple->AddRef();
728
+ return spProviderSimple.get();
729
+ }
730
+ }
731
+ } else {
732
+ return findSelectionContainer(current.Parent());
733
+ }
734
+ return nullptr;
735
+ }
736
+
737
+ HRESULT __stdcall CompositionDynamicAutomationProvider::get_SelectionContainer(IRawElementProviderSimple **pRetVal) {
738
+ if (pRetVal == nullptr)
739
+ return E_POINTER;
740
+ auto strongView = m_view.view();
741
+
742
+ if (!strongView)
743
+ return UIA_E_ELEMENTNOTAVAILABLE;
744
+
745
+ *pRetVal = findSelectionContainer(strongView.Parent());
746
+ return S_OK;
747
+ }
748
+
749
+ HRESULT __stdcall CompositionDynamicAutomationProvider::RemoveFromSelection() {
750
+ auto strongView = m_view.view();
751
+
752
+ if (!strongView)
753
+ return UIA_E_ELEMENTNOTAVAILABLE;
754
+ DispatchAccessibilityAction(m_view, "removeFromSelection");
755
+ return S_OK;
756
+ }
757
+
758
+ HRESULT __stdcall CompositionDynamicAutomationProvider::Select() {
759
+ auto strongView = m_view.view();
760
+
761
+ if (!strongView)
762
+ return UIA_E_ELEMENTNOTAVAILABLE;
763
+ DispatchAccessibilityAction(m_view, "select");
764
+ return S_OK;
765
+ }
766
+
565
767
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -17,7 +17,9 @@ class CompositionDynamicAutomationProvider : public winrt::implements<
17
17
  IScrollItemProvider,
18
18
  IValueProvider,
19
19
  IToggleProvider,
20
- IExpandCollapseProvider> {
20
+ IExpandCollapseProvider,
21
+ ISelectionProvider,
22
+ ISelectionItemProvider> {
21
23
  public:
22
24
  CompositionDynamicAutomationProvider(
23
25
  const winrt::Microsoft::ReactNative::Composition::ComponentView &componentView) noexcept;
@@ -57,8 +59,24 @@ class CompositionDynamicAutomationProvider : public winrt::implements<
57
59
  virtual HRESULT __stdcall Expand() override;
58
60
  virtual HRESULT __stdcall Collapse() override;
59
61
 
62
+ // inherited via ISelectionProvider
63
+ virtual HRESULT __stdcall get_CanSelectMultiple(BOOL *pRetVal) override;
64
+ virtual HRESULT __stdcall get_IsSelectionRequired(BOOL *pRetVal) override;
65
+ virtual HRESULT __stdcall GetSelection(SAFEARRAY **pRetVal) override;
66
+
67
+ // inherited via ISelectionItemProvider
68
+ virtual HRESULT __stdcall AddToSelection() override;
69
+ virtual HRESULT __stdcall get_IsSelected(BOOL *pRetVal) override;
70
+ virtual HRESULT __stdcall get_SelectionContainer(IRawElementProviderSimple **pRetVal) override;
71
+ virtual HRESULT __stdcall RemoveFromSelection() override;
72
+ virtual HRESULT __stdcall Select() override;
73
+
74
+ void AddToSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item);
75
+ void RemoveFromSelectionItems(winrt::com_ptr<IRawElementProviderSimple> &item);
76
+
60
77
  private:
61
78
  ::Microsoft::ReactNative::ReactTaggedView m_view;
79
+ std::vector<winrt::com_ptr<IRawElementProviderSimple>> m_selectionItems;
62
80
  };
63
81
 
64
82
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -12,15 +12,18 @@
12
12
  #include <Views/ShadowNodeBase.h>
13
13
  #include <windows.h>
14
14
  #include <windowsx.h>
15
+ #include <winrt/Windows.UI.Core.h>
15
16
  #include <winrt/Windows.UI.Input.h>
16
17
  #include "Composition.Input.h"
17
18
  #include "CompositionViewComponentView.h"
18
19
  #include "ReactNativeIsland.h"
19
20
  #include "RootComponentView.h"
20
21
 
21
- #ifdef USE_WINUI3
22
- #include <winrt/Microsoft.UI.Input.h>
23
- #endif
22
+ namespace ABI::Microsoft::UI::Input {
23
+ struct IInputCursor;
24
+ }
25
+
26
+ #include <Microsoft.UI.Input.InputCursor.Interop.h>
24
27
 
25
28
  namespace Microsoft::ReactNative {
26
29
 
@@ -139,8 +142,9 @@ struct CompositionInputKeyboardSource : winrt::implements<
139
142
 
140
143
  CompositionEventHandler::CompositionEventHandler(
141
144
  const winrt::Microsoft::ReactNative::ReactContext &context,
142
- const winrt::Microsoft::ReactNative::ReactNativeIsland &reactNativeIsland)
143
- : m_context(context), m_wkRootView(reactNativeIsland) {}
145
+ const winrt::Microsoft::ReactNative::ReactNativeIsland &reactNativeIsland,
146
+ const int fragmentTag)
147
+ : m_fragmentTag(fragmentTag), m_context(context), m_wkRootView(reactNativeIsland) {}
144
148
 
145
149
  void CompositionEventHandler::Initialize() noexcept {
146
150
  #ifdef USE_WINUI3
@@ -327,6 +331,11 @@ CompositionEventHandler::~CompositionEventHandler() {
327
331
  }
328
332
  }
329
333
  #endif
334
+
335
+ if (m_hcursorOwned) {
336
+ ::DestroyCursor(m_hcursor);
337
+ m_hcursor = nullptr;
338
+ }
330
339
  }
331
340
 
332
341
  facebook::react::SurfaceId CompositionEventHandler::SurfaceId() const noexcept {
@@ -506,6 +515,10 @@ int64_t CompositionEventHandler::SendMessage(HWND hwnd, uint32_t msg, uint64_t w
506
515
  }
507
516
  break;
508
517
  }
518
+ case WM_SETCURSOR: {
519
+ UpdateCursor();
520
+ return 1;
521
+ }
509
522
  }
510
523
 
511
524
  return 0;
@@ -752,6 +765,151 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
752
765
  hoveredViews.emplace_back(ReactTaggedView(componentViewDescriptor.view));
753
766
  }
754
767
  m_currentlyHoveredViewsPerPointer[pointerId] = std::move(hoveredViews);
768
+
769
+ if (IsMousePointerEvent(event)) {
770
+ UpdateCursor();
771
+ }
772
+ }
773
+
774
+ void CompositionEventHandler::UpdateCursor() noexcept {
775
+ for (auto &taggedView : m_currentlyHoveredViewsPerPointer[MOUSE_POINTER_ID]) {
776
+ if (auto view = taggedView.view()) {
777
+ if (auto viewcomponent =
778
+ view.try_as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>()) {
779
+ auto cursorInfo = viewcomponent->cursor();
780
+ if (cursorInfo.first != facebook::react::Cursor::Auto || cursorInfo.second != nullptr) {
781
+ SetCursor(cursorInfo.first, cursorInfo.second);
782
+ return;
783
+ }
784
+ }
785
+ }
786
+ }
787
+
788
+ SetCursor(facebook::react::Cursor::Auto, nullptr);
789
+ }
790
+
791
+ void CompositionEventHandler::SetCursor(facebook::react::Cursor cursor, HCURSOR hcur) noexcept {
792
+ if (m_currentCursor == cursor && m_hcursor == hcur)
793
+ return;
794
+
795
+ if (auto strongRootView = m_wkRootView.get()) {
796
+ if (auto island = strongRootView.Island()) {
797
+ auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
798
+
799
+ if (!hcur) {
800
+ winrt::Windows::UI::Core::CoreCursorType type = winrt::Windows::UI::Core::CoreCursorType::Arrow;
801
+ switch (cursor) {
802
+ case facebook::react::Cursor::Pointer:
803
+ type = winrt::Windows::UI::Core::CoreCursorType::Hand;
804
+ break;
805
+ case facebook::react::Cursor::Help:
806
+ type = winrt::Windows::UI::Core::CoreCursorType::Help;
807
+ break;
808
+ case facebook::react::Cursor::NotAllowed:
809
+ type = winrt::Windows::UI::Core::CoreCursorType::UniversalNo;
810
+ break;
811
+ case facebook::react::Cursor::Wait:
812
+ type = winrt::Windows::UI::Core::CoreCursorType::Wait;
813
+ break;
814
+ case facebook::react::Cursor::Move:
815
+ type = winrt::Windows::UI::Core::CoreCursorType::SizeAll;
816
+ break;
817
+ case facebook::react::Cursor::NESWResize:
818
+ type = winrt::Windows::UI::Core::CoreCursorType::SizeNortheastSouthwest;
819
+ break;
820
+ case facebook::react::Cursor::NSResize:
821
+ type = winrt::Windows::UI::Core::CoreCursorType::SizeNorthSouth;
822
+ break;
823
+ case facebook::react::Cursor::NWSEResize:
824
+ type = winrt::Windows::UI::Core::CoreCursorType::SizeNorthwestSoutheast;
825
+ break;
826
+ case facebook::react::Cursor::EWResize:
827
+ type = winrt::Windows::UI::Core::CoreCursorType::SizeWestEast;
828
+ break;
829
+ case facebook::react::Cursor::Text:
830
+ type = winrt::Windows::UI::Core::CoreCursorType::IBeam;
831
+ break;
832
+ case facebook::react::Cursor::Progress:
833
+ type = winrt::Windows::UI::Core::CoreCursorType::Wait; // IDC_APPSTARTING not mapped to CoreCursor?
834
+ break;
835
+ case facebook::react::Cursor::Crosshair:
836
+ type = winrt::Windows::UI::Core::CoreCursorType::Cross;
837
+ break;
838
+ default:
839
+ break;
840
+ }
841
+
842
+ m_inputCursor = winrt::Microsoft::UI::Input::InputCursor::CreateFromCoreCursor(
843
+ winrt::Windows::UI::Core::CoreCursor(type, 0));
844
+ m_hcursor = hcur;
845
+ } else {
846
+ auto cursorInterop = winrt::get_activation_factory<
847
+ winrt::Microsoft::UI::Input::InputCursor,
848
+ ABI::Microsoft::UI::Input::IInputCursorStaticsInterop>();
849
+ winrt::com_ptr<IUnknown> spunk;
850
+ winrt::check_hresult(cursorInterop->CreateFromHCursor(
851
+ hcur, reinterpret_cast<ABI::Microsoft::UI::Input::IInputCursor **>(spunk.put_void())));
852
+ m_hcursor = hcur;
853
+ m_inputCursor = spunk.as<winrt::Microsoft::UI::Input::InputCursor>();
854
+ }
855
+
856
+ pointerSource.Cursor(m_inputCursor);
857
+ } else {
858
+ if (m_hcursorOwned) {
859
+ ::DestroyCursor(m_hcursor);
860
+ m_hcursorOwned = false;
861
+ }
862
+ if (hcur == nullptr) {
863
+ const WCHAR *idc = IDC_ARROW;
864
+ switch (cursor) {
865
+ case facebook::react::Cursor::Pointer:
866
+ idc = IDC_HAND;
867
+ break;
868
+ case facebook::react::Cursor::Help:
869
+ idc = IDC_HELP;
870
+ break;
871
+ case facebook::react::Cursor::NotAllowed:
872
+ idc = IDC_NO;
873
+ break;
874
+ case facebook::react::Cursor::Wait:
875
+ idc = IDC_WAIT;
876
+ break;
877
+ case facebook::react::Cursor::Move:
878
+ idc = IDC_SIZEALL;
879
+ break;
880
+ case facebook::react::Cursor::NESWResize:
881
+ idc = IDC_SIZENESW;
882
+ break;
883
+ case facebook::react::Cursor::NSResize:
884
+ idc = IDC_SIZENS;
885
+ break;
886
+ case facebook::react::Cursor::NWSEResize:
887
+ idc = IDC_SIZENWSE;
888
+ break;
889
+ case facebook::react::Cursor::EWResize:
890
+ idc = IDC_SIZEWE;
891
+ break;
892
+ case facebook::react::Cursor::Text:
893
+ idc = IDC_IBEAM;
894
+ break;
895
+ case facebook::react::Cursor::Progress:
896
+ idc = IDC_APPSTARTING;
897
+ break;
898
+ case facebook::react::Cursor::Crosshair:
899
+ idc = IDC_CROSS;
900
+ break;
901
+ default:
902
+ break;
903
+ }
904
+ m_hcursor = ::LoadCursor(nullptr, idc);
905
+ m_hcursorOwned = true;
906
+ } else {
907
+ m_hcursor = hcur;
908
+ }
909
+ ::SetCursor(m_hcursor);
910
+ }
911
+ m_currentCursor = cursor;
912
+ }
755
913
  }
756
914
 
757
915
  void CompositionEventHandler::UpdateActiveTouch(
@@ -831,7 +989,30 @@ void CompositionEventHandler::getTargetPointerArgs(
831
989
  ptLocal.y = ptScaled.y - (clientRect.top / strongRootView.ScaleFactor());
832
990
  }
833
991
  } else {
834
- tag = RootComponentView().hitTest(ptScaled, ptLocal);
992
+ if (m_fragmentTag == -1) {
993
+ tag = RootComponentView().hitTest(ptScaled, ptLocal);
994
+ return;
995
+ }
996
+
997
+ // check if the fragment tag exists
998
+ if (!fabricuiManager->GetViewRegistry().findComponentViewWithTag(m_fragmentTag)) {
999
+ return;
1000
+ }
1001
+
1002
+ auto fagmentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(m_fragmentTag).view;
1003
+ auto fagmentchildren = fagmentView.Children();
1004
+
1005
+ // call the hitTest with the fargment as the RootComponent
1006
+ for (auto index = fagmentchildren.Size(); index > 0; index--) {
1007
+ auto childView = fagmentchildren.GetAt(index - 1);
1008
+ auto targetTag =
1009
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(childView)->hitTest(
1010
+ ptScaled, ptLocal);
1011
+ if (targetTag != -1) {
1012
+ tag = targetTag;
1013
+ break;
1014
+ }
1015
+ }
835
1016
  }
836
1017
  }
837
1018