react-native-windows 0.80.1 → 0.81.0-preview.4

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 (679) hide show
  1. package/.flowconfig +10 -5
  2. package/Directory.Build.props +1 -1
  3. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  4. package/Libraries/Alert/Alert.js +3 -3
  5. package/Libraries/Alert/Alert.windows.js +5 -2
  6. package/Libraries/Alert/NativeAlertManager.js +1 -0
  7. package/Libraries/Alert/RCTAlertManager.android.js +19 -13
  8. package/Libraries/Alert/RCTAlertManager.ios.js +10 -12
  9. package/Libraries/Alert/RCTAlertManager.js +1 -3
  10. package/Libraries/Alert/RCTAlertManager.js.flow +5 -7
  11. package/Libraries/Animated/Animated.js +0 -1
  12. package/Libraries/Animated/Animated.js.flow +0 -1
  13. package/Libraries/Animated/AnimatedEvent.js +4 -3
  14. package/Libraries/Animated/AnimatedExports.js +0 -1
  15. package/Libraries/Animated/AnimatedExports.js.flow +5 -1
  16. package/Libraries/Animated/AnimatedImplementation.js +44 -44
  17. package/Libraries/Animated/AnimatedMock.js +2 -2
  18. package/Libraries/Animated/Easing.js +1 -1
  19. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  20. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  21. package/Libraries/Animated/SpringConfig.js +1 -1
  22. package/Libraries/Animated/animations/Animation.js +10 -2
  23. package/Libraries/Animated/components/AnimatedScrollView.js +58 -56
  24. package/Libraries/Animated/components/AnimatedText.js +2 -5
  25. package/Libraries/Animated/components/AnimatedView.js +2 -1
  26. package/Libraries/Animated/createAnimatedComponent.js +39 -37
  27. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  28. package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
  29. package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
  30. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  31. package/Libraries/AppState/NativeAppState.js +1 -0
  32. package/Libraries/AppTheme/AppTheme.js +1 -1
  33. package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
  34. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  35. package/Libraries/Blob/BlobManager.js +4 -0
  36. package/Libraries/Blob/NativeBlobModule.js +1 -0
  37. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  38. package/Libraries/Blob/URL.js +1 -1
  39. package/Libraries/Blob/URLSearchParams.js +5 -1
  40. package/Libraries/Blob/URLSearchParams.js.flow +2 -1
  41. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
  42. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
  43. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
  44. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
  45. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
  46. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +1 -1
  47. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -19
  48. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
  49. package/Libraries/Components/Button.js +10 -7
  50. package/Libraries/Components/Button.windows.js +4 -4
  51. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  52. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
  53. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -3
  54. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
  55. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
  56. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
  57. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
  58. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
  59. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +1 -1
  60. package/Libraries/Components/Glyph/GlyphNativeComponent.js +1 -1
  61. package/Libraries/Components/Keyboard/Keyboard.js +1 -1
  62. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
  63. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
  64. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  65. package/Libraries/Components/Popup/PopupNativeComponent.js +1 -1
  66. package/Libraries/Components/Pressable/Pressable.js +17 -8
  67. package/Libraries/Components/Pressable/Pressable.windows.js +17 -14
  68. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  69. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  70. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -3
  71. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -3
  72. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -1
  73. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  74. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
  75. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -3
  76. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
  77. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
  78. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -3
  79. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  80. package/Libraries/Components/ScrollView/ScrollView.d.ts +33 -6
  81. package/Libraries/Components/ScrollView/ScrollView.js +25 -15
  82. package/Libraries/Components/ScrollView/ScrollView.windows.js +25 -14
  83. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  84. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  85. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  86. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  87. package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
  88. package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
  89. package/Libraries/Components/Sound/SoundManager.js +1 -1
  90. package/Libraries/Components/StaticRenderer.js +1 -1
  91. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
  92. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
  93. package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
  94. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  95. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -3
  96. package/Libraries/Components/Switch/Switch.js +10 -3
  97. package/Libraries/Components/Switch/Switch.windows.js +10 -3
  98. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
  99. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -24
  100. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -3
  101. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
  102. package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
  103. package/Libraries/Components/TextInput/TextInput.flow.js +13 -15
  104. package/Libraries/Components/TextInput/TextInput.flow.windows.js +12 -15
  105. package/Libraries/Components/TextInput/TextInput.js +42 -39
  106. package/Libraries/Components/TextInput/TextInput.windows.js +69 -38
  107. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  108. package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
  109. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -17
  110. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
  111. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  112. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
  113. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  114. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
  115. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
  116. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  117. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  118. package/Libraries/Components/Touchable/Position.js +1 -1
  119. package/Libraries/Components/Touchable/Touchable.js +17 -3
  120. package/Libraries/Components/Touchable/Touchable.windows.js +17 -3
  121. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  122. package/Libraries/Components/Touchable/TouchableBounce.windows.js +9 -3
  123. package/Libraries/Components/Touchable/TouchableHighlight.js +14 -5
  124. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +14 -5
  125. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +5 -3
  126. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +5 -3
  127. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
  128. package/Libraries/Components/Touchable/TouchableOpacity.js +10 -5
  129. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +10 -5
  130. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
  131. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +3 -3
  132. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
  133. package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
  134. package/Libraries/Components/View/View.js +114 -29
  135. package/Libraries/Components/View/View.windows.js +261 -217
  136. package/Libraries/Components/View/ViewAccessibility.js +1 -8
  137. package/Libraries/Components/View/ViewAccessibility.windows.js +1 -8
  138. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -1
  139. package/Libraries/Components/View/ViewPropTypes.js +9 -1
  140. package/Libraries/Components/View/ViewPropTypes.windows.js +9 -1
  141. package/Libraries/Core/Devtools/getDevServer.js +1 -1
  142. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  143. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +49 -7
  144. package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
  145. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
  146. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  147. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  148. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  149. package/Libraries/Core/ExceptionsManager.js +27 -16
  150. package/Libraries/Core/InitializeCore.js +2 -23
  151. package/Libraries/Core/NativeExceptionsManager.js +1 -0
  152. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  153. package/Libraries/Core/ReactNativeVersion.js +3 -2
  154. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  155. package/Libraries/Core/Timers/JSTimers.js +1 -1
  156. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  157. package/Libraries/Core/Timers/immediateShim.js +1 -1
  158. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  159. package/Libraries/Core/checkNativeVersion.js +1 -0
  160. package/Libraries/Core/setUpDeveloperTools.js +13 -11
  161. package/Libraries/Core/setUpReactDevTools.js +21 -4
  162. package/Libraries/Debugging/DebuggingOverlay.js +12 -14
  163. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -1
  164. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  165. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  166. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  167. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  168. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  169. package/Libraries/Image/AssetRegistry.js +4 -10
  170. package/Libraries/Image/Image.android.js +113 -107
  171. package/Libraries/Image/Image.ios.js +10 -2
  172. package/Libraries/Image/Image.windows.js +30 -20
  173. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  174. package/Libraries/Image/ImageInjection.js +1 -1
  175. package/Libraries/Image/ImageSource.d.ts +5 -0
  176. package/Libraries/Image/ImageViewNativeComponent.js +3 -3
  177. package/Libraries/Image/NativeImageEditor.js +1 -0
  178. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  179. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  180. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  181. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  182. package/Libraries/Image/RelativeImageStub.js +2 -1
  183. package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
  184. package/Libraries/Image/resolveAssetSource.js +1 -1
  185. package/Libraries/Image/resolveAssetSource.windows.js +1 -1
  186. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  187. package/Libraries/Interaction/InteractionManager.js +64 -54
  188. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  189. package/Libraries/Interaction/TaskQueue.js +8 -9
  190. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  191. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
  192. package/Libraries/Linking/Linking.js +1 -1
  193. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  194. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  195. package/Libraries/Lists/FlatList.d.ts +9 -5
  196. package/Libraries/Lists/FlatList.js +6 -7
  197. package/Libraries/Lists/SectionList.js +4 -4
  198. package/Libraries/Lists/SectionListModern.js +9 -3
  199. package/Libraries/Lists/VirtualizedList.js +3 -2
  200. package/Libraries/LogBox/Data/LogBoxData.js +7 -4
  201. package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
  202. package/Libraries/LogBox/LogBox.js +72 -99
  203. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  204. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  205. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +2 -1
  206. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  207. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  208. package/Libraries/Modal/Modal.d.ts +8 -2
  209. package/Libraries/Modal/Modal.js +24 -3
  210. package/Libraries/Modal/Modal.windows.js +24 -3
  211. package/Libraries/Modal/NativeModalManager.js +1 -0
  212. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -1
  213. package/Libraries/NativeComponent/BaseViewConfig.android.js +21 -18
  214. package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -17
  215. package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
  216. package/Libraries/NativeComponent/BaseViewConfig.windows.js +9 -18
  217. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
  218. package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
  219. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  220. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  221. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  222. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  223. package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +1 -0
  224. package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
  225. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  226. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  227. package/Libraries/Network/FormData.js +1 -1
  228. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  229. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  230. package/Libraries/Network/RCTNetworking.android.js +2 -2
  231. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  232. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  233. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  234. package/Libraries/Network/XMLHttpRequest.js +3 -3
  235. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  236. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -3
  237. package/Libraries/Pressability/Pressability.js +1 -1
  238. package/Libraries/Pressability/Pressability.windows.js +1 -1
  239. package/Libraries/Promise.js +1 -1
  240. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  241. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
  242. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  243. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  244. package/Libraries/ReactNative/AppContainer.js +1 -1
  245. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  246. package/Libraries/ReactNative/AppRegistryImpl.js +2 -13
  247. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  248. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  249. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  250. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  251. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
  252. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  253. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
  254. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +81 -62
  255. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
  256. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  257. package/Libraries/ReactNative/RendererProxy.js +1 -1
  258. package/Libraries/ReactNative/RootTag.js +2 -2
  259. package/Libraries/ReactNative/renderApplication.js +1 -1
  260. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  261. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
  262. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +3 -3
  263. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
  264. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
  265. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
  266. package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -36
  267. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +261 -0
  268. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  269. package/Libraries/Settings/Settings.ios.js +1 -1
  270. package/Libraries/Settings/Settings.js +1 -1
  271. package/Libraries/Settings/SettingsFallback.js +1 -1
  272. package/Libraries/Share/NativeShareModule.js +1 -0
  273. package/Libraries/Share/Share.js +1 -1
  274. package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
  275. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  276. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  277. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
  278. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  279. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
  280. package/Libraries/StyleSheet/PointPropType.js +1 -1
  281. package/Libraries/StyleSheet/Rect.js +1 -1
  282. package/Libraries/StyleSheet/StyleSheet.js +1 -0
  283. package/Libraries/StyleSheet/StyleSheetTypes.js +0 -1
  284. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  285. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  286. package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
  287. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  288. package/Libraries/StyleSheet/processColor.js +1 -1
  289. package/Libraries/StyleSheet/processColorArray.js +1 -1
  290. package/Libraries/StyleSheet/processFilter.js +1 -2
  291. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  292. package/Libraries/StyleSheet/processTransform.js +1 -1
  293. package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
  294. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  295. package/Libraries/Text/Text.d.ts +1 -2
  296. package/Libraries/Text/Text.js +255 -246
  297. package/Libraries/Text/Text.windows.js +282 -301
  298. package/Libraries/Text/TextAncestor.js +3 -9
  299. package/Libraries/Text/TextAncestorContext.js +23 -0
  300. package/Libraries/Text/TextNativeComponent.js +4 -0
  301. package/Libraries/Text/TextProps.js +2 -5
  302. package/Libraries/Text/TextProps.windows.js +2 -6
  303. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  304. package/Libraries/Types/CodegenTypes.js +1 -1
  305. package/Libraries/Types/CodegenTypesNamespace.js +2 -1
  306. package/Libraries/Types/CoreEventTypes.d.ts +4 -0
  307. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  308. package/Libraries/Utilities/Appearance.js +1 -1
  309. package/Libraries/Utilities/BackHandler.js.flow +1 -1
  310. package/Libraries/Utilities/DevLoadingView.js +1 -1
  311. package/Libraries/Utilities/DeviceInfo.js +1 -1
  312. package/Libraries/Utilities/Dimensions.js +1 -1
  313. package/Libraries/Utilities/HMRClient.js +13 -3
  314. package/Libraries/Utilities/HMRClientProdShim.js +1 -1
  315. package/Libraries/Utilities/NativeAppearance.js +1 -0
  316. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  317. package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
  318. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  319. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  320. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  321. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  322. package/Libraries/Utilities/PixelRatio.js +1 -1
  323. package/Libraries/Utilities/Platform.android.js +2 -5
  324. package/Libraries/Utilities/Platform.ios.js +2 -5
  325. package/Libraries/Utilities/Platform.js +1 -1
  326. package/Libraries/Utilities/Platform.js.flow +2 -2
  327. package/Libraries/Utilities/Platform.windows.js +2 -5
  328. package/Libraries/Utilities/PlatformTypes.js +2 -2
  329. package/Libraries/Utilities/RCTLog.js +1 -1
  330. package/Libraries/Utilities/SceneTracker.js +1 -1
  331. package/Libraries/Utilities/binaryToBase64.js +1 -1
  332. package/Libraries/Utilities/codegenNativeCommands.js +5 -3
  333. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  334. package/Libraries/Utilities/createPerformanceLogger.js +27 -20
  335. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
  336. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  337. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  338. package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
  339. package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
  340. package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
  341. package/Libraries/Utilities/logError.js +1 -1
  342. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  343. package/Libraries/Utilities/stringifySafe.js +1 -1
  344. package/Libraries/Utilities/stringifyViewConfig.js +1 -1
  345. package/Libraries/Utilities/useColorScheme.js +1 -1
  346. package/Libraries/Utilities/useWindowDimensions.js +1 -1
  347. package/Libraries/Utilities/warnOnce.js +1 -1
  348. package/Libraries/Vibration/NativeVibration.js +1 -0
  349. package/Libraries/Vibration/Vibration.js +1 -2
  350. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  351. package/Libraries/WebSocket/WebSocket.js +1 -1
  352. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  353. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  354. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  355. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  356. package/Microsoft.ReactNative/CompositionSwitcher.idl +163 -162
  357. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +3 -3
  358. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +3 -3
  359. package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +2 -1
  360. package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +2 -2
  361. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +3 -3
  362. package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +2 -1
  363. package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +1 -1
  364. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +104 -4
  365. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +18 -7
  366. package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.cpp +169 -0
  367. package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.h +42 -0
  368. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
  369. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +41 -33
  370. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +68 -1
  371. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +9 -0
  372. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +19 -0
  373. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +3 -3
  374. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +108 -24
  375. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +1 -0
  376. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +21 -17
  377. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -4
  378. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +19 -0
  379. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +76 -0
  380. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -1
  381. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  382. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +6 -0
  383. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +62 -39
  384. package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.cpp +75 -24
  385. package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.h +4 -25
  386. package/Microsoft.ReactNative/JsiApi.cpp +1 -1
  387. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -0
  388. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +3 -0
  389. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +0 -2
  390. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -1
  391. package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -3
  392. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +27 -11
  393. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +19 -2
  394. package/Microsoft.ReactNative/QuirkSettings.cpp +16 -0
  395. package/Microsoft.ReactNative/QuirkSettings.h +3 -0
  396. package/Microsoft.ReactNative/QuirkSettings.idl +5 -0
  397. package/Microsoft.ReactNative/ReactHost/DebuggerNotifications.h +54 -0
  398. package/Microsoft.ReactNative/ReactHost/React.h +11 -4
  399. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +199 -29
  400. package/Microsoft.ReactNative/ReactHost/ReactHost.h +22 -4
  401. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +68 -52
  402. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  403. package/Microsoft.ReactNative/ReactRootView.cpp +108 -0
  404. package/Microsoft.ReactNative/ReactRootView.h +6 -0
  405. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +1 -0
  406. package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -1
  407. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +36 -8
  408. package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +6 -2
  409. package/Microsoft.ReactNative/Views/ViewManager.h +0 -1
  410. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +9 -1
  411. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +41 -0
  412. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +16 -0
  413. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +125 -0
  414. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +167 -1
  415. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
  416. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +110 -38
  417. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +5 -5
  418. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +0 -2
  419. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.h +0 -19
  420. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Base.h +45 -34
  421. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +1 -1
  422. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +1 -0
  423. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +36 -33
  424. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Number.h +10 -10
  425. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +14 -8
  426. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +44 -31
  427. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +13 -14
  428. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +19 -4
  429. package/Microsoft.ReactNative.Cxx/node-api/node_api.h +270 -0
  430. package/Microsoft.ReactNative.Cxx/node-api/node_api_types.h +52 -0
  431. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +13 -4
  432. package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +10 -0
  433. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  434. package/PropertySheets/JSEngine.props +1 -1
  435. package/PropertySheets/React.Cpp.props +6 -4
  436. package/README.md +1 -1
  437. package/ReactCommon/ReactCommon.vcxproj +29 -21
  438. package/ReactCommon/ReactCommon.vcxproj.filters +36 -13
  439. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +5 -0
  440. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +6 -2
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +111 -7
  442. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +57 -4
  443. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +17 -1
  444. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/network/HttpUtils.cpp +175 -0
  445. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +1 -0
  446. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +69 -56
  447. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +35 -18
  448. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +445 -0
  449. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +92 -0
  450. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +35 -0
  451. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +37 -1
  452. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +250 -80
  453. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp +528 -0
  454. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +1 -2
  455. package/ReactCommon/TEMP_UntilReactCommonUpdate/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +9 -12
  456. package/ReactCommon/cgmanifest.json +1 -1
  457. package/Scripts/Analyze-Crash.ps1 +87 -3
  458. package/Scripts/OfficeReact.Win32.nuspec +0 -1
  459. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -0
  460. package/Scripts/Tfs/Start-TestServers.ps1 +2 -1
  461. package/Scripts/creaternwapp.cmd +10 -6
  462. package/Scripts/rnw-dependencies.ps1 +33 -4
  463. package/Shared/CreateModules.h +0 -35
  464. package/Shared/DevServerHelper.h +13 -3
  465. package/Shared/DevSettings.h +6 -5
  466. package/Shared/DevSupportManager.cpp +79 -20
  467. package/Shared/DevSupportManager.h +7 -19
  468. package/Shared/Hermes/HermesRuntimeAgentDelegate.cpp +99 -0
  469. package/Shared/Hermes/HermesRuntimeAgentDelegate.h +81 -0
  470. package/Shared/Hermes/HermesRuntimeTargetDelegate.cpp +274 -0
  471. package/Shared/Hermes/HermesRuntimeTargetDelegate.h +77 -0
  472. package/Shared/HermesRuntimeHolder.cpp +29 -111
  473. package/Shared/HermesRuntimeHolder.h +214 -32
  474. package/Shared/IDevSupportManager.h +5 -2
  475. package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.cpp +108 -0
  476. package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.h +19 -0
  477. package/Shared/Inspector/ReactInspectorThread.h +18 -0
  478. package/Shared/JSI/RuntimeHolder.h +5 -2
  479. package/Shared/Modules/BlobModule.cpp +0 -90
  480. package/Shared/Modules/BlobModule.h +0 -40
  481. package/Shared/Modules/FileReaderModule.cpp +0 -104
  482. package/Shared/Modules/FileReaderModule.h +0 -38
  483. package/Shared/Modules/HttpModule.cpp +0 -172
  484. package/Shared/Modules/HttpModule.h +0 -47
  485. package/Shared/Modules/WebSocketModule.cpp +0 -287
  486. package/Shared/Modules/WebSocketModule.h +1 -94
  487. package/Shared/OInstance.cpp +45 -139
  488. package/Shared/OInstance.h +0 -1
  489. package/Shared/Shared.vcxitems +33 -32
  490. package/Shared/Shared.vcxitems.filters +38 -51
  491. package/Shared/TurboModuleManager.cpp +0 -1
  492. package/codegen/NativeDOMSpec.g.h +6 -0
  493. package/codegen/NativeDeviceInfoSpec.g.h +2 -0
  494. package/codegen/NativeIntersectionObserverSpec.g.h +19 -5
  495. package/codegen/NativeMutationObserverSpec.g.h +4 -4
  496. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +159 -93
  497. package/codegen/react/components/rnwcore/EventEmitters.cpp +25 -0
  498. package/codegen/react/components/rnwcore/EventEmitters.h +25 -0
  499. package/codegen/react/components/rnwcore/ModalHostView.g.h +4 -0
  500. package/codegen/react/components/rnwcore/Props.cpp +535 -24
  501. package/codegen/react/components/rnwcore/Props.h +138 -0
  502. package/codegen/react/components/rnwcore/States.h +9 -78
  503. package/codegen/react/components/rnwcore/VirtualView.g.h +226 -0
  504. package/codegen/rnwcoreJSI-generated.cpp +101 -31
  505. package/codegen/rnwcoreJSI.h +169 -88
  506. package/include/Shared/II18nModule.h +0 -1
  507. package/index.js +22 -2
  508. package/index.windows.js +131 -221
  509. package/interface.js +1 -1
  510. package/jest/MockNativeMethods.js +9 -3
  511. package/jest/RefreshControlMock.js +32 -0
  512. package/jest/assetFileTransformer.js +1 -0
  513. package/jest/local-setup.js +4 -3
  514. package/jest/mock.js +39 -0
  515. package/jest/mockComponent.js +47 -17
  516. package/jest/mockNativeComponent.js +26 -15
  517. package/jest/mocks/AccessibilityInfo.js +62 -0
  518. package/jest/mocks/ActivityIndicator.js +23 -0
  519. package/jest/mocks/AppState.js +19 -0
  520. package/jest/mocks/Clipboard.js +16 -0
  521. package/jest/mocks/Image.js +23 -0
  522. package/jest/mocks/InitializeCore.js +9 -0
  523. package/jest/mocks/Linking.js +28 -0
  524. package/jest/mocks/Modal.js +33 -0
  525. package/jest/mocks/NativeComponentRegistry.js +30 -0
  526. package/jest/mocks/NativeModules.js +239 -0
  527. package/jest/mocks/RefreshControl.js +31 -0
  528. package/jest/mocks/RendererProxy.js +45 -0
  529. package/jest/mocks/ScrollView.js +58 -0
  530. package/jest/mocks/Text.js +27 -0
  531. package/jest/mocks/TextInput.js +32 -0
  532. package/jest/mocks/UIManager.js +60 -0
  533. package/jest/mocks/Vibration.js +16 -0
  534. package/jest/mocks/View.js +27 -0
  535. package/jest/mocks/ViewNativeComponent.js +23 -0
  536. package/jest/mocks/requireNativeComponent.js +22 -0
  537. package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
  538. package/jest/react-native-env.js +1 -0
  539. package/jest/renderer.js +1 -2
  540. package/jest/resolver.js +1 -0
  541. package/jest/setup.js +64 -449
  542. package/package.json +24 -24
  543. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  544. package/src/private/animated/createAnimatedPropsHook.js +14 -4
  545. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -3
  546. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  547. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  548. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  549. package/src/private/components/virtualview/VirtualView.js +145 -0
  550. package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
  551. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
  552. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
  553. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
  554. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  555. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
  556. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
  557. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
  558. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
  559. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
  560. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  561. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
  562. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
  563. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  564. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
  565. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  566. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  567. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  568. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.windows.js +8 -9
  569. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  570. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  571. package/src/private/featureflags/ReactNativeFeatureFlags.js +88 -8
  572. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
  573. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -3
  574. package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
  575. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  576. package/src/private/setup/setUpPerformanceObserver.js +7 -0
  577. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +8 -5
  578. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +4 -4
  579. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +4 -4
  580. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +4 -4
  581. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
  582. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
  583. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
  584. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +10 -7
  585. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
  586. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +15 -6
  587. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +9 -6
  588. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
  589. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +4 -4
  590. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
  591. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  592. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  593. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
  594. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
  595. package/src/private/styles/composeStyles.js +5 -12
  596. package/src/private/types/HostInstance.js +1 -1
  597. package/src/private/webapis/dom/events/Event.js +3 -0
  598. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  599. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
  600. package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
  601. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
  602. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  603. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
  604. package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
  605. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
  606. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  607. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  608. package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
  609. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  610. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
  611. package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
  612. package/src/private/webapis/errors/DOMException.js +166 -0
  613. package/src/private/webapis/geometry/DOMRect.js +5 -0
  614. package/src/private/webapis/geometry/DOMRectList.js +4 -1
  615. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  616. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
  617. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
  618. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  619. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +83 -18
  620. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
  621. package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
  622. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  623. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
  624. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
  625. package/src/private/webapis/performance/EventTiming.js +1 -1
  626. package/src/private/webapis/performance/LongTasks.js +1 -1
  627. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  628. package/src/private/webapis/performance/Performance.js +20 -9
  629. package/src/private/webapis/performance/PerformanceEntry.js +5 -1
  630. package/src/private/webapis/performance/PerformanceObserver.js +32 -28
  631. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  632. package/src/private/webapis/performance/ResourceTiming.js +108 -0
  633. package/src/private/webapis/performance/UserTiming.js +1 -1
  634. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +50 -33
  635. package/src/private/webapis/performance/internals/Utilities.js +1 -1
  636. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  637. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  638. package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
  639. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  640. package/template/metro.config.js +2 -4
  641. package/templates/cpp-app/metro.config.js +2 -4
  642. package/templates/cpp-lib/example/metro.config.js +2 -3
  643. package/templates/cpp-lib/template.config.js +24 -0
  644. package/templates/cpp-lib/windows/MyLib/MyLib.h +20 -1
  645. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +0 -1
  646. package/types/modules/Devtools.d.ts +23 -9
  647. package/Libraries/BugReporting/BugReporting.js +0 -140
  648. package/Libraries/BugReporting/NativeBugReporting.js +0 -13
  649. package/Libraries/BugReporting/dumpReactTree.js +0 -151
  650. package/Libraries/BugReporting/getReactData.js +0 -187
  651. package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
  652. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +0 -78
  653. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +0 -196
  654. package/ReactCommon/TEMP_UntilReactCommonUpdate/jserrorhandler/JsErrorHandler.cpp +0 -429
  655. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.cpp +0 -45
  656. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.h +0 -91
  657. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/CullingContext.cpp +0 -49
  658. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.cpp +0 -191
  659. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +0 -670
  660. package/Shared/InspectorPackagerConnection.cpp +0 -232
  661. package/Shared/InspectorPackagerConnection.h +0 -61
  662. package/Shared/Modules/ExceptionsManagerModule.cpp +0 -209
  663. package/Shared/Modules/ExceptionsManagerModule.h +0 -32
  664. package/Shared/Modules/I18nModule.cpp +0 -36
  665. package/Shared/Modules/I18nModule.h +0 -28
  666. package/Shared/Modules/NetworkingModule.cpp +0 -432
  667. package/Shared/Modules/NetworkingModule.h +0 -34
  668. package/Shared/Modules/PlatformConstantsModule.cpp +0 -60
  669. package/Shared/Modules/PlatformConstantsModule.h +0 -23
  670. package/Shared/Modules/SourceCodeModule.cpp +0 -35
  671. package/Shared/Modules/SourceCodeModule.h +0 -27
  672. package/Shared/Modules/StatusBarManagerModule.cpp +0 -25
  673. package/Shared/Modules/StatusBarManagerModule.h +0 -19
  674. package/codegen/NativeBugReportingSpec.g.h +0 -41
  675. package/jest/mockModal.js +0 -32
  676. package/jest/mockScrollView.js +0 -35
  677. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
  678. /package/Shared/{HermesSamplingProfiler.cpp → Hermes/HermesSamplingProfiler.cpp} +0 -0
  679. /package/Shared/{HermesSamplingProfiler.h → Hermes/HermesSamplingProfiler.h} +0 -0
