react-native-windows 0.79.5 → 0.80.0-preview.10

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 (370) hide show
  1. package/.flowconfig +12 -3
  2. package/Directory.Build.props +11 -2
  3. package/Folly/TEMP_UntilFollyUpdate/json/json.cpp +1 -1
  4. package/Libraries/Alert/Alert.d.ts +4 -1
  5. package/Libraries/Alert/Alert.js +3 -0
  6. package/Libraries/Alert/Alert.windows.js +3 -0
  7. package/Libraries/Alert/RCTAlertManager.js +17 -0
  8. package/Libraries/Animated/Animated.js.flow +1 -3
  9. package/Libraries/Animated/AnimatedEvent.js +4 -3
  10. package/Libraries/Animated/AnimatedExports.js +2 -2
  11. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  12. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  13. package/Libraries/Animated/Easing.js +13 -15
  14. package/Libraries/Animated/animations/Animation.js +8 -4
  15. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  16. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  17. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  18. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  19. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  20. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  21. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  22. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  23. package/Libraries/AppState/AppState.js +7 -2
  24. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  25. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  26. package/Libraries/Blob/BlobManager.js +1 -0
  27. package/Libraries/Blob/FileReader.js +219 -8
  28. package/Libraries/Blob/URL.js +37 -12
  29. package/Libraries/Blob/URLSearchParams.js +106 -31
  30. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +1 -1
  33. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  35. package/Libraries/Components/Button.d.ts +3 -0
  36. package/Libraries/Components/Button.js +1 -1
  37. package/Libraries/Components/Button.windows.js +27 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  39. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  43. package/Libraries/Components/Flyout/Flyout.js +11 -0
  44. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  45. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  46. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  47. package/Libraries/Components/Popup/Popup.js +11 -0
  48. package/Libraries/Components/Pressable/Pressable.js +20 -4
  49. package/Libraries/Components/Pressable/Pressable.windows.js +20 -4
  50. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  51. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  52. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  53. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
  54. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  55. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  56. package/Libraries/Components/ScrollView/ScrollView.windows.js +131 -122
  57. package/Libraries/Components/StaticRenderer.js +1 -1
  58. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  59. package/Libraries/Components/Switch/Switch.js +8 -4
  60. package/Libraries/Components/Switch/Switch.windows.js +17 -4
  61. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  62. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  63. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  64. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  65. package/Libraries/Components/TextInput/TextInput.flow.windows.js +1246 -0
  66. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  67. package/Libraries/Components/TextInput/TextInput.windows.js +104 -1092
  68. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  69. package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
  70. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +2 -1
  71. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  72. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  73. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  74. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  75. package/Libraries/Components/Touchable/Touchable.js +5 -5
  76. package/Libraries/Components/Touchable/Touchable.windows.js +5 -5
  77. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  78. package/Libraries/Components/Touchable/TouchableBounce.windows.js +14 -7
  79. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  80. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +10 -7
  81. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  82. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +6 -6
  83. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  84. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +13 -6
  85. package/Libraries/Components/View/View.js +18 -21
  86. package/Libraries/Components/View/View.windows.js +39 -41
  87. package/Libraries/Components/View/ViewAccessibility.d.ts +8 -0
  88. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  89. package/Libraries/Components/View/ViewAccessibility.windows.js +9 -1
  90. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  91. package/Libraries/Components/View/ViewPropTypes.windows.js +50 -2
  92. package/Libraries/Core/ReactNativeVersion.js +1 -1
  93. package/Libraries/Core/setUpReactDevTools.js +5 -5
  94. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  95. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  96. package/Libraries/Image/AssetSourceResolver.js +17 -4
  97. package/Libraries/Image/AssetSourceResolver.windows.js +17 -4
  98. package/Libraries/Image/Image.d.ts +26 -10
  99. package/Libraries/Image/Image.js +17 -0
  100. package/Libraries/Image/Image.js.flow +5 -5
  101. package/Libraries/Image/Image.windows.js +13 -1
  102. package/Libraries/Image/ImageBackground.js +2 -0
  103. package/Libraries/Image/ImageInjection.js +1 -1
  104. package/Libraries/Image/ImageProps.js +22 -17
  105. package/Libraries/Image/ImageSource.js +3 -1
  106. package/Libraries/Image/ImageSourceUtils.js +4 -2
  107. package/Libraries/Image/ImageTypes.flow.js +1 -1
  108. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  109. package/Libraries/Interaction/InteractionManager.js +1 -1
  110. package/Libraries/Interaction/PanResponder.js +3 -3
  111. package/Libraries/Interaction/TaskQueue.js +1 -0
  112. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  113. package/Libraries/Linking/Linking.js +1 -1
  114. package/Libraries/Lists/FlatList.d.ts +2 -2
  115. package/Libraries/Lists/FlatList.js +8 -11
  116. package/Libraries/Lists/SectionList.js +39 -42
  117. package/Libraries/Lists/SectionListModern.js +25 -34
  118. package/Libraries/Lists/VirtualizedList.js +1 -0
  119. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  120. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  122. package/Libraries/Modal/Modal.js +33 -7
  123. package/Libraries/Modal/Modal.windows.js +33 -10
  124. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  125. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  126. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  127. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
  128. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  129. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  130. package/Libraries/Network/RCTNetworking.android.js +1 -1
  131. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  132. package/Libraries/Network/RCTNetworking.js +17 -0
  133. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  134. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  135. package/Libraries/Network/XMLHttpRequest.js +781 -10
  136. package/Libraries/Performance/Systrace.js +7 -7
  137. package/Libraries/Pressability/Pressability.js +1 -1
  138. package/Libraries/Pressability/Pressability.windows.js +1 -1
  139. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  140. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  141. package/Libraries/ReactNative/AppRegistry.js +2 -322
  142. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  143. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  144. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  145. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  146. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  147. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  148. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  149. package/Libraries/ReactNative/renderApplication.js +9 -0
  150. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  151. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  152. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  153. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  154. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  155. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  156. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  157. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  159. package/Libraries/Settings/Settings.ios.js +1 -0
  160. package/Libraries/Settings/Settings.js +13 -19
  161. package/Libraries/Settings/SettingsFallback.js +33 -0
  162. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  163. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  164. package/Libraries/StyleSheet/Rect.js +1 -0
  165. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  166. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  167. package/Libraries/StyleSheet/StyleSheetExports.js +210 -0
  168. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  169. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  170. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  171. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  172. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  173. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  174. package/Libraries/Text/Text.d.ts +2 -5
  175. package/Libraries/Text/Text.js +3 -3
  176. package/Libraries/Text/Text.windows.js +3 -3
  177. package/Libraries/Text/TextNativeComponent.js +0 -4
  178. package/Libraries/Text/TextProps.js +5 -33
  179. package/Libraries/Text/TextProps.windows.js +5 -32
  180. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  181. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  182. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  183. package/Libraries/Types/CoreEventTypes.js +1 -1
  184. package/Libraries/Types/CoreEventTypes.windows.js +1 -1
  185. package/Libraries/Utilities/Appearance.js +2 -0
  186. package/Libraries/Utilities/BackHandler.js +17 -0
  187. package/Libraries/Utilities/DeviceInfo.js +2 -0
  188. package/Libraries/Utilities/Dimensions.js +1 -1
  189. package/Libraries/Utilities/Platform.js +17 -0
  190. package/Libraries/Utilities/PlatformTypes.js +11 -3
  191. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  192. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  193. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  194. package/Libraries/WebSocket/WebSocket.js +313 -8
  195. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  196. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  197. package/Microsoft.ReactNative/CompositionSwitcher.idl +3 -0
  198. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +0 -6
  199. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +248 -6
  200. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +55 -160
  201. package/Microsoft.ReactNative/Fabric/Composition/CompositionTextRangeProvider.cpp +30 -9
  202. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +36 -0
  203. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +36 -33
  204. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +22 -0
  205. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +3 -0
  206. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +46 -0
  207. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +4 -1
  208. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +11 -0
  209. package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +37 -5
  210. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +177 -25
  211. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +4 -0
  212. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +29 -0
  213. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +2 -0
  214. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +17 -34
  215. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +225 -0
  216. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +23 -0
  217. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +9 -3
  218. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  219. package/Microsoft.ReactNative/Fabric/ImageManager.cpp +1 -1
  220. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +16 -0
  221. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +1 -0
  222. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +9 -0
  223. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +1 -0
  224. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +4 -0
  225. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +64 -0
  226. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.h +11 -0
  227. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +36 -96
  228. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.h +1 -1
  229. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +29 -0
  230. package/Microsoft.ReactNative/Modules/SampleTurboModule.cpp +4 -0
  231. package/Microsoft.ReactNative/Modules/SampleTurboModule.h +3 -0
  232. package/Microsoft.ReactNative/TurboModulesProvider.h +1 -1
  233. package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +49 -0
  234. package/Microsoft.ReactNative/Utils/ThemeUtils.h +31 -0
  235. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.h +1 -1
  236. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  237. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  238. package/PropertySheets/JSEngine.props +1 -1
  239. package/PropertySheets/React.Cpp.props +4 -0
  240. package/PropertySheets/Warnings.props +45 -0
  241. package/README.md +6 -2
  242. package/ReactCommon/ReactCommon.vcxproj +9 -4
  243. package/ReactCommon/ReactCommon.vcxproj.filters +6 -0
  244. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +253 -0
  245. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +5 -2
  246. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +4 -8
  247. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +184 -0
  248. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +22 -0
  249. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +2 -4
  250. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +27 -0
  251. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +3 -2
  252. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +1 -1
  253. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +308 -0
  254. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp +42 -0
  255. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +7 -51
  256. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +10 -5
  257. package/Scripts/creaternwapp.cmd +9 -3
  258. package/Scripts/rnw-dependencies.ps1 +16 -3
  259. package/Shared/Shared.vcxitems +3 -2
  260. package/Shared/Shared.vcxitems.filters +2 -1
  261. package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
  262. package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
  263. package/codegen/NativePerformanceSpec.g.h +14 -0
  264. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +151 -127
  265. package/codegen/NativeSampleTurboModuleSpec.g.h +14 -8
  266. package/codegen/react/components/rnwcore/EventEmitters.cpp +48 -48
  267. package/codegen/rnwcoreJSI-generated.cpp +159 -129
  268. package/codegen/rnwcoreJSI.h +534 -408
  269. package/index.js +51 -331
  270. package/index.windows.js +70 -352
  271. package/interface.js +0 -4
  272. package/jest/resolver.js +31 -0
  273. package/jest/setup.js +6 -2
  274. package/package.json +29 -28
  275. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  276. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  277. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  278. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  279. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  280. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  281. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  282. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  283. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  284. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  285. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  286. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  287. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  288. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  289. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  290. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  291. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  292. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  293. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  294. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  295. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  296. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  297. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  298. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  299. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.windows.js +1 -1
  300. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  301. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  302. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  303. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  304. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +12 -1
  305. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  306. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  307. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  308. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  309. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  310. package/src/private/styles/composeStyles.js +12 -5
  311. package/src/private/types/HostComponent.js +1 -1
  312. package/src/private/types/HostInstance.js +67 -1
  313. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  314. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  315. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  316. package/src/private/webapis/performance/Performance.js +1 -3
  317. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  318. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  319. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  320. package/src/types/globals.d.ts +42 -0
  321. package/stubs/double-conversion/double-conversion.h +3 -1
  322. package/templates/cpp-app/template.config.js +2 -1
  323. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +4 -0
  324. package/templates/cpp-lib/example/metro.config.js +1 -1
  325. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +4 -0
  326. package/templates/old/generateWrapper.js +1 -1
  327. package/templates/old/uwp-cpp-app/template.config.js +1 -1
  328. package/types/index.d.ts +6 -3
  329. package/types/public/ReactNativeTypes.d.ts +2 -2
  330. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  331. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  332. package/Libraries/Blob/FileReader_new.js +0 -231
  333. package/Libraries/Blob/FileReader_old.js +0 -186
  334. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  335. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  336. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  337. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  338. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  339. package/Libraries/Events/CustomEvent.js +0 -32
  340. package/Libraries/Events/EventPolyfill.js +0 -239
  341. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  342. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  343. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  344. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  345. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  346. package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +0 -30
  347. package/Libraries/NewAppScreen/components/Header.js +0 -77
  348. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  349. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  350. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  351. package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +0 -31
  352. package/Libraries/NewAppScreen/components/logo.png +0 -0
  353. package/Libraries/NewAppScreen/index.js +0 -25
  354. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  355. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  356. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  357. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  358. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  359. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  360. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  361. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  362. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  363. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  364. package/jest/__tests__/setup-test.js +0 -18
  365. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  366. package/src/private/utilities/ensureInstance.js +0 -21
  367. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  368. package/types/modules/LaunchScreen.d.ts +0 -18
  369. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  370. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -18,14 +18,30 @@ CompositionTextRangeProvider::CompositionTextRangeProvider(
18
18
  }
