Spec-correct CSS Flexbox §4.5 auto-min-size opt-in on YGConfig (#57015)

Summary:
X-link: https://github.com/facebook/yoga/pull/1966

Pull Request resolved: https://github.com/facebook/react-native/pull/57015

Implements CSS Flexbox §4.5 automatic minimum sizing in Yoga. When opted in on a `YGConfig`, every flex item whose main-axis `min-{width,height}` is undefined receives a content-derived floor — `min(min-content, specified-size, max-size)` plus any aspect-ratio-transferred lower bound — so it cannot shrink below the size CSS browsers would honor.

How to opt in: clear the new `YGErrataMinSizeUndefinedInsteadOfAuto` errata bit on the config. Default configs carry the bit (preserves today's behaviour); existing trees see no change. The bit is added to `YGErrataClassic` so consumers using that constant continue to get the same default.

Three ways for a node to declare its min-content size along an axis, in this precedence order:

1. **Static per-axis value** via `YGNodeSetMinContentWidth/Height(node, value)`. Pass `YGUndefined` to clear. When set, the §4.5 probe short-circuits at this node — skipping both the dynamic callback and any container recursion. Use for known constants (e.g., images returning 0 per CSS-Images; scroll containers returning 0 on their scroll axis).

2. **Dynamic callback** via `YGNodeSetMinContentMeasureFunc(node, fn)`. Mirrors `YGMeasureFunc`'s shape. The algorithm invokes it for measure-func leaves when no static value is set.

3. **Default fallback**: the existing `YGMeasureFunc` invoked with `AtMost 0`, which text measurers naturally answer with their longest-word width.

For container nodes without a static value, the algorithm walks children directly — sum on the container's own main axis, max on the cross axis — mirroring RenderCore FlexLayout's `computeMinContentSize`. This replaces the previous `calculateLayoutInternal(performLayout=false)` re-entry and skips cross-axis sizing, padding/border resolution, alignment, and baseline machinery that the probe doesn't need.

Per-item opt-outs follow the CSS spec: explicit `min-{width,height}` (including 0), `display: none`, and `overflow != visible`.

Cost when off (default): a single errata-bit check per flex line plus one `FloatOptional` short-circuit per `boundAxisWithAutoMin` call. Sub-microsecond.

Cost when on: one min-content probe per opted-in flex item per layout pass. Static values short-circuit in ~30 ns; measure-func leaves cost one extra `measure()` call; container subtrees do one recursive sum/max walk over in-flow descendants.

Reference: https://www.w3.org/TR/css-flexbox-1/#min-size-auto. Modeled after `xplat/flexlayout/`'s `MinSizeUndefinedInsteadOfAuto` errata path.

Changelog:
[General][Added] - Add CSS Flexbox §4.5 automatic minimum sizing. Opt in by clearing the new `YGErrataMinSizeUndefinedInsteadOfAuto` errata bit on `YGConfig`. Adds `YGNodeSetMinContentWidth/Height` for static contributions and `YGMinContentMeasureFunc` for dynamic ones.'

GH pull request
https://github.com/facebook/react-native/pull/57015
https://github.com/facebook/yoga/pull/1966

Reviewed By: fbcbl

Differential Revision: D105720159

fbshipit-source-id: 57a14408b10535fd84623b4d99ae9b5fba7b35ba
This commit is contained in:
Aditya Sharat
2026-06-01 10:05:39 -07:00
committed by meta-codesync[bot]
parent ee6958a9f4
commit 7f396d1116
27 changed files with 702 additions and 4 deletions
@@ -12960,6 +12960,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -12967,6 +12968,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -12977,6 +12979,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -13030,6 +13034,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -13279,6 +13286,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -13538,6 +13546,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -12598,6 +12598,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -12605,6 +12606,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -12615,6 +12617,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -12668,6 +12672,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -12917,6 +12924,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -13176,6 +13184,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -12813,6 +12813,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -12820,6 +12821,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -12830,6 +12832,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -12883,6 +12887,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -13132,6 +13139,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -13391,6 +13399,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -15176,6 +15176,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -15183,6 +15184,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -15193,6 +15195,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -15246,6 +15250,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -15495,6 +15502,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -15754,6 +15762,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -14497,6 +14497,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -14504,6 +14505,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -14514,6 +14516,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -14567,6 +14571,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -14816,6 +14823,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -15075,6 +15083,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -15039,6 +15039,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -15046,6 +15047,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -15056,6 +15058,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -15109,6 +15113,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -15358,6 +15365,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -15617,6 +15625,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -9925,6 +9925,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -9932,6 +9933,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -9942,6 +9944,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -9995,6 +9999,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -10244,6 +10251,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -10503,6 +10511,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -9765,6 +9765,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -9772,6 +9773,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -9782,6 +9784,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -9835,6 +9839,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -10084,6 +10091,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -10343,6 +10351,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;
@@ -9916,6 +9916,7 @@ class facebook::yoga::Node : public YGNode {
public Node(facebook::yoga::Node&& node) noexcept;
public YGDirtiedFunc getDirtiedFunc() const;
public YGSize measure(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public YGSize measureMinContent(float availableWidth, facebook::yoga::MeasureMode widthMode, float availableHeight, facebook::yoga::MeasureMode heightMode);
public bool alwaysFormsContainingBlock() const;
public bool getHasNewLayout() const;
public bool hasBaselineFunc() const noexcept;
@@ -9923,6 +9924,7 @@ class facebook::yoga::Node : public YGNode {
public bool hasDefiniteLength(facebook::yoga::Dimension dimension, float ownerSize);
public bool hasErrata(facebook::yoga::Errata errata) const;
public bool hasMeasureFunc() const noexcept;
public bool hasMinContentMeasureFunc() const noexcept;
public bool isDirty() const;
public bool isLayoutDimensionDefined(facebook::yoga::FlexDirection axis);
public bool isNodeFlexible();
@@ -9933,6 +9935,8 @@ class facebook::yoga::Node : public YGNode {
public const facebook::yoga::Style& style() const;
public const std::vector<facebook::yoga::Node*>& getChildren() const;
public facebook::yoga::Direction resolveDirection(facebook::yoga::Direction ownerDirection);
public facebook::yoga::FloatOptional getMinContentHeight() const noexcept;
public facebook::yoga::FloatOptional getMinContentWidth() const noexcept;
public facebook::yoga::FloatOptional getResolvedDimension(facebook::yoga::Direction direction, facebook::yoga::Dimension dimension, float referenceLength, float ownerWidth) const;
public facebook::yoga::FloatOptional resolveFlexBasis(facebook::yoga::Direction direction, facebook::yoga::FlexDirection flexDirection, float referenceLength, float ownerWidth) const;
public facebook::yoga::LayoutResults& getLayout();
@@ -9986,6 +9990,9 @@ class facebook::yoga::Node : public YGNode {
public void setLayoutPosition(float position, facebook::yoga::PhysicalEdge edge);
public void setLineIndex(size_t lineIndex);
public void setMeasureFunc(YGMeasureFunc measureFunc);
public void setMinContentHeight(facebook::yoga::FloatOptional minContentHeight) noexcept;
public void setMinContentMeasureFunc(YGMinContentMeasureFunc minContentMeasureFunc);
public void setMinContentWidth(facebook::yoga::FloatOptional minContentWidth) noexcept;
public void setNodeType(facebook::yoga::NodeType nodeType);
public void setOwner(facebook::yoga::Node* owner);
public void setPosition(facebook::yoga::Direction direction, float ownerWidth, float ownerHeight);
@@ -10235,6 +10242,7 @@ enum facebook::yoga::Errata : uint32_t {
AbsolutePositionWithoutInsetsExcludesPadding,
All,
Classic,
MinSizeUndefinedInsteadOfAuto,
None,
StretchFlexBasis,
}
@@ -10494,6 +10502,7 @@ struct facebook::yoga::LayoutResults {
public facebook::yoga::CachedMeasurement cachedLayout;
public facebook::yoga::Direction direction() const;
public facebook::yoga::Direction lastOwnerDirection;
public facebook::yoga::FloatOptional computedAutoMinMainSize;
public facebook::yoga::FloatOptional computedFlexBasis;
public float border(facebook::yoga::PhysicalEdge physicalEdge) const;
public float dimension(facebook::yoga::Dimension axis) const;