react-native-windows 0.68.1 → 0.69.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 (392) hide show
  1. package/.flowconfig +1 -3
  2. package/Chakra/ChakraHelpers.cpp +0 -1
  3. package/Directory.Build.props +3 -0
  4. package/Directory.Build.targets +1 -1
  5. package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1411 -0
  6. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +336 -0
  7. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +182 -0
  8. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
  9. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  10. package/Libraries/Alert/Alert.windows.js +2 -2
  11. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  12. package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
  13. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  14. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  15. package/Libraries/Animated/animations/TimingAnimation.js +6 -11
  16. package/Libraries/Animated/createAnimatedComponent.js +2 -2
  17. package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
  19. package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
  20. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  21. package/Libraries/AppState/AppState.js +1 -1
  22. package/Libraries/Blob/URL.js +7 -1
  23. package/Libraries/Components/Button.js +3 -0
  24. package/Libraries/Components/Button.windows.js +4 -0
  25. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
  26. package/Libraries/Components/Pressable/Pressable.js +3 -3
  27. package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
  28. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
  29. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
  30. package/Libraries/Components/ScrollView/ScrollView.js +1 -1
  31. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
  32. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
  33. package/Libraries/Components/Slider/Slider.js +0 -2
  34. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
  35. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  36. package/Libraries/Components/Switch/Switch.js +11 -1
  37. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
  38. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
  39. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
  40. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
  41. package/Libraries/Components/TextInput/TextInput.js +1 -8
  42. package/Libraries/Components/TextInput/TextInput.windows.js +4 -9
  43. package/Libraries/Components/TextInput/TextInputState.js +10 -2
  44. package/Libraries/Components/TextInput/TextInputState.windows.js +10 -3
  45. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
  46. package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
  47. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
  48. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +6 -5
  49. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
  50. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
  51. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  52. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
  53. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -0
  54. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  55. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  56. package/Libraries/Components/View/View.windows.js +33 -1
  57. package/Libraries/Components/View/ViewNativeComponent.js +68 -8
  58. package/Libraries/Components/View/ViewPropTypes.js +36 -4
  59. package/Libraries/Components/View/ViewPropTypes.windows.js +36 -4
  60. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  61. package/Libraries/Core/ExceptionsManager.js +1 -1
  62. package/Libraries/Core/RawEventEmitter.js +38 -0
  63. package/Libraries/Core/ReactNativeVersion.js +2 -2
  64. package/Libraries/Core/polyfillPromise.js +32 -0
  65. package/Libraries/Core/setUpReactDevTools.js +3 -2
  66. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  67. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
  68. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
  69. package/Libraries/Events/CustomEvent.js +32 -0
  70. package/Libraries/Events/EventPolyfill.js +239 -0
  71. package/Libraries/Image/Image.android.js +0 -6
  72. package/Libraries/Image/Image.ios.js +0 -6
  73. package/Libraries/Image/Image.windows.js +2 -8
  74. package/Libraries/Image/ImageViewNativeComponent.js +18 -3
  75. package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
  76. package/Libraries/Inspector/Inspector.js +2 -4
  77. package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
  78. package/Libraries/Interaction/InteractionManager.js +1 -12
  79. package/Libraries/Interaction/TaskQueue.js +5 -4
  80. package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
  81. package/Libraries/Linking/Linking.js +1 -1
  82. package/Libraries/Lists/FlatList.js +27 -6
  83. package/Libraries/Lists/VirtualizedList.js +71 -55
  84. package/Libraries/Lists/VirtualizedListContext.js +7 -3
  85. package/Libraries/Lists/VirtualizedSectionList.js +2 -2
  86. package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
  87. package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
  88. package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
  89. package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
  90. package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +91 -42
  91. package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +13 -13
  92. package/Libraries/LogBox/Data/LogBoxData.js +2 -2
  93. package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
  94. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  95. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  96. package/Libraries/LogBox/LogBox.js +2 -21
  97. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
  98. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
  99. package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
  101. package/Libraries/NativeComponent/BaseViewConfig.windows.js +334 -0
  102. package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
  103. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
  104. package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
  105. package/Libraries/NativeComponent/ViewConfig.js +4 -4
  106. package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
  107. package/Libraries/Network/FormData.js +7 -1
  108. package/Libraries/Pressability/Pressability.js +115 -46
  109. package/Libraries/Pressability/Pressability.windows.js +190 -74
  110. package/Libraries/Pressability/PressabilityDebug.js +5 -9
  111. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  112. package/Libraries/ReactNative/AppContainer.js +1 -1
  113. package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
  114. package/Libraries/ReactNative/PaperUIManager.windows.js +5 -5
  115. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
  116. package/Libraries/ReactNative/UIManager.js +2 -3
  117. package/Libraries/ReactNative/renderApplication.js +4 -0
  118. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
  119. package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
  120. package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
  121. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
  123. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
  124. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
  125. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
  126. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
  127. package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
  128. package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
  129. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  130. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  131. package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
  132. package/Libraries/StyleSheet/processTransform.windows.js +272 -0
  133. package/Libraries/Text/Text.js +13 -7
  134. package/Libraries/Text/Text.windows.js +16 -7
  135. package/Libraries/Text/TextNativeComponent.js +2 -0
  136. package/Libraries/Text/TextProps.js +10 -0
  137. package/Libraries/Types/CoreEventTypes.js +13 -1
  138. package/Libraries/Types/CoreEventTypes.windows.js +26 -1
  139. package/Libraries/Utilities/Appearance.js +0 -8
  140. package/Libraries/Utilities/HMRClient.js +1 -1
  141. package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
  142. package/Libraries/Utilities/codegenNativeComponent.js +17 -6
  143. package/Libraries/Utilities/stringifySafe.js +4 -1
  144. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
  145. package/Libraries/WebSocket/WebSocket.js +1 -1
  146. package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
  147. package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
  148. package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
  149. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +1 -4
  150. package/Microsoft.ReactNative/DynamicReader.cpp +3 -3
  151. package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -0
  152. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.cpp +36 -2
  153. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.h +1 -0
  154. package/Microsoft.ReactNative/Fabric/DWriteHelpers.cpp +19 -0
  155. package/Microsoft.ReactNative/Fabric/DWriteHelpers.h +13 -0
  156. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +65 -19
  157. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  158. package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +36 -10
  159. package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +2 -0
  160. package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +107 -0
  161. package/Microsoft.ReactNative/Fabric/SliderComponentView.h +51 -0
  162. package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +109 -0
  163. package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +52 -0
  164. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentDescriptor.h +197 -0
  165. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +308 -0
  166. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +52 -0
  167. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.cpp +31 -0
  168. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.h +33 -0
  169. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.cpp +81 -0
  170. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.h +132 -0
  171. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.cpp +193 -0
  172. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.h +85 -0
  173. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.cpp +76 -0
  174. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.h +99 -0
  175. package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +35 -3
  176. package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -0
  177. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +5 -0
  178. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +5 -0
  179. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.cpp +46 -0
  180. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.h +30 -0
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +2 -0
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +1 -9
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +3 -1
  184. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +119 -57
  185. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -1
  186. package/Microsoft.ReactNative/IViewManager.idl +3 -3
  187. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -107
  188. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -2
  189. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -0
  190. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -0
  191. package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
  192. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -5
  193. package/Microsoft.ReactNative/Modules/TimingModule.cpp +2 -2
  194. package/Microsoft.ReactNative/Modules/TimingModule.h +2 -2
  195. package/Microsoft.ReactNative/ReactHost/{ReactContext.cpp → MsoReactContext.cpp} +1 -1
  196. package/Microsoft.ReactNative/ReactHost/{ReactContext.h → MsoReactContext.h} +0 -0
  197. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +15 -2
  198. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  199. package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
  200. package/Microsoft.ReactNative/ReactInstanceSettings.idl +12 -2
  201. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +1 -1
  202. package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
  203. package/Microsoft.ReactNative/RedBox.cpp +3 -2
  204. package/Microsoft.ReactNative/TurboModulesProvider.cpp +3 -2
  205. package/Microsoft.ReactNative/TurboModulesProvider.h +4 -1
  206. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +41 -0
  207. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +3 -2
  208. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +32 -0
  209. package/Microsoft.ReactNative/Views/ControlViewManager.h +11 -0
  210. package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -2
  211. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +13 -2
  212. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +149 -22
  213. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  214. package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +5 -11
  215. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +2 -1
  216. package/Microsoft.ReactNative/Views/SliderViewManager.cpp +12 -4
  217. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  218. package/Microsoft.ReactNative/Views/TextViewManager.cpp +2 -2
  219. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +163 -37
  220. package/Microsoft.ReactNative/Views/TouchEventHandler.h +11 -4
  221. package/Microsoft.ReactNative/Views/ViewPanel.cpp +3 -23
  222. package/Microsoft.ReactNative/Views/ViewPanel.h +2 -3
  223. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +21 -0
  224. package/Microsoft.ReactNative/XamlUIService.cpp +1 -1
  225. package/Microsoft.ReactNative/XamlView.h +8 -3
  226. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +3 -5
  227. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
  228. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +11 -2
  229. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -0
  230. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +19 -14
  231. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +4 -0
  232. package/Microsoft.ReactNative.Cxx/JSValueReader.h +2 -2
  233. package/Microsoft.ReactNative.Cxx/JSValueWriter.h +5 -5
  234. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -1
  235. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +2 -3
  236. package/Microsoft.ReactNative.Cxx/NativeModules.h +3 -3
  237. package/Microsoft.ReactNative.Cxx/ReactContext.h +3 -3
  238. package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +3 -3
  239. package/Microsoft.ReactNative.Cxx/XamlUtils.h +44 -5
  240. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -6
  241. package/Mso/activeObject/activeObject.h +2 -2
  242. package/Mso/compilerAdapters/cppMacros.h +3 -5
  243. package/Mso/errorCode/errorProvider.h +2 -2
  244. package/Mso/errorCode/maybe.h +4 -4
  245. package/Mso/functional/functor.h +6 -6
  246. package/Mso/functional/functorRef.h +2 -2
  247. package/Mso/future/details/executor.h +2 -2
  248. package/Mso/future/details/futureFuncInl.h +4 -4
  249. package/Mso/future/details/ifuture.h +3 -3
  250. package/Mso/future/details/maybeInvoker.h +6 -6
  251. package/Mso/future/details/promiseGroupInl.h +4 -4
  252. package/Mso/future/details/promiseInl.h +4 -4
  253. package/Mso/future/details/resultTraits.h +4 -4
  254. package/Mso/future/details/whenAllInl.h +1 -1
  255. package/Mso/future/future.h +13 -13
  256. package/Mso/guid/msoGuidDetails.h +1 -1
  257. package/Mso/memoryApi/memoryApi.h +13 -7
  258. package/Mso/motifCpp/gTestAdapter.h +1 -1
  259. package/Mso/motifCpp/testInfo.h +7 -9
  260. package/Mso/object/make.h +8 -8
  261. package/Mso/object/objectRefCount.h +3 -5
  262. package/Mso/object/objectWithWeakRef.h +10 -14
  263. package/Mso/object/queryCast.h +4 -4
  264. package/Mso/object/refCountedObject.h +4 -4
  265. package/Mso/object/unknownObject.h +7 -7
  266. package/Mso/platformAdapters/windowsFirst.h +1 -1
  267. package/Mso/smartPtr/cntPtr.h +8 -8
  268. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +96 -4
  269. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -2
  270. package/Mso/src/future/futureImpl.h +1 -1
  271. package/Mso/src/memoryApi/memoryApi.cpp +4 -4
  272. package/PropertySheets/CppAppConsumeCSharpModule.props +3 -0
  273. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.props +26 -0
  274. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.Common.props +12 -0
  275. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  276. package/PropertySheets/JSEngine.props +1 -1
  277. package/PropertySheets/React.Cpp.props +13 -0
  278. package/PropertySheets/WinUI.props +3 -6
  279. package/ReactCommon/ReactCommon.vcxproj +2 -4
  280. package/ReactCommon/ReactCommon.vcxproj.filters +4 -1
  281. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/JSCRuntime.cpp +1480 -0
  282. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/decorator.h +753 -0
  283. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/jsi.h +1331 -0
  284. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1431 -0
  285. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +103 -0
  286. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +87 -0
  287. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +61 -0
  288. package/ReactCommon/Yoga.cpp +1 -1
  289. package/Scripts/{Microsoft.ReactNative.ProjectReunion.nuspec → Microsoft.ReactNative.WindowsAppSDK.nuspec} +7 -9
  290. package/Scripts/OfficeReact.Win32.nuspec +1 -3
  291. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -1
  292. package/Scripts/copyRNLibraries.js +8 -8
  293. package/Scripts/just.js +1 -1
  294. package/Scripts/rnw-dependencies.ps1 +41 -10
  295. package/Scripts/run-desktop-integration-tests.js +6 -6
  296. package/Shared/AbiSafe.h +3 -3
  297. package/Shared/BaseScriptStoreImpl.cpp +1 -1
  298. package/Shared/CppRuntimeOptions.h +50 -0
  299. package/Shared/CreateModules.h +4 -0
  300. package/Shared/DevSupportManager.cpp +34 -33
  301. package/Shared/DevSupportManager.h +1 -2
  302. package/Shared/HermesRuntimeHolder.cpp +23 -14
  303. package/Shared/HermesRuntimeHolder.h +8 -2
  304. package/Shared/IDevSupportManager.h +1 -2
  305. package/Shared/InspectorPackagerConnection.cpp +7 -5
  306. package/Shared/InspectorPackagerConnection.h +2 -2
  307. package/Shared/JSI/ChakraApi.cpp +0 -1
  308. package/Shared/JSI/ChakraRuntime.cpp +1 -2
  309. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +1 -1
  310. package/Shared/JSI/RuntimeHolder.h +2 -0
  311. package/Shared/Modules/HttpModule.cpp +198 -0
  312. package/Shared/Modules/HttpModule.h +53 -0
  313. package/Shared/Modules/WebSocketModule.cpp +5 -1
  314. package/Shared/Modules/WebSocketModule.h +8 -5
  315. package/Shared/Networking/IHttpResource.h +53 -0
  316. package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
  317. package/Shared/Networking/OriginPolicy.h +15 -0
  318. package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
  319. package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
  320. package/Shared/Networking/WinRTHttpResource.cpp +347 -0
  321. package/Shared/Networking/WinRTHttpResource.h +67 -0
  322. package/Shared/Networking/WinRTTypes.h +30 -0
  323. package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
  324. package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
  325. package/Shared/OInstance.cpp +37 -11
  326. package/Shared/RuntimeOptions.cpp +93 -15
  327. package/Shared/RuntimeOptions.h +22 -9
  328. package/Shared/Shared.vcxitems +126 -5
  329. package/Shared/Shared.vcxitems.filters +55 -15
  330. package/Shared/Threading/BatchingQueueThread.cpp +1 -1
  331. package/Shared/Utils/WinRTConversions.cpp +22 -0
  332. package/Shared/Utils/WinRTConversions.h +15 -0
  333. package/Shared/tracing/fbsystrace.h +2 -2
  334. package/codegen/NativeActionSheetManagerSpec.g.h +6 -0
  335. package/codegen/NativeAnimatedModuleSpec.g.h +43 -37
  336. package/codegen/NativeAnimatedTurboModuleSpec.g.h +43 -37
  337. package/codegen/NativePushNotificationManagerIOSSpec.g.h +2 -0
  338. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  339. package/codegen/react/components/rnwcore/EventEmitters.cpp +133 -0
  340. package/codegen/react/components/rnwcore/EventEmitters.h +0 -18
  341. package/codegen/react/components/rnwcore/Props.cpp +0 -13
  342. package/codegen/react/components/rnwcore/Props.h +0 -16
  343. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  344. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -10
  345. package/include/Shared/cdebug.h +9 -9
  346. package/index.js +30 -25
  347. package/index.windows.js +30 -25
  348. package/jest/preprocessor.js +24 -107
  349. package/jest/preprocessor_DO_NOT_USE.js +122 -0
  350. package/metro.config.js +3 -70
  351. package/package.json +29 -28
  352. package/react-native.config.js +40 -6
  353. package/rntypes/index.d.ts +19 -7
  354. package/stubs/glog/logging.h +1 -1
  355. package/template/cpp-app/src/App.h +0 -4
  356. package/template/cs-app/src/App.xaml.cs +0 -5
  357. package/template/cs-app/src/MainPage.xaml.cs +1 -10
  358. package/template/cs-app-WinAppSDK/MyApp/App.xaml +16 -0
  359. package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +70 -0
  360. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +14 -0
  361. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +38 -0
  362. package/template/cs-app-WinAppSDK/MyApp/Package.appxmanifest +48 -0
  363. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +19 -0
  364. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +19 -0
  365. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +19 -0
  366. package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +10 -0
  367. package/template/cs-app-WinAppSDK/MyApp/app.manifest +15 -0
  368. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +23 -0
  369. package/template/cs-app-WinAppSDK/proj/MyApp.csproj +49 -0
  370. package/template/cs-app-WinAppSDK/proj/MyApp.sln +43 -0
  371. package/template/cs-app-WinAppSDK/proj/NuGet.Config +17 -0
  372. package/template/metro.devMode.config.js +2 -51
  373. package/typings-index.js +5 -1
  374. package/typings-index.js.map +1 -1
  375. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
  376. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
  377. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  378. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.windows.js +0 -45
  379. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
  380. package/Libraries/Components/View/ReactNativeViewViewConfig.windows.js +0 -390
  381. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
  382. package/Libraries/ReactNative/UIManagerInjection.js +0 -15
  383. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
  384. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
  385. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
  386. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
  387. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
  388. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
  389. package/PropertySheets/CppEnablePackageReferences.props +0 -13
  390. package/Shared/IHttpResource.h +0 -34
  391. package/Shared/cdebug.cpp +0 -6
  392. package/include/Shared/ViewManager.h +0 -34
