react-native-tvos 0.85.3-1 → 0.86.0-0

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 (667) hide show
  1. package/Libraries/Animated/AnimatedImplementation.js +6 -6
  2. package/Libraries/Animated/NativeAnimatedAllowlist.js +21 -0
  3. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  4. package/Libraries/Animated/components/AnimatedText.js +3 -3
  5. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  6. package/Libraries/Animated/nodes/AnimatedAddition.js +1 -1
  7. package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
  8. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +1 -1
  9. package/Libraries/Animated/nodes/AnimatedDivision.js +1 -1
  10. package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -24
  11. package/Libraries/Animated/nodes/AnimatedModulo.js +1 -1
  12. package/Libraries/Animated/nodes/AnimatedMultiplication.js +1 -1
  13. package/Libraries/Animated/nodes/AnimatedStyle.js +2 -2
  14. package/Libraries/Animated/nodes/AnimatedSubtraction.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedValue.js +2 -2
  17. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +4 -0
  18. package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -5
  19. package/Libraries/AppDelegate/RCTRootViewFactory.mm +2 -2
  20. package/Libraries/AppState/AppState.js +1 -1
  21. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  22. package/Libraries/Blob/RCTBlobCollector.h +1 -1
  23. package/Libraries/Blob/RCTBlobCollector.mm +14 -26
  24. package/Libraries/Blob/RCTBlobManager.mm +11 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +29 -23
  26. package/Libraries/Components/Keyboard/Keyboard.js +4 -2
  27. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  28. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -27
  29. package/Libraries/Components/Pressable/Pressable.d.ts +1 -0
  30. package/Libraries/Components/Pressable/Pressable.js +2 -2
  31. package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -8
  32. package/Libraries/Components/ScrollView/ScrollView.js +3 -3
  33. package/Libraries/Components/ScrollView/ScrollViewCommands.js +2 -2
  34. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +2 -2
  35. package/Libraries/Components/Switch/Switch.js +1 -1
  36. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +25 -1
  37. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +1 -1
  38. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +2 -2
  39. package/Libraries/Components/TextInput/TextInput.d.ts +24 -0
  40. package/Libraries/Components/TextInput/TextInput.flow.js +24 -0
  41. package/Libraries/Components/TextInput/TextInput.js +5 -5
  42. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +5 -5
  43. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +5 -5
  44. package/Libraries/Components/Touchable/PooledClass.js +4 -4
  45. package/Libraries/Components/Touchable/Touchable.js +1 -1
  46. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -10
  47. package/Libraries/Components/View/ReactNativeStyleAttributes.js +10 -2
  48. package/Libraries/Components/View/View.js +100 -95
  49. package/Libraries/Components/View/ViewPropTypes.js +3 -1
  50. package/Libraries/Core/Devtools/loadBundleFromServer.js +8 -0
  51. package/Libraries/Core/ExceptionsManager.js +2 -8
  52. package/Libraries/Core/InitializeCore.js +0 -13
  53. package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
  54. package/Libraries/Core/ReactNativeVersion.js +3 -3
  55. package/Libraries/Core/ReactNativeVersionCheck.js +1 -1
  56. package/Libraries/Core/Timers/JSTimers.js +2 -2
  57. package/Libraries/Core/Timers/immediateShim.js +1 -1
  58. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  59. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  60. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  61. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -5
  62. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -2
  63. package/Libraries/Image/Image.android.js +15 -35
  64. package/Libraries/Image/RCTImageLoader.mm +4 -2
  65. package/Libraries/Image/RelativeImageStub.js +2 -2
  66. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -12
  67. package/Libraries/Linking/Linking.js +1 -1
  68. package/Libraries/Lists/FlatList.js +1 -1
  69. package/Libraries/LogBox/LogBox.js +2 -2
  70. package/Libraries/LogBox/LogBoxInspectorContainer.js +24 -2
  71. package/Libraries/LogBox/LogBoxNotificationContainer.js +27 -4
  72. package/Libraries/LogBox/UI/LogBoxButton.js +47 -33
  73. package/Libraries/LogBox/UI/LogBoxInspector.js +61 -1
  74. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -0
  75. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +3 -1
  76. package/Libraries/LogBox/UI/LogBoxNotification.js +2 -0
  77. package/Libraries/Modal/Modal.js +12 -7
  78. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +0 -2
  79. package/Libraries/NativeComponent/BaseViewConfig.android.js +15 -0
  80. package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -0
  81. package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -2
  82. package/Libraries/NativeComponent/ViewConfigIgnore.js +4 -2
  83. package/Libraries/Network/RCTNetworking.android.js +1 -1
  84. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  85. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  86. package/Libraries/Network/RCTNetworking.mm +1 -2
  87. package/Libraries/Network/XMLHttpRequest.js +29 -12
  88. package/Libraries/Pressability/Pressability.js +2 -2
  89. package/Libraries/ReactNative/AppContainer-dev.js +2 -3
  90. package/Libraries/ReactNative/AppContainer-prod.js +1 -2
  91. package/Libraries/ReactNative/AppContainer.js +0 -1
  92. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  93. package/Libraries/ReactNative/AppRegistry.flow.js +1 -2
  94. package/Libraries/ReactNative/AppRegistryImpl.js +16 -16
  95. package/Libraries/ReactNative/DeprecatedPerformanceLoggerStub.js +83 -0
  96. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  97. package/Libraries/{Utilities → ReactNative}/IPerformanceLogger.d.ts +8 -5
  98. package/Libraries/{Utilities/IPerformanceLogger.js → ReactNative/IPerformanceLogger.flow.js} +12 -9
  99. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +14 -14
  100. package/Libraries/ReactNative/RendererImplementation.js +26 -143
  101. package/Libraries/ReactNative/RendererProxy.js +4 -15
  102. package/Libraries/ReactNative/renderApplication.js +33 -59
  103. package/Libraries/ReactNative/requireNativeComponent.js +3 -3
  104. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -0
  105. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -32
  106. package/Libraries/Settings/Settings.ios.js +1 -1
  107. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  108. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +3 -3
  109. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  110. package/Libraries/StyleSheet/StyleSheet.js.flow +2 -2
  111. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  112. package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
  113. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +6 -8
  114. package/Libraries/StyleSheet/StyleSheetTypes.js +11 -11
  115. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  116. package/Libraries/StyleSheet/private/_TransformStyle.js +1 -1
  117. package/Libraries/StyleSheet/processBackgroundImage.js +19 -9
  118. package/Libraries/StyleSheet/processBackgroundSize.js +7 -12
  119. package/Libraries/StyleSheet/processBoxShadow.js +9 -47
  120. package/Libraries/StyleSheet/processFilter.js +16 -8
  121. package/Libraries/StyleSheet/processTransformOrigin.js +10 -3
  122. package/Libraries/Text/Text.js +4 -4
  123. package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +16 -2
  124. package/Libraries/Text/TextNativeComponent.js +4 -4
  125. package/Libraries/TurboModule/RCTExport.js +1 -1
  126. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -3
  127. package/Libraries/Types/CodegenTypes.js +7 -4
  128. package/Libraries/Types/ReactDevToolsTypes.js +1 -1
  129. package/Libraries/Utilities/BackHandler.android.js +11 -3
  130. package/Libraries/Utilities/BackHandler.d.ts +11 -1
  131. package/Libraries/Utilities/BackHandler.ios.js +3 -1
  132. package/Libraries/Utilities/BackHandler.js.flow +6 -1
  133. package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
  134. package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
  135. package/Libraries/Utilities/binaryToBase64.js +1 -1
  136. package/Libraries/Utilities/codegenNativeCommands.js +2 -2
  137. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  138. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
  139. package/Libraries/Utilities/stringifySafe.js +1 -1
  140. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  141. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  142. package/Libraries/vendor/emitter/EventEmitter.js +27 -13
  143. package/React/Base/RCTBundleURLProvider.h +19 -1
  144. package/React/Base/RCTBundleURLProvider.mm +82 -0
  145. package/React/Base/RCTDefines.h +1 -1
  146. package/React/Base/RCTMultipartDataTask.h +1 -1
  147. package/React/Base/RCTMultipartDataTask.m +0 -3
  148. package/React/Base/RCTRootView.h +4 -0
  149. package/React/Base/RCTRootViewDelegate.h +5 -2
  150. package/React/Base/RCTVersion.m +3 -3
  151. package/React/Base/Surface/RCTSurface.h +3 -0
  152. package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
  153. package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
  154. package/React/Base/Surface/RCTSurfaceView.mm +2 -1
  155. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
  156. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
  157. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
  158. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
  159. package/React/CoreModules/RCTRedBox2AnsiParser.mm +1 -1
  160. package/React/CoreModules/RCTWebSocketModule.mm +45 -6
  161. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
  162. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
  163. package/React/DevSupport/RCTPackagerConnection.mm +13 -11
  164. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +108 -43
  165. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
  166. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
  167. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
  168. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
  169. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
  170. package/React/Fabric/RCTConversions.h +14 -0
  171. package/React/Fabric/RCTScheduler.mm +18 -0
  172. package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
  173. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
  174. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  175. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  176. package/React/Modules/RCTUIManager.mm +1 -1
  177. package/React/Profiler/RCTProfile.h +5 -0
  178. package/React/Profiler/RCTProfile.m +2 -1
  179. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  180. package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
  181. package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
  182. package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
  183. package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
  184. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
  185. package/React/Views/RCTLayout.m +4 -3
  186. package/React/Views/ScrollView/RCTScrollView.h +6 -2
  187. package/ReactAndroid/api/ReactAndroid.api +37 -27
  188. package/ReactAndroid/build.gradle.kts +28 -21
  189. package/ReactAndroid/gradle.properties +1 -1
  190. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
  191. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
  192. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
  193. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
  194. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
  195. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
  197. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
  198. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
  199. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
  200. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
  201. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
  203. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
  206. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
  208. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
  210. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +9 -10
  211. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
  213. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
  214. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
  215. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
  216. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
  218. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
  219. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
  220. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
  221. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
  222. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
  223. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +41 -29
  225. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +71 -51
  226. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +15 -11
  227. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +16 -12
  228. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +79 -57
  229. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
  230. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
  231. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +15 -11
  232. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
  233. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
  235. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +1 -1
  236. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
  237. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
  238. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
  239. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
  240. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
  241. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
  242. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
  243. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
  244. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
  245. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
  246. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
  247. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
  248. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
  249. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +18 -5
  250. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
  251. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
  252. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
  253. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  254. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
  255. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
  256. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
  257. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
  261. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
  262. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
  263. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
  264. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
  265. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
  266. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
  267. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
  268. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
  269. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
  270. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
  271. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
  272. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
  273. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
  274. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
  275. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
  276. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
  277. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
  278. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
  279. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
  280. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
  281. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
  282. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
  283. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
  284. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
  285. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
  286. package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
  287. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
  288. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
  289. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
  290. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
  291. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
  292. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
  293. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
  294. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
  295. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
  296. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
  297. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
  298. package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
  299. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
  300. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
  301. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
  302. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
  303. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
  304. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
  305. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
  306. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
  307. package/ReactAndroid/src/main/jni/CMakeLists.txt +10 -1
  308. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
  309. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
  310. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
  311. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
  312. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
  313. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
  314. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
  315. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
  316. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
  317. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
  318. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
  319. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
  320. package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
  321. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +97 -69
  322. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +21 -15
  323. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
  324. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
  325. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
  326. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
  327. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
  328. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
  329. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  330. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +10 -0
  331. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +7 -0
  332. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
  333. package/ReactCommon/React-Fabric.podspec +7 -0
  334. package/ReactCommon/React-FabricComponents.podspec +1 -1
  335. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  336. package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
  337. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
  338. package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
  339. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
  340. package/ReactCommon/jsi/jsi/decorator.h +93 -0
  341. package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
  342. package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
  343. package/ReactCommon/jsi/jsi/jsi.h +553 -224
  344. package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
  345. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
  346. package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
  347. package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
  348. package/ReactCommon/jsinspector-modern/HostAgent.cpp +10 -1
  349. package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
  350. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -2
  351. package/ReactCommon/jsinspector-modern/InspectorFlags.h +5 -2
  352. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
  353. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
  354. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
  355. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
  356. package/ReactCommon/logger/react_native_log.cpp +0 -1
  357. package/ReactCommon/react/bridging/Array.h +1 -1
  358. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +29 -21
  359. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +35 -25
  360. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +168 -132
  361. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +18 -14
  362. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +28 -20
  363. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +61 -43
  364. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
  365. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +9 -7
  366. package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
  367. package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
  368. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
  369. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
  370. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  371. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  372. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  373. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
  374. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +35 -25
  375. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +15 -11
  376. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
  377. package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
  378. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
  379. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
  380. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
  381. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
  382. package/ReactCommon/react/networking/NetworkReporter.h +0 -1
  383. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
  384. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
  385. package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
  386. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
  387. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
  388. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
  389. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
  390. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  391. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
  392. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
  393. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
  394. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
  395. package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
  396. package/ReactCommon/react/renderer/animations/utils.h +12 -1
  397. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
  398. package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
  399. package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
  400. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
  401. package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
  402. package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
  403. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
  404. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
  405. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
  406. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
  407. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
  408. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
  409. package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
  410. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  411. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
  412. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
  413. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
  414. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
  415. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
  416. package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
  417. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +53 -5
  418. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
  419. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
  420. package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
  421. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  422. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
  423. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
  424. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
  425. package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
  426. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
  427. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
  428. package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
  429. package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
  430. package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
  431. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
  432. package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
  433. package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
  434. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
  435. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
  436. package/ReactCommon/react/renderer/core/Props.cpp +20 -0
  437. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  438. package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
  439. package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
  440. package/ReactCommon/react/renderer/core/conversions.h +4 -0
  441. package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
  442. package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
  443. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
  444. package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
  445. package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
  446. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
  447. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
  448. package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
  449. package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
  450. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
  451. package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
  452. package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
  453. package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
  454. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
  455. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
  456. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
  457. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
  458. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
  459. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
  460. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
  461. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
  462. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
  463. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
  464. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
  465. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
  466. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
  467. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
  468. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
  469. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
  470. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
  471. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
  472. package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
  473. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
  474. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
  475. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
  476. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
  477. package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
  478. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  479. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
  480. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
  481. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
  482. package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
  483. package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
  484. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
  485. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
  486. package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
  487. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +37 -0
  488. package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
  489. package/ReactCommon/react/timing/React-timing.podspec +2 -0
  490. package/ReactCommon/react/timing/primitives.h +33 -1
  491. package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
  492. package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
  493. package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
  494. package/ReactCommon/yoga/yoga/YGNode.h +1 -1
  495. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
  496. package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
  497. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
  498. package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
  499. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
  500. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
  501. package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
  502. package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
  503. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
  504. package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
  505. package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
  506. package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
  507. package/ReactCommon/yoga/yoga/event/event.h +1 -0
  508. package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
  509. package/ReactCommon/yoga/yoga/node/Node.h +4 -4
  510. package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
  511. package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
  512. package/ReactCommon/yoga/yoga/style/Style.h +261 -71
  513. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
  514. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  515. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
  516. package/cli.js +1 -1
  517. package/flow/HermesInternalType.js +1 -1
  518. package/flow/bom.js.flow +95 -3
  519. package/flow/dom.js.flow +89 -89
  520. package/gradle/libs.versions.toml +3 -1
  521. package/index.js +30 -3
  522. package/index.js.flow +23 -1
  523. package/package.json +11 -11
  524. package/react-native.config.js +3 -3
  525. package/scripts/cocoapods/rncore.rb +65 -11
  526. package/scripts/cocoapods/rndependencies.rb +65 -11
  527. package/scripts/cocoapods/utils.rb +52 -0
  528. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
  529. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
  530. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
  531. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
  532. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
  533. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
  534. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
  535. package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
  536. package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
  537. package/scripts/codegen/generate-specs-cli-executor.js +1 -1
  538. package/scripts/generate-codegen-artifacts.js +20 -2
  539. package/scripts/generate-provider-cli.js +1 -1
  540. package/scripts/react_native_pods.rb +25 -2
  541. package/scripts/react_native_pods_utils/script_phases.rb +9 -3
  542. package/scripts/replace-rncore-version.js +20 -0
  543. package/scripts/xcode/with-environment.sh +7 -1
  544. package/sdks/.hermesv1version +1 -1
  545. package/sdks/.hermesversion +1 -1
  546. package/sdks/hermes-engine/hermes-utils.rb +92 -5
  547. package/sdks/hermes-engine/version.properties +2 -2
  548. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  549. package/src/private/animated/createAnimatedPropsHook.js +2 -2
  550. package/src/private/components/virtualcollection/FlingConstants.js +21 -0
  551. package/src/private/components/virtualcollection/Virtual.js +62 -0
  552. package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
  553. package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
  554. package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
  555. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
  556. package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
  557. package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
  558. package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
  559. package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
  560. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
  561. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
  562. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
  563. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  564. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  565. package/src/private/featureflags/ReactNativeFeatureFlags.js +41 -37
  566. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  567. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -7
  568. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  569. package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
  570. package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
  571. package/src/private/renderer/events/ReactNativeResponder.js +687 -0
  572. package/src/private/renderer/events/ResponderEvent.js +40 -0
  573. package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
  574. package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
  575. package/src/private/setup/setUpDOM.js +20 -0
  576. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
  577. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
  578. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  579. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  580. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  581. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
  582. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
  583. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
  584. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
  585. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
  586. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
  587. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  588. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
  589. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
  590. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  591. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
  592. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  593. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
  594. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
  595. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
  596. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
  597. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
  598. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
  599. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  600. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
  601. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  602. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  603. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
  604. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  605. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
  606. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
  607. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  608. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  609. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
  610. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
  611. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  612. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
  613. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
  614. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
  615. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
  616. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
  617. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
  618. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  619. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  620. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
  621. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
  622. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
  623. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
  624. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
  625. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
  626. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
  627. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  628. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
  629. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
  630. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
  631. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
  632. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
  633. package/src/private/styles/composeStyles.js +1 -1
  634. package/src/private/types/HostComponent.js +1 -1
  635. package/src/private/utilities/toExtendedError.js +1 -1
  636. package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
  637. package/src/private/webapis/dom/events/Event.js +10 -1
  638. package/src/private/webapis/dom/events/EventTarget.js +60 -18
  639. package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
  640. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
  641. package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
  642. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
  643. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
  644. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
  645. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
  646. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  647. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
  648. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
  649. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
  650. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
  651. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
  652. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  653. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  654. package/src/private/webapis/webidl/PlatformObjects.js +4 -4
  655. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
  656. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
  657. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
  658. package/Libraries/Renderer/shims/ReactNative.js +0 -27
  659. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
  660. package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
  661. package/Libraries/Utilities/createPerformanceLogger.js +0 -329
  662. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
  663. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
  664. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
  665. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
  666. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
  667. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