19
19
 
20
20
  HRESULT __stdcall CompositionTextRangeProvider::Clone(ITextRangeProvider **pRetVal) {
21
- // no-op
22
- *pRetVal = nullptr;
21
+ if (pRetVal == nullptr)
22
+ return E_POINTER;
23
+
24
+ auto clone = winrt::make<winrt::Microsoft::ReactNative::implementation::CompositionTextRangeProvider>(
25
+ m_view.view().as<winrt::Microsoft::ReactNative::Composition::ComponentView>(), m_parentProvider.get());
26
+ *pRetVal = clone.detach();
23
27
  return S_OK;
24
28
  }
25
29
 
26
30
  HRESULT __stdcall CompositionTextRangeProvider::Compare(ITextRangeProvider *range, BOOL *pRetVal) {
27
- // no-op
28
- *pRetVal = false;
31
+ if (pRetVal == nullptr)
32
+ return E_POINTER;
33
+ if (range == nullptr) {
34
+ *pRetVal = FALSE;
35
+ return S_OK;
36
+ }
37
+
38
+ // Try to cast to our type , considering provider only supports a single range per view
39
+ auto other = dynamic_cast<CompositionTextRangeProvider *>(range);
40
+ if (other && other->m_view.view() == m_view.view()) {
41
+ *pRetVal = TRUE;
42
+ } else {
43
+ *pRetVal = FALSE;
44
+ }
29
45
  return S_OK;
30
46
  }
