Update public API for intrinsic sizing setters (#1722)

Summary:
X-link: https://github.com/facebook/react-native/pull/46939

Pull Request resolved: https://github.com/facebook/yoga/pull/1722

tsia! opted for one function for each keyword just like auto. This is kinda annoying and not the most sustainable, so maybe it makes more sense to make a new enum here and just add one function

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D64002837

fbshipit-source-id: f15fae9fc0103175e1d85850fc9aa68579989fd3
This commit is contained in:
Joe Vilches
2024-11-04 16:02:37 -08:00
committed by Facebook GitHub Bot
parent f52ec78584
commit 488288e291
11 changed files with 634 additions and 16 deletions

View File

@@ -134,17 +134,41 @@ export type Node = {
setDirection(direction: Direction): void;
setDisplay(display: Display): void;
setFlex(flex: number | undefined): void;
setFlexBasis(flexBasis: number | 'auto' | `${number}%` | undefined): void;
setFlexBasis(
flexBasis:
| number
| 'auto'
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setFlexBasisPercent(flexBasis: number | undefined): void;
setFlexBasisAuto(): void;
setFlexBasisFitContent(): void;
setFlexBasisMaxContent(): void;
setFlexBasisStretch(): void;
setFlexDirection(flexDirection: FlexDirection): void;
setFlexGrow(flexGrow: number | undefined): void;
setFlexShrink(flexShrink: number | undefined): void;
setFlexWrap(flexWrap: Wrap): void;
setHeight(height: number | 'auto' | `${number}%` | undefined): void;
setHeight(
height:
| number
| 'auto'
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setIsReferenceBaseline(isReferenceBaseline: boolean): void;
setHeightAuto(): void;
setHeightFitContent(): void;
setHeightMaxContent(): void;
setHeightPercent(height: number | undefined): void;
setHeightStretch(): void;
setJustifyContent(justifyContent: Justify): void;
setGap(gutter: Gutter, gapLength: number | `${number}%` | undefined): Value;
setGapPercent(gutter: Gutter, gapLength: number | undefined): Value;
@@ -154,16 +178,60 @@ export type Node = {
): void;
setMarginAuto(edge: Edge): void;
setMarginPercent(edge: Edge, margin: number | undefined): void;
setMaxHeight(maxHeight: number | `${number}%` | undefined): void;
setMaxHeight(
maxHeight:
| number
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setMaxHeightFitContent(): void;
setMaxHeightMaxContent(): void;
setMaxHeightPercent(maxHeight: number | undefined): void;
setMaxWidth(maxWidth: number | `${number}%` | undefined): void;
setMaxHeightStretch(): void;
setMaxWidth(
maxWidth:
| number
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setMaxWidthFitContent(): void;
setMaxWidthMaxContent(): void;
setMaxWidthPercent(maxWidth: number | undefined): void;
setMaxWidthStretch(): void;
setDirtiedFunc(dirtiedFunc: DirtiedFunction | null): void;
setMeasureFunc(measureFunc: MeasureFunction | null): void;
setMinHeight(minHeight: number | `${number}%` | undefined): void;
setMinHeight(
minHeight:
| number
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setMinHeightFitContent(): void;
setMinHeightMaxContent(): void;
setMinHeightPercent(minHeight: number | undefined): void;
setMinWidth(minWidth: number | `${number}%` | undefined): void;
setMinHeightStretch(): void;
setMinWidth(
minWidth:
| number
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setMinWidthFitContent(): void;
setMinWidthMaxContent(): void;
setMinWidthPercent(minWidth: number | undefined): void;
setMinWidthStretch(): void;
setOverflow(overflow: Overflow): void;
setPadding(edge: Edge, padding: number | `${number}%` | undefined): void;
setPaddingPercent(edge: Edge, padding: number | undefined): void;
@@ -172,9 +240,21 @@ export type Node = {
setPositionType(positionType: PositionType): void;
setPositionAuto(edge: Edge): void;
setBoxSizing(boxSizing: BoxSizing): void;
setWidth(width: number | 'auto' | `${number}%` | undefined): void;
setWidth(
width:
| number
| 'auto'
| 'fit-content'
| 'max-content'
| 'stretch'
| `${number}%`
| undefined,
): void;
setWidthAuto(): void;
setWidthFitContent(): void;
setWidthMaxContent(): void;
setWidthPercent(width: number | undefined): void;
setWidthStretch(): void;
unsetDirtiedFunc(): void;
unsetMeasureFunc(): void;
setAlwaysFormsContainingBlock(alwaysFormsContainingBlock: boolean): void;
@@ -220,6 +300,9 @@ export default function wrapAssembly(lib: any): Yoga {
[Unit.Point]: lib.Node.prototype[fnName],
[Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],
[Unit.Auto]: lib.Node.prototype[`${fnName}Auto`],
[Unit.MaxContent]: lib.Node.prototype[`${fnName}MaxContent`],
[Unit.FitContent]: lib.Node.prototype[`${fnName}FitContent`],
[Unit.Stretch]: lib.Node.prototype[`${fnName}Stretch`],
};
patch(lib.Node.prototype, fnName, function (original, ...args) {
@@ -232,6 +315,15 @@ export default function wrapAssembly(lib: any): Yoga {
if (value === 'auto') {
unit = Unit.Auto;
asNumber = undefined;
} else if (value == 'max-content') {
unit = Unit.MaxContent;
asNumber = undefined;
} else if (value == 'fit-content') {
unit = Unit.FitContent;
asNumber = undefined;
} else if (value == 'stretch') {
unit = Unit.Stretch;
asNumber = undefined;
} else if (typeof value === 'object') {
unit = value.unit;
asNumber = value.valueOf();