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
@@ -16,7 +16,6 @@
16
16
  #include <Utils/ValueUtils.h>
17
17
  #include <Views/FrameworkElementTransferProperties.h>
18
18
  #include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
19
- #include <winrt/Microsoft.UI.Input.h>
20
19
  #include <winrt/Windows.UI.Composition.h>
21
20
  #include "CompositionContextHelper.h"
22
21
  #include "CompositionDynamicAutomationProvider.h"
@@ -180,46 +179,11 @@ const facebook::react::LayoutMetrics &ComponentView::layoutMetrics() const noexc
180
179
  return m_layoutMetrics;
181
180
  }
182
181
 
183
- void ComponentView::FinalizeTransform(
184
- facebook::react::LayoutMetrics const &layoutMetrics,
185
- const facebook::react::ViewProps &viewProps) noexcept {
186
- const auto resolveTransformMatrix = viewProps.resolveTransform(layoutMetrics);
187
- winrt::Windows::Foundation::Numerics::float4x4 transformMatrix;
188
- transformMatrix.m11 = resolveTransformMatrix.matrix[0];
189
- transformMatrix.m12 = resolveTransformMatrix.matrix[1];
190
- transformMatrix.m13 = resolveTransformMatrix.matrix[2];
191
- transformMatrix.m14 = resolveTransformMatrix.matrix[3];
192
- transformMatrix.m21 = resolveTransformMatrix.matrix[4];
193
- transformMatrix.m22 = resolveTransformMatrix.matrix[5];
194
- transformMatrix.m23 = resolveTransformMatrix.matrix[6];
195
- transformMatrix.m24 = resolveTransformMatrix.matrix[7];
196
- transformMatrix.m31 = resolveTransformMatrix.matrix[8];
197
- transformMatrix.m32 = resolveTransformMatrix.matrix[9];
198
- transformMatrix.m33 = resolveTransformMatrix.matrix[10];
199
- transformMatrix.m34 = resolveTransformMatrix.matrix[11];
200
- transformMatrix.m41 = resolveTransformMatrix.matrix[12];
201
- transformMatrix.m42 = resolveTransformMatrix.matrix[13];
202
- transformMatrix.m43 = resolveTransformMatrix.matrix[14];
203
- transformMatrix.m44 = resolveTransformMatrix.matrix[15];
204
-
205
- auto centerPointPropSet = EnsureCenterPointPropertySet();
206
- if (centerPointPropSet) {
207
- centerPointPropSet.InsertMatrix4x4(L"transform", transformMatrix);
208
- }
209
-
210
- EnsureTransformMatrixFacade();
211
- m_FinalizeTransform = false;
212
- }
213
-
214
182
  void ComponentView::FinalizeUpdates(winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept {
215
183
  if ((m_flags & ComponentViewFeatures::NativeBorder) == ComponentViewFeatures::NativeBorder) {
216
184
  finalizeBorderUpdates(m_layoutMetrics, *viewProps());
217
185
  }
218
186
 
219
- if (m_FinalizeTransform) {
220
- FinalizeTransform(m_layoutMetrics, *viewProps());
221
- }
222
-
223
187
  base_type::FinalizeUpdates(updateMask);
224
188
  }
225
189
 
@@ -638,8 +602,6 @@ void SetBorderLayerPropertiesCommon(
638
602
  facebook::react::BorderStyle borderStyle) {
639
603
  layer.Offset({anchorOffset.x, anchorOffset.y, 0}, {anchorPoint.x, anchorPoint.y, 0});
640
604
  layer.RelativeSizeWithOffset(size, relativeSizeAdjustment);
641
- layer.as<::Microsoft::ReactNative::Composition::Experimental::IVisualInterop>()->SetClippingPath(nullptr);
642
-
643
605
  if ((textureRect.right - textureRect.left) <= 0 || (textureRect.bottom - textureRect.top) <= 0)
644
606
  return;
645
607
 
@@ -741,8 +703,7 @@ void SetBorderLayerProperties(
741
703
  // if (VisualVersion::IsUseWinCompClippingRegionEnabled())
742
704
  {
743
705
  layer.Offset({anchorOffset.x, anchorOffset.y, 0}, {anchorPoint.x, anchorPoint.y, 0});
744
- layer.RelativeSizeWithOffset(
745
- {textureRect.right - textureRect.left, textureRect.bottom - textureRect.top}, {0.0f, 0.0f});
706
+ layer.Size({textureRect.right - textureRect.left, textureRect.bottom - textureRect.top});
746
707
 
747
708
  layer.Brush(theme->Brush(*borderColor));
748
709
 
@@ -1281,7 +1242,30 @@ void ComponentView::updateTransformProps(
1281
1242
 
1282
1243
  // Transform - TODO doesn't handle multiple of the same kind of transform -- Doesn't handle hittesting updates
1283
1244
  if (oldViewProps.transform != newViewProps.transform) {
1284
- m_FinalizeTransform = true;
1245
+ winrt::Windows::Foundation::Numerics::float4x4 transformMatrix;
1246
+ transformMatrix.m11 = newViewProps.transform.matrix[0];
1247
+ transformMatrix.m12 = newViewProps.transform.matrix[1];
1248
+ transformMatrix.m13 = newViewProps.transform.matrix[2];
1249
+ transformMatrix.m14 = newViewProps.transform.matrix[3];
1250
+ transformMatrix.m21 = newViewProps.transform.matrix[4];
1251
+ transformMatrix.m22 = newViewProps.transform.matrix[5];
1252
+ transformMatrix.m23 = newViewProps.transform.matrix[6];
1253
+ transformMatrix.m24 = newViewProps.transform.matrix[7];
1254
+ transformMatrix.m31 = newViewProps.transform.matrix[8];
1255
+ transformMatrix.m32 = newViewProps.transform.matrix[9];
1256
+ transformMatrix.m33 = newViewProps.transform.matrix[10];
1257
+ transformMatrix.m34 = newViewProps.transform.matrix[11];
1258
+ transformMatrix.m41 = newViewProps.transform.matrix[12];
1259
+ transformMatrix.m42 = newViewProps.transform.matrix[13];
1260
+ transformMatrix.m43 = newViewProps.transform.matrix[14];
1261
+ transformMatrix.m44 = newViewProps.transform.matrix[15];
1262
+
1263
+ auto centerPointPropSet = EnsureCenterPointPropertySet();
1264
+ if (centerPointPropSet) {
1265
+ centerPointPropSet.InsertMatrix4x4(L"transform", transformMatrix);
1266
+ }
1267
+
1268
+ EnsureTransformMatrixFacade();
1285
1269
  }
1286
1270
  }
1287
1271
 
@@ -1630,10 +1614,7 @@ inline winrt::Windows::System::VirtualKey GetLeftOrRightModifiedKey(
1630
1614
  const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
1631
1615
  winrt::Windows::System::VirtualKey leftKey,
1632
1616
  winrt::Windows::System::VirtualKey rightKey) {
1633
- return ((source.GetKeyState(leftKey) & winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
1634
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down)
1635
- ? leftKey
1636
- : rightKey;
1617
+ return (source.GetKeyState(leftKey) == winrt::Windows::UI::Core::CoreVirtualKeyStates::Down) ? leftKey : rightKey;
1637
1618
  }
1638
1619
 
1639
1620
  std::string CodeFromVirtualKey(
@@ -1666,20 +1647,16 @@ void ViewComponentView::OnKeyDown(
1666
1647
  const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
1667
1648
  const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
1668
1649
  auto eventCode = CodeFromVirtualKey(source, args.Key());
1669
- bool fShift =
1670
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) &
1671
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
1672
- bool fAlt =
1673
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Menu) &
1674
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
1675
- bool fCtrl =
1676
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
1677
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
1678
- bool fMeta =
1679
- ((source.GetKeyState(winrt::Windows::System::VirtualKey::LeftWindows) &
1680
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ||
1681
- ((source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) &
1682
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down);
1650
+ bool fShift = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) !=
1651
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
1652
+ bool fAlt = source.GetKeyState(winrt::Windows::System::VirtualKey::Menu) !=
1653
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
1654
+ bool fCtrl = source.GetKeyState(winrt::Windows::System::VirtualKey::Control) !=
1655
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
1656
+ bool fMeta = (source.GetKeyState(winrt::Windows::System::VirtualKey::LeftWindows) !=
1657
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None) ||
1658
+ (source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) !=
1659
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None);
1683
1660
 
1684
1661
  if (args.OriginalSource() == Tag() && !args.Handled()) {
1685
1662
  facebook::react::KeyEvent event;
@@ -1688,12 +1665,7 @@ void ViewComponentView::OnKeyDown(
1688
1665
  event.altKey = fAlt;
1689
1666
  event.metaKey = fMeta;
1690
1667
 
1691
- event.key = ::Microsoft::ReactNative::FromVirtualKey(
1692
- args.Key(),
1693
- event.shiftKey,
1694
- !!((source.GetKeyState(winrt::Windows::System::VirtualKey::CapitalLock) &
1695
- winrt::Microsoft::UI::Input::VirtualKeyStates::Locked) ==
1696
- winrt::Microsoft::UI::Input::VirtualKeyStates::Locked));
1668
+ event.key = ::Microsoft::ReactNative::FromVirtualKey(args.Key(), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
1697
1669
  event.code = eventCode;
1698
1670
  m_eventEmitter->onKeyDown(event);
1699
1671
  }
@@ -1714,20 +1686,16 @@ void ViewComponentView::OnKeyUp(
1714
1686
  const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
1715
1687
  const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
1716
1688
  auto eventCode = CodeFromVirtualKey(source, args.Key());
1717
- bool fShift =
1718
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) &
1719
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
1720
- bool fAlt =
1721
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Menu) &
1722
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
1723
- bool fCtrl =
1724
- (source.GetKeyState(winrt::Windows::System::VirtualKey::Control) &
1725
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down;
1726
- bool fMeta =
1727
- ((source.GetKeyState(winrt::Windows::System::VirtualKey::LeftWindows) &
1728
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ||
1729
- ((source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) &
1730
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) == winrt::Microsoft::UI::Input::VirtualKeyStates::Down);
1689
+ bool fShift = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) !=
1690
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
1691
+ bool fAlt = source.GetKeyState(winrt::Windows::System::VirtualKey::Menu) !=
1692
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
1693
+ bool fCtrl = source.GetKeyState(winrt::Windows::System::VirtualKey::Control) !=
1694
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
1695
+ bool fMeta = (source.GetKeyState(winrt::Windows::System::VirtualKey::LeftWindows) !=
1696
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None) ||
1697
+ (source.GetKeyState(winrt::Windows::System::VirtualKey::RightWindows) !=
1698
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None);
1731
1699
 
1732
1700
  if (args.OriginalSource() == Tag()) {
1733
1701
  facebook::react::KeyEvent event;
@@ -1736,12 +1704,7 @@ void ViewComponentView::OnKeyUp(
1736
1704
  event.altKey = fAlt;
1737
1705
  event.metaKey = fMeta;
1738
1706
 
1739
- event.key = ::Microsoft::ReactNative::FromVirtualKey(
1740
- args.Key(),
1741
- event.shiftKey,
1742
- !!((source.GetKeyState(winrt::Windows::System::VirtualKey::CapitalLock) &
1743
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
1744
- winrt::Microsoft::UI::Input::VirtualKeyStates::Down));
1707
+ event.key = ::Microsoft::ReactNative::FromVirtualKey(args.Key(), event.shiftKey, !!(GetKeyState(VK_CAPITAL) & 1));
1745
1708
  event.code = eventCode;
1746
1709
  m_eventEmitter->onKeyUp(event);
1747
1710
  }
@@ -168,11 +168,7 @@ struct ComponentView
168
168
  std::array<winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual, SpecialBorderLayerCount>
169
169
  FindSpecialBorderLayers() const noexcept;
170
170
  void UpdateCenterPropertySet() noexcept;
171
- void FinalizeTransform(
172
- facebook::react::LayoutMetrics const &layoutMetrics,
173
- const facebook::react::ViewProps &viewProps) noexcept;
174
171
 
175
- bool m_FinalizeTransform{false};
176
172
  ComponentViewFeatures m_flags;
177
173
  void showFocusVisual(bool show) noexcept;
178
174
  winrt::Microsoft::ReactNative::Composition::Experimental::IFocusVisual m_focusVisual{nullptr};
@@ -30,30 +30,25 @@ extern "C" HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT SDKVersion, IWICIma
30
30
 
31
31
  namespace winrt::Microsoft::ReactNative::Composition::implementation {
32
32
 
33
- ImageComponentView::WindowsImageResponseObserver::WindowsImageResponseObserver(
34
- winrt::weak_ref<winrt::Microsoft::ReactNative::Composition::implementation::ImageComponentView> wkImage)
35
- : m_wkImage(std::move(wkImage)) {}
33
+ ImageComponentView::WindowsImageResponseObserver::WindowsImageResponseObserver(ImageComponentView &image) {
34
+ m_image.copy_from(&image);
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
 
41
42
  void ImageComponentView::WindowsImageResponseObserver::didReceiveImage(
42
43
  facebook::react::ImageResponse const &imageResponse) const {
43
- if (auto imgComponentView{m_wkImage.get()}) {
44
- auto imageResponseImage = std::static_pointer_cast<ImageResponseImage>(imageResponse.getImage());
45
- imgComponentView->m_reactContext.UIDispatcher().Post([imageResponseImage, wkImage = m_wkImage]() {
46
- if (auto image{wkImage.get()}) {
47
- image->didReceiveImage(imageResponseImage);
48
- }
49
- });
50
- }
44
+ auto imageResponseImage = std::static_pointer_cast<ImageResponseImage>(imageResponse.getImage());
45
+ m_image->m_reactContext.UIDispatcher().Post(
46
+ [imageResponseImage, image = m_image]() { image->didReceiveImage(imageResponseImage); });
51
47
  }
52
48
 
53
- void ImageComponentView::WindowsImageResponseObserver::didReceiveFailure() const {
54
- if (auto imgComponentView{m_wkImage.get()}) {
55
- imgComponentView->didReceiveFailureFromObserver();
56
- }
49
+ void ImageComponentView::WindowsImageResponseObserver::didReceiveFailure(
50
+ facebook::react::ImageLoadError const &error) const {
51
+ m_image->didReceiveFailureFromObserver(error);
57
52
  }
58
53
 
59
54
  facebook::react::SharedViewProps ImageComponentView::defaultProps() noexcept {
@@ -99,7 +94,7 @@ void ImageComponentView::didReceiveImage(const std::shared_ptr<ImageResponseImag
99
94
 
100
95
  auto imageEventEmitter = std::static_pointer_cast<facebook::react::ImageEventEmitter const>(m_eventEmitter);
101
96
  if (imageEventEmitter) {
102
- imageEventEmitter->onLoad();
97
+ imageEventEmitter->onLoad(m_state->getData().getImageSource());
103
98
  imageEventEmitter->onLoadEnd();
104
99
  }
105
100
 
@@ -114,10 +109,12 @@ void ImageComponentView::didReceiveImage(const std::shared_ptr<ImageResponseImag
114
109
  ensureDrawingSurface();
115
110
  }
116
111
 
117
- void ImageComponentView::didReceiveFailureFromObserver() noexcept {
112
+ void ImageComponentView::didReceiveFailureFromObserver(const facebook::react::ImageLoadError &error) noexcept {
118
113
  auto imageEventEmitter = std::static_pointer_cast<facebook::react::ImageEventEmitter const>(m_eventEmitter);
119
114
  if (imageEventEmitter) {
120
- imageEventEmitter->onError();
115
+ std::shared_ptr<facebook::react::ImageErrorInfo> errorInfo =
116
+ std::static_pointer_cast<facebook::react::ImageErrorInfo>(error.getError());
117
+ imageEventEmitter->onError(*errorInfo);
121
118
  imageEventEmitter->onLoadEnd();
122
119
  }
123
120
  }
@@ -149,7 +146,14 @@ void ImageComponentView::updateState(
149
146
  auto newImageState = std::static_pointer_cast<facebook::react::ImageShadowNode::ConcreteState const>(state);
150
147
 
151
148
  if (!m_imageResponseObserver) {
152
- m_imageResponseObserver = std::make_shared<WindowsImageResponseObserver>(get_weak());
149
+ // Should ViewComponents enable_shared_from_this? then we don't need this dance to get a shared_ptr
150
+ std::shared_ptr<::Microsoft::ReactNative::FabricUIManager> fabricuiManager =
151
+ ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_reactContext.Properties());
152
+ auto componentViewDescriptor = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(m_tag);
153
+
154
+ m_imageResponseObserver = std::make_shared<WindowsImageResponseObserver>(
155
+ *componentViewDescriptor.view
156
+ .as<winrt::Microsoft::ReactNative::Composition::implementation::ImageComponentView>());
153
157
  }
154
158
 
155
159
  setStateAndResubscribeImageResponseObserver(newImageState);
@@ -178,10 +182,6 @@ void ImageComponentView::setStateAndResubscribeImageResponseObserver(
178
182
  }
179
183
  }
180
184
 
181
- void ImageComponentView::prepareForRecycle() noexcept {
182
- setStateAndResubscribeImageResponseObserver(nullptr);
183
- }
184
-
185
185
  winrt::Microsoft::ReactNative::ImageProps ImageComponentView::ImageProps() noexcept {
186
186
  // We do not currently support custom ImageComponentView's
187
187
  // If we did we would need to create a AbiImageProps and possibly return them here
@@ -47,7 +47,6 @@ struct ImageComponentView : ImageComponentViewT<ImageComponentView, ViewComponen
47
47
  override;
48
48
  void updateState(facebook::react::State::Shared const &state, facebook::react::State::Shared const &oldState) noexcept
49
49
  override;
50
- void prepareForRecycle() noexcept override;
51
50
  void OnRenderingDeviceLost() noexcept override;
52
51
  void onThemeChanged() noexcept override;
53
52
 
@@ -70,14 +69,13 @@ struct ImageComponentView : ImageComponentViewT<ImageComponentView, ViewComponen
70
69
  private:
71
70
  struct WindowsImageResponseObserver : facebook::react::ImageResponseObserver {
72
71
  public:
73
- WindowsImageResponseObserver(
74
- winrt::weak_ref<winrt::Microsoft::ReactNative::Composition::implementation::ImageComponentView> wkImage);
75
- void didReceiveProgress(float progress) const override;
76
- void didReceiveImage(facebook::react::ImageResponse const &imageResponse) const override;
77
- void didReceiveFailure() const override;
72
+ WindowsImageResponseObserver(ImageComponentView &image);
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;
78
76
 
79
77
  private:
80
- winrt::weak_ref<winrt::Microsoft::ReactNative::Composition::implementation::ImageComponentView> m_wkImage;
78
+ winrt::com_ptr<ImageComponentView> m_image;
81
79
  };
82
80
 
83
81
  void ensureDrawingSurface() noexcept;
@@ -86,7 +84,7 @@ struct ImageComponentView : ImageComponentViewT<ImageComponentView, ViewComponen
86
84
  void ImageLoadStart() noexcept;
87
85
  void ImageLoaded() noexcept;
88
86
  void didReceiveImage(const std::shared_ptr<ImageResponseImage> &wicbmp) noexcept;
89
- void didReceiveFailureFromObserver() noexcept;
87
+ void didReceiveFailureFromObserver(const facebook::react::ImageLoadError &error) noexcept;
90
88
  void setStateAndResubscribeImageResponseObserver(
91
89
  facebook::react::ImageShadowNode::ConcreteState::Shared const &state) noexcept;
92
90
  bool themeEffectsImage() const noexcept;
@@ -83,16 +83,6 @@ void ParagraphComponentView::updateState(
83
83
  m_textLayout = nullptr;
84
84
  }
85
85
 
86
- void ParagraphComponentView::updateLayoutMetrics(
87
- facebook::react::LayoutMetrics const &layoutMetrics,
88
- facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
89
- Super::updateLayoutMetrics(layoutMetrics, oldLayoutMetrics);
90
-
91
- if (layoutMetrics.pointScaleFactor != oldLayoutMetrics.pointScaleFactor) {
92
- m_textLayout = nullptr;
93
- }
94
- }
95
-
96
86
  void ParagraphComponentView::FinalizeUpdates(
97
87
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept {
98
88
  ensureVisual();
@@ -34,9 +34,6 @@ struct ParagraphComponentView : ParagraphComponentViewT<ParagraphComponentView,
34
34
  void updateProps(facebook::react::Props::Shared const &props, facebook::react::Props::Shared const &oldProps) noexcept
35
35
  override;
36
36
  void updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept override;
37
- void updateLayoutMetrics(
38
- facebook::react::LayoutMetrics const &layoutMetrics,
39
- facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept override;
40
37
  void updateState(facebook::react::State::Shared const &state, facebook::react::State::Shared const &oldState) noexcept
41
38
  override;
42
39
  void FinalizeUpdates(winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept override;
@@ -125,15 +125,6 @@ inline Mso::Future<void> CompositionReactViewInstance::PostInUIQueue(TAction &&a
125
125
  return promise.AsFuture();
126
126
  }
127
127
 
128
- void ApplyConstraints(
129
- const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraintsIn,
130
- facebook::react::LayoutConstraints &layoutConstraintsOut) noexcept {
131
- layoutConstraintsOut.minimumSize = {layoutConstraintsIn.MinimumSize.Width, layoutConstraintsIn.MinimumSize.Height};
132
- layoutConstraintsOut.maximumSize = {layoutConstraintsIn.MaximumSize.Width, layoutConstraintsIn.MaximumSize.Height};
133
- layoutConstraintsOut.layoutDirection =
134
- static_cast<facebook::react::LayoutDirection>(layoutConstraintsIn.LayoutDirection);
135
- }
136
-
137
128
  ReactNativeIsland::ReactNativeIsland() noexcept {}
138
129
 
139
130
  #ifdef USE_WINUI3
@@ -145,7 +136,6 @@ ReactNativeIsland::~ReactNativeIsland() noexcept {
145
136
  #ifdef USE_WINUI3
146
137
  if (m_island && m_island.IsConnected()) {
147
138
  m_island.AutomationProviderRequested(m_islandAutomationProviderRequestedToken);
148
- m_island.StateChanged(m_islandStateChangedToken);
149
139
  }
150
140
  #endif
151
141
 
@@ -261,7 +251,6 @@ void ReactNativeIsland::ScaleFactor(float value) noexcept {
261
251
  rootView.Scale({invScale, invScale, invScale});
262
252
  }
263
253
  UpdateRootVisualSize();
264
- Arrange(m_layoutConstraints, m_viewportOffset);
265
254
  }
266
255
  }
267
256
 
@@ -426,6 +415,13 @@ void ReactNativeIsland::UpdateRootViewInternal() noexcept {
426
415
  }
427
416
  }
428
417
 
418
+ struct AutoMRE {
419
+ ~AutoMRE() {
420
+ mre.Set();
421
+ }
422
+ Mso::ManualResetEvent mre;
423
+ };
424
+
429
425
  void ReactNativeIsland::UninitRootView() noexcept {
430
426
  if (!m_isInitialized) {
431
427
  return;
@@ -442,8 +438,10 @@ void ReactNativeIsland::UninitRootView() noexcept {
442
438
  // This is needed to ensure that the unmount JS logic is completed before the the instance is shutdown during
443
439
  // instance destruction. Aligns with similar code in ReactInstanceWin::DetachRootView for paper Future: Instead this
444
440
  // method should return a Promise, which should be resolved when the JS logic is complete.
441
+ // The task will auto set the event on destruction to ensure that the event is set if the JS Queue has already been
442
+ // shutdown
445
443
  Mso::ManualResetEvent mre;
446
- m_context.JSDispatcher().Post([&]() { mre.Set(); });
444
+ m_context.JSDispatcher().Post([autoMRE = std::make_unique<AutoMRE>(AutoMRE{mre})]() {});
447
445
  mre.Wait();
448
446
 
449
447
  // Paper version gives the JS thread time to finish executing - Is this needed?
@@ -482,14 +480,10 @@ void ReactNativeIsland::ShowInstanceLoaded() noexcept {
482
480
  initProps = folly::dynamic::object();
483
481
  }
484
482
  initProps["concurrentRoot"] = true;
485
-
486
- facebook::react::LayoutConstraints fbLayoutConstraints;
487
- ApplyConstraints(m_layoutConstraints, fbLayoutConstraints);
488
-
489
483
  uiManager->startSurface(
490
484
  *this,
491
485
  static_cast<facebook::react::SurfaceId>(m_rootTag),
492
- fbLayoutConstraints,
486
+ m_layoutConstraints,
493
487
  to_string(m_reactViewOptions.ComponentName()),
494
488
  initProps);
495
489
 
@@ -506,21 +500,16 @@ facebook::react::AttributedStringBox CreateLoadingAttributedString() noexcept {
506
500
  return facebook::react::AttributedStringBox{attributedString};
507
501
  }
508
502
 
509
- facebook::react::Size MeasureLoading(
510
- const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraints,
511
- float scaleFactor) {
512
- facebook::react::LayoutConstraints fbLayoutConstraints;
513
- ApplyConstraints(layoutConstraints, fbLayoutConstraints);
514
-
503
+ facebook::react::Size MeasureLoading(const facebook::react::LayoutConstraints &layoutConstraints, float scaleFactor) {
515
504
  auto attributedStringBox = CreateLoadingAttributedString();
516
505
  winrt::com_ptr<::IDWriteTextLayout> textLayout;
517
506
  facebook::react::TextLayoutManager::GetTextLayout(
518
- attributedStringBox, {} /*paragraphAttributes*/, fbLayoutConstraints, textLayout);
507
+ attributedStringBox, {} /*paragraphAttributes*/, layoutConstraints, textLayout);
519
508
 
520
509
  DWRITE_TEXT_METRICS tm;
521
- textLayout->GetMetrics(&tm);
510
+ winrt::check_hresult(textLayout->GetMetrics(&tm));
522
511
 
523
- return fbLayoutConstraints.clamp(
512
+ return layoutConstraints.clamp(
524
513
  {loadingActivityHorizontalOffset * scaleFactor + tm.width, loadingBarHeight * scaleFactor});
525
514
  }
526
515
 
@@ -535,7 +524,7 @@ void ReactNativeIsland::SizeChanged(winrt::event_token const &token) noexcept {
535
524
  }
536
525
 
537
526
  struct RootViewSizeChangedEventArgs : RootViewSizeChangedEventArgsT<RootViewSizeChangedEventArgs> {
538
- RootViewSizeChangedEventArgs(winrt::Windows::Foundation::Size size) : m_size(size) {}
527
+ RootViewSizeChangedEventArgs(const winrt::Windows::Foundation::Size &size) : m_size(size) {}
539
528
  winrt::Windows::Foundation::Size Size() const noexcept {
540
529
  return m_size;
541
530
  }
@@ -645,6 +634,15 @@ void ReactNativeIsland::ShowInstanceLoading() noexcept {
645
634
  InternalRootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
646
635
  }
647
636
 
637
+ void ApplyConstraints(
638
+ const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraintsIn,
639
+ facebook::react::LayoutConstraints &layoutConstraintsOut) noexcept {
640
+ layoutConstraintsOut.minimumSize = {layoutConstraintsIn.MinimumSize.Width, layoutConstraintsIn.MinimumSize.Height};
641
+ layoutConstraintsOut.maximumSize = {layoutConstraintsIn.MaximumSize.Width, layoutConstraintsIn.MaximumSize.Height};
642
+ layoutConstraintsOut.layoutDirection =
643
+ static_cast<facebook::react::LayoutDirection>(layoutConstraintsIn.LayoutDirection);
644
+ }
645
+
648
646
  winrt::Windows::Foundation::Size ReactNativeIsland::Measure(
649
647
  const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraints,
650
648
  const winrt::Windows::Foundation::Point &viewportOffset) const noexcept {
@@ -665,7 +663,7 @@ winrt::Windows::Foundation::Size ReactNativeIsland::Measure(
665
663
  size = fabricuiManager->measureSurface(static_cast<facebook::react::SurfaceId>(m_rootTag), constraints, context);
666
664
  }
667
665
  } else if (m_loadingVisual) {
668
- size = MeasureLoading(layoutConstraints, m_scaleFactor);
666
+ size = MeasureLoading(constraints, m_scaleFactor);
669
667
  }
670
668
 
671
669
  auto clampedSize = constraints.clamp(size);
@@ -675,10 +673,7 @@ winrt::Windows::Foundation::Size ReactNativeIsland::Measure(
675
673
  void ReactNativeIsland::Arrange(
676
674
  const winrt::Microsoft::ReactNative::LayoutConstraints &layoutConstraints,
677
675
  const winrt::Windows::Foundation::Point &viewportOffset) noexcept {
678
- m_layoutConstraints = layoutConstraints;
679
- m_viewportOffset = viewportOffset;
680
- facebook::react::LayoutConstraints fbLayoutConstraints;
681
- ApplyConstraints(layoutConstraints, fbLayoutConstraints);
676
+ ApplyConstraints(layoutConstraints, m_layoutConstraints);
682
677
 
683
678
  if (m_isInitialized && m_rootTag != -1) {
684
679
  if (auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
@@ -689,11 +684,11 @@ void ReactNativeIsland::Arrange(
689
684
  context.viewportOffset = {viewportOffset.X, viewportOffset.Y};
690
685
 
691
686
  fabricuiManager->constraintSurfaceLayout(
692
- static_cast<facebook::react::SurfaceId>(m_rootTag), fbLayoutConstraints, context);
687
+ static_cast<facebook::react::SurfaceId>(m_rootTag), m_layoutConstraints, context);
693
688
  }
694
689
  } else if (m_loadingVisual) {
695
690
  // TODO: Resize to align loading
696
- auto s = fbLayoutConstraints.clamp(MeasureLoading(layoutConstraints, m_scaleFactor));
691
+ auto s = m_layoutConstraints.clamp(MeasureLoading(m_layoutConstraints, m_scaleFactor));
697
692
  NotifySizeChanged();
698
693
  }
699
694
  }
@@ -743,17 +738,6 @@ winrt::Microsoft::UI::Content::ContentIsland ReactNativeIsland::Island() {
743
738
  pThis->m_island = nullptr;
744
739
  }
745
740
  });
746
-
747
- m_islandStateChangedToken =
748
- m_island.StateChanged([weakThis = get_weak()](
749
- winrt::Microsoft::UI::Content::ContentIsland const &island,
750
- winrt::Microsoft::UI::Content::ContentIslandStateChangedEventArgs const &args) {
751
- if (auto pThis = weakThis.get()) {
752
- if (args.DidRasterizationScaleChange()) {
753
- pThis->ScaleFactor(island.RasterizationScale());
754
- }
755
- }
756
- });
757
741
  }
758
742
  return m_island;
759
743
  }
@@ -125,7 +125,6 @@ struct ReactNativeIsland
125
125
  winrt::Microsoft::UI::Content::ContentIsland m_island{nullptr};
126
126
  winrt::event_token m_islandFrameworkClosedToken;
127
127
  winrt::event_token m_islandAutomationProviderRequestedToken;
128
- winrt::event_token m_islandStateChangedToken;
129
128
  #endif
130
129
 
131
130
  HWND m_hwnd{0};
@@ -148,8 +147,7 @@ struct ReactNativeIsland
148
147
  winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader m_resources{nullptr};
149
148
  winrt::Microsoft::ReactNative::Composition::Theme m_theme{nullptr};
150
149
  winrt::Microsoft::ReactNative::Composition::Theme::ThemeChanged_revoker m_themeChangedRevoker;
151
- winrt::Microsoft::ReactNative::LayoutConstraints m_layoutConstraints;
152
- winrt::Windows::Foundation::Point m_viewportOffset{0, 0};
150
+ facebook::react::LayoutConstraints m_layoutConstraints;
153
151
  winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Microsoft::ReactNative::RootViewSizeChangedEventArgs>>
154
152
  m_sizeChangedEvent;
155
153