react-native-windows 0.68.3 → 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 (378) 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/DynamicReader.cpp +3 -3
  150. package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -0
  151. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.cpp +36 -2
  152. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.h +1 -0
  153. package/Microsoft.ReactNative/Fabric/DWriteHelpers.cpp +19 -0
  154. package/Microsoft.ReactNative/Fabric/DWriteHelpers.h +13 -0
  155. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +65 -19
  156. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  157. package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +36 -10
  158. package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +2 -0
  159. package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +107 -0
  160. package/Microsoft.ReactNative/Fabric/SliderComponentView.h +51 -0
  161. package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +109 -0
  162. package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +52 -0
  163. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentDescriptor.h +197 -0
  164. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +308 -0
  165. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +52 -0
  166. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.cpp +31 -0
  167. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.h +33 -0
  168. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.cpp +81 -0
  169. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.h +132 -0
  170. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.cpp +193 -0
  171. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.h +85 -0
  172. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.cpp +76 -0
  173. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.h +99 -0
  174. package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +35 -3
  175. package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -0
  176. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +5 -0
  177. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +5 -0
  178. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.cpp +46 -0
  179. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.h +30 -0
  180. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +2 -0
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +1 -9
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +3 -1
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +119 -57
  184. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -1
  185. package/Microsoft.ReactNative/IViewManager.idl +3 -3
  186. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -107
  187. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -2
  188. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -0
  189. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -0
  190. package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
  191. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -5
  192. package/Microsoft.ReactNative/Modules/TimingModule.cpp +2 -2
  193. package/Microsoft.ReactNative/Modules/TimingModule.h +2 -2
  194. package/Microsoft.ReactNative/ReactHost/{ReactContext.cpp → MsoReactContext.cpp} +1 -1
  195. package/Microsoft.ReactNative/ReactHost/{ReactContext.h → MsoReactContext.h} +0 -0
  196. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +14 -1
  197. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  198. package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
  199. package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
  200. package/Microsoft.ReactNative/RedBox.cpp +3 -2
  201. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +3 -2
  202. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +32 -0
  203. package/Microsoft.ReactNative/Views/ControlViewManager.h +11 -0
  204. package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -2
  205. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +13 -2
  206. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +149 -22
  207. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  208. package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +5 -11
  209. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +2 -1
  210. package/Microsoft.ReactNative/Views/SliderViewManager.cpp +12 -4
  211. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  212. package/Microsoft.ReactNative/Views/TextViewManager.cpp +2 -2
  213. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +163 -37
  214. package/Microsoft.ReactNative/Views/TouchEventHandler.h +11 -4
  215. package/Microsoft.ReactNative/Views/ViewPanel.cpp +3 -23
  216. package/Microsoft.ReactNative/Views/ViewPanel.h +2 -3
  217. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +21 -0
  218. package/Microsoft.ReactNative/XamlUIService.cpp +1 -1
  219. package/Microsoft.ReactNative/XamlView.h +8 -3
  220. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +3 -5
  221. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
  222. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +11 -2
  223. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +10 -1
  225. package/Microsoft.ReactNative.Cxx/JSValueReader.h +2 -2
  226. package/Microsoft.ReactNative.Cxx/JSValueWriter.h +5 -5
  227. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -1
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +2 -3
  229. package/Microsoft.ReactNative.Cxx/NativeModules.h +1 -1
  230. package/Microsoft.ReactNative.Cxx/ReactContext.h +3 -3
  231. package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +3 -3
  232. package/Microsoft.ReactNative.Cxx/XamlUtils.h +44 -5
  233. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -6
  234. package/Mso/activeObject/activeObject.h +2 -2
  235. package/Mso/compilerAdapters/cppMacros.h +3 -5
  236. package/Mso/errorCode/errorProvider.h +2 -2
  237. package/Mso/errorCode/maybe.h +4 -4
  238. package/Mso/functional/functor.h +6 -6
  239. package/Mso/functional/functorRef.h +2 -2
  240. package/Mso/future/details/executor.h +2 -2
  241. package/Mso/future/details/futureFuncInl.h +4 -4
  242. package/Mso/future/details/ifuture.h +3 -3
  243. package/Mso/future/details/maybeInvoker.h +6 -6
  244. package/Mso/future/details/promiseGroupInl.h +4 -4
  245. package/Mso/future/details/promiseInl.h +4 -4
  246. package/Mso/future/details/resultTraits.h +4 -4
  247. package/Mso/future/details/whenAllInl.h +1 -1
  248. package/Mso/future/future.h +13 -13
  249. package/Mso/guid/msoGuidDetails.h +1 -1
  250. package/Mso/memoryApi/memoryApi.h +13 -7
  251. package/Mso/motifCpp/gTestAdapter.h +1 -1
  252. package/Mso/motifCpp/testInfo.h +7 -9
  253. package/Mso/object/make.h +8 -8
  254. package/Mso/object/objectRefCount.h +3 -5
  255. package/Mso/object/objectWithWeakRef.h +10 -14
  256. package/Mso/object/queryCast.h +4 -4
  257. package/Mso/object/refCountedObject.h +4 -4
  258. package/Mso/object/unknownObject.h +7 -7
  259. package/Mso/platformAdapters/windowsFirst.h +1 -1
  260. package/Mso/smartPtr/cntPtr.h +8 -8
  261. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -2
  262. package/Mso/src/future/futureImpl.h +1 -1
  263. package/Mso/src/memoryApi/memoryApi.cpp +4 -4
  264. package/PropertySheets/CppAppConsumeCSharpModule.props +3 -0
  265. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.props +26 -0
  266. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.Common.props +12 -0
  267. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  268. package/PropertySheets/React.Cpp.props +13 -0
  269. package/PropertySheets/WinUI.props +3 -6
  270. package/ReactCommon/ReactCommon.vcxproj +2 -4
  271. package/ReactCommon/ReactCommon.vcxproj.filters +4 -1
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/JSCRuntime.cpp +1480 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/decorator.h +753 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/jsi.h +1331 -0
  275. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1431 -0
  276. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +103 -0
  277. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +87 -0
  278. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +61 -0
  279. package/ReactCommon/Yoga.cpp +1 -1
  280. package/Scripts/{Microsoft.ReactNative.ProjectReunion.nuspec → Microsoft.ReactNative.WindowsAppSDK.nuspec} +7 -9
  281. package/Scripts/OfficeReact.Win32.nuspec +1 -3
  282. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -1
  283. package/Scripts/copyRNLibraries.js +8 -8
  284. package/Scripts/just.js +1 -1
  285. package/Scripts/rnw-dependencies.ps1 +41 -10
  286. package/Scripts/run-desktop-integration-tests.js +6 -6
  287. package/Shared/AbiSafe.h +3 -3
  288. package/Shared/BaseScriptStoreImpl.cpp +1 -1
  289. package/Shared/CppRuntimeOptions.h +50 -0
  290. package/Shared/DevSupportManager.cpp +32 -36
  291. package/Shared/DevSupportManager.h +1 -2
  292. package/Shared/HermesRuntimeHolder.cpp +23 -14
  293. package/Shared/HermesRuntimeHolder.h +8 -2
  294. package/Shared/IDevSupportManager.h +1 -2
  295. package/Shared/InspectorPackagerConnection.cpp +7 -5
  296. package/Shared/InspectorPackagerConnection.h +2 -2
  297. package/Shared/JSI/ChakraApi.cpp +0 -1
  298. package/Shared/JSI/ChakraRuntime.cpp +1 -2
  299. package/Shared/JSI/RuntimeHolder.h +2 -0
  300. package/Shared/Modules/HttpModule.cpp +1 -1
  301. package/Shared/Modules/HttpModule.h +2 -2
  302. package/Shared/Modules/WebSocketModule.cpp +1 -1
  303. package/Shared/Modules/WebSocketModule.h +8 -5
  304. package/Shared/{IHttpResource.h → Networking/IHttpResource.h} +4 -4
  305. package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +2 -2
  306. package/Shared/Networking/OriginPolicy.h +15 -0
  307. package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
  308. package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
  309. package/Shared/{WinRTHttpResource.cpp → Networking/WinRTHttpResource.cpp} +129 -99
  310. package/Shared/{WinRTHttpResource.h → Networking/WinRTHttpResource.h} +8 -12
  311. package/Shared/Networking/WinRTTypes.h +30 -0
  312. package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +2 -2
  313. package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
  314. package/Shared/OInstance.cpp +5 -5
  315. package/Shared/RuntimeOptions.cpp +93 -15
  316. package/Shared/RuntimeOptions.h +22 -9
  317. package/Shared/Shared.vcxitems +122 -7
  318. package/Shared/Shared.vcxitems.filters +40 -21
  319. package/Shared/Threading/BatchingQueueThread.cpp +1 -1
  320. package/Shared/tracing/fbsystrace.h +2 -2
  321. package/codegen/NativeActionSheetManagerSpec.g.h +6 -0
  322. package/codegen/NativeAnimatedModuleSpec.g.h +43 -37
  323. package/codegen/NativeAnimatedTurboModuleSpec.g.h +43 -37
  324. package/codegen/NativePushNotificationManagerIOSSpec.g.h +2 -0
  325. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  326. package/codegen/react/components/rnwcore/EventEmitters.cpp +133 -0
  327. package/codegen/react/components/rnwcore/EventEmitters.h +0 -18
  328. package/codegen/react/components/rnwcore/Props.cpp +0 -13
  329. package/codegen/react/components/rnwcore/Props.h +0 -16
  330. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  331. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -10
  332. package/include/Shared/cdebug.h +9 -9
  333. package/index.js +30 -25
  334. package/index.windows.js +30 -25
  335. package/jest/preprocessor.js +24 -107
  336. package/jest/preprocessor_DO_NOT_USE.js +122 -0
  337. package/metro.config.js +3 -70
  338. package/package.json +29 -28
  339. package/react-native.config.js +40 -6
  340. package/rntypes/index.d.ts +19 -7
  341. package/stubs/glog/logging.h +1 -1
  342. package/template/cpp-app/src/App.h +0 -4
  343. package/template/cs-app/src/App.xaml.cs +0 -5
  344. package/template/cs-app/src/MainPage.xaml.cs +1 -10
  345. package/template/cs-app-WinAppSDK/MyApp/App.xaml +16 -0
  346. package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +70 -0
  347. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +14 -0
  348. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +38 -0
  349. package/template/cs-app-WinAppSDK/MyApp/Package.appxmanifest +48 -0
  350. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +19 -0
  351. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +19 -0
  352. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +19 -0
  353. package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +10 -0
  354. package/template/cs-app-WinAppSDK/MyApp/app.manifest +15 -0
  355. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +23 -0
  356. package/template/cs-app-WinAppSDK/proj/MyApp.csproj +49 -0
  357. package/template/cs-app-WinAppSDK/proj/MyApp.sln +43 -0
  358. package/template/cs-app-WinAppSDK/proj/NuGet.Config +17 -0
  359. package/template/metro.devMode.config.js +2 -51
  360. package/typings-index.js +5 -1
  361. package/typings-index.js.map +1 -1
  362. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
  363. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
  364. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  365. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.windows.js +0 -45
  366. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
  367. package/Libraries/Components/View/ReactNativeViewViewConfig.windows.js +0 -390
  368. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
  369. package/Libraries/ReactNative/UIManagerInjection.js +0 -15
  370. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
  371. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
  372. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
  373. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
  374. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
  375. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
  376. package/PropertySheets/CppEnablePackageReferences.props +0 -13
  377. package/Shared/cdebug.cpp +0 -6
  378. package/include/Shared/ViewManager.h +0 -34
