react-native-windows 0.74.12 → 0.75.0-preview.2

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 (335) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Utilities.cpp +2 -2
  3. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  4. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  5. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  6. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  7. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  8. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  9. package/Libraries/Animated/useAnimatedProps.js +56 -28
  10. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  11. package/Libraries/Components/Button.js +10 -5
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  13. package/Libraries/Components/Flyout/Flyout.js +10 -10
  14. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  15. package/Libraries/Components/Pressable/Pressable.js +13 -6
  16. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  17. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  18. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  19. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  20. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  21. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  22. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  23. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  24. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  25. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  26. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  27. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  28. package/Libraries/Components/TextInput/TextInput.js +14 -70
  29. package/Libraries/Components/TextInput/TextInput.windows.js +15 -72
  30. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  31. package/Libraries/Components/Touchable/Touchable.js +2 -2
  32. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  33. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  34. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  35. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  36. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  37. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  39. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  40. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  41. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  42. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  43. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  44. package/Libraries/Components/View/View.js +0 -11
  45. package/Libraries/Components/View/View.windows.js +0 -11
  46. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  47. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  48. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  49. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  50. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  51. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  52. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  53. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  54. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  55. package/Libraries/Core/ErrorHandlers.js +116 -0
  56. package/Libraries/Core/ExceptionsManager.js +2 -2
  57. package/Libraries/Core/ReactNativeVersion.js +3 -3
  58. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  59. package/Libraries/Core/setUpPerformance.js +6 -4
  60. package/Libraries/Core/setUpReactDevTools.js +70 -10
  61. package/Libraries/Core/setUpTimers.js +50 -31
  62. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  63. package/Libraries/Image/Image.android.js +23 -13
  64. package/Libraries/Image/Image.d.ts +14 -15
  65. package/Libraries/Image/Image.ios.js +21 -11
  66. package/Libraries/Image/Image.windows.js +21 -11
  67. package/Libraries/Image/ImageProps.js +16 -5
  68. package/Libraries/Image/ImageTypes.flow.js +7 -2
  69. package/Libraries/Image/ImageUtils.js +1 -0
  70. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  71. package/Libraries/Inspector/ElementBox.js +6 -3
  72. package/Libraries/Inspector/ElementProperties.js +1 -1
  73. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  74. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  75. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  76. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  77. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  78. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  79. package/Libraries/LogBox/LogBox.js +29 -12
  80. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  81. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  82. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  83. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  84. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  85. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  86. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  87. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  88. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  89. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  90. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  91. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  92. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  93. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  94. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  95. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  96. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  97. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  98. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  99. package/Libraries/Network/XMLHttpRequest.js +5 -1
  100. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  101. package/Libraries/Pressability/Pressability.js +3 -51
  102. package/Libraries/Pressability/Pressability.windows.js +3 -51
  103. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  104. package/Libraries/ReactNative/AppRegistry.js +2 -4
  105. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  106. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  107. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  108. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  109. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  110. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  111. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  112. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  113. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  114. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  115. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  116. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  117. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  118. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  119. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  120. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  121. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  122. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  123. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  124. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  125. package/Libraries/Share/Share.d.ts +16 -10
  126. package/Libraries/Share/Share.js +14 -15
  127. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  128. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  129. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  130. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  131. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  132. package/Libraries/StyleSheet/processFilter.js +132 -0
  133. package/Libraries/StyleSheet/processTransform.js +18 -3
  134. package/Libraries/Text/Text.js +151 -128
  135. package/Libraries/Text/Text.windows.js +144 -128
  136. package/Libraries/Text/TextNativeComponent.js +5 -4
  137. package/Libraries/Text/TextProps.js +6 -6
  138. package/Libraries/Text/TextProps.windows.js +6 -6
  139. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  140. package/Libraries/Types/CodegenTypes.js +3 -0
  141. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  142. package/Libraries/Utilities/Dimensions.js +1 -0
  143. package/Libraries/Utilities/HMRClient.js +36 -8
  144. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  145. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  146. package/Libraries/Utilities/Platform.android.js +4 -4
  147. package/Libraries/Utilities/RCTLog.js +1 -0
  148. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  149. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  150. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  151. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  152. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  153. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  154. package/Microsoft.ReactNative/Composition.Input.idl +3 -3
  155. package/Microsoft.ReactNative/CompositionSwitcher.idl +0 -1
  156. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  157. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  158. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +0 -3
  159. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +2 -2
  160. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +4 -4
  161. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -10
  162. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -16
  163. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +48 -85
  165. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +0 -4
  166. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +24 -24
  167. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +6 -8
  168. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +0 -10
  169. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +0 -3
  170. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +29 -45
  171. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +1 -3
  172. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +6 -43
  173. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +23 -34
  174. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  175. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  176. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  177. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +17 -48
  178. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -7
  179. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -16
  180. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  184. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  185. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  186. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  187. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  188. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  189. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  190. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  191. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +13 -20
  192. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  193. package/Microsoft.ReactNative/Timer.idl +1 -3
  194. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  195. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  196. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  197. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  198. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  199. package/Microsoft.ReactNative/packages.lock.json +41 -78
  200. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  201. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  202. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  203. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  204. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  205. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  206. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  207. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  208. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  209. package/README.md +21 -21
  210. package/ReactCommon/ReactCommon.vcxproj +2 -0
  211. package/ReactCommon/ReactCommon.vcxproj.filters +3 -0
  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/Tfs/Layout-MSRN-Headers.ps1 +4 -0
  229. package/Scripts/rnw-dependencies.ps1 +36 -23
  230. package/Shared/HermesRuntimeHolder.cpp +19 -1
  231. package/Shared/HermesRuntimeHolder.h +8 -1
  232. package/Shared/HermesSamplingProfiler.cpp +1 -2
  233. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  234. package/Shared/OInstance.cpp +1 -2
  235. package/Shared/Shared.vcxitems +21 -15
  236. package/Shared/Shared.vcxitems.filters +8 -3
  237. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  238. package/Shared/Threading/BatchingQueueThread.h +2 -2
  239. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  240. package/codegen/NativeAppStateSpec.g.h +8 -8
  241. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  242. package/codegen/NativeDOMSpec.g.h +136 -0
  243. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  244. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  245. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  246. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  247. package/codegen/NativePerformanceSpec.g.h +35 -7
  248. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  249. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  250. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  251. package/codegen/NativeUIManagerSpec.g.h +5 -17
  252. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  253. package/codegen/react/components/rnwcore/Props.h +16 -12
  254. package/codegen/react/components/rnwcore/States.h +0 -26
  255. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  256. package/codegen/rnwcoreJSI.h +1374 -2867
  257. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  258. package/fmt/fmt.vcxproj +1 -1
  259. package/jest/mockComponent.js +7 -0
  260. package/jest/renderer.js +25 -14
  261. package/jest/setup.js +19 -13
  262. package/package.json +29 -27
  263. package/rn-get-polyfills.js +1 -0
  264. package/src/private/core/composeStyles.js +27 -0
  265. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  266. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  267. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  268. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  269. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  270. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  271. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  272. package/src/private/specs/modules/NativeUIManager.js +0 -7
  273. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  274. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  275. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  276. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  277. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  278. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  279. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  280. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  281. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  282. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  283. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  284. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  285. package/src/private/webapis/performance/EventCounts.js +1 -1
  286. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  287. package/src/private/webapis/performance/Performance.js +10 -56
  288. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  289. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  290. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  291. package/src/private/webapis/performance/UserTiming.js +63 -0
  292. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  293. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  294. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  295. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  296. package/stubs/glog/logging.h +1 -0
  297. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  298. package/template/cs-lib/proj/MyLib.csproj +1 -1
  299. package/template/metro.config.js +13 -2
  300. package/templates/cpp-app/template.config.js +1 -1
  301. package/templates/cpp-lib/example/metro.config.js +2 -2
  302. package/templates/cpp-lib/template.config.js +1 -1
  303. package/templates/old/generateWrapper.js +4 -1
  304. package/types/modules/globals.d.ts +4 -0
  305. package/Libraries/Lists/FlatList.windows.js +0 -717
  306. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  307. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  308. package/Libraries/Utilities/LoadingView.js +0 -16
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  312. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  313. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2377
  314. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -140
  315. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  316. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  317. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  318. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  319. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -366
  320. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  321. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  322. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  323. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  324. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  325. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  326. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  327. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  328. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  329. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  330. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  331. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  332. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  333. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  334. package/template/metro.devMode.config.js +0 -56
  335. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -65,14 +65,13 @@ struct ScrollBarComponent {
65
65
 
66
66
  updateShy(true);
67
67
  onScaleChanged();
68
- UpdateColorForScrollBarRegions();
68
+ OnThemeChanged();
69
69
  }
