react-native-windows 0.84.0 → 0.85.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 (461) hide show
  1. package/.flowconfig +1 -5
  2. package/Directory.Build.props +1 -16
  3. package/Directory.Build.targets +12 -4
  4. package/Folly/ThreadNameStub.cpp +4 -6
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
  6. package/Libraries/Animated/Animated.d.ts +8 -1
  7. package/Libraries/Animated/AnimatedEvent.js +4 -4
  8. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  9. package/Libraries/Animated/animations/Animation.js +3 -3
  10. package/Libraries/Animated/animations/DecayAnimation.js +4 -4
  11. package/Libraries/Animated/animations/SpringAnimation.js +5 -5
  12. package/Libraries/Animated/animations/TimingAnimation.js +5 -5
  13. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  14. package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
  16. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  17. package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  23. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  24. package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
  25. package/Libraries/Animated/useAnimatedColor.js +25 -0
  26. package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
  27. package/Libraries/Animated/useAnimatedValueXY.js +26 -0
  28. package/Libraries/AppState/AppState.js +1 -1
  29. package/Libraries/BatchedBridge/MessageQueue.js +3 -3
  30. package/Libraries/BatchedBridge/NativeModules.js +12 -10
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -26
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +34 -30
  33. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
  34. package/Libraries/Components/Button.js +2 -2
  35. package/Libraries/Components/Button.windows.js +2 -2
  36. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
  37. package/Libraries/Components/Keyboard/Keyboard.js +6 -6
  38. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  39. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
  40. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
  41. package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
  42. package/Libraries/Components/Pressable/Pressable.js +3 -3
  43. package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
  44. package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
  45. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  46. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
  47. package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
  48. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +5 -5
  49. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
  50. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
  51. package/Libraries/Components/ScrollView/ScrollView.js +19 -9
  52. package/Libraries/Components/ScrollView/ScrollView.windows.js +19 -9
  53. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
  54. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +8 -18
  55. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
  56. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  57. package/Libraries/Components/StaticRenderer.js +1 -1
  58. package/Libraries/Components/StatusBar/StatusBar.js +8 -8
  59. package/Libraries/Components/Switch/Switch.js +3 -3
  60. package/Libraries/Components/Switch/Switch.windows.js +3 -3
  61. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
  62. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  63. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
  64. package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
  65. package/Libraries/Components/TextInput/TextInput.flow.windows.js +23 -22
  66. package/Libraries/Components/TextInput/TextInput.js +8 -4
  67. package/Libraries/Components/TextInput/TextInput.windows.js +3 -4
  68. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +33 -48
  69. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  70. package/Libraries/Components/Touchable/Touchable.js +2 -2
  71. package/Libraries/Components/Touchable/Touchable.windows.js +2 -2
  72. package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
  73. package/Libraries/Components/Touchable/TouchableBounce.windows.js +4 -4
  74. package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
  75. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +9 -9
  76. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
  77. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +7 -7
  78. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
  79. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -4
  80. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
  81. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -1
  82. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  83. package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
  84. package/Libraries/Components/View/View.windows.js +1 -1
  85. package/Libraries/Components/View/ViewAccessibility.js +7 -7
  86. package/Libraries/Components/View/ViewAccessibility.windows.js +7 -7
  87. package/Libraries/Components/View/ViewPropTypes.js +14 -14
  88. package/Libraries/Components/View/ViewPropTypes.windows.js +18 -16
  89. package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
  90. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  91. package/Libraries/Core/ExceptionsManager.js +2 -2
  92. package/Libraries/Core/ExtendedError.js +3 -3
  93. package/Libraries/Core/RawEventEmitter.js +1 -1
  94. package/Libraries/Core/ReactNativeVersion.js +2 -2
  95. package/Libraries/Core/Timers/JSTimers.js +3 -2
  96. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  97. package/Libraries/Core/setUpErrorHandling.js +4 -2
  98. package/Libraries/Core/setUpReactDevTools.js +23 -6
  99. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  100. package/Libraries/Debugging/DebuggingOverlay.js +2 -2
  101. package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
  102. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
  103. package/Libraries/Image/AssetSourceResolver.js +1 -1
  104. package/Libraries/Image/AssetSourceResolver.windows.js +1 -1
  105. package/Libraries/Image/Image.android.js +172 -306
  106. package/Libraries/Image/ImageProps.js +9 -11
  107. package/Libraries/Image/ImageSource.js +2 -2
  108. package/Libraries/Image/ImageSourceUtils.js +8 -4
  109. package/Libraries/Image/ImageTypes.flow.js +2 -2
  110. package/Libraries/Image/ImageViewNativeComponent.js +7 -16
  111. package/Libraries/Image/nativeImageSource.js +1 -1
  112. package/Libraries/Interaction/InteractionManager.js +5 -4
  113. package/Libraries/Interaction/PanResponder.js +1 -1
  114. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  115. package/Libraries/Linking/Linking.js +1 -1
  116. package/Libraries/Lists/FlatList.js +3 -3
  117. package/Libraries/Lists/SectionList.js +1 -1
  118. package/Libraries/Lists/SectionListModern.js +2 -2
  119. package/Libraries/LogBox/Data/LogBoxData.js +38 -24
  120. package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
  121. package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
  122. package/Libraries/LogBox/LogBox.js +42 -19
  123. package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
  124. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  125. package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
  126. package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
  127. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
  128. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -9
  129. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
  131. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  132. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  133. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
  134. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
  135. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
  136. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +15 -16
  137. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
  138. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
  139. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
  140. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.windows.js +3 -5
  141. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
  142. package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
  143. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  144. package/Libraries/Modal/Modal.d.ts +4 -0
  145. package/Libraries/Modal/Modal.js +3 -3
  146. package/Libraries/Modal/Modal.windows.js +7 -3
  147. package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
  148. package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
  149. package/Libraries/NativeComponent/BaseViewConfig.windows.js +26 -17
  150. package/Libraries/Network/RCTNetworking.android.js +1 -1
  151. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  152. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  153. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  154. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
  155. package/Libraries/Network/XMLHttpRequest.js +1 -1
  156. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  157. package/Libraries/Pressability/Pressability.js +5 -5
  158. package/Libraries/Pressability/Pressability.windows.js +5 -5
  159. package/Libraries/Pressability/PressabilityDebug.js +1 -1
  160. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  161. package/Libraries/Pressability/usePressability.js +3 -14
  162. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
  163. package/Libraries/ReactNative/AppContainer-dev.js +18 -1
  164. package/Libraries/ReactNative/AppContainer.js +1 -1
  165. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  166. package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
  167. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  168. package/Libraries/ReactNative/RendererImplementation.js +4 -4
  169. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  170. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +3 -2
  171. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -2
  172. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -2
  173. package/Libraries/Renderer/shims/ReactFabric.js +1 -3
  174. package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
  175. package/Libraries/Renderer/shims/ReactNative.js +3 -2
  176. package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
  177. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +1 -3
  178. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
  179. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
  180. package/Libraries/StyleSheet/PointPropType.js +1 -1
  181. package/Libraries/StyleSheet/Rect.js +1 -1
  182. package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
  183. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  184. package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
  185. package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
  186. package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
  187. package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
  188. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
  189. package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
  190. package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
  191. package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
  192. package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
  193. package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
  194. package/Libraries/StyleSheet/processBoxShadow.js +44 -4
  195. package/Libraries/StyleSheet/processColorArray.js +2 -2
  196. package/Libraries/StyleSheet/processFilter.js +2 -2
  197. package/Libraries/Text/Text.js +295 -627
  198. package/Libraries/Text/Text.windows.js +342 -717
  199. package/Libraries/Text/TextNativeComponent.js +14 -7
  200. package/Libraries/Text/TextProps.js +4 -4
  201. package/Libraries/Text/TextProps.windows.js +4 -4
  202. package/Libraries/Types/CodegenTypes.js +1 -1
  203. package/Libraries/Types/CoreEventTypes.js +21 -21
  204. package/Libraries/Types/CoreEventTypes.windows.js +21 -21
  205. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  206. package/Libraries/Utilities/Appearance.js +6 -1
  207. package/Libraries/Utilities/Dimensions.js +1 -1
  208. package/Libraries/Utilities/HMRClient.js +32 -5
  209. package/Libraries/Utilities/IPerformanceLogger.js +4 -4
  210. package/Libraries/Utilities/codegenNativeCommands.js +4 -4
  211. package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
  212. package/Libraries/Utilities/codegenNativeComponent.js +2 -2
  213. package/Libraries/Utilities/logError.js +1 -1
  214. package/Libraries/Utilities/stringifySafe.js +3 -3
  215. package/Libraries/Utilities/useMergeRefs.js +2 -2
  216. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  217. package/Libraries/vendor/emitter/EventEmitter.js +16 -20
  218. package/Microsoft.ReactNative/CallInvoker.cpp +14 -4
  219. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +1 -1
  220. package/Microsoft.ReactNative/Fabric/AbiPortalShadowNode.cpp +2 -2
  221. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +1 -1
  222. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +73 -97
  223. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +4 -1
  224. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -1
  225. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +4 -4
  226. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +135 -18
  227. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +10 -0
  228. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +7 -2
  229. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +2 -0
  230. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +63 -15
  231. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +3 -1
  232. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
  233. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -1
  234. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -0
  235. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -0
  236. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +3 -0
  237. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +0 -3
  238. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +2 -7
  239. package/Microsoft.ReactNative/IReactPackageBuilder.idl +6 -0
  240. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -61
  241. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +1 -26
  242. package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -1
  243. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -17
  244. package/Microsoft.ReactNative/Modules/AppStateModule.h +0 -4
  245. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -2
  246. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +16 -15
  247. package/Microsoft.ReactNative/Modules/AppearanceModule.h +5 -1
  248. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +2 -7
  249. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +0 -1
  250. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +4 -4
  251. package/Microsoft.ReactNative/QuirkSettings.cpp +0 -133
  252. package/Microsoft.ReactNative/QuirkSettings.h +0 -43
  253. package/Microsoft.ReactNative/QuirkSettings.idl +0 -41
  254. package/Microsoft.ReactNative/ReactHost/CrashManager.cpp +0 -4
  255. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -2
  256. package/Microsoft.ReactNative/ReactHost/React.h +0 -5
  257. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -1
  258. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +3 -26
  259. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +0 -5
  260. package/Microsoft.ReactNative/ReactHost/React_Win.h +0 -2
  261. package/Microsoft.ReactNative/ReactNativeAppBuilder.idl +3 -0
  262. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +7 -0
  263. package/Microsoft.ReactNative/ReactPackageBuilder.h +1 -0
  264. package/Microsoft.ReactNative/RedBox.cpp +0 -9
  265. package/Microsoft.ReactNative/RedBoxHandler.cpp +0 -4
  266. package/Microsoft.ReactNative/TurboModulesProvider.cpp +5 -10
  267. package/Microsoft.ReactNative/TurboModulesProvider.h +2 -0
  268. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  269. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -7
  270. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +0 -22
  271. package/Microsoft.ReactNative.Cxx/ModuleRegistration.cpp +8 -2
  272. package/Microsoft.ReactNative.Cxx/ModuleRegistration.h +36 -20
  273. package/Microsoft.ReactNative.Cxx/NamespaceRedirect.h +0 -3
  274. package/Microsoft.ReactNative.Cxx/NativeModules.h +8 -2
  275. package/Microsoft.ReactNative.Cxx/XamlUtils.h +0 -9
  276. package/Microsoft.ReactNative.Managed/ReactContext.cs +0 -9
  277. package/PropertySheets/Autolink.props +1 -1
  278. package/PropertySheets/Bundle.props +1 -1
  279. package/PropertySheets/Codegen.props +1 -1
  280. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  281. package/PropertySheets/NuGet.LockFile.props +8 -0
  282. package/PropertySheets/React.Cpp.props +4 -4
  283. package/PropertySheets/ReactNativeArchitecture.props +6 -24
  284. package/ReactCommon/ReactCommon.vcxproj +5 -6
  285. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1 -1
  286. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +15 -4
  287. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +13 -0
  288. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/defaults/DefaultTurboModules.cpp +69 -0
  289. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp +717 -0
  290. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +10 -10
  291. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +2 -21
  292. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +151 -0
  293. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +50 -0
  294. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBuffer.cpp +178 -0
  295. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManager.cpp +69 -39
  296. package/Scripts/OfficeReact.Win32.nuspec +0 -1
  297. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -39
  298. package/Scripts/creaternwapp.cmd +1 -9
  299. package/Scripts/creaternwlib.cmd +4 -24
  300. package/Shared/DevSettings.h +0 -3
  301. package/Shared/Networking/WinRTWebSocketResource.cpp +23 -408
  302. package/Shared/Networking/WinRTWebSocketResource.h +3 -119
  303. package/Shared/Shared.vcxitems +63 -38
  304. package/Shared/Shared.vcxitems.filters +54 -0
  305. package/Shared/Utils.cpp +0 -88
  306. package/Shared/Utils.h +0 -14
  307. package/Shared/WebSocketResourceFactory.cpp +28 -0
  308. package/Shared/tracing/fbsystrace.h +1 -0
  309. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +172 -160
  310. package/codegen/react/components/rnwcore/ModalHostView.g.h +8 -0
  311. package/codegen/react/components/rnwcore/Props.cpp +17 -7
  312. package/codegen/react/components/rnwcore/Props.h +3 -1
  313. package/codegen/react/components/rnwcore/VirtualViewExperimental.g.h +4 -4
  314. package/codegen/rnwcoreJSI.h +93 -77
  315. package/index.js +9 -0
  316. package/index.windows.js +9 -0
  317. package/jest/RefreshControlMock.js +2 -2
  318. package/jest/assetFileTransformer.js +8 -3
  319. package/jest/mockComponent.js +3 -4
  320. package/jest/mockNativeComponent.js +1 -1
  321. package/jest/mocks/ActivityIndicator.js +2 -2
  322. package/jest/mocks/Image.js +2 -2
  323. package/jest/mocks/Modal.js +2 -2
  324. package/jest/mocks/RefreshControl.js +3 -3
  325. package/jest/mocks/RendererProxy.js +2 -2
  326. package/jest/mocks/ScrollView.js +5 -5
  327. package/jest/mocks/Text.js +2 -2
  328. package/jest/mocks/TextInput.js +2 -2
  329. package/jest/mocks/View.js +2 -2
  330. package/jest/mocks/ViewNativeComponent.js +1 -1
  331. package/jest/mocks/requireNativeComponent.js +1 -1
  332. package/jest/mocks/useColorScheme.js +1 -1
  333. package/jest/setup.js +68 -31
  334. package/package.json +27 -22
  335. package/src/private/animated/NativeAnimatedHelper.js +2 -2
  336. package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
  337. package/src/private/components/virtualview/VirtualView.js +14 -21
  338. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
  339. package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
  340. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
  341. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
  342. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
  343. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  344. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
  345. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
  346. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
  347. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
  348. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  349. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  350. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
  351. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
  352. package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
  353. package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
  354. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -79
  355. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
  356. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -12
  357. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  358. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
  359. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  360. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  361. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  362. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  363. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
  364. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
  365. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
  366. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
  367. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +7 -3
  368. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
  369. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  370. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
  371. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  372. package/src/private/styles/composeStyles.js +1 -1
  373. package/src/private/utilities/toError.js +27 -0
  374. package/src/private/utilities/toExtendedError.js +30 -0
  375. package/src/private/webapis/dom/events/Event.js +1 -1
  376. package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
  377. package/src/private/webapis/dom/events/EventTarget.js +3 -3
  378. package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
  379. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  380. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
  381. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
  382. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  383. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  384. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  385. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
  386. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
  387. package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
  388. package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
  389. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
  390. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
  391. package/src/private/webapis/performance/LongTasks.js +3 -3
  392. package/src/private/webapis/performance/Performance.js +4 -4
  393. package/src/private/webapis/performance/PerformanceEntry.js +1 -1
  394. package/src/private/webapis/performance/PerformanceObserver.js +2 -2
  395. package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
  396. package/src/private/webapis/structuredClone/structuredClone.js +2 -2
  397. package/src/types/globals.d.ts +4 -4
  398. package/template/cpp-lib/proj/MyLib.sln +0 -33
  399. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  400. package/template/cs-lib/proj/MyLib.sln +0 -33
  401. package/template/metro.config.js +12 -2
  402. package/templates/cpp-app/metro.config.js +12 -2
  403. package/templates/cpp-app/windows/MyApp/MyApp.cpp +9 -6
  404. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +1 -1
  405. package/templates/cpp-app/windows/MyApp.sln +0 -33
  406. package/templates/cpp-lib/example/metro.config.js +12 -2
  407. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +1 -1
  408. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  409. package/types/index.d.ts +2 -0
  410. package/Folly/.clang-format +0 -2
  411. package/Folly/Folly.natvis +0 -25
  412. package/Folly/Folly.vcxproj +0 -378
  413. package/Folly/Folly.vcxproj.filters +0 -558
  414. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +0 -978
  415. package/Folly/TEMP_UntilFollyUpdate/Conv.cpp +0 -1205
  416. package/Folly/TEMP_UntilFollyUpdate/chrono/Hardware.h +0 -155
  417. package/Folly/TEMP_UntilFollyUpdate/concurrency/CacheLocality.cpp +0 -633
  418. package/Folly/TEMP_UntilFollyUpdate/json/dynamic-inl.h +0 -1438
  419. package/Folly/TEMP_UntilFollyUpdate/json/json.cpp +0 -1118
  420. package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +0 -188
  421. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +0 -348
  422. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +0 -182
  423. package/Folly/TEMP_UntilFollyUpdate/portability/Unistd.cpp +0 -33
  424. package/Folly/cgmanifest.json +0 -25
  425. package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
  426. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +0 -64
  427. package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
  428. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +0 -75
  429. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +0 -27
  430. package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +0 -81
  431. package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -24
  432. package/Microsoft.ReactNative/ReactSupport.cpp +0 -221
  433. package/Microsoft.ReactNative/ReactSupport.h +0 -13
  434. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.cpp +0 -107
  435. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +0 -62
  436. package/Microsoft.ReactNative/Utils/UwpScriptStore.cpp +0 -56
  437. package/Microsoft.ReactNative/Utils/UwpScriptStore.h +0 -23
  438. package/Microsoft.ReactNative/XamlUIService.cpp +0 -68
  439. package/Microsoft.ReactNative/XamlUIService.h +0 -37
  440. package/Microsoft.ReactNative/XamlUIService.idl +0 -53
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +0 -259
  442. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/Instance.cpp +0 -381
  443. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSIndexedRAMBundle.cpp +0 -145
  444. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/MethodCall.cpp +0 -100
  445. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ModuleRegistry.cpp +0 -256
  446. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +0 -363
  447. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/RAMBundleRegistry.cpp +0 -93
  448. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ReactMarker.cpp +0 -148
  449. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +0 -190
  450. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsiexecutor/jsireact/JSINativeModules.cpp +0 -123
  451. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +0 -27
  452. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/webperformance/NativePerformance.cpp +0 -414
  453. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +0 -91
  454. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventDispatcher.cpp +0 -80
  455. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventQueueProcessor.cpp +0 -138
  456. package/fmt/.clang-format +0 -2
  457. package/fmt/cgmanifest.json +0 -15
  458. package/fmt/fmt.vcxproj +0 -153
  459. package/fmt/fmt.vcxproj.filters +0 -59
  460. package/fmt/pch.cpp +0 -4
  461. package/fmt/pch.h +0 -2