@@ -26,7 +26,10 @@
26
26
  #include <winrt/Windows.UI.Input.h>
27
27
 
28
28
  #ifdef USE_WINUI3
29
- #include <winrt/Microsoft.UI.Input.Experimental.h>
29
+ #include <winrt/Microsoft.UI.Input.h>
30
+ namespace input = winrt::Microsoft::UI::Input;
31
+ #else
32
+ namespace input = winrt::Windows::UI::Input;
30
33
  #endif
31
34
 
32
35
  namespace Microsoft::ReactNative {
@@ -46,7 +49,7 @@ TouchEventHandler::~TouchEventHandler() {
46
49
  }
47
50
 
48
51
  void TouchEventHandler::AddTouchHandlers(XamlView xamlView, XamlView rootView, bool handledEventsToo) {
49
- auto uiElement(xamlView.as<xaml::UIElement>());
52
+ auto uiElement(xamlView.try_as<xaml::UIElement>());
50
53
  if (uiElement == nullptr) {
51
54
  assert(false);
52
55
  return;
@@ -118,7 +121,7 @@ void TouchEventHandler::OnPointerPressed(
118
121
 
119
122
  // If this was caused by the user pressing the "back" hardware button, fire that event instead
120
123
  if (args.GetCurrentPoint(sourceElement).Properties().PointerUpdateKind() ==
121
- winrt::Windows::UI::Input::PointerUpdateKind::XButton1Pressed) {
124
+ input::PointerUpdateKind::XButton1Pressed) {
122
125
  args.Handled(DispatchBackEvent());
123
126
  return;
124
127
  }
@@ -127,16 +130,9 @@ void TouchEventHandler::OnPointerPressed(
127
130
  assert(!tagsForBranch.empty());
128
131
  const auto tag = tagsForBranch.front();
129
132
 
130
- // Pointer pressing updates the enter/leave state
131
- UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
132
-
133
133
  size_t pointerIndex = AddReactPointer(args, tag, sourceElement);
134
134
 
135
- // For now, when using the mouse we only want to send click events for the left button.
136
- // Finger and pen taps will also set isLeftButton.
137
- if (m_pointers[pointerIndex].isLeftButton) {
138
- DispatchTouchEvent(eventType, pointerIndex);
139
- }
135
+ DispatchTouchEvent(eventType, pointerIndex);
140
136
  }
141
137
  }
142
138
 
@@ -189,10 +185,11 @@ void TouchEventHandler::OnPointerMoved(
189
185
  if (optPointerIndex) {
190
186
  UpdateReactPointer(m_pointers[*optPointerIndex], args, sourceElement);
191
187
  DispatchTouchEvent(eventType, *optPointerIndex);
192
- } else {
193
- // Move with no buttons pressed
194
- UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
195
188
  }
189
+
190
+ // If we re-introduce onMouseMove to react-native-windows, we should add an
191
+ // argument to ensure we do not emit these events while the pointer is down.
192
+ UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
196
193
  }
197
194
 
198
195
  void TouchEventHandler::OnPointerConcluded(TouchEventType eventType, const winrt::PointerRoutedEventArgs &args) {
@@ -213,23 +210,18 @@ void TouchEventHandler::OnPointerConcluded(TouchEventType eventType, const winrt
213
210
  if (PropagatePointerEventAndFindReactSourceBranch(reactArgs, &tagsForBranch, &sourceElement))
214
211
  UpdateReactPointer(m_pointers[*optPointerIndex], args, sourceElement);
215
212
 
216
- if (m_pointers[*optPointerIndex].isLeftButton) {
217
- // In case a PointerCaptureLost event should be treated as an "end" event,
218
- // check the ReactPointerEventArgs Kind property before emitting the event.
219
- const auto adjustedEventType = reactArgs.Kind() == winrt::Microsoft::ReactNative::PointerEventKind::End
220
- ? TouchEventType::End
221
- : TouchEventType::Cancel;
222
- DispatchTouchEvent(adjustedEventType, *optPointerIndex);
223
- }
213
+ // In case a PointerCaptureLost event should be treated as an "end" event,
214
+ // check the ReactPointerEventArgs Kind property before emitting the event.
215
+ const auto adjustedEventType = reactArgs.Kind() == winrt::Microsoft::ReactNative::PointerEventKind::End
216
+ ? TouchEventType::End
217
+ : TouchEventType::Cancel;
218
+ DispatchTouchEvent(adjustedEventType, *optPointerIndex);
224
219
 
225
220
  m_pointers.erase(cbegin(m_pointers) + *optPointerIndex);
226
221
  if (m_pointers.size() == 0)
227
222
  m_touchId = 0;
228
223
 
229
224
  m_xamlView.as<xaml::FrameworkElement>().ReleasePointerCapture(args.Pointer());
230
-
231
- // Updates the enter/leave state when pointer was being tracked
232
- UpdatePointersInViews(args, sourceElement, std::move(tagsForBranch));
233
225
  }
234
226
 
235
227
  size_t TouchEventHandler::AddReactPointer(
@@ -334,7 +326,7 @@ void TouchEventHandler::UpdatePointersInViews(
334
326
  } else {
335
327
  // newViews is empty when UpdatePointersInViews is called from outside
336
328
  // the root view, in this case use -1 for the JS event pointer target
337
- const auto tag = !newViews.empty() ? newViews.front() : -1;
329
+ const auto tag = !newViews.empty() ? newViews.front() : InvalidTag;
338
330
  pointer = CreateReactPointer(args, tag, sourceElement);
339
331
  }
340
332
 
@@ -373,7 +365,21 @@ void TouchEventHandler::UpdatePointersInViews(
373
365
  }
374
366
  }
375
367
 
368
+ // defines button payload, follows https://developer.mozilla.org/docs/Web/API/MouseEvent/button
369
+ enum class MouseEventButtonKind { None = -1, Main = 0, Auxiliary = 1, Secondary = 2, Eraser = 5 };
370
+
376
371
  winrt::Microsoft::ReactNative::JSValue TouchEventHandler::GetPointerJson(const ReactPointer &pointer, int64_t target) {
372
+ MouseEventButtonKind button = MouseEventButtonKind::None;
373
+ if (pointer.isLeftButton) {
374
+ button = MouseEventButtonKind::Main;
375
+ } else if (pointer.isMiddleButton) {
376
+ button = MouseEventButtonKind::Auxiliary;
377
+ } else if (pointer.isRightButton || pointer.isBarrelButton) {
378
+ button = MouseEventButtonKind::Secondary;
379
+ } else if (pointer.isEraser) {
380
+ button = MouseEventButtonKind::Eraser;
381
+ }
382
+
377
383
  return winrt::Microsoft::ReactNative::JSValueObject{
378
384
  {"target", target},
379
385
  {"identifier", pointer.identifier},
@@ -395,6 +401,7 @@ winrt::Microsoft::ReactNative::JSValue TouchEventHandler::GetPointerJson(const R
395
401
  {"isEraser", pointer.isEraser},
396
402
  {"shiftKey", pointer.shiftKey},
397
403
  {"ctrlKey", pointer.ctrlKey},
404
+ {"button", static_cast<int>(button)},
398
405
  {"altKey", pointer.altKey}};
399
406
  }
400
407
 
@@ -414,9 +421,9 @@ facebook::react::SharedEventEmitter EventEmitterForElement(
414
421
  auto element = view->Element();
415
422
  while (auto parent = element.Parent()) {
416
423
  if (element = parent.try_as<xaml::FrameworkElement>()) {
417
- auto boxedTag = element.Tag();
418
- if (boxedTag) {
419
- if (tag = winrt::unbox_value<facebook::react::Tag>(element.Tag()))
424
+ auto elementTag = GetTag(element);
425
+ if (elementTag != InvalidTag) {
426
+ if ((tag = static_cast<facebook::react::Tag>(elementTag)) != InvalidTag)
420
427
  return EventEmitterForElement(uimanager, tag);
421
428
  }
422
429
  }
@@ -438,6 +445,109 @@ facebook::react::Touch TouchEventHandler::TouchForPointer(const ReactPointer &po
438
445
  t.timestamp = static_cast<facebook::react::Float>(pointer.timestamp);
439
446
  return t;
440
447
  }
448
+
449
+ winrt::IPropertyValue TestHit(
450
+ const winrt::Collections::IVectorView<xaml::Documents::Inline> &inlines,
451
+ const winrt::Point &pointerPos,
452
+ bool &isHit) {
453
+ winrt::IPropertyValue tag(nullptr);
454
+
455
+ for (const auto &el : inlines) {
456
+ if (const auto span = el.try_as<xaml::Documents::Span>()) {
457
+ auto resTag = TestHit(span.Inlines().GetView(), pointerPos, isHit);
458
+
459
+ if (resTag)
460
+ return resTag;
461
+
462
+ if (isHit) {
463
+ tag = el.GetValue(xaml::FrameworkElement::TagProperty()).try_as<winrt::IPropertyValue>();
464
+ if (tag) {
465
+ return tag;
466
+ }
467
+ }
468
+ } else if (const auto run = el.try_as<xaml::Documents::Run>()) {
469
+ const auto start = el.ContentStart();
470
+ const auto end = el.ContentEnd();
471
+
472
+ auto startRect = start.GetCharacterRect(xaml::Documents::LogicalDirection::Forward);
473
+ auto endRect = end.GetCharacterRect(xaml::Documents::LogicalDirection::Forward);
474
+
475
+ // Swap rectangles in RTL scenarios.
476
+ if (startRect.X > endRect.X) {
477
+ const auto tempRect = startRect;
478
+ startRect = endRect;
479
+ endRect = tempRect;
480
+ }
481
+
482
+ // Approximate the bounding rect (for now, don't account for text wrapping).
483
+ if ((startRect.X <= pointerPos.X) && (endRect.X + endRect.Width >= pointerPos.X) &&
484
+ (startRect.Y <= pointerPos.Y) && (endRect.Y + endRect.Height >= pointerPos.Y)) {
485
+ isHit = true;
486
+ return nullptr;
487
+ }
488
+ }
489
+ }
490
+
491
+ return tag;
492
+ }
493
+
494
+ bool TagFromOriginalSource(const winrt::PointerRoutedEventArgs &args, int64_t *pTag, xaml::UIElement *pSourceElement) {
495
+ assert(pTag != nullptr);
496
+ assert(pSourceElement != nullptr);
497
+
498
+ // Find the React element that triggered the input event
499
+ xaml::UIElement sourceElement = args.OriginalSource().try_as<xaml::UIElement>();
500
+ winrt::IPropertyValue tag(nullptr);
501
+
502
+ while (sourceElement) {
503
+ auto tagValue = sourceElement.ReadLocalValue(xaml::FrameworkElement::TagProperty());
504
+ if (tagValue != xaml::DependencyProperty::UnsetValue()) {
505
+ tag = tagValue.try_as<winrt::IPropertyValue>();
506
+ // If a TextBlock was the UIElement event source, perform a more accurate hit test,
507
+ // searching for the tag of the nested Run/Span XAML elements that the user actually clicked.
508
+ // This is to support nested <Text> elements in React.
509
+ // Nested React <Text> elements get translated into nested XAML <Span> elements,
510
+ // while the content of the <Text> becomes a list of XAML <Run> elements.
511
+ // However, we should report the Text element as the target, not the contexts of the text.
512
+ if (const auto textBlock = sourceElement.try_as<xaml::Controls::TextBlock>()) {
513
+ const auto pointerPos = args.GetCurrentPoint(textBlock).RawPosition();
514
+ const auto inlines = textBlock.Inlines().GetView();
515
+
516
+ bool isHit = false;
517
+ const auto finerTag = TestHit(inlines, pointerPos, isHit);
518
+ if (finerTag) {
519
+ tag = finerTag;
520
+ }
521
+ }
522
+
523
+ break;
524
+ }
525
+
526
+ sourceElement = winrt::VisualTreeHelper::GetParent(sourceElement).try_as<xaml::UIElement>();
527
+ }
528
+
529
+ if (tag == nullptr) {
530
+ // If the root view fails to be fully created, then the Tag property will
531
+ // never be set. This can happen,
532
+ // for example, when the red box error box is shown.
533
+ return false;
534
+ }
535
+
536
+ *pTag = tag.GetInt64();
537
+ *pSourceElement = sourceElement;
538
+ return true;
539
+ }
540
+
541
+ bool TouchEventHandler::IsEndishEventType(TouchEventType eventType) noexcept {
542
+ switch (eventType) {
543
+ case TouchEventType::End:
544
+ case TouchEventType::Cancel:
545
+ case TouchEventType::CaptureLost:
546
+ return true;
547
+ default:
548
+ return false;
549
+ }
550
+ }
441
551
  #endif
442
552
 
443
553
  void TouchEventHandler::DispatchTouchEvent(TouchEventType eventType, size_t pointerIndex) {
@@ -456,8 +566,13 @@ void TouchEventHandler::DispatchTouchEvent(TouchEventType eventType, size_t poin
456
566
 
457
567
  size_t index = 0;
458
568
  for (const auto &pointer : m_pointers) {
459
- te.touches.insert(TouchForPointer(pointer));
460
- if (pointerIndex == index++)
569
+ bool isChangedPointer = pointerIndex == index++;
570
+
571
+ if (!isChangedPointer || !IsEndishEventType(eventType)) {
572
+ te.touches.insert(TouchForPointer(pointer));
573
+ }
574
+
575
+ if (isChangedPointer)
461
576
  te.changedTouches.insert(TouchForPointer(pointer));
462
577
 
463
578
  auto emitter = std::static_pointer_cast<facebook::react::TouchEventEmitter>(
@@ -530,17 +645,16 @@ bool TouchEventHandler::DispatchBackEvent() {
530
645
  return true;
531
646
  }
532
647
 
533
- const char *TouchEventHandler::GetPointerDeviceTypeName(
534
- winrt::Windows::Devices::Input::PointerDeviceType deviceType) noexcept {
648
+ const char *TouchEventHandler::GetPointerDeviceTypeName(PointerDeviceType deviceType) noexcept {
535
649
  const char *deviceTypeName = "unknown";
536
650
  switch (deviceType) {
537
- case winrt::Windows::Devices::Input::PointerDeviceType::Mouse:
651
+ case PointerDeviceType::Mouse:
538
652
  deviceTypeName = "mouse";
539
653
  break;
540
- case winrt::Windows::Devices::Input::PointerDeviceType::Pen:
654
+ case PointerDeviceType::Pen:
541
655
  deviceTypeName = "pen";
542
656
  break;
543
- case winrt::Windows::Devices::Input::PointerDeviceType::Touch:
657
+ case PointerDeviceType::Touch:
544
658
  deviceTypeName = "touch";
545
659
  break;
546
660
  default:
@@ -605,6 +719,18 @@ bool TouchEventHandler::PropagatePointerEventAndFindReactSourceBranch(
605
719
  assert(pTagsForBranch != nullptr);
606
720
  assert(pSourceElement != nullptr);
607
721
 
722
+ #ifdef USE_FABRIC
723
+ if (m_fabric) {
724
+ int64_t tag;
725
+ if (TagFromOriginalSource(args.Args(), &tag, pSourceElement)) {
726
+ std::vector<int64_t> tagsForBranch;
727
+ tagsForBranch.push_back(tag);
728
+ *pTagsForBranch = std::move(tagsForBranch);
729
+ }
730
+ return pSourceElement != nullptr;
731
+ }
732
+ #endif
733
+
608
734
  if (const auto uiManager = GetNativeUIManager(*m_context).lock()) {
609
735
  xaml::UIElement sourceElement = args.Args().OriginalSource().try_as<xaml::UIElement>();
610
736
  ShadowNodeBase *node = nullptr;
@@ -691,7 +817,7 @@ std::vector<int64_t> GetTagsForBranch(INativeUIManagerHost *host, int64_t tag, i
691
817
  std::vector<int64_t> tags;
692
818
 
693
819
  auto *shadowNode = host->FindShadowNodeForTag(tag);
694
- while (shadowNode != nullptr && tag != -1) {
820
+ while (shadowNode != nullptr && tag != InvalidTag) {
695
821
  if (tag == rootTag) {
696
822
  break;
697
823
  }
@@ -50,6 +50,12 @@ class TouchEventHandler {
50
50
  winrt::IInspectable m_exitedHandler;
51
51
  winrt::IInspectable m_movedHandler;
52
52
 
53
+ #ifdef USE_WINUI3
54
+ using PointerDeviceType = winrt::Microsoft::UI::Input::PointerDeviceType;
55
+ #else
56
+ using PointerDeviceType = winrt::Windows::Devices::Input::PointerDeviceType;
57
+ #endif
58
+
53
59
  struct ReactPointer {
54
60
  int64_t target = 0;
55
61
  int64_t identifier = 0;
@@ -57,8 +63,7 @@ class TouchEventHandler {
57
63
  uint64_t timestamp = 0;
58
64
  winrt::Point positionRoot = {0, 0};
59
65
  winrt::Point positionView = {0, 0};
60
- winrt::Windows::Devices::Input::PointerDeviceType deviceType{
61
- winrt::Windows::Devices::Input::PointerDeviceType::Mouse};
66
+ PointerDeviceType deviceType{PointerDeviceType::Mouse};
62
67
  float pressure = 0;
63
68
  bool isLeftButton = false;
64
69
  bool isRightButton = false;
@@ -80,14 +85,16 @@ class TouchEventHandler {
80
85
  xaml::UIElement sourceElement,
81
86
  std::vector<int64_t> &&newViews);
82
87
 
88
+ enum class TouchEventType { Start = 0, End, Move, Cancel, CaptureLost, PointerEntered, PointerExited, PointerMove };
83
89
  #ifdef USE_FABRIC
84
90
  facebook::react::Touch TouchForPointer(const ReactPointer &pointer) noexcept;
91
+ static bool IsEndishEventType(TouchEventType eventType) noexcept;
85
92
  #endif
86
- enum class TouchEventType { Start = 0, End, Move, Cancel, CaptureLost, PointerEntered, PointerExited, PointerMove };
87
93
  void OnPointerConcluded(TouchEventType eventType, const winrt::PointerRoutedEventArgs &args);
88
94
  void DispatchTouchEvent(TouchEventType eventType, size_t pointerIndex);
89
95
  bool DispatchBackEvent();
90
- const char *GetPointerDeviceTypeName(winrt::Windows::Devices::Input::PointerDeviceType deviceType) noexcept;
96
+ const char *GetPointerDeviceTypeName(PointerDeviceType deviceType) noexcept;
97
+
91
98
  winrt::Microsoft::ReactNative::PointerEventKind GetPointerEventKind(TouchEventType eventType) noexcept;
92
99
  const wchar_t *GetTouchEventTypeName(TouchEventType eventType) noexcept;
93
100
 
@@ -47,14 +47,6 @@ winrt::AutomationPeer ViewPanel::OnCreateAutomationPeer() {
47
47
  panel->m_propertiesChanged = true;
48
48
  }
49
49
 
50
- /*static*/ void ViewPanel::PositionPropertyChanged(
51
- xaml::DependencyObject sender,
52
- xaml::DependencyPropertyChangedEventArgs e) {
53
- auto element{sender.as<xaml::UIElement>()};
54
- if (element != nullptr)
55
- InvalidateForArrange(element);
56
- }
57
-
58
50
  /*static*/ xaml::DependencyProperty ViewPanel::ViewBackgroundProperty() {
59
51
  static xaml::DependencyProperty s_viewBackgroundProperty = xaml::DependencyProperty::Register(
60
52
  L"ViewBackground",
@@ -96,23 +88,11 @@ winrt::AutomationPeer ViewPanel::OnCreateAutomationPeer() {
96
88
  }
97
89
 
98
90
  /*static*/ xaml::DependencyProperty ViewPanel::TopProperty() {
99
- static xaml::DependencyProperty s_topProperty = xaml::DependencyProperty::RegisterAttached(
100
- L"Top",
101
- winrt::xaml_typename<double>(),
102
- viewPanelTypeName,
103
- winrt::PropertyMetadata(winrt::box_value((double)0), ViewPanel::PositionPropertyChanged));
104
-
105
- return s_topProperty;
91
+ return xaml::Controls::Canvas::TopProperty();
106
92
  }
107
93
 
108
94
  /*static*/ xaml::DependencyProperty ViewPanel::LeftProperty() {
109
- static xaml::DependencyProperty s_LeftProperty = xaml::DependencyProperty::RegisterAttached(
110
- L"Left",
111
- winrt::xaml_typename<double>(),
112
- viewPanelTypeName,
113
- winrt::PropertyMetadata(winrt::box_value((double)0), ViewPanel::PositionPropertyChanged));
114
-
115
- return s_LeftProperty;
95
+ return xaml::Controls::Canvas::LeftProperty();
116
96
  }
117
97
 
118
98
  /*static*/ xaml::DependencyProperty ViewPanel::ClipChildrenProperty() {
@@ -135,7 +115,7 @@ winrt::AutomationPeer ViewPanel::OnCreateAutomationPeer() {
135
115
  InvalidateForArrange(element);
136
116
  }
137
117
 
138
- void ViewPanel::InvalidateForArrange(xaml::UIElement element) {
118
+ void ViewPanel::InvalidateForArrange(const xaml::DependencyObject &element) {
139
119
  // If the element's position has changed, we must invalidate the parent for arrange,
140
120
  // as it's the parent's responsibility to arrange its children.
141
121
  if (auto parent = VisualTreeHelper::GetParent(element)) {
@@ -77,13 +77,13 @@ struct ViewPanel : ViewPanelT<ViewPanel> {
77
77
  return winrt::unbox_value<double>(element.GetValue(LeftProperty()));
78
78
  }
79
79
 
80
+ static void InvalidateForArrange(const xaml::DependencyObject &element);
81
+
80
82
  private:
81
83
  void Remove(xaml::UIElement element) const;
82
84
 
83
85
  void UpdateClip(winrt::Windows::Foundation::Size &finalSize);
84
86
 
85
- static void InvalidateForArrange(xaml::UIElement element);
86
-
87
87
  private:
88
88
  bool m_propertiesChanged{false};
89
89
 
@@ -93,7 +93,6 @@ struct ViewPanel : ViewPanelT<ViewPanel> {
93
93
 
94
94
  private:
95
95
  static void VisualPropertyChanged(xaml::DependencyObject sender, xaml::DependencyPropertyChangedEventArgs e);
96
- static void PositionPropertyChanged(xaml::DependencyObject sender, xaml::DependencyPropertyChangedEventArgs e);
97
96
  };
98
97
 
99
98
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "ViewControl.h"
9
9
 
10
+ #include <UI.Xaml.Automation.Peers.h>
10
11
  #include "DynamicAutomationProperties.h"
11
12
 
12
13
  #include <JSValueWriter.h>
@@ -127,6 +128,14 @@ class ViewShadowNode : public ShadowNodeBase {
127
128
  GetControl().IsTabStop(m_isFocusable);
128
129
  }
129
130
 
131
+ bool IsAccessible() const {
132
+ return m_isAccessible;
133
+ }
134
+
135
+ void IsAccessible(bool isAccessible) {
136
+ m_isAccessible = isAccessible;
137
+ }
138
+
130
139
  bool IsHitTestBrushRequired() const {
131
140
  return IsRegisteredForMouseEvents();
132
141
  }
@@ -251,6 +260,7 @@ class ViewShadowNode : public ShadowNodeBase {
251
260
  bool m_enableFocusRing = true;
252
261
  bool m_onClick = false;
253
262
  bool m_isFocusable = false;
263
+ bool m_isAccessible = false;
254
264
  int32_t m_tabIndex = std::numeric_limits<std::int32_t>::max();
255
265
 
256
266
  xaml::Controls::ContentControl::GotFocus_revoker m_contentControlGotFocusRevoker{};
@@ -420,6 +430,11 @@ bool ViewViewManager::UpdateProperty(
420
430
  pViewShadowNode->TabIndex(std::numeric_limits<std::int32_t>::max());
421
431
  }
422
432
  } else {
433
+ if (propertyName == "accessible") {
434
+ if (propertyValue.Type() == winrt::Microsoft::ReactNative::JSValueType::Boolean) {
435
+ pViewShadowNode->IsAccessible(propertyValue.AsBoolean());
436
+ }
437
+ }
423
438
  ret = Super::UpdateProperty(nodeToUpdate, propertyName, propertyValue);
424
439
  }
425
440
  }
@@ -563,6 +578,12 @@ void ViewViewManager::TryUpdateView(
563
578
 
564
579
  if (useControl)
565
580
  pViewShadowNode->GetControl().Content(visualRoot);
581
+
582
+ if (useControl && pViewShadowNode->IsAccessible() != pViewShadowNode->IsFocusable()) {
583
+ pViewShadowNode->GetControl().IsTabStop(false);
584
+ xaml::Automation::AutomationProperties::SetAccessibilityView(
585
+ pViewShadowNode->GetControl(), xaml::Automation::Peers::AccessibilityView::Raw);
586
+ }
566
587
  }
567
588
 
568
589
  void ViewViewManager::SetLayoutProps(
@@ -37,7 +37,7 @@ void XamlUIService::DispatchEvent(
37
37
  JSValueArgWriter const &eventDataArgWriter) noexcept {
38
38
  auto paramsWriter = winrt::make_self<DynamicWriter>();
39
39
  paramsWriter->WriteArrayBegin();
40
- paramsWriter->WriteInt64(unbox_value<int64_t>(view.Tag()));
40
+ paramsWriter->WriteInt64(::Microsoft::ReactNative::GetTag(view));
41
41
  paramsWriter->WriteString(eventName);
42
42
  if (eventDataArgWriter) {
43
43
  eventDataArgWriter(*paramsWriter);
@@ -8,14 +8,19 @@
8
8
  namespace Microsoft::ReactNative {
9
9
 
10
10
  using XamlView = xaml::DependencyObject;
11
+ constexpr int64_t InvalidTag = -1;
11
12
 
12
13
  inline int64_t GetTag(XamlView view) {
13
14
  auto tagValue = view.ReadLocalValue(xaml::FrameworkElement::TagProperty());
14
15
  if (tagValue != xaml::DependencyProperty::UnsetValue()) {
15
- return tagValue.as<winrt::IPropertyValue>().GetInt64();
16
- } else {
17
- return -1;
16
+ if (auto tagValueInt = tagValue.try_as<winrt::IPropertyValue>()) {
17
+ if (tagValueInt.Type() == winrt::PropertyType::Int64) {
18
+ return tagValueInt.GetInt64();
19
+ }
20
+ }
18
21
  }
22
+
23
+ return InvalidTag;
19
24
  }
20
25
 
21
26
  inline void SetTag(XamlView view, int64_t tag) {
@@ -17,13 +17,12 @@ namespace xaml = winrt::Windows::UI::Xaml;
17
17
  namespace comp = winrt::Windows::UI::Composition;
18
18
  namespace ui = winrt::Windows::UI;
19
19
  namespace winrt {
20
- namespace system = winrt::Windows::System;
21
- using ColorHelper = winrt::Windows::UI::ColorHelper;
20
+ namespace dispatching = winrt::Windows::System;
22
21
  using Colors = winrt::Windows::UI::Colors;
23
22
  } // namespace winrt
24
23
  #else
25
24
 
26
- #include <winrt/Microsoft.System.h>
25
+ #include <winrt/Microsoft.UI.Dispatching.h>
27
26
  #include <winrt/Microsoft.UI.Xaml.h>
28
27
 
29
28
  #define XAML_CPPWINRT_NAMESPACE winrt::Microsoft::UI::Xaml
@@ -31,8 +30,7 @@ namespace xaml = winrt::Microsoft::UI::Xaml;
31
30
  namespace comp = winrt::Microsoft::UI::Composition;
32
31
  namespace ui = winrt::Microsoft::UI;
33
32
  namespace winrt {
34
- namespace system = winrt::Microsoft::System;
35
- using ColorHelper = winrt::Microsoft::UI::ColorHelper;
33
+ namespace dispatching = winrt::Microsoft::UI::Dispatching;
36
34
  using Colors = winrt::Microsoft::UI::Colors;
37
35
  } // namespace winrt
38
36
 
@@ -92,7 +92,7 @@ __declspec(selectany) std::unordered_map<std::wstring, IndirectLibrary> indirect
92
92
  } // namespace details
93
93
 
94
94
  template <typename TFn, typename... TArgs>
95
- auto CallIndirect(const wchar_t *dllName, const char *fnName, TArgs &&... args) noexcept {
95
+ auto CallIndirect(const wchar_t *dllName, const char *fnName, TArgs &&...args) noexcept {
96
96
  if (details::indirectLibraries.count(dllName) == 0) {
97
97
  details::indirectLibraries.emplace(dllName, WINRT_IMPL_LoadLibraryW(dllName));
98
98
  }
@@ -306,6 +306,15 @@ PropNameID JsiAbiRuntime::createPropNameIDFromString(const String &str) try {
306
306
  throw;
307
307
  }
308
308
 
309
+ PropNameID JsiAbiRuntime::createPropNameIDFromSymbol(const Symbol &sym) {
310
+ // TODO: Support for symbols through the native API in JSC is very limited.
311
+ // While we could construct a PropNameID here, we would not be able to get a
312
+ // symbol property through the C++ API.
313
+ UNREFERENCED_PARAMETER(sym);
314
+ RethrowJsiError();
315
+ throw;
316
+ }
317
+
309
318
  std::string JsiAbiRuntime::utf8(const PropNameID &propertyId) try {
310
319
  std::string dataResult;
311
320
  m_runtime.PropertyIdToUtf8(AsJsiPropertyIdRef(propertyId), [&dataResult](array_view<uint8_t const> utf8) {
@@ -994,7 +1003,7 @@ size_t JsiAbiRuntime::ValueRefArray::Size() const noexcept {
994
1003
  //===========================================================================
995
1004
 
996
1005
  JsiAbiRuntime::PropNameIDRef::PropNameIDRef(JsiPropertyIdRef const &data) noexcept
997
- : m_propertyId{make<PropNameID>(new (std::addressof(m_pointerStore)) DataPointerValue(data.Data))} {}
1006
+ : m_propertyId{make<PropNameID>(new(std::addressof(m_pointerStore)) DataPointerValue(data.Data))} {}
998
1007
 
999
1008
  JsiAbiRuntime::PropNameIDRef::~PropNameIDRef() noexcept {}
1000
1009
 
@@ -1004,4 +1013,4 @@ JsiAbiRuntime::PropNameIDRef::operator facebook::jsi::PropNameID const &() const
1004
1013
 
1005
1014
  } // namespace winrt::Microsoft::ReactNative
1006
1015
 
1007
- #pragma warning(pop)
1016
+ #pragma warning(pop)
@@ -99,6 +99,7 @@ struct JsiAbiRuntime : facebook::jsi::Runtime {
99
99
  facebook::jsi::PropNameID createPropNameIDFromAscii(const char *str, size_t length) override;
100
100
  facebook::jsi::PropNameID createPropNameIDFromUtf8(const uint8_t *utf8, size_t length) override;
101
101
  facebook::jsi::PropNameID createPropNameIDFromString(const facebook::jsi::String &str) override;
102
+ facebook::jsi::PropNameID createPropNameIDFromSymbol(const facebook::jsi::Symbol &sym);
102
103
  std::string utf8(const facebook::jsi::PropNameID &propertyNameId) override;
103
104
  bool compare(const facebook::jsi::PropNameID &left, const facebook::jsi::PropNameID &right) override;
104
105