@@ -7,16 +7,23 @@
7
7
  #include <Fabric/ComponentView.h>
8
8
  #include <Fabric/FabricUIManagerModule.h>
9
9
  #include <Fabric/ReactNativeConfigProperties.h>
10
+ #ifndef CORE_ABI
10
11
  #include <Fabric/ViewComponentView.h>
12
+ #endif // CORE_ABI
11
13
  #include <IReactContext.h>
12
14
  #include <IReactRootView.h>
15
+ #ifndef CORE_ABI
13
16
  #include <IXamlRootView.h>
17
+ #endif // CORE_ABI
14
18
  #include <JSI/jsi.h>
15
19
  #include <SchedulerSettings.h>
16
20
  #include <UI.Xaml.Controls.h>
17
21
  #include <react/components/rnwcore/ComponentDescriptors.h>
18
22
  #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
19
23
  #include <react/renderer/components/image/ImageComponentDescriptor.h>
24
+ #ifndef CORE_ABI
25
+ #include <react/renderer/components/slider/SliderComponentDescriptor.h>
26
+ #endif // CORE_ABI
20
27
  #include <react/renderer/components/text/ParagraphComponentDescriptor.h>
21
28
  #include <react/renderer/components/text/RawTextComponentDescriptor.h>
22
29
  #include <react/renderer/components/text/TextComponentDescriptor.h>