@@ -38,9 +38,11 @@ constexpr float FOCUS_VISUAL_RADIUS = 3.0f;
38
38
 
39
39
  // m_outerVisual
40
40
  // |
41
- // ----- m_visual <-- Background / clip - Can be a custom visual depending on Component type
41
+ // ----- m_visual - Can be a custom visual depending on Component type
42
42
  // |
43
- // ----- Border Visuals x N (BorderPrimitive attached to m_visual)
43
+ // ----- m_backgroundVisual <-- Background / clip (ComponentViewFeatures::Background)
44
+ // ----- Border Visuals x N (BorderPrimitive attached to m_visual) (ComponentViewFeatures::NativeBorder)
45
+ // ----- Outline Visuals x N(BorderPrimitive) (ComponentViewFeatures::NativeBorder)
44
46
  // ----- <children> (default: directly in m_visual after border visuals)
45
47
  // ----- m_childrenContainer (created on demand when overflow:hidden, children moved here)
46
48
  // ------Focus Visual Container (created when hosting focus visuals)
@@ -79,18 +81,16 @@ facebook::react::Props::Shared ComponentView::props() noexcept {
79
81
  }
80
82
 
81
83
  void ComponentView::onThemeChanged() noexcept {
82
- if ((m_flags & ComponentViewFeatures::Background) == ComponentViewFeatures::Background) {
83
- if (viewProps()->backgroundColor) {
84
- Visual().as<Experimental::ISpriteVisual>().Brush(theme()->Brush(*viewProps()->backgroundColor));
85
- } else {
86
- Visual().as<Experimental::ISpriteVisual>().Brush(nullptr);
87
- }
88
- }
84
+ if (m_backgroundVisual)
85
+ m_backgroundVisual.Brush(theme()->Brush(*viewProps()->backgroundColor));
89
86
 
90
87
  if (m_borderPrimitive) {
91
88
  m_borderPrimitive->onThemeChanged(
92
89
  m_layoutMetrics, BorderPrimitive::resolveAndAlignBorderMetrics(m_layoutMetrics, *viewProps()));
93
90
  }
91
+ if (m_outlinePrimitive) {
92
+ m_outlinePrimitive->onThemeChanged(outlineLayoutMetrics(), outlineBorderMetrics());
93
+ }
94
94
  if (m_componentHostingFocusVisual) {
95
95
  if (m_componentHostingFocusVisual->m_focusPrimitive->m_focusInnerPrimitive) {
96
96
  auto innerFocusMetrics = focusLayoutMetrics(true /*inner*/);
@@ -154,10 +154,18 @@ void ComponentView::updateProps(
154
154
 
155
155
  if ((m_flags & ComponentViewFeatures::Background) == ComponentViewFeatures::Background) {
156
156
  if (oldViewProps.backgroundColor != newViewProps.backgroundColor) {
157
- if (newViewProps.backgroundColor) {
158
- Visual().as<Experimental::ISpriteVisual>().Brush(theme()->Brush(*newViewProps.backgroundColor));
157
+ if (facebook::react::isColorMeaningful(newViewProps.backgroundColor)) {
158
+ if (!m_backgroundVisual) {
159
+ m_backgroundVisual = m_compContext.CreateSpriteVisual();
160
+ m_backgroundVisual.RelativeSizeWithOffset({0, 0}, {1.0f, 1.0f});
161
+ Visual().InsertAt(m_backgroundVisual, 0);
162
+ }
163
+ m_backgroundVisual.Brush(theme()->Brush(*newViewProps.backgroundColor));
164
+ updateClippingPath(m_layoutMetrics, *viewProps());
159
165
  } else {
160
- Visual().as<Experimental::ISpriteVisual>().Brush(nullptr);
166
+ if (m_backgroundVisual) {
167
+ m_backgroundVisual.Brush(nullptr);
168
+ }
161
169
  }
162
170
  }
163
171
  }
@@ -166,6 +174,16 @@ void ComponentView::updateProps(
166
174
  m_borderPrimitive->updateProps(oldViewProps, newViewProps);
167
175
  }
168
176
 
177
+ if (m_outlinePrimitive) {
178
+ if (oldViewProps.outlineOffset != newViewProps.outlineOffset ||
179
+ oldViewProps.outlineWidth != newViewProps.outlineWidth ||
180
+ oldViewProps.borderRadii != newViewProps.borderRadii ||
181
+ oldViewProps.outlineColor != newViewProps.outlineColor ||
182
+ oldViewProps.outlineStyle != newViewProps.outlineStyle) {
183
+ m_outlinePrimitive->markNeedsUpdate();
184
+ }
185
+ }
186
+
169
187
  if (m_componentHostingFocusVisual) {
170
188
  if (!newViewProps.enableFocusRing) {
171
189
  m_componentHostingFocusVisual->hostFocusVisual(false, get_strong());
@@ -200,8 +218,9 @@ void ComponentView::updateProps(
200
218
  void ComponentView::updateLayoutMetrics(
201
219
  facebook::react::LayoutMetrics const &layoutMetrics,
202
220
  facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
221
+ updateClippingPath(layoutMetrics, *viewProps());
222
+
203
223
  if ((m_flags & ComponentViewFeatures::NativeBorder) == ComponentViewFeatures::NativeBorder) {
204
- updateClippingPath(layoutMetrics, *viewProps());
205
224
  OuterVisual().Size(
206
225
  {layoutMetrics.frame.size.width * layoutMetrics.pointScaleFactor,
207
226
  layoutMetrics.frame.size.height * layoutMetrics.pointScaleFactor});
@@ -218,6 +237,9 @@ void ComponentView::updateLayoutMetrics(
218
237
  if (m_borderPrimitive) {
219
238
  m_borderPrimitive->markNeedsUpdate();
220
239
  }
240
+ if (m_outlinePrimitive) {
241
+ m_outlinePrimitive->markNeedsUpdate();
242
+ }
221
243
 
222
244
  if (m_componentHostingFocusVisual) {
223
245
  m_componentHostingFocusVisual->updateFocusLayoutMetrics();
@@ -301,6 +323,23 @@ void ComponentView::FinalizeUpdates(winrt::Microsoft::ReactNative::ComponentView
301
323
  if (m_borderPrimitive) {
302
324
  m_borderPrimitive->finalize(m_layoutMetrics, borderMetrics);
303
325
  }
326
+
327
+ auto outlineMetrics = outlineBorderMetrics();
328
+ if (!m_outlinePrimitive && BorderPrimitive::requiresBorder(outlineMetrics, theme())) {
329
+ m_outlinePrimitive = std::make_shared<BorderPrimitive>(*this);
330
+ Visual().InsertAt(
331
+ m_outlinePrimitive->RootVisual(),
332
+ (m_backgroundVisual ? 1 : 0) + (m_borderPrimitive ? m_borderPrimitive->numberOfVisuals() : 0));
333
+ }
334
+
335
+ if (m_outlinePrimitive) {
336
+ auto offset = pixelRoundAndScaleBorderWidth(viewProps()->outlineWidth, m_layoutMetrics.pointScaleFactor) +
337
+ std::round(viewProps()->outlineOffset * m_layoutMetrics.pointScaleFactor);
338
+ m_outlinePrimitive->RootVisual().Offset({-offset, -offset, 0.0f});
339
+ m_outlinePrimitive->RootVisual().RelativeSizeWithOffset({offset * 2, offset * 2}, {1.0f, 1.0f});
340
+
341
+ m_outlinePrimitive->finalize(outlineLayoutMetrics(), outlineMetrics);
342
+ }
304
343
  }
305
344
 
306
345
  if (m_componentHostingFocusVisual) {
@@ -581,6 +620,67 @@ facebook::react::LayoutMetrics ComponentView::focusLayoutMetrics(bool inner) con
581
620
  return layoutMetrics;
582
621
  }
583
622
 
623
+ facebook::react::LayoutMetrics ComponentView::outlineLayoutMetrics() const noexcept {
624
+ auto &props = *viewProps();
625
+ auto offset = (pixelRoundAndScaleBorderWidth(viewProps()->outlineWidth, m_layoutMetrics.pointScaleFactor) +
626
+ std::round(viewProps()->outlineOffset * m_layoutMetrics.pointScaleFactor)) /
627
+ m_layoutMetrics.pointScaleFactor;
628
+ facebook::react::LayoutMetrics layoutMetrics = m_layoutMetrics;
629
+ layoutMetrics.frame.origin.x -= offset;
630
+ layoutMetrics.frame.origin.y -= offset;
631
+ layoutMetrics.frame.size.height += offset * 2;
632
+ layoutMetrics.frame.size.width += offset * 2;
633
+ return layoutMetrics;
634
+ }
635
+
636
+ facebook::react::BorderMetrics ComponentView::outlineBorderMetrics() const noexcept {
637
+ auto &props = *viewProps();
638
+
639
+ facebook::react::BorderMetrics metrics = BorderPrimitive::resolveAndAlignBorderMetrics(m_layoutMetrics, props);
640
+ metrics.borderColors.bottom = metrics.borderColors.left = metrics.borderColors.right = metrics.borderColors.top =
641
+ props.outlineColor;
642
+
643
+ auto offset = pixelRoundAndScaleBorderWidth(viewProps()->outlineWidth, m_layoutMetrics.pointScaleFactor) +
644
+ std::round(viewProps()->outlineOffset * m_layoutMetrics.pointScaleFactor);
645
+
646
+ if (metrics.borderRadii.bottomLeft.horizontal)
647
+ metrics.borderRadii.bottomLeft.horizontal = std::max(0.0f, metrics.borderRadii.bottomLeft.horizontal + offset);
648
+ if (metrics.borderRadii.bottomLeft.vertical)
649
+ metrics.borderRadii.bottomLeft.vertical = std::max(0.0f, metrics.borderRadii.bottomLeft.vertical + offset);
650
+ if (metrics.borderRadii.bottomRight.horizontal)
651
+ metrics.borderRadii.bottomRight.horizontal = std::max(0.0f, metrics.borderRadii.bottomRight.horizontal + offset);
652
+ if (metrics.borderRadii.bottomRight.vertical)
653
+ metrics.borderRadii.bottomRight.vertical = std::max(0.0f, metrics.borderRadii.bottomRight.vertical + offset);
654
+ if (metrics.borderRadii.topLeft.horizontal)
655
+ metrics.borderRadii.topLeft.horizontal = std::max(0.0f, metrics.borderRadii.topLeft.horizontal + offset);
656
+ if (metrics.borderRadii.topLeft.vertical)
657
+ metrics.borderRadii.topLeft.vertical = std::max(0.0f, metrics.borderRadii.topLeft.vertical + offset);
658
+ if (metrics.borderRadii.topRight.horizontal)
659
+ metrics.borderRadii.topRight.horizontal = std::max(0.0f, metrics.borderRadii.topRight.horizontal + offset);
660
+ if (metrics.borderRadii.topRight.vertical)
661
+ metrics.borderRadii.topRight.vertical = std::max(0.0f, metrics.borderRadii.topRight.vertical + offset);
662
+
663
+ static_assert(
664
+ facebook::react::BorderStyle::Solid ==
665
+ static_cast<facebook::react::BorderStyle>(facebook::react::OutlineStyle::Solid));
666
+ static_assert(
667
+ facebook::react::BorderStyle::Dotted ==
668
+ static_cast<facebook::react::BorderStyle>(facebook::react::OutlineStyle::Dotted));
669
+ static_assert(
670
+ facebook::react::BorderStyle::Dashed ==
671
+ static_cast<facebook::react::BorderStyle>(facebook::react::OutlineStyle::Dashed));
672
+ assert(
673
+ props.outlineStyle == facebook::react::OutlineStyle::Solid ||
674
+ props.outlineStyle == facebook::react::OutlineStyle::Dotted ||
675
+ props.outlineStyle == facebook::react::OutlineStyle::Dashed);
676
+ metrics.borderStyles.bottom = metrics.borderStyles.left = metrics.borderStyles.right = metrics.borderStyles.top =
677
+ static_cast<facebook::react::BorderStyle>(props.outlineStyle);
678
+
679
+ metrics.borderWidths.bottom = metrics.borderWidths.left = metrics.borderWidths.right = metrics.borderWidths.top =
680
+ pixelRoundAndScaleBorderWidth(viewProps()->outlineWidth, m_layoutMetrics.pointScaleFactor);
681
+ return metrics;
682
+ }
683
+
584
684
  facebook::react::BorderMetrics ComponentView::focusBorderMetrics(
585
685
  bool inner,
586
686
  const facebook::react::LayoutMetrics &layoutMetrics) const noexcept {
@@ -654,7 +754,7 @@ void ComponentView::hostFocusVisual(bool show, winrt::com_ptr<ComponentView> vie
654
754
  assert(
655
755
  view.get() ==
656
756
  this); // When not using lifted comp, focus visuals should always host within their own component
657
- OuterVisual().InsertAt(m_focusPrimitive->m_focusVisual, 1);
757
+ OuterVisual().InsertAt(m_focusPrimitive->m_focusVisual, (m_backgroundVisual ? 2 : 1));
658
758
  }
659
759
  }
660
760
 
@@ -898,9 +998,23 @@ void ComponentView::Toggle() noexcept {
898
998
  // no-op
899
999
  }
900
1000
 
1001
+ // This offset ensures that the m_borderPrimitive inserts its layers above the background
1002
+ int32_t ComponentView::borderInsertAtIndex() const noexcept {
1003
+ return m_backgroundVisual ? 1 : 0;
1004
+ }
1005
+
1006
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual ComponentView::VisualToApplyBackgroundClipTo()
1007
+ const noexcept {
1008
+ return m_backgroundVisual;
1009
+ }
1010
+
901
1011
  void ComponentView::updateClippingPath(
902
1012
  facebook::react::LayoutMetrics const &layoutMetrics,
903
1013
  const facebook::react::ViewProps &viewProps) noexcept {
1014
+ auto clipTarget = VisualToApplyBackgroundClipTo();
1015
+ if (!clipTarget)
1016
+ return;
1017
+
904
1018
  auto borderMetrics = BorderPrimitive::resolveAndAlignBorderMetrics(layoutMetrics, viewProps);
905
1019
 
906
1020
  bool hasRoundedCorners = borderMetrics.borderRadii.topLeft.horizontal != 0 ||
@@ -919,10 +1033,10 @@ void ComponentView::updateClippingPath(
919
1033
  winrt::com_ptr<ID2D1PathGeometry> pathGeometry = BorderPrimitive::GenerateRoundedRectPathGeometry(
920
1034
  m_compContext, borderMetrics.borderRadii, {0, 0, 0, 0}, {0, 0, viewWidth, viewHeight});
921
1035
 
922
- Visual().as<::Microsoft::ReactNative::Composition::Experimental::IVisualInterop>()->SetClippingPath(
1036
+ clipTarget.as<::Microsoft::ReactNative::Composition::Experimental::IVisualInterop>()->SetClippingPath(
923
1037
  pathGeometry.get());
924
1038
  } else {
925
- Visual().as<::Microsoft::ReactNative::Composition::Experimental::IVisualInterop>()->SetClippingPath(nullptr);
1039
+ clipTarget.as<::Microsoft::ReactNative::Composition::Experimental::IVisualInterop>()->SetClippingPath(nullptr);
926
1040
  }
927
1041
  }
928
1042
 
@@ -934,6 +1048,9 @@ void ComponentView::indexOffsetForBorder(uint32_t &index) const noexcept {
934
1048
  if (m_borderPrimitive) {
935
1049
  index += m_borderPrimitive->numberOfVisuals();
936
1050
  }
1051
+ if (m_outlinePrimitive) {
1052
+ index += 1;
1053
+ }
937
1054
  }
938
1055
 
939
1056
  void ComponentView::OnRenderingDeviceLost() noexcept {}
@@ -1084,7 +1201,7 @@ void ViewComponentView::ensureVisual() noexcept {
1084
1201
  } else {
1085
1202
  m_visual = createVisual();
1086
1203
  }
1087
- OuterVisual().InsertAt(m_visual, 0);
1204
+ OuterVisual().InsertAt(m_visual, m_backgroundVisual ? 1 : 0);
1088
1205
  }
1089
1206
  }
1090
1207
 
@@ -1382,7 +1499,7 @@ void ViewComponentView::updateChildrenClippingPath(
1382
1499
  }
1383
1500
 
1384
1501
  // Insert m_childrenContainer after border visuals in m_visual
1385
- Visual().InsertAt(m_childrenContainer, borderCount);
1502
+ Visual().InsertAt(m_childrenContainer, (m_backgroundVisual ? 1 : 0) + borderCount);
1386
1503
 
1387
1504
  // Use relative sizing so container automatically tracks parent's size
1388
1505
  m_childrenContainer.RelativeSizeWithOffset({0, 0}, {1, 1});
@@ -111,6 +111,9 @@ struct ComponentView : public ComponentViewT<
111
111
  bool getAcccessiblityIsReadOnly() noexcept override;
112
112
  ToggleState getToggleState() noexcept override;
113
113
  void Toggle() noexcept override;
114
+
115
+ int32_t borderInsertAtIndex() const noexcept;
116
+
114
117
  virtual winrt::Microsoft::ReactNative::implementation::ClipState getClipState() noexcept;
115
118
 
116
119
  virtual std::pair<facebook::react::Cursor, HCURSOR> cursor() const noexcept;
@@ -130,6 +133,8 @@ struct ComponentView : public ComponentViewT<
130
133
  void ThemeChanged(winrt::event_token const &token) noexcept;
131
134
 
132
135
  protected:
136
+ virtual winrt::Microsoft::ReactNative::Composition::Experimental::IVisual VisualToApplyBackgroundClipTo()
137
+ const noexcept;
133
138
  bool anyHitTestHelper(
134
139
  facebook::react::Tag &targetTag,
135
140
  facebook::react::Point &ptContent,
@@ -141,6 +146,7 @@ struct ComponentView : public ComponentViewT<
141
146
  winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext m_compContext;
142
147
  comp::CompositionPropertySet m_centerPropSet{nullptr};
143
148
  facebook::react::SharedViewEventEmitter m_eventEmitter;
149
+ winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual m_backgroundVisual{nullptr};
144
150
 
145
151
  private:
146
152
  void updateFocusLayoutMetrics() noexcept;
@@ -157,6 +163,9 @@ struct ComponentView : public ComponentViewT<
157
163
  facebook::react::BorderMetrics focusBorderMetrics(bool inner, const facebook::react::LayoutMetrics &layoutMetrics)
158
164
  const noexcept;
159
165
 
166
+ facebook::react::LayoutMetrics outlineLayoutMetrics() const noexcept;
167
+ facebook::react::BorderMetrics outlineBorderMetrics() const noexcept;
168
+
160
169
  virtual winrt::Microsoft::ReactNative::Composition::Experimental::IVisual visualToHostFocus() noexcept;
161
170
  virtual winrt::com_ptr<ComponentView> focusVisualRoot(const facebook::react::Rect &focusRect) noexcept;
162
171
 
@@ -168,6 +177,7 @@ struct ComponentView : public ComponentViewT<
168
177
  winrt::com_ptr<ComponentView>
169
178
  m_componentHostingFocusVisual; // The component that we are showing our focus visuals within
170
179
  std::shared_ptr<BorderPrimitive> m_borderPrimitive;
180
+ std::shared_ptr<BorderPrimitive> m_outlinePrimitive;
171
181
  std::unique_ptr<FocusPrimitive> m_focusPrimitive{nullptr};
172
182
  winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_outerVisual{nullptr};
173
183
  winrt::event<winrt::Windows::Foundation::EventHandler<winrt::IInspectable>> m_themeChangedEvent;
@@ -189,14 +189,14 @@ void ImageComponentView::setStateAndResubscribeImageResponseObserver(
189
189
  facebook::react::ImageShadowNode::ConcreteState::Shared const &state) noexcept {
190
190
  if (m_state) {
191
191
  auto &observerCoordinator = m_state->getData().getImageRequest().getObserverCoordinator();
192
- observerCoordinator.removeObserver(*m_imageResponseObserver);
192
+ observerCoordinator.removeObserver(m_imageResponseObserver);
193
193
  }
194
194
 
195
195
  m_state = state;
196
196
 
197
197
  if (m_state) {
198
198
  auto &observerCoordinator = m_state->getData().getImageRequest().getObserverCoordinator();
199
- observerCoordinator.addObserver(*m_imageResponseObserver);
199
+ observerCoordinator.addObserver(m_imageResponseObserver);
200
200
  }
201
201
  }
202
202
 
@@ -237,6 +237,11 @@ void ImageComponentView::onThemeChanged() noexcept {
237
237
  Super::onThemeChanged();
238
238
  }
239
239
 
240
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual ImageComponentView::VisualToApplyBackgroundClipTo()
241
+ const noexcept {
242
+ return Visual();
243
+ }
244
+
240
245
  void ImageComponentView::ensureDrawingSurface() noexcept {
241
246
  assert(m_reactContext.UIDispatcher().HasThreadAccess());
242
247
 
@@ -52,6 +52,8 @@ struct ImageComponentView : ImageComponentViewT<ImageComponentView, ViewComponen
52
52
 
53
53
  virtual std::string DefaultControlType() const noexcept;
54
54
  static facebook::react::SharedViewProps defaultProps() noexcept;
55
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual VisualToApplyBackgroundClipTo()
56
+ const noexcept override;
55
57
 
56
58
  ImageComponentView(
57
59
  const winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext,
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "../../../codegen/react/components/rnwcore/ModalHostView.g.h"
9
9
  #include <ComponentView.Experimental.interop.h>
10
+ #include <dwmapi.h>
10
11
  #include <winrt/Microsoft.UI.Content.h>
11
12
  #include <winrt/Microsoft.UI.Input.h>
12
13
  #include <winrt/Microsoft.UI.Windowing.h>
@@ -112,6 +113,12 @@ struct ModalHostView : public winrt::implements<ModalHostView, winrt::Windows::F
112
113
  m_rnWindow.AppWindow().Title(titleValue);
113
114
  }
114
115
 
116
+ if (m_rnWindow &&
117
+ (newViewProps.hideTitleBar != oldViewProps.hideTitleBar ||
118
+ newViewProps.hideBorder != oldViewProps.hideBorder)) {
119
+ UpdateTitleBarAndBorder();
120
+ }
121
+
115
122
  ::Microsoft::ReactNativeSpecs::BaseModalHostView<ModalHostView>::UpdateProps(view, newProps, oldProps);
116
123
  }
117
124
 
@@ -258,6 +265,61 @@ struct ModalHostView : public winrt::implements<ModalHostView, winrt::Windows::F
258
265
  }
259
266
  }
260
267
 
268
+ void UpdateTitleBarAndBorder() noexcept {
269
+ if (!m_rnWindow) {
270
+ return;
271
+ }
272
+
273
+ auto overlappedPresenter = winrt::Microsoft::UI::Windowing::OverlappedPresenter::Create();
274
+
275
+ // Configure presenter for modal behavior
276
+ overlappedPresenter.IsModal(true);
277
+
278
+ // modal should only have close button
279
+ overlappedPresenter.IsMinimizable(false);
280
+ overlappedPresenter.IsMaximizable(false);
281
+
282
+ // Apply the presenter to the window
283
+ m_rnWindow.AppWindow().SetPresenter(overlappedPresenter);
284
+
285
+ // We only hide the borders if the titlebar is also hidden.
286
+ const bool hideBorders = m_localProps->hideTitleBar.value_or(false) && m_localProps->hideBorder.value_or(false);
287
+
288
+ auto titleBar = m_rnWindow.AppWindow().TitleBar();
289
+ titleBar.ResetToDefault();
290
+ overlappedPresenter.IsResizable(false);
291
+
292
+ overlappedPresenter.SetBorderAndTitleBar(!hideBorders, !m_localProps->hideTitleBar.value_or(false));
293
+
294
+ auto hwnd = GetWindowFromWindowId(m_rnWindow.AppWindow().Id());
295
+
296
+ if (hideBorders) {
297
+ const DWMNCRENDERINGPOLICY ncPolicy = DWMNCRP_DISABLED;
298
+ ::DwmSetWindowAttribute(hwnd, DWMWA_NCRENDERING_POLICY, &ncPolicy, sizeof(ncPolicy));
299
+
300
+ const DWM_WINDOW_CORNER_PREFERENCE cornerPref = DWMWCP_DEFAULT;
301
+ ::DwmSetWindowAttribute(hwnd, DWMWA_WINDOW_CORNER_PREFERENCE, &cornerPref, sizeof(cornerPref));
302
+
303
+ const COLORREF zeroColor = 0;
304
+ ::DwmSetWindowAttribute(hwnd, DWMWA_BORDER_COLOR, &zeroColor, sizeof(zeroColor));
305
+ ::DwmSetWindowAttribute(hwnd, DWMWA_CAPTION_COLOR, &zeroColor, sizeof(zeroColor));
306
+ ::DwmSetWindowAttribute(hwnd, DWMWA_TEXT_COLOR, &zeroColor, sizeof(zeroColor));
307
+ } else {
308
+ const DWMNCRENDERINGPOLICY ncPolicy = DWMNCRP_USEWINDOWSTYLE;
309
+ ::DwmSetWindowAttribute(hwnd, DWMWA_NCRENDERING_POLICY, &ncPolicy, sizeof(ncPolicy));
310
+
311
+ const DWM_WINDOW_CORNER_PREFERENCE cornerPref = DWMWCP_DEFAULT;
312
+ ::DwmSetWindowAttribute(hwnd, DWMWA_WINDOW_CORNER_PREFERENCE, &cornerPref, sizeof(cornerPref));
313
+
314
+ const COLORREF zeroColor = DWMWA_COLOR_DEFAULT;
315
+ ::DwmSetWindowAttribute(hwnd, DWMWA_BORDER_COLOR, &zeroColor, sizeof(zeroColor));
316
+ ::DwmSetWindowAttribute(hwnd, DWMWA_CAPTION_COLOR, &zeroColor, sizeof(zeroColor));
317
+ ::DwmSetWindowAttribute(hwnd, DWMWA_TEXT_COLOR, &zeroColor, sizeof(zeroColor));
318
+
319
+ titleBar.IconShowOptions(winrt::Microsoft::UI::Windowing::IconShowOptions::HideIconAndSystemMenu);
320
+ }
321
+ }
322
+
261
323
  // creates a new modal window
262
324
  void EnsureModalCreated(const winrt::Microsoft::ReactNative::ComponentView &view) {
263
325
  if (m_popUp) {
@@ -282,22 +344,8 @@ struct ModalHostView : public winrt::implements<ModalHostView, winrt::Windows::F
282
344
  m_rnWindow = winrt::Microsoft::ReactNative::ReactNativeWindow::CreateFromContentSiteBridgeAndIsland(
283
345
  m_popUp, winrt::Microsoft::ReactNative::ReactNativeIsland::CreatePortal(portal));
284
346
  m_rnWindow.ResizePolicy(winrt::Microsoft::ReactNative::ContentSizePolicy::None);
285
- auto overlappedPresenter = winrt::Microsoft::UI::Windowing::OverlappedPresenter::Create();
286
-
287
- // Configure presenter for modal behavior
288
- overlappedPresenter.IsModal(true);
289
- overlappedPresenter.SetBorderAndTitleBar(true, true);
290
-
291
- // modal should only have close button
292
- overlappedPresenter.IsMinimizable(false);
293
- overlappedPresenter.IsMaximizable(false);
294
-
295
- // Apply the presenter to the window
296
- m_rnWindow.AppWindow().SetPresenter(overlappedPresenter);
297
347
 
298
- // Hide the title bar icon
299
- m_rnWindow.AppWindow().TitleBar().IconShowOptions(
300
- winrt::Microsoft::UI::Windowing::IconShowOptions::HideIconAndSystemMenu);
348
+ UpdateTitleBarAndBorder();
301
349
 
302
350
  // Set initial title using the stored local props
303
351
  if (m_localProps && m_localProps->title.has_value()) {
@@ -340,7 +340,9 @@ void ParagraphComponentView::updateVisualBrush() noexcept {
340
340
  break;
341
341
  }
342
342
  }
343
- winrt::check_hresult(m_textLayout->SetTextAlignment(alignment));
343
+
344
+ if (alignment != m_textLayout->GetTextAlignment())
345
+ winrt::check_hresult(m_textLayout->SetTextAlignment(alignment));
344
346
  }
345
347
 
346
348
  requireNewBrush = true;
@@ -1329,7 +1329,7 @@ void WindowsTextInputComponentView::updateLayoutMetrics(
1329
1329
  facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
1330
1330
  // Set Position & Size Properties
1331
1331
 
1332
- if ((layoutMetrics.pointScaleFactor != m_layoutMetrics.pointScaleFactor)) {
1332
+ if (m_textServices && layoutMetrics.pointScaleFactor > 0) {
1333
1333
  LRESULT res;
1334
1334
  winrt::check_hresult(m_textServices->TxSendMessage(
1335
1335
  (WM_USER + 328), // EM_SETDPI
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include "WindowsTextInputState.h"
9
9
 
10
- #include <react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h> // [windows]
10
+ #include <react/renderer/components/text/platform/cxx/react/renderer/components/text/ParagraphState.h> // [windows]
11
11
 
12
12
  namespace facebook::react {
13
13
 
@@ -24,6 +24,7 @@
24
24
  #include <react/renderer/components/text/ParagraphComponentDescriptor.h>
25
25
  #include <react/renderer/core/DynamicPropsUtilities.h>
26
26
  #include <react/renderer/core/EventBeat.h>
27
+ #include <react/renderer/mounting/ShadowTree.h>
27
28
  #include <react/renderer/runtimescheduler/RuntimeScheduler.h>
28
29
  #include <react/renderer/scheduler/Scheduler.h>
29
30
  #include <react/renderer/scheduler/SchedulerToolbox.h>
@@ -404,6 +405,16 @@ void FabricUIManager::schedulerShouldRenderTransactions(
404
405
  }
405
406
  }
406
407
 
408
+ void FabricUIManager::schedulerShouldMergeReactRevision(facebook::react::SurfaceId surfaceId) {
409
+ m_context.UIDispatcher().Post([surfaceId, self = shared_from_this()]() {
410
+ std::lock_guard lock(self->m_schedulerMutex);
411
+ if (self->m_scheduler) {
412
+ self->m_scheduler->getUIManager()->getShadowTreeRegistry().visit(
413
+ surfaceId, [](const facebook::react::ShadowTree &shadowTree) { shadowTree.mergeReactRevision(); });
414
+ }
415
+ });
416
+ }
417
+
407
418
  void FabricUIManager::schedulerDidRequestPreliminaryViewAllocation(const facebook::react::ShadowNode &shadowView) {
408
419
  // iOS does not do this optimization, but Android does. It maybe that android's allocations are more expensive due to
409
420
  // the Java boundary.
@@ -90,6 +90,7 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
90
90
  const std::shared_ptr<const facebook::react::MountingCoordinator> &mountingCoordinator) override;
91
91
  virtual void schedulerShouldRenderTransactions(
92
92
  const std::shared_ptr<const facebook::react::MountingCoordinator> &mountingCoordinator) override;
93
+ virtual void schedulerShouldMergeReactRevision(facebook::react::SurfaceId surfaceId) override;
93
94
  virtual void schedulerDidRequestPreliminaryViewAllocation(const facebook::react::ShadowNode &shadowView) override;
94
95
  virtual void schedulerDidDispatchCommand(
95
96
  facebook::react::ShadowView const &shadowView,
@@ -99,6 +99,9 @@ inline ColorComponents colorComponentsFromHostPlatformColor(Color color) {
99
99
 
100
100
  // windows
101
101
  inline bool hostPlatformColorIsColorMeaningful(Color color) noexcept {
102
+ if (color.m_platformColor.size())
103
+ return true;
104
+
102
105
  auto windowsColor = color.AsWindowsColor();
103
106
  return windowsColor.A > 0;
104
107
  }
@@ -4,9 +4,6 @@
4
4
  #include "PlatformColorUtils.h"
5
5
  #include <Utils/ThemeUtils.h>
6
6
  #include <Utils/ValueUtils.h>
7
- #ifndef CORE_ABI
8
- #include <XamlUtils.h>
9
- #endif // CORE_ABI
10
7
  #include <react/renderer/graphics/Color.h>
11
8
  #include <winrt/Windows.UI.ViewManagement.h>
12
9
  #include "HostPlatformColor.h"
@@ -196,12 +196,7 @@ void WindowsTextLayoutManager::GetTextLayout(
196
196
  ));
197
197
 
198
198
  // Apply max width constraint and ellipsis trimming to ensure consistency with rendering
199
- DWRITE_TEXT_METRICS metrics;
200
- winrt::check_hresult(spTextLayout->GetMetrics(&metrics));
201
-
202
- if (metrics.width > size.width) {
203
- spTextLayout->SetMaxWidth(size.width);
204
- }
199
+ spTextLayout->SetMaxWidth(size.width);
205
200
 
206
201
  // Apply DWRITE_TRIMMING for ellipsizeMode
207
202
  DWRITE_TRIMMING trimming = {};
@@ -396,7 +391,7 @@ void WindowsTextLayoutManager::GetTextLayoutByAdjustingFontSizeToFit(
396
391
  }
397
392
  }
398
393
 
399
- // measure entire text (inluding attachments)
394
+ // measure entire text (including attachments)
400
395
  TextMeasurement TextLayoutManager::measure(
401
396
  const AttributedStringBox &attributedStringBox,
402
397
  const ParagraphAttributes &paragraphAttributes,
@@ -21,5 +21,11 @@ namespace Microsoft.ReactNative
21
21
  DOC_STRING("Adds a custom native module. See @ReactModuleProvider. This will register the"
22
22
  "module as a TurboModule.")
23
23
  void AddTurboModule(String moduleName, ReactModuleProvider moduleProvider);
24
+
25
+ DOC_STRING("Adds a custom native module. See @ReactModuleProvider. This will register the"
26
+ "module as a TurboModule. This module will be created and have init called as soon as the"
27
+ "instance is created, event before the module is accessed from JavaScript.")
28
+ void AddEagerInitTurboModule(String moduleName, ReactModuleProvider moduleProvider);
29
+
24
30
  }
25
31
  } // namespace Microsoft.ReactNative