react-native-windows 0.69.4 → 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 (298) 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/IReactNotificationService.cpp +197 -70
  173. package/Microsoft.ReactNative/IReactNotificationService.h +11 -30
  174. package/Microsoft.ReactNative/IReactPropertyBag.cpp +9 -0
  175. package/Microsoft.ReactNative/IReactPropertyBag.h +3 -0
  176. package/Microsoft.ReactNative/IReactPropertyBag.idl +3 -0
  177. package/Microsoft.ReactNative/JsiApi.cpp +41 -1
  178. package/Microsoft.ReactNative/JsiApi.h +3 -0
  179. package/Microsoft.ReactNative/JsiApi.idl +19 -1
  180. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +18 -2
  181. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +7 -7
  182. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
  183. package/Microsoft.ReactNative/Modules/AlertModule.cpp +15 -12
  184. package/Microsoft.ReactNative/Modules/AlertModule.h +1 -1
  185. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +45 -9
  186. package/Microsoft.ReactNative/Modules/AppStateModule.h +9 -3
  187. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.h +1 -1
  188. package/Microsoft.ReactNative/Modules/ClipboardModule.h +1 -1
  189. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -1
  190. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +1 -1
  191. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +1 -1
  192. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -1
  193. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +1 -1
  194. package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +1 -1
  195. package/Microsoft.ReactNative/Modules/LogBoxModule.h +1 -1
  196. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +66 -39
  197. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +41 -11
  198. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +1 -1
  199. package/Microsoft.ReactNative/QuirkSettings.cpp +22 -0
  200. package/Microsoft.ReactNative/QuirkSettings.h +10 -0
  201. package/Microsoft.ReactNative/QuirkSettings.idl +7 -0
  202. package/Microsoft.ReactNative/ReactApplication.cpp +44 -0
  203. package/Microsoft.ReactNative/ReactApplication.h +40 -5
  204. package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.cpp +5 -2
  205. package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.h +1 -0
  206. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +23 -4
  207. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  208. package/Microsoft.ReactNative/ReactPointerEventArgs.cpp +12 -2
  209. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -0
  210. package/Microsoft.ReactNative/Utils/Helpers.cpp +1 -1
  211. package/Microsoft.ReactNative/Utils/Helpers.h +1 -1
  212. package/Microsoft.ReactNative/Utils/PropertyUtils.h +1 -1
  213. package/Microsoft.ReactNative/Utils/TransformableText.h +1 -1
  214. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +12 -8
  215. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +9 -7
  216. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +3 -3
  217. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +13 -1
  218. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +1 -1
  219. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +63 -13
  220. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +2 -2
  221. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +5 -6
  222. package/Microsoft.ReactNative/Views/Image/ReactImage.h +4 -4
  223. package/Microsoft.ReactNative/Views/Text/TextTransformParentVisitor.h +1 -1
  224. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +21 -2
  225. package/Microsoft.ReactNative/Views/TextViewManager.cpp +6 -3
  226. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
  227. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +7 -1
  228. package/Microsoft.ReactNative/Views/ViewPanel.cpp +4 -0
  229. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +8 -3
  230. package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +2 -0
  231. package/Microsoft.ReactNative/microsoft.reactnative.def +4 -1
  232. package/Microsoft.ReactNative.Cxx/AppModelHelpers.h +17 -0
  233. package/Microsoft.ReactNative.Cxx/CoreApp.h +60 -0
  234. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +65 -0
  235. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +13 -0
  236. package/Microsoft.ReactNative.Cxx/JSI/JsiValueHelpers.cpp +53 -0
  237. package/Microsoft.ReactNative.Cxx/JSI/JsiValueHelpers.h +32 -0
  238. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +14 -2
  239. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +3 -0
  240. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +7 -0
  241. package/Microsoft.ReactNative.Managed/packages.lock.json +1 -24
  242. package/Mso/dispatchQueue/dispatchQueue.h +12 -4
  243. package/Mso/src/dispatchQueue/looperScheduler.cpp +36 -9
  244. package/Mso/src/dispatchQueue/queueService.cpp +2 -2
  245. package/Mso/src/dispatchQueue/queueService.h +2 -2
  246. package/Mso/src/memoryApi/memoryApi.cpp +3 -0
  247. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  248. package/PropertySheets/JSEngine.props +1 -1
  249. package/PropertySheets/Release.props +6 -0
  250. package/ReactCommon/ReactCommon.vcxproj +11 -21
  251. package/ReactCommon/ReactCommon.vcxproj.filters +64 -46
  252. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +145 -0
  253. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +344 -0
  254. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseTextProps.cpp +313 -0
  255. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +455 -0
  256. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ConcreteComponentDescriptor.h +216 -0
  257. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/PropsMacros.h +91 -0
  258. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/graphics/RectangleEdges.h +100 -0
  259. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/CompactValue.h +3 -1
  260. package/Scripts/Microsoft.ReactNative.nuspec +6 -0
  261. package/Scripts/Microsoft.ReactNative.targets +7 -0
  262. package/Shared/DevSettings.h +4 -0
  263. package/Shared/JSI/ChakraRuntime.cpp +11 -2
  264. package/Shared/JSI/ChakraRuntime.h +2 -0
  265. package/Shared/Modules/BlobModule.cpp +4 -4
  266. package/Shared/Modules/BlobModule.h +1 -1
  267. package/Shared/Modules/FileReaderModule.cpp +3 -2
  268. package/Shared/Modules/IBlobPersistor.h +1 -1
  269. package/Shared/Networking/IHttpResource.h +1 -0
  270. package/Shared/Networking/OriginPolicyHttpFilter.cpp +16 -10
  271. package/Shared/Networking/WinRTHttpResource.cpp +34 -2
  272. package/Shared/OInstance.cpp +14 -6
  273. package/Shared/Threading/BatchingQueueThread.cpp +23 -12
  274. package/Shared/Utils.cpp +2 -5
  275. package/codegen/NativeAlertManagerSpec.g.h +2 -0
  276. package/codegen/NativeAnimatedModuleSpec.g.h +6 -0
  277. package/codegen/NativeAnimatedTurboModuleSpec.g.h +6 -0
  278. package/codegen/react/components/rnwcore/Props.cpp +2 -2
  279. package/codegen/react/components/rnwcore/Props.h +1 -1
  280. package/fmt/cgmanifest.json +14 -0
  281. package/fmt/fmt.vcxproj +25 -11
  282. package/jest/assetFileTransformer.js +3 -2
  283. package/jest/setup.js +4 -0
  284. package/package.json +27 -28
  285. package/rntypes/index.d.ts +0 -1
  286. package/template/cs-app-WinAppSDK/proj/{NuGet.Config → NuGet_Config} +0 -0
  287. package/template/metro.devMode.config.js +49 -2
  288. package/template/shared-app/proj/{NuGet.Config → NuGet_Config} +0 -0
  289. package/template/shared-lib/proj/{NuGet.Config → NuGet_Config} +0 -0
  290. package/Libraries/vendor/emitter/EventSubscription.js +0 -19
  291. package/Libraries/vendor/emitter/_EmitterSubscription.js +0 -62
  292. package/Libraries/vendor/emitter/_EventEmitter.js +0 -184
  293. package/Libraries/vendor/emitter/_EventSubscription.js +0 -45
  294. package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +0 -108
  295. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +0 -87
  296. package/Scripts/copyRNLibraries.js +0 -99
  297. package/jest/preprocessor.js +0 -40
  298. package/jest/preprocessor_DO_NOT_USE.js +0 -122
