react-native-windows 0.71.10 → 0.72.0-preview.2

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 (620) hide show
  1. package/.flowconfig +13 -3
  2. package/Directory.Build.props +19 -19
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
  4. package/Libraries/Alert/Alert.d.ts +4 -4
  5. package/Libraries/Alert/Alert.windows.js +2 -0
  6. package/Libraries/Alert/NativeDialogManagerWindows.js +1 -0
  7. package/Libraries/Animated/Animated.d.ts +17 -6
  8. package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
  9. package/Libraries/Animated/bezier.js +1 -1
  10. package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
  11. package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
  13. package/Libraries/Animated/createAnimatedComponent.js +26 -239
  14. package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
  16. package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
  17. package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
  18. package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
  19. package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
  20. package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
  21. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  22. package/Libraries/Animated/useAnimatedProps.js +7 -10
  23. package/Libraries/AppTheme/AppTheme.js +1 -0
  24. package/Libraries/AppTheme/AppThemeTypes.d.ts +1 -1
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -1
  26. package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  28. package/Libraries/Blob/Blob.js +4 -0
  29. package/Libraries/Blob/FileReader.js +30 -2
  30. package/Libraries/Blob/URL.js +3 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +2 -3
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
  35. package/Libraries/Components/Button.js +3 -2
  36. package/Libraries/Components/Button.windows.js +3 -2
  37. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  39. package/Libraries/Components/Flyout/Flyout.d.ts +55 -19
  40. package/Libraries/Components/Flyout/Flyout.js +110 -51
  41. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +45 -0
  42. package/Libraries/Components/Glyph/Glyph.d.ts +29 -12
  43. package/Libraries/Components/Glyph/Glyph.js +43 -30
  44. package/Libraries/Components/Glyph/GlyphNativeComponent.js +31 -0
  45. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
  46. package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +2 -2
  47. package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
  48. package/Libraries/Components/Popup/Popup.d.ts +41 -19
  49. package/Libraries/Components/Popup/Popup.js +86 -52
  50. package/Libraries/Components/Popup/PopupNativeComponent.js +49 -0
  51. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  52. package/Libraries/Components/Pressable/Pressable.js +1 -1
  53. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
  54. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -0
  55. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
  56. package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +1 -2
  57. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
  58. package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
  59. package/Libraries/Components/ScrollView/ScrollView.js +149 -91
  60. package/Libraries/Components/ScrollView/ScrollView.windows.js +1939 -0
  61. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
  62. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +175 -0
  63. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
  64. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
  65. package/Libraries/Components/StatusBar/StatusBar.js +3 -0
  66. package/Libraries/Components/Switch/Switch.js +3 -1
  67. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
  68. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
  69. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
  70. package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
  71. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  72. package/Libraries/Components/TextInput/TextInput.js +130 -103
  73. package/Libraries/Components/TextInput/TextInput.windows.js +152 -115
  74. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
  75. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  76. package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
  77. package/Libraries/Components/Touchable/Touchable.js +6 -3
  78. package/Libraries/Components/Touchable/Touchable.windows.js +6 -3
  79. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  80. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +2 -1
  81. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
  82. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
  83. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -0
  84. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
  85. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  86. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -2
  87. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +179 -0
  88. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
  89. package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
  90. package/Libraries/Components/View/View.js +35 -16
  91. package/Libraries/Components/View/View.windows.js +40 -16
  92. package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
  93. package/Libraries/Components/View/ViewAccessibility.js +10 -1
  94. package/Libraries/Components/View/ViewAccessibility.windows.js +9 -0
  95. package/Libraries/Components/View/ViewNativeComponent.js +32 -8
  96. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
  97. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  98. package/Libraries/Components/View/ViewPropTypes.windows.js +3 -1
  99. package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
  100. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
  101. package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
  102. package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
  103. package/Libraries/Core/ExceptionsManager.js +2 -2
  104. package/Libraries/Core/InitializeCore.js +2 -1
  105. package/Libraries/Core/ReactNativeVersion.js +3 -3
  106. package/Libraries/Core/ReactNativeVersionCheck.js +4 -8
  107. package/Libraries/Core/Timers/JSTimers.js +1 -1
  108. package/Libraries/Core/Timers/immediateShim.js +1 -0
  109. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  110. package/Libraries/Core/setUpAlert.js +1 -1
  111. package/Libraries/Core/setUpDOM.js +18 -0
  112. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  113. package/Libraries/Core/setUpGlobals.js +5 -2
  114. package/Libraries/Core/setUpNavigator.js +6 -5
  115. package/Libraries/Core/setUpPerformance.js +23 -13
  116. package/Libraries/Core/setUpReactDevTools.js +2 -0
  117. package/Libraries/Core/setUpSegmentFetcher.js +0 -41
  118. package/Libraries/Core/setUpTimers.js +2 -2
  119. package/Libraries/DOM/Geometry/DOMRect.js +82 -0
  120. package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
  121. package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
  122. package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
  123. package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
  124. package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
  125. package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
  126. package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
  127. package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
  128. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
  129. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
  130. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
  131. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +35 -0
  132. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +24 -0
  133. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
  134. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
  135. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
  136. package/Libraries/Events/EventPolyfill.js +1 -1
  137. package/Libraries/Image/AssetRegistry.js +1 -1
  138. package/Libraries/Image/AssetSourceResolver.js +3 -3
  139. package/Libraries/Image/Image.android.js +4 -1
  140. package/Libraries/Image/Image.d.ts +63 -2
  141. package/Libraries/Image/Image.ios.js +3 -0
  142. package/Libraries/Image/Image.windows.js +3 -0
  143. package/Libraries/Image/ImageBackground.js +1 -0
  144. package/Libraries/Image/ImageProps.js +1 -1
  145. package/Libraries/Image/ImageViewNativeComponent.js +4 -4
  146. package/Libraries/Image/RelativeImageStub.js +1 -1
  147. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  148. package/Libraries/Image/resolveAssetSource.js +1 -1
  149. package/Libraries/Inspector/DevtoolsOverlay.js +26 -19
  150. package/Libraries/Inspector/ElementBox.js +4 -1
  151. package/Libraries/Inspector/Inspector.js +5 -6
  152. package/Libraries/Inspector/InspectorOverlay.js +3 -3
  153. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  154. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  155. package/Libraries/Interaction/PanResponder.js +5 -6
  156. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
  157. package/Libraries/Linking/Linking.js +1 -4
  158. package/Libraries/Lists/FillRateHelper.js +4 -238
  159. package/Libraries/Lists/FlatList.d.ts +15 -22
  160. package/Libraries/Lists/FlatList.js +9 -6
  161. package/Libraries/Lists/SectionList.d.ts +10 -6
  162. package/Libraries/Lists/SectionList.js +5 -3
  163. package/Libraries/Lists/SectionListModern.js +3 -3
  164. package/Libraries/Lists/ViewabilityHelper.js +8 -344
  165. package/Libraries/Lists/VirtualizeUtils.js +4 -244
  166. package/Libraries/Lists/VirtualizedList.js +10 -1867
  167. package/Libraries/Lists/VirtualizedListContext.js +6 -104
  168. package/Libraries/Lists/VirtualizedSectionList.js +9 -602
  169. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
  170. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  171. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  172. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  173. package/Libraries/LogBox/LogBox.js +1 -1
  174. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
  175. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +167 -0
  176. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +172 -0
  177. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +193 -0
  178. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  179. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
  180. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.windows.js +118 -0
  181. package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
  182. package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
  183. package/Libraries/Modal/Modal.js +2 -2
  184. package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
  185. package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
  186. package/Libraries/NativeComponent/BaseViewConfig.windows.js +77 -19
  187. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
  188. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  189. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
  190. package/Libraries/Network/RCTNetworking.android.js +2 -2
  191. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  192. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  193. package/Libraries/Network/XMLHttpRequest.js +1 -1
  194. package/Libraries/Pressability/Pressability.js +10 -4
  195. package/Libraries/Pressability/Pressability.windows.js +11 -4
  196. package/Libraries/ReactNative/AppContainer.js +7 -1
  197. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  198. package/Libraries/ReactNative/AppRegistry.js +10 -13
  199. package/Libraries/ReactNative/FabricUIManager.js +24 -8
  200. package/Libraries/ReactNative/NativeUIManager.js +5 -5
  201. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
  202. package/Libraries/ReactNative/UIManager.js +168 -1
  203. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
  204. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  205. package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
  206. package/Libraries/ReactNative/requireNativeComponent.js +1 -1
  207. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  208. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  209. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  210. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  211. package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
  212. package/Libraries/Renderer/shims/ReactNativeTypes.js +6 -6
  213. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
  214. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  215. package/Libraries/Share/Share.js +1 -1
  216. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  217. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  218. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
  219. package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
  220. package/Libraries/StyleSheet/flattenStyle.js +2 -0
  221. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  222. package/Libraries/StyleSheet/processColor.js +1 -1
  223. package/Libraries/Text/Text.d.ts +12 -2
  224. package/Libraries/Text/Text.js +50 -41
  225. package/Libraries/Text/Text.windows.js +48 -38
  226. package/Libraries/Text/TextProps.js +3 -4
  227. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  228. package/Libraries/Types/CodegenTypes.js +1 -0
  229. package/Libraries/UTFSequence.js +3 -1
  230. package/Libraries/Utilities/Appearance.d.ts +10 -0
  231. package/Libraries/Utilities/Appearance.js +13 -0
  232. package/Libraries/Utilities/Dimensions.js +1 -1
  233. package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
  234. package/Libraries/Utilities/HMRClient.js +16 -10
  235. package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
  236. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  237. package/Libraries/Utilities/LoadingView.android.js +28 -11
  238. package/Libraries/Utilities/NativeAppearance.js +1 -0
  239. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
  240. package/Libraries/Utilities/PixelRatio.js +2 -2
  241. package/Libraries/Utilities/Platform.windows.js +1 -1
  242. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  243. package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
  244. package/Libraries/Utilities/codegenNativeCommands.js +2 -0
  245. package/Libraries/Utilities/createPerformanceLogger.js +55 -43
  246. package/Libraries/Utilities/stringifySafe.js +2 -7
  247. package/Libraries/Utilities/useColorScheme.windows.js +26 -0
  248. package/Libraries/Utilities/useWindowDimensions.js +3 -3
  249. package/Libraries/WebPerformance/EventCounts.js +78 -0
  250. package/Libraries/WebPerformance/MemoryInfo.js +54 -0
  251. package/Libraries/WebPerformance/NativePerformance.js +38 -0
  252. package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
  253. package/Libraries/WebPerformance/Performance.js +312 -0
  254. package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
  255. package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
  256. package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
  257. package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
  258. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
  259. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
  260. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
  261. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  262. package/Libraries/platform-types.d.ts +3 -5
  263. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  264. package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
  265. package/Libraries/vendor/emitter/EventEmitter.js +9 -1
  266. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +0 -15
  267. package/Microsoft.ReactNative/CompositionHwndHost.idl +6 -0
  268. package/Microsoft.ReactNative/CompositionRootView.idl +35 -0
  269. package/Microsoft.ReactNative/CompositionSwitcher.idl +19 -0
  270. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +174 -0
  271. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +91 -0
  272. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +48 -0
  273. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +48 -0
  274. package/Microsoft.ReactNative/Fabric/ComponentView.h +19 -2
  275. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +144 -0
  276. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +63 -0
  277. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +27 -6
  278. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +97 -0
  279. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +227 -0
  280. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +38 -0
  281. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +112 -95
  282. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +12 -8
  283. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +0 -2
  284. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +27 -6
  285. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +8 -0
  286. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +147 -0
  287. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +46 -0
  288. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +31 -4
  289. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +37 -0
  290. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +255 -50
  291. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +34 -15
  292. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +127 -47
  293. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +11 -7
  294. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +109 -39
  295. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +10 -7
  296. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +106 -0
  297. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +63 -0
  298. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +116 -0
  299. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +43 -0
  300. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +53 -38
  301. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +12 -8
  302. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +262 -0
  303. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +62 -0
  304. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +35 -30
  305. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +11 -9
  306. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +9 -0
  307. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +3 -0
  308. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +2 -1
  309. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +72 -0
  310. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +16 -0
  311. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +168 -0
  312. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +49 -0
  313. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +19 -53
  314. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -3
  315. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +8 -9
  316. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +100 -0
  317. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.h +43 -0
  318. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.cpp +61 -0
  319. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.h +34 -0
  320. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/primitives.h +42 -0
  321. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +10 -0
  322. package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +248 -0
  323. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +5 -0
  324. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +135 -4
  325. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +18 -240
  326. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -17
  327. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +13 -2
  328. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +87 -0
  329. package/Microsoft.ReactNative/IReactContext.cpp +4 -0
  330. package/Microsoft.ReactNative/IReactContext.h +1 -0
  331. package/Microsoft.ReactNative/IReactContext.idl +5 -0
  332. package/Microsoft.ReactNative/IReactDispatcher.cpp +4 -0
  333. package/Microsoft.ReactNative/IReactDispatcher.h +1 -0
  334. package/Microsoft.ReactNative/IReactPackageBuilderFabric.idl +23 -0
  335. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +23 -0
  336. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +4 -118
  337. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +1 -7
  338. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +2 -2
  339. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
  340. package/Microsoft.ReactNative/Modules/AlertModule.cpp +100 -4
  341. package/Microsoft.ReactNative/Modules/AlertModule.h +4 -0
  342. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedModule.cpp +9 -0
  343. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedModule.h +2 -0
  344. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +7 -5
  345. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +17 -3
  346. package/Microsoft.ReactNative/Modules/Animated/ValueAnimatedNode.h +1 -0
  347. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +4 -0
  348. package/Microsoft.ReactNative/Modules/AppearanceModule.h +3 -0
  349. package/Microsoft.ReactNative/Modules/ClipboardModule.cpp +4 -4
  350. package/Microsoft.ReactNative/Modules/ClipboardModule.h +2 -2
  351. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +27 -7
  352. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +9 -5
  353. package/Microsoft.ReactNative/Modules/LinkingManagerModule.cpp +10 -12
  354. package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +4 -4
  355. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +21 -1
  356. package/Microsoft.ReactNative/QuirkSettings.cpp +17 -0
  357. package/Microsoft.ReactNative/QuirkSettings.h +5 -0
  358. package/Microsoft.ReactNative/QuirkSettings.idl +6 -0
  359. package/Microsoft.ReactNative/ReactApplication.cpp +8 -0
  360. package/Microsoft.ReactNative/ReactApplication.h +3 -0
  361. package/Microsoft.ReactNative/ReactApplication.idl +3 -0
  362. package/Microsoft.ReactNative/ReactCoreInjection.cpp +29 -0
  363. package/Microsoft.ReactNative/ReactCoreInjection.h +6 -0
  364. package/Microsoft.ReactNative/ReactCoreInjection.idl +13 -0
  365. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +7 -0
  366. package/Microsoft.ReactNative/ReactHost/MsoReactContext.h +1 -0
  367. package/Microsoft.ReactNative/ReactHost/React.h +2 -0
  368. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +57 -16
  369. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -0
  370. package/Microsoft.ReactNative/ReactInstanceSettings.h +12 -0
  371. package/Microsoft.ReactNative/ReactInstanceSettings.idl +6 -0
  372. package/Microsoft.ReactNative/ReactNativeHost.cpp +17 -0
  373. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +18 -0
  374. package/Microsoft.ReactNative/ReactPackageBuilder.h +24 -1
  375. package/Microsoft.ReactNative/ReactRootView.cpp +2 -2
  376. package/Microsoft.ReactNative/RedBox.cpp +2 -1
  377. package/Microsoft.ReactNative/Utils/Helpers.cpp +0 -32
  378. package/Microsoft.ReactNative/Utils/Helpers.h +0 -8
  379. package/Microsoft.ReactNative/Utils/ImageUtils.cpp +69 -6
  380. package/Microsoft.ReactNative/Utils/ImageUtils.h +3 -1
  381. package/Microsoft.ReactNative/Utils/KeyboardUtils.cpp +416 -0
  382. package/Microsoft.ReactNative/Utils/KeyboardUtils.h +15 -0
  383. package/Microsoft.ReactNative/Utils/TransformableText.h +1 -0
  384. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -9
  385. package/Microsoft.ReactNative/Utils/ValueUtils.h +0 -2
  386. package/Microsoft.ReactNative/ViewProps.idl +30 -0
  387. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +6 -2
  388. package/Microsoft.ReactNative/Views/DevMenu.cpp +369 -230
  389. package/Microsoft.ReactNative/Views/DevMenu.h +3 -15
  390. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +6 -3
  391. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +11 -3
  392. package/Microsoft.ReactNative/Views/Image/ImageViewManager.h +5 -1
  393. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +29 -22
  394. package/Microsoft.ReactNative/Views/Image/ReactImage.h +2 -2
  395. package/Microsoft.ReactNative/Views/KeyboardEventHandler.cpp +10 -405
  396. package/Microsoft.ReactNative/Views/KeyboardEventHandler.h +0 -3
  397. package/Microsoft.ReactNative/Views/PopupViewManager.cpp +1 -0
  398. package/Microsoft.ReactNative/Views/ScrollViewManager.cpp +2 -2
  399. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +7 -0
  400. package/Microsoft.ReactNative/Views/ShadowNodeBase.h +3 -0
  401. package/Microsoft.ReactNative/Views/Text/TextHitTestUtils.cpp +6 -1
  402. package/Microsoft.ReactNative/Views/Text/TextPropertyChangedParentVisitor.cpp +1 -0
  403. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +38 -2
  404. package/Microsoft.ReactNative/Views/TextViewManager.cpp +3 -0
  405. package/Microsoft.ReactNative/Views/TouchEventHandler.h +0 -4
  406. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +0 -8
  407. package/Microsoft.ReactNative/Views/ViewPanel.cpp +1 -1
  408. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +12 -3
  409. package/Microsoft.ReactNative/XamlHelper.cpp +36 -0
  410. package/Microsoft.ReactNative/XamlHelper.h +27 -0
  411. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +4 -4
  412. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +4 -4
  413. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  414. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +10 -8
  415. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +3 -3
  416. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +4 -1
  417. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +3 -0
  418. package/Microsoft.ReactNative.Cxx/NativeModules.h +16 -1
  419. package/Microsoft.ReactNative.Managed/ReactSettingsSnapshot.cs +2 -0
  420. package/Microsoft.ReactNative.Managed/packages.lock.json +5 -5
  421. package/PropertySheets/External/Microsoft.ReactNative.Cpp.ProjectReferences.props +3 -0
  422. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  423. package/PropertySheets/JSEngine.props +1 -2
  424. package/PropertySheets/Warnings.props +1 -1
  425. package/ReactCommon/ReactCommon.vcxproj +2 -4
  426. package/ReactCommon/ReactCommon.vcxproj.filters +3 -0
  427. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +1 -1
  428. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.cpp +60 -0
  429. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.h +60 -0
  430. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +116 -0
  431. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +63 -0
  432. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -2
  433. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +237 -0
  434. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +59 -0
  435. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.cpp +159 -0
  436. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.h +94 -0
  437. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +465 -0
  438. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.h +116 -0
  439. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewShadowNode.cpp +98 -0
  440. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +362 -0
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/primitives.h +326 -0
  442. package/ReactCommon/Yoga.cpp +60 -127
  443. package/Scripts/OfficeReact.Win32.nuspec +1 -0
  444. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +1 -0
  445. package/Scripts/rnw-dependencies.ps1 +14 -6
  446. package/Shared/Composition/CompositionSwitcher.interop.h +1 -0
  447. package/Shared/DevServerHelper.h +11 -2
  448. package/Shared/DevSettings.h +1 -0
  449. package/Shared/DevSupportManager.cpp +11 -1
  450. package/Shared/DevSupportManager.h +1 -0
  451. package/Shared/HermesRuntimeHolder.cpp +53 -30
  452. package/Shared/HermesRuntimeHolder.h +26 -11
  453. package/Shared/HermesSamplingProfiler.cpp +61 -8
  454. package/Shared/HermesSamplingProfiler.h +6 -3
  455. package/Shared/HermesShim.cpp +86 -82
  456. package/Shared/HermesShim.h +28 -8
  457. package/Shared/JSI/ChakraRuntime.cpp +7 -4
  458. package/Shared/JSI/ChakraRuntime.h +4 -4
  459. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +2 -0
  460. package/Shared/JSI/RuntimeHolder.h +2 -2
  461. package/Shared/Logging.cpp +1 -1
  462. package/Shared/Modules/BlobModule.cpp +3 -4
  463. package/Shared/Modules/BlobModule.h +0 -4
  464. package/Shared/Networking/OriginPolicyHttpFilter.cpp +13 -17
  465. package/Shared/Networking/OriginPolicyHttpFilter.h +11 -12
  466. package/Shared/Networking/WinRTWebSocketResource.cpp +59 -45
  467. package/Shared/OInstance.cpp +9 -2
  468. package/Shared/Shared.vcxitems +265 -58
  469. package/Shared/Shared.vcxitems.filters +312 -42
  470. package/Shared/V8JSIRuntimeHolder.cpp +1 -0
  471. package/Shared/V8JSIRuntimeHolder.h +7 -2
  472. package/codegen/NativeAppearanceSpec.g.h +9 -3
  473. package/codegen/NativeClipboardSpec.g.h +3 -3
  474. package/codegen/NativeDevSplitBundleLoaderSpec.g.h +3 -3
  475. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +51 -0
  476. package/codegen/NativeDialogManagerWindowsSpec.g.h +2 -0
  477. package/codegen/NativeFileReaderModuleSpec.g.h +6 -6
  478. package/codegen/NativeHeadlessJsTaskSupportSpec.g.h +3 -3
  479. package/codegen/NativeImageLoaderAndroidSpec.g.h +25 -9
  480. package/codegen/NativeImageLoaderIOSSpec.g.h +20 -12
  481. package/codegen/NativeIntentAndroidSpec.g.h +15 -15
  482. package/codegen/NativeLinkingManagerSpec.g.h +12 -12
  483. package/codegen/NativePerformanceObserverSpec.g.h +48 -10
  484. package/codegen/NativePerformanceSpec.g.h +63 -0
  485. package/codegen/NativePermissionsAndroidSpec.g.h +9 -9
  486. package/codegen/NativePlatformConstantsWinSpec.g.h +1 -1
  487. package/codegen/NativePushNotificationManagerIOSSpec.g.h +6 -6
  488. package/codegen/NativeSampleTurboModuleSpec.g.h +25 -19
  489. package/codegen/NativeShareModuleSpec.g.h +9 -3
  490. package/codegen/NativeUIManagerSpec.g.h +12 -12
  491. package/codegen/react/components/rnwcore/ComponentDescriptors.h +1 -2
  492. package/codegen/react/components/rnwcore/EventEmitters.cpp +21 -29
  493. package/codegen/react/components/rnwcore/EventEmitters.h +30 -30
  494. package/codegen/react/components/rnwcore/Props.cpp +47 -48
  495. package/codegen/react/components/rnwcore/Props.h +59 -166
  496. package/codegen/react/components/rnwcore/ShadowNodes.cpp +1 -2
  497. package/codegen/react/components/rnwcore/ShadowNodes.h +11 -22
  498. package/codegen/react/components/rnwcore/States.h +15 -30
  499. package/codegen/rnwcoreJSI-generated.cpp +87 -17
  500. package/codegen/rnwcoreJSI.h +1080 -376
  501. package/generate.js +6 -1
  502. package/include/Include.vcxitems +0 -1
  503. package/include/Include.vcxitems.filters +0 -3
  504. package/index.js +56 -42
  505. package/index.windows.js +56 -42
  506. package/interface.js +1 -1
  507. package/jest/local-setup.js +33 -0
  508. package/jest/mockComponent.js +4 -2
  509. package/jest/mockNativeComponent.js +1 -1
  510. package/jest/mockScrollView.js +2 -1
  511. package/jest/react-native-env.js +1 -3
  512. package/jest/setup.js +11 -8
  513. package/just-task.js +12 -5
  514. package/package.json +34 -31
  515. package/rn-get-polyfills.js +1 -1
  516. package/template/metro.config.js +2 -0
  517. package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
  518. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
  519. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
  520. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
  521. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
  522. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
  523. package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
  524. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
  525. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
  526. package/Libraries/Components/DatePicker/DatePickerIOS.windows.js +0 -47
  527. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  528. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
  529. package/Libraries/Components/Flyout/Flyout.js.map +0 -1
  530. package/Libraries/Components/Flyout/FlyoutProps.d.ts +0 -25
  531. package/Libraries/Components/Flyout/FlyoutProps.js +0 -3
  532. package/Libraries/Components/Flyout/FlyoutProps.js.map +0 -1
  533. package/Libraries/Components/Glyph/Glyph.js.map +0 -1
  534. package/Libraries/Components/Glyph/GlyphProps.d.ts +0 -16
  535. package/Libraries/Components/Glyph/GlyphProps.js +0 -8
  536. package/Libraries/Components/Glyph/GlyphProps.js.map +0 -1
  537. package/Libraries/Components/Popup/Popup.js.map +0 -1
  538. package/Libraries/Components/Popup/PopupProps.d.ts +0 -27
  539. package/Libraries/Components/Popup/PopupProps.js +0 -8
  540. package/Libraries/Components/Popup/PopupProps.js.map +0 -1
  541. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
  542. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
  543. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
  544. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.windows.js +0 -45
  545. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
  546. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
  547. package/Libraries/Components/Slider/Slider.d.ts +0 -132
  548. package/Libraries/Components/Slider/Slider.js +0 -282
  549. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
  550. package/Libraries/Interaction/Batchinator.js +0 -76
  551. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
  552. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  553. package/Libraries/Interaction/PanResponder.flow.js +0 -257
  554. package/Libraries/Lists/CellRenderMask.js +0 -155
  555. package/Libraries/Lists/ChildListCollection.js +0 -72
  556. package/Libraries/Lists/StateSafePureComponent.js +0 -85
  557. package/Libraries/Lists/VirtualizedList.d.ts +0 -347
  558. package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
  559. package/Libraries/Lists/VirtualizedListProps.js +0 -279
  560. package/Libraries/Performance/PureComponentDebug.js +0 -74
  561. package/Libraries/Reliability/UserFlow.js +0 -158
  562. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
  563. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
  564. package/Libraries/Utilities/MatrixMath.js +0 -748
  565. package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
  566. package/Libraries/Utilities/clamp.js +0 -23
  567. package/Libraries/Utilities/deprecatedPropType.js +0 -36
  568. package/Libraries/Utilities/groupByEveryN.js +0 -51
  569. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  570. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  571. package/Libraries/Utilities/truncate.js +0 -51
  572. package/Microsoft.ReactNative/Fabric/platform/react/components/image/conversions.h +0 -5
  573. package/Microsoft.ReactNative/Fabric/platform/react/components/view/ConcreteViewShadowNode.h +0 -5
  574. package/Microsoft.ReactNative/Fabric/platform/react/components/view/ViewEventEmitter.h +0 -5
  575. package/Microsoft.ReactNative/Fabric/platform/react/components/view/ViewProps.h +0 -5
  576. package/Microsoft.ReactNative/Fabric/platform/react/core/ConcreteComponentDescriptor.h +0 -5
  577. package/Microsoft.ReactNative/Fabric/platform/react/core/PropsParserContext.h +0 -5
  578. package/Microsoft.ReactNative/Fabric/platform/react/core/propsConversions.h +0 -5
  579. package/Microsoft.ReactNative/Fabric/platform/react/graphics/Color.h +0 -5
  580. package/Microsoft.ReactNative/Fabric/platform/react/imagemanager/primitives.h +0 -5
  581. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputEventEmitter.h +0 -5
  582. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputProps.h +0 -5
  583. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputShadowNode.h +0 -5
  584. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/TextInputState.h +0 -5
  585. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/conversions.h +0 -5
  586. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/primitives.h +0 -5
  587. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/iostextinput/propsConversions.h +0 -5
  588. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +0 -5
  589. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +0 -5
  590. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/States.h +0 -5
  591. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Float.h +0 -5
  592. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +0 -135
  593. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ConcreteComponentDescriptor.h +0 -217
  594. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/graphics/RectangleEdges.h +0 -100
  595. package/Shared/AsyncStorage/AsyncStorageManager.cpp +0 -149
  596. package/Shared/AsyncStorage/AsyncStorageManager.h +0 -71
  597. package/Shared/AsyncStorage/FollyDynamicConverter.cpp +0 -51
  598. package/Shared/AsyncStorage/FollyDynamicConverter.h +0 -24
  599. package/Shared/AsyncStorage/KeyValueStorage.cpp +0 -248
  600. package/Shared/AsyncStorage/KeyValueStorage.h +0 -50
  601. package/Shared/AsyncStorage/StorageFileIO.cpp +0 -160
  602. package/Shared/AsyncStorage/StorageFileIO.h +0 -40
  603. package/Shared/AsyncStorageModule.h +0 -25
  604. package/Shared/Modules/AsyncStorageModule.cpp +0 -87
  605. package/Shared/Modules/AsyncStorageModuleWin32.cpp +0 -496
  606. package/Shared/Modules/AsyncStorageModuleWin32.h +0 -75
  607. package/codegen/NativeDatePickerAndroidSpec.g.h +0 -33
  608. package/include/Shared/AsyncStorageModuleWin32Config.h +0 -15
  609. package/types/index.d.ts +0 -216
  610. package/types/modules/BatchedBridge.d.ts +0 -32
  611. package/types/modules/Codegen.d.ts +0 -74
  612. package/types/modules/Devtools.d.ts +0 -31
  613. package/types/modules/LaunchScreen.d.ts +0 -18
  614. package/types/modules/globals.d.ts +0 -577
  615. package/types/private/TimerMixin.d.ts +0 -19
  616. package/types/private/Utilities.d.ts +0 -10
  617. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -205
  618. package/types/public/Insets.d.ts +0 -15
  619. package/types/public/ReactNativeRenderer.d.ts +0 -149
  620. package/types/public/ReactNativeTypes.d.ts +0 -143
