react-native-windows 0.72.13 → 0.73.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 (587) hide show
  1. package/.flowconfig +16 -5
  2. package/Chakra/ChakraHelpers.cpp +1 -1
  3. package/Chakra/ChakraUtils.cpp +1 -1
  4. package/Chakra/ChakraValue.h +1 -1
  5. package/Common/packages.lock.json +13 -0
  6. package/Directory.Build.props +6 -2
  7. package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1 -10
  8. package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +1016 -0
  9. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +1 -1
  10. package/Folly/cgmanifest.json +1 -1
  11. package/Folly/packages.lock.json +23 -0
  12. package/Libraries/Animated/Animated.js +1 -1
  13. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  14. package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
  15. package/Libraries/Animated/NativeAnimatedModule.js +6 -2
  16. package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
  17. package/Libraries/Animated/animations/Animation.js +57 -3
  18. package/Libraries/Animated/animations/DecayAnimation.js +9 -0
  19. package/Libraries/Animated/animations/SpringAnimation.js +8 -0
  20. package/Libraries/Animated/animations/TimingAnimation.js +8 -0
  21. package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
  22. package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
  23. package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
  24. package/Libraries/Animated/createAnimatedComponent.js +1 -0
  25. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  26. package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
  27. package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
  28. package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
  29. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
  30. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  31. package/Libraries/Animated/useAnimatedProps.js +9 -10
  32. package/Libraries/AppState/AppState.d.ts +1 -1
  33. package/Libraries/AppState/NativeAppState.js +8 -4
  34. package/Libraries/AppTheme/AppTheme.js +5 -5
  35. package/Libraries/BatchedBridge/MessageQueue.js +45 -36
  36. package/Libraries/Blob/Blob.js +6 -2
  37. package/Libraries/Blob/BlobManager.js +9 -10
  38. package/Libraries/Blob/BlobRegistry.js +14 -9
  39. package/Libraries/Blob/File.js +1 -1
  40. package/Libraries/Blob/FileReader.js +1 -2
  41. package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
  43. package/Libraries/Components/Glyph/Glyph.js +1 -1
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
  45. package/Libraries/Components/Keyboard/KeyboardExt.d.ts +4 -1
  46. package/Libraries/Components/Keyboard/KeyboardExt.js +3 -0
  47. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  48. package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +4 -29
  49. package/Libraries/Components/Keyboard/KeyboardExtProps.js +0 -17
  50. package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
  51. package/Libraries/Components/Pressable/Pressable.js +3 -2
  52. package/Libraries/Components/Pressable/Pressable.windows.js +4 -3
  53. package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
  54. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +20 -0
  55. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +7 -1
  56. package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
  57. package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +7 -10
  58. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  59. package/Libraries/Components/ScrollView/ScrollView.windows.js +3 -1
  60. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
  61. package/Libraries/Components/Switch/Switch.js +1 -0
  62. package/Libraries/Components/Switch/Switch.windows.js +259 -0
  63. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  64. package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
  65. package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
  66. package/Libraries/Components/TextInput/TextInput.js +62 -10
  67. package/Libraries/Components/TextInput/TextInput.windows.js +100 -14
  68. package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
  69. package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +9 -1
  70. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  71. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  72. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +1 -1
  73. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  74. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
  75. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -1
  76. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
  77. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -0
  78. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
  79. package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
  80. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  81. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  82. package/Libraries/Components/View/View.js +46 -32
  83. package/Libraries/Components/View/View.windows.js +23 -7
  84. package/Libraries/Components/View/ViewAccessibility.d.ts +27 -1
  85. package/Libraries/Components/View/ViewAccessibility.windows.js +3 -0
  86. package/Libraries/Components/View/ViewNativeComponent.js +1 -0
  87. package/Libraries/Components/View/ViewPropTypes.d.ts +104 -1
  88. package/Libraries/Components/View/ViewPropTypes.js +18 -3
  89. package/Libraries/Components/View/ViewPropTypes.windows.js +33 -3
  90. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  91. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
  92. package/Libraries/Core/ExceptionsManager.js +16 -7
  93. package/Libraries/Core/ExtendedError.js +12 -0
  94. package/Libraries/Core/ReactNativeVersion.js +3 -3
  95. package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
  96. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
  97. package/Libraries/Core/setUpDeveloperTools.js +5 -1
  98. package/Libraries/Core/setUpIntersectionObserver.js +16 -0
  99. package/Libraries/Core/setUpMutationObserver.js +16 -0
  100. package/Libraries/Core/setUpPerformance.js +6 -13
  101. package/Libraries/Core/setUpPerformanceObserver.js +16 -0
  102. package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
  103. package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
  104. package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
  105. package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
  106. package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
  107. package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
  108. package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
  109. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
  110. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
  111. package/Libraries/Image/Image.android.js +8 -2
  112. package/Libraries/Image/Image.d.ts +1 -1
  113. package/Libraries/Image/Image.ios.js +4 -1
  114. package/Libraries/Image/Image.windows.js +6 -3
  115. package/Libraries/Image/ImageBackground.js +3 -0
  116. package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
  117. package/Libraries/Inspector/NetworkOverlay.js +2 -2
  118. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
  119. package/Libraries/Interaction/PanResponder.js +1 -4
  120. package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
  121. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
  122. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
  123. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
  124. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
  125. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  126. package/Libraries/Lists/FlatList.d.ts +2 -1
  127. package/Libraries/Lists/FlatList.js +15 -5
  128. package/Libraries/Lists/SectionList.js +4 -0
  129. package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
  130. package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
  131. package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
  132. package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
  133. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
  134. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  135. package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
  136. package/Libraries/MutationObserver/MutationObserver.js +184 -0
  137. package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
  138. package/Libraries/MutationObserver/MutationRecord.js +82 -0
  139. package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
  140. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
  141. package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
  142. package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
  143. package/Libraries/NativeComponent/BaseViewConfig.windows.js +34 -4
  144. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -5
  145. package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
  146. package/Libraries/Network/RCTNetworking.android.js +2 -1
  147. package/Libraries/Network/XMLHttpRequest.js +1 -1
  148. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
  149. package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +2 -2
  150. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
  151. package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
  152. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  153. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
  154. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
  155. package/Libraries/Pressability/Pressability.js +28 -3
  156. package/Libraries/Pressability/Pressability.windows.js +30 -5
  157. package/Libraries/ReactNative/AppContainer.js +2 -3
  158. package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
  159. package/Libraries/ReactNative/AppRegistry.js +66 -53
  160. package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
  161. package/Libraries/ReactNative/FabricUIManager.js +143 -34
  162. package/Libraries/ReactNative/I18nManager.js +5 -11
  163. package/Libraries/ReactNative/NativeI18nManager.js +7 -5
  164. package/Libraries/ReactNative/PaperUIManager.windows.js +2 -2
  165. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
  166. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
  167. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  168. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
  169. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
  170. package/Libraries/ReactNative/UIManager.js +8 -0
  171. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
  172. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
  173. package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
  174. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  175. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  176. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
  177. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
  178. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
  179. package/Libraries/Renderer/shims/ReactFabric.js +5 -6
  180. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
  181. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  182. package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
  183. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
  184. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
  185. package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
  186. package/Libraries/Share/Share.d.ts +3 -9
  187. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
  188. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
  189. package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +10 -6
  190. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  191. package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
  192. package/Libraries/StyleSheet/StyleSheet.js +3 -0
  193. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
  194. package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
  195. package/Libraries/StyleSheet/flattenStyle.js +4 -0
  196. package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
  197. package/Libraries/StyleSheet/processColor.js +1 -2
  198. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  199. package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
  200. package/Libraries/Text/Text.d.ts +5 -5
  201. package/Libraries/Text/Text.js +17 -10
  202. package/Libraries/Text/Text.windows.js +53 -20
  203. package/Libraries/Text/TextProps.windows.js +275 -0
  204. package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
  205. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  206. package/Libraries/Types/CoreEventTypes.d.ts +5 -2
  207. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
  208. package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
  209. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
  210. package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
  211. package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
  212. package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
  213. package/Libraries/Utilities/Platform.android.js +12 -8
  214. package/Libraries/Utilities/Platform.d.ts +1 -0
  215. package/Libraries/Utilities/Platform.flow.js +84 -0
  216. package/Libraries/Utilities/Platform.flow.windows.js +111 -0
  217. package/Libraries/Utilities/Platform.ios.js +12 -8
  218. package/Libraries/Utilities/Platform.windows.js +12 -8
  219. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  220. package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
  221. package/Libraries/Utilities/SceneTracker.js +1 -1
  222. package/Libraries/Utilities/createPerformanceLogger.js +63 -32
  223. package/Libraries/Utilities/useColorScheme.js +7 -8
  224. package/Libraries/WebPerformance/MemoryInfo.js +1 -1
  225. package/Libraries/WebPerformance/NativePerformance.js +3 -8
  226. package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
  227. package/Libraries/WebPerformance/Performance.js +42 -15
  228. package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
  229. package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
  230. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
  231. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
  232. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
  233. package/Libraries/__tests__/ViewWindows-test.js +3 -3
  234. package/Libraries/platform-types.d.ts +6 -2
  235. package/Libraries/promiseRejectionTrackingOptions.js +1 -3
  236. package/Libraries/vendor/emitter/EventEmitter.js +20 -18
  237. package/Microsoft.ReactNative/Composition.Input.idl +103 -0
  238. package/Microsoft.ReactNative/CompositionContext.idl +31 -8
  239. package/Microsoft.ReactNative/CompositionRootView.idl +8 -4
  240. package/Microsoft.ReactNative/CompositionSwitcher.idl +28 -17
  241. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +15 -28
  242. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +7 -10
  243. package/Microsoft.ReactNative/Fabric/ComponentView.h +42 -4
  244. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +57 -4
  245. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +22 -1
  246. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +137 -0
  247. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +59 -0
  248. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +8 -2
  249. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +575 -0
  250. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +170 -0
  251. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +890 -226
  252. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +38 -6
  253. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +79 -0
  254. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +130 -27
  255. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +6 -1
  256. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +382 -228
  257. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +35 -8
  258. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +46 -8
  259. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +5 -21
  260. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +1 -1
  261. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +232 -4
  262. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +36 -1
  263. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +51 -14
  264. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +15 -6
  265. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +123 -0
  266. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +18 -0
  267. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +333 -137
  268. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +52 -8
  269. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +32 -26
  270. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -3
  271. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +183 -175
  272. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +7 -4
  273. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +101 -2
  274. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +46 -2
  275. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +36 -9
  276. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +8 -2
  277. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +247 -42
  278. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +25 -8
  279. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +78 -50
  280. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +12 -4
  281. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +26 -28
  282. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +429 -89
  283. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +24 -3
  284. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +1 -0
  285. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +3 -2
  286. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -7
  287. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -6
  288. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -7
  289. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +1 -17
  290. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +74 -3
  291. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +12 -0
  292. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +53 -59
  293. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -2
  294. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +5 -4
  295. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -1
  296. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +1 -1
  297. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +1 -1
  298. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +3 -4
  299. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformTouch.h +10 -0
  300. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +59 -0
  301. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +31 -0
  302. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +69 -0
  303. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +25 -2
  304. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +23 -0
  305. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/KeyEvent.h +113 -0
  306. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +75 -0
  307. package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +18 -21
  308. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +158 -7
  309. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +15 -17
  310. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -1
  311. package/Microsoft.ReactNative/GlyphViewManager.cpp +1 -1
  312. package/Microsoft.ReactNative/IJSValueReader.idl +2 -2
  313. package/Microsoft.ReactNative/IJSValueWriter.idl +2 -2
  314. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +23 -1
  315. package/Microsoft.ReactNative/IReactContext.cpp +1 -1
  316. package/Microsoft.ReactNative/IReactNotificationService.cpp +4 -3
  317. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -4
  318. package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -2
  319. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +1 -2
  320. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +1 -1
  321. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +3 -4
  322. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +1 -1
  323. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
  324. package/Microsoft.ReactNative/Modules/AppearanceModule.h +1 -1
  325. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +4 -2
  326. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +1 -1
  327. package/Microsoft.ReactNative/Modules/I18nManagerModule.cpp +2 -2
  328. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +1 -1
  329. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +21 -15
  330. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +10 -6
  331. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +4 -1
  332. package/Microsoft.ReactNative/QuirkSettings.idl +1 -1
  333. package/Microsoft.ReactNative/ReactApplication.cpp +13 -11
  334. package/Microsoft.ReactNative/ReactApplication.h +4 -4
  335. package/Microsoft.ReactNative/ReactCoreInjection.h +6 -5
  336. package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.cpp +2 -2
  337. package/Microsoft.ReactNative/ReactHost/MsoUtils.cpp +1 -1
  338. package/Microsoft.ReactNative/ReactHost/React.h +3 -6
  339. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -16
  340. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +8 -16
  341. package/Microsoft.ReactNative/ReactInstanceSettings.cpp +6 -5
  342. package/Microsoft.ReactNative/ReactInstanceSettings.h +7 -7
  343. package/Microsoft.ReactNative/ReactNativeHost.h +4 -4
  344. package/Microsoft.ReactNative/ReactRootView.cpp +5 -4
  345. package/Microsoft.ReactNative/ReactRootView.h +2 -2
  346. package/Microsoft.ReactNative/ReactSupport.h +1 -1
  347. package/Microsoft.ReactNative/RedBox.cpp +1 -1
  348. package/Microsoft.ReactNative/RedBoxHandler.idl +1 -1
  349. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +1 -1
  350. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +49 -21
  351. package/Microsoft.ReactNative/Utils/ValueUtils.h +2 -1
  352. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +31 -59
  353. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +3 -4
  354. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +15 -46
  355. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +5 -13
  356. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +4 -4
  357. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +2 -8
  358. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +127 -86
  359. package/Microsoft.ReactNative/Views/ICompositionRootView.h +1 -1
  360. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  361. package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +2 -2
  362. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +1 -1
  363. package/Microsoft.ReactNative/Views/SIPEventHandler.cpp +5 -5
  364. package/Microsoft.ReactNative/Views/SIPEventHandler.h +1 -1
  365. package/Microsoft.ReactNative/Views/ShadowNodeBase.h +8 -5
  366. package/Microsoft.ReactNative/Views/SwitchViewManager.cpp +2 -2
  367. package/Microsoft.ReactNative/Views/Text/TextTransformVisitor.cpp +1 -1
  368. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +32 -14
  369. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
  370. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +14 -2
  371. package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
  372. package/Microsoft.ReactNative/Views/ViewPanel.cpp +20 -219
  373. package/Microsoft.ReactNative/Views/ViewPanel.h +0 -30
  374. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +17 -158
  375. package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +9 -12
  376. package/Microsoft.ReactNative/Views/cppwinrt/ViewPanel.idl +1 -9
  377. package/Microsoft.ReactNative/XamlHelper.cpp +1 -1
  378. package/Microsoft.ReactNative/XamlHelper.h +1 -1
  379. package/Microsoft.ReactNative/packages.lock.json +128 -0
  380. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +1 -1
  381. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -1
  382. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.cpp +2 -2
  383. package/Microsoft.ReactNative.Cxx/JSValue.h +2 -2
  384. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +0 -1
  385. package/Microsoft.ReactNative.Cxx/NativeModules.h +4 -4
  386. package/Microsoft.ReactNative.Cxx/ReactHandleHelper.h +1 -1
  387. package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +2 -2
  388. package/Microsoft.ReactNative.Cxx/ReactNotificationService.h +10 -9
  389. package/Microsoft.ReactNative.Cxx/ReactPropertyBag.h +13 -12
  390. package/Microsoft.ReactNative.Managed/JSValueReaderGenerator.cs +5 -5
  391. package/Microsoft.ReactNative.Managed/JSValueWriterGenerator.cs +5 -5
  392. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +8 -2
  393. package/Microsoft.ReactNative.Managed/ReactPackageBuilderExtensions.cs +1 -1
  394. package/Microsoft.ReactNative.Managed/ReflectionReactPackageProvider.cs +1 -1
  395. package/Microsoft.ReactNative.Managed/packages.lock.json +9 -9
  396. package/Microsoft.ReactNative.Managed.CodeGen/CodeAnalyzer.cs +2 -0
  397. package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.Module.cs +4 -2
  398. package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.ViewManager.cs +1 -1
  399. package/Microsoft.ReactNative.Managed.CodeGen/DiagnosticDescriptors.cs +1 -1
  400. package/Microsoft.ReactNative.Managed.CodeGen/packages.lock.json +3197 -0
  401. package/Mso/compilerAdapters/compilerFeatures.h +1 -1
  402. package/Mso/compilerAdapters/functionDecorations.h +6 -6
  403. package/Mso/debugAssertApi/debugAssertDetails.h +1 -1
  404. package/Mso/dispatchQueue/dispatchQueue.h +3 -3
  405. package/Mso/motifCpp/motifCppTest.h +1 -1
  406. package/Mso/motifCpp/testCheck.h +1 -1
  407. package/Mso/oacr/oacr.h +1 -1
  408. package/Mso/smartPtr/smartPointerBase.h +1 -1
  409. package/Mso/src/dispatchQueue/looperScheduler.cpp +2 -2
  410. package/Mso/src/dispatchQueue/queueService.cpp +1 -1
  411. package/Mso/src/dispatchQueue/taskQueue.h +1 -1
  412. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +2 -2
  413. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +122 -45
  414. package/Mso/src/eventWaitHandle/eventWaitHandleImpl_win.cpp +2 -2
  415. package/Mso/src/future/futureImpl.cpp +5 -5
  416. package/Mso/src/future/futureImpl.h +1 -1
  417. package/PropertySheets/External/Microsoft.ReactNative.Common.props +3 -0
  418. package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.Common.props → Microsoft.ReactNative.Composition.Common.props} +2 -2
  419. package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.CSharpApp.props → Microsoft.ReactNative.Composition.CppApp.props} +7 -10
  420. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.targets +19 -0
  421. package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.props +14 -0
  422. package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.targets +18 -0
  423. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +1 -1
  424. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  425. package/PropertySheets/HybridCRT.props +34 -0
  426. package/PropertySheets/JSEngine.props +1 -2
  427. package/PropertySheets/React.Cpp.props +0 -1
  428. package/PropertySheets/Warnings.props +1 -1
  429. package/PropertySheets/WinUI.props +1 -1
  430. package/ReactCommon/ReactCommon.vcxproj +15 -9
  431. package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
  432. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +32 -5
  433. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +20 -0
  434. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +1038 -0
  435. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +228 -38
  436. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +895 -0
  437. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +543 -0
  438. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +1509 -0
  439. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +67 -0
  440. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +93 -0
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +88 -0
  442. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +606 -0
  443. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +344 -0
  444. package/ReactCommon/Yoga.cpp +497 -3895
  445. package/ReactCommon/packages.lock.json +30 -0
  446. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +22 -0
  447. package/Scripts/OfficeReact.Win32.nuspec +1 -0
  448. package/Scripts/rnw-dependencies.ps1 +79 -26
  449. package/Shared/BaseScriptStoreImpl.cpp +42 -13
  450. package/Shared/BaseScriptStoreImpl.h +1 -1
  451. package/Shared/Composition/AutoDraw.h +36 -0
  452. package/Shared/CxxMessageQueue.cpp +1 -1
  453. package/Shared/DevSettings.h +3 -0
  454. package/Shared/DevSupportManager.h +1 -1
  455. package/Shared/Hasher.cpp +64 -0
  456. package/Shared/Hasher.h +24 -0
  457. package/Shared/HermesRuntimeHolder.cpp +6 -6
  458. package/Shared/IDevSupportManager.h +1 -1
  459. package/Shared/JSI/ChakraApi.cpp +1 -1
  460. package/Shared/JSI/ChakraRuntime.cpp +10 -10
  461. package/Shared/JSI/ChakraRuntime.h +6 -6
  462. package/Shared/JSI/V8RuntimeHolder.cpp +1 -1
  463. package/Shared/Modules/IRequestBodyHandler.h +1 -1
  464. package/Shared/Modules/IUriHandler.h +1 -1
  465. package/Shared/Modules/PlatformConstantsModule.cpp +1 -1
  466. package/Shared/Modules/WebSocketModule.cpp +1 -1
  467. package/Shared/Networking/DefaultBlobResource.cpp +2 -2
  468. package/Shared/Networking/OriginPolicyHttpFilter.cpp +22 -16
  469. package/Shared/Networking/OriginPolicyHttpFilter.h +12 -11
  470. package/Shared/OInstance.cpp +9 -23
  471. package/Shared/OInstance.h +1 -1
  472. package/Shared/PackagerConnection.h +1 -1
  473. package/Shared/SafeLoadLibrary.cpp +8 -44
  474. package/Shared/SafeLoadLibrary.h +1 -5
  475. package/Shared/Shared.vcxitems +50 -20
  476. package/Shared/Shared.vcxitems.filters +26 -17
  477. package/Shared/Threading/BatchingQueueThread.cpp +5 -5
  478. package/Shared/Threading/BatchingQueueThread.h +4 -4
  479. package/Shared/TurboModuleManager.cpp +1 -1
  480. package/Shared/Utils.cpp +1 -1
  481. package/Shared/tracing/fbsystrace.h +1 -1
  482. package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
  483. package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
  484. package/codegen/NativeAppStateSpec.g.h +11 -21
  485. package/codegen/NativeDeviceInfoSpec.g.h +4 -14
  486. package/codegen/NativeI18nManagerSpec.g.h +6 -16
  487. package/codegen/NativeIntersectionObserverSpec.g.h +96 -0
  488. package/codegen/NativeMutationObserverSpec.g.h +90 -0
  489. package/codegen/NativePerformanceObserverSpec.g.h +19 -13
  490. package/codegen/NativePerformanceSpec.g.h +6 -23
  491. package/codegen/NativePlatformConstantsAndroidSpec.g.h +22 -30
  492. package/codegen/NativePlatformConstantsIOSSpec.g.h +17 -25
  493. package/codegen/NativePlatformConstantsWinSpec.g.h +14 -22
  494. package/codegen/NativeSampleTurboModuleSpec.g.h +36 -0
  495. package/codegen/NativeSourceCodeSpec.g.h +3 -13
  496. package/codegen/react/components/rnwcore/EventEmitters.cpp +85 -58
  497. package/codegen/react/components/rnwcore/EventEmitters.h +17 -35
  498. package/codegen/react/components/rnwcore/Props.h +16 -17
  499. package/codegen/rnwcoreJSI-generated.cpp +1462 -319
  500. package/codegen/rnwcoreJSI.h +1609 -462
  501. package/fmt/packages.lock.json +13 -0
  502. package/index.windows.js +3 -3
  503. package/{Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
  504. package/jest/__tests__/setup-test.js +18 -0
  505. package/jest/mockModal.js +6 -4
  506. package/jest/setup.js +61 -30
  507. package/just-task.js +1 -0
  508. package/package.json +37 -42
  509. package/template/cs-app/proj/MyApp.csproj +0 -1
  510. package/template/cs-lib/proj/MyLib.csproj +0 -1
  511. package/templates/.clang-format +4 -0
  512. package/templates/cpp-app/metro.config.js +51 -0
  513. package/templates/cpp-app/template.config.js +119 -0
  514. package/templates/cpp-app/windows/ExperimentalFeatures.props +12 -0
  515. package/templates/cpp-app/windows/MyApp/MyApp.cpp +284 -0
  516. package/templates/cpp-app/windows/MyApp/MyApp.h +3 -0
  517. package/templates/cpp-app/windows/MyApp/MyApp.ico +0 -0
  518. package/templates/cpp-app/windows/MyApp/MyApp.rc +0 -0
  519. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +142 -0
  520. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +55 -0
  521. package/templates/cpp-app/windows/MyApp/_gitignore +1 -0
  522. package/templates/cpp-app/windows/MyApp/pch.cpp +1 -0
  523. package/templates/cpp-app/windows/MyApp/pch.h +35 -0
  524. package/templates/cpp-app/windows/MyApp/resource.h +18 -0
  525. package/templates/cpp-app/windows/MyApp/small.ico +0 -0
  526. package/templates/cpp-app/windows/MyApp/targetver.h +8 -0
  527. package/templates/cpp-app/windows/MyApp.Package/Images/LockScreenLogo.scale-200.png +0 -0
  528. package/templates/cpp-app/windows/MyApp.Package/Images/SplashScreen.scale-200.png +0 -0
  529. package/templates/cpp-app/windows/MyApp.Package/Images/Square150x150Logo.scale-200.png +0 -0
  530. package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.scale-200.png +0 -0
  531. package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
  532. package/templates/cpp-app/windows/MyApp.Package/Images/StoreLogo.png +0 -0
  533. package/templates/cpp-app/windows/MyApp.Package/Images/Wide310x150Logo.scale-200.png +0 -0
  534. package/templates/cpp-app/windows/MyApp.Package/MyApp.Package.wapproj +78 -0
  535. package/{template/cs-app-WinAppSDK/MyApp → templates/cpp-app/windows/MyApp.Package}/Package.appxmanifest +9 -8
  536. package/templates/cpp-app/windows/MyApp.sln +176 -0
  537. package/templates/cpp-app/windows/_gitignore +41 -0
  538. package/templates/old/generateWrapper.js +67 -0
  539. package/templates/old/uwp-cpp-app/template.config.js +15 -0
  540. package/templates/old/uwp-cpp-lib/template.config.js +15 -0
  541. package/templates/old/uwp-cs-app/template.config.js +15 -0
  542. package/templates/old/uwp-cs-lib/template.config.js +15 -0
  543. package/types/experimental.d.ts +44 -0
  544. package/types/index.d.ts +2 -1
  545. package/types/modules/Devtools.d.ts +1 -0
  546. package/types/modules/globals.d.ts +16 -1
  547. package/Libraries/Components/View/ViewWindows.d.ts +0 -19
  548. package/Libraries/Components/View/ViewWindows.js +0 -22
  549. package/Libraries/Components/View/ViewWindows.js.map +0 -1
  550. package/Libraries/Components/View/ViewWindowsProps.d.ts +0 -69
  551. package/Libraries/Components/View/ViewWindowsProps.js +0 -8
  552. package/Libraries/Components/View/ViewWindowsProps.js.map +0 -1
  553. package/Libraries/Utilities/AcessibilityMapping.js +0 -154
  554. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
  555. package/Libraries/Utilities/useColorScheme.windows.js +0 -26
  556. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.cpp +0 -61
  557. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.h +0 -34
  558. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/primitives.h +0 -42
  559. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharp.PackageReferences.props +0 -11
  560. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.targets +0 -51
  561. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +0 -237
  562. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +0 -59
  563. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.cpp +0 -159
  564. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.h +0 -94
  565. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +0 -465
  566. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.h +0 -116
  567. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewShadowNode.cpp +0 -98
  568. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/primitives.h +0 -326
  569. package/Scripts/Microsoft.ReactNative.WindowsAppSDK.nuspec +0 -30
  570. package/Shared/V8JSIRuntimeHolder.cpp +0 -71
  571. package/Shared/V8JSIRuntimeHolder.h +0 -56
  572. package/codegen/NativeDevSplitBundleLoaderSpec.g.h +0 -34
  573. package/template/cs-app-WinAppSDK/MyApp/App.xaml +0 -16
  574. package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +0 -70
  575. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +0 -14
  576. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +0 -38
  577. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +0 -19
  578. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +0 -19
  579. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +0 -19
  580. package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +0 -10
  581. package/template/cs-app-WinAppSDK/MyApp/app.manifest +0 -15
  582. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +0 -24
  583. package/template/cs-app-WinAppSDK/proj/MyApp.csproj +0 -53
  584. package/template/cs-app-WinAppSDK/proj/MyApp.sln +0 -43
  585. package/template/cs-app-WinAppSDK/proj/NuGet_Config +0 -19
  586. /package/Libraries/Components/DrawerAndroid/{DrawerLayoutAndroid.ios.js → DrawerLayoutAndroid.js} +0 -0
  587. /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
@@ -7,17 +7,24 @@
7
7
 
8
8
  #include <Fabric/FabricUIManagerModule.h>
9
9
  #include <IReactContext.h>
10
+ #include <React.h>
10
11
  #include <Views/DevMenu.h>
11
12
  #include <Views/ShadowNodeBase.h>
12
13
  #include <windows.h>
13
14
  #include <windowsx.h>
15
+ #include <winrt/Windows.UI.Input.h>
16
+ #include "Composition.Input.h"
14
17
  #include "CompositionRootView.h"
15
18
  #include "CompositionViewComponentView.h"
16
19
  #include "RootComponentView.h"
17
20
 
21
+ #ifdef USE_WINUI3
22
+ #include <winrt/Microsoft.UI.Input.h>
23
+ #endif
24
+
18
25
  namespace Microsoft::ReactNative {
19
26
 
20
- const PointerId MOUSE_POINTER_ID = 1; // TODO ensure this is something that does not conflict with pointer point IDs.
27
+ const PointerId MOUSE_POINTER_ID = 1;
21
28
 
22
29
  bool IsMousePointerEvent(const facebook::react::PointerEvent &pointerEvent) {
23
30
  return pointerEvent.pointerId == MOUSE_POINTER_ID;
@@ -31,6 +38,14 @@ bool IsViewListeningToEvent(IComponentView *view, facebook::react::ViewEvents::O
31
38
  return false;
32
39
  }
33
40
 
41
+ bool IsViewListeningToEvent(IComponentView *view, facebook::react::WindowsViewEvents::Offset eventType) {
42
+ if (view) {
43
+ auto const &viewProps = *std::static_pointer_cast<facebook::react::ViewProps const>(view->props());
44
+ return viewProps.windowsEvents[eventType];
45
+ }
46
+ return false;
47
+ }
48
+
34
49
  bool IsAnyViewInPathListeningToEvent(
35
50
  std::vector<IComponentView *> &path,
36
51
  facebook::react::ViewEvents::Offset eventType) {
@@ -44,7 +59,7 @@ bool IsAnyViewInPathListeningToEvent(
44
59
 
45
60
  IComponentView *FindClosestFabricManagedTouchableView(IComponentView *componentView) {
46
61
  while (componentView) {
47
- if (componentView->touchEventEmitter()) {
62
+ if (componentView->eventEmitter()) {
48
63
  return componentView;
49
64
  }
50
65
  componentView = componentView->parent();
@@ -72,17 +87,169 @@ facebook::react::SharedEventEmitter EventEmitterForComponent(
72
87
  return nullptr;
73
88
  }
74
89
 
75
- CompositionEventHandler::CompositionEventHandler(const winrt::Microsoft::ReactNative::ReactContext &context)
76
- : m_context(context) {}
90
+ struct CompositionKeyboardSource
91
+ : winrt::implements<CompositionKeyboardSource, winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource> {
92
+ CompositionKeyboardSource(CompositionEventHandler *outer) : m_outer(outer) {}
93
+
94
+ winrt::Windows::UI::Core::CoreVirtualKeyStates GetKeyState(winrt::Windows::System::VirtualKey key) noexcept {
95
+ if (!m_outer)
96
+ return winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
97
+ return m_outer->GetKeyState(key);
98
+ }
99
+
100
+ void Disconnect() noexcept {
101
+ m_outer = nullptr;
102
+ }
103
+
104
+ private:
105
+ CompositionEventHandler *m_outer{nullptr};
106
+ };
107
+
108
+ #ifdef USE_WINUI3
109
+ struct CompositionInputKeyboardSource : winrt::implements<
110
+ CompositionInputKeyboardSource,
111
+ winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource> {
112
+ CompositionInputKeyboardSource(winrt::Microsoft::UI::Input::InputKeyboardSource source) : m_source(source) {}
113
+
114
+ winrt::Windows::UI::Core::CoreVirtualKeyStates GetKeyState(winrt::Windows::System::VirtualKey key) noexcept {
115
+ if (!m_source)
116
+ return winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
117
+
118
+ static_assert(
119
+ static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
120
+ winrt::Microsoft::UI::Input::VirtualKeyStates::Down) ==
121
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down);
122
+ static_assert(
123
+ static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
124
+ winrt::Microsoft::UI::Input::VirtualKeyStates::Locked) ==
125
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Locked);
126
+ static_assert(
127
+ static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
128
+ winrt::Microsoft::UI::Input::VirtualKeyStates::None) ==
129
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::None);
130
+ return static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(m_source.GetKeyState(key));
131
+ }
132
+
133
+ void Disconnect() noexcept {
134
+ m_source = nullptr;
135
+ }
136
+
137
+ private:
138
+ winrt::Microsoft::UI::Input::InputKeyboardSource m_source{nullptr};
139
+ };
140
+ #endif
77
141
 
78
142
  CompositionEventHandler::CompositionEventHandler(
79
143
  const winrt::Microsoft::ReactNative::ReactContext &context,
80
144
  const winrt::Microsoft::ReactNative::CompositionRootView &CompositionRootView)
81
- : CompositionEventHandler(context) {
145
+ : m_context(context) {
82
146
  m_compRootView = CompositionRootView;
147
+
148
+ #ifdef USE_WINUI3
149
+ if (auto island = m_compRootView.Island()) {
150
+ auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
151
+
152
+ m_pointerPressedToken =
153
+ pointerSource.PointerPressed([this](
154
+ winrt::Microsoft::UI::Input::InputPointerSource const &,
155
+ winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
156
+ if (SurfaceId() == -1)
157
+ return;
158
+
159
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
160
+ args.CurrentPoint());
161
+ onPointerPressed(pp, args.KeyModifiers());
162
+ });
163
+
164
+ m_pointerReleasedToken =
165
+ pointerSource.PointerReleased([this](
166
+ winrt::Microsoft::UI::Input::InputPointerSource const &,
167
+ winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
168
+ if (SurfaceId() == -1)
169
+ return;
170
+
171
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
172
+ args.CurrentPoint());
173
+ onPointerReleased(pp, args.KeyModifiers());
174
+ });
175
+
176
+ m_pointerMovedToken = pointerSource.PointerMoved([this](
177
+ winrt::Microsoft::UI::Input::InputPointerSource const &,
178
+ winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
179
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
180
+ args.CurrentPoint());
181
+ onPointerMoved(pp, args.KeyModifiers());
182
+ });
183
+
184
+ m_pointerWheelChangedToken =
185
+ pointerSource.PointerWheelChanged([this](
186
+ winrt::Microsoft::UI::Input::InputPointerSource const &,
187
+ winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
188
+ if (SurfaceId() == -1)
189
+ return;
190
+
191
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
192
+ args.CurrentPoint());
193
+ onPointerWheelChanged(pp, args.KeyModifiers());
194
+ });
195
+
196
+ auto keyboardSource = winrt::Microsoft::UI::Input::InputKeyboardSource::GetForIsland(island);
197
+
198
+ m_keyDownToken = keyboardSource.KeyDown([this](
199
+ winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
200
+ winrt::Microsoft::UI::Input::KeyEventArgs const &args) {
201
+ if (SurfaceId() == -1)
202
+ return;
203
+
204
+ auto focusedComponent = RootComponentView().GetFocusedComponent();
205
+ auto keyArgs = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
206
+ focusedComponent
207
+ ? focusedComponent->tag()
208
+ : static_cast<facebook::react::Tag>(
209
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(m_compRootView)
210
+ ->GetTag()),
211
+ args);
212
+ auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
213
+ onKeyDown(keyboardSource, keyArgs);
214
+ winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
215
+ });
216
+
217
+ m_keyUpToken = keyboardSource.KeyUp([this](
218
+ winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
219
+ winrt::Microsoft::UI::Input::KeyEventArgs const &args) {
220
+ if (SurfaceId() == -1)
221
+ return;
222
+
223
+ auto focusedComponent = RootComponentView().GetFocusedComponent();
224
+ auto keyArgs = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
225
+ focusedComponent
226
+ ? focusedComponent->tag()
227
+ : static_cast<facebook::react::Tag>(
228
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(m_compRootView)
229
+ ->GetTag()),
230
+ args);
231
+ auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
232
+ onKeyUp(keyboardSource, keyArgs);
233
+ winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
234
+ });
235
+ }
236
+ #endif
83
237
  };
