react-native-windows 0.74.11 → 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 (336) 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 +14 -70
  33. package/Libraries/Components/TextInput/TextInput.windows.js +15 -72
  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/CompositionViewComponentView.cpp +1 -4
  161. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
  162. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
  163. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +0 -10
  164. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +0 -3
  165. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +29 -45
  166. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +1 -3
  167. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
  168. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
  169. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  170. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  171. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  172. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
  173. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
  174. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -16
  175. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  176. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  177. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  178. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  179. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  180. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  181. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  182. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  183. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  184. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  185. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  186. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
  187. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  188. package/Microsoft.ReactNative/Timer.idl +1 -3
  189. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  190. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  191. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  192. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  193. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  194. package/Microsoft.ReactNative/packages.lock.json +45 -72
  195. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  196. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  197. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  198. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  199. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  200. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  201. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  202. package/PropertySheets/ARM64EC.props +13 -0
  203. package/PropertySheets/Application/ARM64EC.props +13 -0
  204. package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
  205. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  206. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  207. package/PropertySheets/JSEngine.props +2 -0
  208. package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
  209. package/README.md +21 -21
  210. package/ReactCommon/ReactCommon.vcxproj +11 -1
  211. package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  224. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  225. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  226. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  228. package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
  229. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +4 -0
  230. package/Scripts/rnw-dependencies.ps1 +36 -23
  231. package/Shared/HermesRuntimeHolder.cpp +19 -1
  232. package/Shared/HermesRuntimeHolder.h +8 -1
  233. package/Shared/HermesSamplingProfiler.cpp +1 -2
  234. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  235. package/Shared/OInstance.cpp +1 -2
  236. package/Shared/Shared.vcxitems +21 -15
  237. package/Shared/Shared.vcxitems.filters +8 -3
  238. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  239. package/Shared/Threading/BatchingQueueThread.h +2 -2
  240. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  241. package/codegen/NativeAppStateSpec.g.h +8 -8
  242. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  243. package/codegen/NativeDOMSpec.g.h +136 -0
  244. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  245. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  246. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  247. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  248. package/codegen/NativePerformanceSpec.g.h +35 -7
  249. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  250. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  251. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  252. package/codegen/NativeUIManagerSpec.g.h +5 -17
  253. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  254. package/codegen/react/components/rnwcore/Props.h +16 -12
  255. package/codegen/react/components/rnwcore/States.h +0 -26
  256. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  257. package/codegen/rnwcoreJSI.h +1374 -2867
  258. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  259. package/fmt/fmt.vcxproj +10 -2
  260. package/jest/mockComponent.js +7 -0
  261. package/jest/renderer.js +25 -14
  262. package/jest/setup.js +19 -13
  263. package/package.json +29 -27
  264. package/rn-get-polyfills.js +1 -0
  265. package/src/private/core/composeStyles.js +27 -0
  266. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  267. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  268. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  269. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  270. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  271. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  272. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  273. package/src/private/specs/modules/NativeUIManager.js +0 -7
  274. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  275. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  276. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  277. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  278. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  279. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  280. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  281. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  282. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  283. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  284. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  285. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  286. package/src/private/webapis/performance/EventCounts.js +1 -1
  287. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  288. package/src/private/webapis/performance/Performance.js +10 -56
  289. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  290. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  291. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  292. package/src/private/webapis/performance/UserTiming.js +63 -0
  293. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  294. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  295. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  296. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  297. package/stubs/glog/logging.h +1 -0
  298. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  299. package/template/cs-lib/proj/MyLib.csproj +1 -1
  300. package/template/metro.config.js +13 -2
  301. package/templates/cpp-app/template.config.js +1 -1
  302. package/templates/cpp-lib/example/metro.config.js +2 -2
  303. package/templates/cpp-lib/template.config.js +1 -1
  304. package/templates/old/generateWrapper.js +4 -1
  305. package/types/modules/globals.d.ts +4 -0
  306. package/Libraries/Lists/FlatList.windows.js +0 -717
  307. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  308. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  309. package/Libraries/Utilities/LoadingView.js +0 -16
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  312. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  313. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  314. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2377
  315. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -140
  316. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  317. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  318. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  319. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  320. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -366
  321. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  322. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  323. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  324. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  325. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  326. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  327. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  328. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  329. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  330. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  331. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  332. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  333. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  334. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  335. package/template/metro.devMode.config.js +0 -56
  336. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -125,15 +125,6 @@ inline Mso::Future<void> CompositionReactViewInstance::PostInUIQueue(TAction &&a
125
125
  return promise.AsFuture();
126
126
  }
