react-native-windows 0.73.10 → 0.74.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 (773) hide show
  1. package/.flowconfig +12 -7
  2. package/Chakra/ChakraUtils.cpp +5 -10
  3. package/Chakra/ChakraUtils.h +2 -2
  4. package/Common/packages.lock.json +3 -3
  5. package/Directory.Build.props +5 -5
  6. package/Folly/Folly.vcxproj +2 -2
  7. package/Folly/Folly.vcxproj.filters +7 -0
  8. package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +22 -1
  9. package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +4 -1
  10. package/Folly/cgmanifest.json +1 -1
  11. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +6 -0
  12. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +6 -0
  13. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +4 -45
  14. package/Libraries/Alert/Alert.windows.js +2 -3
  15. package/Libraries/Alert/NativeAlertManager.js +4 -26
  16. package/Libraries/Animated/Animated.js +2 -2
  17. package/Libraries/Animated/AnimatedPlatformConfig.js +1 -1
  18. package/Libraries/Animated/NativeAnimatedHelper.js +14 -11
  19. package/Libraries/Animated/NativeAnimatedModule.js +4 -68
  20. package/Libraries/Animated/NativeAnimatedTurboModule.js +4 -69
  21. package/Libraries/Animated/animations/Animation.js +6 -22
  22. package/Libraries/Animated/components/AnimatedFlatList.js +1 -16
  23. package/Libraries/Animated/components/AnimatedScrollView.js +36 -31
  24. package/Libraries/Animated/components/AnimatedSectionList.js +1 -20
  25. package/Libraries/Animated/createAnimatedComponent.js +45 -40
  26. package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
  27. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +1 -1
  28. package/Libraries/Animated/useAnimatedProps.js +21 -1
  29. package/Libraries/AppState/NativeAppState.js +4 -24
  30. package/Libraries/AppTheme/NativeAppTheme.js +4 -25
  31. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  32. package/Libraries/Blob/Blob.js +1 -4
  33. package/Libraries/Blob/BlobManager.js +6 -8
  34. package/Libraries/Blob/File.js +1 -1
  35. package/Libraries/Blob/NativeBlobModule.js +4 -50
  36. package/Libraries/Blob/NativeFileReaderModule.js +4 -13
  37. package/Libraries/BugReporting/NativeBugReporting.js +4 -12
  38. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
  39. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
  40. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
  41. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +3 -2
  42. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
  43. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
  44. package/Libraries/Components/Button.js +103 -107
  45. package/Libraries/Components/Button.windows.js +199 -206
  46. package/Libraries/Components/Clipboard/NativeClipboard.js +3 -11
  47. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +3 -114
  48. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -5
  49. package/Libraries/Components/Keyboard/KeyboardExt.d.ts +8 -8
  50. package/Libraries/Components/Keyboard/KeyboardExt.js +27 -27
  51. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  52. package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +17 -17
  53. package/Libraries/Components/Keyboard/KeyboardExtProps.js +7 -7
  54. package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
  55. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +3 -10
  56. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.android.js +69 -0
  57. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +24 -0
  58. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +33 -0
  59. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +13 -0
  60. package/Libraries/Components/Pressable/Pressable.js +1 -1
  61. package/Libraries/Components/Pressable/Pressable.windows.js +1 -2
  62. package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
  63. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
  64. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
  65. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
  66. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  67. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
  68. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
  69. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
  70. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  71. package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
  72. package/Libraries/Components/ScrollView/ScrollView.js +12 -38
  73. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
  74. package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
  75. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
  76. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
  77. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
  78. package/Libraries/Components/Switch/Switch.js +0 -2
  79. package/Libraries/Components/Switch/Switch.windows.js +0 -2
  80. package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
  81. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
  82. package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
  83. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
  84. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
  85. package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
  86. package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
  87. package/Libraries/Components/TextInput/TextInput.js +65 -32
  88. package/Libraries/Components/TextInput/TextInput.windows.js +87 -38
  89. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +773 -9
  90. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
  91. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  92. package/Libraries/Components/Touchable/Touchable.js +2 -3
  93. package/Libraries/Components/Touchable/Touchable.windows.js +2 -3
  94. package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
  95. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +4 -4
  96. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  97. package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
  98. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +5 -2
  99. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
  100. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
  101. package/Libraries/Components/View/View.js +0 -11
  102. package/Libraries/Components/View/View.windows.js +19 -18
  103. package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  104. package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  105. package/Libraries/Components/View/ViewPropTypes.js +36 -36
  106. package/Libraries/Components/View/ViewPropTypes.windows.js +36 -36
  107. package/Libraries/Core/InitializeCore.js +1 -1
  108. package/Libraries/Core/NativeExceptionsManager.js +3 -93
  109. package/Libraries/Core/ReactNativeVersion.js +12 -6
  110. package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
  111. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
  112. package/Libraries/Core/Timers/NativeTiming.js +3 -16
  113. package/Libraries/Core/registerCallableModule.js +42 -0
  114. package/Libraries/Core/setUpPerformance.js +2 -2
  115. package/Libraries/Core/setUpPerformanceObserver.js +3 -1
  116. package/Libraries/Debugging/DebuggingOverlay.js +111 -0
  117. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  118. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  119. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  120. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
  121. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
  122. package/Libraries/Image/AssetSourceResolver.js +5 -5
  123. package/Libraries/Image/AssetUtils.js +4 -5
  124. package/Libraries/Image/Image.android.js +146 -174
  125. package/Libraries/Image/Image.d.ts +1 -1
  126. package/Libraries/Image/Image.ios.js +53 -79
  127. package/Libraries/Image/Image.windows.js +53 -79
  128. package/Libraries/Image/ImageBackground.js +2 -2
  129. package/Libraries/Image/ImageInjection.js +76 -18
  130. package/Libraries/Image/ImageTypes.flow.js +71 -0
  131. package/Libraries/Image/ImageUtils.js +1 -1
  132. package/Libraries/Image/ImageViewNativeComponent.js +18 -0
  133. package/Libraries/Image/NativeImageEditor.js +3 -42
  134. package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
  135. package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
  136. package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
  137. package/Libraries/Image/NativeImageStoreIOS.js +3 -23
  138. package/Libraries/Image/resolveAssetSource.js +59 -26
  139. package/Libraries/Image/resolveAssetSource.windows.js +148 -0
  140. package/Libraries/Inspector/ElementProperties.js +26 -52
  141. package/Libraries/Inspector/Inspector.js +122 -186
  142. package/Libraries/Inspector/InspectorOverlay.js +21 -33
  143. package/Libraries/Inspector/InspectorPanel.js +3 -17
  144. package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
  145. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
  146. package/Libraries/Interaction/FrameRateLogger.js +8 -18
  147. package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
  148. package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
  149. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
  150. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
  151. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
  152. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
  153. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
  154. package/Libraries/Linking/NativeIntentAndroid.js +3 -20
  155. package/Libraries/Linking/NativeLinkingManager.js +3 -17
  156. package/Libraries/Lists/FillRateHelper.js +1 -1
  157. package/Libraries/Lists/FlatList.d.ts +2 -2
  158. package/Libraries/Lists/FlatList.js +6 -1
  159. package/Libraries/Lists/FlatList.windows.js +717 -0
  160. package/Libraries/Lists/SectionList.d.ts +6 -1
  161. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  162. package/Libraries/Lists/VirtualizeUtils.js +1 -1
  163. package/Libraries/Lists/VirtualizedList.js +1 -1
  164. package/Libraries/Lists/VirtualizedListContext.js +1 -1
  165. package/Libraries/Lists/VirtualizedSectionList.js +1 -1
  166. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  167. package/Libraries/Modal/Modal.js +43 -11
  168. package/Libraries/Modal/NativeModalManager.js +3 -11
  169. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
  170. package/Libraries/MutationObserver/MutationObserver.js +1 -1
  171. package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
  172. package/Libraries/MutationObserver/MutationRecord.js +12 -10
  173. package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
  174. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
  175. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  176. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
  177. package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
  178. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
  179. package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
  180. package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
  181. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
  182. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
  183. package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +11 -0
  184. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
  185. package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
  186. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
  187. package/Libraries/Network/FormData.js +3 -1
  188. package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
  189. package/Libraries/Network/NativeNetworkingIOS.js +4 -28
  190. package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +4 -2
  191. package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +3 -1
  192. package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
  193. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
  194. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  195. package/Libraries/Pressability/Pressability.js +12 -2
  196. package/Libraries/Pressability/Pressability.windows.js +13 -3
  197. package/Libraries/Pressability/usePressability.js +7 -0
  198. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
  199. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
  200. package/Libraries/ReactNative/AppContainer-dev.js +192 -0
  201. package/Libraries/ReactNative/AppContainer-prod.js +53 -0
  202. package/Libraries/ReactNative/AppContainer.js +6 -149
  203. package/Libraries/ReactNative/AppRegistry.js +3 -1
  204. package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
  205. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  206. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
  207. package/Libraries/ReactNative/NativeI18nManager.js +3 -18
  208. package/Libraries/ReactNative/NativeUIManager.js +4 -112
  209. package/Libraries/ReactNative/PaperUIManager.js +8 -7
  210. package/Libraries/ReactNative/PaperUIManager.windows.js +29 -8
  211. package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
  212. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
  213. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
  214. package/Libraries/ReactNative/RendererImplementation.js +11 -0
  215. package/Libraries/ReactNative/UIManager.d.ts +11 -34
  216. package/Libraries/ReactNative/UIManager.js +2 -23
  217. package/Libraries/ReactNative/UIManagerProperties.js +0 -2
  218. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
  219. package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
  220. package/Libraries/ReactNative/renderApplication.js +9 -6
  221. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
  222. package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
  223. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
  224. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
  225. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
  226. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
  227. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
  228. package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
  229. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
  230. package/Libraries/Settings/NativeSettingsManager.js +4 -16
  231. package/Libraries/Share/NativeShareModule.js +3 -13
  232. package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +1 -1
  233. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
  234. package/Libraries/StyleSheet/StyleSheet.js +5 -28
  235. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +47 -7
  236. package/Libraries/StyleSheet/StyleSheetTypes.js +16 -11
  237. package/Libraries/StyleSheet/flattenStyle.js +2 -2
  238. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  239. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  240. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  241. package/Libraries/Text/Text.js +0 -6
  242. package/Libraries/Text/Text.windows.js +0 -6
  243. package/Libraries/Text/TextAncestor.js +2 -3
  244. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
  245. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  246. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  247. package/Libraries/Utilities/DebugEnvironment.js +1 -4
  248. package/Libraries/Utilities/Dimensions.js +8 -16
  249. package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
  250. package/Libraries/Utilities/NativeAppearance.js +3 -26
  251. package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
  252. package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
  253. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
  254. package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
  255. package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
  256. package/Libraries/Utilities/PixelRatio.d.ts +4 -4
  257. package/Libraries/Utilities/Platform.android.js +4 -0
  258. package/Libraries/Utilities/Platform.d.ts +3 -0
  259. package/Libraries/Utilities/Platform.flow.js +7 -0
  260. package/Libraries/Utilities/Platform.flow.windows.js +9 -0
  261. package/Libraries/Utilities/Platform.ios.js +11 -0
  262. package/Libraries/Utilities/Platform.windows.js +6 -0
  263. package/Libraries/Utilities/binaryToBase64.js +1 -1
  264. package/Libraries/Utilities/codegenNativeComponent.js +4 -6
  265. package/Libraries/Utilities/createPerformanceLogger.js +2 -74
  266. package/Libraries/Utilities/useMergeRefs.js +5 -9
  267. package/Libraries/Vibration/NativeVibration.js +3 -14
  268. package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
  269. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  270. package/Libraries/vendor/emitter/EventEmitter.js +1 -0
  271. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +50 -0
  272. package/Microsoft.ReactNative/AsynchronousEventBeat.h +23 -0
  273. package/Microsoft.ReactNative/Base/CoreUIManagers.cpp +4 -0
  274. package/Microsoft.ReactNative/Base/CxxReactIncludes.h +1 -1
  275. package/Microsoft.ReactNative/Base/FollyIncludes.h +2 -2
  276. package/Microsoft.ReactNative/ComponentView.idl +106 -0
  277. package/Microsoft.ReactNative/Composition.Input.idl +16 -2
  278. package/Microsoft.ReactNative/CompositionComponentView.idl +117 -0
  279. package/Microsoft.ReactNative/CompositionContext.idl +1 -1
  280. package/Microsoft.ReactNative/CompositionRootView.idl +8 -0
  281. package/Microsoft.ReactNative/CompositionSwitcher.idl +25 -14
  282. package/Microsoft.ReactNative/DevMenuControl.idl +0 -3
  283. package/Microsoft.ReactNative/DevMenuControl.xaml +0 -15
  284. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +189 -0
  285. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +80 -0
  286. package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +83 -0
  287. package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +83 -0
  288. package/Microsoft.ReactNative/Fabric/AbiState.cpp +71 -0
  289. package/Microsoft.ReactNative/Fabric/AbiState.h +38 -0
  290. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +48 -19
  291. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +8 -16
  292. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +97 -0
  293. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +39 -0
  294. package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +90 -0
  295. package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +87 -0
  296. package/Microsoft.ReactNative/Fabric/ComponentView.cpp +340 -0
  297. package/Microsoft.ReactNative/Fabric/ComponentView.h +130 -64
  298. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +48 -24
  299. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +18 -14
  300. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +42 -27
  301. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.h +3 -1
  302. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +123 -28
  303. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +69 -13
  304. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +651 -284
  305. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +7 -7
  306. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +9 -9
  307. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +120 -31
  308. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +12 -2
  309. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +308 -129
  310. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +34 -6
  311. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +2 -1
  312. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +61 -54
  313. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +0 -9
  314. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +99 -30
  315. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +4 -3
  316. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +273 -28
  317. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +28 -3
  318. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +7 -3
  319. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +4 -0
  320. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +479 -280
  321. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +133 -79
  322. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +113 -0
  323. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +39 -0
  324. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +61 -41
  325. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +19 -14
  326. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentDescriptor.h +39 -0
  327. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +343 -0
  328. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +67 -0
  329. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewShadowNode.cpp +18 -0
  330. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewShadowNode.h +39 -0
  331. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +53 -186
  332. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +20 -12
  333. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +59 -150
  334. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +27 -76
  335. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +81 -32
  336. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +27 -14
  337. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +707 -64
  338. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +47 -26
  339. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +225 -125
  340. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +34 -21
  341. package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +179 -0
  342. package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.h +25 -0
  343. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +110 -115
  344. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +228 -79
  345. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +43 -22
  346. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +18 -0
  347. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +12 -0
  348. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +5 -5
  349. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -1
  350. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +1 -2
  351. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +4 -44
  352. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +11 -9
  353. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +550 -0
  354. package/Microsoft.ReactNative/Fabric/Composition/Theme.h +73 -0
  355. package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +85 -0
  356. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +48 -26
  357. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +6 -2
  358. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +30 -65
  359. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +16 -25
  360. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +72 -88
  361. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +5 -2
  362. package/Microsoft.ReactNative/Fabric/IComponentViewRegistry.h +3 -2
  363. package/Microsoft.ReactNative/Fabric/ReactNativeConfigProperties.cpp +6 -6
  364. package/Microsoft.ReactNative/Fabric/ReactNativeConfigProperties.h +2 -2
  365. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +12 -7
  366. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +28 -19
  367. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.h +5 -0
  368. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +0 -2
  369. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +5 -1
  370. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +2 -4
  371. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Float.h +20 -0
  372. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +86 -0
  373. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorParser.h +38 -0
  374. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/{Color.cpp → PlatformColorUtils.cpp} +7 -77
  375. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.h +12 -0
  376. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -0
  377. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +2 -0
  378. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +6 -87
  379. package/Microsoft.ReactNative/IReactContext.idl +3 -0
  380. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +71 -1
  381. package/Microsoft.ReactNative/JsiApi.cpp +17 -7
  382. package/Microsoft.ReactNative/JsiApi.h +2 -2
  383. package/Microsoft.ReactNative/JsiApi.idl +5 -4
  384. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -22
  385. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +6 -2
  386. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +1 -1
  387. package/Microsoft.ReactNative/Modules/AlertModule.h +2 -2
  388. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +12 -8
  389. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.h +1 -1
  390. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
  391. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +5 -3
  392. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.h +4 -4
  393. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +10 -1
  394. package/Microsoft.ReactNative/Modules/ClipboardModule.h +1 -1
  395. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +71 -38
  396. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +5 -5
  397. package/Microsoft.ReactNative/Modules/ExceptionsManager.cpp +110 -0
  398. package/Microsoft.ReactNative/Modules/ExceptionsManager.h +54 -0
  399. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.h +11 -10
  400. package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +8 -6
  401. package/Microsoft.ReactNative/Modules/LogBoxModule.h +3 -3
  402. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +5 -28
  403. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  404. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +8 -5
  405. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +3 -3
  406. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +49 -0
  407. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +18 -0
  408. package/Microsoft.ReactNative/Modules/SourceCode.cpp +31 -0
  409. package/Microsoft.ReactNative/Modules/SourceCode.h +28 -0
  410. package/Microsoft.ReactNative/Modules/StatusBarManager.h +12 -0
  411. package/Microsoft.ReactNative/Modules/Timing.cpp +325 -0
  412. package/Microsoft.ReactNative/Modules/Timing.h +121 -0
  413. package/Microsoft.ReactNative/QuirkSettings.cpp +32 -0
  414. package/Microsoft.ReactNative/QuirkSettings.h +9 -0
  415. package/Microsoft.ReactNative/QuirkSettings.idl +6 -0
  416. package/Microsoft.ReactNative/ReactCoreInjection.cpp +15 -0
  417. package/Microsoft.ReactNative/ReactCoreInjection.h +4 -0
  418. package/Microsoft.ReactNative/ReactCoreInjection.idl +8 -0
  419. package/Microsoft.ReactNative/ReactHost/IReactInstance.h +1 -1
  420. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +1 -1
  421. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +556 -234
  422. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +36 -9
  423. package/Microsoft.ReactNative/ReactInstanceSettings.idl +3 -0
  424. package/Microsoft.ReactNative/ReactPointerEventArgs.cpp +8 -0
  425. package/Microsoft.ReactNative/ReactPointerEventArgs.h +4 -0
  426. package/Microsoft.ReactNative/ReactPointerEventArgs.idl +12 -0
  427. package/Microsoft.ReactNative/SchedulerSettings.cpp +23 -0
  428. package/Microsoft.ReactNative/SchedulerSettings.h +9 -1
  429. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +41 -0
  430. package/Microsoft.ReactNative/SynchronousEventBeat.h +29 -0
  431. package/Microsoft.ReactNative/Theme.idl +57 -0
  432. package/Microsoft.ReactNative/Timer.cpp +63 -0
  433. package/Microsoft.ReactNative/{CoreAppPage.h → Timer.h} +12 -5
  434. package/Microsoft.ReactNative/Timer.idl +34 -0
  435. package/Microsoft.ReactNative/TurboModulesProvider.cpp +4 -0
  436. package/Microsoft.ReactNative/Utils/ImageUtils.cpp +37 -3
  437. package/Microsoft.ReactNative/Utils/ImageUtils.h +0 -1
  438. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +11 -12
  439. package/Microsoft.ReactNative/Utils/LocalBundleReader.h +3 -3
  440. package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +33 -0
  441. package/Microsoft.ReactNative/Utils/ThemeUtils.h +13 -0
  442. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +0 -5
  443. package/Microsoft.ReactNative/Utils/ValueUtils.h +0 -3
  444. package/Microsoft.ReactNative/ViewProps.idl +17 -0
  445. package/Microsoft.ReactNative/Views/ActivityIndicatorViewManager.cpp +1 -0
  446. package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.cpp +54 -0
  447. package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.h +30 -0
  448. package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -20
  449. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +157 -0
  450. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +5 -0
  451. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +20 -0
  452. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +4 -0
  453. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +1 -5
  454. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +137 -0
  455. package/Microsoft.ReactNative/Views/ICompositionRootView.h +0 -1
  456. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +0 -5
  457. package/Microsoft.ReactNative/Views/PopupViewManager.cpp +1 -5
  458. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +11 -0
  459. package/Microsoft.ReactNative/Views/ShadowNodeBase.h +3 -4
  460. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +0 -6
  461. package/Microsoft.ReactNative/Views/TextViewManager.cpp +0 -11
  462. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
  463. package/Microsoft.ReactNative/Views/UnimplementedViewManager.cpp +79 -0
  464. package/Microsoft.ReactNative/Views/UnimplementedViewManager.h +27 -0
  465. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +46 -0
  466. package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
  467. package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +77 -2
  468. package/Microsoft.ReactNative/microsoft.reactnative.def +0 -3
  469. package/Microsoft.ReactNative/packages.lock.json +9 -6
  470. package/{Shared/Composition → Microsoft.ReactNative.Cxx}/AutoDraw.h +2 -0
  471. package/{Shared/Composition → Microsoft.ReactNative.Cxx}/CompositionSwitcher.interop.h +4 -10
  472. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -5
  473. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +5 -0
  474. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +19 -10
  475. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +2 -0
  476. package/Microsoft.ReactNative.Cxx/JSValueComposition.h +22 -0
  477. package/Microsoft.ReactNative.Cxx/JSValueReader.h +19 -0
  478. package/Microsoft.ReactNative.Cxx/JSValueXaml.h +1 -1
  479. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +6 -4
  480. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +0 -1
  481. package/Microsoft.ReactNative.Cxx/NativeModules.h +15 -15
  482. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +1 -1
  483. package/Microsoft.ReactNative.Managed/ReactSettingsSnapshot.cs +2 -0
  484. package/Microsoft.ReactNative.Managed/packages.lock.json +6 -3
  485. package/Microsoft.ReactNative.Managed.CodeGen/Microsoft.ReactNative.Managed.CodeGen.csproj +0 -1
  486. package/Mso/future/details/executor.h +1 -1
  487. package/Mso/src/debugAssertApi/debugAssertApi.cpp +1 -1
  488. package/PropertySheets/External/Microsoft.ReactNative.Composition.Common.props +8 -0
  489. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppLib.props +24 -0
  490. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppLib.targets +20 -0
  491. package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +1 -1
  492. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +2 -0
  493. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  494. package/PropertySheets/JSEngine.props +0 -8
  495. package/PropertySheets/React.Cpp.props +14 -3
  496. package/PropertySheets/ReactCommunity.cpp.props +2 -2
  497. package/PropertySheets/Release.props +0 -1
  498. package/PropertySheets/WinUI.props +21 -1
  499. package/PropertySheets/x64.props +3 -0
  500. package/PropertySheets/x86.props +3 -0
  501. package/ReactCommon/ReactCommon.vcxproj +13 -8
  502. package/ReactCommon/ReactCommon.vcxproj.filters +12 -1
  503. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +114 -19
  504. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +66 -0
  505. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +114 -52
  506. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +13 -15
  507. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +535 -0
  508. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +437 -0
  509. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +39 -0
  510. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +31 -0
  511. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +19 -24
  512. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +600 -980
  513. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +5 -11
  514. package/ReactCommon/cgmanifest.json +1 -1
  515. package/Scripts/EnableInternalWinAppSDKFeed.ps1 +21 -0
  516. package/Scripts/IntegrationTests.ps1 +26 -15
  517. package/Scripts/Microsoft.ReactNative.targets +0 -6
  518. package/Scripts/OfficeReact.Win32.nuspec +1 -2
  519. package/Scripts/TestServers.ps1 +2 -28
  520. package/Scripts/Tfs/Start-TestServers.ps1 +1 -21
  521. package/Scripts/Tfs/Stop-TestServers.ps1 +0 -5
  522. package/Scripts/rnw-dependencies.ps1 +38 -67
  523. package/Shared/CreateInstance.h +25 -0
  524. package/Shared/DevServerHelper.h +0 -3
  525. package/Shared/DevSettings.h +9 -0
  526. package/Shared/HermesRuntimeHolder.cpp +17 -0
  527. package/Shared/HermesRuntimeHolder.h +17 -0
  528. package/Shared/HermesSamplingProfiler.cpp +12 -10
  529. package/Shared/HermesSamplingProfiler.h +5 -4
  530. package/Shared/IDevSupportManager.h +4 -2
  531. package/Shared/InstanceManager.cpp +13 -11
  532. package/Shared/InstanceManager.h +8 -18
  533. package/Shared/JSI/ChakraRuntime.cpp +66 -9
  534. package/Shared/JSI/ChakraRuntime.h +8 -0
  535. package/Shared/JSI/JSExecutorFactoryDelegate.h +12 -0
  536. package/Shared/JSI/JSExecutorFactorySettings.cpp +30 -0
  537. package/Shared/JSI/JSExecutorFactorySettings.h +21 -0
  538. package/Shared/Modules/BlobModule.h +1 -1
  539. package/Shared/Modules/FileReaderModule.h +1 -1
  540. package/Shared/Modules/HttpModule.h +1 -1
  541. package/Shared/Modules/WebSocketTurboModule.h +1 -1
  542. package/Shared/Networking/OriginPolicyHttpFilter.cpp +19 -23
  543. package/Shared/Networking/OriginPolicyHttpFilter.h +4 -7
  544. package/Shared/Networking/WinRTHttpResource.cpp +2 -4
  545. package/Shared/OInstance.cpp +212 -165
  546. package/Shared/OInstance.h +19 -0
  547. package/Shared/Shared.vcxitems +134 -50
  548. package/Shared/Shared.vcxitems.filters +81 -24
  549. package/Shared/Utils.cpp +12 -10
  550. package/Shared/Utils.h +2 -2
  551. package/Shared/WebSocketJSExecutorFactory.h +1 -0
  552. package/codegen/NativeBugReportingSpec.g.h +0 -6
  553. package/codegen/NativeFrameRateLoggerSpec.g.h +0 -2
  554. package/codegen/NativeImageLoaderAndroidSpec.g.h +10 -23
  555. package/codegen/NativePerformanceObserverSpec.g.h +6 -0
  556. package/codegen/NativePlatformConstantsIOSSpec.g.h +2 -0
  557. package/codegen/NativePlatformConstantsWinSpec.g.h +17 -0
  558. package/codegen/NativePushNotificationManagerIOSSpec.g.h +8 -6
  559. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +88 -0
  560. package/codegen/NativeUIManagerSpec.g.h +83 -95
  561. package/codegen/react/components/rnwcore/ComponentDescriptors.h +10 -7
  562. package/codegen/react/components/rnwcore/EventEmitters.cpp +40 -52
  563. package/codegen/react/components/rnwcore/EventEmitters.h +66 -84
  564. package/codegen/react/components/rnwcore/Props.cpp +60 -95
  565. package/codegen/react/components/rnwcore/Props.h +198 -239
  566. package/codegen/react/components/rnwcore/ShadowNodes.cpp +6 -7
  567. package/codegen/react/components/rnwcore/ShadowNodes.h +38 -29
  568. package/codegen/react/components/rnwcore/States.cpp +3 -5
  569. package/codegen/react/components/rnwcore/States.h +29 -16
  570. package/codegen/rnwcoreJSI-generated.cpp +1442 -1398
  571. package/codegen/rnwcoreJSI.h +6066 -3593
  572. package/index.js +66 -99
  573. package/index.windows.js +60 -102
  574. package/jest/assetFileTransformer.js +1 -1
  575. package/jest/local-setup.js +0 -5
  576. package/jest/mockModal.js +2 -1
  577. package/jest/mockScrollView.js +1 -2
  578. package/jest/renderer.js +1 -1
  579. package/jest/setup.js +6 -3
  580. package/just-task.js +1 -1
  581. package/package.json +30 -29
  582. package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
  583. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
  584. package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
  585. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
  586. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
  587. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  588. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  589. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
  590. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  591. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  592. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  593. package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +47 -0
  594. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  595. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  596. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  597. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
  598. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  599. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  600. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  601. package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
  602. package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
  603. package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
  604. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  605. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  606. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  607. package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
  608. package/src/private/specs/modules/NativeAppState.js +33 -0
  609. package/src/private/specs/modules/NativeAppTheme.js +33 -0
  610. package/src/private/specs/modules/NativeAppearance.js +36 -0
  611. package/src/private/specs/modules/NativeBlobModule.js +59 -0
  612. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  613. package/src/private/specs/modules/NativeClipboard.js +21 -0
  614. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  615. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  616. package/src/private/specs/modules/NativeDevSettings.js +33 -0
  617. package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
  618. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  619. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  620. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  621. package/{Libraries/Alert → src/private/specs/modules}/NativeDialogManagerWindows.js +5 -4
  622. package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
  623. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  624. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  625. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  626. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  627. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  628. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  629. package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
  630. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  631. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  632. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  633. package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
  634. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  635. package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
  636. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  637. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  638. package/src/private/specs/modules/NativeLogBox.js +20 -0
  639. package/src/private/specs/modules/NativeModalManager.js +21 -0
  640. package/src/private/specs/modules/NativeMutationObserver.js +58 -0
  641. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  642. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  643. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  644. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  645. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  646. package/src/private/specs/modules/NativePlatformConstantsWin.js +38 -0
  647. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
  648. package/src/private/specs/modules/NativeRedBox.js +20 -0
  649. package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
  650. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  651. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  652. package/src/private/specs/modules/NativeShareModule.js +23 -0
  653. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  654. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  655. package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
  656. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  657. package/src/private/specs/modules/NativeTiming.js +26 -0
  658. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  659. package/src/private/specs/modules/NativeUIManager.js +118 -0
  660. package/src/private/specs/modules/NativeVibration.js +24 -0
  661. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  662. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
  663. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
  664. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
  665. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
  666. package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
  667. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
  668. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
  669. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
  670. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
  671. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
  672. package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
  673. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
  674. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
  675. package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
  676. package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
  677. package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
  678. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
  679. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
  680. package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
  681. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
  682. package/template/cpp-app/src/App.cpp +2 -2
  683. package/template/cs-app/src/App.xaml.cs +2 -2
  684. package/templates/cpp-app/jest.config.windows.js +3 -0
  685. package/templates/cpp-app/metro.config.js +0 -2
  686. package/templates/cpp-app/template.config.js +24 -9
  687. package/templates/cpp-app/windows/ExperimentalFeatures.props +1 -1
  688. package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.cpp +13 -0
  689. package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.h +10 -0
  690. package/templates/cpp-app/windows/MyApp/MyApp.cpp +134 -249
  691. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +12 -11
  692. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +6 -3
  693. package/templates/cpp-app/windows/MyApp/pch.h +12 -9
  694. package/templates/cpp-app/windows/MyApp/resource.h +0 -1
  695. package/templates/cpp-app/windows/MyApp.sln +26 -26
  696. package/templates/cpp-lib/example/metro.config.js +74 -0
  697. package/templates/cpp-lib/template.config.js +235 -0
  698. package/templates/cpp-lib/windows/ExperimentalFeatures.props +11 -0
  699. package/templates/cpp-lib/windows/MyLib/MyLib.cpp +18 -0
  700. package/templates/cpp-lib/windows/MyLib/MyLib.def +3 -0
  701. package/templates/cpp-lib/windows/MyLib/MyLib.h +31 -0
  702. package/templates/cpp-lib/windows/MyLib/MyLib.rc +0 -0
  703. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +148 -0
  704. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj.filters +44 -0
  705. package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.cpp +20 -0
  706. package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.h +24 -0
  707. package/templates/cpp-lib/windows/MyLib/ReactPackageProvider.idl +9 -0
  708. package/templates/cpp-lib/windows/MyLib/pch.cpp +1 -0
  709. package/templates/cpp-lib/windows/MyLib/pch.h +30 -0
  710. package/templates/cpp-lib/windows/MyLib/resource.h +5 -0
  711. package/templates/cpp-lib/windows/MyLib/targetver.h +8 -0
  712. package/templates/cpp-lib/windows/MyLib.sln +156 -0
  713. package/templates/cpp-lib/windows/_gitignore +41 -0
  714. package/templates/templateUtils.js +137 -0
  715. package/types/modules/globals.d.ts +1 -0
  716. package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +0 -1016
  717. package/Libraries/Components/Button.flow.js +0 -265
  718. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.windows.js +0 -8
  719. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +0 -14
  720. package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +0 -34
  721. package/Libraries/Components/ScrollView/ScrollView.windows.js +0 -1941
  722. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
  723. package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +0 -45
  724. package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
  725. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
  726. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
  727. package/Libraries/Image/Image.flow.js +0 -64
  728. package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
  729. package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
  730. package/Libraries/Settings/Settings.windows.js +0 -28
  731. package/Microsoft.ReactNative/CoreApp.cpp +0 -303
  732. package/Microsoft.ReactNative/CoreAppPage.cpp +0 -21
  733. package/Microsoft.ReactNative/CoreAppPage.idl +0 -12
  734. package/Microsoft.ReactNative/CoreAppPage.xaml +0 -14
  735. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +0 -197
  736. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +0 -84
  737. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/EventEmitters.h +0 -5
  738. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/Props.h +0 -5
  739. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/ShadowNodes.h +0 -5
  740. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rnwcore/States.h +0 -5
  741. package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +0 -245
  742. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +0 -134
  743. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +0 -27
  744. package/Microsoft.ReactNative/Modules/TimingModule.cpp +0 -229
  745. package/Microsoft.ReactNative/Modules/TimingModule.h +0 -88
  746. package/Microsoft.ReactNative.Cxx/CoreApp.h +0 -60
  747. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.cpp +0 -60
  748. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/LongLivedObject.h +0 -60
  749. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +0 -63
  750. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +0 -1038
  751. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +0 -503
  752. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +0 -895
  753. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBufferBuilder.cpp +0 -182
  754. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +0 -543
  755. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +0 -1505
  756. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +0 -67
  757. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -93
  758. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -88
  759. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -606
  760. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +0 -344
  761. package/ReactCommon/Yoga.cpp +0 -961
  762. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
  763. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
  764. /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
  765. /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
  766. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
  767. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
  768. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
  769. /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
  770. /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
  771. /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
  772. /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
  773. /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
