react-native-windows 0.74.10 → 0.75.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Common.vcxproj +8 -0
  3. package/Common/Utilities.cpp +2 -2
  4. package/Directory.Build.targets +5 -0
  5. package/Folly/Folly.vcxproj +10 -2
  6. package/Folly/Folly.vcxproj.filters +0 -7
  7. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  8. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  9. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  10. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  11. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  12. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  13. package/Libraries/Animated/useAnimatedProps.js +56 -28
  14. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  15. package/Libraries/Components/Button.js +10 -5
  16. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  17. package/Libraries/Components/Flyout/Flyout.js +10 -10
  18. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  19. package/Libraries/Components/Pressable/Pressable.js +13 -6
  20. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  21. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  22. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  23. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  24. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  25. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  26. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  27. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  28. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  29. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  30. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  31. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  32. package/Libraries/Components/TextInput/TextInput.js +20 -73
  33. package/Libraries/Components/TextInput/TextInput.windows.js +21 -75
  34. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  35. package/Libraries/Components/Touchable/Touchable.js +2 -2
  36. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  37. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  39. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  40. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  41. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  42. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  43. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  44. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  45. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  46. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  47. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  48. package/Libraries/Components/View/View.js +0 -11
  49. package/Libraries/Components/View/View.windows.js +0 -11
  50. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  51. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  52. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  53. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  54. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  55. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  56. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  57. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  58. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  59. package/Libraries/Core/ErrorHandlers.js +116 -0
  60. package/Libraries/Core/ExceptionsManager.js +2 -2
  61. package/Libraries/Core/ReactNativeVersion.js +3 -3
  62. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  63. package/Libraries/Core/setUpPerformance.js +6 -4
  64. package/Libraries/Core/setUpReactDevTools.js +70 -10
  65. package/Libraries/Core/setUpTimers.js +50 -31
  66. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  67. package/Libraries/Image/Image.android.js +23 -13
  68. package/Libraries/Image/Image.d.ts +14 -15
  69. package/Libraries/Image/Image.ios.js +21 -11
  70. package/Libraries/Image/Image.windows.js +21 -11
  71. package/Libraries/Image/ImageProps.js +16 -5
  72. package/Libraries/Image/ImageTypes.flow.js +7 -2
  73. package/Libraries/Image/ImageUtils.js +1 -0
  74. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  75. package/Libraries/Inspector/ElementBox.js +6 -3
  76. package/Libraries/Inspector/ElementProperties.js +1 -1
  77. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  78. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  79. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  80. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  81. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  82. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  83. package/Libraries/LogBox/LogBox.js +29 -12
  84. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  85. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  86. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  87. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  88. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  89. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  90. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  91. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  92. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  93. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  94. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  95. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  96. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  97. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  98. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  99. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  101. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  102. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  103. package/Libraries/Network/XMLHttpRequest.js +5 -1
  104. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  105. package/Libraries/Pressability/Pressability.js +3 -51
  106. package/Libraries/Pressability/Pressability.windows.js +3 -51
  107. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  108. package/Libraries/ReactNative/AppRegistry.js +2 -4
  109. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  110. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  111. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  112. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  113. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  114. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  115. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  116. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  117. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  118. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  119. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  120. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  121. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  123. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  124. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  125. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  126. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  127. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  128. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  129. package/Libraries/Share/Share.d.ts +16 -10
  130. package/Libraries/Share/Share.js +14 -15
  131. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  132. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  133. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  134. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  135. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  136. package/Libraries/StyleSheet/processFilter.js +132 -0
  137. package/Libraries/StyleSheet/processTransform.js +18 -3
  138. package/Libraries/Text/Text.js +151 -128
  139. package/Libraries/Text/Text.windows.js +144 -127
  140. package/Libraries/Text/TextNativeComponent.js +5 -4
  141. package/Libraries/Text/TextProps.js +6 -6
  142. package/Libraries/Text/TextProps.windows.js +6 -6
  143. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  144. package/Libraries/Types/CodegenTypes.js +3 -0
  145. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  146. package/Libraries/Utilities/Dimensions.js +1 -0
  147. package/Libraries/Utilities/HMRClient.js +36 -8
  148. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  149. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  150. package/Libraries/Utilities/Platform.android.js +4 -4
  151. package/Libraries/Utilities/RCTLog.js +1 -0
  152. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  153. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  154. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  155. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  156. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  157. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  158. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  159. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  160. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
  161. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
  162. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +12 -3
  163. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
  165. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  166. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  167. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  168. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
  169. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
  170. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -11
  171. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  172. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  173. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  174. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  175. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  176. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  177. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  178. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  179. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  180. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  181. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  182. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
  183. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  184. package/Microsoft.ReactNative/Timer.idl +1 -3
  185. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  186. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  187. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  188. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  189. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  190. package/Microsoft.ReactNative/packages.lock.json +45 -72
  191. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  192. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  193. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  194. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  195. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  196. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  197. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  198. package/PropertySheets/ARM64EC.props +13 -0
  199. package/PropertySheets/Application/ARM64EC.props +13 -0
  200. package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
  201. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  202. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  203. package/PropertySheets/JSEngine.props +2 -0
  204. package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
  205. package/README.md +21 -21
  206. package/ReactCommon/ReactCommon.vcxproj +11 -1
  207. package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
  208. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  209. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  210. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  211. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  224. package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
  225. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +10 -6
  226. package/Scripts/rnw-dependencies.ps1 +36 -23
  227. package/Shared/HermesRuntimeHolder.cpp +19 -1
  228. package/Shared/HermesRuntimeHolder.h +8 -1
  229. package/Shared/HermesSamplingProfiler.cpp +1 -2
  230. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  231. package/Shared/OInstance.cpp +1 -2
  232. package/Shared/Shared.vcxitems +21 -15
  233. package/Shared/Shared.vcxitems.filters +8 -3
  234. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  235. package/Shared/Threading/BatchingQueueThread.h +2 -2
  236. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  237. package/codegen/NativeAppStateSpec.g.h +8 -8
  238. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  239. package/codegen/NativeDOMSpec.g.h +136 -0
  240. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  241. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  242. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  243. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  244. package/codegen/NativePerformanceSpec.g.h +35 -7
  245. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  246. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  247. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  248. package/codegen/NativeUIManagerSpec.g.h +5 -17
  249. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  250. package/codegen/react/components/rnwcore/Props.h +16 -12
  251. package/codegen/react/components/rnwcore/States.h +0 -26
  252. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  253. package/codegen/rnwcoreJSI.h +1374 -2867
  254. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  255. package/fmt/fmt.vcxproj +10 -2
  256. package/jest/mockComponent.js +7 -0
  257. package/jest/renderer.js +25 -14
  258. package/jest/setup.js +19 -13
  259. package/package.json +29 -27
  260. package/rn-get-polyfills.js +1 -0
  261. package/src/private/core/composeStyles.js +27 -0
  262. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  263. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  264. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  265. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  266. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  267. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  268. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  269. package/src/private/specs/modules/NativeUIManager.js +0 -7
  270. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  271. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  272. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  273. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  274. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  275. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  276. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  277. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  278. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  279. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  280. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  281. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  282. package/src/private/webapis/performance/EventCounts.js +1 -1
  283. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  284. package/src/private/webapis/performance/Performance.js +10 -56
  285. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  286. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  287. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  288. package/src/private/webapis/performance/UserTiming.js +63 -0
  289. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  290. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  291. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  292. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  293. package/stubs/glog/logging.h +1 -0
  294. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  295. package/template/cs-lib/proj/MyLib.csproj +1 -1
  296. package/template/metro.config.js +13 -2
  297. package/templates/cpp-app/template.config.js +1 -1
  298. package/templates/cpp-lib/example/metro.config.js +2 -2
  299. package/templates/cpp-lib/template.config.js +1 -1
  300. package/templates/old/generateWrapper.js +4 -1
  301. package/types/modules/globals.d.ts +4 -0
  302. package/Libraries/Lists/FlatList.windows.js +0 -717
  303. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  304. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  305. package/Libraries/Utilities/LoadingView.js +0 -16
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2375
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  312. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  313. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  314. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  315. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  316. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  317. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  318. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  319. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  320. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  321. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  322. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  323. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  324. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  325. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  326. package/template/metro.devMode.config.js +0 -56
  327. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -79,20 +79,8 @@ void FabricUIManager::installFabricUIManager() noexcept {
79
79
  runtimeExecutor = [runtimeScheduler](std::function<void(facebook::jsi::Runtime & runtime)> &&callback) {
80
80
  runtimeScheduler->scheduleWork(std::move(callback));
81
81
  };
82
- facebook::react::EventBeat::Factory synchronousBeatFactory =
83
- [runtimeExecutor, context = m_context, runtimeScheduler](
84
- facebook::react::EventBeat::SharedOwnerBox const &ownerBox) {
85
- return std::make_unique<SynchronousEventBeat>(ownerBox, context, runtimeExecutor, runtimeScheduler);
86
- };
87
- toolbox.synchronousEventBeatFactory = synchronousBeatFactory;
88
82
  } else {
89
83
  runtimeExecutor = SchedulerSettings::GetRuntimeExecutor(m_context.Properties());
90
-
91
- facebook::react::EventBeat::Factory synchronousBeatFactory =
92
- [runtimeExecutor, context = m_context](facebook::react::EventBeat::SharedOwnerBox const &ownerBox) {
93
- return std::make_unique<AsynchronousEventBeat>(ownerBox, context, runtimeExecutor);
94
- };
95
- toolbox.synchronousEventBeatFactory = synchronousBeatFactory;
96
84
  }