127
127
 
128
- void ApplyConstraints(
129
- const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraintsIn,
130
- facebook::react::LayoutConstraints &layoutConstraintsOut) noexcept {
131
- layoutConstraintsOut.minimumSize = {layoutConstraintsIn.MinimumSize.Width, layoutConstraintsIn.MinimumSize.Height};
132
- layoutConstraintsOut.maximumSize = {layoutConstraintsIn.MaximumSize.Width, layoutConstraintsIn.MaximumSize.Height};
133
- layoutConstraintsOut.layoutDirection =
134
- static_cast<facebook::react::LayoutDirection>(layoutConstraintsIn.LayoutDirection);
135
- }
136
-
137
128
  ReactNativeIsland::ReactNativeIsland() noexcept {}
138
129
 
139
130
  #ifdef USE_WINUI3
@@ -145,7 +136,6 @@ ReactNativeIsland::~ReactNativeIsland() noexcept {
145
136
  #ifdef USE_WINUI3
146
137
  if (m_island && m_island.IsConnected()) {
147
138
  m_island.AutomationProviderRequested(m_islandAutomationProviderRequestedToken);
148
- m_island.StateChanged(m_islandStateChangedToken);
149
139
  }
150
140
  #endif
151
141
 
@@ -261,7 +251,6 @@ void ReactNativeIsland::ScaleFactor(float value) noexcept {
261
251
  rootView.Scale({invScale, invScale, invScale});
262
252
  }
263
253
  UpdateRootVisualSize();
264
- Arrange(m_layoutConstraints, m_viewportOffset);
265
254
  }
266
255
  }
267
256
 
@@ -426,6 +415,13 @@ void ReactNativeIsland::UpdateRootViewInternal() noexcept {
426
415
  }
427
416
  }
428
417
 
