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 facebook/yoga#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 5f9689a commit 87e7912
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
35 changes: 35 additions & 0 deletions ReactAndroid/src/main/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);
}
}
}
12 changes: 12 additions & 0 deletions ReactCommon/yoga/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 ReactCommon/yoga/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 87e7912

Please sign in to comment.