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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Common.vcxproj +8 -0
  3. package/Common/Utilities.cpp +2 -2
  4. package/Directory.Build.targets +5 -0
  5. package/Folly/Folly.vcxproj +10 -2
  6. package/Folly/Folly.vcxproj.filters +0 -7
  7. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  8. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  9. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  10. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  11. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  12. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  13. package/Libraries/Animated/useAnimatedProps.js +56 -28
  14. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  15. package/Libraries/Components/Button.js +10 -5
  16. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  17. package/Libraries/Components/Flyout/Flyout.js +10 -10
  18. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  19. package/Libraries/Components/Pressable/Pressable.js +13 -6
  20. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  21. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  22. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  23. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  24. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  25. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  26. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  27. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  28. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  29. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  30. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  31. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  32. package/Libraries/Components/TextInput/TextInput.js +20 -73
  33. package/Libraries/Components/TextInput/TextInput.windows.js +21 -75
  34. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  35. package/Libraries/Components/Touchable/Touchable.js +2 -2
  36. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  37. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  39. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  40. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  41. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  42. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  43. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  44. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  45. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  46. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  47. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  48. package/Libraries/Components/View/View.js +0 -11
  49. package/Libraries/Components/View/View.windows.js +0 -11
  50. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  51. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  52. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  53. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  54. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  55. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  56. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  57. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  58. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  59. package/Libraries/Core/ErrorHandlers.js +116 -0
  60. package/Libraries/Core/ExceptionsManager.js +2 -2
  61. package/Libraries/Core/ReactNativeVersion.js +3 -3
  62. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  63. package/Libraries/Core/setUpPerformance.js +6 -4
  64. package/Libraries/Core/setUpReactDevTools.js +70 -10
  65. package/Libraries/Core/setUpTimers.js +50 -31
  66. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  67. package/Libraries/Image/Image.android.js +23 -13
  68. package/Libraries/Image/Image.d.ts +14 -15
  69. package/Libraries/Image/Image.ios.js +21 -11
  70. package/Libraries/Image/Image.windows.js +21 -11
  71. package/Libraries/Image/ImageProps.js +16 -5
  72. package/Libraries/Image/ImageTypes.flow.js +7 -2
  73. package/Libraries/Image/ImageUtils.js +1 -0
  74. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  75. package/Libraries/Inspector/ElementBox.js +6 -3
  76. package/Libraries/Inspector/ElementProperties.js +1 -1
  77. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  78. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  79. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  80. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  81. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  82. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  83. package/Libraries/LogBox/LogBox.js +29 -12
  84. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  85. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  86. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  87. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  88. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  89. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  90. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  91. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  92. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  93. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  94. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  95. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  96. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  97. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  98. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  99. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  101. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  102. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  103. package/Libraries/Network/XMLHttpRequest.js +5 -1
  104. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  105. package/Libraries/Pressability/Pressability.js +3 -51
  106. package/Libraries/Pressability/Pressability.windows.js +3 -51
  107. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  108. package/Libraries/ReactNative/AppRegistry.js +2 -4
  109. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  110. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  111. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  112. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  113. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  114. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  115. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  116. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  117. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  118. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  119. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  120. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  121. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  123. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  124. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  125. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  126. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  127. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  128. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  129. package/Libraries/Share/Share.d.ts +16 -10
  130. package/Libraries/Share/Share.js +14 -15
  131. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  132. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  133. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  134. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  135. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  136. package/Libraries/StyleSheet/processFilter.js +132 -0
  137. package/Libraries/StyleSheet/processTransform.js +18 -3
  138. package/Libraries/Text/Text.js +151 -128
  139. package/Libraries/Text/Text.windows.js +144 -127
  140. package/Libraries/Text/TextNativeComponent.js +5 -4
  141. package/Libraries/Text/TextProps.js +6 -6
  142. package/Libraries/Text/TextProps.windows.js +6 -6
  143. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  144. package/Libraries/Types/CodegenTypes.js +3 -0
  145. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  146. package/Libraries/Utilities/Dimensions.js +1 -0
  147. package/Libraries/Utilities/HMRClient.js +36 -8
  148. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  149. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  150. package/Libraries/Utilities/Platform.android.js +4 -4
  151. package/Libraries/Utilities/RCTLog.js +1 -0
  152. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  153. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  154. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  155. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  156. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  157. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  158. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  159. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  160. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
  161. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
  162. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +12 -3
  163. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
  165. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  166. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  167. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  168. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
  169. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
  170. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -11
  171. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  172. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  173. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  174. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  175. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  176. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  177. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  178. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  179. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  180. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  181. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  182. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
  183. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  184. package/Microsoft.ReactNative/Timer.idl +1 -3
  185. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  186. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  187. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  188. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  189. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  190. package/Microsoft.ReactNative/packages.lock.json +45 -72
  191. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  192. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  193. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  194. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  195. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  196. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  197. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  198. package/PropertySheets/ARM64EC.props +13 -0
  199. package/PropertySheets/Application/ARM64EC.props +13 -0
  200. package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
  201. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  202. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  203. package/PropertySheets/JSEngine.props +2 -0
  204. package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
  205. package/README.md +21 -21
  206. package/ReactCommon/ReactCommon.vcxproj +11 -1
  207. package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
  208. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  209. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  210. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  211. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  224. package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
  225. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +10 -6
  226. package/Scripts/rnw-dependencies.ps1 +36 -23
  227. package/Shared/HermesRuntimeHolder.cpp +19 -1
  228. package/Shared/HermesRuntimeHolder.h +8 -1
  229. package/Shared/HermesSamplingProfiler.cpp +1 -2
  230. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  231. package/Shared/OInstance.cpp +1 -2
  232. package/Shared/Shared.vcxitems +21 -15
  233. package/Shared/Shared.vcxitems.filters +8 -3
  234. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  235. package/Shared/Threading/BatchingQueueThread.h +2 -2
  236. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  237. package/codegen/NativeAppStateSpec.g.h +8 -8
  238. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  239. package/codegen/NativeDOMSpec.g.h +136 -0
  240. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  241. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  242. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  243. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  244. package/codegen/NativePerformanceSpec.g.h +35 -7
  245. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  246. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  247. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  248. package/codegen/NativeUIManagerSpec.g.h +5 -17
  249. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  250. package/codegen/react/components/rnwcore/Props.h +16 -12
  251. package/codegen/react/components/rnwcore/States.h +0 -26
  252. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  253. package/codegen/rnwcoreJSI.h +1374 -2867
  254. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  255. package/fmt/fmt.vcxproj +10 -2
  256. package/jest/mockComponent.js +7 -0
  257. package/jest/renderer.js +25 -14
  258. package/jest/setup.js +19 -13
  259. package/package.json +29 -27
  260. package/rn-get-polyfills.js +1 -0
  261. package/src/private/core/composeStyles.js +27 -0
  262. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  263. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  264. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  265. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  266. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  267. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  268. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  269. package/src/private/specs/modules/NativeUIManager.js +0 -7
  270. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  271. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  272. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  273. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  274. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  275. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  276. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  277. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  278. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  279. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  280. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  281. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  282. package/src/private/webapis/performance/EventCounts.js +1 -1
  283. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  284. package/src/private/webapis/performance/Performance.js +10 -56
  285. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  286. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  287. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  288. package/src/private/webapis/performance/UserTiming.js +63 -0
  289. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  290. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  291. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  292. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  293. package/stubs/glog/logging.h +1 -0
  294. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  295. package/template/cs-lib/proj/MyLib.csproj +1 -1
  296. package/template/metro.config.js +13 -2
  297. package/templates/cpp-app/template.config.js +1 -1
  298. package/templates/cpp-lib/example/metro.config.js +2 -2
  299. package/templates/cpp-lib/template.config.js +1 -1
  300. package/templates/old/generateWrapper.js +4 -1
  301. package/types/modules/globals.d.ts +4 -0
  302. package/Libraries/Lists/FlatList.windows.js +0 -717
  303. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  304. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  305. package/Libraries/Utilities/LoadingView.js +0 -16
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2375
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  312. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  313. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  314. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  315. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  316. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  317. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  318. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  319. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  320. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  321. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  322. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  323. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  324. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  325. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  326. package/template/metro.devMode.config.js +0 -56
  327. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -26,6 +26,7 @@ let hmrUnavailableReason: string | null = null;