@@ -23,7 +23,11 @@ static inline void setFlexStartLayoutPosition(
23
23
  axis, direction, containingBlockWidth) +
24
24
  parent->getLayout().border(flexStartEdge(axis));
25
25
 
26
- if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding)) {
26
+ // https://www.w3.org/TR/css-grid-1/#abspos
27
+ // absolute positioned grid items are positioned relative to the padding edge
28
+ // of the grid container
29
+ if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding) &&
30
+ parent->style().display() != Display::Grid) {
27
31
  position += parent->getLayout().padding(flexStartEdge(axis));
28
32
  }
29
33
 
@@ -40,7 +44,11 @@ static inline void setFlexEndLayoutPosition(
40
44
  child->style().computeFlexEndMargin(
41
45
  axis, direction, containingBlockWidth);
42
46
 
43
- if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding)) {
47
+ // https://www.w3.org/TR/css-grid-1/#abspos
48
+ // absolute positioned grid items are positioned relative to the padding edge
49
+ // of the grid container
50
+ if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding) &&
51
+ parent->style().display() != Display::Grid) {
44
52
  flexEndPosition += parent->getLayout().padding(flexEndEdge(axis));
45
53
  }
46
54
 
@@ -60,7 +68,11 @@ static inline void setCenterLayoutPosition(
60
68
  parent->getLayout().border(flexStartEdge(axis)) -
61
69
  parent->getLayout().border(flexEndEdge(axis));
62
70
 
63
- if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding)) {
71
+ // https://www.w3.org/TR/css-grid-1/#abspos
72
+ // absolute positioned grid items are positioned relative to the padding edge
73
+ // of the grid container
74
+ if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding) &&
75
+ parent->style().display() != Display::Grid) {
64
76
  parentContentBoxSize -= parent->getLayout().padding(flexStartEdge(axis));
65
77
  parentContentBoxSize -= parent->getLayout().padding(flexEndEdge(axis));
66
78
  }
