react-native-windows 0.69.6 → 0.70.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 (296) hide show
  1. package/.flowconfig +5 -1
  2. package/Chakra/ChakraHelpers.cpp +1 -1
  3. package/Chakra/ChakraPlatform.cpp +1 -1
  4. package/Chakra/ChakraValue.cpp +6 -3
  5. package/Chakra/ChakraValue.h +1 -1
  6. package/Directory.Build.props +7 -7
  7. package/Folly/Folly.vcxproj +20 -13
  8. package/Folly/cgmanifest.json +14 -0
  9. package/Libraries/Alert/Alert.js +18 -4
  10. package/Libraries/Alert/Alert.windows.js +4 -0
  11. package/Libraries/Alert/NativeAlertManager.js +1 -0
  12. package/Libraries/Animated/Animated.js +2 -2
  13. package/Libraries/Animated/AnimatedEvent.js +7 -4
  14. package/Libraries/Animated/AnimatedImplementation.js +17 -3
  15. package/Libraries/Animated/AnimatedMock.js +7 -2
  16. package/Libraries/Animated/NativeAnimatedHelper.js +220 -95
  17. package/Libraries/Animated/NativeAnimatedModule.js +3 -0
  18. package/Libraries/Animated/NativeAnimatedTurboModule.js +3 -0
  19. package/Libraries/Animated/animations/SpringAnimation.js +3 -3
  20. package/Libraries/Animated/animations/TimingAnimation.js +3 -3
  21. package/Libraries/Animated/createAnimatedComponent.js +8 -1
  22. package/Libraries/Animated/nodes/AnimatedAddition.js +3 -1
  23. package/Libraries/Animated/nodes/AnimatedColor.js +50 -29
  24. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +3 -1
  25. package/Libraries/Animated/nodes/AnimatedDivision.js +3 -1
  26. package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -21
  27. package/Libraries/Animated/nodes/AnimatedModulo.js +3 -1
  28. package/Libraries/Animated/nodes/AnimatedMultiplication.js +3 -2
  29. package/Libraries/Animated/nodes/AnimatedProps.js +20 -12
  30. package/Libraries/Animated/nodes/AnimatedStyle.js +19 -16
  31. package/Libraries/Animated/nodes/AnimatedSubtraction.js +3 -1
  32. package/Libraries/Animated/nodes/AnimatedTransform.js +5 -5
  33. package/Libraries/Animated/nodes/AnimatedValue.js +14 -5
  34. package/Libraries/Animated/nodes/AnimatedValueXY.js +28 -1
  35. package/Libraries/Animated/useAnimatedProps.js +1 -0
  36. package/Libraries/AppState/AppState.js +0 -32
  37. package/Libraries/AppTheme/AppTheme.js +14 -8
  38. package/Libraries/AppTheme/AppThemeTypes.d.ts +0 -3
  39. package/Libraries/BatchedBridge/MessageQueue.js +21 -15
  40. package/Libraries/BatchedBridge/NativeModules.js +3 -4
  41. package/Libraries/Blob/FileReader.js +0 -6
  42. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +0 -20
  43. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +0 -20
  44. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  45. package/Libraries/Components/Keyboard/Keyboard.js +0 -11
  46. package/Libraries/Components/Pressable/Pressable.js +2 -0
  47. package/Libraries/Components/Pressable/Pressable.windows.js +2 -0
  48. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -3
  49. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -30
  50. package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +4 -30
  51. package/Libraries/Components/ScrollView/ScrollView.js +13 -11
  52. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -3
  53. package/Libraries/Components/StatusBar/StatusBar.js +10 -7
  54. package/Libraries/Components/TextInput/InputAccessoryView.js +14 -13
  55. package/Libraries/Components/TextInput/TextInput.js +12 -2
  56. package/Libraries/Components/TextInput/TextInput.windows.js +12 -2
  57. package/Libraries/Components/Touchable/PooledClass.js +16 -4
  58. package/Libraries/Components/Touchable/Touchable.js +50 -1
  59. package/Libraries/Components/Touchable/Touchable.windows.js +972 -0
  60. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -2
  61. package/Libraries/Components/View/ReactNativeStyleAttributes.js +0 -7
  62. package/Libraries/Components/View/ViewPropTypes.js +3 -8
  63. package/Libraries/Components/View/ViewPropTypes.windows.js +3 -8
  64. package/Libraries/Core/ExceptionsManager.js +2 -0
  65. package/Libraries/Core/ReactNativeVersion.js +2 -2
  66. package/Libraries/Core/Timers/JSTimers.js +2 -2
  67. package/Libraries/Core/polyfillPromise.js +0 -32
  68. package/Libraries/Core/setUpBatchedBridge.js +5 -1
  69. package/Libraries/Core/setUpPerformance.js +1 -1
  70. package/Libraries/EventEmitter/NativeEventEmitter.js +0 -13
  71. package/Libraries/Image/AssetSourceResolver.js +2 -2
  72. package/Libraries/Image/Image.android.js +5 -3
  73. package/Libraries/Image/Image.ios.js +6 -3
  74. package/Libraries/Image/Image.windows.js +6 -3
  75. package/Libraries/Image/ImageSource.js +7 -5
  76. package/Libraries/Inspector/ElementBox.js +2 -2
  77. package/Libraries/Inspector/NetworkOverlay.js +13 -8
  78. package/Libraries/Interaction/PanResponder.js +16 -14
  79. package/Libraries/Linking/Linking.js +0 -11
  80. package/Libraries/Lists/FlatList.js +3 -2
  81. package/Libraries/Lists/SectionList.js +2 -0
  82. package/Libraries/Lists/ViewabilityHelper.js +7 -3
  83. package/Libraries/Lists/VirtualizeUtils.js +33 -20
  84. package/Libraries/Lists/VirtualizedList.js +93 -47
  85. package/Libraries/Lists/VirtualizedListContext.js +1 -0
  86. package/Libraries/Lists/VirtualizedSectionList.js +14 -9
  87. package/Libraries/Lists/__tests__/VirtualizeUtils-test.js +19 -18
  88. package/Libraries/Lists/__tests__/VirtualizedList-test.js +10 -6
  89. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  90. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  91. package/Libraries/LogBox/LogBox.js +3 -1
  92. package/Libraries/LogBox/UI/AnsiHighlight.js +2 -0
  93. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +3 -0
  94. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +0 -3
  95. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +8 -3
  96. package/Libraries/NativeComponent/BaseViewConfig.android.js +9 -18
  97. package/Libraries/NativeComponent/BaseViewConfig.ios.js +26 -12
  98. package/Libraries/NativeComponent/BaseViewConfig.windows.js +26 -12
  99. package/Libraries/Network/XMLHttpRequest.js +9 -11
  100. package/Libraries/Performance/PureComponentDebug.js +1 -0
  101. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +9 -1
  102. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +16 -0
  103. package/Libraries/Pressability/Pressability.js +26 -16
  104. package/Libraries/Pressability/Pressability.windows.js +30 -17
  105. package/Libraries/Promise.js +0 -1
  106. package/Libraries/ReactNative/AppRegistry.js +16 -13
  107. package/Libraries/ReactNative/BridgelessUIManager.js +2 -0
  108. package/Libraries/ReactNative/PaperUIManager.js +9 -9
  109. package/Libraries/ReactNative/PaperUIManager.windows.js +7 -8
  110. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +12 -0
  111. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +68 -0
  112. package/Libraries/ReactNative/getNativeComponentAttributes.js +6 -7
  113. package/Libraries/ReactNative/renderApplication.js +1 -1
  114. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4443 -3615
  115. package/Libraries/Renderer/implementations/ReactFabric-prod.js +1496 -1170
  116. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +1694 -1356
  117. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +4439 -3588
  118. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1583 -1249
  119. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1719 -1372
  120. package/Libraries/Storage/AsyncStorage.js +7 -1
  121. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +8 -0
  122. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  123. package/Libraries/StyleSheet/processTransform.js +2 -0
  124. package/Libraries/StyleSheet/processTransform.windows.js +2 -0
  125. package/Libraries/StyleSheet/splitLayoutProps.js +2 -0
  126. package/Libraries/Text/Text.js +15 -7
  127. package/Libraries/Text/Text.windows.js +14 -7
  128. package/Libraries/Types/CoreEventTypes.js +137 -11
  129. package/Libraries/Types/CoreEventTypes.windows.js +147 -22
  130. package/Libraries/Utilities/Dimensions.js +0 -13
  131. package/Libraries/Utilities/HMRClient.js +3 -3
  132. package/Libraries/Utilities/Platform.ios.js +0 -7
  133. package/Libraries/Utilities/ReactNativeTestTools.js +3 -1
  134. package/Libraries/Utilities/codegenNativeCommands.js +11 -2
  135. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -0
  136. package/Libraries/Utilities/stringifySafe.js +3 -1
  137. package/Libraries/Utilities/truncate.js +1 -1
  138. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +2 -2
  139. package/Libraries/Vibration/Vibration.js +1 -1
  140. package/Libraries/WebSocket/WebSocket.js +1 -0
  141. package/Libraries/vendor/emitter/EventEmitter.js +105 -12
  142. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +73 -117
  143. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +24 -12
  144. package/Microsoft.ReactNative/CoreApp.cpp +303 -0
  145. package/Microsoft.ReactNative/CoreAppPage.cpp +21 -0
  146. package/Microsoft.ReactNative/CoreAppPage.h +15 -0
  147. package/Microsoft.ReactNative/CoreAppPage.idl +12 -0
  148. package/Microsoft.ReactNative/CoreAppPage.xaml +14 -0
  149. package/Microsoft.ReactNative/Fabric/ActivityIndicatorComponentView.cpp +1 -2
  150. package/Microsoft.ReactNative/Fabric/ActivityIndicatorComponentView.h +1 -1
  151. package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -1
  152. package/Microsoft.ReactNative/Fabric/ImageComponentView.cpp +1 -1
  153. package/Microsoft.ReactNative/Fabric/ImageComponentView.h +1 -1
  154. package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +1 -1
  155. package/Microsoft.ReactNative/Fabric/ParagraphComponentView.h +1 -1
  156. package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +1 -1
  157. package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.h +1 -1
  158. package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +1 -1
  159. package/Microsoft.ReactNative/Fabric/SliderComponentView.h +1 -1
  160. package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +1 -1
  161. package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +1 -1
  162. package/Microsoft.ReactNative/Fabric/TextComponentView.cpp +1 -1
  163. package/Microsoft.ReactNative/Fabric/TextComponentView.h +1 -1
  164. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +1 -1
  165. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +1 -1
  166. package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +1 -1
  167. package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -1
  168. package/Microsoft.ReactNative/GlyphViewManager.cpp +1 -0
  169. package/Microsoft.ReactNative/IReactDispatcher.cpp +18 -0
  170. package/Microsoft.ReactNative/IReactDispatcher.h +18 -3
  171. package/Microsoft.ReactNative/IReactDispatcher.idl +15 -0
  172. package/Microsoft.ReactNative/IReactPropertyBag.cpp +9 -0
  173. package/Microsoft.ReactNative/IReactPropertyBag.h +3 -0
  174. package/Microsoft.ReactNative/IReactPropertyBag.idl +3 -0
  175. package/Microsoft.ReactNative/JsiApi.cpp +41 -1
  176. package/Microsoft.ReactNative/JsiApi.h +3 -0
  177. package/Microsoft.ReactNative/JsiApi.idl +19 -1
  178. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +18 -2
  179. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +7 -7
  180. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
  181. package/Microsoft.ReactNative/Modules/AlertModule.cpp +15 -12
  182. package/Microsoft.ReactNative/Modules/AlertModule.h +1 -1
  183. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +45 -9
  184. package/Microsoft.ReactNative/Modules/AppStateModule.h +9 -3
  185. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.h +1 -1
  186. package/Microsoft.ReactNative/Modules/ClipboardModule.h +1 -1
  187. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -1
  188. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +1 -1
  189. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +1 -1
  190. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -1
  191. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +1 -1
  192. package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +1 -1
  193. package/Microsoft.ReactNative/Modules/LogBoxModule.h +1 -1
  194. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +66 -39
  195. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +41 -11
  196. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +1 -1
  197. package/Microsoft.ReactNative/QuirkSettings.cpp +22 -0
  198. package/Microsoft.ReactNative/QuirkSettings.h +10 -0
  199. package/Microsoft.ReactNative/QuirkSettings.idl +7 -0
  200. package/Microsoft.ReactNative/ReactApplication.cpp +44 -0
  201. package/Microsoft.ReactNative/ReactApplication.h +40 -5
  202. package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.cpp +5 -2
  203. package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.h +1 -0
  204. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +23 -4
  205. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  206. package/Microsoft.ReactNative/ReactPointerEventArgs.cpp +12 -2
  207. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -0
  208. package/Microsoft.ReactNative/Utils/Helpers.cpp +1 -1
  209. package/Microsoft.ReactNative/Utils/Helpers.h +1 -1
  210. package/Microsoft.ReactNative/Utils/PropertyUtils.h +1 -1
  211. package/Microsoft.ReactNative/Utils/TransformableText.h +1 -1
  212. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +0 -1
  213. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +9 -7
  214. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +3 -3
  215. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +13 -1
  216. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +1 -1
  217. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +63 -13
  218. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  219. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +5 -6
  220. package/Microsoft.ReactNative/Views/Image/ReactImage.h +4 -4
  221. package/Microsoft.ReactNative/Views/Text/TextTransformParentVisitor.h +1 -1
  222. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +21 -2
  223. package/Microsoft.ReactNative/Views/TextViewManager.cpp +6 -3
  224. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
  225. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +7 -1
  226. package/Microsoft.ReactNative/Views/ViewPanel.cpp +4 -0
  227. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +8 -3
  228. package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +2 -0
  229. package/Microsoft.ReactNative/microsoft.reactnative.def +4 -1
  230. package/Microsoft.ReactNative.Cxx/AppModelHelpers.h +17 -0
  231. package/Microsoft.ReactNative.Cxx/CoreApp.h +60 -0
  232. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +65 -0
  233. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +13 -0
  234. package/Microsoft.ReactNative.Cxx/JSI/JsiValueHelpers.cpp +53 -0
  235. package/Microsoft.ReactNative.Cxx/JSI/JsiValueHelpers.h +32 -0
  236. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +14 -2
  237. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +3 -0
  238. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +7 -0
  239. package/Microsoft.ReactNative.Managed/packages.lock.json +1 -24
  240. package/Mso/dispatchQueue/dispatchQueue.h +12 -4
  241. package/Mso/src/dispatchQueue/looperScheduler.cpp +36 -9
  242. package/Mso/src/dispatchQueue/queueService.cpp +2 -2
  243. package/Mso/src/dispatchQueue/queueService.h +2 -2
  244. package/Mso/src/memoryApi/memoryApi.cpp +3 -0
  245. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  246. package/PropertySheets/JSEngine.props +1 -1
  247. package/PropertySheets/Release.props +6 -0
  248. package/ReactCommon/ReactCommon.vcxproj +11 -21
  249. package/ReactCommon/ReactCommon.vcxproj.filters +64 -46
  250. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +145 -0
  251. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +344 -0
  252. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseTextProps.cpp +313 -0
  253. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +455 -0
  254. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ConcreteComponentDescriptor.h +216 -0
  255. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/PropsMacros.h +91 -0
  256. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/graphics/RectangleEdges.h +100 -0
  257. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/CompactValue.h +3 -1
  258. package/Scripts/Microsoft.ReactNative.nuspec +6 -0
  259. package/Scripts/Microsoft.ReactNative.targets +7 -0
  260. package/Shared/DevSettings.h +4 -0
  261. package/Shared/JSI/ChakraRuntime.cpp +11 -2
  262. package/Shared/JSI/ChakraRuntime.h +2 -0
  263. package/Shared/Modules/BlobModule.cpp +4 -4
  264. package/Shared/Modules/BlobModule.h +1 -1
  265. package/Shared/Modules/FileReaderModule.cpp +3 -2
  266. package/Shared/Modules/IBlobPersistor.h +1 -1
  267. package/Shared/Networking/IHttpResource.h +1 -0
  268. package/Shared/Networking/OriginPolicyHttpFilter.cpp +16 -10
  269. package/Shared/Networking/WinRTHttpResource.cpp +34 -2
  270. package/Shared/OInstance.cpp +14 -6
  271. package/Shared/Threading/BatchingQueueThread.cpp +23 -12
  272. package/Shared/Utils.cpp +2 -5
  273. package/codegen/NativeAlertManagerSpec.g.h +2 -0
  274. package/codegen/NativeAnimatedModuleSpec.g.h +6 -0
  275. package/codegen/NativeAnimatedTurboModuleSpec.g.h +6 -0
  276. package/codegen/react/components/rnwcore/Props.cpp +2 -2
  277. package/codegen/react/components/rnwcore/Props.h +1 -1
  278. package/fmt/cgmanifest.json +14 -0
  279. package/fmt/fmt.vcxproj +25 -11
  280. package/jest/assetFileTransformer.js +3 -2
  281. package/jest/setup.js +4 -0
  282. package/package.json +27 -28
  283. package/rntypes/index.d.ts +0 -1
  284. package/template/cs-app-WinAppSDK/proj/{NuGet.Config → NuGet_Config} +0 -0
  285. package/template/metro.devMode.config.js +49 -2
  286. package/template/shared-app/proj/{NuGet.Config → NuGet_Config} +0 -0
  287. package/template/shared-lib/proj/{NuGet.Config → NuGet_Config} +0 -0
  288. package/Libraries/vendor/emitter/EventSubscription.js +0 -19
  289. package/Libraries/vendor/emitter/_EmitterSubscription.js +0 -62
  290. package/Libraries/vendor/emitter/_EventEmitter.js +0 -184
  291. package/Libraries/vendor/emitter/_EventSubscription.js +0 -45
  292. package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +0 -108
  293. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +0 -87
  294. package/Scripts/copyRNLibraries.js +0 -99
  295. package/jest/preprocessor.js +0 -40
  296. package/jest/preprocessor_DO_NOT_USE.js +0 -122