26
26
  let currentCompileErrorMessage: string | null = null;
27
27
  let didConnect: boolean = false;
28
28
  let pendingLogs: Array<[LogLevel, $ReadOnlyArray<mixed>]> = [];
29
+ let pendingFuseboxConsoleNotification = false;
29
30
 
30
31
  type LogLevel =
31
32
  | 'trace'
@@ -51,6 +52,7 @@ export type HMRClientNativeInterface = {|
51
52
  isEnabled: boolean,
52
53
  scheme?: string,
53
54
  ): void,
55
+ unstable_notifyFuseboxConsoleEnabled(): void,
54
56
  |};
55
57
 
56
58
  /**
@@ -68,7 +70,7 @@ const HMRClient: HMRClientNativeInterface = {
68
70
  }
69
71
 
70
72
  invariant(hmrClient, 'Expected HMRClient.setup() call at startup.');
71
- const LoadingView = require('./LoadingView');
73
+ const DevLoadingView = require('./DevLoadingView');
72
74
 
73
75
  // We use this for internal logging only.
74
76
  // It doesn't affect the logic.
@@ -79,13 +81,13 @@ const HMRClient: HMRClientNativeInterface = {
79
81
  const hasUpdates = hmrClient.hasPendingUpdates();
80
82
 
81
83
  if (hasUpdates) {
82
- LoadingView.showMessage('Refreshing...', 'refresh');
84
+ DevLoadingView.showMessage('Refreshing...', 'refresh');
83
85
  }
84
86
  try {
85
87
  hmrClient.enable();
86
88
  } finally {
87
89
  if (hasUpdates) {
88
- LoadingView.hide();
90
+ DevLoadingView.hide();
89
91
  }
90
92
  }
91
93
 
@@ -140,6 +142,29 @@ const HMRClient: HMRClientNativeInterface = {
140
142
  }
141
143
  },
142
144
 
145
+ unstable_notifyFuseboxConsoleEnabled() {
146
+ if (!hmrClient) {
147
+ pendingFuseboxConsoleNotification = true;
148
+ return;
149
+ }
150
+ hmrClient.send(
151
+ JSON.stringify({
152
+ type: 'log',
153
+ level: 'info',
154
+ data: [
155
+ '\n' +
156
+ '\x1b[7m' +
157
+ ' \x1b[1mJavaScript logs have moved!\x1b[22m They will now appear in the debugger console. ' +
158
+ 'Tip: Type \x1b[1mj\x1b[22m in the terminal to open the debugger (requires Google Chrome ' +
159
+ 'or Microsoft Edge).' +
160
+ '\x1b[27m' +
161
+ '\n',
162
+ ],
163
+ }),
164
+ );
165
+ pendingFuseboxConsoleNotification = false;
166
+ },
167
+
143
168
  // Called once by the bridge on startup, even if Fast Refresh is off.
144
169
  // It creates the HMR client but doesn't actually set up the socket yet.
145
170
  setup(
@@ -156,7 +181,7 @@ const HMRClient: HMRClientNativeInterface = {
156
181
  invariant(!hmrClient, 'Cannot initialize hmrClient twice');
157
182
 
158
183
  // Moving to top gives errors due to NativeModules not being initialized
159
- const LoadingView = require('./LoadingView');
184
+ const DevLoadingView = require('./DevLoadingView');
160
185
 
161
186
  const serverHost = port !== null && port !== '' ? `${host}:${port}` : host;
162
187
 
@@ -205,7 +230,7 @@ Error: ${e.message}`;
205
230
  didConnect = true;
206
231
 
207
232
  if (client.isEnabled() && !isInitialUpdate) {
208
- LoadingView.showMessage('Refreshing...', 'refresh');
233
+ DevLoadingView.showMessage('Refreshing...', 'refresh');
209
234
  }
210
235
  });
211
236
 
@@ -217,11 +242,11 @@ Error: ${e.message}`;
217
242
  });
218
243
 
219
244
  client.on('update-done', () => {
220
- LoadingView.hide();
245
+ DevLoadingView.hide();
221
246
  });
222
247
 
223
248
  client.on('error', data => {
224
- LoadingView.hide();
249
+ DevLoadingView.hide();
225
250
 
226
251
  if (data.type === 'GraphNotFoundError') {
227
252
  client.close();
@@ -242,7 +267,7 @@ Error: ${e.message}`;
242
267
  });
243
268
 
244
269
  client.on('close', closeEvent => {
245
- LoadingView.hide();
270
+ DevLoadingView.hide();
246
271
 
247
272
  // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1
248
273
  // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5
@@ -316,6 +341,9 @@ function flushEarlyLogs(client: MetroHMRClient) {
316
341
  pendingLogs.forEach(([level, data]) => {
317
342
  HMRClient.log(level, data);
318
343
  });
344
+ if (pendingFuseboxConsoleNotification) {
345
+ HMRClient.unstable_notifyFuseboxConsoleEnabled();
346
+ }
319
347
  } finally {
320
348
  pendingLogs.length = 0;
321
349
  }
@@ -25,6 +25,7 @@ const HMRClientProdShim: HMRClientNativeInterface = {
25
25
  disable() {},
26
26
  registerBundle() {},
27
27
  log() {},
28
+ unstable_notifyFuseboxConsoleEnabled() {},
28
29
  };
29
30
 
30
31
  module.exports = HMRClientProdShim;
@@ -6,6 +6,6 @@
6
6
  * @flow strict
7
7
  */