@@ -7,45 +7,52 @@
7
7
  #include "CompositionViewComponentView.h"
8
8
 
9
9
  #include <UI.Xaml.Controls.h>
10
+ #include <Utils/KeyboardUtils.h>
10
11
  #include <Utils/ValueUtils.h>
11
12
  #include <Views/FrameworkElementTransferProperties.h>
12
13
  #include <winrt/Windows.UI.Composition.h>
13
14
  #include "CompositionContextHelper.h"
15
+ #include "CompositionDynamicAutomationProvider.h"
14
16
  #include "CompositionHelpers.h"
17
+ #include "RootComponentView.h"
15
18
  #include "d2d1helper.h"
16
19
 
17
20
  namespace Microsoft::ReactNative {
18
21
 
19
- // TODO where should we store focus - a more complete focus management needs to be added in the future
20
- static CompositionBaseComponentView *g_focusedComponent = nullptr;
21
-
22
- CompositionBaseComponentView *GetFocusedComponent() noexcept {
23
- return g_focusedComponent;
24
- }
25
- void SetFocusedComponent(CompositionBaseComponentView *value) noexcept {
26
- if (g_focusedComponent == value)
27
- return;
28
-
29
- if (g_focusedComponent) {
30
- g_focusedComponent->onFocusLost();
31
- }
32
-
33
- if (value)
34
- value->onFocusGained();
35
-
36
- g_focusedComponent = value;
37
- }
38
-
39
22
  CompositionBaseComponentView::CompositionBaseComponentView(
40
23
  const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
41
24
  facebook::react::Tag tag)
42
- : m_tag(tag), m_compContext(compContext) {}
25
+ : m_tag(tag), m_compContext(compContext) {
26
+ m_outerVisual = compContext.CreateSpriteVisual(); // TODO could be a raw ContainerVisual if we had a
27
+ // CreateContainerVisual in ICompositionContext
28
+ m_focusVisual = compContext.CreateFocusVisual();
29
+ m_outerVisual.InsertAt(m_focusVisual.InnerVisual(), 0);
30
+ }
43
31
 
44
32
  facebook::react::Tag CompositionBaseComponentView::tag() const noexcept {
45
33
  return m_tag;
46
34
  }
47
35
 
36
+ RootComponentView *CompositionBaseComponentView::rootComponentView() noexcept {
37
+ if (m_parent)
38
+ return m_parent->rootComponentView();
39
+
40
+ assert(false);
41
+ return nullptr;
42
+ }
43
+
44
+ const std::vector<IComponentView *> &CompositionBaseComponentView::children() const noexcept {
45
+ return m_children;
46
+ }
47
+
48
48
  void CompositionBaseComponentView::parent(IComponentView *parent) noexcept {
49
+ if (!parent) {
50
+ auto root = rootComponentView();
51
+ if (root->GetFocusedComponent() == this) {
52
+ root->SetFocusedComponent(nullptr); // TODO need move focus logic - where should focus go?
53
+ }
54
+ }
55
+
49
56
  m_parent = parent;
50
57
  }
51
58
 
@@ -53,9 +60,32 @@ IComponentView *CompositionBaseComponentView::parent() const noexcept {
53
60
  return m_parent;
54
61
  }
55
62
 
56
- void CompositionBaseComponentView::onFocusLost() noexcept {}
63
+ bool CompositionBaseComponentView::runOnChildren(bool forward, Mso::Functor<bool(IComponentView &)> &fn) noexcept {
64
+ if (forward) {
65
+ for (auto it = m_children.begin(); it != m_children.end(); ++it) {
66
+ if (fn(**it))
67
+ return true;
68
+ }
69
+ } else {
70
+ for (auto it = m_children.rbegin(); it != m_children.rend(); ++it) {
71
+ if (fn(**it))
72
+ return true;
73
+ }
74
+ }
75
+ return false;
76
+ }
77
+
78
+ void CompositionBaseComponentView::onFocusLost() noexcept {
79
+ m_eventEmitter->onBlur();
80
+ showFocusVisual(false);
81
+ }
57
82
 
58
- void CompositionBaseComponentView::onFocusGained() noexcept {}
83
+ void CompositionBaseComponentView::onFocusGained() noexcept {
84
+ m_eventEmitter->onFocus();
85
+ if (m_enableFocusVisual) {
86
+ showFocusVisual(true);
87
+ }
88
+ }
59
89
 
60
90
  void CompositionBaseComponentView::updateEventEmitter(
61
91
  facebook::react::EventEmitter::Shared const &eventEmitter) noexcept {
@@ -63,10 +93,49 @@ void CompositionBaseComponentView::updateEventEmitter(
63
93
  }
64
94
 
65
95
  void CompositionBaseComponentView::handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept {
96
+ if (commandName == "focus") {
97
+ if (auto root = rootComponentView()) {
98
+ root->SetFocusedComponent(this);
99
+ }
100
+ return;
101
+ }
102
+ if (commandName == "blur") {
103
+ if (auto root = rootComponentView()) {
104
+ root->SetFocusedComponent(nullptr); // Todo store this component as previously focused element
105
+ }
106
+ return;
107
+ }
66
108
  assert(false); // Unhandled command
67
109
  }
68
110
 
69
- int64_t CompositionBaseComponentView::SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept {
111
+ int64_t CompositionBaseComponentView::sendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept {
112
+ if (msg == WM_KEYUP || msg == WM_KEYDOWN) {
113
+ facebook::react::KeyboardEvent event;
114
+ BYTE bKeys[256];
115
+ if (GetKeyboardState(bKeys)) {
116
+ if (bKeys[VK_LSHIFT] & 0x80 || bKeys[VK_RSHIFT] & 0x80) {
117
+ event.shiftKey = true;
118
+ }
119
+ if (bKeys[VK_LCONTROL] & 0x80 || bKeys[VK_RCONTROL] & 0x80) {
120
+ event.ctrlKey = true;
121
+ }
122
+ if (bKeys[VK_LMENU] & 0x80 || bKeys[VK_RMENU] & 0x80) {
123
+ event.altKey = true;
124
+ }
125
+
126
+ event.metaKey = (GetKeyState(VK_LWIN) < 0) || (GetKeyState(VK_RWIN) < 0);
127
+ }
128
+
129
+ event.key = FromVirtualKey(
130
+ static_cast<winrt::Windows::System::VirtualKey>(wParam), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
131
+ event.code = CodeFromVirtualKey(static_cast<winrt::Windows::System::VirtualKey>(wParam));
132
+ if (msg == WM_KEYUP) {
133
+ m_eventEmitter->onKeyUp(event);
134
+ } else {
135
+ m_eventEmitter->onKeyDown(event);
136
+ }
137
+ }
138
+
70
139
  return 0;
71
140
  }
72
141
 
@@ -640,11 +709,11 @@ void DrawAllBorderLayers(
640
709
  spTextures[5],
641
710
  {borderWidths.left + borderRadii.bottomLeft,
642
711
  textureHeight - borderWidths.bottom,
643
- textureWidth - (borderWidths.right + borderRadii.bottomLeft),
712
+ textureWidth - (borderWidths.right + borderRadii.bottomRight),
644
713
  textureHeight},
645
714
  {AnchorPosition::Left, AnchorPosition::Bottom},
646
715
  {borderWidths.left + borderRadii.bottomLeft, -borderWidths.bottom},
647
- {-(borderWidths.right + borderRadii.bottomLeft + borderWidths.left + borderRadii.bottomLeft),
716
+ {-(borderWidths.right + borderRadii.bottomLeft + borderWidths.left + borderRadii.bottomRight),
648
717
  borderWidths.bottom},
649
718
  {1.0f, 0.0f},
650
719
  borderWidths.bottom,
@@ -933,6 +1002,19 @@ void CompositionBaseComponentView::UpdateSpecialBorderLayers(
933
1002
  }
934
1003
  }
935
1004
 
1005
+ winrt::Microsoft::ReactNative::Composition::IVisual CompositionBaseComponentView::OuterVisual() const noexcept {
1006
+ return m_outerVisual ? m_outerVisual : Visual();
1007
+ }
1008
+
1009
+ void CompositionBaseComponentView::showFocusVisual(bool show) noexcept {
1010
+ if (show) {
1011
+ assert(m_enableFocusVisual);
1012
+ m_focusVisual.IsFocused(true);
1013
+ } else {
1014
+ m_focusVisual.IsFocused(false);
1015
+ }
1016
+ }
1017
+
936
1018
  void CompositionBaseComponentView::updateBorderProps(
937
1019
  const facebook::react::ViewProps &oldViewProps,
938
1020
  const facebook::react::ViewProps &newViewProps) noexcept {
@@ -941,6 +1023,11 @@ void CompositionBaseComponentView::updateBorderProps(
941
1023
  oldViewProps.borderStyles != newViewProps.borderStyles) {
942
1024
  m_needsBorderUpdate = true;
943
1025
  }
1026
+
1027
+ m_enableFocusVisual = newViewProps.enableFocusRing;
1028
+ if (!m_enableFocusVisual) {
1029
+ showFocusVisual(false);
1030
+ }
944
1031
  }
945
1032
 
946
1033
  void CompositionBaseComponentView::updateBorderLayoutMetrics(
@@ -964,10 +1051,19 @@ void CompositionBaseComponentView::updateBorderLayoutMetrics(
964
1051
  Visual().as<Composition::IVisualInterop>()->SetClippingPath(pathGeometry.get());
965
1052
  }
966
1053
 
967
- if (m_needsBorderUpdate || m_layoutMetrics != layoutMetrics) {
968
- m_needsBorderUpdate = false;
969
- UpdateSpecialBorderLayers(layoutMetrics, viewProps);
1054
+ if (m_layoutMetrics != layoutMetrics) {
1055
+ m_needsBorderUpdate = true;
970
1056
  }
1057
+
1058
+ m_focusVisual.ScaleFactor(layoutMetrics.pointScaleFactor);
1059
+ OuterVisual().Size(
1060
+ {layoutMetrics.frame.size.width * layoutMetrics.pointScaleFactor,
1061
+ layoutMetrics.frame.size.height * layoutMetrics.pointScaleFactor});
1062
+ OuterVisual().Offset({
1063
+ layoutMetrics.frame.origin.x * layoutMetrics.pointScaleFactor,
1064
+ layoutMetrics.frame.origin.y * layoutMetrics.pointScaleFactor,
1065
+ 0.0f,
1066
+ });
971
1067
  }
972
1068
 
973
1069
  void CompositionBaseComponentView::indexOffsetForBorder(uint32_t &index) const noexcept {
@@ -976,6 +1072,11 @@ void CompositionBaseComponentView::indexOffsetForBorder(uint32_t &index) const n
976
1072
 
977
1073
  void CompositionBaseComponentView::OnRenderingDeviceLost() noexcept {}
978
1074
 
1075
+ std::vector<facebook::react::ComponentDescriptorProvider>
1076
+ CompositionBaseComponentView::supplementalComponentDescriptorProviders() noexcept {
1077
+ return {};
1078
+ }
1079
+
979
1080
  comp::CompositionPropertySet CompositionBaseComponentView::EnsureCenterPointPropertySet() noexcept {
980
1081
  if (m_centerPropSet == nullptr) {
981
1082
  auto compositor =
@@ -1031,10 +1132,23 @@ void CompositionBaseComponentView::EnsureTransformMatrixFacade() noexcept {
1031
1132
  .CreateExpressionAnimation(
1032
1133
  L"Matrix4x4.CreateFromScale(PS.dpiScale3Inv) * Matrix4x4.CreateFromTranslation(PS.translation) * PS.transform * Matrix4x4.CreateFromScale(PS.dpiScale3)");
1033
1134
  expression.SetReferenceParameter(L"PS", centerPointPropSet);
1034
- winrt::Microsoft::ReactNative::Composition::implementation::CompositionContextHelper::InnerVisual(Visual())
1135
+ winrt::Microsoft::ReactNative::Composition::implementation::CompositionContextHelper::InnerVisual(OuterVisual())
1035
1136
  .StartAnimation(L"TransformMatrix", expression);
1036
1137
  }
1037
1138
 
1139
+ facebook::react::SharedTouchEventEmitter CompositionBaseComponentView::touchEventEmitter() noexcept {
1140
+ return m_eventEmitter;
1141
+ }
1142
+
1143
+ facebook::react::SharedTouchEventEmitter CompositionBaseComponentView::touchEventEmitterAtPoint(
1144
+ facebook::react::Point /*pt*/) noexcept {
1145
+ return m_eventEmitter;
1146
+ }
1147
+
1148
+ bool CompositionBaseComponentView::focusable() const noexcept {
1149
+ return false;
1150
+ }
1151
+
1038
1152
  CompositionViewComponentView::CompositionViewComponentView(
1039
1153
  const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
1040
1154
  facebook::react::Tag tag)
@@ -1042,34 +1156,36 @@ CompositionViewComponentView::CompositionViewComponentView(
1042
1156
  static auto const defaultProps = std::make_shared<facebook::react::ViewProps const>();
1043
1157
  m_props = defaultProps;
1044
1158
  m_visual = m_compContext.CreateSpriteVisual();
1159
+ OuterVisual().InsertAt(m_visual, 0);
1045
1160
  }
1046
1161
 
1047
- std::vector<facebook::react::ComponentDescriptorProvider>
1048
- CompositionViewComponentView::supplementalComponentDescriptorProviders() noexcept {
1049
- return {};
1162
+ std::shared_ptr<CompositionViewComponentView> CompositionViewComponentView::Create(
1163
+ const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
1164
+ facebook::react::Tag tag) noexcept {
1165
+ return std::shared_ptr<CompositionViewComponentView>(new CompositionViewComponentView(compContext, tag));
1050
1166
  }
1051
1167
 
1052
1168
  void CompositionViewComponentView::mountChildComponentView(
1053
- const IComponentView &childComponentView,
1169
+ IComponentView &childComponentView,
1054
1170
  uint32_t index) noexcept {
1055
1171
  m_children.insert(std::next(m_children.begin(), index), &childComponentView);
1056
1172
 
1057
1173
  indexOffsetForBorder(index);
1058
1174
 
1059
- const_cast<IComponentView &>(childComponentView).parent(this);
1175
+ childComponentView.parent(this);
1060
1176
 
1061
- m_visual.InsertAt(static_cast<const CompositionBaseComponentView &>(childComponentView).Visual(), index);
1177
+ m_visual.InsertAt(static_cast<CompositionBaseComponentView &>(childComponentView).OuterVisual(), index);
1062
1178
  }
1063
1179
 
1064
1180
  void CompositionViewComponentView::unmountChildComponentView(
1065
- const IComponentView &childComponentView,
1181
+ IComponentView &childComponentView,
1066
1182
  uint32_t index) noexcept {
1067
1183
  m_children.erase(std::next(m_children.begin(), index));
1068
1184
 
1069
1185
  indexOffsetForBorder(index);
1070
1186
 
1071
- const_cast<IComponentView &>(childComponentView).parent(nullptr);
1072
- m_visual.Remove(static_cast<const CompositionBaseComponentView &>(childComponentView).Visual());
1187
+ childComponentView.parent(nullptr);
1188
+ m_visual.Remove(static_cast<CompositionBaseComponentView &>(childComponentView).OuterVisual());
1073
1189
  }
1074
1190
 
1075
1191
  void CompositionViewComponentView::updateProps(
@@ -1105,6 +1221,23 @@ void CompositionViewComponentView::updateProps(
1105
1221
  m_visual.Shadow(shadow);
1106
1222
  }
1107
1223
 
1224
+ if (oldViewProps.backfaceVisibility != newViewProps.backfaceVisibility) {
1225
+ static_assert(
1226
+ static_cast<facebook::react::BackfaceVisibility>(
1227
+ winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Inherit) ==
1228
+ facebook::react::BackfaceVisibility::Auto);
1229
+ static_assert(
1230
+ static_cast<facebook::react::BackfaceVisibility>(
1231
+ winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Visible) ==
1232
+ facebook::react::BackfaceVisibility::Visible);
1233
+ static_assert(
1234
+ static_cast<facebook::react::BackfaceVisibility>(
1235
+ winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Hidden) ==
1236
+ facebook::react::BackfaceVisibility::Hidden);
1237
+ m_visual.BackfaceVisibility(
1238
+ static_cast<winrt::Microsoft::ReactNative::Composition::BackfaceVisibility>(newViewProps.backfaceVisibility));
1239
+ }
1240
+
1108
1241
  // Transform - TODO doesn't handle multiple of the same kind of transform -- Doesn't handle hittesting updates
1109
1242
  if (oldViewProps.transform != newViewProps.transform) {
1110
1243
  winrt::Windows::Foundation::Numerics::float4x4 transformMatrix;
@@ -1159,10 +1292,6 @@ facebook::react::Tag CompositionViewComponentView::hitTest(facebook::react::Poin
1159
1292
  return -1;
1160
1293
  }
1161
1294
 
1162
- facebook::react::SharedTouchEventEmitter CompositionViewComponentView::touchEventEmitter() noexcept {
1163
- return m_eventEmitter;
1164
- }
1165
-
1166
1295
  bool CompositionViewComponentView::ScrollWheel(facebook::react::Point pt, int32_t delta) noexcept {
1167
1296
  facebook::react::Point ptLocal{pt.x - m_layoutMetrics.frame.origin.x, pt.y - m_layoutMetrics.frame.origin.y};
1168
1297
 
@@ -1185,7 +1314,7 @@ void CompositionViewComponentView::updateLayoutMetrics(
1185
1314
  facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
1186
1315
  // Set Position & Size Properties
1187
1316
  if ((layoutMetrics.displayType != m_layoutMetrics.displayType)) {
1188
- m_visual.IsVisible(layoutMetrics.displayType != facebook::react::DisplayType::None);
1317
+ OuterVisual().IsVisible(layoutMetrics.displayType != facebook::react::DisplayType::None);
1189
1318
  }
1190
1319
 
1191
1320
  updateBorderLayoutMetrics(layoutMetrics, *m_props);
@@ -1196,14 +1325,14 @@ void CompositionViewComponentView::updateLayoutMetrics(
1196
1325
  m_visual.Size(
1197
1326
  {layoutMetrics.frame.size.width * layoutMetrics.pointScaleFactor,
1198
1327
  layoutMetrics.frame.size.height * layoutMetrics.pointScaleFactor});
1199
- m_visual.Offset({
1200
- layoutMetrics.frame.origin.x * layoutMetrics.pointScaleFactor,
1201
- layoutMetrics.frame.origin.y * layoutMetrics.pointScaleFactor,
1202
- 0.0f,
1203
- });
1204
1328
  }
1205
1329
 
1206
- void CompositionViewComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {}
1330
+ void CompositionViewComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {
1331
+ if (m_needsBorderUpdate) {
1332
+ m_needsBorderUpdate = false;
1333
+ UpdateSpecialBorderLayers(m_layoutMetrics, *m_props);
1334
+ }
1335
+ }
1207
1336
 
1208
1337
  void CompositionViewComponentView::prepareForRecycle() noexcept {}
1209
1338
  facebook::react::Props::Shared CompositionViewComponentView::props() noexcept {
@@ -1214,4 +1343,80 @@ winrt::Microsoft::ReactNative::Composition::IVisual CompositionViewComponentView
1214
1343
  return m_visual;
1215
1344
  }
1216
1345
 
1346
+ bool CompositionViewComponentView::focusable() const noexcept {
1347
+ return m_props->focusable;
1348
+ }
1349
+
1350
+ IComponentView *lastDeepChild(IComponentView &view) noexcept {
1351
+ auto current = &view;
1352
+ while (current) {
1353
+ auto children = current->children();
1354
+ auto itLastChild = children.rbegin();
1355
+ if (itLastChild == children.rend()) {
1356
+ break;
1357
+ }
1358
+ current = *itLastChild;
1359
+ }
1360
+ return current;
1361
+ }
1362
+
1363
+ bool walkTree(IComponentView &view, bool forward, Mso::Functor<bool(IComponentView &)> &fn) noexcept {
1364
+ if (forward) {
1365
+ if (fn(view)) {
1366
+ return true;
1367
+ }
1368
+
1369
+ for (auto it = view.children().begin(); it != view.children().end(); ++it) {
1370
+ if (fn(**it))
1371
+ return true;
1372
+ }
1373
+
1374
+ auto current = &view;
1375
+ auto parent = current->parent();
1376
+ while (parent) {
1377
+ auto &parentsChildren = parent->children();
1378
+ auto itNextView = std::find(parentsChildren.begin(), parentsChildren.end(), current);
1379
+ assert(itNextView != parentsChildren.end());
1380
+ ++itNextView;
1381
+ if (itNextView != parentsChildren.end()) {
1382
+ return walkTree(**itNextView, true, fn);
1383
+ }
1384
+ current = parent;
1385
+ parent = current->parent();
1386
+ }
1387
+
1388
+ } else {
1389
+ auto current = &view;
1390
+ auto parent = current->parent();
1391
+ while (parent) {
1392
+ auto &parentsChildren = parent->children();
1393
+ auto itNextView = std::find(parentsChildren.rbegin(), parentsChildren.rend(), current);
1394
+ assert(itNextView != parentsChildren.rend());
1395
+ auto index = std::distance(parentsChildren.rbegin(), itNextView);
1396
+ ++itNextView;
1397
+ if (itNextView != parentsChildren.rend()) {
1398
+ auto lastChild = lastDeepChild(**itNextView);
1399
+ if (fn(*lastChild))
1400
+ return true;
1401
+ return walkTree(*lastChild, false, fn);
1402
+ }
1403
+
1404
+ if (fn(*parent)) {
1405
+ return true;
1406
+ }
1407
+ current = parent;
1408
+ parent = current->parent();
1409
+ }
1410
+ }
1411
+ return false;
1412
+ }
1413
+
1414
+ winrt::IInspectable CompositionBaseComponentView::EnsureUiaProvider() noexcept {
1415
+ if (m_uiaProvider == nullptr) {
1416
+ m_uiaProvider = winrt::make<winrt::Microsoft::ReactNative::implementation::CompositionDynamicAutomationProvider>(
1417
+ shared_from_this());
1418
+ }
1419
+ return m_uiaProvider;
1420
+ }
1421
+
1217
1422
  } // namespace Microsoft::ReactNative
@@ -14,11 +14,8 @@ namespace Microsoft::ReactNative {
14
14
  struct CompositionBaseComponentView;
15
15
  struct CompContext;
16
16
 
17
- // TODO replace with proper FocusManager - does it need to be per rootview?
18
- CompositionBaseComponentView *GetFocusedComponent() noexcept;
19
- void SetFocusedComponent(CompositionBaseComponentView *value) noexcept;
20
-
21
- struct CompositionBaseComponentView : public IComponentView {
17
+ struct CompositionBaseComponentView : public IComponentView,
18
+ public std::enable_shared_from_this<CompositionBaseComponentView> {
22
19
  static constexpr size_t SpecialBorderLayerCount = 8;
23
20
 
24
21
  CompositionBaseComponentView(
@@ -26,18 +23,27 @@ struct CompositionBaseComponentView : public IComponentView {
26
23
  facebook::react::Tag tag);
27
24
 
28
25
  virtual winrt::Microsoft::ReactNative::Composition::IVisual Visual() const noexcept = 0;
26
+ // Visual that should be parented to this ComponentView's parent
27
+ virtual winrt::Microsoft::ReactNative::Composition::IVisual OuterVisual() const noexcept;
29
28
  void updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept override;
30
29
  const facebook::react::SharedViewEventEmitter &GetEventEmitter() const noexcept;
31
30
  void handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept override;
31
+ RootComponentView *rootComponentView() noexcept override;
32
+ const std::vector<IComponentView *> &children() const noexcept override;
32
33
  void parent(IComponentView *parent) noexcept override;
33
34
  IComponentView *parent() const noexcept override;
35
+ bool runOnChildren(bool forward, Mso::Functor<bool(IComponentView &)> &fn) noexcept override;
34
36
  void onFocusLost() noexcept override;
35
37
  void onFocusGained() noexcept override;
36
-
38
+ bool focusable() const noexcept override;
39
+ std::vector<facebook::react::ComponentDescriptorProvider> supplementalComponentDescriptorProviders() noexcept
40
+ override;
41
+ facebook::react::SharedTouchEventEmitter touchEventEmitter() noexcept override;
42
+ facebook::react::SharedTouchEventEmitter touchEventEmitterAtPoint(facebook::react::Point pt) noexcept override;
37
43
  facebook::react::Tag tag() const noexcept override;
44
+ int64_t sendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept override;
38
45
 
39
46
  virtual bool ScrollWheel(facebook::react::Point pt, int32_t delta) noexcept;
40
- virtual int64_t SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept;
41
47
  RECT getClientRect() const noexcept override;
42
48
 
43
49
  void indexOffsetForBorder(uint32_t &index) const noexcept;
@@ -53,6 +59,8 @@ struct CompositionBaseComponentView : public IComponentView {
53
59
  comp::CompositionPropertySet EnsureCenterPointPropertySet() noexcept;
54
60
  void EnsureTransformMatrixFacade() noexcept;
55
61
 
62
+ winrt::IInspectable EnsureUiaProvider() noexcept override;
63
+
56
64
  protected:
57
65
  std::array<winrt::Microsoft::ReactNative::Composition::SpriteVisual, SpecialBorderLayerCount>
58
66
  FindSpecialBorderLayers() const noexcept;
@@ -65,28 +73,34 @@ struct CompositionBaseComponentView : public IComponentView {
65
73
  const facebook::react::ViewProps &viewProps) noexcept;
66
74
  void UpdateCenterPropertySet() noexcept;
67
75
 
76
+ winrt::IInspectable m_uiaProvider{nullptr};
68
77
  winrt::Microsoft::ReactNative::Composition::ICompositionContext m_compContext;
69
78
  comp::CompositionPropertySet m_centerPropSet{nullptr};
70
79
  const facebook::react::Tag m_tag;
71
80
  facebook::react::SharedViewEventEmitter m_eventEmitter;
72
- std::vector<const IComponentView *> m_children;
81
+ std::vector<IComponentView *> m_children;
73
82
  IComponentView *m_parent{nullptr};
74
83
  facebook::react::LayoutMetrics m_layoutMetrics;
75
84
  bool m_needsBorderUpdate{false};
76
85
  bool m_hasTransformMatrixFacade{false};
86
+ bool m_enableFocusVisual{false};
77
87
  uint8_t m_numBorderVisuals{0};
88
+
89
+ private:
90
+ void showFocusVisual(bool show) noexcept;
91
+ winrt::Microsoft::ReactNative::Composition::IFocusVisual m_focusVisual{nullptr};
92
+ winrt::Microsoft::ReactNative::Composition::IVisual m_outerVisual{nullptr};
78
93
  };
79
94
 
80
95
  struct CompositionViewComponentView : public CompositionBaseComponentView {
81
96
  using Super = CompositionBaseComponentView;
82
- CompositionViewComponentView(
97
+
98
+ [[nodiscard]] static std::shared_ptr<CompositionViewComponentView> Create(
83
99
  const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
84
- facebook::react::Tag tag);
100
+ facebook::react::Tag tag) noexcept;
85
101
 
86
- std::vector<facebook::react::ComponentDescriptorProvider> supplementalComponentDescriptorProviders() noexcept
87
- override;
88
- void mountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept override;
89
- void unmountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept override;
102
+ void mountChildComponentView(IComponentView &childComponentView, uint32_t index) noexcept override;
103
+ void unmountChildComponentView(IComponentView &childComponentView, uint32_t index) noexcept override;
90
104
  void updateProps(facebook::react::Props::Shared const &props, facebook::react::Props::Shared const &oldProps) noexcept
91
105
  override;
92
106
  void updateState(facebook::react::State::Shared const &state, facebook::react::State::Shared const &oldState) noexcept
@@ -96,7 +110,7 @@ struct CompositionViewComponentView : public CompositionBaseComponentView {
96
110
  facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept override;
97
111
  void finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept override;
98
112
  void prepareForRecycle() noexcept override;
99
- facebook::react::SharedTouchEventEmitter touchEventEmitter() noexcept override;
113
+ bool focusable() const noexcept override;
100
114
 
101
115
  facebook::react::Props::Shared props() noexcept override;
102
116
 
@@ -105,6 +119,11 @@ struct CompositionViewComponentView : public CompositionBaseComponentView {
105
119
 
106
120
  winrt::Microsoft::ReactNative::Composition::IVisual Visual() const noexcept override;
107
121
 
122
+ protected:
123
+ CompositionViewComponentView(
124
+ const winrt::Microsoft::ReactNative::Composition::ICompositionContext &compContext,
125
+ facebook::react::Tag tag);
126
+
108
127
  private:
109
128
  facebook::react::SharedViewProps m_props;
110
129
  winrt::Microsoft::ReactNative::Composition::SpriteVisual m_visual{nullptr};