@@ -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
  }
@@ -12,6 +12,7 @@ namespace Mso {
12
12
  struct JSCallInvokerScheduler
13
13
  : Mso::UnknownObject<Mso::RefCountStrategy::WeakRef, IDispatchQueueScheduler, IJSCallInvokerQueueScheduler> {
14
14
  JSCallInvokerScheduler(
15
+ const Mso::DispatchQueueSettings &settings,
15
16
  std::shared_ptr<facebook::react::CallInvoker> &&callInvoker,
16
17
  Mso::Functor<void(const Mso::ErrorCode &)> &&errorHandler,
17
18
  Mso::Promise<void> &&whenQuit) noexcept;
@@ -45,12 +46,13 @@ std::shared_ptr<facebook::react::MessageQueueThread> JSCallInvokerScheduler::Get
45
46
  //=============================================================================
46
47
 
47
48
  JSCallInvokerScheduler::JSCallInvokerScheduler(
49
+ const Mso::DispatchQueueSettings &settings,
48
50
  std::shared_ptr<facebook::react::CallInvoker> &&callInvoker,
49
51
  Mso::Functor<void(const Mso::ErrorCode &)> &&errorHandler,
50
52
  Mso::Promise<void> &&whenQuit) noexcept
51
53
  : m_callInvoker(callInvoker) {
52
54
  m_jsMessageThread = std::make_shared<Mso::React::MessageDispatchQueue>(
53
- Mso::DispatchQueue::MakeLooperQueue(), std::move(errorHandler), std::move(whenQuit));
55
+ Mso::DispatchQueue::MakeLooperQueue(settings), std::move(errorHandler), std::move(whenQuit));
54
56
  }
55
57
 
56
58
  JSCallInvokerScheduler::~JSCallInvokerScheduler() noexcept {
@@ -91,11 +93,12 @@ void JSCallInvokerScheduler::AwaitTermination() noexcept {
91
93
  }
92
94
 
93
95
  Mso::CntPtr<IDispatchQueueScheduler> MakeJSCallInvokerScheduler(
96
+ const Mso::DispatchQueueSettings &settings,
94
97
  std::shared_ptr<facebook::react::CallInvoker> &&callInvoker,
95
98
  Mso::Functor<void(const Mso::ErrorCode &)> &&errorHandler,
96
99
  Mso::Promise<void> &&whenQuit) noexcept {
97
100
  return Mso::Make<JSCallInvokerScheduler, IDispatchQueueScheduler>(
98
- std::move(callInvoker), std::move(errorHandler), std::move(whenQuit));
101
+ settings, std::move(callInvoker), std::move(errorHandler), std::move(whenQuit));
99
102
  }
100
103
 
101
104
  } // namespace Mso
