Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,14 @@ void packAnimatedProp(
case FLEX_SHRINK:
case FLEX_WRAP:
case JUSTIFY_CONTENT:
case MAX_HEIGHT:
case MAX_WIDTH:
case MIN_HEIGHT:
case MIN_WIDTH:
case STYLE_OVERFLOW:
case POSITION_TYPE:
case Z_INDEX:
case DIRECTION:
throw std::runtime_error("Tried to synchronously update layout props");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,15 @@ enum PropName {
FLEX_GROW,
FLEX_SHRINK,
FLEX_WRAP,
JUSTIFY_CONTENT
JUSTIFY_CONTENT,
MAX_HEIGHT,
MAX_WIDTH,
MIN_HEIGHT,
MIN_WIDTH,
STYLE_OVERFLOW,
POSITION_TYPE,
Z_INDEX,
DIRECTION,
};

struct AnimatedPropBase {
Expand Down Expand Up @@ -335,7 +343,36 @@ inline void cloneProp(BaseViewProps &viewProps, const AnimatedPropBase &animated
viewProps.yogaStyle.setJustifyContent(get<yoga::Justify>(animatedProp));
break;

default:
case MAX_HEIGHT:
viewProps.yogaStyle.setMaxDimension(yoga::Dimension::Height, get<yoga::Style::SizeLength>(animatedProp));
break;

case MAX_WIDTH:
viewProps.yogaStyle.setMaxDimension(yoga::Dimension::Width, get<yoga::Style::SizeLength>(animatedProp));
break;

case MIN_HEIGHT:
viewProps.yogaStyle.setMinDimension(yoga::Dimension::Height, get<yoga::Style::SizeLength>(animatedProp));
break;

case MIN_WIDTH:
viewProps.yogaStyle.setMinDimension(yoga::Dimension::Width, get<yoga::Style::SizeLength>(animatedProp));
break;

case STYLE_OVERFLOW:
viewProps.yogaStyle.setOverflow(get<yoga::Overflow>(animatedProp));
break;

case POSITION_TYPE:
viewProps.yogaStyle.setPositionType(get<yoga::PositionType>(animatedProp));
break;

case Z_INDEX:
viewProps.zIndex = get<std::optional<int>>(animatedProp);
break;

case DIRECTION:
viewProps.yogaStyle.setDirection(get<yoga::Direction>(animatedProp));
break;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,38 @@ struct AnimatedPropsBuilder {
{
props.push_back(std::make_unique<AnimatedProp<yoga::Justify>>(JUSTIFY_CONTENT, value));
}
void setMaxHeight(yoga::Style::SizeLength value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::Style::SizeLength>>(MAX_HEIGHT, value));
}
void setMaxWidth(yoga::Style::SizeLength value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::Style::SizeLength>>(MAX_WIDTH, value));
}
void setMinHeight(yoga::Style::SizeLength value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::Style::SizeLength>>(MIN_HEIGHT, value));
}
void setMinWidth(yoga::Style::SizeLength value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::Style::SizeLength>>(MIN_WIDTH, value));
}
void setOverflow(yoga::Overflow value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::Overflow>>(STYLE_OVERFLOW, value));
}
void setPositionType(yoga::PositionType value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::PositionType>>(POSITION_TYPE, value));
}
void setZIndex(std::optional<int> value)
{
props.push_back(std::make_unique<AnimatedProp<std::optional<int>>>(Z_INDEX, value));
}
void setDirection(yoga::Direction value)
{
props.push_back(std::make_unique<AnimatedProp<yoga::Direction>>(DIRECTION, value));
}
void storeDynamic(folly::dynamic &d)
{
rawProps = std::make_unique<RawProps>(std::move(d));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,42 @@ inline void updateProp(const PropName propName, BaseViewProps &viewProps, const
case JUSTIFY_CONTENT:
viewProps.yogaStyle.setJustifyContent(snapshot.props.yogaStyle.justifyContent());
break;

case MAX_HEIGHT:
viewProps.yogaStyle.setMaxDimension(
yoga::Dimension::Height, snapshot.props.yogaStyle.maxDimension(yoga::Dimension::Height));
break;

case MAX_WIDTH:
viewProps.yogaStyle.setMaxDimension(
yoga::Dimension::Width, snapshot.props.yogaStyle.maxDimension(yoga::Dimension::Width));
break;

case MIN_HEIGHT:
viewProps.yogaStyle.setMinDimension(
yoga::Dimension::Height, snapshot.props.yogaStyle.minDimension(yoga::Dimension::Height));
break;

case MIN_WIDTH:
viewProps.yogaStyle.setMinDimension(
yoga::Dimension::Width, snapshot.props.yogaStyle.minDimension(yoga::Dimension::Width));
break;

case STYLE_OVERFLOW:
viewProps.yogaStyle.setOverflow(snapshot.props.yogaStyle.overflow());
break;

case POSITION_TYPE:
viewProps.yogaStyle.setPositionType(snapshot.props.yogaStyle.positionType());
break;

case Z_INDEX:
viewProps.zIndex = snapshot.props.zIndex;
break;

case DIRECTION:
viewProps.yogaStyle.setDirection(snapshot.props.yogaStyle.direction());
break;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@
namespace facebook::react {

static const auto layoutProps = std::set<PropName>{
PropName::WIDTH, PropName::HEIGHT, PropName::FLEX,
PropName::MARGIN, PropName::PADDING, PropName::POSITION,
PropName::BORDER_WIDTH, PropName::ALIGN_CONTENT, PropName::ALIGN_ITEMS,
PropName::ALIGN_SELF, PropName::ASPECT_RATIO, PropName::BOX_SIZING,
PropName::DISPLAY, PropName::FLEX_BASIS, PropName::FLEX_DIRECTION,
PropName::ROW_GAP, PropName::COLUMN_GAP, PropName::FLEX_GROW,
PropName::FLEX_SHRINK, PropName::FLEX_WRAP, PropName::JUSTIFY_CONTENT,
WIDTH, HEIGHT, FLEX, MARGIN, PADDING,
POSITION, BORDER_WIDTH, ALIGN_CONTENT, ALIGN_ITEMS, ALIGN_SELF,
ASPECT_RATIO, BOX_SIZING, DISPLAY, FLEX_BASIS, FLEX_DIRECTION,
ROW_GAP, COLUMN_GAP, FLEX_GROW, FLEX_SHRINK, FLEX_WRAP,
JUSTIFY_CONTENT, MAX_HEIGHT, MAX_WIDTH, MIN_HEIGHT, MIN_WIDTH,
STYLE_OVERFLOW, POSITION_TYPE, DIRECTION, Z_INDEX,
};

UIManagerNativeAnimatedDelegateBackendImpl::
Expand Down
Loading