84
238
 
85
- CompositionEventHandler::~CompositionEventHandler() {}
239
+ CompositionEventHandler::~CompositionEventHandler() {
240
+ #ifdef USE_WINUI3
241
+ if (auto island = m_compRootView.Island()) {
242
+ auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
243
+ pointerSource.PointerPressed(m_pointerPressedToken);
244
+ pointerSource.PointerReleased(m_pointerReleasedToken);
245
+ pointerSource.PointerMoved(m_pointerMovedToken);
246
+ pointerSource.PointerWheelChanged(m_pointerWheelChangedToken);
247
+ auto keyboardSource = winrt::Microsoft::UI::Input::InputKeyboardSource::GetForIsland(island);
248
+ keyboardSource.KeyDown(m_keyDownToken);
249
+ keyboardSource.KeyUp(m_keyUpToken);
250
+ }
251
+ #endif
252
+ }
86
253
 
87
254
  facebook::react::SurfaceId CompositionEventHandler::SurfaceId() noexcept {
88
255
  return static_cast<facebook::react::SurfaceId>(
@@ -96,66 +263,98 @@ facebook::react::SurfaceId CompositionEventHandler::SurfaceId() noexcept {
96
263
  return static_cast<::Microsoft::ReactNative::RootComponentView &>(*(rootComponentViewDescriptor.view));
97
264
  }
98
265
 
99
- // For DM
100
- /*
101
- void CompositionEventHandler::PointerDown(facebook::react::SurfaceId surfaceId, uint32_t pointerId) {
102
- if (std::shared_ptr<FabricUIManager> fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
103
- winrt::Microsoft::ReactNative::ReactPropertyBag(m_context->Properties()))) {
104
- facebook::react::Point ptLocal;
266
+ void CompositionEventHandler::onPointerWheelChanged(
267
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
268
+ winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
269
+ if (std::shared_ptr<FabricUIManager> fabricuiManager =
270
+ ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
271
+ auto position = pointerPoint.Position();
105
272
 
273
+ facebook::react::Point ptLocal;
274
+ facebook::react::Point ptScaled = {static_cast<float>(position.X), static_cast<float>(position.Y)};
106
275
 
107
- auto pp = winrt::Windows::UI::Input::PointerPoint::GetCurrentPoint(pointerId);
276
+ auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
108
277
 
278
+ if (tag == -1)
279
+ return;
109
280
 
110
- auto rootComponentViewDescriptor = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(surfaceId);
111
- auto tag = rootComponentViewDescriptor.view->hitTest({pp.Position().X, pp.Position().Y}, ptLocal);
281
+ auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
282
+ auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
283
+ tag, pointerPoint, keyModifiers);
112
284
 
113
- if (tag != -1) {
114
- auto hitComponentViewDescriptor = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag);
115
- static_cast<CompositionBaseComponentView &>(*hitComponentViewDescriptor.view).OnPointerDown(pp);
285
+ std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->onPointerWheelChanged(args);
116
286
  }
287
+ }
117
288
 
118
- //fabricuiManager
119
-
289
+ winrt::Windows::UI::Core::CoreVirtualKeyStates CompositionEventHandler::GetKeyState(
290
+ winrt::Windows::System::VirtualKey key) noexcept {
291
+ winrt::Windows::UI::Core::CoreVirtualKeyStates coreKeyState = winrt::Windows::UI::Core::CoreVirtualKeyStates::None;
292
+ SHORT keyState = ::GetKeyState(static_cast<int>(key));
293
+ if (keyState & 0x01) {
294
+ coreKeyState = winrt::Windows::UI::Core::CoreVirtualKeyStates::Locked;
295
+ }
296
+ if (keyState & 0x8000) {
297
+ coreKeyState = static_cast<winrt::Windows::UI::Core::CoreVirtualKeyStates>(
298
+ static_cast<int>(coreKeyState) | static_cast<int>(winrt::Windows::UI::Core::CoreVirtualKeyStates::Down));
120
299
  }
121
300
 
301
+ return coreKeyState;
122
302
  }
123
- */
124
-
125
- void CompositionEventHandler::ScrollWheel(facebook::react::Point pt, uint32_t delta) {
126
- if (std::shared_ptr<FabricUIManager> fabricuiManager =
127
- ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
128
- facebook::react::Point ptLocal;
129
303
 
130
- RootComponentView().ScrollWheel(
131
- {static_cast<float>(pt.x / m_compRootView.ScaleFactor()),
132
- static_cast<float>(pt.y / m_compRootView.ScaleFactor())},
133
- delta);
304
+ winrt::Windows::System::VirtualKeyModifiers GetKeyModifiers(uint64_t wParam) {
305
+ auto keyModifiers = winrt::Windows::System::VirtualKeyModifiers::None;
306
+ if ((wParam & MK_CONTROL) == MK_CONTROL) {
307
+ keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Control;
308
+ }
309
+ if ((wParam & MK_SHIFT) == MK_SHIFT) {
310
+ keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Shift;
311
+ }
312
+ if (::GetKeyState(VK_MENU) < 0) {
313
+ keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Menu;
134
314
  }
315
+ if (::GetKeyState(VK_LWIN) < 0 || ::GetKeyState(VK_RWIN) < 0) {
316
+ keyModifiers |= winrt::Windows::System::VirtualKeyModifiers::Windows;
317
+ }
318
+ return keyModifiers;
135
319
  }
136
320
 
137
321
  int64_t CompositionEventHandler::SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept {
138
322
  switch (msg) {
139
323
  case WM_LBUTTONDOWN: {
140
- ButtonDown(msg, wParam, lParam);
324
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
325
+ msg, wParam, lParam, m_compRootView.ScaleFactor());
326
+ onPointerPressed(pp, GetKeyModifiers(wParam));
141
327
  return 0;
142
328
  }
143
329
  case WM_POINTERDOWN: {
144
- PointerPressed(msg, wParam, lParam);
330
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
331
+ msg, wParam, lParam, m_compRootView.ScaleFactor());
332
+ onPointerPressed(pp, GetKeyModifiers(wParam));
145
333
  return 0;
146
334
  }
147
335
  case WM_LBUTTONUP: {
148
- ButtonUp(msg, wParam, lParam);
336
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
337
+ msg, wParam, lParam, m_compRootView.ScaleFactor());
338
+ onPointerReleased(pp, GetKeyModifiers(wParam));
149
339
  return 0;
150
340
  }
151
341
  case WM_POINTERUP: {
152
- PointerUp(msg, wParam, lParam);
342
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
343
+ msg, wParam, lParam, m_compRootView.ScaleFactor());
344
+ onPointerReleased(pp, GetKeyModifiers(wParam));
153
345
  return 0;
154
346
  }
155
347
  case WM_MOUSEMOVE: {
156
- MouseMove(msg, wParam, lParam);
348
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
349
+ msg, wParam, lParam, m_compRootView.ScaleFactor());
350
+ onPointerMoved(pp, GetKeyModifiers(wParam));
157
351
  return 0;
158
352
  }
353
+ case WM_MOUSEWHEEL: {
354
+ auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
355
+ msg, wParam, lParam, m_compRootView.ScaleFactor());
356
+ onPointerWheelChanged(pp, GetKeyModifiers(wParam));
357
+ }
159
358
  case WM_CHAR:
