Skip to content

Commit

Permalink
Android: Forward RN start/end styles to Yoga
Browse files Browse the repository at this point in the history
Reviewed By: AaaChiuuu

Differential Revision: D5906097

fbshipit-source-id: 79bd43ea54572eb612e781628551bccf5a4f948d
  • Loading branch information
RSNara authored and facebook-github-bot committed Oct 19, 2017
1 parent 64284bf commit dc92e69
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 53 deletions.
Expand Up @@ -5,6 +5,7 @@
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.react.bridge.ReadableType;
import com.facebook.react.modules.i18nmanager.I18nUtil;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.annotations.ReactPropGroup;
import com.facebook.yoga.YogaAlign;
Expand Down Expand Up @@ -623,25 +624,48 @@ public void setBorderWidths(int index, float borderWidth) {
setBorder(ViewProps.BORDER_SPACING_TYPES[index], PixelUtil.toPixelFromDIP(borderWidth));
}

@ReactPropGroup(names = {
@ReactPropGroup(
names = {
ViewProps.START,
ViewProps.END,
ViewProps.LEFT,
ViewProps.RIGHT,
ViewProps.TOP,
ViewProps.BOTTOM,
})
}
)
public void setPositionValues(int index, Dynamic position) {
if (isVirtual()) {
return;
}

final int[] POSITION_SPACING_TYPES = {
Spacing.START, Spacing.END, Spacing.LEFT, Spacing.RIGHT, Spacing.TOP, Spacing.BOTTOM
};

int spacingType = POSITION_SPACING_TYPES[index];

if (I18nUtil.getInstance().doesRTLFlipLeftAndRightStyles(getThemedContext())) {
switch (spacingType) {
case Spacing.LEFT:
spacingType = Spacing.START;
break;
case Spacing.RIGHT:
spacingType = Spacing.END;
break;
default:
break;
}
}

mTempYogaValue.setFromDynamic(position);
switch (mTempYogaValue.unit) {
case POINT:
case UNDEFINED:
setPosition(ViewProps.POSITION_SPACING_TYPES[index], mTempYogaValue.value);
setPosition(spacingType, mTempYogaValue.value);
break;
case PERCENT:
setPositionPercent(ViewProps.POSITION_SPACING_TYPES[index], mTempYogaValue.value);
setPositionPercent(spacingType, mTempYogaValue.value);
break;
}

Expand Down
103 changes: 54 additions & 49 deletions ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java
Expand Up @@ -60,6 +60,8 @@ public class ViewProps {
public static final String RIGHT = "right";
public static final String TOP = "top";
public static final String WIDTH = "width";
public static final String START = "start";
public static final String END = "end";

public static final String MIN_WIDTH = "minWidth";
public static final String MAX_WIDTH = "maxWidth";
Expand Down Expand Up @@ -118,57 +120,60 @@ public class ViewProps {
Spacing.BOTTOM
};
public static final int[] POSITION_SPACING_TYPES = {
Spacing.START, Spacing.END, Spacing.TOP, Spacing.BOTTOM
Spacing.START, Spacing.END, Spacing.TOP, Spacing.BOTTOM
};

private static final HashSet<String> LAYOUT_ONLY_PROPS = new HashSet<>(
Arrays.asList(
ALIGN_SELF,
ALIGN_ITEMS,
COLLAPSABLE,
FLEX,
FLEX_BASIS,
FLEX_DIRECTION,
FLEX_GROW,
FLEX_SHRINK,
FLEX_WRAP,
JUSTIFY_CONTENT,
OVERFLOW,
ALIGN_CONTENT,
DISPLAY,

/* position */
POSITION,
RIGHT,
TOP,
BOTTOM,
LEFT,

/* dimensions */
WIDTH,
HEIGHT,
MIN_WIDTH,
MAX_WIDTH,
MIN_HEIGHT,
MAX_HEIGHT,

/* margins */
MARGIN,
MARGIN_VERTICAL,
MARGIN_HORIZONTAL,
MARGIN_LEFT,
MARGIN_RIGHT,
MARGIN_TOP,
MARGIN_BOTTOM,

/* paddings */
PADDING,
PADDING_VERTICAL,
PADDING_HORIZONTAL,
PADDING_LEFT,
PADDING_RIGHT,
PADDING_TOP,
PADDING_BOTTOM));
private static final HashSet<String> LAYOUT_ONLY_PROPS =
new HashSet<>(
Arrays.asList(
ALIGN_SELF,
ALIGN_ITEMS,
COLLAPSABLE,
FLEX,
FLEX_BASIS,
FLEX_DIRECTION,
FLEX_GROW,
FLEX_SHRINK,
FLEX_WRAP,
JUSTIFY_CONTENT,
OVERFLOW,
ALIGN_CONTENT,
DISPLAY,

/* position */
POSITION,
RIGHT,
TOP,
BOTTOM,
LEFT,
START,
END,

/* dimensions */
WIDTH,
HEIGHT,
MIN_WIDTH,
MAX_WIDTH,
MIN_HEIGHT,
MAX_HEIGHT,

/* margins */
MARGIN,
MARGIN_VERTICAL,
MARGIN_HORIZONTAL,
MARGIN_LEFT,
MARGIN_RIGHT,
MARGIN_TOP,
MARGIN_BOTTOM,

/* paddings */
PADDING,
PADDING_VERTICAL,
PADDING_HORIZONTAL,
PADDING_LEFT,
PADDING_RIGHT,
PADDING_TOP,
PADDING_BOTTOM));

public static boolean sIsOptimizationsEnabled;

Expand Down

0 comments on commit dc92e69

Please sign in to comment.