@@ -19,6 +19,7 @@
19
19
  #include <winrt/Microsoft.UI.Input.h>
20
20
  #include <winrt/Windows.System.h>
21
21
  #include <winrt/Windows.UI.h>
22
+ #include "../Composition.Input.h"
22
23
  #include "../CompositionHelpers.h"
23
24
  #include "../RootComponentView.h"
24
25
  #include "JSValueReader.h"
@@ -216,15 +217,14 @@ struct CompTextHost : public winrt::implements<CompTextHost, ITextHost> {
216
217
 
217
218
  //@cmember Get mouse capture
218
219
  void TxSetCapture(BOOL fCapture) override {
219
- // assert(false);
220
- // TODO capture?
221
- /*
220
+ auto mousePointer = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::Pointer>(
221
+ winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType::Mouse, 1 /* 1 is Mouse PointerId*/);
222
+
222
223
  if (fCapture) {
223
- ::SetCapture(m_hwndHost);
224
+ m_outer->CapturePointer(mousePointer);
224
225
  } else {
225
- ::ReleaseCapture();
226
+ m_outer->ReleasePointerCapture(mousePointer);
226
227
  }
227
- */
228
228
  }
229
229
 
230
230
  //@cmember Set the focus to the text window
@@ -697,10 +697,17 @@ void WindowsTextInputComponentView::OnPointerPressed(
697
697
  }