31
47
 
@@ -34,7 +50,10 @@ HRESULT __stdcall CompositionTextRangeProvider::CompareEndpoints(
34
50
  ITextRangeProvider *targetRange,
35
51
  TextPatternRangeEndpoint targetEndpoint,
36
52
  int *pRetVal) {
37
- // no-op
53
+ if (pRetVal == nullptr)
54
+ return E_POINTER;
55
+
56
+ // For a single-range provider, always equal:
38
57
  *pRetVal = 0;
39
58
  return S_OK;
40
59
  }
@@ -98,13 +117,13 @@ HRESULT __stdcall CompositionTextRangeProvider::GetAttributeValue(TEXTATTRIBUTEI
98
117
  textTransform = props->textAttributes.textTransform.value();
99
118
  }
100
119
  if (fontVariant == facebook::react::FontVariant::SmallCaps) {
101
- return CapStyle_SmallCap;
120
+ pRetVal->lVal = CapStyle_SmallCap;
102
121
  } else if (textTransform == facebook::react::TextTransform::Capitalize) {
103
- return CapStyle_Titling;
122
+ pRetVal->lVal = CapStyle_Titling;
104
123
  } else if (textTransform == facebook::react::TextTransform::Lowercase) {
105
- return CapStyle_None;
124
+ pRetVal->lVal = CapStyle_None;
106
125
  } else if (textTransform == facebook::react::TextTransform::Uppercase) {
107
- return CapStyle_AllCap;
126
+ pRetVal->lVal = CapStyle_AllCap;
108
127
  }
