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
@@ -1,4 +1,3 @@
1
-
2
1
  // Copyright (c) Microsoft Corporation.
3
2
  // Licensed under the MIT License.
4
3
 
@@ -10,9 +9,11 @@
10
9
  #include <Utils/ValueUtils.h>
11
10
  #include <tom.h>
12
11
  #include <unicode.h>
12
+ #include <winrt/Windows.System.h>
13
13
  #include <winrt/Windows.UI.h>
14
14
  #include "../CompositionHelpers.h"
15
15
  #include "../RootComponentView.h"
16
+ #include "Composition/AutoDraw.h"
16
17
  #include "WindowsTextInputShadowNode.h"
17
18
  #include "WindowsTextInputState.h"
18
19
  #include "guid/msoGuid.h"
@@ -252,7 +253,7 @@ struct CompTextHost : public winrt::implements<CompTextHost, ITextHost> {
252
253
 
253
254
  //@cmember Retrieves the coordinates of a window's client area
254
255
  HRESULT TxGetClientRect(LPRECT prc) override {
255
- *prc = m_outer->getClientRect();
256
+ *prc = m_outer->m_rcClient;
256
257
  return S_OK;
257
258
  }
258
259
 
@@ -341,8 +342,8 @@ struct CompTextHost : public winrt::implements<CompTextHost, ITextHost> {
341
342
 
342
343
  //@cmember Get the background (either opaque or transparent)
343
344
  HRESULT TxGetBackStyle(TXTBACKSTYLE *pstyle) override {
345
+ // We draw the background color as part of the composition visual, not the text
344
346
  *pstyle = TXTBACK_TRANSPARENT;
345
- //*pstyle = TXTBACK_OPAQUE;
346
347
  return S_OK;
347
348
  }
348
349
 
@@ -364,9 +365,9 @@ struct CompTextHost : public winrt::implements<CompTextHost, ITextHost> {
364
365
  }
365
366
 
366
367
  //@cmember Get the character to display for password input
367
- HRESULT TxGetPasswordChar(_Out_ TCHAR *pch) override {
368
- assert(false);
369
- return {};
368
+ HRESULT TxGetPasswordChar(_Out_ wchar_t *pch) override {
369
+ *pch = L'\u2022';
370
+ return S_OK;
370
371
  }
371
372
 
372
373
  //@cmember Get the accelerator character
@@ -545,7 +546,7 @@ void WindowsTextInputComponentView::handleCommand(std::string const &commandName
545
546
  int64_t WindowsTextInputComponentView::sendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept {
546
547
  // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
547
548
  // behavior We do forward Ctrl+Tab to the textinput.
548
- if (((msg == WM_KEYDOWN || msg == WM_KEYUP) && wParam == VK_TAB) || (msg == WM_CHAR && wParam == '\t')) {
549
+ if ((msg == WM_CHAR && wParam == '\t')) {
549
550
  BYTE bKeys[256];
550
551
  if (GetKeyboardState(bKeys)) {
551
552
  bool fCtrl = false;
@@ -566,6 +567,255 @@ int64_t WindowsTextInputComponentView::sendMessage(uint32_t msg, uint64_t wParam
566
567
  return Super::sendMessage(msg, wParam, lParam);
567
568
  }
568
569
 
570
+ WPARAM PointerPointToPointerWParam(const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pp) noexcept {
571
+ WPARAM wParam = pp.PointerId();
572
+ wParam |= (POINTER_MESSAGE_FLAG_NEW << 16);
573
+ auto ppp = pp.Properties();
574
+ if (ppp.IsInRange()) {
575
+ wParam |= (POINTER_MESSAGE_FLAG_INRANGE << 16);
576
+ }
577
+ if (pp.IsInContact()) {
578
+ wParam |= (POINTER_MESSAGE_FLAG_INCONTACT << 16);
579
+ }
580
+ if (ppp.IsLeftButtonPressed()) {
581
+ wParam |= (POINTER_MESSAGE_FLAG_FIRSTBUTTON << 16);
582
+ }
583
+ if (ppp.IsRightButtonPressed()) {
584
+ wParam |= (POINTER_MESSAGE_FLAG_SECONDBUTTON << 16);
585
+ }
586
+ if (ppp.IsMiddleButtonPressed()) {
587
+ wParam |= (POINTER_MESSAGE_FLAG_THIRDBUTTON << 16);
588
+ }
589
+ if (ppp.IsXButton1Pressed()) {
590
+ wParam |= (POINTER_MESSAGE_FLAG_FOURTHBUTTON << 16);
591
+ }
592
+ if (ppp.IsXButton2Pressed()) {
593
+ wParam |= (POINTER_MESSAGE_FLAG_FIFTHBUTTON << 16);
594
+ }
595
+ if (ppp.IsPrimary()) {
596
+ wParam |= (POINTER_MESSAGE_FLAG_PRIMARY << 16);
597
+ }
598
+ if (ppp.TouchConfidence()) {
599
+ wParam |= (POINTER_MESSAGE_FLAG_CONFIDENCE << 16);
600
+ }
601
+ if (ppp.IsCanceled()) {
602
+ wParam |= (POINTER_MESSAGE_FLAG_CANCELED << 16);
603
+ }
604
+ return wParam;
605
+ }
606
+
607
+ WPARAM PointerRoutedEventArgsToMouseWParam(
608
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept {
609
+ WPARAM wParam = 0;
610
+ auto pp = args.GetCurrentPoint(-1);
611
+
612
+ auto keyModifiers = args.KeyModifiers();
613
+ if ((keyModifiers & winrt::Windows::System::VirtualKeyModifiers::Control) ==
614
+ winrt::Windows::System::VirtualKeyModifiers::Control) {
615
+ wParam |= MK_CONTROL;
616
+ }
617
+ if ((keyModifiers & winrt::Windows::System::VirtualKeyModifiers::Shift) ==
618
+ winrt::Windows::System::VirtualKeyModifiers::Shift) {
619
+ wParam |= MK_SHIFT;
620
+ }
621
+
622
+ auto ppp = pp.Properties();
623
+ if (ppp.IsLeftButtonPressed()) {
624
+ wParam |= MK_LBUTTON;
625
+ }
626
+ if (ppp.IsMiddleButtonPressed()) {
627
+ wParam |= MK_MBUTTON;
628
+ }
629
+ if (ppp.IsRightButtonPressed()) {
630
+ wParam |= MK_RBUTTON;
631
+ }
632
+ if (ppp.IsXButton1Pressed()) {
633
+ wParam |= MK_XBUTTON1;
634
+ }
635
+ if (ppp.IsXButton2Pressed()) {
636
+ wParam |= MK_XBUTTON2;
637
+ }
638
+ return wParam;
639
+ }
640
+
641
+ void WindowsTextInputComponentView::onPointerPressed(
642
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept {
643
+ UINT msg = 0;
644
+ LPARAM lParam = 0;
645
+ WPARAM wParam = 0;
646
+
647
+ auto pp = args.GetCurrentPoint(-1); // TODO use local coords?
648
+ auto position = pp.Position();
649
+ POINT ptContainer = {static_cast<LONG>(position.X), static_cast<LONG>(position.Y)};
650
+ lParam = static_cast<LPARAM>(POINTTOPOINTS(ptContainer));
651
+
652
+ if (pp.PointerDeviceType() == winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType::Mouse) {
653
+ switch (pp.Properties().PointerUpdateKind()) {
654
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::LeftButtonPressed:
655
+ msg = WM_LBUTTONDOWN;
656
+ break;
657
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::MiddleButtonPressed:
658
+ msg = WM_MBUTTONDOWN;
659
+ break;
660
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::RightButtonPressed:
661
+ msg = WM_RBUTTONDOWN;
662
+ break;
663
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::XButton1Pressed:
664
+ msg = WM_XBUTTONDOWN;
665
+ wParam |= (XBUTTON1 << 16);
666
+ break;
667
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::XButton2Pressed:
668
+ msg = WM_XBUTTONDOWN;
669
+ wParam |= (XBUTTON2 << 16);
670
+ break;
671
+ }
672
+ wParam = PointerRoutedEventArgsToMouseWParam(args);
673
+ } else {
674
+ msg = WM_POINTERDOWN;
675
+ wParam = PointerPointToPointerWParam(pp);
676
+ }
677
+
678
+ if (m_textServices && msg) {
679
+ LRESULT lresult;
680
+ DrawBlock db(*this);
681
+ auto hr = m_textServices->TxSendMessage(msg, static_cast<WPARAM>(wParam), static_cast<LPARAM>(lParam), &lresult);
682
+ args.Handled(hr != S_FALSE);
683
+ }
684
+ }
685
+
686
+ void WindowsTextInputComponentView::onPointerReleased(
687
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept {
688
+ UINT msg = 0;
689
+ LPARAM lParam = 0;
690
+ WPARAM wParam = 0;
691
+
692
+ auto pp = args.GetCurrentPoint(-1);
693
+ auto position = pp.Position();
694
+ POINT ptContainer = {static_cast<LONG>(position.X), static_cast<LONG>(position.Y)};
695
+ lParam = static_cast<LPARAM>(POINTTOPOINTS(ptContainer));
696
+
697
+ if (pp.PointerDeviceType() == winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType::Mouse) {
698
+ switch (pp.Properties().PointerUpdateKind()) {
699
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::LeftButtonReleased:
700
+ msg = WM_LBUTTONUP;
701
+ break;
702
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::MiddleButtonReleased:
703
+ msg = WM_MBUTTONUP;
704
+ break;
705
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::RightButtonReleased:
706
+ msg = WM_RBUTTONUP;
707
+ break;
708
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::XButton1Released:
709
+ msg = WM_XBUTTONUP;
710
+ wParam |= (XBUTTON1 << 16);
711
+ break;
712
+ case winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::XButton2Released:
713
+ msg = WM_XBUTTONUP;
714
+ wParam |= (XBUTTON2 << 16);
715
+ break;
716
+ }
717
+ wParam = PointerRoutedEventArgsToMouseWParam(args);
718
+ } else {
719
+ msg = WM_POINTERUP;
720
+ wParam = PointerPointToPointerWParam(pp);
721
+ }
722
+
723
+ if (m_textServices && msg) {
724
+ LRESULT lresult;
725
+ DrawBlock db(*this);
726
+ auto hr = m_textServices->TxSendMessage(msg, static_cast<WPARAM>(wParam), static_cast<LPARAM>(lParam), &lresult);
727
+ args.Handled(hr != S_FALSE);
728
+ }
729
+ }
730
+
731
+ void WindowsTextInputComponentView::onPointerMoved(
732
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept {
733
+ UINT msg = 0;
734
+ LPARAM lParam = 0;
735
+ WPARAM wParam = 0;
736
+
737
+ auto pp = args.GetCurrentPoint(-1);
738
+ auto position = pp.Position();
739
+ POINT ptContainer = {static_cast<LONG>(position.X), static_cast<LONG>(position.Y)};
740
+ lParam = static_cast<LPARAM>(POINTTOPOINTS(ptContainer));
741
+
742
+ if (pp.PointerDeviceType() == winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType::Mouse) {
743
+ msg = WM_MOUSEMOVE;
744
+ wParam = PointerRoutedEventArgsToMouseWParam(args);
745
+ } else {
746
+ msg = WM_POINTERUP;
747
+ wParam = PointerPointToPointerWParam(pp);
748
+ }
749
+
750
+ if (m_textServices) {
751
+ LRESULT lresult;
752
+ DrawBlock db(*this);
753
+ auto hr = m_textServices->TxSendMessage(msg, static_cast<WPARAM>(wParam), static_cast<LPARAM>(lParam), &lresult);
754
+ args.Handled(hr != S_FALSE);
755
+ }
756
+ }
757
+
758
+ void WindowsTextInputComponentView::onKeyDown(
759
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
760
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
761
+ // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
762
+ // behavior We do forward Ctrl+Tab to the textinput.
763
+ if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
764
+ source.GetKeyState(winrt::Windows::System::VirtualKey::Control) ==
765
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down) {
766
+ WPARAM wParam = static_cast<WPARAM>(args.Key());
767
+ LPARAM lParam = 0;
768
+ lParam = args.KeyStatus().RepeatCount; // bits 0-15
769
+ lParam |= args.KeyStatus().ScanCode << 16; // bits 16-23
770
+ if (args.KeyStatus().IsExtendedKey)
771
+ lParam |= 0x01000000; // bit 24
772
+ // if sysKey - bit 29 = 1, otherwise 0
773
+ if (args.KeyStatus().WasKeyDown)
774
+ lParam |= 0x40000000; // bit 30
775
+
776
+ LRESULT lresult;
777
+ DrawBlock db(*this);
778
+ auto hr = m_textServices->TxSendMessage(
779
+ args.KeyStatus().IsMenuKeyDown ? WM_SYSKEYDOWN : WM_KEYDOWN, wParam, lParam, &lresult);
780
+ if (hr >= 0 && lresult) {
781
+ args.Handled(true);
782
+ }
783
+ }
784
+
785
+ Super::onKeyDown(source, args);
786
+ }
787
+
788
+ void WindowsTextInputComponentView::onKeyUp(
789
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
790
+ const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept {
791
+ // Do not forward tab keys into the TextInput, since we want that to do the tab loop instead. This aligns with WinUI
792
+ // behavior We do forward Ctrl+Tab to the textinput.
793
+ if (args.Key() != winrt::Windows::System::VirtualKey::Tab ||
794
+ source.GetKeyState(winrt::Windows::System::VirtualKey::Control) ==
795
+ winrt::Windows::UI::Core::CoreVirtualKeyStates::Down) {
796
+ WPARAM wParam = static_cast<WPARAM>(args.Key());
797
+ LPARAM lParam = 1;
798
+ lParam = args.KeyStatus().RepeatCount; // bits 0-15
799
+ lParam |= args.KeyStatus().ScanCode << 16; // bits 16-23
800
+ if (args.KeyStatus().IsExtendedKey)
801
+ lParam |= 0x01000000; // bit 24
802
+ // if sysKey - bit 29 = 1, otherwise 0
803
+ if (args.KeyStatus().WasKeyDown)
804
+ lParam |= 0x40000000; // bit 30
805
+ lParam |= 0x80000000; // bit 31 always 1 for WM_KEYUP
806
+
807
+ LRESULT lresult;
808
+ DrawBlock db(*this);
809
+ auto hr = m_textServices->TxSendMessage(
810
+ args.KeyStatus().IsMenuKeyDown ? WM_SYSKEYUP : WM_KEYUP, wParam, lParam, &lresult);
811
+ if (hr >= 0 && lresult) {
812
+ args.Handled(true);
813
+ }
814
+ }
815
+
816
+ Super::onKeyDown(source, args);
817
+ }
818
+
569
819
  void WindowsTextInputComponentView::mountChildComponentView(
570
820
  IComponentView &childComponentView,
571
821
  uint32_t index) noexcept {
@@ -583,6 +833,7 @@ void WindowsTextInputComponentView::unmountChildComponentView(
583
833
  void WindowsTextInputComponentView::onFocusLost() noexcept {
584
834
  Super::onFocusLost();
585
835
  sendMessage(WM_KILLFOCUS, 0, 0);
836
+ m_caretVisual.IsVisible(false);
586
837
  }
587
838
 
588
839
  void WindowsTextInputComponentView::onFocusGained() noexcept {
@@ -594,6 +845,18 @@ bool WindowsTextInputComponentView::focusable() const noexcept {
594
845
  return m_props->focusable;
595
846
  }
596
847
 
848
+ std::string WindowsTextInputComponentView::DefaultControlType() const noexcept {
849
+ return "textinput";
850
+ }
851
+
852
+ std::string WindowsTextInputComponentView::DefaultAccessibleName() const noexcept {
853
+ return m_props->placeholder;
854
+ }
855
+
856
+ std::string WindowsTextInputComponentView::DefaultHelpText() const noexcept {
857
+ return m_props->placeholder;
858
+ }
859
+
597
860
  void WindowsTextInputComponentView::updateProps(
598
861
  facebook::react::Props::Shared const &props,
599
862
  facebook::react::Props::Shared const &oldProps) noexcept {
@@ -605,6 +868,9 @@ void WindowsTextInputComponentView::updateProps(
605
868
 
606
869
  ensureVisual();
607
870
 
871
+ // update BaseComponentView props
872
+ updateShadowProps(oldTextInputProps, newTextInputProps, m_visual);
873
+ updateTransformProps(oldTextInputProps, newTextInputProps, m_visual);
608
874
  updateBorderProps(oldTextInputProps, newTextInputProps);
609
875
 
610
876
  if (!facebook::react::floatEquality(
@@ -614,6 +880,40 @@ void WindowsTextInputComponentView::updateProps(
614
880
  propBits |= TXTBIT_CHARFORMATCHANGE;
615
881
  }
616
882
 
883
+ if (oldTextInputProps.secureTextEntry != newTextInputProps.secureTextEntry) {
884
+ propBitsMask |= TXTBIT_USEPASSWORD;
885
+ if (newTextInputProps.secureTextEntry) {
886
+ propBits |= TXTBIT_USEPASSWORD;
887
+ }
888
+ }
889
+
890
+ if (oldTextInputProps.multiline != newTextInputProps.multiline) {
891
+ propBitsMask |= TXTBIT_MULTILINE | TXTBIT_WORDWRAP;
892
+ if (newTextInputProps.multiline) {
893
+ propBits |= TXTBIT_MULTILINE | TXTBIT_WORDWRAP;
894
+ }
895
+ }
896
+
897
+ if (oldTextInputProps.editable != newTextInputProps.editable) {
898
+ propBitsMask |= TXTBIT_READONLY;
899
+ if (!newTextInputProps.editable) {
900
+ propBits |= TXTBIT_READONLY;
901
+ }
902
+ }
903
+
904
+ if (oldTextInputProps.placeholder != newTextInputProps.placeholder ||
905
+ oldTextInputProps.placeholderTextColor != newTextInputProps.placeholderTextColor) {
906
+ m_needsRedraw = true;
907
+ }
908
+
909
+ if (oldTextInputProps.backgroundColor != newTextInputProps.backgroundColor) {
910
+ m_needsRedraw = true;
911
+ }
912
+
913
+ if (oldTextInputProps.cursorColor != newTextInputProps.cursorColor) {
914
+ m_caretVisual.Color(newTextInputProps.cursorColor.AsWindowsColor());
915
+ }
916
+
617
917
  /*
618
918
  if (oldTextInputProps.textAttributes.foregroundColor != newTextInputProps.textAttributes.foregroundColor) {
619
919
  if (newTextInputProps.textAttributes.foregroundColor)
@@ -650,21 +950,6 @@ void WindowsTextInputComponentView::updateProps(
650
950
  m_element.IsTextScaleFactorEnabled(newTextInputProps.allowFontScaling);
651
951
  }
652
952
 
653
- if (oldTextInputProps.placeholder != newTextInputProps.placeholder) {
654
- m_element.PlaceholderText(winrt::to_hstring(newTextInputProps.placeholder));
655
- }
656
-
657
- if (oldTextInputProps.editable != newTextInputProps.editable) {
658
- m_element.IsReadOnly(!newTextInputProps.editable);
659
- }
660
-
661
-
662
- if (oldTextInputProps.multiline != newTextInputProps.multiline) {
663
- m_element.TextWrapping(newTextInputProps.multiline ? xaml::TextWrapping::Wrap : xaml::TextWrapping::NoWrap);
664
- m_element.AcceptsReturn(newTextInputProps.multiline);
665
- }
666
-
667
-
668
953
  if (oldTextInputProps.selection.start != newTextInputProps.selection.start ||
669
954
  oldTextInputProps.selection.end != newTextInputProps.selection.end) {
670
955
  m_element.Select(
@@ -675,20 +960,10 @@ void WindowsTextInputComponentView::updateProps(
675
960
  if (newTextInputProps.autoCapitalize == "characters") {
676
961
  m_element.CharacterCasing(xaml::Controls::CharacterCasing::Upper);
677
962
  } else { // anything else turns off autoCap (should be "None" but
678
- // we don't support "words"/"senetences" yet)
963
+ // we don't support "words"/"sentences" yet)
679
964
  m_element.CharacterCasing(xaml::Controls::CharacterCasing::Normal);
680
965
  }
681
966
  }
682
-
683
- if (oldViewProps.backgroundColor != newViewProps.backgroundColor) {
684
- auto color = *newViewProps.backgroundColor;
685
-
686
- if (newViewProps.backgroundColor) {
687
- m_element.ViewBackground(SolidColorBrushFrom(newViewProps.backgroundColor));
688
- } else {
689
- m_element.ClearValue(winrt::Microsoft::ReactNative::ViewPanel::ViewBackgroundProperty());
690
- }
691
- }
692
967
  */
693
968
 
694
969
  m_props = std::static_pointer_cast<facebook::react::WindowsTextInputProps const>(props);
@@ -752,6 +1027,10 @@ void WindowsTextInputComponentView::UpdateText(const std::string &str) noexcept
752
1027
  EM_SETTEXTEX, reinterpret_cast<WPARAM>(&stt), reinterpret_cast<LPARAM>(str.c_str()), &res));
753
1028
 
754
1029
  winrt::check_hresult(m_textServices->TxSendMessage(EM_EXGETSEL, 0, reinterpret_cast<LPARAM>(&cr), &res));
1030
+
1031
+ // enable colored emojis
1032
+ winrt::check_hresult(
1033
+ m_textServices->TxSendMessage(EM_SETTYPOGRAPHYOPTIONS, 0x1000 | 0x2000, 0x1000 | 0x2000, nullptr));
755
1034
  }
756
1035
 
757
1036
  void WindowsTextInputComponentView::updateLayoutMetrics(
@@ -801,6 +1080,7 @@ void WindowsTextInputComponentView::OnTextUpdated() noexcept {
801
1080
  // return;
802
1081
  data.attributedString = getAttributedString();
803
1082
  data.mostRecentEventCount = m_nativeEventCount;
1083
+
804
1084
  m_state->updateState(std::move(data));
805
1085
 
806
1086
  if (m_eventEmitter && !m_comingFromJS) {
@@ -831,10 +1111,10 @@ std::string WindowsTextInputComponentView::GetTextFromRichEdit() const noexcept
831
1111
  auto str = BstrToStdString(bstr);
832
1112
 
833
1113
  // JS gets confused by the \r\0 ending
834
- if (*(str.end() - 1) == '\0') {
1114
+ if (str.size() > 0 && *(str.end() - 1) == '\0') {
835
1115
  str.pop_back();
836
1116
  }
837
- if (*(str.end() - 1) == '\r') {
1117
+ if (str.size() > 0 && *(str.end() - 1) == '\r') {
838
1118
  str.pop_back();
839
1119
  }
840
1120
  SysFreeString(bstr);
@@ -842,10 +1122,16 @@ std::string WindowsTextInputComponentView::GetTextFromRichEdit() const noexcept
842
1122
  }
843
1123
 
844
1124
  void WindowsTextInputComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {
845
- // m_element.FinalizeProperties();
846
-
1125
+ if (m_needsBorderUpdate) {
1126
+ m_needsBorderUpdate = false;
1127
+ UpdateSpecialBorderLayers(m_layoutMetrics, *m_props);
1128
+ }
847
1129
  ensureDrawingSurface();
1130
+ if (m_needsRedraw) {
1131
+ DrawText();
1132
+ }
848
1133
  }
1134
+
849
1135
  void WindowsTextInputComponentView::prepareForRecycle() noexcept {}
850
1136
  facebook::react::Props::Shared WindowsTextInputComponentView::props() noexcept {
851
1137
  return m_props;
@@ -935,13 +1221,13 @@ void WindowsTextInputComponentView::ensureDrawingSurface() noexcept {
935
1221
  assert(m_context.UIDispatcher().HasThreadAccess());
936
1222
 
937
1223
  if (!m_drawingSurface) {
938
- m_drawingSurface = m_compContext.CreateDrawingSurface(
1224
+ m_drawingSurface = m_compContext.CreateDrawingSurfaceBrush(
939
1225
  {static_cast<float>(m_imgWidth), static_cast<float>(m_imgHeight)},
940
1226
  winrt::Windows::Graphics::DirectX::DirectXPixelFormat::B8G8R8A8UIntNormalized,
941
1227
  winrt::Windows::Graphics::DirectX::DirectXAlphaMode::Premultiplied);
942
1228
 
943
- auto rcClient = getClientRect();
944
- winrt::check_hresult(m_textServices->OnTxInPlaceActivate(&rcClient));
1229
+ m_rcClient = getClientRect();
1230
+ winrt::check_hresult(m_textServices->OnTxInPlaceActivate(&m_rcClient));
945
1231
 
946
1232
  LRESULT lresult;
947
1233
  winrt::check_hresult(
@@ -949,11 +1235,10 @@ void WindowsTextInputComponentView::ensureDrawingSurface() noexcept {
949
1235
 
950
1236
  DrawText();
951
1237
 
952
- auto surfaceBrush = m_compContext.CreateSurfaceBrush(m_drawingSurface);
953
- surfaceBrush.HorizontalAlignmentRatio(0.f);
954
- surfaceBrush.VerticalAlignmentRatio(0.f);
955
- surfaceBrush.Stretch(winrt::Microsoft::ReactNative::Composition::CompositionStretch::None);
956
- m_visual.Brush(surfaceBrush);
1238
+ m_drawingSurface.HorizontalAlignmentRatio(0.f);
1239
+ m_drawingSurface.VerticalAlignmentRatio(0.f);
1240
+ m_drawingSurface.Stretch(winrt::Microsoft::ReactNative::Composition::CompositionStretch::None);
1241
+ m_visual.Brush(m_drawingSurface);
957
1242
  }
958
1243
  }
959
1244
 
@@ -962,67 +1247,122 @@ void WindowsTextInputComponentView::ShowCaret(bool show) noexcept {
962
1247
  m_caretVisual.IsVisible(show);
963
1248
  }
964
1249
 
1250
+ winrt::com_ptr<::IDWriteTextLayout> WindowsTextInputComponentView::CreatePlaceholderLayout() {
1251
+ // Create a fragment with text attributes
1252
+ winrt::com_ptr<::IDWriteTextLayout> textLayout = nullptr;
1253
+ facebook::react::AttributedString attributedString;
1254
+ facebook::react::AttributedString::Fragment fragment1;
1255
+ facebook::react::TextAttributes textAttributes = m_props->textAttributes;
1256
+ if (std::isnan(m_props->textAttributes.fontSize)) {
1257
+ textAttributes.fontSize = 12.0f;
1258
+ }
1259
+ fragment1.string = m_props->placeholder;
1260
+ fragment1.textAttributes = textAttributes;
1261
+ attributedString.appendFragment(fragment1);
1262
+
1263
+ facebook::react::LayoutConstraints constraints;
1264
+ constraints.maximumSize.width = static_cast<FLOAT>(m_imgWidth);
1265
+ constraints.maximumSize.height = static_cast<FLOAT>(m_imgHeight);
1266
+
1267
+ facebook::react::TextLayoutManager::GetTextLayout(
1268
+ facebook::react::AttributedStringBox(attributedString), {} /*TODO*/, constraints, textLayout);
1269
+
1270
+ return textLayout;
1271
+ }
1272
+
965
1273
  void WindowsTextInputComponentView::DrawText() noexcept {
966
1274
  m_needsRedraw = true;
967
1275
  if (m_cDrawBlock) {
968
1276
  return;
969
1277
  }
970
1278
 
971
- if (!m_drawingSurface)
1279
+ bool isZeroSized =
1280
+ m_layoutMetrics.frame.size.width <= (m_layoutMetrics.contentInsets.left + m_layoutMetrics.contentInsets.right);
1281
+ if (!m_drawingSurface || isZeroSized)
972
1282
  return;
973
1283
 
974
- // Begin our update of the surface pixels. If this is our first update, we are required
975
- // to specify the entire surface, which nullptr is shorthand for (but, as it works out,
976
- // any time we make an update we touch the entire surface, so we always pass nullptr).
977
- winrt::com_ptr<ID2D1DeviceContext> d2dDeviceContext;
978
1284
  POINT offset;
979
1285
 
980
1286
  assert(m_context.UIDispatcher().HasThreadAccess());
981
1287
 
982
- winrt::com_ptr<Composition::ICompositionDrawingSurfaceInterop> drawingSurfaceInterop;
983
- m_drawingSurface.as(drawingSurfaceInterop);
984
-
985
1288
  m_drawing = true;
986
- if (CheckForDeviceRemoved(drawingSurfaceInterop->BeginDraw(d2dDeviceContext.put(), &offset))) {
987
- d2dDeviceContext->Clear(D2D1::ColorF(D2D1::ColorF::Black, 0.0f));
988
- assert(d2dDeviceContext->GetUnitMode() == D2D1_UNIT_MODE_DIPS);
989
- const auto dpi = m_layoutMetrics.pointScaleFactor * 96.0f;
990
- float oldDpiX, oldDpiY;
991
- d2dDeviceContext->GetDpi(&oldDpiX, &oldDpiY);
992
- d2dDeviceContext->SetDpi(dpi, dpi);
993
-
994
- RECTL rc{
995
- static_cast<LONG>(offset.x),
996
- static_cast<LONG>(offset.y),
997
- static_cast<LONG>(offset.x) + static_cast<LONG>(m_imgWidth),
998
- static_cast<LONG>(offset.y) + static_cast<LONG>(m_imgHeight)};
999
-
1000
- RECT rcClient{
1001
- static_cast<LONG>(offset.x),
1002
- static_cast<LONG>(offset.y),
1003
- static_cast<LONG>(offset.x) + static_cast<LONG>(m_imgWidth),
1004
- static_cast<LONG>(offset.y) + static_cast<LONG>(m_imgHeight)};
1005
-
1006
- winrt::check_hresult(m_textServices->OnTxInPlaceActivate(&rcClient));
1007
-
1008
- // TODO keep track of proper invalid rect
1009
- auto hrDraw = m_textServices->TxDrawD2D(d2dDeviceContext.get(), &rc, nullptr, TXTVIEW_ACTIVE);
1010
- winrt::check_hresult(hrDraw);
1011
-
1012
- // restore dpi state
1013
- d2dDeviceContext->SetDpi(oldDpiX, oldDpiY);
1014
-
1015
- // Our update is done. EndDraw never indicates rendering device removed, so any
1016
- // failure here is unexpected and, therefore, fatal.
1017
- auto hrEndDraw = drawingSurfaceInterop->EndDraw();
1018
- winrt::check_hresult(hrEndDraw);
1289
+ {
1290
+ ::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(m_drawingSurface, &offset);
1291
+ if (auto d2dDeviceContext = autoDraw.GetRenderTarget()) {
1292
+ d2dDeviceContext->Clear(D2D1::ColorF(D2D1::ColorF::Black, 0.0f));
1293
+ assert(d2dDeviceContext->GetUnitMode() == D2D1_UNIT_MODE_DIPS);
1294
+ const auto dpi = m_layoutMetrics.pointScaleFactor * 96.0f;
1295
+ float oldDpiX, oldDpiY;
1296
+ d2dDeviceContext->GetDpi(&oldDpiX, &oldDpiY);
1297
+ d2dDeviceContext->SetDpi(dpi, dpi);
1298
+
1299
+ RECTL rc{
1300
+ static_cast<LONG>(offset.x),
1301
+ static_cast<LONG>(offset.y),
1302
+ static_cast<LONG>(offset.x) + static_cast<LONG>(m_imgWidth),
1303
+ static_cast<LONG>(offset.y) + static_cast<LONG>(m_imgHeight)};
1304
+
1305
+ RECT rcClient{
1306
+ static_cast<LONG>(offset.x),
1307
+ static_cast<LONG>(offset.y),
1308
+ static_cast<LONG>(offset.x) + static_cast<LONG>(m_imgWidth),
1309
+ static_cast<LONG>(offset.y) + static_cast<LONG>(m_imgHeight)};
1310
+
1311
+ winrt::check_hresult(m_textServices->OnTxInPlaceActivate(&rcClient));
1312
+
1313
+ if (facebook::react::isColorMeaningful(m_props->backgroundColor)) {
1314
+ auto backgroundColor = m_props->backgroundColor.AsD2DColor();
1315
+ winrt::com_ptr<ID2D1SolidColorBrush> backgroundBrush;
1316
+ winrt::check_hresult(d2dDeviceContext->CreateSolidColorBrush(backgroundColor, backgroundBrush.put()));
1317
+ const D2D1_RECT_F fillRect = {
1318
+ static_cast<float>(rcClient.left) / m_layoutMetrics.pointScaleFactor,
1319
+ static_cast<float>(rcClient.top) / m_layoutMetrics.pointScaleFactor,
1320
+ static_cast<float>(rcClient.right) / m_layoutMetrics.pointScaleFactor,
1321
+ static_cast<float>(rcClient.bottom) / m_layoutMetrics.pointScaleFactor};
1322
+ d2dDeviceContext->FillRectangle(fillRect, backgroundBrush.get());
1323
+ }
1324
+
1325
+ // TODO keep track of proper invalid rect
1326
+ auto hrDraw = m_textServices->TxDrawD2D(d2dDeviceContext, &rc, nullptr, TXTVIEW_ACTIVE);
1327
+ winrt::check_hresult(hrDraw);
1328
+
1329
+ // draw placeholder text if needed
1330
+ if (!m_props->placeholder.empty() && GetTextFromRichEdit().empty()) {
1331
+ // set brush color
1332
+ winrt::com_ptr<ID2D1SolidColorBrush> brush;
1333
+ if (m_props->placeholderTextColor) {
1334
+ auto color = m_props->placeholderTextColor.AsD2DColor();
1335
+ winrt::check_hresult(d2dDeviceContext->CreateSolidColorBrush(color, brush.put()));
1336
+ } else {
1337
+ winrt::check_hresult(
1338
+ d2dDeviceContext->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Gray, 1.0f), brush.put()));
1339
+ }
1340
+
1341
+ // Create placeholder text layout
1342
+ winrt::com_ptr<::IDWriteTextLayout> textLayout = CreatePlaceholderLayout();
1343
+
1344
+ // draw text
1345
+ d2dDeviceContext->DrawTextLayout(
1346
+ D2D1::Point2F(
1347
+ static_cast<FLOAT>((offset.x + m_layoutMetrics.contentInsets.left) / m_layoutMetrics.pointScaleFactor),
1348
+ static_cast<FLOAT>((offset.y + m_layoutMetrics.contentInsets.top) / m_layoutMetrics.pointScaleFactor)),
1349
+ textLayout.get(),
1350
+ brush.get(),
1351
+ D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT);
1352
+ }
1353
+
1354
+ // restore dpi state
1355
+ d2dDeviceContext->SetDpi(oldDpiX, oldDpiY);
1356
+ }
1019
1357
  }
1020
1358
  m_drawing = false;
1021
1359
  m_needsRedraw = false;
1022
1360
  }
1023
1361
 
1024
- facebook::react::Tag WindowsTextInputComponentView::hitTest(facebook::react::Point pt, facebook::react::Point &localPt)
1025
- const noexcept {
1362
+ facebook::react::Tag WindowsTextInputComponentView::hitTest(
1363
+ facebook::react::Point pt,
1364
+ facebook::react::Point &localPt,
1365
+ bool ignorePointerEvents) const noexcept {
1026
1366
  facebook::react::Point ptLocal{pt.x - m_layoutMetrics.frame.origin.x, pt.y - m_layoutMetrics.frame.origin.y};
1027
1367
 
1028
1368
  facebook::react::Tag targetTag;
@@ -1037,7 +1377,7 @@ facebook::react::Tag WindowsTextInputComponentView::hitTest(facebook::react::Poi
1037
1377
  return targetTag;
1038
1378
  */
1039
1379
 
1040
- if ((m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
1380
+ if ((ignorePointerEvents || m_props->pointerEvents == facebook::react::PointerEventsMode::Auto ||
1041
1381
  m_props->pointerEvents == facebook::react::PointerEventsMode::BoxOnly) &&
1042
1382
  ptLocal.x >= 0 && ptLocal.x <= m_layoutMetrics.frame.size.width && ptLocal.y >= 0 &&
1043
1383
  ptLocal.y <= m_layoutMetrics.frame.size.height) {