8
8
 
9
- export * from '../../src/private/specs/modules/NativePlatformConstantsWin';
10
- import NativePlatformConstantsWin from '../../src/private/specs/modules/NativePlatformConstantsWin';
9
+ export * from '../../src/private/specs/modules/NativePlatformConstantsWindows';
10
+ import NativePlatformConstantsWin from '../../src/private/specs/modules/NativePlatformConstantsWindows';
11
11
  export default NativePlatformConstantsWin;
@@ -78,10 +78,10 @@ const Platform: PlatformType = {
78
78
  ? // $FlowFixMe[incompatible-return]
79
79
  spec.android
80
80
  : 'native' in spec
81
- ? // $FlowFixMe[incompatible-return]
82
- spec.native
83
- : // $FlowFixMe[incompatible-return]
84
- spec.default,
81
+ ? // $FlowFixMe[incompatible-return]
82
+ spec.native
83
+ : // $FlowFixMe[incompatible-return]
84
+ spec.default,
85
85
  };
86
86
 
87
87
  module.exports = Platform;
@@ -38,6 +38,7 @@ const RCTLog = {
38
38
 
39
39
  // Log to console regardless of nativeLoggingHook
40
40
  logToConsole(level: string, ...args: Array<mixed>): void {
41
+ // $FlowFixMe[invalid-computed-prop]
41
42
  const logFn = levelsMap[level];
42
43
  invariant(
43
44
  logFn,
@@ -12,20 +12,16 @@
12
12
 
13
13
  import type {ReactTestRenderer as ReactTestRendererType} from 'react-test-renderer';
14
14
 
15
+ import TouchableWithoutFeedback from '../Components/Touchable/TouchableWithoutFeedback';
16
+
15
17
  const Switch = require('../Components/Switch/Switch').default;
16
18
  const TextInput = require('../Components/TextInput/TextInput');
17
19
  const View = require('../Components/View/View');
18
20
  const Text = require('../Text/Text');
19
21
  const {VirtualizedList} = require('@react-native/virtualized-lists');
20
22
  const React = require('react');
21
- const ShallowRenderer = require('react-shallow-renderer');
22
23
  const ReactTestRenderer = require('react-test-renderer');
23
24
 
24
- /* $FlowFixMe[not-a-function] (>=0.125.1 site=react_native_fb) This comment
25
- * suppresses an error found when Flow v0.125.1 was deployed. To see the error,
26
- * delete this comment and run Flow. */
27
- // $FlowFixMe[invalid-constructor]
28
- const shallowRenderer = new ShallowRenderer();
29
25
  export type ReactTestInstance = $PropertyType<ReactTestRendererType, 'root'>;
30
26
  export type Predicate = (node: ReactTestInstance) => boolean;
31
27
  /* $FlowFixMe[value-as-type] (>=0.125.1 site=react_native_fb) This comment
@@ -49,6 +45,9 @@ function byClickable(): Predicate {
49
45
  (node.type === Switch && node.props && node.props.disabled !== true) ||
50
46
  (node.type === View &&
51
47
  node?.props?.onStartShouldSetResponder?.testOnly_pressabilityConfig) ||
48
+ (node.type === TouchableWithoutFeedback &&
49
+ node.props &&
50
+ typeof node.props.onPress === 'function') ||
52
51
  // HACK: Find components that use `Pressability`.
53
52
  node.instance?.state?.pressability != null ||
54
53
  // TODO: Remove this after deleting `Touchable`.
@@ -114,7 +113,7 @@ function expectNoConsoleError() {
114
113
  });
115
114
  }
116
115
 
117
- function expectRendersMatchingSnapshot(
116
+ async function expectRendersMatchingSnapshot(
118
117
  name: string,
119
118
  ComponentProvider: () => React.Element<any>,
120
119
  unmockComponent: () => mixed,
@@ -123,7 +122,9 @@ function expectRendersMatchingSnapshot(
123
122
 
124
123
  jest.resetAllMocks();
125
124
 
126
- instance = ReactTestRenderer.create(<ComponentProvider />);
125
+ await ReactTestRenderer.act(() => {
126
+ instance = ReactTestRenderer.create(<ComponentProvider />);
127
+ });
127
128
  expect(instance).toMatchSnapshot(
128
129
  'should deep render when mocked (please verify output manually)',
129
130
  );
@@ -131,22 +132,9 @@ function expectRendersMatchingSnapshot(
131
132
  jest.resetAllMocks();
132
133
  unmockComponent();
133
134
 
134
- instance = shallowRenderer.render(<ComponentProvider />);
135
- expect(instance).toMatchSnapshot(
136
- `should shallow render as <${name} /> when not mocked`,
137
- );
138
-
139
- jest.resetAllMocks();
140
-
141
- instance = shallowRenderer.render(<ComponentProvider />);
142
- expect(instance).toMatchSnapshot(
143
- `should shallow render as <${name} /> when mocked`,
144
- );
145
-
146
- jest.resetAllMocks();
147
- unmockComponent();
148
-
149
- instance = ReactTestRenderer.create(<ComponentProvider />);
135
+ await ReactTestRenderer.act(() => {
136
+ instance = ReactTestRenderer.create(<ComponentProvider />);
137
+ });
150
138
  expect(instance).toMatchSnapshot(
151
139
  'should deep render when not mocked (please verify output manually)',
152
140
  );
@@ -104,16 +104,21 @@ export function getConfigWithoutViewProps(
104
104
  viewConfig: ViewConfig,
105
105
  propName: string,
106
106
  ): {...} {
107
+ // $FlowFixMe[invalid-computed-prop]
107
108
  if (!viewConfig[propName]) {
108
109
  return {};
109
110
  }
110
111
 
111
- return Object.keys(viewConfig[propName])
112
- .filter(prop => !PlatformBaseViewConfig[propName][prop])
113
- .reduce<{[string]: any}>((obj, prop) => {
114
- obj[prop] = viewConfig[propName][prop];
115
- return obj;
116
- }, {});
112
+ return (
113
+ Object.keys(viewConfig[propName])
114
+ // $FlowFixMe[invalid-computed-prop]
115
+ .filter(prop => !PlatformBaseViewConfig[propName][prop])
116
+ .reduce<{[string]: any}>((obj, prop) => {
117
+ // $FlowFixMe[invalid-computed-prop]
118
+ obj[prop] = viewConfig[propName][prop];
119
+ return obj;
120
+ }, {})
121
+ );
117
122
  }
118
123
 
119
124
  export function stringifyViewConfig(viewConfig: any): string {
@@ -2,15 +2,15 @@
2
2
  'use strict';
3
3
 
4
4
  const React = require('react');
5
- const ReactTestRenderer = require('react-test-renderer');
6
-
5
+ const renderer = require('react-native/jest/renderer');
7
6
  const View = require('../Components/View/View');
8
7
 
9
8
  describe('View', () => {
10
- it('renders basic view', () => {
11
- const component = ReactTestRenderer.create(
9
+ it('renders basic view', async () => {
10
+ expect(
11
+ await renderer.create(
12
12
  <View/>
13
- );
14
- expect(component).toMatchSnapshot();
13
+ ),
14
+ ).toMatchSnapshot();
15
15
  });
16
16
  });
@@ -52,6 +52,7 @@ let rejectionTrackingOptions: $NonMaybeType<Parameters<enable>[0]> = {
52
52
  substitutions: [],
53
53
  },
54
54
  componentStack: [],
55
+ componentStackType: null,
55
56
  stack,
56
57
  category: 'possible_unhandled_promise_rejection',
57
58
  });
@@ -17,7 +17,7 @@
17
17
 
18
18
  #pragma warning(push)
19
19
  #pragma warning(disable : 4127) // conditional expression is constant
20
- #include <folly/container/detail/F14table.h>
20
+ #include <folly/container/detail/F14Table.h>
21
21
  #pragma warning(pop)
22
22
 
23
23
  #include <folly/Memory.h>
@@ -20,21 +20,6 @@ namespace Microsoft.ReactNative
20
20
  [experimental]
21
21
  delegate Object StateUpdateMutation(Object props);
22
22
 
23
- [webhosthidden]
24
- [experimental]
25
- enum EventPriority
26
- {
27
- SynchronousUnbatched,
28
- SynchronousBatched,
29
- AsynchronousUnbatched,
30
- AsynchronousBatched,
31
-
32
- Sync = SynchronousUnbatched,
33
- Work = SynchronousBatched,
34
- Interactive = AsynchronousUnbatched,
35
- Deferred = AsynchronousBatched
36
- };
37
-
38
23
  [flags]
39
24
  [webhosthidden]
40
25
  [experimental]
@@ -55,9 +40,7 @@ namespace Microsoft.ReactNative
55
40
  {
56
41
  Object Data { get; };
57
42
  void UpdateState(Object data);
58
- void UpdateStateWithPriority(Object data, EventPriority priority);
59
43
  void UpdateStateWithMutation(StateUpdateMutation mutation);
60
- void UpdateStateWithMutationAndPriority(StateUpdateMutation mutation, EventPriority priority);
61
44
  };
62
45
 
63
46
  [experimental]
@@ -19,53 +19,11 @@ void AbiComponentState::UpdateState(const winrt::Windows::Foundation::IInspectab
19
19
  m_state->updateState(std::move(state));
20
20
  }
21
21
 
22
- // Verify winrt::Microsoft::ReactNative::EventPriority and facebook::react::EventPriority are in sync
23
- static_assert(
24
- winrt::Microsoft::ReactNative::EventPriority::SynchronousUnbatched ==
25
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::SynchronousUnbatched));
26
- static_assert(
27
- winrt::Microsoft::ReactNative::EventPriority::SynchronousBatched ==
28
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::SynchronousBatched));
29
- static_assert(
30
- winrt::Microsoft::ReactNative::EventPriority::AsynchronousUnbatched ==
31
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::AsynchronousUnbatched));
32
- static_assert(
33
- winrt::Microsoft::ReactNative::EventPriority::AsynchronousBatched ==
34
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::AsynchronousBatched));
35
- static_assert(
36
- winrt::Microsoft::ReactNative::EventPriority::Sync ==
37
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::Sync));
38
- static_assert(
39
- winrt::Microsoft::ReactNative::EventPriority::Work ==
40
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::Work));
41
- static_assert(
42
- winrt::Microsoft::ReactNative::EventPriority::Interactive ==
43
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::Interactive));
44
- static_assert(
45
- winrt::Microsoft::ReactNative::EventPriority::Deferred ==
46
- static_cast<winrt::Microsoft::ReactNative::EventPriority>(facebook::react::EventPriority::Deferred));
47
-
48
- void AbiComponentState::UpdateStateWithPriority(
49
- const winrt::Windows::Foundation::IInspectable &data,
50
- winrt::Microsoft::ReactNative::EventPriority priority) noexcept {
51
- AbiStateData state;
52
- state.userdata = data;
53
- m_state->updateState(std::move(state), static_cast<facebook::react::EventPriority>(priority));
54
- }
55
-
56
22
  void AbiComponentState::UpdateStateWithMutation(
57
23
  const winrt::Microsoft::ReactNative::StateUpdateMutation &mutation) noexcept {
58
- UpdateStateWithMutationAndPriority(mutation, winrt::Microsoft::ReactNative::EventPriority::AsynchronousUnbatched);
59
- }
60
-
61
- void AbiComponentState::UpdateStateWithMutationAndPriority(
62
- const winrt::Microsoft::ReactNative::StateUpdateMutation &mutation,
63
- winrt::Microsoft::ReactNative::EventPriority priority) noexcept {
64
- m_state->updateState(
65
- [mutation](const AbiStateData &oldData) {
66
- return std::make_shared<AbiStateData const>(mutation(oldData.userdata));
67
- },
68
- static_cast<facebook::react::EventPriority>(priority));
24
+ m_state->updateState([mutation](const AbiStateData &oldData) {
25
+ return std::make_shared<AbiStateData const>(mutation(oldData.userdata));
26
+ });
69
27
  }
70
28
 
71
29
  } // namespace Microsoft::ReactNative
@@ -23,13 +23,7 @@ struct AbiComponentState : winrt::implements<AbiComponentState, winrt::Microsoft
23
23
 
24
24
  winrt::Windows::Foundation::IInspectable Data() noexcept;
25
25
  void UpdateState(const winrt::Windows::Foundation::IInspectable &data) noexcept;
26
- void UpdateStateWithPriority(
27
- const winrt::Windows::Foundation::IInspectable &data,
28
- winrt::Microsoft::ReactNative::EventPriority priority) noexcept;
29
26
  void UpdateStateWithMutation(const winrt::Microsoft::ReactNative::StateUpdateMutation &mutation) noexcept;
30
- void UpdateStateWithMutationAndPriority(
31
- const winrt::Microsoft::ReactNative::StateUpdateMutation &mutation,
32
- winrt::Microsoft::ReactNative::EventPriority priority) noexcept;
33
27
 
34
28
  private:
35
29
  std::shared_ptr<facebook::react::ConcreteState<AbiStateData> const> m_state;
@@ -34,7 +34,8 @@ ImageComponentView::WindowsImageResponseObserver::WindowsImageResponseObserver(I
34
34
  m_image.copy_from(&image);
35
35
  }
36
36
 
37
- void ImageComponentView::WindowsImageResponseObserver::didReceiveProgress(float progress) const {
37
+ void ImageComponentView::WindowsImageResponseObserver::didReceiveProgress(float progress, int64_t loaded, int64_t total)
38
+ const {
38
39
  // TODO progress?
39
40
  }
40
41
 
@@ -45,8 +46,9 @@ void ImageComponentView::WindowsImageResponseObserver::didReceiveImage(
45
46
  [imageResponseImage, image = m_image]() { image->didReceiveImage(imageResponseImage); });
46
47
  }
47
48
 
48
- void ImageComponentView::WindowsImageResponseObserver::didReceiveFailure() const {
49
- m_image->didReceiveFailureFromObserver();
49
+ void ImageComponentView::WindowsImageResponseObserver::didReceiveFailure(
50
+ facebook::react::ImageLoadError const &error) const {
51
+ m_image->didReceiveFailureFromObserver(error);
50
52
  }
51
53
 
52
54
  facebook::react::SharedViewProps ImageComponentView::defaultProps() noexcept {
@@ -92,7 +94,7 @@ void ImageComponentView::didReceiveImage(const std::shared_ptr<ImageResponseImag
92
94
 
93
95
  auto imageEventEmitter = std::static_pointer_cast<facebook::react::ImageEventEmitter const>(m_eventEmitter);
94
96
  if (imageEventEmitter) {
95
- imageEventEmitter->onLoad();
97
+ imageEventEmitter->onLoad(m_state->getData().getImageSource());
96
98
  imageEventEmitter->onLoadEnd();
97
99
  }
98
100
 
@@ -107,10 +109,12 @@ void ImageComponentView::didReceiveImage(const std::shared_ptr<ImageResponseImag
107
109
  ensureDrawingSurface();
108
110
  }
109
111
 
110
- void ImageComponentView::didReceiveFailureFromObserver() noexcept {
112
+ void ImageComponentView::didReceiveFailureFromObserver(const facebook::react::ImageLoadError &error) noexcept {
111
113
  auto imageEventEmitter = std::static_pointer_cast<facebook::react::ImageEventEmitter const>(m_eventEmitter);
112
114
  if (imageEventEmitter) {
113
- imageEventEmitter->onError();
115
+ std::shared_ptr<facebook::react::ImageErrorInfo> errorInfo =
116
+ std::static_pointer_cast<facebook::react::ImageErrorInfo>(error.getError());
117
+ imageEventEmitter->onError(*errorInfo);
114
118
  imageEventEmitter->onLoadEnd();
115
119
  }
116
120
  }
@@ -70,9 +70,9 @@ struct ImageComponentView : ImageComponentViewT<ImageComponentView, ViewComponen
70
70
  struct WindowsImageResponseObserver : facebook::react::ImageResponseObserver {
71
71
  public:
72
72
  WindowsImageResponseObserver(ImageComponentView &image);
73
- void didReceiveProgress(float progress) const override;
74
- void didReceiveImage(facebook::react::ImageResponse const &imageResponse) const override;
75
- void didReceiveFailure() const override;
73
+ void didReceiveProgress(float progress, int64_t loaded, int64_t total) const override;
74
+ void didReceiveImage(const facebook::react::ImageResponse &imageResponse) const override;
75
+ void didReceiveFailure(const facebook::react::ImageLoadError &error) const override;
76
76
 
77
77
  private:
78
78
  winrt::com_ptr<ImageComponentView> m_image;
@@ -84,7 +84,7 @@ struct ImageComponentView : ImageComponentViewT<ImageComponentView, ViewComponen
84
84
  void ImageLoadStart() noexcept;
85
85
  void ImageLoaded() noexcept;
86
86
  void didReceiveImage(const std::shared_ptr<ImageResponseImage> &wicbmp) noexcept;
87
- void didReceiveFailureFromObserver() noexcept;
87
+ void didReceiveFailureFromObserver(const facebook::react::ImageLoadError &error) noexcept;
88
88
  void setStateAndResubscribeImageResponseObserver(
89
89
  facebook::react::ImageShadowNode::ConcreteState::Shared const &state) noexcept;
90
90
  bool themeEffectsImage() const noexcept;
@@ -415,6 +415,13 @@ void ReactNativeIsland::UpdateRootViewInternal() noexcept {
415
415
  }
416
416
  }
417
417
 
418
+ struct AutoMRE {
419
+ ~AutoMRE() {
420
+ mre.Set();
421
+ }
422
+ Mso::ManualResetEvent mre;
423
+ };
424
+
418
425
  void ReactNativeIsland::UninitRootView() noexcept {
419
426
  if (!m_isInitialized) {
420
427
  return;
@@ -431,8 +438,10 @@ void ReactNativeIsland::UninitRootView() noexcept {
431
438
  // This is needed to ensure that the unmount JS logic is completed before the the instance is shutdown during
432
439
  // instance destruction. Aligns with similar code in ReactInstanceWin::DetachRootView for paper Future: Instead this
433
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
434
443
  Mso::ManualResetEvent mre;
435
- m_context.JSDispatcher().Post([&]() { mre.Set(); });
444
+ m_context.JSDispatcher().Post([autoMRE = std::make_unique<AutoMRE>(AutoMRE{mre})]() {});
436
445
  mre.Wait();
437
446
 
438
447
  // Paper version gives the JS thread time to finish executing - Is this needed?
@@ -498,7 +507,7 @@ facebook::react::Size MeasureLoading(const facebook::react::LayoutConstraints &l
498
507
  attributedStringBox, {} /*paragraphAttributes*/, layoutConstraints, textLayout);
499
508
 
500
509
  DWRITE_TEXT_METRICS tm;
501
- textLayout->GetMetrics(&tm);
510
+ winrt::check_hresult(textLayout->GetMetrics(&tm));
502
511
 
503
512
  return layoutConstraints.clamp(
504
513
  {loadingActivityHorizontalOffset * scaleFactor + tm.width, loadingBarHeight * scaleFactor});
@@ -515,7 +524,7 @@ void ReactNativeIsland::SizeChanged(winrt::event_token const &token) noexcept {
515
524
  }
516
525
 
517
526
  struct RootViewSizeChangedEventArgs : RootViewSizeChangedEventArgsT<RootViewSizeChangedEventArgs> {
518
- RootViewSizeChangedEventArgs(winrt::Windows::Foundation::Size size) : m_size(size) {}
527
+ RootViewSizeChangedEventArgs(const winrt::Windows::Foundation::Size &size) : m_size(size) {}
519
528
  winrt::Windows::Foundation::Size Size() const noexcept {
520
529
  return m_size;
521
530
  }
@@ -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*/> {