Skip to content

Commit

Permalink
Add YGGutter Enum
Browse files Browse the repository at this point in the history
Summary:
This adds the YGGutter enum, used to choose between row/column gap variants (row-gap, column-gap, gap).

This used later in changes from #1116, in the APIs which deal with setting gap on style on yoga node.

Note the original PR called this `YGGap`, but this ending up leading to a couple public method signatures that could appear ambiguous:
1. `SetGap(YGGap gap, float gapLength)`: Enums like `YGAlign` are the vaues for an `align` prop. `YGGap` controls the variant of the gap (like `YGEdge` does for left/right/top/bottom variants). So the enum reads as if it is the `gapValue`, and it looks like we have two of the same parameter.
2. `SetGap(YGGap gapDirection, float gap)`: This is misleading, because the direction gaps flow is the cross-axis of flex-direction.
3. `GetGap(YGGap gap)`: `gap` is the variant, but looks like an out param.

The [CSS Box Alignment](https://www.w3.org/TR/css-align-3/#column-row-gap) spec refers to these gaps as "Gutters", which removes the ambiguity.

Changelog:
[General][Added] - Add YGGutter Enum

Reviewed By: yungsters

Differential Revision: D39922412

fbshipit-source-id: 4b0baf800fecb3d03560a4267c7fb4c4330fd39e
  • Loading branch information
NickGerleman authored and facebook-github-bot committed Sep 30, 2022
1 parent 5a18ccd commit 206bf41
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 0 deletions.
18 changes: 18 additions & 0 deletions csharp/Facebook.Yoga/YogaGutter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

// @generated by enums.py

namespace Facebook.Yoga
{
public enum YogaGutter
{
Column,
Row,
All,
}
}
1 change: 1 addition & 0 deletions enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
"WebFlexBasis"
],
"PrintOptions": [("Layout", 1), ("Style", 2), ("Children", 4)],
"Gutter": ["Column", "Row", "All"],
}

# Generated Java enums used to emit @DoNotStrip, but D17519844 removed them
Expand Down
35 changes: 35 additions & 0 deletions java/com/facebook/yoga/YogaGutter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

// @generated by enums.py

package com.facebook.yoga;

public enum YogaGutter {
COLUMN(0),
ROW(1),
ALL(2);

private final int mIntValue;

YogaGutter(int intValue) {
mIntValue = intValue;
}

public int intValue() {
return mIntValue;
}

public static YogaGutter fromInt(int value) {
switch (value) {
case 0: return COLUMN;
case 1: return ROW;
case 2: return ALL;
default: throw new IllegalArgumentException("Unknown enum value: " + value);
}
}
}
10 changes: 10 additions & 0 deletions javascript/sources/YGEnums.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ const CONSTANTS = {
FLEX_DIRECTION_ROW: 2,
FLEX_DIRECTION_ROW_REVERSE: 3,

GUTTER_COUNT: 3,
GUTTER_COLUMN: 0,
GUTTER_ROW: 1,
GUTTER_ALL: 2,

JUSTIFY_COUNT: 6,
JUSTIFY_FLEX_START: 0,
JUSTIFY_CENTER: 1,
Expand Down Expand Up @@ -147,6 +152,11 @@ export type Yoga$FlexDirection =
| typeof CONSTANTS.FLEX_DIRECTION_ROW
| typeof CONSTANTS.FLEX_DIRECTION_ROW_REVERSE;

export type Yoga$Gutter =
| typeof CONSTANTS.GUTTER_COLUMN
| typeof CONSTANTS.GUTTER_ROW
| typeof CONSTANTS.GUTTER_ALL;

export type Yoga$Justify =
| typeof CONSTANTS.JUSTIFY_FLEX_START
| typeof CONSTANTS.JUSTIFY_CENTER
Expand Down
12 changes: 12 additions & 0 deletions yoga/YGEnums.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,18 @@ const char* YGFlexDirectionToString(const YGFlexDirection value) {
return "unknown";
}

const char* YGGutterToString(const YGGutter value) {
switch (value) {
case YGGutterColumn:
return "column";
case YGGutterRow:
return "row";
case YGGutterAll:
return "all";
}
return "unknown";
}

const char* YGJustifyToString(const YGJustify value) {
switch (value) {
case YGJustifyFlexStart:
Expand Down
6 changes: 6 additions & 0 deletions yoga/YGEnums.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ YG_ENUM_SEQ_DECL(
YGFlexDirectionRow,
YGFlexDirectionRowReverse)

YG_ENUM_SEQ_DECL(
YGGutter,
YGGutterColumn,
YGGutterRow,
YGGutterAll)

YG_ENUM_SEQ_DECL(
YGJustify,
YGJustifyFlexStart,
Expand Down

0 comments on commit 206bf41

Please sign in to comment.