@@ -19,6 +19,7 @@ struct IJSCallInvokerQueueScheduler : IUnknown {
19
19
  };
20
20
 
21
21
  Mso::CntPtr<IDispatchQueueScheduler> MakeJSCallInvokerScheduler(
22
+ Mso::DispatchQueueSettings const &settings,
22
23
  std::shared_ptr<facebook::react::CallInvoker> &&callInvoker,
23
24
  Mso::Functor<void(const Mso::ErrorCode &)> &&errorHandler,
24
25
  Mso::Promise<void> &&whenQuit = nullptr) noexcept;
@@ -5,12 +5,12 @@
5
5
  #include "MoveOnCopy.h"
6
6
  #include "MsoUtils.h"
7
7
 
8
+ #include <AppModelHelpers.h>
8
9
  #include <Base/CoreNativeModules.h>
9
10
  #include <Threading/MessageDispatchQueue.h>
10
11
  #include <Threading/MessageQueueThreadFactory.h>
11
12
  #include <appModel.h>
12
13
  #include <comUtil/qiCast.h>
13
-
14
14
  #ifndef CORE_ABI
15
15
  #include <XamlUIService.h>
16
16
  #endif
@@ -132,7 +132,8 @@ struct BridgeUIBatchInstanceCallback final : public facebook::react::InstanceCal
132
132
  virtual ~BridgeUIBatchInstanceCallback() = default;