698
698
 
699
699
  if (m_textServices && msg) {
700
- LRESULT lresult;
701
- DrawBlock db(*this);
702
- auto hr = m_textServices->TxSendMessage(msg, static_cast<WPARAM>(wParam), static_cast<LPARAM>(lParam), &lresult);
703
- args.Handled(hr != S_FALSE);
700
+ if (msg == WM_RBUTTONUP && !windowsTextInputProps().contextMenuHidden) {
701
+ ShowContextMenu(position);
702
+ args.Handled(true);
703
+ } else if (msg == WM_RBUTTONUP && windowsTextInputProps().contextMenuHidden) {
704
+ args.Handled(true);
705
+ } else {
706
+ LRESULT lresult;
707
+ DrawBlock db(*this);
708
+ auto hr = m_textServices->TxSendMessage(msg, static_cast<WPARAM>(wParam), static_cast<LPARAM>(lParam), &lresult);
709
+ args.Handled(hr != S_FALSE);
710
+ }
704
711
  }
705
712
 
706
713
  // Emits the OnPressIn event
@@ -844,8 +851,8 @@ void WindowsTextInputComponentView::OnPointerWheelChanged(
844
851
  }
845
852
  void WindowsTextInputComponentView::OnKeyDown(
846
853
  const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
847
- // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
848
- // behavior We do forward Ctrl+Tab to the textinput.
854
+ // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
855
+ // WinUI behavior We do forward Ctrl+Tab to the textinput.
849
856
  if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
850
857
  (args.KeyboardSource().GetKeyState(winrt::Windows::System::VirtualKey::Control) &
851
858
  winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) {
@@ -872,8 +879,8 @@ void WindowsTextInputComponentView::OnKeyDown(
872
879
 
873
880
  void WindowsTextInputComponentView::OnKeyUp(
874
881
  const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
875
- // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
876
- // behavior We do forward Ctrl+Tab to the textinput.
882
+ // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
883
+ // WinUI behavior We do forward Ctrl+Tab to the textinput.
877
884
  if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
878
885
  (args.KeyboardSource().GetKeyState(winrt::Windows::System::VirtualKey::Control) &
879
886
  winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) {
@@ -943,8 +950,8 @@ bool WindowsTextInputComponentView::ShouldSubmit(
943
950
 
944
951
  void WindowsTextInputComponentView::OnCharacterReceived(
945
952
  const winrt::Microsoft::ReactNative::Composition::Input::CharacterReceivedRoutedEventArgs &args) noexcept {
946
- // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
947
- // behavior We do forward Ctrl+Tab to the textinput.
953
+ // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with
954
+ // WinUI behavior We do forward Ctrl+Tab to the textinput.
948
955
  if ((args.KeyCode() == '\t') &&
949
956
  ((args.KeyboardSource().GetKeyState(winrt::Windows::System::VirtualKey::Control) &
950
957
  winrt::Microsoft::UI::Input::VirtualKeyStates::Down) != winrt::Microsoft::UI::Input::VirtualKeyStates::Down)) {
@@ -1547,25 +1554,59 @@ void WindowsTextInputComponentView::UpdateParaFormat() noexcept {
1547
1554
  m_pf.dwMask = PFM_ALL;
1548
1555
 
1549
1556
  auto &textAlign = windowsTextInputProps().textAlign;
1557
+ auto &baseWritingDirection = windowsTextInputProps().textAttributes.baseWritingDirection;
1558
+
1559
+ // Handle writingDirection (baseWritingDirection)
1560
+ // For WritingDirection::Natural, use the computed layout direction from the layout tree
1561
+ // since direction can be overridden at any point in the tree
1562
+ bool isRTL = false;
1563
+ if (baseWritingDirection.has_value()) {
1564
+ if (*baseWritingDirection == facebook::react::WritingDirection::RightToLeft) {
1565
+ isRTL = true;
1566
+ m_pf.dwMask |= PFM_RTLPARA;
1567
+ m_pf.wEffects |= PFE_RTLPARA;
1568
+ } else if (*baseWritingDirection == facebook::react::WritingDirection::LeftToRight) {
1569
+ isRTL = false;
1570
+ // Ensure RTL flag is not set
1571
+ m_pf.wEffects &= ~PFE_RTLPARA;
1572
+ } else if (*baseWritingDirection == facebook::react::WritingDirection::Natural) {
1573
+ // Natural uses the layout direction computed from the tree
1574
+ isRTL = (layoutMetrics().layoutDirection == facebook::react::LayoutDirection::RightToLeft);
1575
+ if (isRTL) {
1576
+ m_pf.dwMask |= PFM_RTLPARA;
1577
+ m_pf.wEffects |= PFE_RTLPARA;
1578
+ } else {
1579
+ m_pf.wEffects &= ~PFE_RTLPARA;
1580
+ }
1581
+ }
1582
+ } else {
1583
+ // No explicit writing direction set - use layout direction from tree
1584
+ isRTL = (layoutMetrics().layoutDirection == facebook::react::LayoutDirection::RightToLeft);
1585
+ if (isRTL) {
1586
+ m_pf.dwMask |= PFM_RTLPARA;
1587
+ m_pf.wEffects |= PFE_RTLPARA;
1588
+ } else {
1589
+ m_pf.wEffects &= ~PFE_RTLPARA;
1590
+ }
1591
+ }
1550
1592
 
1593
+ // Handle textAlign
1551
1594
  if (textAlign == facebook::react::TextAlignment::Center) {
1552
1595
  m_pf.wAlignment = PFA_CENTER;
1553
1596
  } else if (textAlign == facebook::react::TextAlignment::Right) {
1554
1597
  m_pf.wAlignment = PFA_RIGHT;
1598
+ } else if (textAlign == facebook::react::TextAlignment::Justified) {
1599
+ m_pf.wAlignment = PFA_JUSTIFY;
1600
+ } else if (textAlign == facebook::react::TextAlignment::Natural) {
1601
+ // Natural alignment respects writing direction
1602
+ m_pf.wAlignment = isRTL ? PFA_RIGHT : PFA_LEFT;
1555
1603
  } else {
1604
+ // Default to left alignment
1556
1605
  m_pf.wAlignment = PFA_LEFT;
1557
1606
  }
1558
1607
 
1559
1608
  m_pf.cTabCount = 1;
1560
1609
  m_pf.rgxTabs[0] = lDefaultTab;
1561
-
1562
- /*
1563
- if (m_spcontroller->IsCurrentReadingOrderRTL())
1564
- {
1565
- m_pf.dwMask |= PFM_RTLPARA;
1566
- m_pf.wEffects |= PFE_RTLPARA;
1567
- }
1568
- */
1569
1610
  }
1570
1611
 
1571
1612
  void WindowsTextInputComponentView::OnRenderingDeviceLost() noexcept {
@@ -1826,4 +1867,47 @@ void WindowsTextInputComponentView::updateSpellCheck(bool enable) noexcept {
1826
1867
  winrt::check_hresult(
1827
1868
  m_textServices->TxSendMessage(EM_SETLANGOPTIONS, IMF_SPELLCHECKING, enable ? newLangOptions : 0, &lresult));
1828
1869
  }
1870
+
1871
+ void WindowsTextInputComponentView::ShowContextMenu(const winrt::Windows::Foundation::Point &position) noexcept {
1872
+ HMENU menu = CreatePopupMenu();
1873
+ if (!menu)
1874
+ return;
1875
+
1876
+ CHARRANGE selection;
1877
+ LRESULT res;
1878
+ m_textServices->TxSendMessage(EM_EXGETSEL, 0, reinterpret_cast<LPARAM>(&selection), &res);
1879
+
1880
+ bool hasSelection = selection.cpMin != selection.cpMax;
1881
+ bool isEmpty = GetTextFromRichEdit().empty();
1882
+ bool isReadOnly = windowsTextInputProps().editable == false;
1883
+ bool canPaste = !isReadOnly && IsClipboardFormatAvailable(CF_UNICODETEXT);
1884
+
1885
+ AppendMenuW(menu, MF_STRING | (hasSelection && !isReadOnly ? 0 : MF_GRAYED), 1, L"Cut");
1886
+ AppendMenuW(menu, MF_STRING | (hasSelection ? 0 : MF_GRAYED), 2, L"Copy");
1887
+ AppendMenuW(menu, MF_STRING | (canPaste ? 0 : MF_GRAYED), 3, L"Paste");
1888
+ AppendMenuW(menu, MF_STRING | (!isEmpty && !isReadOnly ? 0 : MF_GRAYED), 4, L"Select All");
1889
+
1890
+ POINT cursorPos;
1891
+ GetCursorPos(&cursorPos);
1892
+
1893
+ HWND hwnd = GetActiveWindow();
1894
+
1895
+ int cmd = TrackPopupMenu(
1896
+ menu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD | TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwnd, NULL);
1897
+
1898
+ if (cmd == 1) { // Cut
1899
+ m_textServices->TxSendMessage(WM_CUT, 0, 0, &res);
1900
+ OnTextUpdated();
1901
+ } else if (cmd == 2) { // Copy
1902
+ m_textServices->TxSendMessage(WM_COPY, 0, 0, &res);
1903
+ } else if (cmd == 3) { // Paste
1904
+ m_textServices->TxSendMessage(WM_PASTE, 0, 0, &res);
1905
+ OnTextUpdated();
1906
+ } else if (cmd == 4) { // Select All
1907
+ m_textServices->TxSendMessage(EM_SETSEL, 0, -1, &res);
1908
+ }
1909
+
1910
+ DestroyMenu(menu);
1911
+ }
1912
+
1829
1913
  } // namespace winrt::Microsoft::ReactNative::Composition::implementation
@@ -118,6 +118,7 @@ struct WindowsTextInputComponentView
118
118
  void updateLetterSpacing(float letterSpacing) noexcept;
119
119
  void updateAutoCorrect(bool value) noexcept;
120
120
  void updateSpellCheck(bool value) noexcept;
121
+ void ShowContextMenu(const winrt::Windows::Foundation::Point &position) noexcept;
121
122
 
122
123
  winrt::Windows::UI::Composition::CompositionSurfaceBrush m_brush{nullptr};
123
124
  winrt::Microsoft::ReactNative::Composition::Experimental::ICaretVisual m_caretVisual{nullptr};
@@ -125,8 +125,8 @@ void WindowsTextInputShadowNode::updateStateIfNeeded(const LayoutContext &layout
125
125
  // so no changes are applied There's no way to prevent a state update from
126
126
  // flowing to Java, so we just ensure it's a noop in those cases.
127
127
 
128
- setStateData(facebook::react::TextInputState{
129
- AttributedStringBox(newAttributedString), reactTreeAttributedString, {}, newEventCount});
128
+ setStateData(
129
+ WindowsTextInputState{AttributedStringBox(newAttributedString), reactTreeAttributedString, {}, newEventCount});
130
130
  }
131
131
 
132
132
  AttributedString WindowsTextInputShadowNode::getAttributedString(const LayoutContext &layoutContext) const {
@@ -181,24 +181,28 @@ AttributedString WindowsTextInputShadowNode::getMostRecentAttributedString(const
181
181
  return (!treeAttributedStringChanged ? state.attributedStringBox.getValue() : reactTreeAttributedString);
182
182
  }
183
183
 
184
- // For measurement purposes, we want to make sure that there's at least a
185
- // single character in the string so that the measured height is greater
186
- // than zero. Otherwise, empty TextInputs with no placeholder don't
187
- // display at all.
188
- // TODO T67606511: We will redefine the measurement of empty strings as part
189
- // of T67606511
190
184
  AttributedString WindowsTextInputShadowNode::getPlaceholderAttributedString(const LayoutContext &layoutContext) const {
191
- const auto &props = BaseShadowNode::getConcreteProps();
185
+ const auto &props = getConcreteProps();
192
186
 
193
187
  AttributedString attributedString;
194
- auto placeholderString = !props.placeholder.empty() ? props.placeholder : BaseTextShadowNode::getEmptyPlaceholder();
195
- auto textAttributes = TextAttributes::defaultTextAttributes();
196
- textAttributes.fontSizeMultiplier = layoutContext.fontSizeMultiplier;
197
- textAttributes.apply(props.textAttributes);
198
- attributedString.appendFragment(
199
- {.string = std::move(placeholderString),
200
- .textAttributes = textAttributes,
201
- .parentShadowView = ShadowView(*this)});
188
+ //[windows
189
+ if (!props.placeholder.empty()) {
190
+ auto textAttributes = TextAttributes::defaultTextAttributes();
191
+ textAttributes.fontSizeMultiplier = layoutContext.fontSizeMultiplier;
192
+ textAttributes.apply(props.textAttributes);
193
+
194
+ /*
195
+ * These props are applied to `View`, therefore they must not be a part of
196
+ * base text attributes.
197
+ */
198
+ textAttributes.backgroundColor = clearColor();
199
+ textAttributes.opacity = 1;
200
+
201
+ attributedString.appendFragment(
202
+ {.string = props.placeholder, .textAttributes = textAttributes, .parentShadowView = ShadowView(*this)});
203
+ }
204
+ // windows]
205
+
202
206
  return attributedString;
203
207
  }
204
208
 
@@ -4,14 +4,14 @@
4
4
  #pragma once
5
5
 
6
6
  #include <react/renderer/textlayoutmanager/WindowsTextLayoutManager.h>
7
+ #include "WindowsTextInputEventEmitter.h"
8
+ #include "WindowsTextInputProps.h"
9
+ #include "WindowsTextInputState.h"
7
10
 
8
11
  #include <react/components/rnwcore/EventEmitters.h>
9
12
  #include <unordered_map>
10
- #include "WindowsTextInputEventEmitter.h"
11
- #include "WindowsTextInputProps.h"
12
13
 
13
14
  #include <react/renderer/attributedstring/AttributedString.h>
14
- #include <react/renderer/components/textinput/TextInputState.h>
15
15
  #include <react/renderer/components/view/ConcreteViewShadowNode.h>
16
16
  #include <react/utils/ContextContainer.h>
17
17
 
@@ -26,7 +26,7 @@ class WindowsTextInputShadowNode final : public ConcreteViewShadowNode<
26
26
  WindowsTextInputComponentName,
27
27
  WindowsTextInputProps,
28
28
  WindowsTextInputEventEmitter,
29
- TextInputState> {
29
+ WindowsTextInputState> {
30
30
  public:
31
31
  using ConcreteViewShadowNode::ConcreteViewShadowNode;
32
32
 
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #include "WindowsTextInputState.h"
9
+
10
+ #include <react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h> // [windows]
11
+
12
+ namespace facebook::react {
13
+
14
+ folly::dynamic WindowsTextInputState::getDynamic() const {
15
+ LOG(FATAL) << "TextInputState state should only be read using MapBuffer";
16
+ return folly::dynamic::object(); // windows
17
+ }
18
+
19
+ } // namespace facebook::react
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <react/renderer/attributedstring/AttributedStringBox.h>
11
+ #include <react/renderer/attributedstring/ParagraphAttributes.h>
12
+ #include <react/renderer/textlayoutmanager/TextLayoutManager.h>
13
+
14
+ #include <folly/dynamic.h>
15
+ #include <react/renderer/mapbuffer/MapBuffer.h>
16
+ #include <react/renderer/mapbuffer/MapBufferBuilder.h> // [windows]
17
+
18
+ namespace facebook::react {
19
+
20
+ /*
21
+ * State for <TextInput> component.
22
+ */
23
+ class WindowsTextInputState final {
24
+ public:
25
+ WindowsTextInputState() = default;
26
+
27
+ WindowsTextInputState(
28
+ AttributedStringBox attributedStringBox,
29
+ AttributedString reactTreeAttributedString,
30
+ ParagraphAttributes paragraphAttributes,
31
+ int64_t mostRecentEventCount)
32
+ : attributedStringBox(std::move(attributedStringBox)),
33
+ reactTreeAttributedString(std::move(reactTreeAttributedString)),
34
+ paragraphAttributes(std::move(paragraphAttributes)),
35
+ mostRecentEventCount(mostRecentEventCount) {}
36
+
37
+ WindowsTextInputState(const WindowsTextInputState &previousState, const folly::dynamic &data)
38
+ : attributedStringBox(previousState.attributedStringBox),
39
+ reactTreeAttributedString(previousState.reactTreeAttributedString),
40
+ paragraphAttributes(previousState.paragraphAttributes),
41
+ mostRecentEventCount(data.getDefault("mostRecentEventCount", previousState.mostRecentEventCount).getInt()),
42
+ cachedAttributedStringId(data.getDefault("opaqueCacheId", previousState.cachedAttributedStringId).getInt()) {}
43
+
44
+ folly::dynamic getDynamic() const;
45
+ MapBuffer getMapBuffer() const;
46
+
47
+ /*
48
+ * All content of <TextInput> component.
49
+ */
50
+ AttributedStringBox attributedStringBox;
51
+
52
+ /*
53
+ * All content of <TextInput> component represented as an `AttributedString`.
54
+ * This stores the previous computed *from the React tree*. This usually
55
+ * doesn't change as the TextInput contents are being updated. If it does
56
+ * change, we need to wipe out current contents of the TextInput and replace
57
+ * with the new value from the tree.
58
+ */
59
+ AttributedString reactTreeAttributedString{};
60
+
61
+ /*
62
+ * Represents all visual attributes of a paragraph of text represented as
63
+ * a ParagraphAttributes.
64
+ */
65
+ ParagraphAttributes paragraphAttributes;
66
+
67
+ int64_t mostRecentEventCount{0};
68
+
69
+ /**
70
+ * Stores an opaque cache ID used on the Java side to refer to a specific
71
+ * AttributedString for measurement purposes only.
72
+ */
73
+ int64_t cachedAttributedStringId{0};
74
+ };
75
+
76
+ } // namespace facebook::react
@@ -167,6 +167,9 @@ void FabricUIManager::setProps(facebook::react::SurfaceId surfaceId, const folly
167
167
  }
168
168
 
169
169
  void FabricUIManager::stopSurface(facebook::react::SurfaceId surfaceId) noexcept {
170
+ if (surfaceId == -1) {
171
+ return;
172
+ }
170
173
  visit(surfaceId, [&](const facebook::react::SurfaceHandler &surfaceHandler) {
171
174
  surfaceHandler.stop();
172
175
  m_scheduler->unregisterSurface(surfaceHandler);
@@ -176,7 +179,9 @@ void FabricUIManager::stopSurface(facebook::react::SurfaceId surfaceId) noexcept
176
179
  std::unique_lock lock(m_handlerMutex);
177
180
 
178
181
  auto iterator = m_handlerRegistry.find(surfaceId);
179
- m_handlerRegistry.erase(iterator);
182
+ if (iterator != m_handlerRegistry.end()) {
183
+ m_handlerRegistry.erase(iterator);
184
+ }
180
185
  }
181
186
 
182
187
  auto &rootDescriptor = m_registry.componentViewDescriptorWithTag(surfaceId);
@@ -477,6 +482,12 @@ void FabricUIManager::schedulerDidSendAccessibilityEvent(
477
482
  assert(false);
478
483
  }
479
484
 
485
+ void FabricUIManager::schedulerDidUpdateShadowTree(
486
+ const std::unordered_map<facebook::react::Tag, folly::dynamic> &tagToProps) {
487
+ // TODO: Implement shadow tree update handling if needed
488
+ // This method is called when the scheduler updates shadow tree props
489
+ }
490
+
480
491
  void FabricUIManager::Initialize(winrt::Microsoft::ReactNative::ReactContext const &reactContext) noexcept {
481
492
  m_context = reactContext;
482
493
 
@@ -104,6 +104,8 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
104
104
  virtual void schedulerDidSendAccessibilityEvent(
105
105
  const facebook::react::ShadowView &shadowView,
106
106
  std::string const &eventType) override;
107
+ virtual void schedulerDidUpdateShadowTree(
108
+ const std::unordered_map<facebook::react::Tag, folly::dynamic> &tagToProps) override;
107
109
  };
108
110
 
109
111
  } // namespace Microsoft::ReactNative
@@ -97,6 +97,12 @@ inline ColorComponents colorComponentsFromHostPlatformColor(Color color) {
97
97
  (float)windowsColor.A / ratio};
98
98
  }
99
99
 
100
+ // windows
101
+ inline bool hostPlatformColorIsColorMeaningful(Color color) noexcept {
102
+ auto windowsColor = color.AsWindowsColor();
103
+ return windowsColor.A > 0;
104
+ }
105
+
100
106
  } // namespace facebook::react
101
107
 
102
108
  namespace std {
@@ -80,6 +80,12 @@ void WindowsTextLayoutManager::GetTextLayout(
80
80
  TextMeasurement::Attachments &attachments) noexcept {
81
81
  const auto &attributedString = attributedStringBox.getValue();
82
82
  auto fragments = attributedString.getFragments();
83
+
84
+ // Check if fragments is empty to avoid out-of-bounds access
85
+ if (fragments.empty()) {
86
+ return;
87
+ }
88
+
83
89
  auto outerFragment = fragments[0];
84
90
 
85
91
  DWRITE_FONT_STYLE style = DWRITE_FONT_STYLE_NORMAL;
@@ -130,6 +136,25 @@ void WindowsTextLayoutManager::GetTextLayout(
130
136
  outerFragment.textAttributes.lineHeight * 0.8f));
131
137
  }
132
138
 
139
+ // Set reading direction (RTL/LTR) based on baseWritingDirection
140
+ // Only set reading direction if explicitly specified to avoid breaking existing layouts
141
+ bool isRTL = false;
142
+ if (outerFragment.textAttributes.baseWritingDirection.has_value()) {
143
+ DWRITE_READING_DIRECTION readingDirection = DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
144
+ if (*outerFragment.textAttributes.baseWritingDirection == facebook::react::WritingDirection::RightToLeft) {
145
+ readingDirection = DWRITE_READING_DIRECTION_RIGHT_TO_LEFT;
146
+ isRTL = true;
147
+ } else if (*outerFragment.textAttributes.baseWritingDirection == facebook::react::WritingDirection::LeftToRight) {
148
+ readingDirection = DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
149
+ isRTL = false;
150
+ } else if (*outerFragment.textAttributes.baseWritingDirection == facebook::react::WritingDirection::Natural) {
151
+ // Natural uses the layout direction from textAttributes
152
+ isRTL = (outerFragment.textAttributes.layoutDirection == facebook::react::LayoutDirection::RightToLeft);
153
+ readingDirection = isRTL ? DWRITE_READING_DIRECTION_RIGHT_TO_LEFT : DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
154
+ }
155
+ winrt::check_hresult(spTextFormat->SetReadingDirection(readingDirection));
156
+ }
157
+
133
158
  // Set text alignment
134
159
  DWRITE_TEXT_ALIGNMENT alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
135
160
  if (outerFragment.textAttributes.alignment) {
@@ -146,9 +171,9 @@ void WindowsTextLayoutManager::GetTextLayout(
146
171
  case facebook::react::TextAlignment::Right:
147
172
  alignment = DWRITE_TEXT_ALIGNMENT_TRAILING;
148
173
  break;
149
- // TODO use LTR values
150
174
  case facebook::react::TextAlignment::Natural:
151
- alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
175
+ // Natural alignment respects reading direction if baseWritingDirection was set
176
+ alignment = isRTL ? DWRITE_TEXT_ALIGNMENT_TRAILING : DWRITE_TEXT_ALIGNMENT_LEADING;
152
177
  break;
153
178
  default:
154
179
  assert(false);
@@ -375,47 +400,45 @@ TextMeasurement TextLayoutManager::measure(
375
400
  TextMeasurement measurement{};
376
401
  auto &attributedString = attributedStringBox.getValue();
377
402
 
378
- measurement = textMeasureCache_.get(
379
- {attributedString, paragraphAttributes, layoutConstraints}, [&](TextMeasureCacheKey const &key) {
380
- auto telemetry = TransactionTelemetry::threadLocalTelemetry();
381
- if (telemetry) {
382
- telemetry->willMeasureText();
383
- }
403
+ measurement = textMeasureCache_.get({attributedString, paragraphAttributes, layoutConstraints}, [&]() {
404
+ auto telemetry = TransactionTelemetry::threadLocalTelemetry();
405
+ if (telemetry) {
406
+ telemetry->willMeasureText();
407
+ }
384
408
 
385
- winrt::com_ptr<IDWriteTextLayout> spTextLayout;
386
-
387
- TextMeasurement::Attachments attachments;
388
- WindowsTextLayoutManager::GetTextLayout(
389
- attributedStringBox, paragraphAttributes, layoutConstraints.maximumSize, spTextLayout, attachments);
390
-
391
- if (spTextLayout) {
392
- auto maxHeight = std::numeric_limits<float>().max();
393
- if (paragraphAttributes.maximumNumberOfLines > 0) {
394
- std::vector<DWRITE_LINE_METRICS> lineMetrics;
395
- uint32_t actualLineCount;
396
- spTextLayout->GetLineMetrics(nullptr, 0, &actualLineCount);
397
- lineMetrics.resize(static_cast<size_t>(actualLineCount));
398
- winrt::check_hresult(spTextLayout->GetLineMetrics(lineMetrics.data(), actualLineCount, &actualLineCount));
399
- maxHeight = 0;
400
- const auto count =
401
- std::min(static_cast<uint32_t>(paragraphAttributes.maximumNumberOfLines), actualLineCount);
402
- for (uint32_t i = 0; i < count; ++i) {
403
- maxHeight += lineMetrics[i].height;
404
- }
405
- }
406
-
407
- DWRITE_TEXT_METRICS dtm{};
408
- winrt::check_hresult(spTextLayout->GetMetrics(&dtm));
409
- measurement.size = {dtm.width, std::min(dtm.height, maxHeight)};
410
- measurement.attachments = attachments;
411
- }
409
+ winrt::com_ptr<IDWriteTextLayout> spTextLayout;
410
+
411
+ TextMeasurement::Attachments attachments;
412
+ WindowsTextLayoutManager::GetTextLayout(
413
+ attributedStringBox, paragraphAttributes, layoutConstraints.maximumSize, spTextLayout, attachments);
412
414
 
413
- if (telemetry) {
414
- telemetry->didMeasureText();
415
+ if (spTextLayout) {
416
+ auto maxHeight = std::numeric_limits<float>().max();
417
+ if (paragraphAttributes.maximumNumberOfLines > 0) {
418
+ std::vector<DWRITE_LINE_METRICS> lineMetrics;
419
+ uint32_t actualLineCount;
420
+ spTextLayout->GetLineMetrics(nullptr, 0, &actualLineCount);
421
+ lineMetrics.resize(static_cast<size_t>(actualLineCount));
422
+ winrt::check_hresult(spTextLayout->GetLineMetrics(lineMetrics.data(), actualLineCount, &actualLineCount));
423
+ maxHeight = 0;
424
+ const auto count = std::min(static_cast<uint32_t>(paragraphAttributes.maximumNumberOfLines), actualLineCount);
425
+ for (uint32_t i = 0; i < count; ++i) {
426
+ maxHeight += lineMetrics[i].height;
415
427
  }
428
+ }
429
+
430
+ DWRITE_TEXT_METRICS dtm{};
431
+ winrt::check_hresult(spTextLayout->GetMetrics(&dtm));
432
+ measurement.size = {dtm.width, std::min(dtm.height, maxHeight)};
433
+ measurement.attachments = attachments;
434
+ }
435
+
436
+ if (telemetry) {
437
+ telemetry->didMeasureText();
438
+ }
416
439
 
417
- return measurement;
418
- });
440
+ return measurement;
441
+ });
419
442
  return measurement;
420
443
  }
421
444