@@ -74,7 +86,11 @@ static inline void setCenterLayoutPosition(
74
86
  child->style().computeFlexStartMargin(
75
87
  axis, direction, containingBlockWidth);
76
88
 
77
- if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding)) {
89
+ // https://www.w3.org/TR/css-grid-1/#abspos
90
+ // absolute positioned grid items are positioned relative to the padding edge
91
+ // of the grid container
92
+ if (!child->hasErrata(Errata::AbsolutePositionWithoutInsetsExcludesPadding) &&
93
+ parent->style().display() != Display::Grid) {
78
94
  position += parent->getLayout().padding(flexStartEdge(axis));
79
95
  }
80
96
 
@@ -87,13 +103,19 @@ static void justifyAbsoluteChild(
87
103
  const Direction direction,
88
104
  const FlexDirection mainAxis,
89
105
  const float containingBlockWidth) {
90
- const Justify parentJustifyContent = parent->style().justifyContent();
91
- switch (parentJustifyContent) {
106
+ const Justify justify = parent->style().display() == Display::Grid
107
+ ? resolveChildJustification(parent, child)
108
+ : parent->style().justifyContent();
109
+ switch (justify) {
110
+ case Justify::Start:
111
+ case Justify::Auto:
112
+ case Justify::Stretch:
92
113
  case Justify::FlexStart:
93
114
  case Justify::SpaceBetween:
94
115
  setFlexStartLayoutPosition(
95
116
  parent, child, direction, mainAxis, containingBlockWidth);
96
117
  break;
118
+ case Justify::End:
97
119
  case Justify::FlexEnd:
98
120
  setFlexEndLayoutPosition(
99
121
  parent, child, direction, mainAxis, containingBlockWidth);
@@ -124,6 +146,7 @@ static void alignAbsoluteChild(
124
146
  }
125
147
 
126
148
  switch (itemAlign) {
149
+ case Align::Start:
127
150
  case Align::Auto:
128
151
  case Align::FlexStart:
129
152
  case Align::Baseline:
@@ -134,6 +157,7 @@ static void alignAbsoluteChild(
134
157
  setFlexStartLayoutPosition(
135
158
  parent, child, direction, crossAxis, containingBlockWidth);
136
159
  break;
160
+ case Align::End:
137
161
  case Align::FlexEnd:
138
162
  setFlexEndLayoutPosition(
139
163
  parent, child, direction, crossAxis, containingBlockWidth);
@@ -234,9 +258,15 @@ void layoutAbsoluteChild(
234
258
  LayoutData& layoutMarkerData,
235
259
  const uint32_t depth,
236
260
  const uint32_t generationCount) {
237
- const FlexDirection mainAxis =
238
- resolveDirection(node->style().flexDirection(), direction);
239
- const FlexDirection crossAxis = resolveCrossDirection(mainAxis, direction);
261
+ // For grid containers, use inline (Row) and block (Column) axes for
262
+ // positioning, since grid alignment properties (justify-self, align-self)
263
+ // operate on inline/block axes, not main/cross axes based on flex-direction.
264
+ const FlexDirection mainAxis = node->style().display() == Display::Grid
265
+ ? resolveDirection(FlexDirection::Row, direction)
266
+ : resolveDirection(node->style().flexDirection(), direction);
267
+ const FlexDirection crossAxis = node->style().display() == Display::Grid
268
+ ? FlexDirection::Column
269
+ : resolveCrossDirection(mainAxis, direction);
240
270
  const bool isMainAxisRow = isRow(mainAxis);
241
271
 
242
272
  float childWidth = YGUndefined;
@@ -528,6 +558,7 @@ bool layoutAbsoluteDescendants(
528
558
  // we need to mutate these descendents. Make sure the path of
529
559
  // nodes to them is mutable before positioning.
530
560
  child->cloneChildrenIfNeeded();
561
+ cleanupContentsNodesRecursively(child);
531
562
  const Direction childDirection =
532
563
  child->resolveDirection(currentNodeDirection);
533
564
  // By now all descendants of the containing block that are not absolute
@@ -20,12 +20,23 @@ inline Align resolveChildAlignment(
20
20
  const Align align = child->style().alignSelf() == Align::Auto
21
21
  ? node->style().alignItems()
22
22
  : child->style().alignSelf();
23
- if (align == Align::Baseline && isColumn(node->style().flexDirection())) {
23
+
24
+ if (node->style().display() == Display::Flex && align == Align::Baseline &&
25
+ isColumn(node->style().flexDirection())) {
24
26
  return Align::FlexStart;
25
27
  }
28
+
26
29
  return align;
27
30
  }
28
31
 
32
+ inline Justify resolveChildJustification(
33
+ const yoga::Node* node,
34
+ const yoga::Node* child) {
35
+ return child->style().justifySelf() == Justify::Auto
36
+ ? node->style().justifyItems()
37
+ : child->style().justifySelf();
38
+ }
39
+
29
40
  /**
30
41
  * Fallback alignment to use on overflow
31
42
  * https://www.w3.org/TR/css-align-3/#distribution-values
@@ -35,7 +35,7 @@ namespace facebook::yoga {
35
35
 
36
36
  std::atomic<uint32_t> gCurrentGenerationCount(0);
37
37
 
38
- static void constrainMaxSizeForMode(
38
+ void constrainMaxSizeForMode(
39
39
  const yoga::Node* node,
40
40
  Direction direction,
41
41
  FlexDirection axis,
@@ -94,7 +94,18 @@ static void computeFlexBasisForChild(
94
94
  const bool isColumnStyleDimDefined =
95
95
  child->hasDefiniteLength(Dimension::Height, ownerHeight);
96
96
 
97
- if (resolvedFlexBasis.isDefined() && yoga::isDefined(mainAxisSize)) {
97
+ const bool fixFlexBasisFitContent =
98
+ node->getConfig()->isExperimentalFeatureEnabled(
99
+ ExperimentalFeature::FixFlexBasisFitContent);
100
+
101
+ bool useResolvedFlexBasis =
102
+ resolvedFlexBasis.isDefined() && yoga::isDefined(mainAxisSize);
103
+ if (fixFlexBasisFitContent && resolvedFlexBasis.isDefined() &&
104
+ resolvedFlexBasis.unwrap() > 0) {
105
+ useResolvedFlexBasis = true;
106
+ }
107
+
108
+ if (useResolvedFlexBasis) {
98
109
  if (child->getLayout().computedFlexBasis.isUndefined() ||
99
110
  (child->getConfig()->isExperimentalFeatureEnabled(
100
111
  ExperimentalFeature::WebFlexBasis) &&
@@ -164,12 +175,27 @@ static void computeFlexBasisForChild(
164
175
  }
165
176
  }
166
177
 
167
- if ((isMainAxisRow && node->style().overflow() == Overflow::Scroll) ||
168
- node->style().overflow() != Overflow::Scroll) {
169
- if (yoga::isUndefined(childHeight) && yoga::isDefined(height)) {
170
- childHeight = height;
171
- childHeightSizingMode = SizingMode::FitContent;
172
- }
178
+ // For height in the main axis (column direction): when the
179
+ // FixFlexBasisFitContent feature is enabled, skip FitContent for
180
+ // non-measure container children. This makes the flex basis independent
181
+ // of the parent's content-determined height, preventing unnecessary
182
+ // re-measurement cascades when a sibling changes size in a ScrollView.
183
+ //
184
+ // We only optimize the height (column) axis because text wrapping depends
185
+ // on width constraints propagating through container nodes. Removing
186
+ // FitContent from the width axis would cause text inside nested
187
+ // containers to stop wrapping.
188
+ bool applyHeightFitContent =
189
+ isMainAxisRow || node->style().overflow() != Overflow::Scroll;
190
+ if (fixFlexBasisFitContent) {
191
+ applyHeightFitContent = isMainAxisRow ||
192
+ (child->hasMeasureFunc() &&
193
+ node->style().overflow() != Overflow::Scroll);
194
+ }
195
+ if (applyHeightFitContent && yoga::isUndefined(childHeight) &&
196
+ yoga::isDefined(height)) {
197
+ childHeight = height;
198
+ childHeightSizingMode = SizingMode::FitContent;
173
199
  }
174
200
 
175
201
  const auto& childStyle = child->style();
@@ -468,7 +494,7 @@ static bool measureNodeWithFixedSize(
468
494
  return false;
469
495
  }
470
496
 
471
- static void zeroOutLayoutRecursively(yoga::Node* const node) {
497
+ void zeroOutLayoutRecursively(yoga::Node* const node) {
472
498
  node->getLayout() = {};
473
499
  node->setLayoutDimension(0, Dimension::Width);
474
500
  node->setLayoutDimension(0, Dimension::Height);
@@ -480,7 +506,7 @@ static void zeroOutLayoutRecursively(yoga::Node* const node) {
480
506
  }
481
507
  }
482
508
 
483
- static void cleanupContentsNodesRecursively(yoga::Node* const node) {
509
+ void cleanupContentsNodesRecursively(yoga::Node* const node) {
484
510
  if (node->hasContentsChildren()) [[unlikely]] {
485
511
  node->cloneContentsChildrenIfNeeded();
486
512
  for (auto child : node->getChildren()) {
@@ -498,7 +524,7 @@ static void cleanupContentsNodesRecursively(yoga::Node* const node) {
498
524
  }
499
525
  }
500
526
 
501
- static float calculateAvailableInnerDimension(
527
+ float calculateAvailableInnerDimension(
502
528
  const yoga::Node* const node,
503
529
  const Direction direction,
504
530
  const Dimension dimension,
@@ -537,6 +563,8 @@ static float computeFlexBasisForChildren(
537
563
  yoga::Node* const node,
538
564
  const float availableInnerWidth,
539
565
  const float availableInnerHeight,
566
+ const float ownerWidth,
567
+ const float ownerHeight,
540
568
  SizingMode widthSizingMode,
541
569
  SizingMode heightSizingMode,
542
570
  Direction direction,
@@ -598,8 +626,8 @@ static float computeFlexBasisForChildren(
598
626
  availableInnerWidth,
599
627
  widthSizingMode,
600
628
  availableInnerHeight,
601
- availableInnerWidth,
602
- availableInnerHeight,
629
+ ownerWidth,
630
+ ownerHeight,
603
631
  heightSizingMode,
604
632
  direction,
605
633
  layoutMarkerData,
@@ -1046,6 +1074,14 @@ static void justifyMainAxis(
1046
1074
 
1047
1075
  if (flexLine.numberOfAutoMargins == 0) {
1048
1076
  switch (justifyContent) {
1077
+ case Justify::Start:
1078
+ case Justify::End:
1079
+ case Justify::Auto:
1080
+ // No-Op
1081
+ break;
1082
+ case Justify::Stretch:
1083
+ // No-Op
1084
+ break;
1049
1085
  case Justify::Center:
1050
1086
  leadingMainDim = flexLine.layout.remainingFreeSpace / 2;
1051
1087
  break;
@@ -1113,7 +1149,14 @@ static void justifyMainAxis(
1113
1149
  // dimensionWithMargin.
1114
1150
  flexLine.layout.mainDim +=
1115
1151
  child->style().computeMarginForAxis(mainAxis, availableInnerWidth) +
1116
- childLayout.computedFlexBasis.unwrap();
1152
+ boundAxisWithinMinAndMax(
1153
+ child,
1154
+ direction,
1155
+ mainAxis,
1156
+ childLayout.computedFlexBasis,
1157
+ mainAxisOwnerSize,
1158
+ ownerWidth)
1159
+ .unwrap();
1117
1160
  flexLine.layout.crossDim = availableInnerCrossDim;
1118
1161
  } else {
1119
1162
  // The main dimension is the sum of all the elements dimension plus
@@ -1421,12 +1464,53 @@ static void calculateLayoutImpl(
1421
1464
 
1422
1465
  // STEP 3: DETERMINE FLEX BASIS FOR EACH ITEM
1423
1466
 
1467
+ // When this node is measured with MaxContent (FixFlexBasisFitContent
1468
+ // behavior), availableInnerHeight is NaN.
1469
+ // To preserve percentage resolution for descendants, derive a definite
1470
+ // owner-size from the parent-provided ownerHeight.
1471
+ float ownerWidthForChildren = availableInnerWidth;
1472
+ float ownerHeightForChildren = availableInnerHeight;
1473
+
1474
+ if (node->getConfig()->isExperimentalFeatureEnabled(
1475
+ ExperimentalFeature::FixFlexBasisFitContent)) {
1476
+ const auto* owner = node->getOwner();
1477
+ const bool isChildOfScrollContainer =
1478
+ owner != nullptr && owner->style().overflow() == Overflow::Scroll;
1479
+
1480
+ if (!isChildOfScrollContainer) {
1481
+ if (yoga::isUndefined(ownerWidthForChildren) &&
1482
+ yoga::isDefined(ownerWidth)) {
1483
+ ownerWidthForChildren = calculateAvailableInnerDimension(
1484
+ node,
1485
+ direction,
1486
+ Dimension::Width,
1487
+ ownerWidth - marginAxisRow,
1488
+ paddingAndBorderAxisRow,
1489
+ ownerWidth,
1490
+ ownerWidth);
1491
+ }
1492
+ if (yoga::isUndefined(ownerHeightForChildren) &&
1493
+ yoga::isDefined(ownerHeight)) {
1494
+ ownerHeightForChildren = calculateAvailableInnerDimension(
1495
+ node,
1496
+ direction,
1497
+ Dimension::Height,
1498
+ ownerHeight - marginAxisColumn,
1499
+ paddingAndBorderAxisColumn,
1500
+ ownerHeight,
1501
+ ownerWidth);
1502
+ }
1503
+ }
1504
+ }
1505
+
1424
1506
  // Computed basis + margins + gap
1425
1507
  float totalMainDim = 0;
1426
1508
  totalMainDim += computeFlexBasisForChildren(
1427
1509
  node,
1428
1510
  availableInnerWidth,
1429
1511
  availableInnerHeight,
1512
+ ownerWidthForChildren,
1513
+ ownerHeightForChildren,
1430
1514
  widthSizingMode,
1431
1515
  heightSizingMode,
1432
1516
  direction,
@@ -1799,6 +1883,10 @@ static void calculateLayoutImpl(
1799
1883
  : fallbackAlignment(node->style().alignContent());
1800
1884
 
1801
1885
  switch (alignContent) {
1886
+ case Align::Start:
1887
+ case Align::End:
1888
+ // No-Op
1889
+ break;
1802
1890
  case Align::FlexEnd:
1803
1891
  currentLead += remainingAlignContentDim;
1804
1892
  break;
@@ -1886,6 +1974,10 @@ static void calculateLayoutImpl(
1886
1974
  }
1887
1975
  if (child->style().positionType() != PositionType::Absolute) {
1888
1976
  switch (resolveChildAlignment(node, child)) {
1977
+ case Align::Start:
1978
+ case Align::End:
1979
+ // Not yet implemented
1980
+ break;
1889
1981
  case Align::FlexStart: {
1890
1982
  child->setLayoutPosition(
1891
1983
  currentLead +
@@ -35,4 +35,26 @@ bool calculateLayoutInternal(
35
35
  uint32_t depth,
36
36
  uint32_t generationCount);
37
37
 
38
+ void constrainMaxSizeForMode(
39
+ const yoga::Node* node,
40
+ Direction direction,
41
+ FlexDirection axis,
42
+ float ownerAxisSize,
43
+ float ownerWidth,
44
+ /*in_out*/ SizingMode* mode,
45
+ /*in_out*/ float* size);
46
+
47
+ float calculateAvailableInnerDimension(
48
+ const yoga::Node* const node,
49
+ const Direction direction,
50
+ const Dimension dimension,
51
+ const float availableDim,
52
+ float paddingAndBorder,
53
+ const float ownerDim,
54
+ const float ownerWidth);
55
+
56
+ void zeroOutLayoutRecursively(yoga::Node* const node);
57
+
58
+ void cleanupContentsNodesRecursively(yoga::Node* const node);
59
+
38
60
  } // namespace facebook::yoga
@@ -25,11 +25,13 @@ enum class Align : uint8_t {
25
25
  SpaceBetween = YGAlignSpaceBetween,
26
26
  SpaceAround = YGAlignSpaceAround,
27
27
  SpaceEvenly = YGAlignSpaceEvenly,
28
+ Start = YGAlignStart,
29
+ End = YGAlignEnd,
28
30
  };
29
31
 
30
32
  template <>
31
33
  constexpr int32_t ordinalCount<Align>() {
32
- return 9;
34
+ return 11;
33
35
  }
34
36
 
35
37
  constexpr Align scopedEnum(YGAlign unscoped) {
@@ -19,11 +19,12 @@ enum class Display : uint8_t {
19
19
  Flex = YGDisplayFlex,
20
20
  None = YGDisplayNone,
21
21
  Contents = YGDisplayContents,
22
+ Grid = YGDisplayGrid,
22
23
  };
23
24
 
24
25
  template <>
25
26
  constexpr int32_t ordinalCount<Display>() {
26
- return 3;
27
+ return 4;
27
28
  }
28
29
 
29
30
  constexpr Display scopedEnum(YGDisplay unscoped) {
@@ -17,11 +17,12 @@ namespace facebook::yoga {
17
17
 
18
18
  enum class ExperimentalFeature : uint8_t {
19
19
  WebFlexBasis = YGExperimentalFeatureWebFlexBasis,
20
+ FixFlexBasisFitContent = YGExperimentalFeatureFixFlexBasisFitContent,
20
21
  };
21
22
 
22
23
  template <>
23
24
  constexpr int32_t ordinalCount<ExperimentalFeature>() {
24
- return 1;
25
+ return 2;
25
26
  }
26
27
 
27
28
  constexpr ExperimentalFeature scopedEnum(YGExperimentalFeature unscoped) {
@@ -0,0 +1,43 @@
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
+ // @generated by enums.py
9
+ // clang-format off
10
+ #pragma once
11
+
12
+ #include <cstdint>
13
+ #include <yoga/YGEnums.h>
14
+ #include <yoga/enums/YogaEnums.h>
15
+
16
+ namespace facebook::yoga {
17
+
18
+ enum class GridTrackType : uint8_t {
19
+ Auto = YGGridTrackTypeAuto,
20
+ Points = YGGridTrackTypePoints,
21
+ Percent = YGGridTrackTypePercent,
22
+ Fr = YGGridTrackTypeFr,
23
+ Minmax = YGGridTrackTypeMinmax,
24
+ };
25
+
26
+ template <>
27
+ constexpr int32_t ordinalCount<GridTrackType>() {
28
+ return 5;
29
+ }
30
+
31
+ constexpr GridTrackType scopedEnum(YGGridTrackType unscoped) {
32
+ return static_cast<GridTrackType>(unscoped);
33
+ }
34
+
35
+ constexpr YGGridTrackType unscopedEnum(GridTrackType scoped) {
36
+ return static_cast<YGGridTrackType>(scoped);
37
+ }
38
+
39
+ inline const char* toString(GridTrackType e) {
40
+ return YGGridTrackTypeToString(unscopedEnum(e));
41
+ }
42
+
43
+ } // namespace facebook::yoga
@@ -16,17 +16,21 @@
16
16
  namespace facebook::yoga {
17
17
 
18
18
  enum class Justify : uint8_t {
19
+ Auto = YGJustifyAuto,
19
20
  FlexStart = YGJustifyFlexStart,
20
21
  Center = YGJustifyCenter,
21
22
  FlexEnd = YGJustifyFlexEnd,
22
23
  SpaceBetween = YGJustifySpaceBetween,
23
24
  SpaceAround = YGJustifySpaceAround,
24
25
  SpaceEvenly = YGJustifySpaceEvenly,
26
+ Stretch = YGJustifyStretch,
27
+ Start = YGJustifyStart,
28
+ End = YGJustifyEnd,
25
29
  };
26
30
 
27
31
  template <>
28
32
  constexpr int32_t ordinalCount<Justify>() {
29
- return 6;
33
+ return 10;
30
34
  }
31
35
 
32
36
  constexpr Justify scopedEnum(YGJustify unscoped) {
@@ -29,6 +29,8 @@ const char* LayoutPassReasonToString(const LayoutPassReason value) {
29
29
  return "abs_measure";
30
30
  case LayoutPassReason::kFlexMeasure:
31
31
  return "flex_measure";
32
+ case LayoutPassReason::kGridLayout:
33
+ return "grid_layout";
32
34
  default:
33
35
  return "unknown";
34
36
  }
@@ -32,6 +32,7 @@ enum struct LayoutPassReason : int {
32
32
  kMeasureChild = 5,
33
33
  kAbsMeasureChild = 6,
34
34
  kFlexMeasure = 7,
35
+ kGridLayout = 8,
35
36
  COUNT
36
37
  };
37
38
 
@@ -392,7 +392,12 @@ void Node::cloneChildrenIfNeeded() {
392
392
  child = resolveRef(config_->cloneNode(child, this, i));
393
393
  child->setOwner(this);
394
394
 
395
- if (child->hasContentsChildren()) [[unlikely]] {
395
+ if (child->style().display() == Display::Contents) [[unlikely]] {
396
+ // The contents node's children are treated as children of the
397
+ // contents node's parent for layout purposes, so they need
398
+ // to be cloned as well.
399
+ child->cloneChildrenIfNeeded();
400
+ } else if (child->hasContentsChildren()) [[unlikely]] {
396
401
  child->cloneContentsChildrenIfNeeded();
397
402
  }
398
403
  }
@@ -294,15 +294,15 @@ class YG_EXPORT Node : public ::YGNode {
294
294
  bool isNodeFlexible();
295
295
  void reset();
296
296
 
297
- private:
298
- // Used to allow resetting the node
299
- Node& operator=(Node&&) noexcept = default;
300
-
301
297
  float relativePosition(
302
298
  FlexDirection axis,
303
299
  Direction direction,
304
300
  float axisSize) const;
305
301
 
302
+ private:
303
+ // Used to allow resetting the node
304
+ Node& operator=(Node&&) noexcept = default;
305
+
306
306
  void useWebDefaults() {
307
307
  style_.setFlexDirection(FlexDirection::Row);
308
308
  style_.setAlignContent(Align::Stretch);
@@ -0,0 +1,53 @@
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
+ #pragma once
9
+
10
+ #include <cstdint>
11
+
12
+ namespace facebook::yoga {
13
+
14
+ // https://www.w3.org/TR/css-grid-1/#typedef-grid-row-start-grid-line
15
+ enum class GridLineType : uint8_t {
16
+ Auto,
17
+ Integer,
18
+ Span,
19
+ };
20
+
21
+ struct GridLine {
22
+ GridLineType type{};
23
+ // Line position (1, 2, -1, -2, etc)
24
+ int32_t integer{};
25
+
26
+ constexpr static GridLine auto_() {
27
+ return GridLine{.type = GridLineType::Auto, .integer = 0};
28
+ }
29
+
30
+ constexpr static GridLine fromInteger(int32_t value) {
31
+ return GridLine{.type = GridLineType::Integer, .integer = value};
32
+ }
33
+
34
+ constexpr static GridLine span(int32_t value) {
35
+ return GridLine{.type = GridLineType::Span, .integer = value};
36
+ }
37
+
38
+ constexpr bool isAuto() const {
39
+ return type == GridLineType::Auto;
40
+ }
41
+
42
+ constexpr bool isInteger() const {
43
+ return type == GridLineType::Integer;
44
+ }
45
+
46
+ constexpr bool isSpan() const {
47
+ return type == GridLineType::Span;
48
+ }
49
+
50
+ bool operator==(const GridLine& other) const = default;
51
+ };
52
+
53
+ } // namespace facebook::yoga
@@ -0,0 +1,63 @@
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
+ #pragma once
9
+
10
+ #include <yoga/style/StyleSizeLength.h>
11
+ #include <vector>
12
+
13
+ namespace facebook::yoga {
14
+ // https://www.w3.org/TR/css-grid-1/#typedef-track-size
15
+ struct GridTrackSize {
16
+ StyleSizeLength minSizingFunction;
17
+ StyleSizeLength maxSizingFunction;
18
+
19
+ // These are used in the grid layout algorithm when distributing spaces among
20
+ // tracks
21
+ // TODO: maybe move them to TrackSizing since these are track states
22
+ float baseSize = 0.0f;
23
+ float growthLimit = 0.0f;
24
+ bool infinitelyGrowable = false;
25
+
26
+ // Static factory methods for common cases
27
+ constexpr static GridTrackSize auto_() {
28
+ return GridTrackSize{
29
+ .minSizingFunction = StyleSizeLength::ofAuto(),
30
+ .maxSizingFunction = StyleSizeLength::ofAuto()};
31
+ }
32
+
33
+ constexpr static GridTrackSize length(float points) {
34
+ auto len = StyleSizeLength::points(points);
35
+ return GridTrackSize{.minSizingFunction = len, .maxSizingFunction = len};
36
+ }
37
+
38
+ constexpr static GridTrackSize fr(float fraction) {
39
+ // Flex sizing function is always a max sizing function
40
+ return GridTrackSize{
41
+ .minSizingFunction = StyleSizeLength::ofAuto(),
42
+ .maxSizingFunction = StyleSizeLength::stretch(fraction)};
43
+ }
44
+
45
+ constexpr static GridTrackSize percent(float percentage) {
46
+ return GridTrackSize{
47
+ .minSizingFunction = StyleSizeLength::percent(percentage),
48
+ .maxSizingFunction = StyleSizeLength::percent(percentage)};
49
+ }
50
+
51
+ constexpr static GridTrackSize minmax(
52
+ StyleSizeLength min,
53
+ StyleSizeLength max) {
54
+ return GridTrackSize{.minSizingFunction = min, .maxSizingFunction = max};
55
+ }
56
+
57
+ bool operator==(const GridTrackSize& other) const = default;
58
+ };
59
+
60
+ // Grid track list for grid-template-rows/columns properties
61
+ using GridTrackList = std::vector<GridTrackSize>;
62
+
63
+ } // namespace facebook::yoga