160
359
  case WM_SYSCHAR: {
161
360
  // TODO full bubbling of events
@@ -164,53 +363,82 @@ int64_t CompositionEventHandler::SendMessage(uint32_t msg, uint64_t wParam, int6
164
363
  if (result)
165
364
  return result;
166
365
  }
366
+ break;
167
367
  }
168
368
  case WM_KEYDOWN:
169
369
  case WM_KEYUP:
170
370
  case WM_SYSKEYDOWN:
171
371
  case WM_SYSKEYUP: {
172
- // TODO full bubbling of events
173
- if (auto focusedComponent = RootComponentView().GetFocusedComponent()) {
174
- auto result = focusedComponent->sendMessage(msg, wParam, lParam);
175
- if (result)
176
- return result;
372
+ auto focusedComponent = RootComponentView().GetFocusedComponent();
373
+ auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
374
+ focusedComponent
375
+ ? focusedComponent->tag()
376
+ : static_cast<facebook::react::Tag>(
377
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(m_compRootView)
378
+ ->GetTag()),
379
+ msg,
380
+ wParam,
381
+ lParam);
382
+ auto keyboardSource = winrt::make<CompositionKeyboardSource>(this);
383
+ if (msg == WM_KEYDOWN || msg == WM_SYSKEYDOWN) {
384
+ onKeyDown(keyboardSource, args);
385
+ } else {
386
+ onKeyUp(keyboardSource, args);
177
387
  }
178
-
179
- BYTE bKeys[256];
180
- if (GetKeyboardState(bKeys)) {
181
- bool fShift = false;
182
- if (bKeys[VK_LSHIFT] & 0x80)
183
- fShift = true;
184
- if (bKeys[VK_RSHIFT] & 0x80)
185
- fShift = true;
186
- bool fCtrl = false;
187
- if (bKeys[VK_LCONTROL] & 0x80)
188
- fCtrl = true;
189
- if (bKeys[VK_RCONTROL] & 0x80)
190
- fCtrl = true;
191
- if (msg == WM_KEYDOWN && wParam == VkKeyScanA('d') && fShift && fCtrl) {
192
- auto contextSelf = winrt::get_self<React::implementation::ReactContext>(m_context.Handle());
193
- Microsoft::ReactNative::DevMenuManager::Show(
194
- Mso::CntPtr<Mso::React::IReactContext>(&contextSelf->GetInner()));
195
- }
196
- if (!fCtrl && msg == WM_KEYDOWN && wParam == VK_TAB) {
197
- if (!RootComponentView().TryMoveFocus(!fShift)) {
198
- // TODO notify rootview that host should move focus
199
- }
200
- return 1;
201
- }
202
- }
203
- return 0;
388
+ winrt::get_self<CompositionKeyboardSource>(keyboardSource)->Disconnect();
204
389
  }