97
85
 
98
86
  facebook::react::EventBeat::Factory asynchronousBeatFactory =
@@ -324,9 +312,6 @@ void FabricUIManager::initiateTransaction(facebook::react::MountingCoordinator::
324
312
  }
325
313
 
326
314
  void FabricUIManager::schedulerDidFinishTransaction(
327
- const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {}
328
-
329
- void FabricUIManager::schedulerShouldRenderTransactions(
330
315
  const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {
331
316
  // Should cache this locally
332
317
 
@@ -338,9 +323,17 @@ void FabricUIManager::schedulerShouldRenderTransactions(
338
323
  }
339
324
  }
340
325
 
341
- void FabricUIManager::schedulerDidRequestPreliminaryViewAllocation(
342
- facebook::react::SurfaceId surfaceId,
343
- const facebook::react::ShadowNode &shadowView) {
326
+ void FabricUIManager::schedulerShouldRenderTransactions(
327
+ const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {
328
+ if (m_context.UIDispatcher().HasThreadAccess()) {
329
+ initiateTransaction(mountingCoordinator);
330
+ } else {
331
+ m_context.UIDispatcher().Post(
332
+ [mountingCoordinator, self = shared_from_this()]() { self->initiateTransaction(mountingCoordinator); });
333
+ }
334
+ }
335
+
336
+ void FabricUIManager::schedulerDidRequestPreliminaryViewAllocation(const facebook::react::ShadowNode &shadowView) {
344
337
  // iOS does not do this optimization, but Android does. It maybe that android's allocations are more expensive due to
345
338
  // the Java boundary.
346
339
  // TODO: We should do some perf tests to see if this is worth doing.
@@ -79,13 +79,11 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
79
79
  std::unordered_map<facebook::react::SurfaceId, SurfaceInfo> m_surfaceRegistry;
80
80
 
81
81
  // Inherited via SchedulerDelegate
82
- virtual void schedulerShouldRenderTransactions(
83
- const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
84
82
  virtual void schedulerDidFinishTransaction(
85
83
  const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
86
- virtual void schedulerDidRequestPreliminaryViewAllocation(
87
- facebook::react::SurfaceId surfaceId,
88
- const facebook::react::ShadowNode &shadowView) override;
84
+ virtual void schedulerShouldRenderTransactions(
85
+ const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
86
+ virtual void schedulerDidRequestPreliminaryViewAllocation(const facebook::react::ShadowNode &shadowView) override;
89
87
  virtual void schedulerDidDispatchCommand(
90
88
  facebook::react::ShadowView const &shadowView,
91
89
  std::string const &commandName,
@@ -43,8 +43,11 @@ WindowsImageManager::WindowsImageManager(winrt::Microsoft::ReactNative::ReactCon
43
43
  }
44
44
  }
45
45
 
46
- std::tuple<winrt::com_ptr<IWICBitmapSource>, winrt::com_ptr<IWICImagingFactory>, std::string> wicBitmapSourceFromStream(
47
- const winrt::Windows::Storage::Streams::IRandomAccessStream &stream) noexcept {
46
+ std::tuple<
47
+ winrt::com_ptr<IWICBitmapSource>,
48
+ winrt::com_ptr<IWICImagingFactory>,
49
+ std::shared_ptr<facebook::react::ImageErrorInfo>>
50
+ wicBitmapSourceFromStream(const winrt::Windows::Storage::Streams::IRandomAccessStream &stream) noexcept {
48
51
  try {
49
52
  winrt::com_ptr<IWICImagingFactory> imagingFactory;
50
53
  winrt::check_hresult(WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, imagingFactory.put()));
@@ -58,14 +61,19 @@ std::tuple<winrt::com_ptr<IWICBitmapSource>, winrt::com_ptr<IWICImagingFactory>,
58
61
  istream.get(), nullptr, WICDecodeMetadataCacheOnDemand, bitmapDecoder.put()));
59
62
 
60
63
  if (!bitmapDecoder) {
61
- return {nullptr, nullptr, "Failed to decode the image."};
64
+ auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
65
+ errorInfo->error = "Failed to decode the image.";
66
+ return {nullptr, nullptr, errorInfo};
62
67
  }
63
68
 
64
69
  winrt::com_ptr<IWICBitmapFrameDecode> decodedFrame;
65
70
  winrt::check_hresult(bitmapDecoder->GetFrame(0, decodedFrame.put()));
66
- return {decodedFrame, imagingFactory, {}};
71
+ return {decodedFrame, imagingFactory, nullptr};
67
72
  } catch (winrt::hresult_error const &ex) {
68
- return {nullptr, nullptr, ::Microsoft::ReactNative::FormatHResultError(winrt::hresult_error(ex))};
73
+ auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
74
+ errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
75
+ errorInfo->error = ::Microsoft::ReactNative::FormatHResultError(winrt::hresult_error(ex));
76
+ return {nullptr, nullptr, errorInfo};
69
77
  }
70
78
  }
71
79
 
@@ -166,16 +174,20 @@ facebook::react::ImageRequest WindowsImageManager::requestImage(
166
174
  observerCoordinator->nativeImageResponseComplete(
167
175
  facebook::react::ImageResponse(imageResultOrError.image, nullptr /*metadata*/));
168
176
  } else {
169
- observerCoordinator->nativeImageResponseFailed();
177
+ observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(imageResultOrError.errorInfo));
170
178
  }
171
179
  break;
172
180
  }
173
181
  case winrt::Windows::Foundation::AsyncStatus::Canceled: {
174
- observerCoordinator->nativeImageResponseFailed();
182
+ auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
183
+ errorInfo->error = FormatHResultError(winrt::hresult_error(asyncOp.ErrorCode()));
184
+ observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(errorInfo));
175
185
  break;
176
186
  }
177
187
  case winrt::Windows::Foundation::AsyncStatus::Error: {
178
- observerCoordinator->nativeImageResponseFailed();
188
+ auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
189
+ errorInfo->error = FormatHResultError(winrt::hresult_error(asyncOp.ErrorCode()));
190
+ observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(errorInfo));
179
191
  break;
180
192
  }
181
193
  case winrt::Windows::Foundation::AsyncStatus::Started: {
@@ -197,8 +209,7 @@ ImageResponseOrImageErrorInfo StreamImageResponse::ResolveImage() {
197
209
  try {
198
210
  auto result = ::Microsoft::ReactNative::wicBitmapSourceFromStream(m_stream);
199
211
 
200
- auto &errorInfo = std::get<std::string>(result);
201
- if (!errorInfo.empty()) {
212
+ if (auto errorInfo = std::get<std::shared_ptr<facebook::react::ImageErrorInfo>>(result)) {
202
213
  imageOrError.errorInfo = errorInfo;
203
214
  return imageOrError;
204
215
  }
@@ -222,7 +233,8 @@ ImageResponseOrImageErrorInfo StreamImageResponse::ResolveImage() {
222
233
  winrt::check_hresult(imagingFactory->CreateBitmapFromSource(
223
234
  converter.get(), WICBitmapCacheOnLoad, imageOrError.image->m_wicbmp.put()));
224
235
  } catch (winrt::hresult_error const &ex) {
225
- imageOrError.errorInfo = ::Microsoft::ReactNative::FormatHResultError(winrt::hresult_error(ex));
236
+ imageOrError.errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
237
+ imageOrError.errorInfo->error = ::Microsoft::ReactNative::FormatHResultError(winrt::hresult_error(ex));
226
238
  }
227
239
  return imageOrError;
228
240
  }
@@ -30,7 +30,10 @@ struct WindowsImageManager {
30
30
  std::shared_ptr<winrt::Microsoft::ReactNative::Composition::implementation::UriImageManager> m_uriImageManager;
31
31
  };
32
32
 
33
- std::tuple<winrt::com_ptr<IWICBitmapSource>, winrt::com_ptr<IWICImagingFactory>, std::string> wicBitmapSourceFromStream(
34
- const winrt::Windows::Storage::Streams::IRandomAccessStream &stream) noexcept;
33
+ std::tuple<
34
+ winrt::com_ptr<IWICBitmapSource>,
35
+ winrt::com_ptr<IWICImagingFactory>,
36
+ std::shared_ptr<facebook::react::ImageErrorInfo>>
37
+ wicBitmapSourceFromStream(const winrt::Windows::Storage::Streams::IRandomAccessStream &stream) noexcept;
35
38
 
36
39
  } // namespace Microsoft::ReactNative
@@ -39,19 +39,11 @@ void HostPlatformViewEventEmitter::onBlur() const {
39
39
  #pragma mark - Mouse Events
40
40
 
41
41
  void HostPlatformViewEventEmitter::onMouseEnter(PointerEvent const &pointerEvent) const {
42
- dispatchEvent(
43
- "mouseEnter",
44
- std::make_shared<PointerEvent>(pointerEvent),
45
- EventPriority::AsynchronousBatched,
46
- RawEvent::Category::ContinuousStart);
42
+ dispatchEvent("mouseEnter", std::make_shared<PointerEvent>(pointerEvent), RawEvent::Category::ContinuousStart);
47
43
  }
48
44
 
49
45
  void HostPlatformViewEventEmitter::onMouseLeave(PointerEvent const &pointerEvent) const {
50
- dispatchEvent(
51
- "mouseLeave",
52
- std::make_shared<PointerEvent>(pointerEvent),
53
- EventPriority::AsynchronousBatched,
54
- RawEvent::Category::ContinuousStart);
46
+ dispatchEvent("mouseLeave", std::make_shared<PointerEvent>(pointerEvent), RawEvent::Category::ContinuousStart);
55
47
  }
56
48
 
57
49
  } // namespace facebook::react
@@ -17,14 +17,11 @@
17
17
  namespace facebook::react {
18
18
 
19
19
  void TextLayoutManager::GetTextLayout(
20
- AttributedStringBox attributedStringBox,
21
- ParagraphAttributes paragraphAttributes,
22
- LayoutConstraints layoutConstraints,
20
+ const AttributedString &attributedString,
21
+ const ParagraphAttributes &paragraphAttributes,
22
+ Size size,
23
23
  winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept {
24
- if (attributedStringBox.getValue().isEmpty())
25
- return;
26
-
27
- auto fragments = attributedStringBox.getValue().getFragments();
24
+ auto fragments = attributedString.getFragments();
28
25
  auto outerFragment = fragments[0];
29
26
 
30
27
  DWRITE_FONT_STYLE style = DWRITE_FONT_STYLE_NORMAL;
@@ -86,14 +83,14 @@ void TextLayoutManager::GetTextLayout(
86
83
  }
87
84
  winrt::check_hresult(spTextFormat->SetTextAlignment(alignment));
88
85
 
89
- auto str = GetTransformedText(attributedStringBox);
86
+ auto str = GetTransformedText(attributedString);
90
87
 
91
88
  winrt::check_hresult(Microsoft::ReactNative::DWriteFactory()->CreateTextLayout(
92
89
  str.c_str(), // The string to be laid out and formatted.
93
90
  static_cast<UINT32>(str.size()), // The length of the string.
94
91
  spTextFormat.get(), // The text format to apply to the string (contains font information, etc).
95
- layoutConstraints.maximumSize.width, // The width of the layout box.
96
- layoutConstraints.maximumSize.height, // The height of the layout box.
92
+ size.width, // The width of the layout box.
93
+ size.height, // The height of the layout box.
97
94
  spTextLayout.put() // The IDWriteTextLayout interface pointer.
98
95
  ));
99
96
 
@@ -129,12 +126,22 @@ void TextLayoutManager::GetTextLayout(
129
126
  }
130
127
  }
131
128
 
129
+ void TextLayoutManager::GetTextLayout(
130
+ const AttributedStringBox &attributedStringBox,
131
+ const ParagraphAttributes &paragraphAttributes,
132
+ LayoutConstraints layoutConstraints,
133
+ winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept {
134
+ if (attributedStringBox.getValue().isEmpty())
135
+ return;
136
+
137
+ GetTextLayout(attributedStringBox.getValue(), paragraphAttributes, layoutConstraints.maximumSize, spTextLayout);
138
+ }
139
+
132
140
  TextMeasurement TextLayoutManager::measure(
133
- AttributedStringBox attributedStringBox,
134
- ParagraphAttributes paragraphAttributes,
141
+ const AttributedStringBox &attributedStringBox,
142
+ const ParagraphAttributes &paragraphAttributes,
135
143
  const TextLayoutContext &layoutContext,
136
- LayoutConstraints layoutConstraints,
137
- std::shared_ptr<void> /* hostTextStorage */) const {
144
+ LayoutConstraints layoutConstraints) const {
138
145
  TextMeasurement measurement{};
139
146
  auto &attributedString = attributedStringBox.getValue();
140
147
  measurement = m_measureCache.get(
@@ -185,31 +192,12 @@ TextMeasurement TextLayoutManager::measure(
185
192
  */
186
193
  TextMeasurement TextLayoutManager::measureCachedSpannableById(
187
194
  int64_t cacheId,
188
- ParagraphAttributes const &paragraphAttributes,
195
+ const ParagraphAttributes &paragraphAttributes,
189
196
  LayoutConstraints layoutConstraints) const {
190
197
  assert(false);
191
198
  return {};
192
199
  }
193
200
 
194
- LinesMeasurements TextLayoutManager::measureLines(
195
- AttributedString attributedString,
196
- ParagraphAttributes paragraphAttributes,
197
- Size size) const {
198
- assert(false);
199
- return {};
200
- }
201
-
202
- std::shared_ptr<void> TextLayoutManager::getHostTextStorage(
203
- AttributedString attributedString,
204
- ParagraphAttributes paragraphAttributes,
205
- LayoutConstraints layoutConstraints) const {
206
- return nullptr;
207
- }
208
-
209
- void *TextLayoutManager::getNativeTextLayoutManager() const {
210
- return (void *)this;
211
- }
212
-
213
201
  Microsoft::ReactNative::TextTransform ConvertTextTransform(std::optional<TextTransform> const &transform) {
214
202
  if (transform) {
215
203
  switch (transform.value()) {
@@ -229,9 +217,92 @@ Microsoft::ReactNative::TextTransform ConvertTextTransform(std::optional<TextTra
229
217
  return Microsoft::ReactNative::TextTransform::Undefined;
230
218
  }
231
219
 
232
- winrt::hstring TextLayoutManager::GetTransformedText(AttributedStringBox const &attributedStringBox) {
220
+ LinesMeasurements TextLayoutManager::measureLines(
221
+ const AttributedString &attributedString,
222
+ const ParagraphAttributes &paragraphAttributes,
223
+ Size size) const {
224
+ LinesMeasurements lineMeasurements{};
225
+
226
+ winrt::com_ptr<IDWriteTextLayout> spTextLayout;
227
+
228
+ GetTextLayout(attributedString, paragraphAttributes, size, spTextLayout);
229
+
230
+ if (spTextLayout) {
231
+ std::vector<DWRITE_LINE_METRICS> lineMetrics;
232
+ uint32_t actualLineCount;
233
+ spTextLayout->GetLineMetrics(nullptr, 0, &actualLineCount);
234
+ lineMetrics.resize(static_cast<size_t>(actualLineCount));
235
+ winrt::check_hresult(spTextLayout->GetLineMetrics(lineMetrics.data(), actualLineCount, &actualLineCount));
236
+ uint32_t startRange = 0;
237
+ const auto count = (paragraphAttributes.maximumNumberOfLines > 0)
238
+ ? std::min(static_cast<uint32_t>(paragraphAttributes.maximumNumberOfLines), actualLineCount)
239
+ : actualLineCount;
240
+ for (uint32_t i = 0; i < count; ++i) {
241
+ UINT32 actualHitTestCount = 0;
242
+ spTextLayout->HitTestTextRange(
243
+ startRange,
244
+ lineMetrics[i].length,
245
+ 0, // x
246
+ 0, // y
247
+ NULL,
248
+ 0, // metrics count
249
+ &actualHitTestCount);
250
+
251
+ // Allocate enough room to return all hit-test metrics.
252
+ std::vector<DWRITE_HIT_TEST_METRICS> hitTestMetrics(actualHitTestCount);
253
+ spTextLayout->HitTestTextRange(
254
+ startRange,
255
+ lineMetrics[i].length,
256
+ 0, // x
257
+ 0, // y
258
+ &hitTestMetrics[0],
259
+ static_cast<UINT32>(hitTestMetrics.size()),
260
+ &actualHitTestCount);
261
+
262
+ float width = 0;
263
+ for (auto tm : hitTestMetrics) {
264
+ width += tm.width;
265
+ }
266
+
267
+ std::string str;
268
+ for (const auto &fragment : attributedString.getFragments()) {
269
+ str = str +
270
+ winrt::to_string(Microsoft::ReactNative::TransformableText::TransformText(
271
+ winrt::hstring{Microsoft::Common::Unicode::Utf8ToUtf16(fragment.string)},
272
+ ConvertTextTransform(fragment.textAttributes.textTransform)));
273
+ }
274
+
275
+ lineMeasurements.emplace_back(LineMeasurement(
276
+ str.substr(startRange, lineMetrics[i].length),
277
+ {{hitTestMetrics[0].left, hitTestMetrics[0].top}, // origin
278
+ {width, lineMetrics[i].height}},
279
+ 0.0f, // TODO descender
280
+ 0.0f, // TODO: capHeight
281
+ 0.0f, // TODO ascender
282
+ 0.0f // TODO: xHeight
283
+ ));
284
+
285
+ startRange += lineMetrics[i].length;
286
+ }
287
+ }
288
+
289
+ return lineMeasurements;
290
+ }
291
+
292
+ std::shared_ptr<void> TextLayoutManager::getHostTextStorage(
293
+ const AttributedString &attributedString,
294
+ const ParagraphAttributes &paragraphAttributes,
295
+ LayoutConstraints layoutConstraints) const {
296
+ return nullptr;
297
+ }
298
+
299
+ void *TextLayoutManager::getNativeTextLayoutManager() const {
300
+ return (void *)this;
301
+ }
302
+
303
+ winrt::hstring TextLayoutManager::GetTransformedText(const AttributedString &attributedString) {
233
304
  winrt::hstring result{};
234
- for (const auto &fragment : attributedStringBox.getValue().getFragments()) {
305
+ for (const auto &fragment : attributedString.getFragments()) {
235
306
  result = result +
236
307
  Microsoft::ReactNative::TransformableText::TransformText(
237
308
  winrt::hstring{Microsoft::Common::Unicode::Utf8ToUtf16(fragment.string)},
@@ -35,22 +35,23 @@ class TextLayoutManager {
35
35
  * Measures `attributedStringBox` using native text rendering infrastructure.
36
36
  */
37
37
  TextMeasurement measure(
38
- AttributedStringBox attributedStringBox,
39
- ParagraphAttributes paragraphAttributes,
38
+ const AttributedStringBox &attributedStringBox,
39
+ const ParagraphAttributes &paragraphAttributes,
40
40
  const TextLayoutContext &layoutContext,
41
- LayoutConstraints layoutConstraints,
42
- std::shared_ptr<void> /* hostTextStorage */) const;
41
+ LayoutConstraints layoutConstraints) const;
43
42
 
44
43
  /*
45
44
  * Measures lines of `attributedString` using native text rendering
46
45
  * infrastructure.
47
46
  */
48
- LinesMeasurements measureLines(AttributedString attributedString, ParagraphAttributes paragraphAttributes, Size size)
49
- const;
47
+ LinesMeasurements measureLines(
48
+ const AttributedString &attributedString,
49
+ const ParagraphAttributes &paragraphAttributes,
50
+ Size size) const;
50
51
 
51
52
  std::shared_ptr<void> getHostTextStorage(
52
- AttributedString attributedString,
53
- ParagraphAttributes paragraphAttributes,
53
+ const AttributedString &attributedString,
54
+ const ParagraphAttributes &paragraphAttributes,
54
55
  LayoutConstraints layoutConstraints) const;
55
56
 
56
57
  /**
@@ -59,7 +60,7 @@ class TextLayoutManager {
59
60
  */
60
61
  TextMeasurement measureCachedSpannableById(
61
62
  int64_t cacheId,
62
- ParagraphAttributes const &paragraphAttributes,
63
+ const ParagraphAttributes &paragraphAttributes,
63
64
  LayoutConstraints layoutConstraints) const;
64
65
 
65
66
  /*
@@ -69,15 +70,20 @@ class TextLayoutManager {
69
70
  void *getNativeTextLayoutManager() const;
70
71
 
71
72
  static void GetTextLayout(
72
- AttributedStringBox attributedStringBox,
73
- ParagraphAttributes paragraphAttributes,
73
+ const AttributedStringBox &attributedStringBox,
74
+ const ParagraphAttributes &paragraphAttributes,
74
75
  LayoutConstraints layoutConstraints,
75
76
  winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept;
76
77
 
77
78
  #pragma endregion
78
79
 
79
80
  private:
80
- static winrt::hstring GetTransformedText(AttributedStringBox const &attributedStringBox);
81
+ static winrt::hstring GetTransformedText(const AttributedString &attributedString);
82
+ static void GetTextLayout(
83
+ const AttributedString &attributedString,
84
+ const ParagraphAttributes &paragraphAttributes,
85
+ Size size,
86
+ winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept;
81
87
 
82
88
  ContextContainer::Shared m_contextContainer;
83
89
  #pragma warning(push)
@@ -50,6 +50,10 @@ void DevSettings::toggleElementInspector() noexcept {
50
50
  "RCTDeviceEventEmitter", "emit", folly::dynamic::array("toggleElementInspector", nullptr));
51
51
  }
52
52
 
53
+ void DevSettings::openDebugger() noexcept {
54
+ assert(false);
55
+ }
56
+
53
57
  void DevSettings::addMenuItem(std::string title) noexcept {
54
58
  assert(false);
55
59
  }
@@ -24,6 +24,7 @@ struct DevSettings {
24
24
  REACT_METHOD(setIsDebuggingRemotely) void setIsDebuggingRemotely(bool isDebuggingRemotelyEnabled) noexcept;
25
25
  REACT_METHOD(setProfilingEnabled) void setProfilingEnabled(bool isProfilingEnabled) noexcept;
26
26
  REACT_METHOD(toggleElementInspector) void toggleElementInspector() noexcept;
27
+ REACT_METHOD(openDebugger) void openDebugger() noexcept;
27
28
  REACT_METHOD(addMenuItem) void addMenuItem(std::string title) noexcept;
28
29
  REACT_METHOD(setIsShakeToShowDevMenuEnabled) void setIsShakeToShowDevMenuEnabled(bool enabled) noexcept;
29
30
 
@@ -78,8 +78,7 @@ winrt::fire_and_forget GetImageSizeAsync(
78
78
  #ifdef USE_FABRIC
79
79
  } else {
80
80
  auto result = wicBitmapSourceFromStream(memoryStream);
81
- auto &errorInfo = std::get<std::string>(result);
82
- if (errorInfo.empty()) {
81
+ if (!std::get<std::shared_ptr<facebook::react::ImageErrorInfo>>(result)) {
83
82
  auto imagingFactory = std::get<winrt::com_ptr<IWICImagingFactory>>(result);
84
83
  auto wicBmpSource = std::get<winrt::com_ptr<IWICBitmapSource>>(result);
85
84
  UINT width, height;
@@ -234,15 +234,18 @@ void NativeUIManager::AddRootView(ShadowNode &shadowNode, facebook::react::IReac
234
234
  Microsoft::ReactNative::SetTag(element, rootTag);
235
235
 
236
236
  // Add listener to size change so we can redo the layout when that happens
237
- m_sizeChangedVector.push_back(view.as<xaml::FrameworkElement>().SizeChanged(
238
- winrt::auto_revoke, [this, rootTag](auto &&, xaml::SizeChangedEventArgs const &args) {
239
- ApplyLayout(rootTag, args.NewSize().Width, args.NewSize().Height);
240
- }));
237
+ m_sizeChangedMap.insert(
238
+ {rootTag,
239
+ view.as<xaml::FrameworkElement>().SizeChanged(
240
+ winrt::auto_revoke, [this, rootTag](auto &&, xaml::SizeChangedEventArgs const &args) {
241
+ ApplyLayout(rootTag, args.NewSize().Width, args.NewSize().Height);
242
+ })});
241
243
  }
242
244
 
243
245
  void NativeUIManager::removeRootView(Microsoft::ReactNative::ShadowNode &shadow) {
244
246
  SystraceSection s("NativeUIManager::removeRootView");
245
247
  m_tagsToXamlReactControl.erase(shadow.m_tag);
248
+ m_sizeChangedMap.erase(shadow.m_tag);
246
249
  RemoveView(shadow, true);
247
250
  }
248
251
 
@@ -118,7 +118,7 @@ class NativeUIManager final : public INativeUIManager {
118
118
 
119
119
  std::unordered_map<int64_t, YogaNodePtr> m_tagsToYogaNodes;
120
120
  std::unordered_map<int64_t, std::unique_ptr<YogaContext>> m_tagsToYogaContext;
121
- std::vector<xaml::FrameworkElement::SizeChanged_revoker> m_sizeChangedVector;
121
+ std::unordered_map<int64_t, xaml::FrameworkElement::SizeChanged_revoker> m_sizeChangedMap;
122
122
  std::vector<std::function<void()>> m_batchCompletedCallbacks;
123
123
  std::vector<int64_t> m_extraLayoutNodes;
124
124
 
@@ -10,8 +10,8 @@
10
10
 
11
11
  namespace Microsoft::ReactNative {
12
12
 
13
- ReactNativeSpecs::PlatformConstantsWinSpec_PlatformConstantsWindows PlatformConstants::GetConstants() noexcept {
14
- ReactNativeSpecs::PlatformConstantsWinSpec_PlatformConstantsWindows constants;
13
+ ReactNativeSpecs::PlatformConstantsWindowsSpec_PlatformConstantsWindows PlatformConstants::GetConstants() noexcept {
14
+ ReactNativeSpecs::PlatformConstantsWindowsSpec_PlatformConstantsWindows constants;
15
15
 
16
16
  // We don't currently treat Native code differently in a test environment
17
17
  constants.isTesting = false;
@@ -2,17 +2,17 @@
2
2
  // Licensed under the MIT License.
3
3
  #pragma once
4
4
 
5
- #include "codegen/NativePlatformConstantsWinSpec.g.h"
5
+ #include "codegen/NativePlatformConstantsWindowsSpec.g.h"
6
6
  #include <NativeModules.h>
7
7
 
8
8
  namespace Microsoft::ReactNative {
9
9
 
10
10
  REACT_MODULE(PlatformConstants)
11
11
  struct PlatformConstants {
12
- using ModuleSpec = ReactNativeSpecs::PlatformConstantsWinSpec;
12
+ using ModuleSpec = ReactNativeSpecs::PlatformConstantsWindowsSpec;
13
13
 
14
14
  REACT_GET_CONSTANTS(GetConstants)
15
- ReactNativeSpecs::PlatformConstantsWinSpec_PlatformConstantsWindows GetConstants() noexcept;
15
+ ReactNativeSpecs::PlatformConstantsWindowsSpec_PlatformConstantsWindows GetConstants() noexcept;
16
16
  };
17
17
 
18
18
  } // namespace Microsoft::ReactNative
@@ -608,8 +608,8 @@ void ReactInstanceWin::InitializeBridgeless() noexcept {
608
608
  auto timerManager = std::make_shared<facebook::react::TimerManager>(std::move(timerRegistry));
609
609
  timerRegistryRaw->setTimerManager(timerManager);
610
610
 
611
- auto jsErrorHandlingFunc = [this](facebook::react::MapBuffer errorMap) noexcept {
612
- OnJSError(std::move(errorMap));
611
+ auto jsErrorHandlingFunc = [this](const facebook::react::JsErrorHandler::ParsedError &error) noexcept {
612
+ OnJSError(std::move(error));
613
613
  };
614
614
 
615
615
  if (devSettings->useDirectDebugger) {
@@ -1239,24 +1239,18 @@ void ReactInstanceWin::OnError(const Mso::ErrorCode &errorCode) noexcept {
1239
1239
  }
1240
1240
 
1241
1241
  #ifdef USE_FABRIC
1242
- void ReactInstanceWin::OnJSError(facebook::react::MapBuffer errorMap) noexcept {
1242
+ void ReactInstanceWin::OnJSError(const facebook::react::JsErrorHandler::ParsedError &error) noexcept {
1243
1243
  ErrorInfo errorInfo;
1244
- errorInfo.Message = errorMap.getString(facebook::react::JSErrorHandlerKey::kErrorMessage);
1244
+ errorInfo.Message = error.message;
1245
1245
  auto errorCode = Mso::React::ReactErrorProvider().MakeErrorCode(Mso::React::ReactError{errorInfo.Message.c_str()});
1246
1246
 
1247
- std::vector<facebook::react::MapBuffer> frames =
1248
- errorMap.getMapBufferList(facebook::react::JSErrorHandlerKey::kAllStackFrames);
1249
- for (const facebook::react::MapBuffer &mapBuffer : frames) {
1250
- errorInfo.Callstack.push_back(
1251
- {mapBuffer.getString(facebook::react::JSErrorHandlerKey::kFrameFileName),
1252
- mapBuffer.getString(facebook::react::JSErrorHandlerKey::kFrameMethodName),
1253
- mapBuffer.getInt(facebook::react::JSErrorHandlerKey::kFrameLineNumber),
1254
- mapBuffer.getInt(facebook::react::JSErrorHandlerKey::kFrameColumnNumber)});
1247
+ for (const facebook::react::JsErrorHandler::ParsedError::StackFrame &frame : error.frames) {
1248
+ errorInfo.Callstack.push_back({frame.fileName, frame.methodName, frame.lineNumber, frame.columnNumber});
1255
1249
  }
1256
- errorInfo.Id = errorMap.getInt(facebook::react::JSErrorHandlerKey::kExceptionId);
1257
- errorInfo.Id = errorMap.getInt(facebook::react::JSErrorHandlerKey::kExceptionId);
1258
1250
 
1259
- bool isFatal = errorMap.getBool(facebook::react::JSErrorHandlerKey::kIsFatal);
1251
+ errorInfo.Id = error.exceptionId;
1252
+
1253
+ bool isFatal = error.isFatal;
1260
1254
 
1261
1255
  m_state = ReactInstanceState::HasError;
1262
1256
  AbandonJSCallQueue();
@@ -1325,7 +1319,7 @@ void ReactInstanceWin::DrainJSCallQueue() noexcept {
1325
1319
 
1326
1320
  #ifdef USE_FABRIC
1327
1321
  if (m_bridgelessReactInstance) {
1328
- m_bridgelessReactInstance->callFunctionOnModule(entry.ModuleName, entry.MethodName, entry.Args);
1322
+ m_bridgelessReactInstance->callFunctionOnModule(entry.ModuleName, entry.MethodName, std::move(entry.Args));
1329
1323
  } else
1330
1324
  #endif
1331
1325
  if (auto instance = m_instance.LoadWithLock()) {
@@ -1364,7 +1358,7 @@ void ReactInstanceWin::CallJsFunction(
1364
1358
  if (shouldCall) {
1365
1359
  #ifdef USE_FABRIC
1366
1360
  if (m_bridgelessReactInstance) {
1367
- m_bridgelessReactInstance->callFunctionOnModule(moduleName, method, params);
1361
+ m_bridgelessReactInstance->callFunctionOnModule(moduleName, method, std::move(params));
1368
1362
  } else
1369
1363
  #endif
1370
1364
  if (auto instance = m_instance.LoadWithLock()) {
@@ -141,7 +141,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
141
141
  void OnError(const Mso::ErrorCode &errorcode) noexcept;
142
142
  void OnErrorWithMessage(const std::string &errorMessage) noexcept;
143
143
  #ifdef USE_FABRIC
144
- void OnJSError(facebook::react::MapBuffer errorMap) noexcept;
144
+ void OnJSError(const facebook::react::JsErrorHandler::ParsedError &error) noexcept;
145
145
  #endif
146
146
  void OnLiveReload() noexcept;
147
147
  void OnWaitingForDebugger() noexcept;
@@ -2,9 +2,7 @@
2
2
  // Licensed under the MIT License.
3
3
 
4
4
  #include "DocString.h"
5
- import "IJSValueReader.idl";
6
- import "IJSValueWriter.idl";
7
- import "Theme.idl";
5
+ import "IReactPropertyBag.idl";
8
6
 
9
7
  namespace Microsoft.ReactNative {
10
8
 
@@ -147,7 +147,7 @@ void BatchingEventEmitter::OnFrameUI() noexcept {
147
147
  });
148
148
 
149
149
  // Don't leave the callback continuously registered as it can waste power.
150
- // See https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.compositiontarget.rendering?view=winrt-19041
150
+ // See https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.compositiontarget.rendering?view=winrt-22621
151
151
  m_renderingRevoker.revoke();
152
152
  }
153
153
 
@@ -59,11 +59,10 @@ std::future<std::string> LocalBundleReader::LoadBundleAsync(const std::wstring b
59
59
  winrt::Windows::Storage::StorageFile file{nullptr};
60
60
 
61
61
  // Supports "ms-appx://" or "ms-appdata://"
62
- // TODO: Replace call to private string function with C++ 20 `starts_with`
63
- if (bundleUri._Starts_with(L"ms-app")) {
62
+ if (bundleUri.starts_with(L"ms-app")) {
64
63
  winrt::Windows::Foundation::Uri uri(bundleUri);
65
64
  file = co_await winrt::Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(uri);
66
- } else if (bundleUri._Starts_with(L"resource://")) {
65
+ } else if (bundleUri.starts_with(L"resource://")) {
67
66
  winrt::Windows::Foundation::Uri uri(bundleUri);
68
67
  co_return GetBundleFromEmbeddedResource(uri);
69
68
  } else {