@@ -28,6 +35,9 @@
28
35
  #include <react/utils/ContextContainer.h>
29
36
  #include <runtimeexecutor/ReactCommon/RuntimeExecutor.h>
30
37
  #include <winrt/Windows.Graphics.Display.h>
38
+ #ifndef CORE_ABI
39
+ #include "TextInput/WindowsTextInputComponentDescriptor.h"
40
+ #endif // CORE_ABI
31
41
  #include "Unicode.h"
32
42
 
33
43
  #pragma warning(push)
@@ -75,6 +85,7 @@ class AsyncEventBeat final : public facebook::react::EventBeat { //, public face
75
85
  return;
76
86
  }
77
87
 
88
+ #ifndef CORE_ABI
78
89
  // TODO: should use something other than CompositionTarget::Rendering ... not sure where to plug this in yet
79
90
  // Getting the beat running to unblock basic events
80
91
  m_rendering = xaml::Media::CompositionTarget::Rendering(
@@ -86,6 +97,7 @@ class AsyncEventBeat final : public facebook::react::EventBeat { //, public face
86
97
 
87
98
  tick();
88
99
  });
100
+ #endif // CORE_ABI
89
101
  });
90
102
 
91
103
  // eventBeatManager->addObserver(*this);
@@ -142,12 +154,20 @@ std::shared_ptr<facebook::react::ComponentDescriptorProviderRegistry const> shar
142
154
  facebook::react::concreteComponentDescriptorProvider<facebook::react::RawTextComponentDescriptor>());
143
155
  providerRegistry->add(
144
156
  facebook::react::concreteComponentDescriptorProvider<facebook::react::ScrollViewComponentDescriptor>());
157
+ #ifndef CORE_ABI
145
158
  providerRegistry->add(
146
- facebook::react::concreteComponentDescriptorProvider<facebook::react::TextComponentDescriptor>());
159
+ facebook::react::concreteComponentDescriptorProvider<facebook::react::SliderComponentDescriptor>());
160
+ #endif // CORE_ABI
161
+ providerRegistry->add(
162
+ facebook::react::concreteComponentDescriptorProvider<facebook::react::SwitchComponentDescriptor>());
147
163
  providerRegistry->add(
148
- facebook::react::concreteComponentDescriptorProvider<facebook::react::TextInputComponentDescriptor>());
164
+ facebook::react::concreteComponentDescriptorProvider<facebook::react::TextComponentDescriptor>());
149
165
  providerRegistry->add(
150
166
  facebook::react::concreteComponentDescriptorProvider<facebook::react::ViewComponentDescriptor>());
167
+ #ifndef CORE_ABI
168
+ providerRegistry->add(
169
+ facebook::react::concreteComponentDescriptorProvider<facebook::react::WindowsTextInputComponentDescriptor>());
170
+ #endif // CORE_ABI
151
171
  return providerRegistry;
152
172
  }();
153
173
 