70
70
 
71
- void UpdateColorForScrollBarRegions() noexcept {
71
+ void OnThemeChanged() noexcept {
72
72
  updateHighlight(ScrollbarHitRegion::ArrowFirst);
73
73
  updateHighlight(ScrollbarHitRegion::ArrowLast);
74
74
  updateHighlight(ScrollbarHitRegion::Thumb);
75
-
76
75
  m_trackVisual.Brush(
77
76
  winrt::get_self<winrt::Microsoft::ReactNative::Composition::implementation::Theme>(m_outer.Theme())
78
77
  ->InternalPlatformBrush(L"ScrollBarTrackFill"));
@@ -727,14 +726,6 @@ void ScrollViewComponentView::updateProps(
727
726
 
728
727
  // update BaseComponentView props
729
728
  base_type::updateProps(props, oldProps);
730
-
731
- // Update the color only after updating the m_props in BaseComponentView
732
- // to avoid scrollbarcomponents reading outdated scrollEnabled value.
733
- if (!oldProps || oldViewProps.scrollEnabled != newViewProps.scrollEnabled) {
734
- m_scrollVisual.ScrollEnabled(newViewProps.scrollEnabled);
735
- m_horizontalScrollbarComponent->UpdateColorForScrollBarRegions();
736
- m_verticalScrollbarComponent->UpdateColorForScrollBarRegions();
737
- }
738
729
  }
739
730
 
740
731
  void ScrollViewComponentView::updateState(
@@ -834,8 +825,8 @@ void ScrollViewComponentView::OnPointerDown(const winrt::Windows::UI::Input::Poi
834
825
 
835
826
  void ScrollViewComponentView::onThemeChanged() noexcept {
836
827
  updateBackgroundColor(std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->backgroundColor);
837
- m_verticalScrollbarComponent->UpdateColorForScrollBarRegions();
838
- m_horizontalScrollbarComponent->UpdateColorForScrollBarRegions();
828
+ m_verticalScrollbarComponent->OnThemeChanged();
829
+ m_horizontalScrollbarComponent->OnThemeChanged();
839
830
  Super::onThemeChanged();
840
831
  }
841
832
 
@@ -928,10 +919,6 @@ void ScrollViewComponentView::OnKeyDown(
928
919
  }
929
920
 
930
921
  bool ScrollViewComponentView::scrollToEnd(bool animate) noexcept {
931
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
932
- return false;
933
- }
934
-
935
922
  if ((((m_contentSize.height - m_layoutMetrics.frame.size.height) * m_layoutMetrics.pointScaleFactor) -
936
923
  m_scrollVisual.ScrollPosition().y) < 1.0f) {
937
924
  return false;
@@ -944,10 +931,6 @@ bool ScrollViewComponentView::scrollToEnd(bool animate) noexcept {
944
931
  }
945
932
 
946
933
  bool ScrollViewComponentView::scrollToStart(bool animate) noexcept {
947
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
948
- return false;
949
- }
950
-
951
934
  m_scrollVisual.TryUpdatePosition({0.0f, 0.0f, 0.0f}, animate);
952
935
  return true;
953
936
  }
@@ -977,10 +960,6 @@ bool ScrollViewComponentView::lineRight(bool animate) noexcept {
977
960
  }
978
961
 
979
962
  bool ScrollViewComponentView::scrollDown(float delta, bool animate) noexcept {
980
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
981
- return false;
982
- }
983
-
984
963
  if (((m_contentSize.height - m_layoutMetrics.frame.size.height) * m_layoutMetrics.pointScaleFactor) -
985
964
  m_scrollVisual.ScrollPosition().y <
986
965
  1.0f) {
@@ -992,10 +971,6 @@ bool ScrollViewComponentView::scrollDown(float delta, bool animate) noexcept {
992
971
  }
993
972
 
994
973
  bool ScrollViewComponentView::scrollUp(float delta, bool animate) noexcept {
995
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
996
- return false;
997
- }
998
-
999
974
  if (m_scrollVisual.ScrollPosition().y <= 0.0f) {
1000
975
  return false;
1001
976
  }
@@ -1005,10 +980,6 @@ bool ScrollViewComponentView::scrollUp(float delta, bool animate) noexcept {
1005
980
  }
1006
981
 
1007
982
  bool ScrollViewComponentView::scrollLeft(float delta, bool animate) noexcept {
1008
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
1009
- return false;
1010
- }
1011
-
1012
983
  if (m_scrollVisual.ScrollPosition().x <= 0.0f) {
1013
984
  return false;
1014
985
  }
@@ -1018,10 +989,6 @@ bool ScrollViewComponentView::scrollLeft(float delta, bool animate) noexcept {
1018
989
  }
1019
990
 
1020
991
  bool ScrollViewComponentView::scrollRight(float delta, bool animate) noexcept {
1021
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
1022
- return false;
1023
- }
1024
-
1025
992
  if (((m_contentSize.width - m_layoutMetrics.frame.size.width) * m_layoutMetrics.pointScaleFactor) -
1026
993
  m_scrollVisual.ScrollPosition().x <
1027
994
  1.0f) {
@@ -1058,10 +1025,6 @@ void ScrollViewComponentView::HandleCommand(
1058
1025
  }
1059
1026
 
1060
1027
  void ScrollViewComponentView::scrollTo(winrt::Windows::Foundation::Numerics::float3 offset, bool animate) noexcept {
1061
- if (!std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
1062
- return;
1063
- }
1064
-
1065
1028
  m_scrollVisual.TryUpdatePosition(offset, animate);
1066
1029
  }
1067
1030
 
@@ -1134,7 +1097,7 @@ void ScrollViewComponentView::StartBringIntoView(
1134
1097
  scrollToHorizontal = options.TargetRect->getMidX() - (viewerWidth * options.HorizontalAlignmentRatio);
1135
1098
  }
1136
1099
 
1137
- if (needsScroll && std::static_pointer_cast<const facebook::react::ScrollViewProps>(viewProps())->scrollEnabled) {
1100
+ if (needsScroll) {
1138
1101
  m_scrollVisual.TryUpdatePosition(
1139
1102
  {static_cast<float>(scrollToHorizontal), static_cast<float>(scrollToVertical), 0.0f}, options.AnimationDesired);
1140
1103
  }
@@ -1175,7 +1138,7 @@ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual ScrollViewComp
1175
1138
  updateStateWithContentOffset();
1176
1139
  auto eventEmitter = GetEventEmitter();
1177
1140
  if (eventEmitter) {
1178
- facebook::react::ScrollViewMetrics scrollMetrics;
1141
+ facebook::react::ScrollViewEventEmitter::Metrics scrollMetrics;
1179
1142
  scrollMetrics.containerSize.height = m_layoutMetrics.frame.size.height;
1180
1143
  scrollMetrics.containerSize.width = m_layoutMetrics.frame.size.width;
1181
1144
  scrollMetrics.contentOffset.x = args.Position().x / m_layoutMetrics.pointScaleFactor;
@@ -11,7 +11,6 @@
11
11
  #include <Utils/ValueUtils.h>
12
12
  #include <tom.h>
13
13
  #include <unicode.h>
14
- #include <winrt/Microsoft.UI.Input.h>
15
14
  #include <winrt/Windows.System.h>
16
15
  #include <winrt/Windows.UI.h>
17
16
  #include "../CompositionHelpers.h"
@@ -755,8 +754,8 @@ void WindowsTextInputComponentView::OnKeyDown(
755
754
  // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
756
755
  // behavior We do forward Ctrl+Tab to the textinput.
757
756
  if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
758
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
759
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) {
757
+ source.GetKeyState(winrt::Windows::System::VirtualKey::Control) ==
758
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down) {
760
759
  WPARAM wParam = static_cast<WPARAM>(args.Key());
761
760
  LPARAM lParam = 0;
762
761
  lParam = args.KeyStatus().RepeatCount; // bits 0-15
@@ -785,8 +784,8 @@ void WindowsTextInputComponentView::OnKeyUp(
785
784
  // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
786
785
  // behavior We do forward Ctrl+Tab to the textinput.
787
786
  if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
788
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
789
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) {
787
+ source.GetKeyState(winrt::Windows::System::VirtualKey::Control) ==
788
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down) {
790
789
  WPARAM wParam = static_cast<WPARAM>(args.Key());
791
790
  LPARAM lParam = 1;
792
791
  lParam = args.KeyStatus().RepeatCount; // bits 0-15
@@ -824,21 +823,16 @@ bool WindowsTextInputComponentView::ShouldSubmit(
824
823
  // If 'submitKeyEvents' are supplied, use them to determine whether to emit onSubmitEditing' for either
825
824
  // single-line or multi-line TextInput
826
825
  if (args.KeyCode() == '\r') {
827
- bool shiftDown = (source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) &
828
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
829
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
830
- bool ctrlDown = (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
831
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
832
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
833
- bool altDown = (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
834
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
835
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
836
- bool metaDown = (source.GetKeyState(winrt::Windows::System::VirtualKey::LeftWindows) &
837
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
838
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down ||
839
- (source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) &
840
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
841
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
826
+ bool shiftDown = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) ==
827
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
828
+ bool ctrlDown = source.GetKeyState(winrt::Windows::System::VirtualKey::Control) ==
829
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
830
+ bool altDown = source.GetKeyState(winrt::Windows::System::VirtualKey::Control) ==
831
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
832
+ bool metaDown = source.GetKeyState(winrt::Windows::System::VirtualKey::LeftWindows) ==
833
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down ||
834
+ source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) ==
835
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
842
836
  return (submitKeyEvent.shiftKey && shiftDown) || (submitKeyEvent.ctrlKey && ctrlDown) ||
843
837
  (submitKeyEvent.altKey && altDown) || (submitKeyEvent.metaKey && metaDown) ||
844
838
  (!submitKeyEvent.shiftKey && !submitKeyEvent.altKey && !submitKeyEvent.metaKey && !submitKeyEvent.altKey &&
@@ -859,8 +853,8 @@ void WindowsTextInputComponentView::OnCharacterReceived(
859
853
  // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
860
854
  // behavior We do forward Ctrl+Tab to the textinput.
861
855
  if ((args.KeyCode() == '\t') &&
862
- ((source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
863
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) != winrt::Microsoft::UI::Input::VirtualKeyStates::Down)) {
856
+ (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) !=
857
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down)) {
864
858
  return;
865
859
  }
866
860
 
@@ -953,6 +947,10 @@ void WindowsTextInputComponentView::onGotFocus(
953
947
  LRESULT lresult;
954
948
  DrawBlock db(*this);
955
949
  m_textServices->TxSendMessage(WM_SETFOCUS, 0, 0, &lresult);
950
+
951
+ if (windowsTextInputProps().clearTextOnFocus) {
952
+ m_textServices->TxSetText(L"");
953
+ }
956
954
  }
957
955
  }
958
956
 
@@ -1118,8 +1116,6 @@ void WindowsTextInputComponentView::updateState(
1118
1116
  return;
1119
1117
  }
1120
1118
 
1121
- auto data = m_state->getData();
1122
-
1123
1119
  if (!oldState) {
1124
1120
  m_mostRecentEventCount = m_state->getData().mostRecentEventCount;
1125
1121
  }
@@ -1128,19 +1124,11 @@ void WindowsTextInputComponentView::updateState(
1128
1124
  m_comingFromState = true;
1129
1125
  // Only handle single/empty fragments right now -- ignore the other fragments
1130
1126
 
1131
- LRESULT res;
1132
- CHARRANGE cr;
1133
- cr.cpMin = cr.cpMax = 0;
1134
- winrt::check_hresult(m_textServices->TxSendMessage(EM_EXGETSEL, 0, reinterpret_cast<LPARAM>(&cr), &res));
1135
-
1136
1127
  UpdateText(
1137
1128
  m_state->getData().attributedString.getFragments().size()
1138
1129
  ? m_state->getData().attributedString.getFragments()[0].string
1139
1130
  : "");
1140
1131
 
1141
- winrt::check_hresult(
1142
- m_textServices->TxSendMessage(EM_SETSEL, static_cast<WPARAM>(cr.cpMin), static_cast<LPARAM>(cr.cpMax), &res));
1143
-
1144
1132
  m_comingFromState = false;
1145
1133
  }
1146
1134
  }
@@ -1159,7 +1147,8 @@ void WindowsTextInputComponentView::UpdateText(const std::string &str) noexcept
1159
1147
  winrt::check_hresult(m_textServices->TxSendMessage(
1160
1148
  EM_SETTEXTEX, reinterpret_cast<WPARAM>(&stt), reinterpret_cast<LPARAM>(str.c_str()), &res));
1161
1149
 
1162
- 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));
1163
1152
 
1164
1153
  // enable colored emojis
1165
1154
  winrt::check_hresult(
@@ -1222,7 +1211,7 @@ void WindowsTextInputComponentView::OnTextUpdated() noexcept {
1222
1211
  }
1223
1212
 
1224
1213
  void WindowsTextInputComponentView::OnSelectionChanged(LONG start, LONG end) noexcept {
1225
- if (m_eventEmitter /* && !m_comingFromJS ?? */) {
1214
+ if (m_eventEmitter && !m_comingFromState /* && !m_comingFromJS ?? */) {
1226
1215
  auto emitter = std::static_pointer_cast<const facebook::react::WindowsTextInputEventEmitter>(m_eventEmitter);
1227
1216
  facebook::react::WindowsTextInputEventEmitter::OnSelectionChange onSelectionChangeArgs;
1228
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 =
@@ -194,17 +182,7 @@ void FabricUIManager::constraintSurfaceLayout(
194
182
  m_surfaceManager->constraintSurfaceLayout(surfaceId, layoutConstraints, layoutContext);
195
183
  }
196
184
 
197
- winrt::Microsoft::ReactNative::ReactNotificationId<facebook::react::SurfaceId>
198
- FabricUIManager::NotifyMountedId() noexcept {
199
- return {L"ReactNative.Fabric", L"Mounted"};
200
- }
201
-
202
- void FabricUIManager::didMountComponentsWithRootTag(facebook::react::SurfaceId surfaceId) noexcept {
203
- m_context.UIDispatcher().Post([context = m_context, self = shared_from_this(), surfaceId]() {
204
- self->m_scheduler->reportMount(surfaceId);
205
- context.Notifications().SendNotification(NotifyMountedId(), surfaceId);
206
- });
207
- }
185
+ void FabricUIManager::didMountComponentsWithRootTag(facebook::react::SurfaceId surfaceId) noexcept {}
208
186
 
209
187
  void FabricUIManager::RCTPerformMountInstructions(
210
188
  facebook::react::ShadowViewMutationList const &mutations,
@@ -222,25 +200,11 @@ void FabricUIManager::RCTPerformMountInstructions(
222
200
  }
223
201
 
224
202
  case facebook::react::ShadowViewMutation::Delete: {
225
- // #define DETECT_COMPONENT_OUTLIVE_DELETE_MUTATION
226
- #ifdef DETECT_COMPONENT_OUTLIVE_DELETE_MUTATION
227
- winrt::weak_ref<winrt::Microsoft::ReactNative::ComponentView> wkView;
228
- #endif
229
- {
230
- auto &oldChildShadowView = mutation.oldChildShadowView;
231
- auto &oldChildViewDescriptor = m_registry.componentViewDescriptorWithTag(oldChildShadowView.tag);
232
- // observerCoordinator.unregisterViewComponentDescriptor(oldChildViewDescriptor, surfaceId);
233
- #ifdef DETECT_COMPONENT_OUTLIVE_DELETE_MUTATION
234
- wkView = winrt::make_weak(oldChildViewDescriptor.view);
235
- #endif
236
- m_registry.enqueueComponentViewWithComponentHandle(
237
- oldChildShadowView.componentHandle, oldChildShadowView.tag, oldChildViewDescriptor);
238
- }
239
- #ifdef DETECT_COMPONENT_OUTLIVE_DELETE_MUTATION
240
- // After handling a delete mutation, nothing should be holding on to the view. If there is thats an indication
241
- // of a leak, or at least something holding on to a view longer than it should
242
- assert(!wkView.get());
243
- #endif
203
+ auto &oldChildShadowView = mutation.oldChildShadowView;
204
+ auto &oldChildViewDescriptor = m_registry.componentViewDescriptorWithTag(oldChildShadowView.tag);
205
+ // observerCoordinator.unregisterViewComponentDescriptor(oldChildViewDescriptor, surfaceId);
206
+ m_registry.enqueueComponentViewWithComponentHandle(
207
+ oldChildShadowView.componentHandle, oldChildShadowView.tag, oldChildViewDescriptor);
244
208
  break;
245
209
  }
246
210
 
@@ -348,9 +312,6 @@ void FabricUIManager::initiateTransaction(facebook::react::MountingCoordinator::
348
312
  }
349
313
 
350
314
  void FabricUIManager::schedulerDidFinishTransaction(
351
- const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {}
352
-
353
- void FabricUIManager::schedulerShouldRenderTransactions(
354
315
  const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {
355
316
  // Should cache this locally
356
317
 
@@ -362,9 +323,17 @@ void FabricUIManager::schedulerShouldRenderTransactions(
362
323
  }
363
324
  }
364
325
 
365
- void FabricUIManager::schedulerDidRequestPreliminaryViewAllocation(
366
- facebook::react::SurfaceId surfaceId,
367
- 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) {
368
337
  // iOS does not do this optimization, but Android does. It maybe that android's allocations are more expensive due to
369
338
  // the Java boundary.
370
339
  // TODO: We should do some perf tests to see if this is worth doing.
@@ -52,8 +52,6 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
52
52
  winrt::Microsoft::ReactNative::ReactNativeIsland GetReactNativeIsland(
53
53
  facebook::react::SurfaceId surfaceId) const noexcept;
54
54
 
55
- static winrt::Microsoft::ReactNative::ReactNotificationId<facebook::react::SurfaceId> NotifyMountedId() noexcept;
56
-
57
55
  private:
58
56
  void installFabricUIManager() noexcept;
59
57
  void initiateTransaction(facebook::react::MountingCoordinator::Shared mountingCoordinator);
@@ -81,13 +79,11 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
81
79
  std::unordered_map<facebook::react::SurfaceId, SurfaceInfo> m_surfaceRegistry;
82
80
 
83
81
  // Inherited via SchedulerDelegate
84
- virtual void schedulerShouldRenderTransactions(
85
- const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
86
82
  virtual void schedulerDidFinishTransaction(
87
83
  const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
88
- virtual void schedulerDidRequestPreliminaryViewAllocation(
89
- facebook::react::SurfaceId surfaceId,
90
- 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;
91
87
  virtual void schedulerDidDispatchCommand(
92
88
  facebook::react::ShadowView const &shadowView,
93
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