133
133
  void onBatchComplete() override {
134
134
  if (auto instance = m_wkInstance.GetStrongPtr()) {
135
- if (instance->IsLoaded()) {
135
+ auto state = instance->State();
136
+ if (state != ReactInstanceState::HasError && state != ReactInstanceState::Unloaded) {
136
137
  if (instance->UseWebDebugger()) {
137
138
  // While using a CxxModule for UIManager (which we do when running under webdebugger)
138
139
  // We need to post the batch complete to the NativeQueue to ensure that the UIManager
@@ -469,8 +470,7 @@ void ReactInstanceWin::Initialize() noexcept {
469
470
  case JSIEngine::V8:
470
471
  #if defined(USE_V8)
471
472
  {
472
- uint32_t length{0};
473
- if (GetCurrentPackageFullName(&length, nullptr) != APPMODEL_ERROR_NO_PACKAGE) {
473
+ if (Microsoft::ReactNative::HasPackageIdentity()) {
474
474
  preparedScriptStore =
475
475
  std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(getApplicationTempFolder());
476
476
  } else {
@@ -679,7 +679,26 @@ ReactInstanceState ReactInstanceWin::State() const noexcept {
679
679
  void ReactInstanceWin::InitJSMessageThread() noexcept {
680
680
  m_instance.Exchange(std::make_shared<facebook::react::Instance>());
681
681
 
682
+ winrt::Microsoft::ReactNative::IReactNotificationService service = m_reactContext->Notifications();
683
+ Mso::DispatchQueueSettings queueSettings{};
684
+ queueSettings.TaskStarting = [service](Mso::DispatchQueue const &) noexcept {
685
+ service.SendNotification(
686
+ winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherTaskStartingEventName(), nullptr, nullptr);
687
+ };
688
+ queueSettings.IdleWaitStarting = [service](Mso::DispatchQueue const &) noexcept {
689
+ service.SendNotification(
690
+ winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherIdleWaitStartingEventName(),
691
+ nullptr,
692
+ nullptr);
693
+ };
694
+ queueSettings.IdleWaitCompleted = [service](Mso::DispatchQueue const &) noexcept {
695
+ service.SendNotification(
696
+ winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherIdleWaitCompletedEventName(),
697
+ nullptr,
698
+ nullptr);
699
+ };
682
700
  auto scheduler = Mso::MakeJSCallInvokerScheduler(
701
+ queueSettings,
683
702
  m_instance.Load()->getJSCallInvoker(),
684
703
  Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError),
685
704
  Mso::Copy(m_whenDestroyed));
@@ -153,7 +153,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
153
153
  const bool m_useDirectDebugger : 1;
154
154
  const bool m_useWebDebugger : 1;
155
155
 
156
- const Mso::CntPtr<ReactContext> m_reactContext;
156
+ const Mso::CntPtr<::Mso::React::ReactContext> m_reactContext;
157
157
 
158
158
  std::atomic<bool> m_isLoaded{false};
159
159
  std::atomic<bool> m_isDestroyed{false};
@@ -16,8 +16,18 @@ PointerEventKind ReactPointerEventArgs::Kind() const noexcept {
16
16
  }
17
17
 
18
18
  void ReactPointerEventArgs::Kind(PointerEventKind kind) noexcept {
19
- // The only event type change that is supported is CaptureLost to End.
20
- assert(kind == PointerEventKind::End && m_kind == PointerEventKind::CaptureLost);
19
+ // The only event type transitions that are supported are:
20
+ // 1. PointerEventKind::CaptureLost to PointerEventKind::End to support cases
21
+ // where XAML firing the CaptureLost event should be treated as a gesture
22
+ // completion event, e.g., for pointer events in selectable text that do
23
+ // not result in text selection.
24
+ // 2. PointerEventKind::End to PointerEventKind::Cancel to support cases
25
+ // where a custom view manager implementing `IViewManagerWithPointerEvents`
26
+ // wants to cancel a gesture, e.g., for a custom drag handle where the end
27
+ // of the gesture should not be treated as a completed press event.
28
+ assert(
29
+ (kind == PointerEventKind::End && m_kind == PointerEventKind::CaptureLost) ||
30
+ (kind == PointerEventKind::Cancel && m_kind == PointerEventKind::End));
21
31
  m_kind = kind;
22
32
  }
23
33
 
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include "pch.h"
5
5
  #include "BatchingEventEmitter.h"
6
+ #include <UI.Xaml.Media.h>
6
7
  #include "DynamicWriter.h"
7
8
  #include "JSValueWriter.h"
8
9
 
@@ -31,7 +31,7 @@ namespace Microsoft::ReactNative {
31
31
  // Instead of deduce view id directly from FrameworkElement.Tag, this do
32
32
  // additional check by uimanager.
33
33
  ReactId getViewId(const Mso::React::IReactContext &context, xaml::FrameworkElement const &fe) {
34
- ReactId reactId;
34
+ ReactId reactId{};
35
35
  if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(context).lock()) {
36
36
  if (auto peer = uiManager->reactPeerOrContainerFrom(fe)) {
37
37
  reactId.isValid = true;
@@ -18,7 +18,7 @@ struct ReactId {
18
18
  };
19
19
 
20
20
  template <typename T>
21
- inline typename T asEnum(winrt::Microsoft::ReactNative::JSValue const &obj) {
21
+ inline T asEnum(winrt::Microsoft::ReactNative::JSValue const &obj) {
22
22
  return static_cast<T>(obj.AsInt64());
23
23
  }
24
24
 
@@ -149,10 +149,10 @@ bool TryUpdateForeground(
149
149
  }
150
150
  } else if (propertyValue.IsNull()) {
151
151
  element.ClearValue(T::ForegroundProperty());
152
- UpdateControlForegroundResourceBrushes(element, nullptr);
153
152
  if (uielement) {
154
153
  uielement.HighContrastAdjustment(xaml::ElementHighContrastAdjustment::Application);
155
154
  }
155
+ UpdateControlForegroundResourceBrushes(element, nullptr);
156
156
  }
157
157
 
158
158
  return true;
@@ -24,7 +24,7 @@ struct TransformableText final {
24
24
  dwMapFlags |= LCMAP_TITLECASE;
25
25
  break;
26
26
  default:
27
- nyi();
27
+ assert(false);
28
28
  return originalText;
29
29
  }
30
30