@@ -161,6 +181,10 @@ void FabricUIManager::installFabricUIManager() noexcept {
161
181
  std::lock_guard<std::mutex> schedulerLock(m_schedulerMutex);
162
182
 
163
183
  facebook::react::ContextContainer::Shared contextContainer = std::make_shared<facebook::react::ContextContainer>();
184
+
185
+ // This allows access to our ReactContext from the contextContainer thats passed around the fabric codebase
186
+ contextContainer->insert("MSRN.ReactContext", m_context);
187
+
164
188
  auto runtimeExecutor = SchedulerSettings::GetRuntimeExecutor(m_context.Properties());
165
189
 
166
190
  // TODO: T31905686 Create synchronous Event Beat
@@ -200,14 +224,15 @@ void FabricUIManager::installFabricUIManager() noexcept {
200
224
  toolbox.runtimeExecutor = runtimeExecutor;
201
225
  toolbox.synchronousEventBeatFactory = synchronousBeatFactory;
202
226
  toolbox.asynchronousEventBeatFactory = asynchronousBeatFactory;
227
+ toolbox.backgroundExecutor = [context = m_context,
228
+ dispatcher = Mso::DispatchQueue::MakeLooperQueue()](std::function<void()> &&callback) {
229
+ if (context.UIDispatcher().HasThreadAccess()) {
230
+ callback();
231
+ return;
232
+ }
203
233
 
204
- /*
205
- if (m_reactNativeConfig->getBool(
206
- "react_fabric:enable_background_executor_android")) {
207
- backgroundExecutor_ = std::make_unique<JBackgroundExecutor>();
208
- toolbox.backgroundExecutor = backgroundExecutor_->get();
209
- }
210
- */
234
+ dispatcher.Post(std::move(callback));
235
+ };
211
236
 
212
237
  m_scheduler = std::make_shared<facebook::react::Scheduler>(
213
238
  toolbox, (/*animationDriver_ ? animationDriver_.get() :*/ nullptr), this);
@@ -223,10 +248,12 @@ void FabricUIManager::startSurface(
223
248
  facebook::react::SurfaceId surfaceId,
224
249
  const std::string &moduleName,
225
250
  const folly::dynamic &initialProps) noexcept {
251
+ #ifndef CORE_ABI
226
252
  auto xamlRootView = static_cast<IXamlRootView *>(rootview);
227
253
  auto rootFE = xamlRootView->GetXamlView().as<xaml::FrameworkElement>();
228
254
 
229
255
  m_surfaceRegistry.insert({surfaceId, xamlRootView->GetXamlView()});
256
+ #endif // CORE_ABI
230
257
 
231
258
  m_context.UIDispatcher().Post([self = shared_from_this(), surfaceId]() {
232
259
  self->m_registry.dequeueComponentViewWithComponentHandle(facebook::react::RootShadowNode::Handle(), surfaceId);
@@ -239,6 +266,7 @@ void FabricUIManager::startSurface(
239
266
  winrt::Windows::Graphics::Display::DisplayInformation::GetForCurrentView().RawPixelsPerViewPixel());
240
267
 
241
268
  facebook::react::LayoutConstraints constraints;
269
+ #ifndef CORE_ABI
242
270
  constraints.minimumSize.height = static_cast<facebook::react::Float>(rootFE.ActualHeight());
243
271
  constraints.minimumSize.width = static_cast<facebook::react::Float>(rootFE.ActualWidth());
244
272
  constraints.maximumSize.height = static_cast<facebook::react::Float>(rootFE.ActualHeight());
@@ -246,6 +274,7 @@ void FabricUIManager::startSurface(
246
274
  constraints.layoutDirection = rootFE.FlowDirection() == xaml::FlowDirection::LeftToRight
247
275
  ? facebook::react::LayoutDirection::LeftToRight
248
276
  : facebook::react::LayoutDirection::RightToLeft;
277
+ #endif // CORE_ABI
249
278
 
250
279
  m_surfaceManager->startSurface(
251
280
  surfaceId,
@@ -276,12 +305,14 @@ void FabricUIManager::constraintSurfaceLayout(
276
305
 
277
306
  void FabricUIManager::didMountComponentsWithRootTag(facebook::react::SurfaceId surfaceId) noexcept {
278
307
  auto rootComponentViewDescriptor = m_registry.componentViewDescriptorWithTag(surfaceId);
308
+ #ifndef CORE_ABI
279
309
  auto children = m_surfaceRegistry.at(surfaceId).as<xaml::Controls::Panel>().Children();
280
310
 
281
311
  uint32_t index;
282
312
  if (!children.IndexOf(static_cast<ViewComponentView &>(*rootComponentViewDescriptor.view).Element(), index)) {
283
313
  children.Append(static_cast<ViewComponentView &>(*rootComponentViewDescriptor.view).Element());
284
314
  }
315
+ #endif // CORE_ABI
285
316
  }
286
317
 
287
318
  struct RemoveDeleteMetadata {
@@ -387,15 +418,19 @@ void FabricUIManager::performTransaction(facebook::react::MountingCoordinator::S
387
418
  auto surfaceId = mountingCoordinator->getSurfaceId();
388
419
 
389
420
  mountingCoordinator->getTelemetryController().pullTransaction(
390
- [&](facebook::react::MountingTransactionMetadata metadata) {
421
+ [&](facebook::react::MountingTransaction const &transaction,
422
+ facebook::react::SurfaceTelemetry const &surfaceTelemetry) {
391
423
  //[self.delegate mountingManager:self willMountComponentsWithRootTag:surfaceId];
392
- //_observerCoordinator.notifyObserversMountingTransactionWillMount(metadata);
424
+ // _observerCoordinator.notifyObserversMountingTransactionWillMount(transaction, surfaceTelemetry);
393
425
  },
394
- [&](facebook::react::ShadowViewMutationList const &mutations) {
395
- RCTPerformMountInstructions(mutations, /* _componentViewRegistry, _observerCoordinator,*/ surfaceId);
426
+ [&](facebook::react::MountingTransaction const &transaction,
427
+ facebook::react::SurfaceTelemetry const &surfaceTelemetry) {
428
+ RCTPerformMountInstructions(
429
+ transaction.getMutations(), /* _componentViewRegistry, _observerCoordinator,*/ surfaceId);
396
430
  },
397
- [&](facebook::react::MountingTransactionMetadata metadata) {
398
- //_observerCoordinator.notifyObserversMountingTransactionDidMount(metadata);
431
+ [&](facebook::react::MountingTransaction const &transaction,
432
+ facebook::react::SurfaceTelemetry const &surfaceTelemetry) {
433
+ //_observerCoordinator.notifyObserversMountingTransactionDidMount(transaction, surfaceTelemetry);
399
434
  didMountComponentsWithRootTag(surfaceId);
400
435
  //[self.delegate mountingManager:self didMountComponentsWithRootTag:surfaceId];
401
436
  });
@@ -476,15 +511,26 @@ void FabricUIManager::schedulerDidDispatchCommand(
476
511
  facebook::react::ShadowView const &shadowView,
477
512
  std::string const &commandName,
478
513
  folly::dynamic const &arg) {
479
- assert(false);
514
+ if (m_context.UIDispatcher().HasThreadAccess()) {
515
+ auto descriptor = m_registry.componentViewDescriptorWithTag(shadowView.tag);
516
+ descriptor.view->handleCommand(commandName, arg);
517
+ } else {
518
+ m_context.UIDispatcher().Post(
519
+ [wkThis = weak_from_this(), commandName, tag = shadowView.tag, args = folly::dynamic(arg)]() {
520
+ if (auto pThis = wkThis.lock()) {
521
+ auto view = pThis->m_registry.findComponentViewWithTag(tag);
522
+ if (view) {
523
+ view->handleCommand(commandName, args);
524
+ }
525
+ }
526
+ });
527
+ }
480
528
  }
481
529
 
482
530
  void FabricUIManager::schedulerDidSetIsJSResponder(
483
531
  facebook::react::ShadowView const &shadowView,
484
532
  bool isJSResponder,
485
- bool blockNativeResponder) {
486
- assert(false);
487
- }
533
+ bool blockNativeResponder) {}
488
534
 
489
535
  void FabricUIManager::schedulerDidSendAccessibilityEvent(
490
536
  const facebook::react::ShadowView &shadowView,
@@ -65,7 +65,9 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
65
65
  bool m_followUpTransactionRequired{false};
66
66
 
67
67
  ComponentViewRegistry m_registry;
68
+ #ifndef CORE_ABI
68
69
  std::unordered_map<facebook::react::SurfaceId, XamlView> m_surfaceRegistry;
70
+ #endif // CORE_ABI
69
71
 
70
72
  // Inherited via SchedulerDelegate
71
73
  virtual void schedulerDidFinishTransaction(
@@ -7,6 +7,7 @@
7
7
  #include "ParagraphComponentView.h"
8
8
 
9
9
  #include <UI.Xaml.Controls.h>
10
+ #include <UI.Xaml.Documents.h>
10
11
  #include <Utils/ValueUtils.h>
11
12
  #include <dwrite.h>
12
13
  #include <react/renderer/components/text/ParagraphShadowNode.h>
@@ -30,14 +31,12 @@ void ParagraphComponentView::mountChildComponentView(
30
31
  uint32_t index) noexcept {
31
32
  auto v = static_cast<const ParagraphComponentView &>(childComponentView);
32
33
  assert(false);
33
- // m_element.Children().InsertAt(index, v.Element());
34
34
  }
35
35
 
36
36
  void ParagraphComponentView::unmountChildComponentView(
37
37
  const IComponentView &childComponentView,
38
38
  uint32_t index) noexcept {
39
39
  assert(false);
40
- // m_element.Children().RemoveAt(index);
41
40
  }
42
41
 
43
42
  void ParagraphComponentView::updateProps(
@@ -99,11 +98,40 @@ void ParagraphComponentView::updateState(
99
98
  facebook::react::State::Shared const &oldState) noexcept {
100
99
  const auto &newState = *std::static_pointer_cast<facebook::react::ParagraphShadowNode::ConcreteState const>(state);
101
100
 
102
- // Only handle single/empty fragments right now -- ignore the other fragments
103
- m_element.Text(
104
- newState.getData().attributedString.getFragments().size()
105
- ? Microsoft::Common::Unicode::Utf8ToUtf16(newState.getData().attributedString.getFragments()[0].string)
106
- : L"");
101
+ m_element.Inlines().Clear();
102
+
103
+ for (const auto &fragment : newState.getData().attributedString.getFragments()) {
104
+ auto inlines = m_element.Inlines();
105
+
106
+ if (auto tdlt = fragment.textAttributes.textDecorationLineType; tdlt &&
107
+ (*tdlt == facebook::react::TextDecorationLineType::Underline ||
108
+ *tdlt == facebook::react::TextDecorationLineType::UnderlineStrikethrough)) {
109
+ auto underline = xaml::Documents::Underline();
110
+ inlines.Append(underline);
111
+ inlines = underline.Inlines();
112
+ }
113
+
114
+ if (fragment.textAttributes.fontStyle == facebook::react::FontStyle::Italic ||
115
+ fragment.textAttributes.fontStyle == facebook::react::FontStyle::Oblique) {
116
+ auto italic = xaml::Documents::Italic();
117
+ inlines.Append(italic);
118
+ inlines = italic.Inlines();
119
+ }
120
+
121
+ auto run = xaml::Documents::Run();
122
+ run.Text(winrt::to_hstring(fragment.string));
123
+ run.FontFamily(xaml::Media::FontFamily(
124
+ fragment.textAttributes.fontFamily.empty() ? L"Segoe UI"
125
+ : winrt::to_hstring(fragment.textAttributes.fontFamily)));
126
+
127
+ run.FontWeight(
128
+ winrt::Windows::UI::Text::FontWeight{static_cast<uint16_t>(fragment.textAttributes.fontWeight.value_or(
129
+ static_cast<facebook::react::FontWeight>(DWRITE_FONT_WEIGHT_REGULAR)))});
130
+
131
+ run.FontSize(fragment.textAttributes.fontSize);
132
+ run.Foreground(fragment.textAttributes.foregroundColor.AsWindowsBrush());
133
+ inlines.Append(run);
134
+ }
107
135
  }
108
136
  void ParagraphComponentView::updateLayoutMetrics(
109
137
  facebook::react::LayoutMetrics const &layoutMetrics,
@@ -118,9 +146,7 @@ void ParagraphComponentView::updateLayoutMetrics(
118
146
  m_element.Width(layoutMetrics.frame.size.width);
119
147
  m_element.Height(layoutMetrics.frame.size.height);
120
148
  }
121
- void ParagraphComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {
122
- // m_element.FinalizeProperties();
123
- }
149
+ void ParagraphComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {}
124
150
  void ParagraphComponentView::prepareForRecycle() noexcept {}
125
151
  facebook::react::SharedProps ParagraphComponentView::props() noexcept {
126
152
  assert(false);
@@ -23,6 +23,8 @@ ScrollViewComponentView::ScrollViewComponentView() {
23
23
  // m_props = defaultProps;
24
24
 
25
25
  m_element.Content(m_contentPanel);
26
+ m_contentPanel.VerticalAlignment(xaml::VerticalAlignment::Top);
27
+ m_contentPanel.HorizontalAlignment(xaml::HorizontalAlignment::Left);
26
28
 
27
29
  m_scrollViewerViewChangingRevoker =
28
30
  m_element.ViewChanging(winrt::auto_revoke, [this](const auto &sender, const auto &args) {
@@ -0,0 +1,107 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+
5
+ #pragma once
6
+
7
+ #include "SliderComponentView.h"
8
+
9
+ #include <UI.Xaml.Controls.Primitives.h>
10
+ #include <Utils/ValueUtils.h>
11
+
12
+ #include <IReactContext.h>
13
+
14
+ #include <react/renderer/components/rnwcore/EventEmitters.h>
15
+
16
+ namespace Microsoft::ReactNative {
17
+
18
+ SliderComponentView::SliderComponentView(winrt::Microsoft::ReactNative::ReactContext const &reactContext)
19
+ : m_context(reactContext), m_element(xaml::Controls::Slider()) {
20
+ m_valueChangedRevoker = m_element.ValueChanged(winrt::auto_revoke, [this](auto sender, auto args) {
21
+ if (m_props->value != m_element.Value()) {
22
+ if (m_eventEmitter) {
23
+ auto emitter = std::static_pointer_cast<const facebook::react::SliderEventEmitter>(m_eventEmitter);
24
+ facebook::react::SliderEventEmitter::OnValueChange onValueChangeArgs;
25
+ onValueChangeArgs.value = m_element.Value();
26
+ emitter->onValueChange(onValueChangeArgs);
27
+ }
28
+ }
29
+ });
30
+
31
+ static auto const defaultProps = std::make_shared<facebook::react::SliderProps const>();
32
+ m_props = defaultProps;
33
+ }
34
+
35
+ std::vector<facebook::react::ComponentDescriptorProvider>
36
+ SliderComponentView::supplementalComponentDescriptorProviders() noexcept {
37
+ return {};
38
+ }
39
+
40
+ void SliderComponentView::mountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept {
41
+ assert(false);
42
+ // m_element->Children().InsertAt(index, static_cast<const BaseComponentView &>(childComponentView).Element());
43
+ }
44
+
45
+ void SliderComponentView::unmountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept {
46
+ assert(false);
47
+ // m_element->Children().RemoveAt(index);
48
+ }
49
+
50
+ void SliderComponentView::updateProps(
51
+ facebook::react::Props::Shared const &props,
52
+ facebook::react::Props::Shared const &oldProps) noexcept {
53
+ const auto &oldSliderProps = *std::static_pointer_cast<const facebook::react::SliderProps>(m_props);
54
+ const auto &newSliderProps = *std::static_pointer_cast<const facebook::react::SliderProps>(props);
55
+
56
+ if (oldSliderProps.value != newSliderProps.value) {
57
+ m_element.Value(newSliderProps.value);
58
+ }
59
+
60
+ if (oldSliderProps.maximumValue != newSliderProps.maximumValue) {
61
+ m_element.Maximum(newSliderProps.maximumValue);
62
+ }
63
+
64
+ if (oldSliderProps.minimumValue != newSliderProps.minimumValue) {
65
+ m_element.Minimum(newSliderProps.minimumValue);
66
+ }
67
+
68
+ if (oldSliderProps.disabled != newSliderProps.disabled) {
69
+ m_element.IsEnabled(!newSliderProps.disabled);
70
+ }
71
+
72
+ // TODO tint colors
73
+
74
+ m_props = std::static_pointer_cast<facebook::react::SliderProps const>(props);
75
+ }
76
+
77
+ void SliderComponentView::updateState(
78
+ facebook::react::State::Shared const &state,
79
+ facebook::react::State::Shared const &oldState) noexcept {}
80
+
81
+ void SliderComponentView::updateLayoutMetrics(
82
+ facebook::react::LayoutMetrics const &layoutMetrics,
83
+ facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
84
+ // Set Position & Size Properties
85
+
86
+ m_layoutMetrics = layoutMetrics;
87
+
88
+ winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_element, layoutMetrics.frame.origin.x);
89
+ winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_element, layoutMetrics.frame.origin.y);
90
+
91
+ m_element.Width(layoutMetrics.frame.size.width);
92
+ m_element.Height(layoutMetrics.frame.size.height);
93
+ }
94
+
95
+ void SliderComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {}
96
+
97
+ void SliderComponentView::prepareForRecycle() noexcept {}
98
+ facebook::react::SharedProps SliderComponentView::props() noexcept {
99
+ assert(false);
100
+ return {};
101
+ }
102
+
103
+ const xaml::FrameworkElement SliderComponentView::Element() const noexcept {
104
+ return m_element;
105
+ }
106
+
107
+ } // namespace Microsoft::ReactNative
@@ -0,0 +1,51 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+
5
+ #pragma once
6
+
7
+ #include "ComponentView.h"
8
+
9
+ #include <Microsoft.ReactNative.Cxx/ReactContext.h>
10
+ #include <UI.Xaml.Controls.h>
11
+ #include <react/renderer/components/rnwcore/Props.h>
12
+ #include "ViewComponentView.h"
13
+
14
+ #pragma warning(push)
15
+ #pragma warning(disable : 4244 4305)
16
+ // #include <react/renderer/components/view/ViewProps.h>
17
+ #pragma warning(pop)
18
+
19
+ namespace Microsoft::ReactNative {
20
+
21
+ struct SliderComponentView : BaseComponentView {
22
+ using Super = BaseComponentView;
23
+ SliderComponentView(winrt::Microsoft::ReactNative::ReactContext const &reactContext);
24
+
25
+ std::vector<facebook::react::ComponentDescriptorProvider> supplementalComponentDescriptorProviders() noexcept
26
+ override;
27
+ void mountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept override;
28
+ void unmountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept override;
29
+ void updateProps(facebook::react::Props::Shared const &props, facebook::react::Props::Shared const &oldProps) noexcept
30
+ override;
31
+ void updateState(facebook::react::State::Shared const &state, facebook::react::State::Shared const &oldState) noexcept
32
+ override;
33
+ void updateLayoutMetrics(
34
+ facebook::react::LayoutMetrics const &layoutMetrics,
35
+ facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept override;
36
+ void finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept override;
37
+ void prepareForRecycle() noexcept override;
38
+ facebook::react::SharedProps props() noexcept override;
39
+
40
+ const xaml::FrameworkElement Element() const noexcept override;
41
+
42
+ private:
43
+ bool m_needsOnLoadStart{false};
44
+ std::shared_ptr<facebook::react::SliderProps const> m_props;
45
+ facebook::react::LayoutMetrics m_layoutMetrics;
46
+ xaml::Controls::Slider m_element;
47
+ xaml::Controls::Slider::ValueChanged_revoker m_valueChangedRevoker;
48
+ winrt::Microsoft::ReactNative::ReactContext m_context;
49
+ };
50
+
51
+ } // namespace Microsoft::ReactNative
@@ -0,0 +1,109 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+
5
+ #pragma once
6
+
7
+ #include "SwitchComponentView.h"
8
+
9
+ #include <Utils/ValueUtils.h>
10
+
11
+ #include <IReactContext.h>
12
+
13
+ #include <react/renderer/components/rnwcore/EventEmitters.h>
14
+
15
+ namespace Microsoft::ReactNative {
16
+
17
+ SwitchComponentView::SwitchComponentView(winrt::Microsoft::ReactNative::ReactContext const &reactContext)
18
+ : m_context(reactContext), m_element(xaml::Controls::ToggleSwitch()) {
19
+ m_element.OnContent(nullptr);
20
+ m_element.OffContent(nullptr);
21
+
22
+ m_toggledRevoker = m_element.Toggled(winrt::auto_revoke, [this](auto sender, auto args) {
23
+ if (m_props->value != m_element.IsOn()) {
24
+ if (m_eventEmitter) {
25
+ auto emitter = std::static_pointer_cast<const facebook::react::SwitchEventEmitter>(m_eventEmitter);
26
+ facebook::react::SwitchEventEmitter::OnChange onChangeArgs;
27
+ onChangeArgs.value = m_element.IsOn();
28
+ emitter->onChange(onChangeArgs);
29
+ }
30
+ }
31
+ });
32
+
33
+ static auto const defaultProps = std::make_shared<facebook::react::SwitchProps const>();
34
+ m_props = defaultProps;
35
+ }
36
+
37
+ void SwitchComponentView::handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept {
38
+ if (commandName == "setValue") {
39
+ m_element.IsOn(arg[0].asBool());
40
+ } else {
41
+ Super::handleCommand(commandName, arg);
42
+ }
43
+ }
44
+
45
+ std::vector<facebook::react::ComponentDescriptorProvider>
46
+ SwitchComponentView::supplementalComponentDescriptorProviders() noexcept {
47
+ return {};
48
+ }
49
+
50
+ void SwitchComponentView::mountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept {
51
+ assert(false);
52
+ // m_element->Children().InsertAt(index, static_cast<const BaseComponentView &>(childComponentView).Element());
53
+ }
54
+
55
+ void SwitchComponentView::unmountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept {
56
+ assert(false);
57
+ // m_element->Children().RemoveAt(index);
58
+ }
59
+
60
+ void SwitchComponentView::updateProps(
61
+ facebook::react::Props::Shared const &props,
62
+ facebook::react::Props::Shared const &oldProps) noexcept {
63
+ const auto &oldSwitchProps = *std::static_pointer_cast<const facebook::react::SwitchProps>(m_props);
64
+ const auto &newSwitchProps = *std::static_pointer_cast<const facebook::react::SwitchProps>(props);
65
+
66
+ if (oldSwitchProps.value != newSwitchProps.value) {
67
+ m_element.IsOn(newSwitchProps.value);
68
+ }
69
+
70
+ if (oldSwitchProps.disabled != newSwitchProps.disabled) {
71
+ m_element.IsEnabled(!newSwitchProps.disabled);
72
+ }
73
+
74
+ // TODO tint colors
75
+
76
+ m_props = std::static_pointer_cast<facebook::react::SwitchProps const>(props);
77
+ }
78
+
79
+ void SwitchComponentView::updateState(
80
+ facebook::react::State::Shared const &state,
81
+ facebook::react::State::Shared const &oldState) noexcept {}
82
+
83
+ void SwitchComponentView::updateLayoutMetrics(
84
+ facebook::react::LayoutMetrics const &layoutMetrics,
85
+ facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
86
+ // Set Position & Size Properties
87
+
88
+ m_layoutMetrics = layoutMetrics;
89
+
90
+ winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_element, layoutMetrics.frame.origin.x);
91
+ winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_element, layoutMetrics.frame.origin.y);
92
+
93
+ m_element.Width(layoutMetrics.frame.size.width);
94
+ m_element.Height(layoutMetrics.frame.size.height);
95
+ }
96
+
97
+ void SwitchComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {}
98
+
99
+ void SwitchComponentView::prepareForRecycle() noexcept {}
100
+ facebook::react::SharedProps SwitchComponentView::props() noexcept {
101
+ assert(false);
102
+ return {};
103
+ }
104
+
105
+ const xaml::FrameworkElement SwitchComponentView::Element() const noexcept {
106
+ return m_element;
107
+ }
108
+
109
+ } // namespace Microsoft::ReactNative
@@ -0,0 +1,52 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+
5
+ #pragma once
6
+
7
+ #include "ComponentView.h"
8
+
9
+ #include <Microsoft.ReactNative.Cxx/ReactContext.h>
10
+ #include <UI.Xaml.Controls.h>
11
+ #include <react/renderer/components/rnwcore/Props.h>
12
+ #include "ViewComponentView.h"
13
+
14
+ #pragma warning(push)
15
+ #pragma warning(disable : 4244 4305)
16
+ // #include <react/renderer/components/view/ViewProps.h>
17
+ #pragma warning(pop)
18
+
19
+ namespace Microsoft::ReactNative {
20
+
21
+ struct SwitchComponentView : BaseComponentView {
22
+ using Super = BaseComponentView;
23
+ SwitchComponentView(winrt::Microsoft::ReactNative::ReactContext const &reactContext);
24
+
25
+ std::vector<facebook::react::ComponentDescriptorProvider> supplementalComponentDescriptorProviders() noexcept
26
+ override;
27
+ void mountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept override;
28
+ void unmountChildComponentView(const IComponentView &childComponentView, uint32_t index) noexcept override;
29
+ void updateProps(facebook::react::Props::Shared const &props, facebook::react::Props::Shared const &oldProps) noexcept
30
+ override;
31
+ void updateState(facebook::react::State::Shared const &state, facebook::react::State::Shared const &oldState) noexcept
32
+ override;
33
+ void updateLayoutMetrics(
34
+ facebook::react::LayoutMetrics const &layoutMetrics,
35
+ facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept override;
36
+ void finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept override;
37
+ void prepareForRecycle() noexcept override;
38
+ facebook::react::SharedProps props() noexcept override;
39
+ void handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept override;
40
+
41
+ const xaml::FrameworkElement Element() const noexcept override;
42
+
43
+ private:
44
+ bool m_needsOnLoadStart{false};
45
+ std::shared_ptr<facebook::react::SwitchProps const> m_props;
46
+ facebook::react::LayoutMetrics m_layoutMetrics;
47
+ xaml::Controls::ToggleSwitch m_element;
48
+ xaml::Controls::ToggleSwitch::Toggled_revoker m_toggledRevoker;
49
+ winrt::Microsoft::ReactNative::ReactContext m_context;
50
+ };
51
+
52
+ } // namespace Microsoft::ReactNative