@@ -3,7 +3,7 @@
3
3
 
4
4
  #pragma once
5
5
 
6
- #include "../../codegen/NativeLinkingManagerSpec.g.h"
6
+ #include "codegen/NativeLinkingManagerSpec.g.h"
7
7
  #include <NativeModules.h>
8
8
  #include <winrt/Windows.ApplicationModel.h>
9
9
  #include <winrt/Windows.Foundation.h>
@@ -2,7 +2,7 @@
2
2
  // Licensed under the MIT License.
3
3
  #pragma once
4
4
 
5
- #include "../../codegen/NativeLogBoxSpec.g.h"
5
+ #include "codegen/NativeLogBoxSpec.g.h"
6
6
  #include <NativeModules.h>
7
7
  #include <winrt/Windows.ApplicationModel.h>
8
8
  #include <winrt/Windows.Foundation.h>
@@ -7,6 +7,7 @@
7
7
  #include <UI.Xaml.Input.h>
8
8
  #include <UI.Xaml.Media.h>
9
9
  #include <Views/ShadowNodeBase.h>
10
+ #include <cxxreact/SystraceSection.h>
10
11
  #include "Modules/I18nManagerModule.h"
11
12
  #include "NativeUIManager.h"
12
13
 
@@ -24,6 +25,8 @@ using namespace xaml::Controls;
24
25
  using namespace xaml::Media;