205
390
  }
206
391
 
207
392
  return 0;
208
393
  }
209
394
 
395
+ void CompositionEventHandler::onKeyDown(
396
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
397
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
398
+ if (auto focusedComponent = RootComponentView().GetFocusedComponent()) {
399
+ focusedComponent->onKeyDown(source, args);
400
+
401
+ if (args.Handled())
402
+ return;
403
+ }
404
+
405
+ bool fShift = source.GetKeyState(winrt::Windows::System::VirtualKey::Shift) ==
406
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
407
+ bool fCtrl =
408
+ GetKeyState(winrt::Windows::System::VirtualKey::Control) == winrt::Windows::UI::Core::CoreVirtualKeyStates::Down;
409
+
410
+ if (fShift && fCtrl && args.Key() == static_cast<winrt::Windows::System::VirtualKey>(VkKeyScanA('d')) &&
411
+ Mso::React::ReactOptions::UseDeveloperSupport(m_context.Properties().Handle())) {
412
+ auto contextSelf = winrt::get_self<React::implementation::ReactContext>(m_context.Handle());
413
+ Microsoft::ReactNative::DevMenuManager::Show(Mso::CntPtr<Mso::React::IReactContext>(&contextSelf->GetInner()));
414
+ args.Handled(true);
415
+ return;
416
+ }
417
+
418
+ if (!fCtrl && args.Key() == winrt::Windows::System::VirtualKey::Tab) {
419
+ if (RootComponentView().TryMoveFocus(!fShift)) {
420
+ args.Handled(true);
421
+ }
422
+
423
+ // TODO notify rootview that host should move focus
424
+ }
425
+ }
426
+
427
+ void CompositionEventHandler::onKeyUp(
428
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
429
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
430
+ if (auto focusedComponent = RootComponentView().GetFocusedComponent()) {
431
+ focusedComponent->onKeyUp(source, args);
432
+
433
+ if (args.Handled())
434
+ return;
435
+ }
436
+ }
437
+
210
438
  std::vector<IComponentView *> GetTouchableViewsInPathToRoot(IComponentView *view) {
211
439
  std::vector<IComponentView *> results;
212
440
  while (view) {
213
- if (view->touchEventEmitter()) {
441
+ if (view->eventEmitter()) {
214
442
  results.push_back(view);
215
443
  }
216
444
  view = view->parent();
@@ -220,15 +448,17 @@ std::vector<IComponentView *> GetTouchableViewsInPathToRoot(IComponentView *view
220
448
 
221
449
  /**
222
450
  * Private method which is used for tracking the location of pointer events to manage the entering/leaving events.
223
- * The primary idea is that a pointer's presence & movement is dicated by a variety of underlying events such as down,
451
+ * The primary idea is that a pointer's presence & movement is dictated by a variety of underlying events such as down,
224
452
  * move, and up — and they should all be treated the same when it comes to tracking the entering & leaving of pointers
225
- * to views. This method accomplishes that by recieving the pointer event, the target view (can be null in cases when
453
+ * to views. This method accomplishes that by receiving the pointer event, the target view (can be null in cases when
226
454
  * the event indicates that the pointer has left the screen entirely), and a block/callback where the underlying event
227
455
  * should be fired.
228
456
  */
229
457
  void CompositionEventHandler::HandleIncomingPointerEvent(
230
458
  facebook::react::PointerEvent &event,
231
459
  IComponentView *targetView,
460
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
461
+ winrt::Windows::System::VirtualKeyModifiers keyModifiers,
232
462
  std::function<void(std::vector<IComponentView *> &)> handler) {
233
463
  int pointerId = event.pointerId;
234
464
  // CGPoint clientLocation = CGPointMake(event.clientPoint.x, event.clientPoint.y);
@@ -253,7 +483,7 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
253
483
  if (targetView != nullptr && previousTargetTag != targetView->tag()) {
254
484
  bool shouldEmitOverEvent =
255
485
  IsAnyViewInPathListeningToEvent(eventPathViews, facebook::react::ViewEvents::Offset::PointerOver);
256
- facebook::react::SharedTouchEventEmitter eventEmitter = targetView->touchEventEmitterAtPoint(event.offsetPoint);
486
+ const auto eventEmitter = targetView->eventEmitterAtPoint(event.offsetPoint);
257
487
  if (shouldEmitOverEvent && eventEmitter != nullptr) {
258
488
  eventEmitter->onPointerOver(event);
259
489
  }
@@ -264,9 +494,10 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
264
494
  // We only want to emit events to JS if there is a view that is currently listening to said event
265
495
  // so we only send those event to the JS side if the element which has been entered is itself listening,
266
496
  // or if one of its parents is listening in case those listeners care about the capturing phase. Adding the ability
267
- // for native to distingusih between capturing listeners and not could be an optimization to futher reduce the
497
+ // for native to distinguish between capturing listeners and not could be an optimization to further reduce the
268
498
  // number of events we send to JS
269
499
  bool hasParentEnterListener = false;
500
+ bool emittedNativeEnteredEvent = false;
270
501
 
271
502
  for (auto itComponentView = eventPathViews.rbegin(); itComponentView != eventPathViews.rend();
272
503
  itComponentView++) { // for (RCTReactTaggedView *taggedView in [eventPathViews reverseObjectEnumerator]) {
@@ -275,18 +506,27 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
275
506
  bool shouldEmitEvent = componentView != nullptr &&
276
507
  (hasParentEnterListener ||
277
508
  IsViewListeningToEvent(componentView, facebook::react::ViewEvents::Offset::PointerEnter) ||
278
- IsViewListeningToEvent(componentView, facebook::react::ViewEvents::Offset::MouseEnter));
509
+ IsViewListeningToEvent(componentView, facebook::react::WindowsViewEvents::Offset::MouseEnter));
279
510
 
280
- if (shouldEmitEvent &&
511
+ if ((shouldEmitEvent || !emittedNativeEnteredEvent) &&
281
512
  std::find(currentlyHoveredViews.begin(), currentlyHoveredViews.end(), componentView) ==
282
513
  currentlyHoveredViews.end()) {
283
- facebook::react::SharedTouchEventEmitter eventEmitter = componentView->touchEventEmitter();
284
- if (eventEmitter) {
285
- eventEmitter->onPointerEnter(event);
286
- if (IsMousePointerEvent(event)) {
287
- eventEmitter->onMouseEnter(event);
514
+ if (shouldEmitEvent) {
515
+ const auto eventEmitter = componentView->eventEmitter();
516
+ if (eventEmitter) {
517
+ eventEmitter->onPointerEnter(event);
518
+ if (IsMousePointerEvent(event)) {
519
+ eventEmitter->onMouseEnter(event);
520
+ }
288
521
  }
289
522
  }
523
+ if (!emittedNativeEnteredEvent) {
524
+ emittedNativeEnteredEvent = true;
525
+ auto args =
526
+ winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
527
+ componentView->tag(), pointerPoint, keyModifiers);
528
+ static_cast<CompositionBaseComponentView *>(componentView)->onPointerEntered(args);
529
+ }
290
530
  }
291
531
 
292
532
  if (shouldEmitEvent && !hasParentEnterListener) {
@@ -301,7 +541,7 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
301
541
  if (previousTargetTag != -1 && previousTargetTag != (targetView ? targetView->tag() : -1)) {
302
542
  bool shouldEmitOutEvent =
303
543
  IsAnyViewInPathListeningToEvent(currentlyHoveredViews, facebook::react::ViewEvents::Offset::PointerOut);
304
- facebook::react::SharedTouchEventEmitter eventEmitter = prevTargetView->touchEventEmitter();
544
+ const auto eventEmitter = prevTargetView->eventEmitter();
305
545
  if (shouldEmitOutEvent && eventEmitter != nullptr) {
306
546
  eventEmitter->onPointerOut(event);
307
547
  }
@@ -309,13 +549,15 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
309
549
 
310
550
  // Leaving
311
551
 
312
- // pointerleave events need to be emited from the deepest target to the root but
552
+ // pointerleave events need to be emitted from the deepest target to the root but
313
553
  // we also need to efficiently keep track of if a view has a parent which is listening to the leave events,
314
554
  // so we first iterate from the root to the target, collecting the views which need events fired for, of which
315
555
  // we reverse iterate (now from target to root), actually emitting the events.
316
556
  std::vector<IComponentView *> viewsToEmitLeaveEventsTo; // NSMutableOrderedSet<UIView *> *viewsToEmitLeaveEventsTo =
317
557
  // [NSMutableOrderedSet orderedSet];
318
558
 
559
+ IComponentView *viewToEmitNativeExitedEvent = nullptr;
560
+
319
561
  bool hasParentLeaveListener = false;
320
562
  for (auto itComponentView = currentlyHoveredViews.rbegin(); itComponentView != currentlyHoveredViews.rend();
321
563
  itComponentView++) { // for (RCTReactTaggedView *taggedView in [currentlyHoveredViews
@@ -326,11 +568,16 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
326
568
  bool shouldEmitEvent = componentView != nullptr &&
327
569
  (hasParentLeaveListener ||
328
570
  IsViewListeningToEvent(componentView, facebook::react::ViewEvents::Offset::PointerLeave) ||
329
- IsViewListeningToEvent(componentView, facebook::react::ViewEvents::Offset::MouseLeave));
571
+ IsViewListeningToEvent(componentView, facebook::react::WindowsViewEvents::Offset::MouseLeave));
330
572
 
331
- if (shouldEmitEvent &&
573
+ if ((shouldEmitEvent || !viewToEmitNativeExitedEvent) &&
332
574
  std::find(eventPathViews.begin(), eventPathViews.end(), componentView) == eventPathViews.end()) {
333
- viewsToEmitLeaveEventsTo.push_back(componentView);
575
+ if (shouldEmitEvent) {
576
+ viewsToEmitLeaveEventsTo.push_back(componentView);
577
+ }
578
+ if (!viewToEmitNativeExitedEvent) {
579
+ viewToEmitNativeExitedEvent = componentView;
580
+ }
334
581
  }
335
582
 
336
583
  if (shouldEmitEvent && !hasParentLeaveListener) {
@@ -338,11 +585,17 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
338
585
  }
339
586
  }
340
587
 
588
+ if (viewToEmitNativeExitedEvent) {
589
+ auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
590
+ viewToEmitNativeExitedEvent->tag(), pointerPoint, keyModifiers);
591
+ static_cast<CompositionBaseComponentView *>(viewToEmitNativeExitedEvent)->onPointerExited(args);
592
+ }
593
+
341
594
  for (auto itComponentView = viewsToEmitLeaveEventsTo.rbegin(); itComponentView != viewsToEmitLeaveEventsTo.rend();
342
595
  itComponentView++) { // for (UIView *componentView in [viewsToEmitLeaveEventsTo reverseObjectEnumerator]) {
343
596
  auto componentView = *itComponentView;
344
597
 
345
- facebook::react::SharedTouchEventEmitter eventEmitter = componentView->touchEventEmitter();
598
+ const auto eventEmitter = componentView->eventEmitter();
346
599
  if (eventEmitter) {
347
600
  eventEmitter->onPointerLeave(event);
348
601
  if (IsMousePointerEvent(event)) {
@@ -416,31 +669,40 @@ facebook::react::PointerEvent CreatePointerEventFromIncompleteHoverData(
416
669
  return pointerEvent;
417
670
  }
418
671
 
419
- void CompositionEventHandler::MouseMove(uint32_t msg, uint64_t wParam, int64_t lParam) {
420
- int pointerId = MOUSE_POINTER_ID; // TODO pointerId
672
+ void CompositionEventHandler::onPointerMoved(
673
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
674
+ winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
675
+ if (SurfaceId() == -1)
676
+ return;
677
+
678
+ int pointerId = pointerPoint.PointerId();
421
679
 
422
- auto x = GET_X_LPARAM(lParam);
423
- auto y = GET_Y_LPARAM(lParam);
680
+ auto position = pointerPoint.Position();
424
681
 
425
682
  if (std::shared_ptr<FabricUIManager> fabricuiManager =
426
683
  ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
427
684
  facebook::react::Point ptLocal;
428
685
 
429
- facebook::react::Point ptScaled = {
430
- static_cast<float>(x / m_compRootView.ScaleFactor()), static_cast<float>(y / m_compRootView.ScaleFactor())};
686
+ facebook::react::Point ptScaled = {position.X, position.Y};
431
687
  auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
432
688
 
433
689
  if (tag == -1)
434
690
  return;
435
691
 
692
+ auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
693
+ tag, pointerPoint, keyModifiers);
694
+ IComponentView *targetComponentView =
695
+ fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get();
696
+
697
+ static_cast<CompositionBaseComponentView *>(targetComponentView)->onPointerMoved(args);
698
+
436
699
  auto targetView = FindClosestFabricManagedTouchableView(
437
700
  fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get());
438
701
 
439
702
  facebook::react::PointerEvent pointerEvent = CreatePointerEventFromIncompleteHoverData(ptScaled, ptLocal);
440
703
 
441
704
  auto handler = [targetView, &pointerEvent](std::vector<IComponentView *> &eventPathViews) {
442
- facebook::react::SharedTouchEventEmitter eventEmitter =
443
- targetView ? targetView->touchEventEmitterAtPoint(pointerEvent.offsetPoint) : nullptr;
705
+ const auto eventEmitter = targetView ? targetView->eventEmitterAtPoint(pointerEvent.offsetPoint) : nullptr;
444
706
  bool hasMoveEventListeners =
445
707
  IsAnyViewInPathListeningToEvent(eventPathViews, facebook::react::ViewEvents::Offset::PointerMove) ||
446
708
  IsAnyViewInPathListeningToEvent(eventPathViews, facebook::react::ViewEvents::Offset::PointerMoveCapture);
@@ -449,91 +711,14 @@ void CompositionEventHandler::MouseMove(uint32_t msg, uint64_t wParam, int64_t l
449
711
  }
450
712
  };
451
713
 
452
- HandleIncomingPointerEvent(pointerEvent, targetView, handler);
714
+ HandleIncomingPointerEvent(pointerEvent, targetView, pointerPoint, keyModifiers, handler);
453
715
  }
454
716
  }
455
717
 
456
- void CompositionEventHandler::PointerPressed(uint32_t msg, uint64_t wParam, int64_t lParam) {
457
- POINTER_INFO pi;
458
- PointerId pointerId = GET_POINTERID_WPARAM(wParam);
459
- GetPointerInfo(pointerId, &pi);
460
- POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
461
- ::ScreenToClient(pi.hwndTarget, &pt);
462
-
463
- auto staleTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
464
- return pair.second.touch.identifier == pointerId;
465
- });
466
-
467
- if (staleTouch != m_activeTouches.end()) {
468
- // A pointer with this ID already exists - Should we fire a button cancel or something?
469
- assert(false);
470
- return;
471
- }
472
-
473
- const auto eventType = TouchEventType::Start;
474
-
475
- if (std::shared_ptr<FabricUIManager> fabricuiManager =
476
- ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
477
- facebook::react::Point ptLocal;
478
-
479
- facebook::react::Point ptScaled = {
480
- static_cast<float>(pt.x / m_compRootView.ScaleFactor()),
481
- static_cast<float>(pt.y / m_compRootView.ScaleFactor())};
482
- auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
483
-
484
- if (tag == -1)
485
- return;
486
-
487
- IComponentView *targetComponentView =
488
- fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get();
489
- static_cast<CompositionBaseComponentView *>(targetComponentView)->sendMessage(msg, wParam, lParam);
490
-
491
- ActiveTouch activeTouch{0};
492
- switch (pi.pointerType) {
493
- case PT_POINTER:
494
- case PT_TOUCH:
495
- activeTouch.touchType = UITouchType::Touch;
496
- break;
497
- case PT_PEN:
498
- activeTouch.touchType = UITouchType::Pen;
499
- break;
500
- case PT_TOUCHPAD:
501
- case PT_MOUSE:
502
- activeTouch.touchType = UITouchType::Mouse;
503
- break;
504
- }
505
-
506
- auto componentView = targetComponentView;
507
- while (componentView) {
508
- if (auto eventEmitter = componentView->touchEventEmitter()) {
509
- activeTouch.eventEmitter = eventEmitter;
510
- activeTouch.touch.target = componentView->tag();
511
- // activeTouch.componentView = componentView;
512
- break;
513
- }
514
- componentView = componentView->parent();
515
- }
516
-
517
- UpdateActiveTouch(activeTouch, ptScaled, ptLocal);
518
-
519
- // activeTouch.touch.isPrimary = true;
520
- activeTouch.touch.identifier = pointerId;
521
-
522
- // If the pointer has not been marked as hovering over views before the touch started, we register
523
- // that the activeTouch should not maintain its hovered state once the pointer has been lifted.
524
- auto currentlyHoveredTags = m_currentlyHoveredViewsPerPointer.find(activeTouch.touch.identifier);
525
- if (currentlyHoveredTags == m_currentlyHoveredViewsPerPointer.end() || currentlyHoveredTags->second.empty()) {
526
- activeTouch.shouldLeaveWhenReleased = true;
527
- }
528
-
529
- m_activeTouches.emplace(pointerId, activeTouch);
530
-
531
- DispatchTouchEvent(eventType, pointerId);
532
- }
533
- }
534
-
535
- void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t lParam) {
536
- PointerId pointerId = MOUSE_POINTER_ID;
718
+ void CompositionEventHandler::onPointerPressed(
719
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
720
+ winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
721
+ PointerId pointerId = pointerPoint.PointerId();
537
722
 
538
723
  auto staleTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
539
724
  return pair.second.touch.identifier == pointerId;
@@ -545,16 +730,14 @@ void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t
545
730
  return;
546
731
  }
547
732
 
548
- auto x = GET_X_LPARAM(lParam);
549
- auto y = GET_Y_LPARAM(lParam);
733
+ auto position = pointerPoint.Position();
550
734
  const auto eventType = TouchEventType::Start;
551
735
 
552
736
  if (std::shared_ptr<FabricUIManager> fabricuiManager =
553
737
  ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
554
738
  facebook::react::Point ptLocal;
555
739
 
556
- facebook::react::Point ptScaled = {
557
- static_cast<float>(x / m_compRootView.ScaleFactor()), static_cast<float>(y / m_compRootView.ScaleFactor())};
740
+ facebook::react::Point ptScaled = {position.X, position.Y};
558
741
  auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
559
742
 
560
743
  if (tag == -1)
@@ -562,14 +745,16 @@ void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t
562
745
 
563
746
  IComponentView *targetComponentView =
564
747
  fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view.get();
565
- static_cast<CompositionBaseComponentView *>(targetComponentView)->sendMessage(msg, wParam, lParam);
748
+ auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
749
+ tag, pointerPoint, keyModifiers);
750
+ static_cast<CompositionBaseComponentView *>(targetComponentView)->onPointerPressed(args);
566
751
 
567
752
  ActiveTouch activeTouch{0};
568
753
  activeTouch.touchType = UITouchType::Mouse;
569
754
 
570
755
  auto componentView = targetComponentView;
571
756
  while (componentView) {
572
- if (auto eventEmitter = componentView->touchEventEmitterAtPoint(ptLocal)) {
757
+ if (auto eventEmitter = componentView->eventEmitterAtPoint(ptLocal)) {
573
758
  activeTouch.eventEmitter = eventEmitter;
574
759
  activeTouch.touch.target = componentView->tag();
575
760
  // activeTouch.componentView = componentView;
@@ -592,16 +777,14 @@ void CompositionEventHandler::ButtonDown(uint32_t msg, uint64_t wParam, int64_t
592
777
 
593
778
  m_activeTouches.emplace(pointerId, activeTouch);
594
779
 
595
- DispatchTouchEvent(eventType, pointerId);
780
+ DispatchTouchEvent(eventType, pointerId, pointerPoint, keyModifiers);
596
781
  }
597
782
  }
598
783
 
599
- void CompositionEventHandler::PointerUp(uint32_t msg, uint64_t wParam, int64_t lParam) {
600
- POINTER_INFO pi;
601
- PointerId pointerId = GET_POINTERID_WPARAM(wParam);
602
- GetPointerInfo(pointerId, &pi);
603
- POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
604
- ::ScreenToClient(pi.hwndTarget, &pt);
784
+ void CompositionEventHandler::onPointerReleased(
785
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
786
+ winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept {
787
+ int pointerId = pointerPoint.PointerId();
605
788
 
606
789
  auto activeTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
607
790
  return pair.second.touch.identifier == pointerId;
@@ -611,59 +794,26 @@ void CompositionEventHandler::PointerUp(uint32_t msg, uint64_t wParam, int64_t l
611
794
  return;
612
795
  }
613
796
 
614
- const auto eventType = TouchEventType::Start;
797
+ auto position = pointerPoint.Position();
615
798
 
616
799
  if (std::shared_ptr<FabricUIManager> fabricuiManager =
617
800
  ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
618
801
  facebook::react::Point ptLocal;
619
802
 
620
- facebook::react::Point ptScaled = {
621
- static_cast<float>(pt.x / m_compRootView.ScaleFactor()),
622
- static_cast<float>(pt.y / m_compRootView.ScaleFactor())};
803
+ facebook::react::Point ptScaled = {position.X, position.Y};
623
804
  auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
624
805
 
625
806
  if (tag == -1)
626
807
  return;
627
808
 
628
809
  auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
629
- std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->sendMessage(msg, wParam, lParam);
630
-
631
- UpdateActiveTouch(activeTouch->second, ptScaled, ptLocal);
632
- DispatchTouchEvent(TouchEventType::End, pointerId);
633
- m_activeTouches.erase(pointerId);
634
- }
635
- }
810
+ auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerRoutedEventArgs>(
811
+ tag, pointerPoint, keyModifiers);
636
812
 
637
- void CompositionEventHandler::ButtonUp(uint32_t msg, uint64_t wParam, int64_t lParam) {
638
- int pointerId = MOUSE_POINTER_ID;
639
-
640
- auto activeTouch = std::find_if(m_activeTouches.begin(), m_activeTouches.end(), [pointerId](const auto &pair) {
641
- return pair.second.touch.identifier == pointerId;
642
- });
643
-
644
- if (activeTouch == m_activeTouches.end()) {
645
- return;
646
- }
647
-
648
- auto x = GET_X_LPARAM(lParam);
649
- auto y = GET_Y_LPARAM(lParam);
650
-
651
- if (std::shared_ptr<FabricUIManager> fabricuiManager =
652
- ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties())) {
653
- facebook::react::Point ptLocal;
654
-
655
- facebook::react::Point ptScaled = {
656
- static_cast<float>(x / m_compRootView.ScaleFactor()), static_cast<float>(y / m_compRootView.ScaleFactor())};
657
- auto tag = RootComponentView().hitTest(ptScaled, ptLocal);
658
-
659
- if (tag == -1)
660
- return;
661
-
662
- auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
663
- std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->sendMessage(msg, wParam, lParam);
813
+ std::static_pointer_cast<CompositionBaseComponentView>(targetComponentView)->onPointerReleased(args);
664
814
 
665
815
  UpdateActiveTouch(activeTouch->second, ptScaled, ptLocal);
666
- DispatchTouchEvent(TouchEventType::End, pointerId);
816
+ DispatchTouchEvent(TouchEventType::End, pointerId, pointerPoint, keyModifiers);
667
817
  m_activeTouches.erase(pointerId);
668
818
  }
669
819
  }
@@ -744,7 +894,11 @@ facebook::react::PointerEvent CompositionEventHandler::CreatePointerEventFromAct
744
894
  }
745
895
 
746
896
  // If we have events that include multiple pointer updates, we should change arg from pointerId to vector<pointerId>
747
- void CompositionEventHandler::DispatchTouchEvent(TouchEventType eventType, PointerId pointerId) {
897
+ void CompositionEventHandler::DispatchTouchEvent(
898
+ TouchEventType eventType,
899
+ PointerId pointerId,
900
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
901
+ winrt::Windows::System::VirtualKeyModifiers keyModifiers) {
748
902
  auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(m_context.Properties());
749
903
 
750
904
  if (!fabricuiManager)
@@ -805,7 +959,7 @@ void CompositionEventHandler::DispatchTouchEvent(TouchEventType eventType, Point
805
959
  }
806
960
  };
807
961
 
808
- HandleIncomingPointerEvent(pointerEvent, targetView, handler);
962
+ HandleIncomingPointerEvent(pointerEvent, targetView, pointerPoint, keyModifiers, handler);
809
963
  }
810
964
 
811
965
  for (const auto &pair : m_activeTouches) {