@@ -1,961 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- #include <yoga/Yoga-internal.h>
9
- #include "Yoga.h"
10
- #include <yoga/algorithm/Cache.h>
11
- #include <yoga/algorithm/CalculateLayout.h>
12
- #include <yoga/algorithm/PixelGrid.h>
13
- #include <yoga/debug/AssertFatal.h>
14
- #include <yoga/debug/Log.h>
15
- #include <yoga/debug/NodeToString.h>
16
- #include <yoga/event/event.h>
17
- #include <yoga/node/Node.h>
18
-
19
- using namespace facebook;
20
- using namespace facebook::yoga;
21
-
22
- bool YGFloatIsUndefined(const float value) {
23
- return yoga::isUndefined(value);
24
- }
25
-
26
- void* YGNodeGetContext(YGNodeConstRef node) {
27
- return resolveRef(node)->getContext();
28
- }
29
-
30
- void YGNodeSetContext(YGNodeRef node, void* context) {
31
- return resolveRef(node)->setContext(context);
32
- }
33
-
34
- YGConfigConstRef YGNodeGetConfig(YGNodeRef node) {
35
- return resolveRef(node)->getConfig();
36
- }
37
-
38
- void YGNodeSetConfig(YGNodeRef node, YGConfigRef config) {
39
- resolveRef(node)->setConfig(resolveRef(config));
40
- }
41
-
42
- bool YGNodeHasMeasureFunc(YGNodeConstRef node) {
43
- return resolveRef(node)->hasMeasureFunc();
44
- }
45
-
46
- void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc) {
47
- resolveRef(node)->setMeasureFunc(measureFunc);
48
- }
49
-
50
- bool YGNodeHasBaselineFunc(YGNodeConstRef node) {
51
- return resolveRef(node)->hasBaselineFunc();
52
- }
53
-
54
- void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc) {
55
- resolveRef(node)->setBaselineFunc(baselineFunc);
56
- }
57
-
58
- YGDirtiedFunc YGNodeGetDirtiedFunc(YGNodeConstRef node) {
59
- return resolveRef(node)->getDirtiedFunc();
60
- }
61
-
62
- void YGNodeSetDirtiedFunc(YGNodeRef node, YGDirtiedFunc dirtiedFunc) {
63
- resolveRef(node)->setDirtiedFunc(dirtiedFunc);
64
- }
65
-
66
- void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc) {
67
- resolveRef(node)->setPrintFunc(printFunc);
68
- }
69
-
70
- bool YGNodeGetHasNewLayout(YGNodeConstRef node) {
71
- return resolveRef(node)->getHasNewLayout();
72
- }
73
-
74
- void YGConfigSetPrintTreeFlag(YGConfigRef config, bool enabled) {
75
- resolveRef(config)->setShouldPrintTree(enabled);
76
- }
77
-
78
- void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout) {
79
- resolveRef(node)->setHasNewLayout(hasNewLayout);
80
- }
81
-
82
- YGNodeType YGNodeGetNodeType(YGNodeConstRef node) {
83
- return unscopedEnum(resolveRef(node)->getNodeType());
84
- }
85
-
86
- void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType) {
87
- return resolveRef(node)->setNodeType(scopedEnum(nodeType));
88
- }
89
-
90
- bool YGNodeIsDirty(YGNodeConstRef node) {
91
- return resolveRef(node)->isDirty();
92
- }
93
-
94
- void YGNodeMarkDirtyAndPropagateToDescendants(const YGNodeRef node) {
95
- return resolveRef(node)->markDirtyAndPropagateDownwards();
96
- }
97
-
98
- YGNodeRef YGNodeNewWithConfig(const YGConfigConstRef config) {
99
- auto* node = new yoga::Node{resolveRef(config)};
100
- yoga::assertFatal(
101
- config != nullptr, "Tried to construct YGNode with null config");
102
- Event::publish<Event::NodeAllocation>(node, {config});
103
-
104
- return node;
105
- }
106
-
107
- YGConfigConstRef YGConfigGetDefault() {
108
- return &yoga::Config::getDefault();
109
- }
110
-
111
- YGNodeRef YGNodeNew(void) {
112
- return YGNodeNewWithConfig(YGConfigGetDefault());
113
- }
114
-
115
- YGNodeRef YGNodeClone(YGNodeConstRef oldNodeRef) {
116
- auto oldNode = resolveRef(oldNodeRef);
117
- const auto node = new yoga::Node(*oldNode);
118
- yoga::assertFatalWithConfig(
119
- oldNode->getConfig(),
120
- node != nullptr,
121
- "Could not allocate memory for node");
122
- Event::publish<Event::NodeAllocation>(node, {node->getConfig()});
123
- node->setOwner(nullptr);
124
- return node;
125
- }
126
-
127
- void YGNodeFree(const YGNodeRef nodeRef) {
128
- const auto node = resolveRef(nodeRef);
129
-
130
- if (auto owner = node->getOwner()) {
131
- owner->removeChild(node);
132
- node->setOwner(nullptr);
133
- }
134
-
135
- const size_t childCount = node->getChildCount();
136
- for (size_t i = 0; i < childCount; i++) {
137
- auto child = node->getChild(i);
138
- child->setOwner(nullptr);
139
- }
140
-
141
- node->clearChildren();
142
- YGNodeDeallocate(node);
143
- }
144
-
145
- void YGNodeDeallocate(const YGNodeRef node) {
146
- Event::publish<Event::NodeDeallocation>(node, {YGNodeGetConfig(node)});
147
- delete resolveRef(node);
148
- }
149
-
150
- void YGNodeFreeRecursiveWithCleanupFunc(
151
- const YGNodeRef rootRef,
152
- YGNodeCleanupFunc cleanup) {
153
- const auto root = resolveRef(rootRef);
154
-
155
- size_t skipped = 0;
156
- while (root->getChildCount() > skipped) {
157
- const auto child = root->getChild(skipped);
158
- if (child->getOwner() != root) {
159
- // Don't free shared nodes that we don't own.
160
- skipped += 1;
161
- } else {
162
- YGNodeRemoveChild(root, child);
163
- YGNodeFreeRecursive(child);
164
- }
165
- }
166
- if (cleanup != nullptr) {
167
- cleanup(root);
168
- }
169
- YGNodeFree(root);
170
- }
171
-
172
- void YGNodeFreeRecursive(const YGNodeRef root) {
173
- return YGNodeFreeRecursiveWithCleanupFunc(root, nullptr);
174
- }
175
-
176
- void YGNodeReset(YGNodeRef node) {
177
- resolveRef(node)->reset();
178
- }
179
-
180
- YGConfigRef YGConfigNew(void) {
181
- return new yoga::Config(getDefaultLogger());
182
- }
183
-
184
- void YGConfigFree(const YGConfigRef config) {
185
- delete resolveRef(config);
186
- }
187
-
188
- void YGNodeSetIsReferenceBaseline(YGNodeRef nodeRef, bool isReferenceBaseline) {
189
- const auto node = resolveRef(nodeRef);
190
- if (node->isReferenceBaseline() != isReferenceBaseline) {
191
- node->setIsReferenceBaseline(isReferenceBaseline);
192
- node->markDirtyAndPropagate();
193
- }
194
- }
195
-
196
- bool YGNodeIsReferenceBaseline(YGNodeConstRef node) {
197
- return resolveRef(node)->isReferenceBaseline();
198
- }
199
-
200
- void YGNodeInsertChild(
201
- const YGNodeRef ownerRef,
202
- const YGNodeRef childRef,
203
- const size_t index) {
204
- auto owner = resolveRef(ownerRef);
205
- auto child = resolveRef(childRef);
206
-
207
- yoga::assertFatalWithNode(
208
- owner,
209
- child->getOwner() == nullptr,
210
- "Child already has a owner, it must be removed first.");
211
-
212
- yoga::assertFatalWithNode(
213
- owner,
214
- !owner->hasMeasureFunc(),
215
- "Cannot add child: Nodes with measure functions cannot have children.");
216
-
217
- owner->insertChild(child, index);
218
- child->setOwner(owner);
219
- owner->markDirtyAndPropagate();
220
- }
221
-
222
- void YGNodeSwapChild(
223
- const YGNodeRef ownerRef,
224
- const YGNodeRef childRef,
225
- const size_t index) {
226
- auto owner = resolveRef(ownerRef);
227
- auto child = resolveRef(childRef);
228
-
229
- owner->replaceChild(child, index);
230
- child->setOwner(owner);
231
- }
232
-
233
- void YGNodeRemoveChild(
234
- const YGNodeRef ownerRef,
235
- const YGNodeRef excludedChildRef) {
236
- auto owner = resolveRef(ownerRef);
237
- auto excludedChild = resolveRef(excludedChildRef);
238
-
239
- if (owner->getChildCount() == 0) {
240
- // This is an empty set. Nothing to remove.
241
- return;
242
- }
243
-
244
- // Children may be shared between parents, which is indicated by not having an
245
- // owner. We only want to reset the child completely if it is owned
246
- // exclusively by one node.
247
- auto childOwner = excludedChild->getOwner();
248
- if (owner->removeChild(excludedChild)) {
249
- if (owner == childOwner) {
250
- excludedChild->setLayout({}); // layout is no longer valid
251
- excludedChild->setOwner(nullptr);
252
- }
253
- owner->markDirtyAndPropagate();
254
- }
255
- }
256
-
257
- void YGNodeRemoveAllChildren(const YGNodeRef ownerRef) {
258
- auto owner = resolveRef(ownerRef);
259
-
260
- const size_t childCount = owner->getChildCount();
261
- if (childCount == 0) {
262
- // This is an empty set already. Nothing to do.
263
- return;
264
- }
265
- auto* firstChild = owner->getChild(0);
266
- if (firstChild->getOwner() == owner) {
267
- // If the first child has this node as its owner, we assume that this child
268
- // set is unique.
269
- for (size_t i = 0; i < childCount; i++) {
270
- yoga::Node* oldChild = owner->getChild(i);
271
- oldChild->setLayout({}); // layout is no longer valid
272
- oldChild->setOwner(nullptr);
273
- }
274
- owner->clearChildren();
275
- owner->markDirtyAndPropagate();
276
- return;
277
- }
278
- // Otherwise, we are not the owner of the child set. We don't have to do
279
- // anything to clear it.
280
- owner->setChildren({});
281
- owner->markDirtyAndPropagate();
282
- }
283
-
284
- void YGNodeSetChildren(
285
- const YGNodeRef ownerRef,
286
- const YGNodeRef* childrenRefs,
287
- const size_t count) {
288
- auto owner = resolveRef(ownerRef);
289
- auto children = reinterpret_cast<yoga::Node* const*>(childrenRefs);
290
-
291
- if (!owner) {
292
- return;
293
- }
294
-
295
- const std::vector<yoga::Node*> childrenVector = {children, children + count};
296
- if (childrenVector.size() == 0) {
297
- if (owner->getChildCount() > 0) {
298
- for (auto* child : owner->getChildren()) {
299
- child->setLayout({});
300
- child->setOwner(nullptr);
301
- }
302
- owner->setChildren({});
303
- owner->markDirtyAndPropagate();
304
- }
305
- } else {
306
- if (owner->getChildCount() > 0) {
307
- for (auto* oldChild : owner->getChildren()) {
308
- // Our new children may have nodes in common with the old children. We
309
- // don't reset these common nodes.
310
- if (std::find(childrenVector.begin(), childrenVector.end(), oldChild) ==
311
- childrenVector.end()) {
312
- oldChild->setLayout({});
313
- oldChild->setOwner(nullptr);
314
- }
315
- }
316
- }
317
- owner->setChildren(childrenVector);
318
- for (yoga::Node* child : childrenVector) {
319
- child->setOwner(owner);
320
- }
321
- owner->markDirtyAndPropagate();
322
- }
323
- }
324
-
325
- YGNodeRef YGNodeGetChild(const YGNodeRef nodeRef, const size_t index) {
326
- const auto node = resolveRef(nodeRef);
327
-
328
- if (index < node->getChildren().size()) {
329
- return node->getChild(index);
330
- }
331
- return nullptr;
332
- }
333
-
334
- size_t YGNodeGetChildCount(const YGNodeConstRef node) {
335
- return resolveRef(node)->getChildren().size();
336
- }
337
-
338
- YGNodeRef YGNodeGetOwner(const YGNodeRef node) {
339
- return resolveRef(node)->getOwner();
340
- }
341
-
342
- YGNodeRef YGNodeGetParent(const YGNodeRef node) {
343
- return resolveRef(node)->getOwner();
344
- }
345
-
346
- void YGNodeMarkDirty(const YGNodeRef nodeRef) {
347
- const auto node = resolveRef(nodeRef);
348
-
349
- yoga::assertFatalWithNode(
350
- node,
351
- node->hasMeasureFunc(),
352
- "Only leaf nodes with custom measure functions "
353
- "should manually mark themselves as dirty");
354
-
355
- node->markDirtyAndPropagate();
356
- }
357
-
358
- void YGNodeCopyStyle(
359
- const YGNodeRef dstNodeRef,
360
- const YGNodeConstRef srcNodeRef) {
361
- auto dstNode = resolveRef(dstNodeRef);
362
- auto srcNode = resolveRef(srcNodeRef);
363
-
364
- if (!(dstNode->getStyle() == srcNode->getStyle())) {
365
- dstNode->setStyle(srcNode->getStyle());
366
- dstNode->markDirtyAndPropagate();
367
- }
368
- }
369
-
370
- float YGNodeStyleGetFlexGrow(const YGNodeConstRef nodeRef) {
371
- const auto node = resolveRef(nodeRef);
372
- return node->getStyle().flexGrow().isUndefined()
373
- ? Style::DefaultFlexGrow
374
- : node->getStyle().flexGrow().unwrap();
375
- }
376
-
377
- float YGNodeStyleGetFlexShrink(const YGNodeConstRef nodeRef) {
378
- const auto node = resolveRef(nodeRef);
379
- return node->getStyle().flexShrink().isUndefined()
380
- ? (node->getConfig()->useWebDefaults() ? Style::WebDefaultFlexShrink
381
- : Style::DefaultFlexShrink)
382
- : node->getStyle().flexShrink().unwrap();
383
- }
384
-
385
- namespace {
386
-
387
- template <typename T, typename NeedsUpdate, typename Update>
388
- void updateStyle(
389
- yoga::Node* node,
390
- T value,
391
- NeedsUpdate &&needsUpdate,
392
- Update &&update) {
393
- if (needsUpdate(node->getStyle(), value)) {
394
- update(node->getStyle(), value);
395
- node->markDirtyAndPropagate();
396
- }
397
- }
398
-
399
- template <typename Ref, typename T>
400
- void updateStyle(YGNodeRef node, Ref (Style::*prop)(), T value) {
401
- updateStyle(
402
- resolveRef(node),
403
- value,
404
- [prop](Style& s, T x) { return (s.*prop)() != x; },
405
- [prop](Style& s, T x) { (s.*prop)() = x; });
406
- }
407
-
408
- template <typename Ref, typename Idx>
409
- void updateIndexedStyleProp(
410
- YGNodeRef node,
411
- Ref (Style::*prop)(),
412
- Idx idx,
413
- CompactValue value) {
414
- updateStyle(
415
- resolveRef(node),
416
- value,
417
- [idx, prop](Style& s, CompactValue x) { return (s.*prop)()[idx] != x; },
418
- [idx, prop](Style& s, CompactValue x) { (s.*prop)()[idx] = x; });
419
- }
420
-
421
- template <auto GetterT, auto SetterT, typename IdxT>
422
- void updateIndexedStyleProp(YGNodeRef node, IdxT idx, CompactValue value) {
423
- updateStyle(
424
- resolveRef(node),
425
- value,
426
- [idx](Style& s, CompactValue x) { return (s.*GetterT)(idx) != x; },
427
- [idx](Style& s, CompactValue x) { (s.*SetterT)(idx, x); });
428
- }
429
-
430
- } // namespace
431
-
432
- // MSVC has trouble inferring the return type of pointer to member functions
433
- // with const and non-const overloads, instead of preferring the non-const
434
- // overload like clang and GCC. For the purposes of updateStyle(), we can help
435
- // MSVC by specifying that return type explicitly. In combination with
436
- // decltype, MSVC will prefer the non-const version.
437
- #define MSVC_HINT(PROP) decltype(Style{}.PROP())
438
-
439
- void YGNodeStyleSetDirection(const YGNodeRef node, const YGDirection value) {
440
- updateStyle<MSVC_HINT(direction)>(node, &Style::direction, scopedEnum(value));
441
- }
442
- YGDirection YGNodeStyleGetDirection(const YGNodeConstRef node) {
443
- return unscopedEnum(resolveRef(node)->getStyle().direction());
444
- }
445
-
446
- void YGNodeStyleSetFlexDirection(
447
- const YGNodeRef node,
448
- const YGFlexDirection flexDirection) {
449
- updateStyle<MSVC_HINT(flexDirection)>(
450
- node, &Style::flexDirection, scopedEnum(flexDirection));
451
- }
452
- YGFlexDirection YGNodeStyleGetFlexDirection(const YGNodeConstRef node) {
453
- return unscopedEnum(resolveRef(node)->getStyle().flexDirection());
454
- }
455
-
456
- void YGNodeStyleSetJustifyContent(
457
- const YGNodeRef node,
458
- const YGJustify justifyContent) {
459
- updateStyle<MSVC_HINT(justifyContent)>(
460
- node, &Style::justifyContent, scopedEnum(justifyContent));
461
- }
462
- YGJustify YGNodeStyleGetJustifyContent(const YGNodeConstRef node) {
463
- return unscopedEnum(resolveRef(node)->getStyle().justifyContent());
464
- }
465
-
466
- void YGNodeStyleSetAlignContent(
467
- const YGNodeRef node,
468
- const YGAlign alignContent) {
469
- updateStyle<MSVC_HINT(alignContent)>(
470
- node, &Style::alignContent, scopedEnum(alignContent));
471
- }
472
- YGAlign YGNodeStyleGetAlignContent(const YGNodeConstRef node) {
473
- return unscopedEnum(resolveRef(node)->getStyle().alignContent());
474
- }
475
-
476
- void YGNodeStyleSetAlignItems(const YGNodeRef node, const YGAlign alignItems) {
477
- updateStyle<MSVC_HINT(alignItems)>(
478
- node, &Style::alignItems, scopedEnum(alignItems));
479
- }
480
- YGAlign YGNodeStyleGetAlignItems(const YGNodeConstRef node) {
481
- return unscopedEnum(resolveRef(node)->getStyle().alignItems());
482
- }
483
-
484
- void YGNodeStyleSetAlignSelf(const YGNodeRef node, const YGAlign alignSelf) {
485
- updateStyle<MSVC_HINT(alignSelf)>(
486
- node, &Style::alignSelf, scopedEnum(alignSelf));
487
- }
488
- YGAlign YGNodeStyleGetAlignSelf(const YGNodeConstRef node) {
489
- return unscopedEnum(resolveRef(node)->getStyle().alignSelf());
490
- }
491
-
492
- void YGNodeStyleSetPositionType(
493
- const YGNodeRef node,
494
- const YGPositionType positionType) {
495
- updateStyle<MSVC_HINT(positionType)>(
496
- node, &Style::positionType, scopedEnum(positionType));
497
- }
498
- YGPositionType YGNodeStyleGetPositionType(const YGNodeConstRef node) {
499
- return unscopedEnum(resolveRef(node)->getStyle().positionType());
500
- }
501
-
502
- void YGNodeStyleSetFlexWrap(const YGNodeRef node, const YGWrap flexWrap) {
503
- updateStyle<MSVC_HINT(flexWrap)>(
504
- node, &Style::flexWrap, scopedEnum(flexWrap));
505
- }
506
- YGWrap YGNodeStyleGetFlexWrap(const YGNodeConstRef node) {
507
- return unscopedEnum(resolveRef(node)->getStyle().flexWrap());
508
- }
509
-
510
- void YGNodeStyleSetOverflow(const YGNodeRef node, const YGOverflow overflow) {
511
- updateStyle<MSVC_HINT(overflow)>(
512
- node, &Style::overflow, scopedEnum(overflow));
513
- }
514
- YGOverflow YGNodeStyleGetOverflow(const YGNodeConstRef node) {
515
- return unscopedEnum(resolveRef(node)->getStyle().overflow());
516
- }
517
-
518
- void YGNodeStyleSetDisplay(const YGNodeRef node, const YGDisplay display) {
519
- updateStyle<MSVC_HINT(display)>(node, &Style::display, scopedEnum(display));
520
- }
521
- YGDisplay YGNodeStyleGetDisplay(const YGNodeConstRef node) {
522
- return unscopedEnum(resolveRef(node)->getStyle().display());
523
- }
524
-
525
- void YGNodeStyleSetFlex(const YGNodeRef node, const float flex) {
526
- updateStyle<MSVC_HINT(flex)>(node, &Style::flex, FloatOptional{flex});
527
- }
528
-
529
- float YGNodeStyleGetFlex(const YGNodeConstRef nodeRef) {
530
- const auto node = resolveRef(nodeRef);
531
- return node->getStyle().flex().isUndefined()
532
- ? YGUndefined
533
- : node->getStyle().flex().unwrap();
534
- }
535
-
536
- void YGNodeStyleSetFlexGrow(const YGNodeRef node, const float flexGrow) {
537
- updateStyle<MSVC_HINT(flexGrow)>(
538
- node, &Style::flexGrow, FloatOptional{flexGrow});
539
- }
540
-
541
- void YGNodeStyleSetFlexShrink(const YGNodeRef node, const float flexShrink) {
542
- updateStyle<MSVC_HINT(flexShrink)>(
543
- node, &Style::flexShrink, FloatOptional{flexShrink});
544
- }
545
-
546
- YGValue YGNodeStyleGetFlexBasis(const YGNodeConstRef node) {
547
- YGValue flexBasis = resolveRef(node)->getStyle().flexBasis();
548
- if (flexBasis.unit == YGUnitUndefined || flexBasis.unit == YGUnitAuto) {
549
- flexBasis.value = YGUndefined;
550
- }
551
- return flexBasis;
552
- }
553
-
554
- void YGNodeStyleSetFlexBasis(const YGNodeRef node, const float flexBasis) {
555
- auto value = CompactValue::ofMaybe<YGUnitPoint>(flexBasis);
556
- updateStyle<MSVC_HINT(flexBasis)>(node, &Style::flexBasis, value);
557
- }
558
-
559
- void YGNodeStyleSetFlexBasisPercent(
560
- const YGNodeRef node,
561
- const float flexBasisPercent) {
562
- auto value = CompactValue::ofMaybe<YGUnitPercent>(flexBasisPercent);
563
- updateStyle<MSVC_HINT(flexBasis)>(node, &Style::flexBasis, value);
564
- }
565
-
566
- void YGNodeStyleSetFlexBasisAuto(const YGNodeRef node) {
567
- updateStyle<MSVC_HINT(flexBasis)>(
568
- node, &Style::flexBasis, CompactValue::ofAuto());
569
- }
570
-
571
- void YGNodeStyleSetPosition(YGNodeRef node, YGEdge edge, float points) {
572
- auto value = CompactValue::ofMaybe<YGUnitPoint>(points);
573
- updateIndexedStyleProp<MSVC_HINT(position)>(
574
- node, &Style::position, edge, value);
575
- }
576
- void YGNodeStyleSetPositionPercent(YGNodeRef node, YGEdge edge, float percent) {
577
- auto value = CompactValue::ofMaybe<YGUnitPercent>(percent);
578
- updateIndexedStyleProp<MSVC_HINT(position)>(
579
- node, &Style::position, edge, value);
580
- }
581
- YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge) {
582
- return resolveRef(node)->getStyle().position()[edge];
583
- }
584
-
585
- void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float points) {
586
- auto value = CompactValue::ofMaybe<YGUnitPoint>(points);
587
- updateIndexedStyleProp<MSVC_HINT(margin)>(node, &Style::margin, edge, value);
588
- }
589
- void YGNodeStyleSetMarginPercent(YGNodeRef node, YGEdge edge, float percent) {
590
- auto value = CompactValue::ofMaybe<YGUnitPercent>(percent);
591
- updateIndexedStyleProp<MSVC_HINT(margin)>(node, &Style::margin, edge, value);
592
- }
593
- void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge) {
594
- updateIndexedStyleProp<MSVC_HINT(margin)>(
595
- node, &Style::margin, edge, CompactValue::ofAuto());
596
- }
597
- YGValue YGNodeStyleGetMargin(YGNodeConstRef node, YGEdge edge) {
598
- return resolveRef(node)->getStyle().margin()[edge];
599
- }
600
-
601
- void YGNodeStyleSetPadding(YGNodeRef node, YGEdge edge, float points) {
602
- auto value = CompactValue::ofMaybe<YGUnitPoint>(points);
603
- updateIndexedStyleProp<MSVC_HINT(padding)>(
604
- node, &Style::padding, edge, value);
605
- }
606
- void YGNodeStyleSetPaddingPercent(YGNodeRef node, YGEdge edge, float percent) {
607
- auto value = CompactValue::ofMaybe<YGUnitPercent>(percent);
608
- updateIndexedStyleProp<MSVC_HINT(padding)>(
609
- node, &Style::padding, edge, value);
610
- }
611
- YGValue YGNodeStyleGetPadding(YGNodeConstRef node, YGEdge edge) {
612
- return resolveRef(node)->getStyle().padding()[edge];
613
- }
614
-
615
- void YGNodeStyleSetBorder(
616
- const YGNodeRef node,
617
- const YGEdge edge,
618
- const float border) {
619
- auto value = CompactValue::ofMaybe<YGUnitPoint>(border);
620
- updateIndexedStyleProp<MSVC_HINT(border)>(node, &Style::border, edge, value);
621
- }
622
-
623
- float YGNodeStyleGetBorder(const YGNodeConstRef node, const YGEdge edge) {
624
- auto border = resolveRef(node)->getStyle().border()[edge];
625
- if (border.isUndefined() || border.isAuto()) {
626
- return YGUndefined;
627
- }
628
-
629
- return static_cast<YGValue>(border).value;
630
- }
631
-
632
- void YGNodeStyleSetGap(
633
- const YGNodeRef node,
634
- const YGGutter gutter,
635
- const float gapLength) {
636
- auto length = CompactValue::ofMaybe<YGUnitPoint>(gapLength);
637
- updateIndexedStyleProp<MSVC_HINT(gap)>(node, &Style::gap, gutter, length);
638
- }
639
-
640
- float YGNodeStyleGetGap(const YGNodeConstRef node, const YGGutter gutter) {
641
- auto gapLength = resolveRef(node)->getStyle().gap()[gutter];
642
- if (gapLength.isUndefined() || gapLength.isAuto()) {
643
- return YGUndefined;
644
- }
645
-
646
- return static_cast<YGValue>(gapLength).value;
647
- }
648
-
649
- // Yoga specific properties, not compatible with flexbox specification
650
-
651
- float YGNodeStyleGetAspectRatio(const YGNodeConstRef node) {
652
- const FloatOptional op = resolveRef(node)->getStyle().aspectRatio();
653
- return op.isUndefined() ? YGUndefined : op.unwrap();
654
- }
655
-
656
- void YGNodeStyleSetAspectRatio(const YGNodeRef node, const float aspectRatio) {
657
- updateStyle<MSVC_HINT(aspectRatio)>(
658
- node, &Style::aspectRatio, FloatOptional{aspectRatio});
659
- }
660
-
661
- void YGNodeStyleSetWidth(YGNodeRef node, float points) {
662
- auto value = CompactValue::ofMaybe<YGUnitPoint>(points);
663
- updateIndexedStyleProp<&Style::dimension, &Style::setDimension>(
664
- node, YGDimensionWidth, value);
665
- }
666
- void YGNodeStyleSetWidthPercent(YGNodeRef node, float percent) {
667
- auto value = CompactValue::ofMaybe<YGUnitPercent>(percent);
668
- updateIndexedStyleProp<&Style::dimension, &Style::setDimension>(
669
- node, YGDimensionWidth, value);
670
- }
671
- void YGNodeStyleSetWidthAuto(YGNodeRef node) {
672
- updateIndexedStyleProp<&Style::dimension, &Style::setDimension>(
673
- node, YGDimensionWidth, CompactValue::ofAuto());
674
- }
675
- YGValue YGNodeStyleGetWidth(YGNodeConstRef node) {
676
- return resolveRef(node)->getStyle().dimension(YGDimensionWidth);
677
- }
678
-
679
- void YGNodeStyleSetHeight(YGNodeRef node, float points) {
680
- auto value = CompactValue::ofMaybe<YGUnitPoint>(points);
681
- updateIndexedStyleProp<&Style::dimension, &Style::setDimension>(
682
- node, YGDimensionHeight, value);
683
- }
684
- void YGNodeStyleSetHeightPercent(YGNodeRef node, float percent) {
685
- auto value = CompactValue::ofMaybe<YGUnitPercent>(percent);
686
- updateIndexedStyleProp<&Style::dimension, &Style::setDimension>(
687
- node, YGDimensionHeight, value);
688
- }
689
- void YGNodeStyleSetHeightAuto(YGNodeRef node) {
690
- updateIndexedStyleProp<&Style::dimension, &Style::setDimension>(
691
- node, YGDimensionHeight, CompactValue::ofAuto());
692
- }
693
- YGValue YGNodeStyleGetHeight(YGNodeConstRef node) {
694
- return resolveRef(node)->getStyle().dimension(YGDimensionHeight);
695
- }
696
-
697
- void YGNodeStyleSetMinWidth(const YGNodeRef node, const float minWidth) {
698
- auto value = CompactValue::ofMaybe<YGUnitPoint>(minWidth);
699
- updateIndexedStyleProp<&Style::minDimension, &Style::setMinDimension>(
700
- node, YGDimensionWidth, value);
701
- }
702
- void YGNodeStyleSetMinWidthPercent(const YGNodeRef node, const float minWidth) {
703
- auto value = CompactValue::ofMaybe<YGUnitPercent>(minWidth);
704
- updateIndexedStyleProp<&Style::minDimension, &Style::setMinDimension>(
705
- node, YGDimensionWidth, value);
706
- }
707
- YGValue YGNodeStyleGetMinWidth(const YGNodeConstRef node) {
708
- return resolveRef(node)->getStyle().minDimension(YGDimensionWidth);
709
- }
710
-
711
- void YGNodeStyleSetMinHeight(const YGNodeRef node, const float minHeight) {
712
- auto value = CompactValue::ofMaybe<YGUnitPoint>(minHeight);
713
- updateIndexedStyleProp<&Style::minDimension, &Style::setMinDimension>(
714
- node, YGDimensionHeight, value);
715
- }
716
- void YGNodeStyleSetMinHeightPercent(
717
- const YGNodeRef node,
718
- const float minHeight) {
719
- auto value = CompactValue::ofMaybe<YGUnitPercent>(minHeight);
720
- updateIndexedStyleProp<&Style::minDimension, &Style::setMinDimension>(
721
- node, YGDimensionHeight, value);
722
- }
723
- YGValue YGNodeStyleGetMinHeight(const YGNodeConstRef node) {
724
- return resolveRef(node)->getStyle().minDimension(YGDimensionHeight);
725
- }
726
-
727
- void YGNodeStyleSetMaxWidth(const YGNodeRef node, const float maxWidth) {
728
- auto value = CompactValue::ofMaybe<YGUnitPoint>(maxWidth);
729
- updateIndexedStyleProp<&Style::maxDimension, &Style::setMaxDimension>(
730
- node, YGDimensionWidth, value);
731
- }
732
- void YGNodeStyleSetMaxWidthPercent(const YGNodeRef node, const float maxWidth) {
733
- auto value = CompactValue::ofMaybe<YGUnitPercent>(maxWidth);
734
- updateIndexedStyleProp<&Style::maxDimension, &Style::setMaxDimension>(
735
- node, YGDimensionWidth, value);
736
- }
737
- YGValue YGNodeStyleGetMaxWidth(const YGNodeConstRef node) {
738
- return resolveRef(node)->getStyle().maxDimension(YGDimensionWidth);
739
- }
740
-
741
- void YGNodeStyleSetMaxHeight(const YGNodeRef node, const float maxHeight) {
742
- auto value = CompactValue::ofMaybe<YGUnitPoint>(maxHeight);
743
- updateIndexedStyleProp<&Style::maxDimension, &Style::setMaxDimension>(
744
- node, YGDimensionHeight, value);
745
- }
746
- void YGNodeStyleSetMaxHeightPercent(
747
- const YGNodeRef node,
748
- const float maxHeight) {
749
- auto value = CompactValue::ofMaybe<YGUnitPercent>(maxHeight);
750
- updateIndexedStyleProp<&Style::maxDimension, &Style::setMaxDimension>(
751
- node, YGDimensionHeight, value);
752
- }
753
- YGValue YGNodeStyleGetMaxHeight(const YGNodeConstRef node) {
754
- return resolveRef(node)->getStyle().maxDimension(YGDimensionHeight);
755
- }
756
-
757
- namespace {
758
-
759
- template <auto LayoutMember>
760
- float getResolvedLayoutProperty(
761
- const YGNodeConstRef nodeRef,
762
- const YGEdge edge) {
763
- const auto node = resolveRef(nodeRef);
764
- yoga::assertFatalWithNode(
765
- node,
766
- edge <= YGEdgeEnd,
767
- "Cannot get layout properties of multi-edge shorthands");
768
-
769
- if (edge == YGEdgeStart) {
770
- if (node->getLayout().direction() == Direction::RTL) {
771
- return (node->getLayout().*LayoutMember)[YGEdgeRight];
772
- } else {
773
- return (node->getLayout().*LayoutMember)[YGEdgeLeft];
774
- }
775
- }
776
-
777
- if (edge == YGEdgeEnd) {
778
- if (node->getLayout().direction() == Direction::RTL) {
779
- return (node->getLayout().*LayoutMember)[YGEdgeLeft];
780
- } else {
781
- return (node->getLayout().*LayoutMember)[YGEdgeRight];
782
- }
783
- }
784
-
785
- return (node->getLayout().*LayoutMember)[edge];
786
- }
787
-
788
- } // namespace
789
-
790
- float YGNodeLayoutGetLeft(const YGNodeConstRef node) {
791
- return resolveRef(node)->getLayout().position[YGEdgeLeft];
792
- }
793
-
794
- float YGNodeLayoutGetTop(const YGNodeConstRef node) {
795
- return resolveRef(node)->getLayout().position[YGEdgeTop];
796
- }
797
-
798
- float YGNodeLayoutGetRight(const YGNodeConstRef node) {
799
- return resolveRef(node)->getLayout().position[YGEdgeRight];
800
- }
801
-
802
- float YGNodeLayoutGetBottom(const YGNodeConstRef node) {
803
- return resolveRef(node)->getLayout().position[YGEdgeBottom];
804
- }
805
-
806
- float YGNodeLayoutGetWidth(const YGNodeConstRef node) {
807
- return resolveRef(node)->getLayout().dimension(YGDimensionWidth);
808
- }
809
-
810
- float YGNodeLayoutGetHeight(const YGNodeConstRef node) {
811
- return resolveRef(node)->getLayout().dimension(YGDimensionHeight);
812
- }
813
-
814
- YGDirection YGNodeLayoutGetDirection(const YGNodeConstRef node) {
815
- return unscopedEnum(resolveRef(node)->getLayout().direction());
816
- }
817
-
818
- bool YGNodeLayoutGetHadOverflow(const YGNodeConstRef node) {
819
- return resolveRef(node)->getLayout().hadOverflow();
820
- }
821
-
822
- float YGNodeLayoutGetMargin(YGNodeConstRef node, YGEdge edge) {
823
- return getResolvedLayoutProperty<&LayoutResults::margin>(node, edge);
824
- }
825
-
826
- float YGNodeLayoutGetBorder(YGNodeConstRef node, YGEdge edge) {
827
- return getResolvedLayoutProperty<&LayoutResults::border>(node, edge);
828
- }
829
-
830
- float YGNodeLayoutGetPadding(YGNodeConstRef node, YGEdge edge) {
831
- return getResolvedLayoutProperty<&LayoutResults::padding>(node, edge);
832
- }
833
-
834
- #ifdef DEBUG
835
- void YGNodePrint(const YGNodeConstRef node, const YGPrintOptions options) {
836
- yoga::print(resolveRef(node), scopedEnum(options));
837
- }
838
- #endif
839
-
840
- void YGConfigSetLogger(const YGConfigRef config, YGLogger logger) {
841
- if (logger != nullptr) {
842
- resolveRef(config)->setLogger(logger);
843
- } else {
844
- resolveRef(config)->setLogger(getDefaultLogger());
845
- }
846
- }
847
-
848
- void YGConfigSetPointScaleFactor(
849
- const YGConfigRef config,
850
- const float pixelsInPoint) {
851
- yoga::assertFatalWithConfig(
852
- resolveRef(config),
853
- pixelsInPoint >= 0.0f,
854
- "Scale factor should not be less than zero");
855
-
856
- // We store points for Pixel as we will use it for rounding
857
- if (pixelsInPoint == 0.0f) {
858
- // Zero is used to skip rounding
859
- resolveRef(config)->setPointScaleFactor(0.0f);
860
- } else {
861
- resolveRef(config)->setPointScaleFactor(pixelsInPoint);
862
- }
863
- }
864
-
865
- float YGConfigGetPointScaleFactor(const YGConfigConstRef config) {
866
- return resolveRef(config)->getPointScaleFactor();
867
- }
868
-
869
- float YGRoundValueToPixelGrid(
870
- const double value,
871
- const double pointScaleFactor,
872
- const bool forceCeil,
873
- const bool forceFloor) {
874
- return yoga::roundValueToPixelGrid(
875
- value, pointScaleFactor, forceCeil, forceFloor);
876
- }
877
-
878
- void YGConfigSetExperimentalFeatureEnabled(
879
- const YGConfigRef config,
880
- const YGExperimentalFeature feature,
881
- const bool enabled) {
882
- resolveRef(config)->setExperimentalFeatureEnabled(
883
- scopedEnum(feature), enabled);
884
- }
885
-
886
- bool YGConfigIsExperimentalFeatureEnabled(
887
- const YGConfigConstRef config,
888
- const YGExperimentalFeature feature) {
889
- return resolveRef(config)->isExperimentalFeatureEnabled(scopedEnum(feature));
890
- }
891
-
892
- void YGConfigSetUseWebDefaults(const YGConfigRef config, const bool enabled) {
893
- resolveRef(config)->setUseWebDefaults(enabled);
894
- }
895
-
896
- bool YGConfigGetUseWebDefaults(const YGConfigConstRef config) {
897
- return resolveRef(config)->useWebDefaults();
898
- }
899
-
900
- void YGConfigSetContext(const YGConfigRef config, void* context) {
901
- resolveRef(config)->setContext(context);
902
- }
903
-
904
- void* YGConfigGetContext(const YGConfigConstRef config) {
905
- return resolveRef(config)->getContext();
906
- }
907
-
908
- void YGConfigSetErrata(YGConfigRef config, YGErrata errata) {
909
- resolveRef(config)->setErrata(scopedEnum(errata));
910
- }
911
-
912
- YGErrata YGConfigGetErrata(YGConfigConstRef config) {
913
- return unscopedEnum(resolveRef(config)->getErrata());
914
- }
915
-
916
- void YGConfigSetCloneNodeFunc(
917
- const YGConfigRef config,
918
- const YGCloneNodeFunc callback) {
919
- resolveRef(config)->setCloneNodeCallback(callback);
920
- }
921
-
922
- // TODO: This should not be part of the public API. Remove after removing
923
- // ComponentKit usage of it.
924
- bool YGNodeCanUseCachedMeasurement(
925
- YGMeasureMode widthMode,
926
- float availableWidth,
927
- YGMeasureMode heightMode,
928
- float availableHeight,
929
- YGMeasureMode lastWidthMode,
930
- float lastAvailableWidth,
931
- YGMeasureMode lastHeightMode,
932
- float lastAvailableHeight,
933
- float lastComputedWidth,
934
- float lastComputedHeight,
935
- float marginRow,
936
- float marginColumn,
937
- YGConfigRef config) {
938
- return yoga::canUseCachedMeasurement(
939
- scopedEnum(widthMode),
940
- availableWidth,
941
- scopedEnum(heightMode),
942
- availableHeight,
943
- scopedEnum(lastWidthMode),
944
- lastAvailableWidth,
945
- scopedEnum(lastHeightMode),
946
- lastAvailableHeight,
947
- lastComputedWidth,
948
- lastComputedHeight,
949
- marginRow,
950
- marginColumn,
951
- resolveRef(config));
952
- }
953
-
954
- void YGNodeCalculateLayout(
955
- const YGNodeRef node,
956
- const float ownerWidth,
957
- const float ownerHeight,
958
- const YGDirection ownerDirection) {
959
- yoga::calculateLayout(
960
- resolveRef(node), ownerWidth, ownerHeight, scopedEnum(ownerDirection));
961
- }