418
+ struct AutoMRE {
419
+ ~AutoMRE() {
420
+ mre.Set();
421
+ }
422
+ Mso::ManualResetEvent mre;
423
+ };
424
+
429
425
  void ReactNativeIsland::UninitRootView() noexcept {
430
426
  if (!m_isInitialized) {
431
427
  return;
@@ -442,8 +438,10 @@ void ReactNativeIsland::UninitRootView() noexcept {
442
438
  // This is needed to ensure that the unmount JS logic is completed before the the instance is shutdown during
443
439
  // instance destruction. Aligns with similar code in ReactInstanceWin::DetachRootView for paper Future: Instead this
444
440
  // method should return a Promise, which should be resolved when the JS logic is complete.
441
+ // The task will auto set the event on destruction to ensure that the event is set if the JS Queue has already been
442
+ // shutdown
445
443
  Mso::ManualResetEvent mre;
446
- m_context.JSDispatcher().Post([&]() { mre.Set(); });
444
+ m_context.JSDispatcher().Post([autoMRE = std::make_unique<AutoMRE>(AutoMRE{mre})]() {});
447
445
  mre.Wait();
448
446
 
449
447
  // Paper version gives the JS thread time to finish executing - Is this needed?
@@ -482,14 +480,10 @@ void ReactNativeIsland::ShowInstanceLoaded() noexcept {
482
480
  initProps = folly::dynamic::object();
483
481
  }
484
482
  initProps["concurrentRoot"] = true;
485
-
486
- facebook::react::LayoutConstraints fbLayoutConstraints;
487
- ApplyConstraints(m_layoutConstraints, fbLayoutConstraints);
488
-
489
483
  uiManager->startSurface(
490
484
  *this,
491
485
  static_cast<facebook::react::SurfaceId>(m_rootTag),
492
- fbLayoutConstraints,
486
+ m_layoutConstraints,
493
487
  to_string(m_reactViewOptions.ComponentName()),
494
488
  initProps);
495
489
 
@@ -506,21 +500,16 @@ facebook::react::AttributedStringBox CreateLoadingAttributedString() noexcept {
506
500
  return facebook::react::AttributedStringBox{attributedString};
507
501
  }
508
502
 
509
- facebook::react::Size MeasureLoading(
510
- const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraints,
511
- float scaleFactor) {
512
- facebook::react::LayoutConstraints fbLayoutConstraints;
513
- ApplyConstraints(layoutConstraints, fbLayoutConstraints);
514
-
503
+ facebook::react::Size MeasureLoading(const facebook::react::LayoutConstraints &layoutConstraints, float scaleFactor) {
515
504
  auto attributedStringBox = CreateLoadingAttributedString();
516
505
  winrt::com_ptr<::IDWriteTextLayout> textLayout;
517
506
  facebook::react::TextLayoutManager::GetTextLayout(
518
- attributedStringBox, {} /*paragraphAttributes*/, fbLayoutConstraints, textLayout);
507
+ attributedStringBox, {} /*paragraphAttributes*/, layoutConstraints, textLayout);
519
508
 
520
509
  DWRITE_TEXT_METRICS tm;
521
- textLayout->GetMetrics(&tm);
510
+ winrt::check_hresult(textLayout->GetMetrics(&tm));
522
511
 
523
- return fbLayoutConstraints.clamp(
512
+ return layoutConstraints.clamp(
524
513
  {loadingActivityHorizontalOffset * scaleFactor + tm.width, loadingBarHeight * scaleFactor});
525
514
  }
526
515
 
@@ -535,7 +524,7 @@ void ReactNativeIsland::SizeChanged(winrt::event_token const &token) noexcept {
535
524
  }
536
525
 
537
526
  struct RootViewSizeChangedEventArgs : RootViewSizeChangedEventArgsT<RootViewSizeChangedEventArgs> {
538
- RootViewSizeChangedEventArgs(winrt::Windows::Foundation::Size size) : m_size(size) {}
527
+ RootViewSizeChangedEventArgs(const winrt::Windows::Foundation::Size &size) : m_size(size) {}
539
528
  winrt::Windows::Foundation::Size Size() const noexcept {
540
529
  return m_size;
541
530
  }
@@ -645,6 +634,15 @@ void ReactNativeIsland::ShowInstanceLoading() noexcept {
645
634
  InternalRootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
646
635
  }
647
636
 
637
+ void ApplyConstraints(
638
+ const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraintsIn,
639
+ facebook::react::LayoutConstraints &layoutConstraintsOut) noexcept {
640
+ layoutConstraintsOut.minimumSize = {layoutConstraintsIn.MinimumSize.Width, layoutConstraintsIn.MinimumSize.Height};
641
+ layoutConstraintsOut.maximumSize = {layoutConstraintsIn.MaximumSize.Width, layoutConstraintsIn.MaximumSize.Height};
642
+ layoutConstraintsOut.layoutDirection =
643
+ static_cast<facebook::react::LayoutDirection>(layoutConstraintsIn.LayoutDirection);
644
+ }
645
+
648
646
  winrt::Windows::Foundation::Size ReactNativeIsland::Measure(
649
647
  const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraints,
650
648
  const winrt::Windows::Foundation::Point &viewportOffset) const noexcept {
@@ -665,7 +663,7 @@ winrt::Windows::Foundation::Size ReactNativeIsland::Measure(
665
663
  size = fabricuiManager->measureSurface(static_cast<facebook::react::SurfaceId>(m_rootTag), constraints, context);
666
664
  }
667
665
  } else if (m_loadingVisual) {
668
- size = MeasureLoading(layoutConstraints, m_scaleFactor);
666
+ size = MeasureLoading(constraints, m_scaleFactor);
669
667
  }
670
668
 
671
669
  auto clampedSize = constraints.clamp(size);
@@ -675,10 +673,7 @@ winrt::Windows::Foundation::Size ReactNativeIsland::Measure(
675
673
  void ReactNativeIsland::Arrange(
676
674
  const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraints,
677
675
  const winrt::Windows::Foundation::Point &viewportOffset) noexcept {
678
- m_layoutConstraints = layoutConstraints;
679
- m_viewportOffset = viewportOffset;
680
- facebook::react::LayoutConstraints fbLayoutConstraints;
681
- ApplyConstraints(layoutConstraints, fbLayoutConstraints);
676
+ ApplyConstraints(layoutConstraints, m_layoutConstraints);
682
677
 
683
678
  if (m_isInitialized && m_rootTag != -1) {
684
679
  if (auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
@@ -689,11 +684,11 @@ void ReactNativeIsland::Arrange(
689
684
  context.viewportOffset = {viewportOffset.X, viewportOffset.Y};
690
685
 
691
686
  fabricuiManager->constraintSurfaceLayout(
692
- static_cast<facebook::react::SurfaceId>(m_rootTag), fbLayoutConstraints, context);
687
+ static_cast<facebook::react::SurfaceId>(m_rootTag), m_layoutConstraints, context);
693
688
  }
694
689
  } else if (m_loadingVisual) {
695
690
  // TODO: Resize to align loading
696
- auto s = fbLayoutConstraints.clamp(MeasureLoading(layoutConstraints, m_scaleFactor));
691
+ auto s = m_layoutConstraints.clamp(MeasureLoading(m_layoutConstraints, m_scaleFactor));
697
692
  NotifySizeChanged();
698
693
  }
699
694
  }
@@ -743,17 +738,6 @@ winrt::Microsoft::UI::Content::ContentIsland ReactNativeIsland::Island() {
743
738
  pThis->m_island = nullptr;
744
739
  }
745
740
  });
746
-
747
- m_islandStateChangedToken =
748
- m_island.StateChanged([weakThis = get_weak()](
749
- winrt::Microsoft::UI::Content::ContentIsland const &island,
750
- winrt::Microsoft::UI::Content::ContentIslandStateChangedEventArgs const &args) {
751
- if (auto pThis = weakThis.get()) {
752
- if (args.DidRasterizationScaleChange()) {
753
- pThis->ScaleFactor(island.RasterizationScale());
754
- }
755
- }
756
- });
757
741
  }
758
742
  return m_island;
759
743
  }
@@ -125,7 +125,6 @@ struct ReactNativeIsland
125
125
  winrt::Microsoft::UI::Content::ContentIsland m_island{nullptr};
126
126
  winrt::event_token m_islandFrameworkClosedToken;
127
127
  winrt::event_token m_islandAutomationProviderRequestedToken;
128
- winrt::event_token m_islandStateChangedToken;
129
128
  #endif
130
129
 
131
130
  HWND m_hwnd{0};
@@ -148,8 +147,7 @@ struct ReactNativeIsland
148
147
  winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader m_resources{nullptr};
149
148
  winrt::Microsoft::ReactNative::Composition::Theme m_theme{nullptr};
150
149
  winrt::Microsoft::ReactNative::Composition::Theme::ThemeChanged_revoker m_themeChangedRevoker;
151
- winrt::Microsoft::ReactNative::LayoutConstraints m_layoutConstraints;
152
- winrt::Windows::Foundation::Point m_viewportOffset{0, 0};
150
+ facebook::react::LayoutConstraints m_layoutConstraints;
153
151
  winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Microsoft::ReactNative::RootViewSizeChangedEventArgs>>
154
152
  m_sizeChangedEvent;
155
153
 
@@ -1138,7 +1138,7 @@ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual ScrollViewComp
1138
1138
  updateStateWithContentOffset();
1139
1139
  auto eventEmitter = GetEventEmitter();
1140
1140
  if (eventEmitter) {
1141
- facebook::react::ScrollViewMetrics scrollMetrics;
1141
+ facebook::react::ScrollViewEventEmitter::Metrics scrollMetrics;
1142
1142
  scrollMetrics.containerSize.height = m_layoutMetrics.frame.size.height;
1143
1143
  scrollMetrics.containerSize.width = m_layoutMetrics.frame.size.width;
1144
1144
  scrollMetrics.contentOffset.x = args.Position().x / m_layoutMetrics.pointScaleFactor;
@@ -947,6 +947,10 @@ void WindowsTextInputComponentView::onGotFocus(
947
947
  LRESULT lresult;
948
948
  DrawBlock db(*this);
949
949
  m_textServices->TxSendMessage(WM_SETFOCUS, 0, 0, &lresult);
950
+
951
+ if (windowsTextInputProps().clearTextOnFocus) {
952
+ m_textServices->TxSetText(L"");
953
+ }
950
954
  }
951
955
  }
952
956
 
@@ -1112,8 +1116,6 @@ void WindowsTextInputComponentView::updateState(
1112
1116
  return;
1113
1117
  }
1114
1118
 
1115
- auto data = m_state->getData();
1116
-
1117
1119
  if (!oldState) {
1118
1120
  m_mostRecentEventCount = m_state->getData().mostRecentEventCount;
1119
1121
  }
@@ -1122,19 +1124,11 @@ void WindowsTextInputComponentView::updateState(
1122
1124
  m_comingFromState = true;
1123
1125
  // Only handle single/empty fragments right now -- ignore the other fragments
1124
1126
 
1125
- LRESULT res;
1126
- CHARRANGE cr;
1127
- cr.cpMin = cr.cpMax = 0;
1128
- winrt::check_hresult(m_textServices->TxSendMessage(EM_EXGETSEL, 0, reinterpret_cast<LPARAM>(&cr), &res));
1129
-
1130
1127
  UpdateText(
1131
1128
  m_state->getData().attributedString.getFragments().size()
1132
1129
  ? m_state->getData().attributedString.getFragments()[0].string
1133
1130
  : "");
1134
1131
 
1135
- winrt::check_hresult(
1136
- m_textServices->TxSendMessage(EM_SETSEL, static_cast<WPARAM>(cr.cpMin), static_cast<LPARAM>(cr.cpMax), &res));
1137
-
1138
1132
  m_comingFromState = false;
1139
1133
  }
1140
1134
  }
@@ -1153,7 +1147,8 @@ void WindowsTextInputComponentView::UpdateText(const std::string &str) noexcept
1153
1147
  winrt::check_hresult(m_textServices->TxSendMessage(
1154
1148
  EM_SETTEXTEX, reinterpret_cast<WPARAM>(&stt), reinterpret_cast<LPARAM>(str.c_str()), &res));
1155
1149
 
1156
- winrt::check_hresult(m_textServices->TxSendMessage(EM_EXGETSEL, 0, reinterpret_cast<LPARAM>(&cr), &res));
1150
+ winrt::check_hresult(
1151
+ m_textServices->TxSendMessage(EM_SETSEL, static_cast<WPARAM>(cr.cpMin), static_cast<LPARAM>(cr.cpMax), &res));
1157
1152
 
1158
1153
  // enable colored emojis
1159
1154
  winrt::check_hresult(
@@ -1216,7 +1211,7 @@ void WindowsTextInputComponentView::OnTextUpdated() noexcept {
1216
1211
  }
1217
1212
 
1218
1213
  void WindowsTextInputComponentView::OnSelectionChanged(LONG start, LONG end) noexcept {
1219
- if (m_eventEmitter /* && !m_comingFromJS ?? */) {
1214
+ if (m_eventEmitter && !m_comingFromState /* && !m_comingFromJS ?? */) {
1220
1215
  auto emitter = std::static_pointer_cast<const facebook::react::WindowsTextInputEventEmitter>(m_eventEmitter);
1221
1216
  facebook::react::WindowsTextInputEventEmitter::OnSelectionChange onSelectionChangeArgs;
1222
1217
  onSelectionChangeArgs.selection.start = start;
@@ -185,8 +185,7 @@ Size WindowsTextInputShadowNode::measureContent(
185
185
  AttributedStringBox{attributedString},
186
186
  {}, // TODO getConcreteProps().paragraphAttributes,
187
187
  textLayoutContext,
188
- layoutConstraints,
189
- nullptr)
188
+ layoutConstraints)
190
189
  .size;
191
190
  }
192
191
 
@@ -285,9 +285,15 @@ ImageResponseOrImageErrorInfo ImageResponse::ResolveImage() {
285
285
 
286
286
  ImageResponseOrImageErrorInfo ImageFailedResponse::ResolveImage() {
287
287
  ImageResponseOrImageErrorInfo imageOrError;
288
- imageOrError.errorInfo = winrt::to_string(m_errorMessage);
289
- if (imageOrError.errorInfo.empty()) {
290
- imageOrError.errorInfo = "Failed to load image.";
288
+ imageOrError.errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
289
+ imageOrError.errorInfo->responseCode = static_cast<int>(m_statusCode);
290
+ imageOrError.errorInfo->error = winrt::to_string(m_errorMessage);
291
+ if (imageOrError.errorInfo->error.empty()) {
292
+ imageOrError.errorInfo->error = "Failed to load image.";
293
+ }
294
+ for (auto &&[header, value] : m_responseHeaders) {
295
+ imageOrError.errorInfo->httpResponseHeaders.push_back(
296
+ std::make_pair<std::string, std::string>(winrt::to_string(header), winrt::to_string(value)));
291
297
  }
292
298
  return imageOrError;
293
299
  }
@@ -41,7 +41,7 @@ winrt::Microsoft::ReactNative::Composition::ImageSource MakeImageSource(
41
41
 
42
42
  struct ImageResponseOrImageErrorInfo {
43
43
  std::shared_ptr<winrt::Microsoft::ReactNative::Composition::implementation::ImageResponseImage> image;
44
- std::string errorInfo;
44
+ std::shared_ptr<facebook::react::ImageErrorInfo> errorInfo;
45
45
  };
46
46
 
47
47
  struct ImageResponse : ImageResponseT<ImageResponse /*, IResolveImage*/> {
@@ -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
 
@@ -87,11 +95,6 @@ WindowsImageManager::GetImageRandomAccessStreamAsync(ReactImageSource source) co
87
95
  }
88
96
 
89
97
  winrt::Windows::Storage::StorageFile file(co_await getFileSync);
90
-
91
- if (!file) {
92
- co_return winrt::Microsoft::ReactNative::Composition::ImageFailedResponse(L"Failed to get file.");
93
- }
94
-
95
98
  co_return winrt::Microsoft::ReactNative::Composition::StreamImageResponse(co_await file.OpenReadAsync());
96
99
  }
97
100
 
@@ -171,16 +174,20 @@ facebook::react::ImageRequest WindowsImageManager::requestImage(
171
174
  observerCoordinator->nativeImageResponseComplete(
172
175
  facebook::react::ImageResponse(imageResultOrError.image, nullptr /*metadata*/));
173
176
  } else {
174
- observerCoordinator->nativeImageResponseFailed();
177
+ observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(imageResultOrError.errorInfo));
175
178
  }
176
179
  break;
177
180
  }
178
181
  case winrt::Windows::Foundation::AsyncStatus::Canceled: {
179
- 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));
180
185
  break;
181
186
  }
182
187
  case winrt::Windows::Foundation::AsyncStatus::Error: {
183
- 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));
184
191
  break;
185
192
  }
186
193
  case winrt::Windows::Foundation::AsyncStatus::Started: {
@@ -202,8 +209,7 @@ ImageResponseOrImageErrorInfo StreamImageResponse::ResolveImage() {
202
209
  try {
203
210
  auto result = ::Microsoft::ReactNative::wicBitmapSourceFromStream(m_stream);
204
211
 
205
- auto &errorInfo = std::get<std::string>(result);
206
- if (!errorInfo.empty()) {
212
+ if (auto errorInfo = std::get<std::shared_ptr<facebook::react::ImageErrorInfo>>(result)) {
207
213
  imageOrError.errorInfo = errorInfo;
208
214
  return imageOrError;
209
215
  }
@@ -227,7 +233,8 @@ ImageResponseOrImageErrorInfo StreamImageResponse::ResolveImage() {
227
233
  winrt::check_hresult(imagingFactory->CreateBitmapFromSource(
228
234
  converter.get(), WICBitmapCacheOnLoad, imageOrError.image->m_wicbmp.put()));
229
235
  } catch (winrt::hresult_error const &ex) {
230
- 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));
231
238
  }
232
239
  return imageOrError;
233
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