109
128
  } else if (attributeId == UIA_FontNameAttributeId) {
110
129
  pRetVal->vt = VT_BSTR;
@@ -282,6 +301,8 @@ HRESULT __stdcall CompositionTextRangeProvider::ScrollIntoView(BOOL alignToTop)
282
301
  return S_OK;
283
302
  }
284
303
 
304
+ // All the below methods should be implemented once the selection comes for paragraph and TextInput
305
+
285
306
  HRESULT __stdcall CompositionTextRangeProvider::AddToSelection() {
286
307
  // no-op
287
308
  return S_OK;
@@ -819,6 +819,42 @@ void ComponentView::updateAccessibilityProps(
819
819
  oldViewProps.accessibilityItemType,
820
820
  newViewProps.accessibilityItemType);
821
821
 
822
+ winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
823
+ EnsureUiaProvider(),
824
+ UIA_FullDescriptionPropertyId,
825
+ oldViewProps.accessibilityDescription,
826
+ newViewProps.accessibilityDescription);
827
+
828
+ winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
829
+ EnsureUiaProvider(),
830
+ UIA_ValueValuePropertyId,
831
+ oldViewProps.accessibilityValue.text,
832
+ newViewProps.accessibilityValue.text);
833
+
834
+ // Handle annotation properties with single call
835
+ winrt::Microsoft::ReactNative::implementation::UpdateUiaPropertiesForAnnotation(
836
+ EnsureUiaProvider(), oldViewProps.accessibilityAnnotation, newViewProps.accessibilityAnnotation);
837
+
838
+ // Handle expand/collapse state changes
839
+ if (oldViewProps.accessibilityState.has_value() != newViewProps.accessibilityState.has_value() ||
840
+ (oldViewProps.accessibilityState.has_value() && newViewProps.accessibilityState.has_value() &&
841
+ oldViewProps.accessibilityState->expanded != newViewProps.accessibilityState->expanded)) {
842
+ auto oldExpanded =
843
+ oldViewProps.accessibilityState.has_value() && oldViewProps.accessibilityState->expanded.has_value()
844
+ ? oldViewProps.accessibilityState->expanded.value()
845
+ : false;
846
+ auto newExpanded =
847
+ newViewProps.accessibilityState.has_value() && newViewProps.accessibilityState->expanded.has_value()
848
+ ? newViewProps.accessibilityState->expanded.value()
849
+ : false;
850
+
851
+ winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
852
+ EnsureUiaProvider(),
853
+ UIA_ExpandCollapseExpandCollapseStatePropertyId,
854
+ static_cast<int>(winrt::Microsoft::ReactNative::implementation::GetExpandCollapseState(oldExpanded)),
855
+ static_cast<int>(winrt::Microsoft::ReactNative::implementation::GetExpandCollapseState(newExpanded)));
856
+ }
857
+
822
858
  if ((oldViewProps.accessibilityState.has_value() && oldViewProps.accessibilityState->selected.has_value()) !=
823
859
  ((newViewProps.accessibilityState.has_value() && newViewProps.accessibilityState->selected.has_value()))) {
824
860
  auto compProvider =
@@ -63,8 +63,12 @@ void ParagraphComponentView::updateProps(
63
63
  updateTextAlignment(newViewProps.textAttributes.alignment);
64
64
  }
65
65
 
66
+ if (oldViewProps.paragraphAttributes.ellipsizeMode != newViewProps.paragraphAttributes.ellipsizeMode) {
67
+ m_textLayout = nullptr;
68
+ }
69
+
66
70
  if (oldViewProps.paragraphAttributes.adjustsFontSizeToFit != newViewProps.paragraphAttributes.adjustsFontSizeToFit) {
67
- m_requireRedraw = true;
71
+ m_textLayout = nullptr;
68
72
  }
69
73
 
70
74
  Super::updateProps(props, oldProps);
@@ -100,7 +104,7 @@ void ParagraphComponentView::FinalizeUpdates(
100
104
 
101
105
  facebook::react::SharedViewEventEmitter ParagraphComponentView::eventEmitterAtPoint(
102
106
  facebook::react::Point pt) noexcept {
103
- if (m_attributedStringBox.getValue().getFragments().size()) {
107
+ if (m_attributedStringBox.getValue().getFragments().size() && m_textLayout) {
104
108
  BOOL isTrailingHit = false;
105
109
  BOOL isInside = false;
106
110
  DWRITE_HIT_TEST_METRICS metrics;
@@ -123,35 +127,8 @@ facebook::react::SharedViewEventEmitter ParagraphComponentView::eventEmitterAtPo
123
127
 
124
128
  void ParagraphComponentView::updateTextAlignment(
125
129
  const std::optional<facebook::react::TextAlignment> &fbAlignment) noexcept {
130
+ // Reset text layout to force recreation with new alignment
126
131
  m_textLayout = nullptr;
127
- if (!m_textLayout)
128
- return;
129
-
130
- DWRITE_TEXT_ALIGNMENT alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
131
- if (fbAlignment) {
132
- switch (*fbAlignment) {
133
- case facebook::react::TextAlignment::Center:
134
- alignment = DWRITE_TEXT_ALIGNMENT_CENTER;
135
- break;
136
- case facebook::react::TextAlignment::Justified:
137
- alignment = DWRITE_TEXT_ALIGNMENT_JUSTIFIED;
138
- break;
139
- case facebook::react::TextAlignment::Left:
140
- alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
141
- break;
142
- case facebook::react::TextAlignment::Right:
143
- alignment = DWRITE_TEXT_ALIGNMENT_TRAILING;
144
- break;
145
- // TODO use LTR values
146
- case facebook::react::TextAlignment::Natural:
147
- alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
148
- break;
149
- default:
150
- assert(false);
151
- }
152
- }
153
- // TODO
154
- // m_textFormat->SetTextAlignment(alignment);
155
132
  }
156
133
 
157
134
  void ParagraphComponentView::OnRenderingDeviceLost() noexcept {
@@ -163,7 +140,6 @@ void ParagraphComponentView::updateVisualBrush() noexcept {
163
140
 
164
141
  // TODO
165
142
  // updateTextAlignment(paragraphProps.textAttributes.alignment);
166
-
167
143
  if (!m_textLayout) {
168
144
  facebook::react::LayoutConstraints constraints;
169
145
  constraints.maximumSize.width =
@@ -174,6 +150,35 @@ void ParagraphComponentView::updateVisualBrush() noexcept {
174
150
  facebook::react::WindowsTextLayoutManager::GetTextLayout(
175
151
  m_attributedStringBox, m_paragraphAttributes, constraints, m_textLayout);
176
152
 
153
+ // Apply text alignment after creating the text layout
154
+ if (m_textLayout) {
155
+ const auto &props = paragraphProps();
156
+ DWRITE_TEXT_ALIGNMENT alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
157
+ if (props.textAttributes.alignment) {
158
+ switch (*props.textAttributes.alignment) {
159
+ case facebook::react::TextAlignment::Center:
160
+ alignment = DWRITE_TEXT_ALIGNMENT_CENTER;
161
+ break;
162
+ case facebook::react::TextAlignment::Justified:
163
+ alignment = DWRITE_TEXT_ALIGNMENT_JUSTIFIED;
164
+ break;
165
+ case facebook::react::TextAlignment::Left:
166
+ alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
167
+ break;
168
+ case facebook::react::TextAlignment::Right:
169
+ alignment = DWRITE_TEXT_ALIGNMENT_TRAILING;
170
+ break;
171
+ case facebook::react::TextAlignment::Natural:
172
+ alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
173
+ break;
174
+ default:
175
+ alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
176
+ break;
177
+ }
178
+ }
179
+ winrt::check_hresult(m_textLayout->SetTextAlignment(alignment));
180
+ }
181
+
177
182
  requireNewBrush = true;
178
183
  }
179
184
 
@@ -275,9 +280,7 @@ void ParagraphComponentView::DrawText() noexcept {
275
280
  d2dDeviceContext->Clear(
276
281
  viewProps()->backgroundColor ? theme()->D2DColor(*viewProps()->backgroundColor)
277
282
  : D2D1::ColorF(D2D1::ColorF::Black, 0.0f));
278
-
279
283
  const auto &props = paragraphProps();
280
-
281
284
  RenderText(
282
285
  *d2dDeviceContext,
283
286
  *m_textLayout,
@@ -40,6 +40,14 @@
40
40
 
41
41
  namespace winrt::Microsoft::ReactNative::implementation {
42
42
 
43
+ ReactPropertyId<winrt::Microsoft::ReactNative::ReactNonAbiValue<
44
+ winrt::weak_ref<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>>>
45
+ ReactNativeIsland::LastFocusedReactNativeIslandProperty() noexcept {
46
+ static const ReactPropertyId<winrt::Microsoft::ReactNative::ReactNonAbiValue<
47
+ winrt::weak_ref<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>>>
48
+ prop{L"ReactNative.Composition", L"ReactNativeIsland"};
49
+ return prop;
50
+ }
43
51
  constexpr float loadingActivitySize = 12.0f;
44
52
  constexpr float loadingActivityHorizontalOffset = 16.0f;
45
53
  constexpr float loadingBarHeight = 36.0f;
@@ -861,6 +869,20 @@ winrt::Microsoft::UI::Content::ContentIsland ReactNativeIsland::Island() {
861
869
  }
862
870
  }
863
871
  });
872
+ focusController.GotFocus(
873
+ [weakThis = get_weak()](const auto &sender, const winrt::Microsoft::UI::Input::FocusChangedEventArgs &args) {
874
+ if (auto pThis = weakThis.get()) {
875
+ // Set the island to React context so it can be accessed by native modules
876
+ if (pThis->m_context && pThis->m_island) {
877
+ auto properties = pThis->m_context.Properties();
878
+ properties.Set(
879
+ ReactNativeIsland::LastFocusedReactNativeIslandProperty(),
880
+ winrt::Microsoft::ReactNative::ReactNonAbiValue<
881
+ winrt::weak_ref<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>>{
882
+ std::in_place, weakThis});
883
+ }
884
+ }
885
+ });
864
886
 
865
887
  // ContentIsland does not support weak_ref, so we cannot use auto_revoke for these events
866
888
  m_islandAutomationProviderRequestedToken = m_island.AutomationProviderRequested(
@@ -49,6 +49,9 @@ struct ReactNativeIsland
49
49
  ~ReactNativeIsland() noexcept;
50
50
 
51
51
  ReactNativeIsland(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
52
+ static ReactPropertyId<winrt::Microsoft::ReactNative::ReactNonAbiValue<
53
+ winrt::weak_ref<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>>>
54
+ LastFocusedReactNativeIslandProperty() noexcept;
52
55
  ReactNativeIsland(const winrt::Microsoft::ReactNative::Composition::PortalComponentView &portal) noexcept;
53
56
 
54
57
  static winrt::Microsoft::ReactNative::ReactNativeIsland CreatePortal(
@@ -15,6 +15,7 @@
15
15
  #pragma warning(pop)
16
16
 
17
17
  #include <windows.ui.composition.interop.h>
18
+ #include <winrt/Windows.UI.ViewManagement.Core.h>
18
19
 
19
20
  #include <AutoDraw.h>
20
21
  #include <Fabric/DWriteHelpers.h>
@@ -804,6 +805,15 @@ void ScrollViewComponentView::updateProps(
804
805
  if (oldViewProps.zoomScale != newViewProps.zoomScale) {
805
806
  m_scrollVisual.Scale({newViewProps.zoomScale, newViewProps.zoomScale, newViewProps.zoomScale});
806
807
  }
808
+
809
+ if (oldViewProps.snapToStart != newViewProps.snapToStart || oldViewProps.snapToEnd != newViewProps.snapToEnd ||
810
+ oldViewProps.snapToOffsets != newViewProps.snapToOffsets) {
811
+ const auto snapToOffsets = winrt::single_threaded_vector<float>();
812
+ for (const auto &offset : newViewProps.snapToOffsets) {
813
+ snapToOffsets.Append(static_cast<float>(offset));
814
+ }
815
+ m_scrollVisual.SetSnapPoints(newViewProps.snapToStart, newViewProps.snapToEnd, snapToOffsets.GetView());
816
+ }
807
817
  }
808
818
 
809
819
  void ScrollViewComponentView::updateState(
@@ -1276,6 +1286,16 @@ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual ScrollViewComp
1276
1286
  auto now = std::chrono::steady_clock::now();
1277
1287
  auto elapsed = std::chrono::duration_cast<std::chrono::duration<double>>(now - m_lastScrollEventTime).count();
1278
1288
 
1289
+ // Dismiss keyboard if mode is "on-drag"
1290
+ auto keyboardDismissMode =
1291
+ std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->keyboardDismissMode;
1292
+ if (keyboardDismissMode == facebook::react::ScrollViewKeyboardDismissMode::OnDrag) {
1293
+ auto coreInputView = winrt::Windows::UI::ViewManagement::Core::CoreInputView::GetForCurrentView();
1294
+ if (coreInputView) {
1295
+ coreInputView.TryHide();
1296
+ }
1297
+ }
1298
+
1279
1299
  if (m_allowNextScrollNoMatterWhat ||
1280
1300
  (m_scrollEventThrottle < std::max(std::chrono::duration<double>(0.017).count(), elapsed))) {
1281
1301
  updateStateWithContentOffset();
@@ -1319,6 +1339,32 @@ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual ScrollViewComp
1319
1339
  }
1320
1340
  });
1321
1341
 
1342
+ m_scrollMomentumBeginRevoker = m_scrollVisual.ScrollMomentumBegin(
1343
+ winrt::auto_revoke,
1344
+ [this](
1345
+ winrt::IInspectable const & /*sender*/,
1346
+ winrt::Microsoft::ReactNative::Composition::Experimental::IScrollPositionChangedArgs const &args) {
1347
+ auto eventEmitter = GetEventEmitter();
1348
+ if (eventEmitter) {
1349
+ auto scrollMetrics = getScrollMetrics(eventEmitter, args);
1350
+ std::static_pointer_cast<facebook::react::ScrollViewEventEmitter const>(eventEmitter)
1351
+ ->onMomentumScrollBegin(scrollMetrics);
1352
+ }
1353
+ });
1354
+
1355
+ m_scrollMomentumEndRevoker = m_scrollVisual.ScrollMomentumEnd(
1356
+ winrt::auto_revoke,
1357
+ [this](
1358
+ winrt::IInspectable const & /*sender*/,
1359
+ winrt::Microsoft::ReactNative::Composition::Experimental::IScrollPositionChangedArgs const &args) {
1360
+ auto eventEmitter = GetEventEmitter();
1361
+ if (eventEmitter) {
1362
+ auto scrollMetrics = getScrollMetrics(eventEmitter, args);
1363
+ std::static_pointer_cast<facebook::react::ScrollViewEventEmitter const>(eventEmitter)
1364
+ ->onMomentumScrollEnd(scrollMetrics);
1365
+ }
1366
+ });
1367
+
1322
1368
  return visual;
1323
1369
  }
1324
1370
 
@@ -143,9 +143,12 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
143
143
  m_scrollPositionChangedRevoker{};
144
144
  winrt::Microsoft::ReactNative::Composition::Experimental::IScrollVisual::ScrollBeginDrag_revoker
145
145
  m_scrollBeginDragRevoker{};
146
-
147
146
  winrt::Microsoft::ReactNative::Composition::Experimental::IScrollVisual::ScrollEndDrag_revoker
148
147
  m_scrollEndDragRevoker{};
148
+ winrt::Microsoft::ReactNative::Composition::Experimental::IScrollVisual::ScrollMomentumBegin_revoker
149
+ m_scrollMomentumBeginRevoker{};
150
+ winrt::Microsoft::ReactNative::Composition::Experimental::IScrollVisual::ScrollMomentumEnd_revoker
151
+ m_scrollMomentumEndRevoker{};
149
152
 
150
153
  float m_zoomFactor{1.0f};
151
154
  bool m_isScrollingFromInertia = false;
@@ -9,6 +9,7 @@
9
9
  #include <Fabric/AbiViewProps.h>
10
10
  #include "CompositionDynamicAutomationProvider.h"
11
11
  #include "RootComponentView.h"
12
+ #include "UiaHelpers.h"
12
13
 
13
14
  namespace winrt::Microsoft::ReactNative::Composition::implementation {
14
15
 
@@ -80,6 +81,16 @@ void SwitchComponentView::updateProps(
80
81
  m_visualUpdateRequired = true;
81
82
  }
82
83
 
84
+ if (oldViewProps.value != newViewProps.value) {
85
+ if (UiaClientsAreListening()) {
86
+ winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
87
+ EnsureUiaProvider(),
88
+ UIA_ToggleToggleStatePropertyId,
89
+ oldViewProps.value ? ToggleState_On : ToggleState_Off,
90
+ newViewProps.value ? ToggleState_On : ToggleState_Off);
91
+ }
92
+ }
93
+
83
94
  Super::updateProps(props, oldProps);
84
95
  }
85
96
 
@@ -7,6 +7,7 @@
7
7
  #include "TextDrawing.h"
8
8
 
9
9
  #include <AutoDraw.h>
10
+ #include <Fabric/platform/react/renderer/graphics/PlatformColorUtils.h>
10
11
  #include <Utils/ValueUtils.h>
11
12
  #include <unicode.h>
12
13
  #include <windows.ui.composition.interop.h>
@@ -35,11 +36,27 @@ void RenderText(
35
36
  // to cache and reuse a brush across all text elements instead, taking care to recreate
36
37
  // it in the event of device removed.
37
38
  winrt::com_ptr<ID2D1SolidColorBrush> brush;
39
+
40
+ // Check if we should use theme-aware default color instead of hardcoded black
41
+ bool useDefaultColor = false;
38
42
  if (textAttributes.foregroundColor) {
43
+ auto &color = *textAttributes.foregroundColor;
44
+ // If it's black (or very dark) without explicit PlatformColor, use theme-aware color
45
+ if (color.m_platformColor.empty() && color.m_color.R <= 10 && color.m_color.G <= 10 && color.m_color.B <= 10) {
46
+ useDefaultColor = true;
47
+ }
48
+ } else {
49
+ useDefaultColor = true;
50
+ }
51
+
52
+ if (useDefaultColor) {
53
+ // Use theme-aware TextFillColorPrimary which adapts to light/dark mode
54
+ auto d2dColor = theme.D2DPlatformColor("TextFillColorPrimary");
55
+ winrt::check_hresult(deviceContext.CreateSolidColorBrush(d2dColor, brush.put()));
56
+ } else {
57
+ // User set explicit color or PlatformColor - use it
39
58
  auto color = theme.D2DColor(*textAttributes.foregroundColor);
40
59
  winrt::check_hresult(deviceContext.CreateSolidColorBrush(color, brush.put()));
41
- } else {
42
- winrt::check_hresult(deviceContext.CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black, 1.0f), brush.put()));
43
60
  }
44
61
 
45
62
  if (textAttributes.textDecorationLineType) {
@@ -72,12 +89,27 @@ void RenderText(
72
89
  (fragment.textAttributes.foregroundColor != textAttributes.foregroundColor) ||
73
90
  !isnan(fragment.textAttributes.opacity)) {
74
91
  winrt::com_ptr<ID2D1SolidColorBrush> fragmentBrush;
92
+
93
+ // Check if we should use theme-aware default color for this fragment
94
+ bool useFragmentDefaultColor = false;
75
95
  if (fragment.textAttributes.foregroundColor) {
96
+ auto &color = *fragment.textAttributes.foregroundColor;
97
+ // If it's black (or very dark) without explicit PlatformColor, use theme-aware color
98
+ if (color.m_platformColor.empty() && color.m_color.R <= 10 && color.m_color.G <= 10 && color.m_color.B <= 10) {
99
+ useFragmentDefaultColor = true;
100
+ }
101
+ } else {
102
+ useFragmentDefaultColor = true;
103
+ }
104
+
105
+ if (useFragmentDefaultColor) {
106
+ // Use theme-aware TextFillColorPrimary which adapts to light/dark mode
107
+ auto d2dColor = theme.D2DPlatformColor("TextFillColorPrimary");
108
+ winrt::check_hresult(deviceContext.CreateSolidColorBrush(d2dColor, fragmentBrush.put()));
109
+ } else {
110
+ // User set explicit color or PlatformColor - use it
76
111
  auto color = theme.D2DColor(*fragment.textAttributes.foregroundColor);
77
112
  winrt::check_hresult(deviceContext.CreateSolidColorBrush(color, fragmentBrush.put()));
78
- } else {
79
- winrt::check_hresult(
80
- deviceContext.CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black, 1.0f), fragmentBrush.put()));
81
113
  }
82
114
 
83
115
  if (fragment.textAttributes.textDecorationLineType) {