25
26
  } // namespace winrt
26
27
 
28
+ using namespace facebook::react;
29
+
27
30
  namespace Microsoft::ReactNative {
28
31
 
29
32
  static YogaNodePtr make_yoga_node(YGConfigRef config) {
@@ -38,7 +41,7 @@ static int YogaLog(
38
41
  YGLogLevel /*level*/,
39
42
  const char *format,
40
43
  va_list args) {
41
- int len = _scprintf(format, args);
44
+ const int len = _vscprintf(format, args);
42
45
  std::string buffer(len + 1, '\0');
43
46
  vsnprintf_s(&buffer[0], len + 1, _TRUNCATE, format, args);
44
47
  buffer.resize(len);
@@ -222,6 +225,7 @@ int64_t NativeUIManager::AddMeasuredRootView(facebook::react::IReactRootView *ro
222
225
  }
223
226
 
224
227
  void NativeUIManager::AddRootView(ShadowNode &shadowNode, facebook::react::IReactRootView *pReactRootView) {
228
+ SystraceSection s("NativeUIManager::AddRootView");
225
229
  auto xamlRootView = static_cast<IXamlRootView *>(pReactRootView);
226
230
  XamlView view = xamlRootView->GetXamlView();
227
231
  m_tagsToXamlReactControl.emplace(
@@ -244,11 +248,13 @@ void NativeUIManager::AddRootView(ShadowNode &shadowNode, facebook::react::IReac
244
248
  }
245
249
 
246
250
  void NativeUIManager::removeRootView(Microsoft::ReactNative::ShadowNode &shadow) {
251
+ SystraceSection s("NativeUIManager::removeRootView");
247
252
  m_tagsToXamlReactControl.erase(shadow.m_tag);
248
253
  RemoveView(shadow, true);
249
254
  }
250
255
 
251
256
  void NativeUIManager::onBatchComplete() {
257
+ SystraceSection s("NativeUIManager::onBatchComplete");
252
258
  if (m_inBatch) {
253
259
  DoLayout();
254
260
  m_inBatch = false;
@@ -768,6 +774,7 @@ static void StyleYogaNode(
768
774
  }
769
775
 
770
776
  void NativeUIManager::CreateView(ShadowNode &shadowNode, React::JSValueObject &props) {
777
+ SystraceSection s("NativeUIManager::CreateView");
771
778
  ShadowNodeBase &node = static_cast<ShadowNodeBase &>(shadowNode);
772
779
  auto *pViewManager = node.GetViewManager();
773
780
 
@@ -859,6 +866,7 @@ void NativeUIManager::ReplaceView(ShadowNode &shadowNode) {
859
866
  }
860
867
 
861
868
  void NativeUIManager::UpdateView(ShadowNode &shadowNode, winrt::Microsoft::ReactNative::JSValueObject &props) {
869
+ SystraceSection s("NativeUIManager::UpdateView");
862
870
  ShadowNodeBase &node = static_cast<ShadowNodeBase &>(shadowNode);
863
871
  auto *pViewManager = node.GetViewManager();
864
872
 
@@ -889,51 +897,70 @@ void NativeUIManager::UpdateExtraLayout(int64_t tag) {
889
897
  }
890
898
 
891
899
  void NativeUIManager::DoLayout() {
892
- // Process vector of RN controls needing extra layout here.
893
- const auto extraLayoutNodes = m_extraLayoutNodes;
894
- for (const int64_t tag : extraLayoutNodes) {
895
- ShadowNodeBase *node = static_cast<ShadowNodeBase *>(m_host->FindShadowNodeForTag(tag));
896
- if (node) {
897
- auto element = node->GetView().as<xaml::FrameworkElement>();
898
- element.UpdateLayout();
900
+ SystraceSection s("NativeUIManager::DoLayout");
901
+
902
+ {
903
+ SystraceSection s("NativeUIManager::DoLayout::UpdateLayout");
904
+ // Process vector of RN controls needing extra layout here.
905
+ const auto extraLayoutNodes = m_extraLayoutNodes;
906
+ for (const int64_t tag : extraLayoutNodes) {
907
+ ShadowNodeBase *node = static_cast<ShadowNodeBase *>(m_host->FindShadowNodeForTag(tag));
908
+ if (node) {
909
+ auto element = node->GetView().as<xaml::FrameworkElement>();
910
+ element.UpdateLayout();
911
+ }
899
912
  }
913
+ // Values need to be cleared from the vector before next call to DoLayout.
914
+ m_extraLayoutNodes.clear();
900
915
  }
901
- // Values need to be cleared from the vector before next call to DoLayout.
902
- m_extraLayoutNodes.clear();
916
+
903
917
  auto &rootTags = m_host->GetAllRootTags();
904
918
  for (int64_t rootTag : rootTags) {
905
- UpdateExtraLayout(rootTag);
919
+ {
920
+ SystraceSection s("NativeUIManager::DoLayout::UpdateExtraLayout");
921
+ UpdateExtraLayout(rootTag);
922
+ }
906
923
 
907
924
  ShadowNodeBase &rootShadowNode = static_cast<ShadowNodeBase &>(m_host->GetShadowNodeForTag(rootTag));
908
- YGNodeRef rootNode = GetYogaNode(rootTag);
909
- auto rootElement = rootShadowNode.GetView().as<xaml::FrameworkElement>();
910
-
911
- float actualWidth = static_cast<float>(rootElement.ActualWidth());
912
- float actualHeight = static_cast<float>(rootElement.ActualHeight());
913
-
914
- // We must always run layout in LTR mode, which might seem unintuitive.
915
- // We will flip the root of the tree into RTL by forcing the root XAML node's FlowDirection to RightToLeft
916
- // which will inherit down the XAML tree, allowing all native controls to pick it up.
917
- YGNodeCalculateLayout(rootNode, actualWidth, actualHeight, YGDirectionLTR);
925
+ if (YGNodeRef rootNode = GetYogaNode(rootTag)) {
926
+ auto rootElement = rootShadowNode.GetView().as<xaml::FrameworkElement>();
927
+
928
+ float actualWidth = static_cast<float>(rootElement.ActualWidth());
929
+ float actualHeight = static_cast<float>(rootElement.ActualHeight());
930
+
931
+ {
932
+ SystraceSection s("NativeUIManager::DoLayout::YGNodeCalculateLayout");
933
+ // We must always run layout in LTR mode, which might seem unintuitive.
934
+ // We will flip the root of the tree into RTL by forcing the root XAML node's FlowDirection to RightToLeft
935
+ // which will inherit down the XAML tree, allowing all native controls to pick it up.
936
+ YGNodeCalculateLayout(rootNode, actualWidth, actualHeight, YGDirectionLTR);
937
+ }
938
+ } else {
939
+ assert(false);
940
+ return;
941
+ }
918
942
  }
919
943
 
920
- for (auto &tagToYogaNode : m_tagsToYogaNodes) {
921
- int64_t tag = tagToYogaNode.first;
922
- YGNodeRef yogaNode = tagToYogaNode.second.get();
923
-
924
- if (!YGNodeGetHasNewLayout(yogaNode))
925
- continue;
926
- YGNodeSetHasNewLayout(yogaNode, false);
927
-
928
- float left = YGNodeLayoutGetLeft(yogaNode);
929
- float top = YGNodeLayoutGetTop(yogaNode);
930
- float width = YGNodeLayoutGetWidth(yogaNode);
931
- float height = YGNodeLayoutGetHeight(yogaNode);
932
-
933
- ShadowNodeBase &shadowNode = static_cast<ShadowNodeBase &>(m_host->GetShadowNodeForTag(tag));
934
- auto view = shadowNode.GetView();
935
- auto pViewManager = shadowNode.GetViewManager();
936
- pViewManager->SetLayoutProps(shadowNode, view, left, top, width, height);
944
+ {
945
+ SystraceSection s("NativeUIManager::DoLayout::SetLayoutProps");
946
+ for (auto &tagToYogaNode : m_tagsToYogaNodes) {
947
+ int64_t tag = tagToYogaNode.first;
948
+ YGNodeRef yogaNode = tagToYogaNode.second.get();
949
+
950
+ if (!YGNodeGetHasNewLayout(yogaNode))
951
+ continue;
952
+ YGNodeSetHasNewLayout(yogaNode, false);
953
+
954
+ float left = YGNodeLayoutGetLeft(yogaNode);
955
+ float top = YGNodeLayoutGetTop(yogaNode);
956
+ float width = YGNodeLayoutGetWidth(yogaNode);
957
+ float height = YGNodeLayoutGetHeight(yogaNode);
958
+
959
+ ShadowNodeBase &shadowNode = static_cast<ShadowNodeBase &>(m_host->GetShadowNodeForTag(tag));
960
+ auto view = shadowNode.GetView();
961
+ auto pViewManager = shadowNode.GetViewManager();
962
+ pViewManager->SetLayoutProps(shadowNode, view, left, top, width, height);
963
+ }
937
964
  }
938
965
  }
939
966
 
@@ -1115,7 +1142,7 @@ void NativeUIManager::findSubviewIn(
1115
1142
 
1116
1143
  void NativeUIManager::focus(int64_t reactTag) {
1117
1144
  if (auto shadowNode = static_cast<ShadowNodeBase *>(m_host->FindShadowNodeForTag(reactTag))) {
1118
- xaml::Input::FocusManager::TryFocusAsync(shadowNode->GetView(), winrt::FocusState::Keyboard);
1145
+ xaml::Input::FocusManager::TryFocusAsync(shadowNode->GetView(), winrt::FocusState::Programmatic);
1119
1146
  }
1120
1147
  }
1121
1148
 
@@ -6,14 +6,17 @@
6
6
  #include <DynamicWriter.h>
7
7
  #include <IReactContext.h>
8
8
  #include <IReactRootView.h>
9
+ #include <Modules/NativeUIManager.h>
9
10
  #include <Modules/PaperUIManagerModule.h>
10
- #include <Modules\NativeUIManager.h>
11
11
  #include <Views/ViewManager.h>
12
12
  #include <XamlUtils.h>
13
+ #include <cxxreact/SystraceSection.h>
13
14
  #include "ShadowNodeBase.h"
14
15
  #include "Unicode.h"
15
16
  #include "XamlUIService.h"
16
17
 
18
+ using namespace facebook::react;
19
+
17
20
  namespace Microsoft::ReactNative {
18
21
 
19
22
  struct ViewAtIndex final {
@@ -126,20 +129,24 @@ class UIManagerModule : public std::enable_shared_from_this<UIManagerModule>, pu
126
129
 
127
130
  void createView(int64_t reactTag, std::string viewName, int64_t rootTag, React::JSValueObject &&props) noexcept {
128
131
  m_nativeUIManager->ensureInBatch();
129
- auto viewManager = GetViewManager(viewName);
130
- auto node = viewManager->createShadow();
131
- node->m_className = std::move(viewName);
132
- node->m_tag = reactTag;
133
- node->m_rootTag = rootTag;
134
- node->m_viewManager = viewManager;
132
+ if (auto viewManager = GetViewManager(viewName)) {
133
+ auto node = viewManager->createShadow();
134
+ node->m_className = std::move(viewName);
135
+ node->m_tag = reactTag;
136
+ node->m_rootTag = rootTag;
137
+ node->m_viewManager = viewManager;
135
138
 
136
- node->createView(props);
139
+ node->createView(props);
137
140
 
138
- m_nativeUIManager->CreateView(*node, props);
141
+ m_nativeUIManager->CreateView(*node, props);
139
142
 
140
- m_nodeRegistry.addNode(shadow_ptr(node), reactTag);
143
+ m_nodeRegistry.addNode(shadow_ptr(node), reactTag);
141
144
 
142
- node->updateProperties(props);
145
+ node->updateProperties(props);
146
+ } else {
147
+ assert(false);
148
+ return;
149
+ }
143
150
  }
144
151
 
145
152
  void updateView(int64_t reactTag, std::string viewName, React::JSValueObject &&props) noexcept {
@@ -578,6 +585,7 @@ void UIManager::createView(
578
585
  viewName = std::move(viewName),
579
586
  rootTag,
580
587
  props = std::move(props)]() mutable {
588
+ SystraceSection s("UIManager::createView");
581
589
  if (auto module = m.lock()) {
582
590
  module->createView(static_cast<int64_t>(reactTag), viewName, static_cast<int64_t>(rootTag), std::move(props));
583
591
  }
@@ -589,6 +597,7 @@ void UIManager::updateView(double reactTag, std::string viewName, React::JSValue
589
597
  reactTag,
590
598
  viewName = std::move(viewName),
591
599
  props = std::move(props)]() mutable {
600
+ SystraceSection s("UIManager::updateView");
592
601
  if (auto module = m.lock()) {
593
602
  module->updateView(static_cast<int64_t>(reactTag), viewName, std::move(props));
594
603
  }
@@ -597,6 +606,7 @@ void UIManager::updateView(double reactTag, std::string viewName, React::JSValue
597
606
 
598
607
  void UIManager::focus(double reactTag) noexcept {
599
608
  m_batchingUIMessageQueue->runOnQueue([m = std::weak_ptr<UIManagerModule>(m_module), reactTag]() {
609
+ SystraceSection s("UIManager::focus");
600
610
  if (auto module = m.lock()) {
601
611
  module->focus(static_cast<int64_t>(reactTag));
602
612
  }
@@ -605,6 +615,7 @@ void UIManager::focus(double reactTag) noexcept {
605
615
 
606
616
  void UIManager::blur(double reactTag) noexcept {
607
617
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), reactTag]() {
618
+ SystraceSection s("UIManager::blur");
608
619
  if (auto module = m.lock()) {
609
620
  module->blur(static_cast<int64_t>(reactTag));
610
621
  }
@@ -620,6 +631,7 @@ void UIManager::findSubviewIn(
620
631
  reactTag,
621
632
  point = std::move(point),
622
633
  callback = std::move(callback)]() mutable {
634
+ SystraceSection s("UIManager::findSubviewIn");
623
635
  if (auto module = m.lock()) {
624
636
  module->findSubviewIn(static_cast<int64_t>(reactTag), std::move(point), std::move(callback));
625
637
  }
@@ -634,6 +646,7 @@ void UIManager::dispatchViewManagerCommand(
634
646
  reactTag,
635
647
  commandID = std::move(commandID),
636
648
  commandArgs = std::move(commandArgs)]() mutable {
649
+ SystraceSection s("UIManager::dispatchViewManagerCommand");
637
650
  if (auto module = m.lock()) {
638
651
  module->dispatchViewManagerCommand(static_cast<int64_t>(reactTag), std::move(commandID), std::move(commandArgs));
639
652
  }
@@ -646,6 +659,7 @@ void UIManager::measure(
646
659
  &callback) noexcept {
647
660
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor(
648
661
  [m = std::weak_ptr<UIManagerModule>(m_module), reactTag, callback = std::move(callback)]() mutable {
662
+ SystraceSection s("UIManager::measure");
649
663
  if (auto module = m.lock()) {
650
664
  module->measure(static_cast<int64_t>(reactTag), std::move(callback));
651
665
  }
@@ -657,6 +671,7 @@ void UIManager::measureInWindow(
657
671
  std::function<void(double x, double y, double width, double height)> const &callback) noexcept {
658
672
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor(
659
673
  [m = std::weak_ptr<UIManagerModule>(m_module), reactTag, callback = std::move(callback)]() mutable {
674
+ SystraceSection s("UIManager::measureInWindow");
660
675
  if (auto module = m.lock()) {
661
676
  module->measureInWindow(static_cast<int64_t>(reactTag), std::move(callback));
662
677
  }
@@ -671,6 +686,7 @@ void UIManager::viewIsDescendantOf(
671
686
  reactTag,
672
687
  ancestorReactTag,
673
688
  callback = std::move(callback)]() mutable {
689
+ SystraceSection s("UIManager::viewIsDescendantOf");
674
690
  if (auto module = m.lock()) {
675
691
  module->viewIsDescendantOf(
676
692
  static_cast<int64_t>(reactTag), static_cast<int64_t>(ancestorReactTag), std::move(callback));
@@ -688,6 +704,7 @@ void UIManager::measureLayout(
688
704
  ancestorReactTag,
689
705
  errorCallback = std::move(errorCallback),
690
706
  callback = std::move(callback)]() mutable {
707
+ SystraceSection s("UIManager::measureLayout");
691
708
  if (auto module = m.lock()) {
692
709
  module->measureLayout(
693
710
  static_cast<int64_t>(reactTag),
@@ -706,6 +723,7 @@ void UIManager::measureLayoutRelativeToParent(
706
723
  reactTag,
707
724
  errorCallback = std::move(errorCallback),
708
725
  callback = std::move(callback)]() mutable {
726
+ SystraceSection s("UIManager::measureLayoutRelativeToParent");
709
727
  if (auto module = m.lock()) {
710
728
  module->measureLayoutRelativeToParent(
711
729
  static_cast<int64_t>(reactTag), std::move(errorCallback), std::move(callback));
@@ -716,6 +734,7 @@ void UIManager::measureLayoutRelativeToParent(
716
734
  void UIManager::setJSResponder(double reactTag, bool blockNativeResponder) noexcept {
717
735
  m_batchingUIMessageQueue->runOnQueue(
718
736
  Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), reactTag, blockNativeResponder]() mutable {
737
+ SystraceSection s("UIManager::setJSResponder");
719
738
  if (auto module = m.lock()) {
720
739
  module->setJSResponder(static_cast<int64_t>(reactTag), blockNativeResponder);
721
740
  }
@@ -724,6 +743,7 @@ void UIManager::setJSResponder(double reactTag, bool blockNativeResponder) noexc
724
743
 
725
744
  void UIManager::clearJSResponder() noexcept {
726
745
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module)]() mutable {
746
+ SystraceSection s("UIManager::clearJSResponder");
727
747
  if (auto module = m.lock()) {
728
748
  module->clearJSResponder();
729
749
  }
@@ -738,6 +758,7 @@ void UIManager::configureNextLayoutAnimation(
738
758
  config = std::move(config),
739
759
  callback = std::move(callback),
740
760
  errorCallback = std::move(errorCallback)]() mutable {
761
+ SystraceSection s("UIManager::configureNextLayoutAnimation");
741
762
  if (auto module = m.lock()) {
742
763
  module->configureNextLayoutAnimation(std::move(config), std::move(callback), std::move(errorCallback));
743
764
  }
@@ -746,6 +767,7 @@ void UIManager::configureNextLayoutAnimation(
746
767
 
747
768
  void UIManager::removeSubviewsFromContainerWithID(double containerID) noexcept {
748
769
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), containerID]() {
770
+ SystraceSection s("UIManager::removeSubviewsFromContainerWithID");
749
771
  if (auto module = m.lock()) {
750
772
  module->removeSubviewsFromContainerWithID(static_cast<int64_t>(containerID));
751
773
  }
@@ -755,6 +777,7 @@ void UIManager::removeSubviewsFromContainerWithID(double containerID) noexcept {
755
777
  void UIManager::replaceExistingNonRootView(double reactTag, double newReactTag) noexcept {
756
778
  m_batchingUIMessageQueue->runOnQueue(
757
779
  Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), reactTag, newReactTag]() {
780
+ SystraceSection s("UIManager::replaceExistingNonRootView");
758
781
  if (auto module = m.lock()) {
759
782
  module->replaceExistingNonRootView(static_cast<int64_t>(reactTag), static_cast<int64_t>(newReactTag));
760
783
  }
@@ -763,6 +786,7 @@ void UIManager::replaceExistingNonRootView(double reactTag, double newReactTag)
763
786
 
764
787
  void UIManager::removeRootView(double reactTag) noexcept {
765
788
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), reactTag]() {
789
+ SystraceSection s("UIManager::removeRootView");
766
790
  if (auto module = m.lock()) {
767
791
  module->removeRootView(static_cast<int64_t>(reactTag));
768
792
  }
@@ -772,6 +796,7 @@ void UIManager::removeRootView(double reactTag) noexcept {
772
796
  void UIManager::setChildren(double containerTag, React::JSValueArray &&reactTags) noexcept {
773
797
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor(
774
798
  [m = std::weak_ptr<UIManagerModule>(m_module), containerTag, reactTags = std::move(reactTags)]() mutable {
799
+ SystraceSection s("UIManager::setChildren");
775
800
  if (auto module = m.lock()) {
776
801
  module->setChildren(static_cast<int64_t>(containerTag), std::move(reactTags));
777
802
  }
@@ -792,6 +817,7 @@ void UIManager::manageChildren(
792
817
  addChildReactTags = std::move(addChildReactTags),
793
818
  addAtIndices = std::move(addAtIndices),
794
819
  removeAtIndices = std::move(removeAtIndices)]() mutable {
820
+ SystraceSection s("UIManager::manageChildren");
795
821
  if (auto module = m.lock()) {
796
822
  module->manageChildren(
797
823
  static_cast<int64_t>(containerTag),
@@ -807,6 +833,7 @@ void UIManager::manageChildren(
807
833
  void UIManager::setLayoutAnimationEnabledExperimental(bool enabled) noexcept {
808
834
  m_batchingUIMessageQueue->runOnQueue(
809
835
  Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), enabled]() mutable {
836
+ SystraceSection s("UIManager::setLayoutAnimationEnabledExperimental");
810
837
  if (auto module = m.lock()) {
811
838
  module->setLayoutAnimationEnabledExperimental(enabled);
812
839
  }
@@ -816,6 +843,7 @@ void UIManager::setLayoutAnimationEnabledExperimental(bool enabled) noexcept {
816
843
  void UIManager::sendAccessibilityEvent(double reactTag, double eventType) noexcept {
817
844
  m_batchingUIMessageQueue->runOnQueue(
818
845
  Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module), reactTag, eventType]() mutable {
846
+ SystraceSection s("UIManager::sendAccessibilityEvent");
819
847
  if (auto module = m.lock()) {
820
848
  module->sendAccessibilityEvent(static_cast<int64_t>(reactTag), eventType);
821
849
  }
@@ -832,6 +860,7 @@ void UIManager::showPopupMenu(
832
860
  items = std::move(items),
833
861
  error = std::move(error),
834
862
  success = std::move(success)]() mutable {
863
+ SystraceSection s("UIManager::showPopupMenu");
835
864
  if (auto module = m.lock()) {
836
865
  module->showPopupMenu(static_cast<int64_t>(reactTag), std::move(items), std::move(error), std::move(success));
837
866
  }
@@ -840,6 +869,7 @@ void UIManager::showPopupMenu(
840
869
 
841
870
  void UIManager::dismissPopupMenu() noexcept {
842
871
  m_batchingUIMessageQueue->runOnQueue(Mso::VoidFunctor([m = std::weak_ptr<UIManagerModule>(m_module)]() mutable {
872
+ SystraceSection s("UIManager::dismissPopupMenu");
843
873
  if (auto module = m.lock()) {
844
874
  module->dismissPopupMenu();
845
875
  }
@@ -2,7 +2,7 @@
2
2
  // Licensed under the MIT License.
3
3
  #pragma once
4
4
 
5
- #include "../../codegen/NativeUIManagerSpec.g.h"
5
+ #include "codegen/NativeUIManagerSpec.g.h"
6
6
  #include <CxxMessageQueue.h>
7
7
  #include <INativeUIManager.h>
8
8
  #include <NativeModules.h>
@@ -40,6 +40,18 @@ EnableBackHandlerKindProperty() noexcept {
40
40
  return propId;
41
41
  }
42
42
 
43
+ winrt::Microsoft::ReactNative::ReactPropertyId<bool> MapWindowDeactivatedToAppStateInactiveProperty() noexcept {
44
+ static winrt::Microsoft::ReactNative::ReactPropertyId<bool> propId{
45
+ L"ReactNative.QuirkSettings", L"MapWindowDeactivatedToAppStateInactiveProperty"};
46
+ return propId;
47
+ }
48
+
49
+ /*static*/ void QuirkSettings::SetMapWindowDeactivatedToAppStateInactive(
50
+ winrt::Microsoft::ReactNative::ReactPropertyBag properties,
51
+ bool value) noexcept {
52
+ properties.Set(MapWindowDeactivatedToAppStateInactiveProperty(), value);
53
+ }
54
+
43
55
  #pragma region IDL interface
44
56
 
45
57
  /*static*/ void QuirkSettings::SetMatchAndroidAndIOSStretchBehavior(
@@ -60,6 +72,12 @@ EnableBackHandlerKindProperty() noexcept {
60
72
  ReactPropertyBag(settings.Properties()).Set(EnableBackHandlerKindProperty(), kind);
61
73
  }
62
74
 
75
+ /*static*/ void QuirkSettings::SetMapWindowDeactivatedToAppStateInactive(
76
+ winrt::Microsoft::ReactNative::ReactInstanceSettings settings,
77
+ bool value) noexcept {
78
+ SetMapWindowDeactivatedToAppStateInactive(ReactPropertyBag(settings.Properties()), value);
79
+ }
80
+
63
81
  #pragma endregion IDL interface
64
82
 
65
83
  /*static*/ bool QuirkSettings::GetMatchAndroidAndIOSStretchBehavior(ReactPropertyBag properties) noexcept {
@@ -76,4 +94,8 @@ EnableBackHandlerKindProperty() noexcept {
76
94
  .value_or(winrt::Microsoft::ReactNative::BackNavigationHandlerKind::JavaScript);
77
95
  }
78
96
 
97
+ /*static*/ bool QuirkSettings::GetMapWindowDeactivatedToAppStateInactive(ReactPropertyBag properties) noexcept {
98
+ return properties.Get(MapWindowDeactivatedToAppStateInactiveProperty()).value_or(false);
99
+ }
100
+
79
101
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -26,6 +26,12 @@ struct QuirkSettings : QuirkSettingsT<QuirkSettings> {
26
26
 
27
27
  static bool GetEnableFabric(winrt::Microsoft::ReactNative::ReactPropertyBag properties) noexcept;
28
28
 
29
+ static void SetMapWindowDeactivatedToAppStateInactive(
30
+ winrt::Microsoft::ReactNative::ReactPropertyBag properties,
31
+ bool value) noexcept;
32
+ static bool GetMapWindowDeactivatedToAppStateInactive(
33
+ winrt::Microsoft::ReactNative::ReactPropertyBag properties) noexcept;
34
+
29
35
  #pragma region Public API - part of IDL interface
30
36
  static void SetMatchAndroidAndIOSStretchBehavior(
31
37
  winrt::Microsoft::ReactNative::ReactInstanceSettings settings,
@@ -35,6 +41,10 @@ struct QuirkSettings : QuirkSettingsT<QuirkSettings> {
35
41
  static void SetBackHandlerKind(
36
42
  winrt::Microsoft::ReactNative::ReactInstanceSettings settings,
37
43
  winrt::Microsoft::ReactNative::BackNavigationHandlerKind kind) noexcept;
44
+
45
+ static void SetMapWindowDeactivatedToAppStateInactive(
46
+ winrt::Microsoft::ReactNative::ReactInstanceSettings settings,
47
+ bool value) noexcept;
38
48
  #pragma endregion Public API - part of IDL interface
39
49
  };
40
50
 
@@ -39,5 +39,12 @@ namespace Microsoft.ReactNative
39
39
  "these events, including forwarding to JavaScript. This will allow applications to handle back "
40
40
  "navigation in native code, but will prevent the `BackHandler` native module from receiving events.")
41
41
  static void SetBackHandlerKind(ReactInstanceSettings settings, BackNavigationHandlerKind kind);
42
+
43
+ DOC_STRING(
44
+ "By default `react-native-windows` will only track `active` and `background` `AppState`. "
45
+ "Setting this to true enables `react-native-windows` to also track `inactive` `AppState` which [maps closely to iOS.](https://reactnative.dev/docs/appstate)"
46
+ "`inactive` tracks the [Window.Activated Event](https://docs.microsoft.com/uwp/api/windows.ui.core.corewindow.activated) when the window is deactivated.")
47
+ DOC_DEFAULT("false")
48
+ static void SetMapWindowDeactivatedToAppStateInactive(ReactInstanceSettings settings, Boolean value);
42
49
  }
43
50
  } // namespace Microsoft.ReactNative
@@ -114,6 +114,10 @@ void ReactApplication::OnLaunched(activation::LaunchActivatedEventArgs const &e_
114
114
  e_;
115
115
  #endif // USE_WINUI3
116
116
 
117
+ if (m_launched) {
118
+ m_launched({*this}, e);
119
+ }
120
+
117
121
  this->OnCreate(e);
118
122
  }
119
123
 
@@ -195,6 +199,10 @@ void ReactApplication::OnCreate(Windows::ApplicationModel::Activation::IActivate
195
199
  }
196
200
 
197
201
  Window::Current().Activate();
202
+
203
+ if (m_viewCreated) {
204
+ m_viewCreated({*this}, args);
205
+ }
198
206
  }
199
207
 
200
208
  /// <summary>
@@ -219,4 +227,40 @@ void ReactApplication::OnNavigationFailed(IInspectable const &, NavigationFailed
219
227
  throw hresult_error(E_FAIL, hstring(L"Failed to load Page ") + e.SourcePageType().Name);
220
228
  }
221
229
 
230
+ void ReactApplication::LaunchedInternal(ReactApplication::AppLaunchedDelegate delegate) noexcept {
231
+ m_launched = delegate;
232
+ }
233
+
234
+ ReactApplication::AppLaunchedDelegate ReactApplication::LaunchedInternal() const noexcept {
235
+ return m_launched;
236
+ }
237
+
238
+ void ReactApplication::ViewCreatedInternal(ReactApplication::AppViewCreatedDelegate delegate) noexcept {
239
+ m_viewCreated = delegate;
240
+ }
241
+
242
+ ReactApplication::AppViewCreatedDelegate ReactApplication::ViewCreatedInternal() const noexcept {
243
+ return m_viewCreated;
244
+ }
245
+
246
+ void ReactApplication::PageNavigatedInternal(ReactApplication::AppPageNavigatedDelegate delegate) noexcept {
247
+ m_pageNavigated = delegate;
248
+ }
249
+
250
+ ReactApplication::AppPageNavigatedDelegate ReactApplication::PageNavigatedInternal() const noexcept {
251
+ return m_pageNavigated;
252
+ }
253
+
254
+ xaml::Markup::IXamlType ReactApplication::GetXamlType(winrt::hstring const &name) const {
255
+ return m_provider.GetXamlType(name);
256
+ }
257
+
258
+ xaml::Markup::IXamlType ReactApplication::GetXamlType(::winrt::Windows::UI::Xaml::Interop::TypeName const &type) const {
259
+ return m_provider.GetXamlType(type);
260
+ }
261
+
262
+ ::winrt::com_array<xaml::Markup::XmlnsDefinition> ReactApplication::GetXmlnsDefinitions() const {
263
+ return m_provider.GetXmlnsDefinitions();
264
+ }
265
+
222
266
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -5,6 +5,8 @@
5
5
 
6
6
  #include "ReactApplication.g.h"
7
7
  #include <CppWinRTIncludes.h>
8
+ #include <UI.Xaml.Markup.h>
9
+ #include <winrt/Microsoft.ReactNative.h>
8
10
  #include "ReactNativeHost.h"
9
11
 
10
12
  #ifdef USE_WINUI3
@@ -71,7 +73,7 @@ struct __declspec(empty_bases) NoDefaultCtorReactApplication_base :
71
73
  }
72
74
  };
73
75
 
74
- struct ReactApplication : NoDefaultCtorReactApplication_base<ReactApplication> {
76
+ struct ReactApplication : NoDefaultCtorReactApplication_base<ReactApplication, xaml::Markup::IXamlMetadataProvider> {
75
77
  public: // ReactApplication ABI API
76
78
  ReactApplication();
77
79
  ReactApplication(IInspectable const &outer) noexcept;
@@ -89,17 +91,48 @@ struct ReactApplication : NoDefaultCtorReactApplication_base<ReactApplication> {
89
91
  hstring JavaScriptBundleFile() noexcept;
90
92
  void JavaScriptBundleFile(hstring const &value) noexcept;
91
93
 
92
- public:
93
94
  void OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs const &e);
94
95
  void OnLaunched(activation::LaunchActivatedEventArgs const &e);
95
96
  void OnSuspending(IInspectable const &, Windows::ApplicationModel::SuspendingEventArgs const &);
96
97
  void OnNavigationFailed(IInspectable const &, xaml::Navigation::NavigationFailedEventArgs const &);
97
98
 
99
+ using AppLaunchedDelegate = winrt::delegate<void(
100
+ winrt::Microsoft::ReactNative::ReactApplication const &sender,
101
+ winrt::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs const &args)>;
102
+
103
+ void LaunchedInternal(AppLaunchedDelegate delegate) noexcept;
104
+ AppLaunchedDelegate LaunchedInternal() const noexcept;
105
+
106
+ using AppViewCreatedDelegate =
107
+ winrt::delegate<void(winrt::Microsoft::ReactNative::ReactApplication const &sender, winrt::hstring const &args)>;
108
+
109
+ void ViewCreatedInternal(AppViewCreatedDelegate delegate) noexcept;
110
+
111
+ AppViewCreatedDelegate ViewCreatedInternal() const noexcept;
112
+
113
+ using AppPageNavigatedDelegate =
114
+ winrt::delegate<void(winrt::Microsoft::ReactNative::ReactApplication const &sender, ReactRootView const &view)>;
115
+
116
+ void PageNavigatedInternal(AppPageNavigatedDelegate delegate) noexcept;
117
+
118
+ AppPageNavigatedDelegate PageNavigatedInternal() const noexcept;
119
+
120
+ xaml::Markup::IXamlType GetXamlType(winrt::hstring const &name) const;
121
+
122
+ xaml::Markup::IXamlType GetXamlType(::winrt::Windows::UI::Xaml::Interop::TypeName const &type) const;
123
+ ::winrt::com_array<xaml::Markup::XmlnsDefinition> GetXmlnsDefinitions() const;
124
+
98
125
  private:
99
- ReactNative::ReactInstanceSettings m_instanceSettings{nullptr};
100
- ReactNative::ReactNativeHost m_host{nullptr};
126
+ winrt::Microsoft::ReactNative::ReactInstanceSettings m_instanceSettings{nullptr};
127
+ winrt::Microsoft::ReactNative::ReactNativeHost m_host{nullptr};
101
128
 
102
129
  void OnCreate(Windows::ApplicationModel::Activation::IActivatedEventArgs const &e);
130
+
131
+ AppLaunchedDelegate m_launched;
132
+ AppViewCreatedDelegate m_viewCreated;
133
+ AppPageNavigatedDelegate m_pageNavigated;
134
+
135
+ XamlMetaDataProvider m_provider;
103
136
  };
104
137
 
105
138
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -109,7 +142,9 @@ namespace winrt::Microsoft::ReactNative::factory_implementation {
109
142
  // Override the CreateInstance method to pass baseInterface to the ReactApplication constructor
110
143
  // to support correct COM aggregation that is need to inherit from the ReactApplication.
111
144
  struct ReactApplication : ReactApplicationT<ReactApplication, implementation::ReactApplication> {
112
- auto CreateInstance(IInspectable const &baseInterface, IInspectable &innerInterface) {
145
+ auto CreateInstance(
146
+ winrt::Windows::Foundation::IInspectable const &baseInterface,
147
+ winrt::Windows::Foundation::IInspectable &innerInterface) {
113
148
  return impl::composable_factory<implementation::ReactApplication>::template CreateInstance<
114
149
  Microsoft::ReactNative::ReactApplication>(baseInterface, innerInterface, baseInterface);
115
150
  }