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
@@ -6,6 +6,7 @@
6
6
  #include <Fabric/Composition/CompositionViewComponentView.h>
7
7
  #include <Fabric/Composition/ContentIslandComponentView.h>
8
8
  #include <strsafe.h>
9
+ #include "CompositionContextHelper.h"
9
10
  #include "DynamicWriter.h"
10
11
  #include "ReactHost/MsoUtils.h"
11
12
 
@@ -21,8 +22,10 @@ void ReactCompositionViewComponentBuilder::SetCreateProps(ViewPropsFactory impl)
21
22
  m_propsFactory = impl;
22
23
  }
23
24
 
24
- IComponentProps ReactCompositionViewComponentBuilder::CreateProps(ViewProps props) noexcept {
25
- return m_propsFactory(props);
25
+ IComponentProps ReactCompositionViewComponentBuilder::CreateProps(
26
+ ViewProps props,
27
+ const IComponentProps &cloneFrom) noexcept {
28
+ return m_propsFactory(props, cloneFrom);
26
29
  }
27
30
 
28
31
  void ReactCompositionViewComponentBuilder::CreateShadowNode(ShadowNode shadowNode) noexcept {
@@ -50,34 +53,20 @@ LayoutHandler ReactCompositionViewComponentBuilder::LayoutHandler() const noexce
50
53
  void ReactCompositionViewComponentBuilder::InitializeComponentView(
51
54
  const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
52
55
  auto self = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view);
53
- self->MarkAsCustomComponent();
54
- if (m_customCommandHandler)
55
- self->CustomCommandHandler(m_customCommandHandler);
56
- if (m_finalizeUpdateHandler)
57
- self->FinalizeUpdateHandler(m_finalizeUpdateHandler);
58
- if (m_updatePropsHandler)
59
- self->UpdatePropsHandler(m_updatePropsHandler);
60
- if (m_updateStateHandler)
61
- self->UpdateStateHandler(m_updateStateHandler);
62
- if (m_updateEventEmitterHandler)
63
- self->UpdateEventEmitterHandler(m_updateEventEmitterHandler);
64
- if (m_mountChildComponentViewHandler)
65
- self->MountChildComponentViewHandler(m_mountChildComponentViewHandler);
66
- if (m_unmountChildComponentViewHandler)
67
- self->UnmountChildComponentViewHandler(m_unmountChildComponentViewHandler);
68
- if (m_createVisualHandler)
69
- view.as<winrt::Microsoft::ReactNative::Composition::implementation::ViewComponentView>()->CreateVisualHandler(
70
- m_createVisualHandler);
71
56
  }
72
57
 
73
58
  void ReactCompositionViewComponentBuilder::SetComponentViewInitializer(
74
59
  const ComponentViewInitializer &initializer) noexcept {
75
- m_fnCreateView =
76
- [initializer](const IReactContext &reactContext, int32_t tag, const Experimental::ICompositionContext &context) {
77
- auto view = winrt::make<winrt::Microsoft::ReactNative::implementation::ComponentView>(tag, reactContext);
78
- initializer(view);
79
- return view;
80
- };
60
+ m_fnCreateView = [initializer](
61
+ const IReactContext &reactContext,
62
+ int32_t tag,
63
+ const Experimental::ICompositionContext &context,
64
+ ComponentViewFeatures,
65
+ ReactCompositionViewComponentBuilder &builder) {
66
+ auto view = winrt::make<winrt::Microsoft::ReactNative::implementation::ComponentView>(tag, reactContext, &builder);
67
+ initializer(view);
68
+ return view;
69
+ };
81
70
  m_descriptorConstructorFactory = []() {
82
71
  return &facebook::react::concreteComponentDescriptorConstructor<::Microsoft::ReactNative::AbiComponentDescriptor>;
83
72
  };
@@ -85,14 +74,17 @@ void ReactCompositionViewComponentBuilder::SetComponentViewInitializer(
85
74
 
86
75
  void ReactCompositionViewComponentBuilder::SetViewComponentViewInitializer(
87
76
  const ViewComponentViewInitializer &initializer) noexcept {
88
- m_fnCreateView =
89
- [initializer](const IReactContext &reactContext, int32_t tag, const Experimental::ICompositionContext &context) {
90
- auto view = winrt::Microsoft::ReactNative::Composition::implementation::ViewComponentView::Create(
91
- context, tag, reactContext)
92
- .as<winrt::Microsoft::ReactNative::Composition::ViewComponentView>();
93
- initializer(view);
94
- return view;
95
- };
77
+ m_fnCreateView = [initializer](
78
+ const IReactContext &reactContext,
79
+ int32_t tag,
80
+ const Experimental::ICompositionContext &context,
81
+ ComponentViewFeatures features,
82
+ ReactCompositionViewComponentBuilder &builder) {
83
+ auto view = winrt::make<implementation::ViewComponentView>(
84
+ implementation::ViewComponentView::defaultProps(), context, tag, reactContext, features, &builder);
85
+ initializer(view);
86
+ return view;
87
+ };
96
88
  m_descriptorConstructorFactory = []() {
97
89
  return &facebook::react::concreteComponentDescriptorConstructor<
98
90
  ::Microsoft::ReactNative::AbiViewComponentDescriptor>;
@@ -102,10 +94,14 @@ void ReactCompositionViewComponentBuilder::SetViewComponentViewInitializer(
102
94
  void ReactCompositionViewComponentBuilder::SetContentIslandComponentViewInitializer(
103
95
  const ComponentIslandComponentViewInitializer &initializer) noexcept {
104
96
  m_fnCreateView = [initializer](
105
- const IReactContext &reactContext, int32_t tag, const Experimental::ICompositionContext &context)
97
+ const IReactContext &reactContext,
98
+ int32_t tag,
99
+ const Experimental::ICompositionContext &context,
100
+ ComponentViewFeatures /*features*/,
101
+ ReactCompositionViewComponentBuilder &builder)
106
102
  -> winrt::Microsoft::ReactNative::Composition::ContentIslandComponentView {
107
103
  auto view = winrt::make<winrt::Microsoft::ReactNative::Composition::implementation::ContentIslandComponentView>(
108
- context, tag, reactContext);
104
+ context, tag, reactContext, &builder);
109
105
  initializer(view);
110
106
  return view;
111
107
  };
@@ -156,42 +152,108 @@ void ReactCompositionViewComponentBuilder::SetCustomCommandHandler(HandleCommand
156
152
  m_customCommandHandler = impl;
157
153
  }
158
154
 
155
+ const HandleCommandDelegate &ReactCompositionViewComponentBuilder::CustomCommandHandler() const noexcept {
156
+ return m_customCommandHandler;
157
+ }
158
+
159
159
  void ReactCompositionViewComponentBuilder::SetFinalizeUpdateHandler(UpdateFinalizerDelegate impl) noexcept {
160
160
  m_finalizeUpdateHandler = impl;
161
161
  }
162
162
 
163
+ const UpdateFinalizerDelegate &ReactCompositionViewComponentBuilder::FinalizeUpdateHandler() const noexcept {
164
+ return m_finalizeUpdateHandler;
165
+ }
166
+
163
167
  void ReactCompositionViewComponentBuilder::SetUpdatePropsHandler(UpdatePropsDelegate impl) noexcept {
164
168
  m_updatePropsHandler = impl;
165
169
  }
166
170
 
171
+ const winrt::Microsoft::ReactNative::UpdatePropsDelegate &ReactCompositionViewComponentBuilder::UpdatePropsHandler()
172
+ const noexcept {
173
+ return m_updatePropsHandler;
174
+ }
175
+
167
176
  void ReactCompositionViewComponentBuilder::SetUpdateStateHandler(UpdateStateDelegate impl) noexcept {
168
177
  m_updateStateHandler = impl;
169
178
  }
170
179
 
180
+ const winrt::Microsoft::ReactNative::UpdateStateDelegate &ReactCompositionViewComponentBuilder::UpdateStateHandler()
181
+ const noexcept {
182
+ return m_updateStateHandler;
183
+ }
184
+
171
185
  void ReactCompositionViewComponentBuilder::SetUpdateEventEmitterHandler(UpdateEventEmitterDelegate impl) noexcept {
172
186
  m_updateEventEmitterHandler = impl;
173
187
  }
174
188
 
189
+ const UpdateEventEmitterDelegate &ReactCompositionViewComponentBuilder::UpdateEventEmitterHandler() const noexcept {
190
+ return m_updateEventEmitterHandler;
191
+ }
192
+
175
193
  void ReactCompositionViewComponentBuilder::SetMountChildComponentViewHandler(
176
194
  MountChildComponentViewDelegate impl) noexcept {
177
195
  m_mountChildComponentViewHandler = impl;
178
196
  }
179
197
 
198
+ const MountChildComponentViewDelegate &ReactCompositionViewComponentBuilder::MountChildComponentViewHandler()
199
+ const noexcept {
200
+ return m_mountChildComponentViewHandler;
201
+ }
202
+
180
203
  void ReactCompositionViewComponentBuilder::SetUnmountChildComponentViewHandler(
181
204
  UnmountChildComponentViewDelegate impl) noexcept {
182
205
  m_unmountChildComponentViewHandler = impl;
183
206
  }
184
207
 
208
+ const UnmountChildComponentViewDelegate &ReactCompositionViewComponentBuilder::UnmountChildComponentViewHandler()
209
+ const noexcept {
210
+ return m_unmountChildComponentViewHandler;
211
+ }
212
+
185
213
  void ReactCompositionViewComponentBuilder::SetCreateVisualHandler(CreateVisualDelegate impl) noexcept {
186
214
  m_createVisualHandler = impl;
187
215
  }
188
216
 
217
+ const CreateVisualDelegate &ReactCompositionViewComponentBuilder::CreateVisualHandler() const noexcept {
218
+ return m_createVisualHandler;
219
+ }
220
+
221
+ void ReactCompositionViewComponentBuilder::SetViewFeatures(ComponentViewFeatures viewFeatures) noexcept {
222
+ m_features = viewFeatures;
223
+ }
224
+
225
+ void ReactCompositionViewComponentBuilder::SetVisualToMountChildrenIntoHandler(
226
+ VisualToMountChildrenIntoDelegate impl) noexcept {
227
+ m_visualToMountChildrenIntoHandler = [impl](const winrt::Microsoft::ReactNative::ComponentView &view) {
228
+ return winrt::Microsoft::ReactNative::Composition::Experimental::implementation::MicrosoftCompositionContextHelper::
229
+ CreateVisual(impl(view));
230
+ };
231
+ }
232
+
233
+ void ReactCompositionViewComponentBuilder::SetIVisualToMountChildrenIntoHandler(
234
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate impl) noexcept {
235
+ m_visualToMountChildrenIntoHandler = impl;
236
+ }
237
+
238
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate &
239
+ ReactCompositionViewComponentBuilder::VisualToMountChildrenIntoHandler() const noexcept {
240
+ return m_visualToMountChildrenIntoHandler;
241
+ }
242
+
243
+ void ReactCompositionViewComponentBuilder::SetUpdateLayoutMetricsHandler(UpdateLayoutMetricsDelegate impl) noexcept {
244
+ m_updateLayoutMetricsHandler = impl;
245
+ }
246
+
247
+ const UpdateLayoutMetricsDelegate &ReactCompositionViewComponentBuilder::UpdateLayoutMetricsHandler() const noexcept {
248
+ return m_updateLayoutMetricsHandler;
249
+ }
250
+
189
251
  winrt::Microsoft::ReactNative::ComponentView ReactCompositionViewComponentBuilder::CreateView(
190
252
  const IReactContext &reactContext,
191
253
  int32_t tag,
192
254
  const Experimental::ICompositionContext &context) noexcept {
193
255
  assert(m_fnCreateView);
194
- auto view = m_fnCreateView(reactContext, tag, context);
256
+ auto view = m_fnCreateView(reactContext, tag, context, m_features, *this);
195
257
  InitializeComponentView(view);
196
258
  return view;
197
259
  }
@@ -42,11 +42,15 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
42
42
  public: // Composition::IReactCompositionViewComponentBuilder
43
43
  void SetViewComponentViewInitializer(const ViewComponentViewInitializer &initializer) noexcept;
44
44
  void SetContentIslandComponentViewInitializer(const ComponentIslandComponentViewInitializer &initializer) noexcept;
45
-
46
45
  void SetCreateVisualHandler(CreateVisualDelegate impl) noexcept;
46
+ void SetViewFeatures(ComponentViewFeatures viewFeatures) noexcept;
47
+ void SetVisualToMountChildrenIntoHandler(VisualToMountChildrenIntoDelegate impl) noexcept;
48
+ void SetIVisualToMountChildrenIntoHandler(
49
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate impl) noexcept;
50
+ void SetUpdateLayoutMetricsHandler(UpdateLayoutMetricsDelegate impl) noexcept;
47
51
 
48
52
  public:
49
- IComponentProps CreateProps(ViewProps props) noexcept;
53
+ IComponentProps CreateProps(ViewProps props, const IComponentProps &cloneFrom) noexcept;
50
54
  void CreateShadowNode(ShadowNode shadowNode) noexcept;
51
55
  void CloneShadowNode(ShadowNode shadowNode, ShadowNode sourceShadowNode) noexcept;
52
56
  winrt::Windows::Foundation::IInspectable InitialStateData(
@@ -60,6 +64,18 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
60
64
  facebook::react::Tag tag,
61
65
  const Experimental::ICompositionContext &context) noexcept;
62
66
 
67
+ const UpdateFinalizerDelegate &FinalizeUpdateHandler() const noexcept;
68
+ const HandleCommandDelegate &CustomCommandHandler() const noexcept;
69
+ const winrt::Microsoft::ReactNative::UpdatePropsDelegate &UpdatePropsHandler() const noexcept;
70
+ const winrt::Microsoft::ReactNative::UpdateStateDelegate &UpdateStateHandler() const noexcept;
71
+ const UpdateEventEmitterDelegate &UpdateEventEmitterHandler() const noexcept;
72
+ const MountChildComponentViewDelegate &MountChildComponentViewHandler() const noexcept;
73
+ const UnmountChildComponentViewDelegate &UnmountChildComponentViewHandler() const noexcept;
74
+ const UpdateLayoutMetricsDelegate &UpdateLayoutMetricsHandler() const noexcept;
75
+ const CreateVisualDelegate &CreateVisualHandler() const noexcept;
76
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate &
77
+ VisualToMountChildrenIntoHandler() const noexcept;
78
+
63
79
  private:
64
80
  void InitializeComponentView(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept;
65
81
 
@@ -69,10 +85,13 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
69
85
  InitialStateDataFactory m_initialStateDataFactory;
70
86
  winrt::Microsoft::ReactNative::MeasureContentHandler m_measureContent;
71
87
  winrt::Microsoft::ReactNative::LayoutHandler m_layoutHandler;
88
+ ComponentViewFeatures m_features{ComponentViewFeatures::Default};
72
89
  std::function<winrt::Microsoft::ReactNative::ComponentView(
73
90
  const IReactContext &reactContext,
74
91
  int32_t tag,
75
- const Experimental::ICompositionContext &context)>
92
+ const Experimental::ICompositionContext &context,
93
+ ComponentViewFeatures features,
94
+ ReactCompositionViewComponentBuilder &builder)>
76
95
  m_fnCreateView;
77
96
  std::function<facebook::react::ComponentDescriptorConstructor *()> m_descriptorConstructorFactory;
78
97
  winrt::Microsoft::ReactNative::HandleCommandDelegate m_customCommandHandler;
@@ -84,6 +103,9 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
84
103
  winrt::Microsoft::ReactNative::UnmountChildComponentViewDelegate m_unmountChildComponentViewHandler;
85
104
 
86
105
  winrt::Microsoft::ReactNative::Composition::CreateVisualDelegate m_createVisualHandler;
106
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate
107
+ m_visualToMountChildrenIntoHandler;
108
+ UpdateLayoutMetricsDelegate m_updateLayoutMetricsHandler;
87
109
  };
88
110
 
89
111
  } // namespace winrt::Microsoft::ReactNative::Composition
@@ -127,6 +127,20 @@ ReactNativeIsland::ReactNativeIsland(const winrt::Microsoft::UI::Composition::Co
127
127
  InitTextScaleMultiplier();
128
128
  }
129
129
 
130
+ // Constructor to initialize ReactNativeIsland with context and componentView
131
+ ReactNativeIsland::ReactNativeIsland(
132
+ const winrt::Microsoft::UI::Composition::Compositor &compositor,
133
+ winrt::Microsoft::ReactNative::IReactContext context,
134
+ winrt::Microsoft::ReactNative::ComponentView componentView) noexcept
135
+ : m_compositor(compositor),
136
+ m_context(context),
137
+ m_layoutConstraints({{0, 0}, {0, 0}, winrt::Microsoft::ReactNative::LayoutDirection::Undefined}),
138
+ m_isFragment(true) {
139
+ m_rootTag = componentView.Tag();
140
+ InitTextScaleMultiplier();
141
+ AddFragmentCompositionEventHandler(context, componentView);
142
+ }
143
+
130
144
  ReactNativeIsland::ReactNativeIsland() noexcept : ReactNativeIsland(nullptr) {}
131
145
 
132
146
  ReactNativeIsland::~ReactNativeIsland() noexcept {
@@ -152,6 +166,7 @@ ReactNative::IReactViewHost ReactNativeIsland::ReactViewHost() noexcept {
152
166
  }
153
167
 
154
168
  void ReactNativeIsland::ReactViewHost(winrt::Microsoft::ReactNative::IReactViewHost const &value) noexcept {
169
+ assert(!m_isFragment); // make sure this isn't a FragmentIsalnd
155
170
  if (m_reactViewHost == value) {
156
171
  return;
157
172
  }
@@ -345,6 +360,29 @@ winrt::IInspectable ReactNativeIsland::GetUiaProvider() noexcept {
345
360
  return m_uiaProvider;
346
361
  }
347
362
 
363
+ winrt::Windows::Foundation::Point ReactNativeIsland::ConvertScreenToLocal(
364
+ winrt::Windows::Foundation::Point pt) noexcept {
365
+ if (m_island) {
366
+ auto pp = m_island.CoordinateConverter().ConvertScreenToLocal(
367
+ winrt::Windows::Graphics::PointInt32{static_cast<int32_t>(pt.X), static_cast<int32_t>(pt.Y)});
368
+ return {static_cast<float>(pp.X), static_cast<float>(pp.Y)};
369
+ }
370
+ POINT p{static_cast<LONG>(pt.X), static_cast<LONG>(pt.Y)};
371
+ ScreenToClient(m_hwnd, &p);
372
+ return {static_cast<float>(p.x) / m_scaleFactor, static_cast<float>(p.y) / m_scaleFactor};
373
+ }
374
+
375
+ winrt::Windows::Foundation::Point ReactNativeIsland::ConvertLocalToScreen(
376
+ winrt::Windows::Foundation::Point pt) noexcept {
377
+ if (m_island) {
378
+ auto pp = m_island.CoordinateConverter().ConvertLocalToScreen(pt);
379
+ return {static_cast<float>(pp.X), static_cast<float>(pp.Y)};
380
+ }
381
+ POINT p{static_cast<LONG>(pt.X * m_scaleFactor), static_cast<LONG>(pt.Y * m_scaleFactor)};
382
+ ClientToScreen(m_hwnd, &p);
383
+ return {static_cast<float>(p.x), static_cast<float>(p.y)};
384
+ }
385
+
348
386
  void ReactNativeIsland::SetWindow(uint64_t hwnd) noexcept {
349
387
  m_hwnd = reinterpret_cast<HWND>(hwnd);
350
388
  }
@@ -404,7 +442,7 @@ void ReactNativeIsland::InitRootView(
404
442
 
405
443
  m_context = winrt::Microsoft::ReactNative::ReactContext(std::move(context));
406
444
  m_reactViewOptions = std::move(viewOptions);
407
- m_CompositionEventHandler = std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this);
445
+ m_CompositionEventHandler = std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this, -1);
408
446
  m_CompositionEventHandler->Initialize();
409
447
 
410
448
  UpdateRootViewInternal();
@@ -412,6 +450,27 @@ void ReactNativeIsland::InitRootView(
412
450
  m_isInitialized = true;
413
451
  }
414
452
 
453
+ void ReactNativeIsland::AddFragmentCompositionEventHandler(
454
+ winrt::Microsoft::ReactNative::IReactContext context,
455
+ winrt::Microsoft::ReactNative::ComponentView componentView) noexcept {
456
+ m_uiDispatcher = context.Properties()
457
+ .Get(winrt::Microsoft::ReactNative::ReactDispatcherHelper::UIDispatcherProperty())
458
+ .try_as<IReactDispatcher>();
459
+ VerifyElseCrash(m_uiDispatcher.HasThreadAccess());
460
+ VerifyElseCrash(m_rootTag != -1);
461
+ auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
462
+ winrt::Microsoft::ReactNative::ReactPropertyBag(context.Properties()));
463
+
464
+ if (!m_CompositionEventHandler) {
465
+ // Create CompositionEventHandler if not already created
466
+ m_context = winrt::Microsoft::ReactNative::ReactContext(context);
467
+ m_CompositionEventHandler =
468
+ std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this, componentView.Tag());
469
+ m_CompositionEventHandler->Initialize();
470
+ m_isInitialized = true;
471
+ }
472
+ }
473
+
415
474
  void ReactNativeIsland::UpdateRootView() noexcept {
416
475
  VerifyElseCrash(m_uiDispatcher.HasThreadAccess());
417
476
  VerifyElseCrash(m_isInitialized);
@@ -518,7 +577,7 @@ facebook::react::AttributedStringBox CreateLoadingAttributedString() noexcept {
518
577
  auto fragment = facebook::react::AttributedString::Fragment{};
519
578
  fragment.string = "Loading";
520
579
  fragment.textAttributes.fontSize = loadingBarFontSize;
521
- attributedString.appendFragment(fragment);
580
+ attributedString.appendFragment(std::move(fragment));
522
581
  return facebook::react::AttributedStringBox{attributedString};
523
582
  }
524
583
 
@@ -834,7 +893,9 @@ void ReactNativeIsland::OnMounted() noexcept {
834
893
  return;
835
894
  m_mounted = true;
836
895
  if (auto componentView = GetComponentView()) {
837
- componentView->onMounted();
896
+ if (!componentView->isMounted()) {
897
+ componentView->onMounted();
898
+ }
838
899
  }
839
900
  }
840
901
 
@@ -48,6 +48,10 @@ struct ReactNativeIsland
48
48
  ~ReactNativeIsland() noexcept;
49
49
 
50
50
  ReactNativeIsland(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
51
+ ReactNativeIsland(
52
+ const winrt::Microsoft::UI::Composition::Compositor &compositor,
53
+ winrt::Microsoft::ReactNative::IReactContext context,
54
+ winrt::Microsoft::ReactNative::ComponentView componentView) noexcept;
51
55
  winrt::Microsoft::UI::Content::ContentIsland Island();
52
56
 
53
57
  // property ReactViewHost
@@ -110,6 +114,9 @@ struct ReactNativeIsland
110
114
  void SetWindow(uint64_t hwnd) noexcept;
111
115
  int64_t SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept;
112
116
 
117
+ winrt::Windows::Foundation::Point ConvertScreenToLocal(winrt::Windows::Foundation::Point pt) noexcept;
118
+ winrt::Windows::Foundation::Point ConvertLocalToScreen(winrt::Windows::Foundation::Point pt) noexcept;
119
+
113
120
  bool CapturePointer(
114
121
  const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer,
115
122
  facebook::react::Tag tag) noexcept;
@@ -117,6 +124,10 @@ struct ReactNativeIsland
117
124
  const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer,
118
125
  facebook::react::Tag tag) noexcept;
119
126
 
127
+ void AddFragmentCompositionEventHandler(
128
+ winrt::Microsoft::ReactNative::IReactContext context,
129
+ winrt::Microsoft::ReactNative::ComponentView componentView) noexcept;
130
+
120
131
  public: // IReactViewInstance UI-thread implementation
121
132
  void InitRootView(
122
133
  winrt::Microsoft::ReactNative::IReactContext &&context,
@@ -136,6 +147,7 @@ struct ReactNativeIsland
136
147
  #endif
137
148
 
138
149
  HWND m_hwnd{0};
150
+ bool m_isFragment{false};
139
151
  bool m_isInitialized{false};
140
152
  bool m_isJSViewAttached{false};
141
153
  bool m_hasRenderedVisual{false};
@@ -7,6 +7,7 @@
7
7
  #include "RootComponentView.h"
8
8
 
9
9
  #include <Fabric/FabricUIManagerModule.h>
10
+ #include <winrt/Microsoft.UI.Input.h>
10
11
  #include "CompositionRootAutomationProvider.h"
11
12
  #include "ReactNativeIsland.h"
12
13
  #include "Theme.h"
@@ -24,7 +25,7 @@ RootComponentView::RootComponentView(
24
25
  reactContext,
25
26
  ComponentViewFeatures::Default &
26
27
  ~(ComponentViewFeatures::Background | ComponentViewFeatures::ShadowProps |
27
- ComponentViewFeatures::NativeBorder)) {}
28
+ ComponentViewFeatures::NativeBorder | ComponentViewFeatures::FocusVisual)) {}
28
29
 
29
30
  RootComponentView::~RootComponentView() {
30
31
  if (auto rootView = m_wkRootView.get()) {
@@ -106,7 +107,10 @@ bool RootComponentView::TrySetFocusedComponent(
106
107
  auto target = view;
107
108
  auto selfView = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(target);
108
109
  if (selfView && !selfView->focusable()) {
109
- target = FocusManager::FindFirstFocusableElement(target);
110
+ target = (direction == winrt::Microsoft::ReactNative::FocusNavigationDirection::Last ||
111
+ direction == winrt::Microsoft::ReactNative::FocusNavigationDirection::Previous)
112
+ ? FocusManager::FindLastFocusableElement(target)
113
+ : FocusManager::FindFirstFocusableElement(target);
110
114
  if (!target)
111
115
  return false;
112
116
  selfView = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(target);
@@ -147,6 +151,9 @@ bool RootComponentView::TryMoveFocus(bool next) noexcept {
147
151
  [currentlyFocused = m_focusedComponent, next](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
148
152
  if (view == currentlyFocused)
149
153
  return false;
154
+ auto selfView = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view);
155
+ if (!selfView->focusable())
156
+ return false;
150
157
 
151
158
  return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view)
152
159
  ->rootComponentView()
@@ -156,7 +163,28 @@ bool RootComponentView::TryMoveFocus(bool next) noexcept {
156
163
  : winrt::Microsoft::ReactNative::FocusNavigationDirection::Previous);
157
164
  };
158
165
 
159
- return winrt::Microsoft::ReactNative::implementation::walkTree(m_focusedComponent, next, fn);
166
+ if (winrt::Microsoft::ReactNative::implementation::walkTree(m_focusedComponent, next, fn)) {
167
+ return true;
168
+ }
169
+
170
+ // We reached the end of the focus loop. Notify the island in case the host wants to move focus somewhere outside the
171
+ // island.
172
+ auto island = parentContentIsland();
173
+ if (island) {
174
+ auto focusController = winrt::Microsoft::UI::Input::InputFocusController::GetForIsland(island);
175
+ auto request = winrt::Microsoft::UI::Input::FocusNavigationRequest::Create(
176
+ next ? winrt::Microsoft::UI::Input::FocusNavigationReason::Last
177
+ : winrt::Microsoft::UI::Input::FocusNavigationReason::First);
178
+ auto result = focusController.DepartFocus(request);
179
+ if (result == winrt::Microsoft::UI::Input::FocusNavigationResult::Moved) {
180
+ return true;
181
+ }
182
+ }
183
+
184
+ // Wrap focus around if nothing outside the island takes focus
185
+ return NavigateFocus(winrt::Microsoft::ReactNative::FocusNavigationRequest(
186
+ next ? winrt::Microsoft::ReactNative::FocusNavigationReason::First
187
+ : winrt::Microsoft::ReactNative::FocusNavigationReason::Last));
160
188
  }
161
189
 
162
190
  HRESULT RootComponentView::GetFragmentRoot(IRawElementProviderFragmentRoot **pRetVal) noexcept {
@@ -220,6 +248,26 @@ float RootComponentView::FontSizeMultiplier() const noexcept {
220
248
  return 1.0f;
221
249
  }
222
250
 
251
+ winrt::Windows::Foundation::Point RootComponentView::ConvertScreenToLocal(
252
+ winrt::Windows::Foundation::Point pt) noexcept {
253
+ if (auto rootView = m_wkRootView.get()) {
254
+ return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>(rootView)
255
+ ->ConvertScreenToLocal(pt);
256
+ }
257
+ assert(false);
258
+ return {};
259
+ }
260
+
261
+ winrt::Windows::Foundation::Point RootComponentView::ConvertLocalToScreen(
262
+ winrt::Windows::Foundation::Point pt) noexcept {
263
+ if (auto rootView = m_wkRootView.get()) {
264
+ return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>(rootView)
265
+ ->ConvertLocalToScreen(pt);
266
+ }
267
+ assert(false);
268
+ return {};
269
+ }
270
+
223
271
  winrt::Microsoft::UI::Content::ContentIsland RootComponentView::parentContentIsland() noexcept {
224
272
  if (auto rootView = m_wkRootView.get()) {
225
273
  return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>(rootView)->Island();
@@ -38,6 +38,9 @@ struct RootComponentView : RootComponentViewT<RootComponentView, ViewComponentVi
38
38
 
39
39
  RootComponentView *rootComponentView() const noexcept override;
40
40
 
41
+ winrt::Windows::Foundation::Point ConvertScreenToLocal(winrt::Windows::Foundation::Point pt) noexcept;
42
+ winrt::Windows::Foundation::Point ConvertLocalToScreen(winrt::Windows::Foundation::Point pt) noexcept;
43
+
41
44
  winrt::Microsoft::UI::Content::ContentIsland parentContentIsland() noexcept;
42
45
 
43
46
  // Index that visuals can be inserted into OuterVisual for debugging UI
@@ -1112,9 +1112,9 @@ void ScrollViewComponentView::StartBringIntoView(
1112
1112
  options.TargetRect->origin.y > m_scrollVisual.ScrollPosition().y) {
1113
1113
  needsScroll = true;
1114
1114
  if (options.TargetRect->size.height > viewerHeight) {
1115
- scrollToVertical = options.TargetRect->origin.y + options.VerticalOffset;
1115
+ scrollToVertical = options.TargetRect->origin.y + options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
1116
1116
  } else {
1117
- scrollToVertical = (targetBottom - viewerHeight) + options.VerticalOffset;
1117
+ scrollToVertical = (targetBottom - viewerHeight) + options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
1118
1118
  }
1119
1119
  // Scroll Up
1120
1120
  } else if (
@@ -1122,9 +1122,9 @@ void ScrollViewComponentView::StartBringIntoView(
1122
1122
  targetBottom < (m_scrollVisual.ScrollPosition().y + viewerHeight)) {
1123
1123
  needsScroll = true;
1124
1124
  if (options.TargetRect->size.height > viewerHeight) {
1125
- scrollToVertical = targetBottom - viewerHeight - options.VerticalOffset;
1125
+ scrollToVertical = targetBottom - viewerHeight - options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
1126
1126
  } else {
1127
- scrollToVertical = options.TargetRect->origin.y - options.VerticalOffset;
1127
+ scrollToVertical = options.TargetRect->origin.y - options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
1128
1128
  }
1129
1129
  }
1130
1130
  } else {
@@ -1138,9 +1138,9 @@ void ScrollViewComponentView::StartBringIntoView(
1138
1138
  options.TargetRect->origin.x > m_scrollVisual.ScrollPosition().x) {
1139
1139
  needsScroll = true;
1140
1140
  if (options.TargetRect->size.width > viewerWidth) {
1141
- scrollToHorizontal = options.TargetRect->origin.x + options.HorizontalOffset;
1141
+ scrollToHorizontal = options.TargetRect->origin.x + options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
1142
1142
  } else {
1143
- scrollToHorizontal = (targetRight - viewerWidth) + options.HorizontalOffset;
1143
+ scrollToHorizontal = (targetRight - viewerWidth) + options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
1144
1144
  }
1145
1145
  // Scroll Left
1146
1146
  } else if (
@@ -1148,9 +1148,9 @@ void ScrollViewComponentView::StartBringIntoView(
1148
1148
  targetRight < (m_scrollVisual.ScrollPosition().x + viewerWidth)) {
1149
1149
  needsScroll = true;
1150
1150
  if (options.TargetRect->size.width > viewerWidth) {
1151
- scrollToHorizontal = targetRight - viewerWidth - options.HorizontalOffset;
1151
+ scrollToHorizontal = targetRight - viewerWidth - options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
1152
1152
  } else {
1153
- scrollToHorizontal = options.TargetRect->origin.x - options.HorizontalOffset;
1153
+ scrollToHorizontal = options.TargetRect->origin.x - options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
1154
1154
  }
1155
1155
  }
1156
1156
  } else {
@@ -1262,4 +1262,14 @@ std::string ScrollViewComponentView::DefaultControlType() const noexcept {
1262
1262
  return "scrollbar";
1263
1263
  }
1264
1264
 
1265
+ winrt::com_ptr<ComponentView> ScrollViewComponentView::focusVisualRoot(
1266
+ const facebook::react::Rect &focusRect) noexcept {
1267
+ return get_strong();
1268
+ }
1269
+
1270
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual
1271
+ ScrollViewComponentView::visualToHostFocus() noexcept {
1272
+ return m_scrollVisual;
1273
+ }
1274
+
1265
1275
  } // namespace winrt::Microsoft::ReactNative::Composition::implementation
@@ -110,6 +110,9 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
110
110
  bool lineRight(bool animate) noexcept;
111
111
  winrt::Microsoft::ReactNative::Composition::Experimental::IVisual createVisual() noexcept override;
112
112
 
113
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual visualToHostFocus() noexcept override;
114
+ winrt::com_ptr<ComponentView> focusVisualRoot(const facebook::react::Rect &focusRect) noexcept override;
115
+
113
116
  private:
114
117
  void updateContentVisualSize() noexcept;
115
118
  bool scrollToEnd(bool animate) noexcept;
@@ -97,26 +97,24 @@ virtual State::Shared createInitialState(
97
97
  !textInputProps.hasPaddingHorizontal) {
98
98
  changedPadding = true;
99
99
  style.setPadding(
100
- YGEdgeStart, yoga::CompactValue::of<YGUnitPoint>(theme.start));
100
+ yoga::Edge::Start, yoga::StyleLength::points(theme.start));
101
101
  }
102
102
  if (!textInputProps.hasPadding && !textInputProps.hasPaddingEnd &&
103
103
  !textInputProps.hasPaddingRight &&
104
104
  !textInputProps.hasPaddingHorizontal) {
105
105
  changedPadding = true;
106
- style.setPadding(
107
- YGEdgeEnd, yoga::CompactValue::of<YGUnitPoint>(theme.end));
106
+ style.setPadding(yoga::Edge::End, yoga::StyleLength::points(theme.end));
108
107
  }
109
108
  if (!textInputProps.hasPadding && !textInputProps.hasPaddingTop &&
110
109
  !textInputProps.hasPaddingVertical) {
111
110
  changedPadding = true;
112
- style.setPadding(
113
- YGEdgeTop, yoga::CompactValue::of<YGUnitPoint>(theme.top));
111
+ style.setPadding(yoga::Edge::Top, yoga::StyleLength::points(theme.top));
114
112
  }
115
113
  if (!textInputProps.hasPadding && !textInputProps.hasPaddingBottom &&
116
114
  !textInputProps.hasPaddingVertical) {
117
115
  changedPadding = true;
118
116
  style.setPadding(
119
- YGEdgeBottom, yoga::CompactValue::of<YGUnitPoint>(theme.bottom));
117
+ yoga::Edge::Bottom, yoga::StyleLength::points(theme.bottom));
120
118
  }
121
119
 
122
120
  // If the TextInput initially does not have paddingLeft or paddingStart, a
@@ -127,12 +125,12 @@ virtual State::Shared createInitialState(
127
125
  if ((textInputProps.hasPadding || textInputProps.hasPaddingLeft ||
128
126
  textInputProps.hasPaddingHorizontal) &&
129
127
  !textInputProps.hasPaddingStart) {
130
- style.setPadding(YGEdgeStart, yoga::CompactValue::ofUndefined());
128
+ style.setPadding(yoga::Edge::Start, yoga::StyleLength::undefined());
131
129
  }
132
130
  if ((textInputProps.hasPadding || textInputProps.hasPaddingRight ||
133
131
  textInputProps.hasPaddingHorizontal) &&
134
132
  !textInputProps.hasPaddingEnd) {
135
- style.setPadding(YGEdgeEnd, yoga::CompactValue::ofUndefined());
133
+ style.setPadding(yoga::Edge::End, yoga::StyleLength::undefined());
136
134
  }
137
135
 
138
136
  // Note that this is expensive: on every adopt, we need to set the Yoga