Compare commits
5 Commits
iainsmith/
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
|
e8121df8e0 | ||
|
6212e561ad | ||
|
a112a07e6a | ||
|
dc4ab5ad57 | ||
|
6d6f69bee7 |
@@ -2,6 +2,18 @@
|
|||||||
<div style="width:10px; height: 10px; position: absolute; start: 10px; top: 10px;"></div>
|
<div style="width:10px; height: 10px; position: absolute; start: 10px; top: 10px;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="absolute_layout_width_height_left_auto_right" style="width: 100px; height: 100px">
|
||||||
|
<div style="width: 10px; height: 10px; position: absolute; left: auto; right: 10px;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="absolute_layout_width_height_left_right_auto" style="width: 100px; height: 100px">
|
||||||
|
<div style="width: 10px; height: 10px; position: absolute; left: 10px; right: auto;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="absolute_layout_width_height_left_auto_right_auto" style="width: 100px; height: 100px">
|
||||||
|
<div style="width: 10px; height: 10px; position: absolute; left: auto; right: auto;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="absolute_layout_width_height_end_bottom" style="width: 100px; height: 100px;">
|
<div id="absolute_layout_width_height_end_bottom" style="width: 100px; height: 100px;">
|
||||||
<div style="width:10px; height: 10px; position: absolute; end: 10px; bottom: 10px;"></div>
|
<div style="width:10px; height: 10px; position: absolute; end: 10px; bottom: 10px;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -2,10 +2,10 @@
|
|||||||
<div id="aspect_ratio_does_not_stretch_cross_axis_dim" data-disabled="true" style="width: 300px; height: 300px;">
|
<div id="aspect_ratio_does_not_stretch_cross_axis_dim" data-disabled="true" style="width: 300px; height: 300px;">
|
||||||
<div style="flex: 1; overflow: scroll;">
|
<div style="flex: 1; overflow: scroll;">
|
||||||
<div style="flex-direction: row;">
|
<div style="flex-direction: row;">
|
||||||
<div style="flex: 2; aspect-ratio: 1;"></div>
|
<div style="flex: 2; aspect-ratio: 1;"></div>
|
||||||
<div style="width: 5px"></div>
|
<div style="width: 5px"></div>
|
||||||
<div style="flex: 1">
|
<div style="flex: 1">
|
||||||
<div style="flex: 1; aspect-ratio: 1;">
|
<div style="flex: 1; aspect-ratio: 1;">
|
||||||
<div style="width: 5px"></div>
|
<div style="width: 5px"></div>
|
||||||
<div style="flex: 1; aspect-ratio: 1;"></div>
|
<div style="flex: 1; aspect-ratio: 1;"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -13,3 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="zero_aspect_ratio_behaves_like_auto" style="width: 300px; height: 300px;">
|
||||||
|
<div style="aspect-ratio: 0; width: 50px"></div>
|
||||||
|
</div>
|
||||||
|
@@ -451,6 +451,12 @@ CPPEmitter.prototype = Object.create(Emitter.prototype, {
|
|||||||
|
|
||||||
YGNodeStyleSetPosition: {
|
YGNodeStyleSetPosition: {
|
||||||
value: function (nodeName, edge, value) {
|
value: function (nodeName, edge, value) {
|
||||||
|
let valueStr = toValueCpp(value);
|
||||||
|
if (valueStr != 'YGAuto') {
|
||||||
|
valueStr = ', ' + valueStr;
|
||||||
|
} else {
|
||||||
|
valueStr = '';
|
||||||
|
}
|
||||||
this.push(
|
this.push(
|
||||||
'YGNodeStyleSetPosition' +
|
'YGNodeStyleSetPosition' +
|
||||||
toFunctionName(value) +
|
toFunctionName(value) +
|
||||||
@@ -458,8 +464,7 @@ CPPEmitter.prototype = Object.create(Emitter.prototype, {
|
|||||||
nodeName +
|
nodeName +
|
||||||
', ' +
|
', ' +
|
||||||
edge +
|
edge +
|
||||||
', ' +
|
valueStr +
|
||||||
toValueCpp(value) +
|
|
||||||
');',
|
');',
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@@ -420,15 +420,21 @@ JavaEmitter.prototype = Object.create(Emitter.prototype, {
|
|||||||
|
|
||||||
YGNodeStyleSetPosition: {
|
YGNodeStyleSetPosition: {
|
||||||
value: function (nodeName, edge, value) {
|
value: function (nodeName, edge, value) {
|
||||||
|
let valueStr = toValueJava(value);
|
||||||
|
|
||||||
|
if (valueStr == 'YogaConstants.AUTO') {
|
||||||
|
valueStr = '';
|
||||||
|
} else {
|
||||||
|
valueStr = ', ' + valueStr + 'f';
|
||||||
|
}
|
||||||
this.push(
|
this.push(
|
||||||
nodeName +
|
nodeName +
|
||||||
'.setPosition' +
|
'.setPosition' +
|
||||||
toMethodName(value) +
|
toMethodName(value) +
|
||||||
'(' +
|
'(' +
|
||||||
edge +
|
edge +
|
||||||
', ' +
|
valueStr +
|
||||||
toValueJava(value) +
|
');',
|
||||||
'f);',
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@@ -364,14 +364,22 @@ JavascriptEmitter.prototype = Object.create(Emitter.prototype, {
|
|||||||
|
|
||||||
YGNodeStyleSetPosition: {
|
YGNodeStyleSetPosition: {
|
||||||
value: function (nodeName, edge, value) {
|
value: function (nodeName, edge, value) {
|
||||||
this.push(
|
const valueStr = toValueJavascript(value);
|
||||||
nodeName +
|
|
||||||
'.setPosition(' +
|
if (valueStr == "'auto'") {
|
||||||
toValueJavascript(edge) +
|
this.push(
|
||||||
', ' +
|
nodeName + '.setPositionAuto(' + toValueJavascript(edge) + ');',
|
||||||
toValueJavascript(value) +
|
);
|
||||||
');',
|
} else {
|
||||||
);
|
this.push(
|
||||||
|
nodeName +
|
||||||
|
'.setPosition(' +
|
||||||
|
toValueJavascript(edge) +
|
||||||
|
', ' +
|
||||||
|
valueStr +
|
||||||
|
');',
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -21,8 +21,8 @@ val ndkVersionProperty: String by rootProject.extra
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "com.facebook.yoga"
|
namespace = "com.facebook.yoga"
|
||||||
compileSdk = 34
|
compileSdk = 35
|
||||||
buildToolsVersion = "34.0.0"
|
buildToolsVersion = "35.0.0"
|
||||||
ndkVersion = "26.0.10792818"
|
ndkVersion = "26.0.10792818"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
|
@@ -84,6 +84,7 @@ public class YogaNative {
|
|||||||
static native long jni_YGNodeStyleGetPositionJNI(long nativePointer, int edge);
|
static native long jni_YGNodeStyleGetPositionJNI(long nativePointer, int edge);
|
||||||
static native void jni_YGNodeStyleSetPositionJNI(long nativePointer, int edge, float position);
|
static native void jni_YGNodeStyleSetPositionJNI(long nativePointer, int edge, float position);
|
||||||
static native void jni_YGNodeStyleSetPositionPercentJNI(long nativePointer, int edge, float percent);
|
static native void jni_YGNodeStyleSetPositionPercentJNI(long nativePointer, int edge, float percent);
|
||||||
|
static native void jni_YGNodeStyleSetPositionAutoJNI(long nativePointer, int edge);
|
||||||
static native long jni_YGNodeStyleGetWidthJNI(long nativePointer);
|
static native long jni_YGNodeStyleGetWidthJNI(long nativePointer);
|
||||||
static native void jni_YGNodeStyleSetWidthJNI(long nativePointer, float width);
|
static native void jni_YGNodeStyleSetWidthJNI(long nativePointer, float width);
|
||||||
static native void jni_YGNodeStyleSetWidthPercentJNI(long nativePointer, float percent);
|
static native void jni_YGNodeStyleSetWidthPercentJNI(long nativePointer, float percent);
|
||||||
|
@@ -144,6 +144,8 @@ public abstract class YogaNode implements YogaProps {
|
|||||||
|
|
||||||
public abstract void setPositionPercent(YogaEdge edge, float percent);
|
public abstract void setPositionPercent(YogaEdge edge, float percent);
|
||||||
|
|
||||||
|
public abstract void setPositionAuto(YogaEdge edge);
|
||||||
|
|
||||||
public abstract YogaValue getWidth();
|
public abstract YogaValue getWidth();
|
||||||
|
|
||||||
public abstract void setWidth(float width);
|
public abstract void setWidth(float width);
|
||||||
|
@@ -411,6 +411,10 @@ public abstract class YogaNodeJNIBase extends YogaNode implements Cloneable {
|
|||||||
YogaNative.jni_YGNodeStyleSetPositionPercentJNI(mNativePointer, edge.intValue(), percent);
|
YogaNative.jni_YGNodeStyleSetPositionPercentJNI(mNativePointer, edge.intValue(), percent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPositionAuto(YogaEdge edge) {
|
||||||
|
YogaNative.jni_YGNodeStyleSetPositionAutoJNI(mNativePointer, edge.intValue());
|
||||||
|
}
|
||||||
|
|
||||||
public YogaValue getWidth() {
|
public YogaValue getWidth() {
|
||||||
return valueFromLong(YogaNative.jni_YGNodeStyleGetWidthJNI(mNativePointer));
|
return valueFromLong(YogaNative.jni_YGNodeStyleGetWidthJNI(mNativePointer));
|
||||||
}
|
}
|
||||||
|
@@ -460,6 +460,14 @@ static void jni_YGNodeCopyStyleJNI(
|
|||||||
static_cast<float>(value)); \
|
static_cast<float>(value)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define YG_NODE_JNI_STYLE_EDGE_UNIT_PROP_AUTO(name) \
|
||||||
|
YG_NODE_JNI_STYLE_EDGE_UNIT_PROP(name) \
|
||||||
|
static void jni_YGNodeStyleSet##name##AutoJNI( \
|
||||||
|
JNIEnv* /*env*/, jobject /*obj*/, jlong nativePointer, jint edge) { \
|
||||||
|
YGNodeStyleSet##name##Auto( \
|
||||||
|
_jlong2YGNodeRef(nativePointer), static_cast<YGEdge>(edge)); \
|
||||||
|
}
|
||||||
|
|
||||||
YG_NODE_JNI_STYLE_PROP(jint, YGDirection, Direction);
|
YG_NODE_JNI_STYLE_PROP(jint, YGDirection, Direction);
|
||||||
YG_NODE_JNI_STYLE_PROP(jint, YGFlexDirection, FlexDirection);
|
YG_NODE_JNI_STYLE_PROP(jint, YGFlexDirection, FlexDirection);
|
||||||
YG_NODE_JNI_STYLE_PROP(jint, YGJustify, JustifyContent);
|
YG_NODE_JNI_STYLE_PROP(jint, YGJustify, JustifyContent);
|
||||||
@@ -482,7 +490,7 @@ YG_NODE_JNI_STYLE_UNIT_PROP_AUTO(Height);
|
|||||||
YG_NODE_JNI_STYLE_UNIT_PROP(MinHeight);
|
YG_NODE_JNI_STYLE_UNIT_PROP(MinHeight);
|
||||||
YG_NODE_JNI_STYLE_UNIT_PROP(MaxHeight);
|
YG_NODE_JNI_STYLE_UNIT_PROP(MaxHeight);
|
||||||
|
|
||||||
YG_NODE_JNI_STYLE_EDGE_UNIT_PROP(Position);
|
YG_NODE_JNI_STYLE_EDGE_UNIT_PROP_AUTO(Position);
|
||||||
|
|
||||||
static jlong jni_YGNodeStyleGetMarginJNI(
|
static jlong jni_YGNodeStyleGetMarginJNI(
|
||||||
JNIEnv* /*env*/,
|
JNIEnv* /*env*/,
|
||||||
@@ -891,6 +899,9 @@ static JNINativeMethod methods[] = {
|
|||||||
{"jni_YGNodeStyleSetPositionPercentJNI",
|
{"jni_YGNodeStyleSetPositionPercentJNI",
|
||||||
"(JIF)V",
|
"(JIF)V",
|
||||||
(void*)jni_YGNodeStyleSetPositionPercentJNI},
|
(void*)jni_YGNodeStyleSetPositionPercentJNI},
|
||||||
|
{"jni_YGNodeStyleSetPositionAutoJNI",
|
||||||
|
"(JI)V",
|
||||||
|
(void*)jni_YGNodeStyleSetPositionAutoJNI},
|
||||||
{"jni_YGNodeStyleGetWidthJNI", "(J)J", (void*)jni_YGNodeStyleGetWidthJNI},
|
{"jni_YGNodeStyleGetWidthJNI", "(J)J", (void*)jni_YGNodeStyleGetWidthJNI},
|
||||||
{"jni_YGNodeStyleSetWidthJNI", "(JF)V", (void*)jni_YGNodeStyleSetWidthJNI},
|
{"jni_YGNodeStyleSetWidthJNI", "(JF)V", (void*)jni_YGNodeStyleSetWidthJNI},
|
||||||
{"jni_YGNodeStyleSetWidthPercentJNI",
|
{"jni_YGNodeStyleSetWidthPercentJNI",
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* @generated SignedSource<<30a9046ab7f9c7bda2d4f3b2ae12afcd>>
|
* @generated SignedSource<<c4a613bef526a87ca88e3b28e1abc215>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAbsolutePositionTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAbsolutePositionTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -70,6 +70,135 @@ public class YGAbsolutePositionTest {
|
|||||||
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_absolute_layout_width_height_left_auto_right() {
|
||||||
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
|
final YogaNode root = createNode(config);
|
||||||
|
root.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root.setWidth(100f);
|
||||||
|
root.setHeight(100f);
|
||||||
|
|
||||||
|
final YogaNode root_child0 = createNode(config);
|
||||||
|
root_child0.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root_child0.setPositionAuto(YogaEdge.LEFT);
|
||||||
|
root_child0.setPosition(YogaEdge.RIGHT, 10f);
|
||||||
|
root_child0.setWidth(10f);
|
||||||
|
root_child0.setHeight(10f);
|
||||||
|
root.addChildAt(root_child0, 0);
|
||||||
|
root.setDirection(YogaDirection.LTR);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(80f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
root.setDirection(YogaDirection.RTL);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(80f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_absolute_layout_width_height_left_right_auto() {
|
||||||
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
|
final YogaNode root = createNode(config);
|
||||||
|
root.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root.setWidth(100f);
|
||||||
|
root.setHeight(100f);
|
||||||
|
|
||||||
|
final YogaNode root_child0 = createNode(config);
|
||||||
|
root_child0.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root_child0.setPosition(YogaEdge.LEFT, 10f);
|
||||||
|
root_child0.setPositionAuto(YogaEdge.RIGHT);
|
||||||
|
root_child0.setWidth(10f);
|
||||||
|
root_child0.setHeight(10f);
|
||||||
|
root.addChildAt(root_child0, 0);
|
||||||
|
root.setDirection(YogaDirection.LTR);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(10f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
root.setDirection(YogaDirection.RTL);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(10f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_absolute_layout_width_height_left_auto_right_auto() {
|
||||||
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
|
final YogaNode root = createNode(config);
|
||||||
|
root.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root.setWidth(100f);
|
||||||
|
root.setHeight(100f);
|
||||||
|
|
||||||
|
final YogaNode root_child0 = createNode(config);
|
||||||
|
root_child0.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root_child0.setPositionAuto(YogaEdge.LEFT);
|
||||||
|
root_child0.setPositionAuto(YogaEdge.RIGHT);
|
||||||
|
root_child0.setWidth(10f);
|
||||||
|
root_child0.setHeight(10f);
|
||||||
|
root.addChildAt(root_child0, 0);
|
||||||
|
root.setDirection(YogaDirection.LTR);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
root.setDirection(YogaDirection.RTL);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(100f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(90f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(10f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_absolute_layout_width_height_end_bottom() {
|
public void test_absolute_layout_width_height_end_bottom() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* @generated SignedSource<<e5092fdd5b7f67021254ae2bbc5a3684>>
|
* @generated SignedSource<<37a01c67158df025b1b43b8378071746>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAspectRatioTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAspectRatioTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -179,6 +179,46 @@ public class YGAspectRatioTest {
|
|||||||
assertEquals(197f, root_child0_child0_child2_child0_child1.getLayoutHeight(), 0.0f);
|
assertEquals(197f, root_child0_child0_child2_child0_child1.getLayoutHeight(), 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_zero_aspect_ratio_behaves_like_auto() {
|
||||||
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
|
final YogaNode root = createNode(config);
|
||||||
|
root.setPositionType(YogaPositionType.ABSOLUTE);
|
||||||
|
root.setWidth(300f);
|
||||||
|
root.setHeight(300f);
|
||||||
|
|
||||||
|
final YogaNode root_child0 = createNode(config);
|
||||||
|
root_child0.setWidth(50f);
|
||||||
|
root_child0.setAspectRatio(0 / 1f);
|
||||||
|
root.addChildAt(root_child0, 0);
|
||||||
|
root.setDirection(YogaDirection.LTR);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(300f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(300f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(0f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(50f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
root.setDirection(YogaDirection.RTL);
|
||||||
|
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||||
|
|
||||||
|
assertEquals(0f, root.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(300f, root.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(300f, root.getLayoutHeight(), 0.0f);
|
||||||
|
|
||||||
|
assertEquals(250f, root_child0.getLayoutX(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutY(), 0.0f);
|
||||||
|
assertEquals(50f, root_child0.getLayoutWidth(), 0.0f);
|
||||||
|
assertEquals(0f, root_child0.getLayoutHeight(), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
private YogaNode createNode(YogaConfig config) {
|
private YogaNode createNode(YogaConfig config) {
|
||||||
return mNodeFactory.create(config);
|
return mNodeFactory.create(config);
|
||||||
}
|
}
|
||||||
|
@@ -87,6 +87,10 @@ void Node::setPositionPercent(int edge, double position) {
|
|||||||
YGNodeStyleSetPositionPercent(m_node, static_cast<YGEdge>(edge), position);
|
YGNodeStyleSetPositionPercent(m_node, static_cast<YGEdge>(edge), position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Node::setPositionAuto(int edge) {
|
||||||
|
YGNodeStyleSetPositionAuto(m_node, static_cast<YGEdge>(edge));
|
||||||
|
}
|
||||||
|
|
||||||
void Node::setAlignContent(int alignContent) {
|
void Node::setAlignContent(int alignContent) {
|
||||||
YGNodeStyleSetAlignContent(m_node, static_cast<YGAlign>(alignContent));
|
YGNodeStyleSetAlignContent(m_node, static_cast<YGAlign>(alignContent));
|
||||||
}
|
}
|
||||||
|
@@ -76,6 +76,7 @@ class Node {
|
|||||||
void setPositionType(int positionType);
|
void setPositionType(int positionType);
|
||||||
void setPosition(int edge, double position);
|
void setPosition(int edge, double position);
|
||||||
void setPositionPercent(int edge, double position);
|
void setPositionPercent(int edge, double position);
|
||||||
|
void setPositionAuto(int edge);
|
||||||
|
|
||||||
void setAlignContent(int alignContent);
|
void setAlignContent(int alignContent);
|
||||||
void setAlignItems(int alignItems);
|
void setAlignItems(int alignItems);
|
||||||
|
@@ -70,6 +70,7 @@ EMSCRIPTEN_BINDINGS(YOGA_LAYOUT) {
|
|||||||
.function("setPositionType", &Node::setPositionType)
|
.function("setPositionType", &Node::setPositionType)
|
||||||
.function("setPosition", &Node::setPosition)
|
.function("setPosition", &Node::setPosition)
|
||||||
.function("setPositionPercent", &Node::setPositionPercent)
|
.function("setPositionPercent", &Node::setPositionPercent)
|
||||||
|
.function("setPositionAuto", &Node::setPositionAuto)
|
||||||
|
|
||||||
.function("setAlignContent", &Node::setAlignContent)
|
.function("setAlignContent", &Node::setAlignContent)
|
||||||
.function("setAlignItems", &Node::setAlignItems)
|
.function("setAlignItems", &Node::setAlignItems)
|
||||||
|
@@ -168,6 +168,7 @@ export type Node = {
|
|||||||
setPosition(edge: Edge, position: number | `${number}%` | undefined): void;
|
setPosition(edge: Edge, position: number | `${number}%` | undefined): void;
|
||||||
setPositionPercent(edge: Edge, position: number | undefined): void;
|
setPositionPercent(edge: Edge, position: number | undefined): void;
|
||||||
setPositionType(positionType: PositionType): void;
|
setPositionType(positionType: PositionType): void;
|
||||||
|
setPositionAuto(edge: Edge): void;
|
||||||
setWidth(width: number | 'auto' | `${number}%` | undefined): void;
|
setWidth(width: number | 'auto' | `${number}%` | undefined): void;
|
||||||
setWidthAuto(): void;
|
setWidthAuto(): void;
|
||||||
setWidthPercent(width: number | undefined): void;
|
setWidthPercent(width: number | undefined): void;
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* @generated SignedSource<<133e2d77cd6267d4bfb0fe992d437fd1>>
|
* @generated SignedSource<<3ac965030750351f007587f3ae1dec10>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAbsolutePositionTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAbsolutePositionTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -75,6 +75,150 @@ test('absolute_layout_width_height_start_top', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
test('absolute_layout_width_height_left_auto_right', () => {
|
||||||
|
const config = Yoga.Config.create();
|
||||||
|
let root;
|
||||||
|
|
||||||
|
try {
|
||||||
|
root = Yoga.Node.create(config);
|
||||||
|
root.setPositionType(PositionType.Absolute);
|
||||||
|
root.setWidth(100);
|
||||||
|
root.setHeight(100);
|
||||||
|
|
||||||
|
const root_child0 = Yoga.Node.create(config);
|
||||||
|
root_child0.setPositionType(PositionType.Absolute);
|
||||||
|
root_child0.setPositionAuto(Edge.Left);
|
||||||
|
root_child0.setPosition(Edge.Right, 10);
|
||||||
|
root_child0.setWidth(10);
|
||||||
|
root_child0.setHeight(10);
|
||||||
|
root.insertChild(root_child0, 0);
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.LTR);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(100);
|
||||||
|
expect(root.getComputedHeight()).toBe(100);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(80);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(10);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(10);
|
||||||
|
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.RTL);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(100);
|
||||||
|
expect(root.getComputedHeight()).toBe(100);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(80);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(10);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(10);
|
||||||
|
} finally {
|
||||||
|
if (typeof root !== 'undefined') {
|
||||||
|
root.freeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
|
config.free();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
test('absolute_layout_width_height_left_right_auto', () => {
|
||||||
|
const config = Yoga.Config.create();
|
||||||
|
let root;
|
||||||
|
|
||||||
|
try {
|
||||||
|
root = Yoga.Node.create(config);
|
||||||
|
root.setPositionType(PositionType.Absolute);
|
||||||
|
root.setWidth(100);
|
||||||
|
root.setHeight(100);
|
||||||
|
|
||||||
|
const root_child0 = Yoga.Node.create(config);
|
||||||
|
root_child0.setPositionType(PositionType.Absolute);
|
||||||
|
root_child0.setPosition(Edge.Left, 10);
|
||||||
|
root_child0.setPositionAuto(Edge.Right);
|
||||||
|
root_child0.setWidth(10);
|
||||||
|
root_child0.setHeight(10);
|
||||||
|
root.insertChild(root_child0, 0);
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.LTR);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(100);
|
||||||
|
expect(root.getComputedHeight()).toBe(100);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(10);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(10);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(10);
|
||||||
|
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.RTL);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(100);
|
||||||
|
expect(root.getComputedHeight()).toBe(100);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(10);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(10);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(10);
|
||||||
|
} finally {
|
||||||
|
if (typeof root !== 'undefined') {
|
||||||
|
root.freeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
|
config.free();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
test('absolute_layout_width_height_left_auto_right_auto', () => {
|
||||||
|
const config = Yoga.Config.create();
|
||||||
|
let root;
|
||||||
|
|
||||||
|
try {
|
||||||
|
root = Yoga.Node.create(config);
|
||||||
|
root.setPositionType(PositionType.Absolute);
|
||||||
|
root.setWidth(100);
|
||||||
|
root.setHeight(100);
|
||||||
|
|
||||||
|
const root_child0 = Yoga.Node.create(config);
|
||||||
|
root_child0.setPositionType(PositionType.Absolute);
|
||||||
|
root_child0.setPositionAuto(Edge.Left);
|
||||||
|
root_child0.setPositionAuto(Edge.Right);
|
||||||
|
root_child0.setWidth(10);
|
||||||
|
root_child0.setHeight(10);
|
||||||
|
root.insertChild(root_child0, 0);
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.LTR);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(100);
|
||||||
|
expect(root.getComputedHeight()).toBe(100);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(0);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(10);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(10);
|
||||||
|
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.RTL);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(100);
|
||||||
|
expect(root.getComputedHeight()).toBe(100);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(90);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(10);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(10);
|
||||||
|
} finally {
|
||||||
|
if (typeof root !== 'undefined') {
|
||||||
|
root.freeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
|
config.free();
|
||||||
|
}
|
||||||
|
});
|
||||||
test('absolute_layout_width_height_end_bottom', () => {
|
test('absolute_layout_width_height_end_bottom', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* @generated SignedSource<<acd05459fdaeace7681295ee1812c3cb>>
|
* @generated SignedSource<<c9a86707a0d8554afa020ec319688655>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAspectRatioTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAspectRatioTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -183,3 +183,48 @@ test.skip('aspect_ratio_does_not_stretch_cross_axis_dim', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
test('zero_aspect_ratio_behaves_like_auto', () => {
|
||||||
|
const config = Yoga.Config.create();
|
||||||
|
let root;
|
||||||
|
|
||||||
|
try {
|
||||||
|
root = Yoga.Node.create(config);
|
||||||
|
root.setPositionType(PositionType.Absolute);
|
||||||
|
root.setWidth(300);
|
||||||
|
root.setHeight(300);
|
||||||
|
|
||||||
|
const root_child0 = Yoga.Node.create(config);
|
||||||
|
root_child0.setWidth(50);
|
||||||
|
root_child0.setAspectRatio(0 / 1);
|
||||||
|
root.insertChild(root_child0, 0);
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.LTR);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(300);
|
||||||
|
expect(root.getComputedHeight()).toBe(300);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(0);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(50);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(0);
|
||||||
|
|
||||||
|
root.calculateLayout(undefined, undefined, Direction.RTL);
|
||||||
|
|
||||||
|
expect(root.getComputedLeft()).toBe(0);
|
||||||
|
expect(root.getComputedTop()).toBe(0);
|
||||||
|
expect(root.getComputedWidth()).toBe(300);
|
||||||
|
expect(root.getComputedHeight()).toBe(300);
|
||||||
|
|
||||||
|
expect(root_child0.getComputedLeft()).toBe(250);
|
||||||
|
expect(root_child0.getComputedTop()).toBe(0);
|
||||||
|
expect(root_child0.getComputedWidth()).toBe(50);
|
||||||
|
expect(root_child0.getComputedHeight()).toBe(0);
|
||||||
|
} finally {
|
||||||
|
if (typeof root !== 'undefined') {
|
||||||
|
root.freeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
|
config.free();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* clang-format off
|
* clang-format off
|
||||||
* @generated SignedSource<<425ef3591b2f5cf0bc6d9daa9c5db96c>>
|
* @generated SignedSource<<499316b3f7b7ec5c406abf5ac77837f1>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAbsolutePositionTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAbsolutePositionTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -57,6 +57,138 @@ TEST(YogaTest, absolute_layout_width_height_start_top) {
|
|||||||
YGConfigFree(config);
|
YGConfigFree(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, absolute_layout_width_height_left_auto_right) {
|
||||||
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetWidth(root, 100);
|
||||||
|
YGNodeStyleSetHeight(root, 100);
|
||||||
|
|
||||||
|
YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root_child0, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetPositionAuto(root_child0, YGEdgeLeft);
|
||||||
|
YGNodeStyleSetPosition(root_child0, YGEdgeRight, 10);
|
||||||
|
YGNodeStyleSetWidth(root_child0, 10);
|
||||||
|
YGNodeStyleSetHeight(root_child0, 10);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(80, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
|
||||||
|
YGConfigFree(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, absolute_layout_width_height_left_right_auto) {
|
||||||
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetWidth(root, 100);
|
||||||
|
YGNodeStyleSetHeight(root, 100);
|
||||||
|
|
||||||
|
YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root_child0, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetPosition(root_child0, YGEdgeLeft, 10);
|
||||||
|
YGNodeStyleSetPositionAuto(root_child0, YGEdgeRight);
|
||||||
|
YGNodeStyleSetWidth(root_child0, 10);
|
||||||
|
YGNodeStyleSetHeight(root_child0, 10);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
|
||||||
|
YGConfigFree(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, absolute_layout_width_height_left_auto_right_auto) {
|
||||||
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetWidth(root, 100);
|
||||||
|
YGNodeStyleSetHeight(root, 100);
|
||||||
|
|
||||||
|
YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root_child0, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetPositionAuto(root_child0, YGEdgeLeft);
|
||||||
|
YGNodeStyleSetPositionAuto(root_child0, YGEdgeRight);
|
||||||
|
YGNodeStyleSetWidth(root_child0, 10);
|
||||||
|
YGNodeStyleSetHeight(root_child0, 10);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(100, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(90, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
|
||||||
|
YGConfigFree(config);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(YogaTest, absolute_layout_width_height_end_bottom) {
|
TEST(YogaTest, absolute_layout_width_height_end_bottom) {
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* clang-format off
|
* clang-format off
|
||||||
* @generated SignedSource<<bca5b9517b7a728b30eb070a33de0bdf>>
|
* @generated SignedSource<<0894aa78d01d5194e4c042491128cd1c>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAspectRatioTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGAspectRatioTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -166,3 +166,44 @@ TEST(YogaTest, aspect_ratio_does_not_stretch_cross_axis_dim) {
|
|||||||
|
|
||||||
YGConfigFree(config);
|
YGConfigFree(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, zero_aspect_ratio_behaves_like_auto) {
|
||||||
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||||
|
YGNodeStyleSetWidth(root, 300);
|
||||||
|
YGNodeStyleSetHeight(root, 300);
|
||||||
|
|
||||||
|
YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetWidth(root_child0, 50);
|
||||||
|
YGNodeStyleSetAspectRatio(root_child0, 0 / 1);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||||
|
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetWidth(root));
|
||||||
|
ASSERT_FLOAT_EQ(300, YGNodeLayoutGetHeight(root));
|
||||||
|
|
||||||
|
ASSERT_FLOAT_EQ(250, YGNodeLayoutGetLeft(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
|
||||||
|
YGConfigFree(config);
|
||||||
|
}
|
||||||
|
@@ -10,4 +10,4 @@ Yoga is an embeddable layout system used in popular UI frameworks like React Nat
|
|||||||
|
|
||||||
Yoga supports a familiar subset of CSS, mostly focused on Flexbox. This gives users a familiar model, and enables sharing code between native platforms and the browser.
|
Yoga supports a familiar subset of CSS, mostly focused on Flexbox. This gives users a familiar model, and enables sharing code between native platforms and the browser.
|
||||||
|
|
||||||
Yoga is written in C++, with a public C API. This allows Yoga to be used by a wide variety of languages, via both offficial and unofficial bindings.
|
Yoga is written in C++, with a public C API. This allows Yoga to be used by a wide variety of languages, via both official and unofficial bindings.
|
||||||
|
196
yarn.lock
196
yarn.lock
@@ -3516,10 +3516,10 @@ binary-extensions@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||||
|
|
||||||
body-parser@1.20.2:
|
body-parser@1.20.3:
|
||||||
version "1.20.2"
|
version "1.20.3"
|
||||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
|
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
|
||||||
integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
|
integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
|
||||||
dependencies:
|
dependencies:
|
||||||
bytes "3.1.2"
|
bytes "3.1.2"
|
||||||
content-type "~1.0.5"
|
content-type "~1.0.5"
|
||||||
@@ -3529,7 +3529,7 @@ body-parser@1.20.2:
|
|||||||
http-errors "2.0.0"
|
http-errors "2.0.0"
|
||||||
iconv-lite "0.4.24"
|
iconv-lite "0.4.24"
|
||||||
on-finished "2.4.1"
|
on-finished "2.4.1"
|
||||||
qs "6.11.0"
|
qs "6.13.0"
|
||||||
raw-body "2.5.2"
|
raw-body "2.5.2"
|
||||||
type-is "~1.6.18"
|
type-is "~1.6.18"
|
||||||
unpipe "1.0.0"
|
unpipe "1.0.0"
|
||||||
@@ -3658,6 +3658,17 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5:
|
|||||||
get-intrinsic "^1.2.1"
|
get-intrinsic "^1.2.1"
|
||||||
set-function-length "^1.1.1"
|
set-function-length "^1.1.1"
|
||||||
|
|
||||||
|
call-bind@^1.0.7:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
|
||||||
|
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
|
||||||
|
dependencies:
|
||||||
|
es-define-property "^1.0.0"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
get-intrinsic "^1.2.4"
|
||||||
|
set-function-length "^1.2.1"
|
||||||
|
|
||||||
callsites@^3.0.0:
|
callsites@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
||||||
@@ -4403,6 +4414,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.1:
|
|||||||
gopd "^1.0.1"
|
gopd "^1.0.1"
|
||||||
has-property-descriptors "^1.0.0"
|
has-property-descriptors "^1.0.0"
|
||||||
|
|
||||||
|
define-data-property@^1.1.4:
|
||||||
|
version "1.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||||
|
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
||||||
|
dependencies:
|
||||||
|
es-define-property "^1.0.0"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
gopd "^1.0.1"
|
||||||
|
|
||||||
define-lazy-prop@^2.0.0:
|
define-lazy-prop@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
|
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
|
||||||
@@ -4659,6 +4679,11 @@ encodeurl@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||||
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
|
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
|
||||||
|
|
||||||
|
encodeurl@~2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
|
||||||
|
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
|
||||||
|
|
||||||
end-of-stream@^1.1.0, end-of-stream@^1.4.4:
|
end-of-stream@^1.1.0, end-of-stream@^1.4.4:
|
||||||
version "1.4.4"
|
version "1.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||||
@@ -4736,6 +4761,18 @@ es-abstract@^1.22.1:
|
|||||||
unbox-primitive "^1.0.2"
|
unbox-primitive "^1.0.2"
|
||||||
which-typed-array "^1.1.13"
|
which-typed-array "^1.1.13"
|
||||||
|
|
||||||
|
es-define-property@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
|
||||||
|
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
|
||||||
|
dependencies:
|
||||||
|
get-intrinsic "^1.2.4"
|
||||||
|
|
||||||
|
es-errors@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
|
||||||
|
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
||||||
|
|
||||||
es-iterator-helpers@^1.0.12:
|
es-iterator-helpers@^1.0.12:
|
||||||
version "1.0.15"
|
version "1.0.15"
|
||||||
resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40"
|
resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40"
|
||||||
@@ -5157,36 +5194,36 @@ expect@^29.0.0, expect@^29.3.1:
|
|||||||
jest-util "^29.5.0"
|
jest-util "^29.5.0"
|
||||||
|
|
||||||
express@^4.17.3:
|
express@^4.17.3:
|
||||||
version "4.19.2"
|
version "4.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
|
resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915"
|
||||||
integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
|
integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==
|
||||||
dependencies:
|
dependencies:
|
||||||
accepts "~1.3.8"
|
accepts "~1.3.8"
|
||||||
array-flatten "1.1.1"
|
array-flatten "1.1.1"
|
||||||
body-parser "1.20.2"
|
body-parser "1.20.3"
|
||||||
content-disposition "0.5.4"
|
content-disposition "0.5.4"
|
||||||
content-type "~1.0.4"
|
content-type "~1.0.4"
|
||||||
cookie "0.6.0"
|
cookie "0.6.0"
|
||||||
cookie-signature "1.0.6"
|
cookie-signature "1.0.6"
|
||||||
debug "2.6.9"
|
debug "2.6.9"
|
||||||
depd "2.0.0"
|
depd "2.0.0"
|
||||||
encodeurl "~1.0.2"
|
encodeurl "~2.0.0"
|
||||||
escape-html "~1.0.3"
|
escape-html "~1.0.3"
|
||||||
etag "~1.8.1"
|
etag "~1.8.1"
|
||||||
finalhandler "1.2.0"
|
finalhandler "1.3.1"
|
||||||
fresh "0.5.2"
|
fresh "0.5.2"
|
||||||
http-errors "2.0.0"
|
http-errors "2.0.0"
|
||||||
merge-descriptors "1.0.1"
|
merge-descriptors "1.0.3"
|
||||||
methods "~1.1.2"
|
methods "~1.1.2"
|
||||||
on-finished "2.4.1"
|
on-finished "2.4.1"
|
||||||
parseurl "~1.3.3"
|
parseurl "~1.3.3"
|
||||||
path-to-regexp "0.1.7"
|
path-to-regexp "0.1.10"
|
||||||
proxy-addr "~2.0.7"
|
proxy-addr "~2.0.7"
|
||||||
qs "6.11.0"
|
qs "6.13.0"
|
||||||
range-parser "~1.2.1"
|
range-parser "~1.2.1"
|
||||||
safe-buffer "5.2.1"
|
safe-buffer "5.2.1"
|
||||||
send "0.18.0"
|
send "0.19.0"
|
||||||
serve-static "1.15.0"
|
serve-static "1.16.2"
|
||||||
setprototypeof "1.2.0"
|
setprototypeof "1.2.0"
|
||||||
statuses "2.0.1"
|
statuses "2.0.1"
|
||||||
type-is "~1.6.18"
|
type-is "~1.6.18"
|
||||||
@@ -5317,13 +5354,13 @@ fill-range@^7.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
to-regex-range "^5.0.1"
|
to-regex-range "^5.0.1"
|
||||||
|
|
||||||
finalhandler@1.2.0:
|
finalhandler@1.3.1:
|
||||||
version "1.2.0"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
|
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
|
||||||
integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
|
integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "2.6.9"
|
debug "2.6.9"
|
||||||
encodeurl "~1.0.2"
|
encodeurl "~2.0.0"
|
||||||
escape-html "~1.0.3"
|
escape-html "~1.0.3"
|
||||||
on-finished "2.4.1"
|
on-finished "2.4.1"
|
||||||
parseurl "~1.3.3"
|
parseurl "~1.3.3"
|
||||||
@@ -5567,6 +5604,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@
|
|||||||
has-symbols "^1.0.3"
|
has-symbols "^1.0.3"
|
||||||
hasown "^2.0.0"
|
hasown "^2.0.0"
|
||||||
|
|
||||||
|
get-intrinsic@^1.2.4:
|
||||||
|
version "1.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
|
||||||
|
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
|
||||||
|
dependencies:
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
has-proto "^1.0.1"
|
||||||
|
has-symbols "^1.0.3"
|
||||||
|
hasown "^2.0.0"
|
||||||
|
|
||||||
get-own-enumerable-property-symbols@^3.0.0:
|
get-own-enumerable-property-symbols@^3.0.0:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
|
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
|
||||||
@@ -5803,6 +5851,13 @@ has-property-descriptors@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
get-intrinsic "^1.1.1"
|
get-intrinsic "^1.1.1"
|
||||||
|
|
||||||
|
has-property-descriptors@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
||||||
|
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
||||||
|
dependencies:
|
||||||
|
es-define-property "^1.0.0"
|
||||||
|
|
||||||
has-proto@^1.0.1:
|
has-proto@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
|
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
|
||||||
@@ -7729,10 +7784,10 @@ memfs@^3.1.2, memfs@^3.4.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fs-monkey "^1.0.4"
|
fs-monkey "^1.0.4"
|
||||||
|
|
||||||
merge-descriptors@1.0.1:
|
merge-descriptors@1.0.3:
|
||||||
version "1.0.1"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
|
||||||
integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
|
integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
|
||||||
|
|
||||||
merge-stream@^2.0.0:
|
merge-stream@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
@@ -8787,10 +8842,10 @@ path-scurry@^1.11.1:
|
|||||||
lru-cache "^10.2.0"
|
lru-cache "^10.2.0"
|
||||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||||
|
|
||||||
path-to-regexp@0.1.7:
|
path-to-regexp@0.1.10:
|
||||||
version "0.1.7"
|
version "0.1.10"
|
||||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
|
||||||
integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
|
integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
|
||||||
|
|
||||||
path-to-regexp@2.2.1:
|
path-to-regexp@2.2.1:
|
||||||
version "2.2.1"
|
version "2.2.1"
|
||||||
@@ -9257,12 +9312,12 @@ pupa@^3.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
escape-goat "^4.0.0"
|
escape-goat "^4.0.0"
|
||||||
|
|
||||||
qs@6.11.0:
|
qs@6.13.0:
|
||||||
version "6.11.0"
|
version "6.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
|
||||||
integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
|
integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
|
||||||
dependencies:
|
dependencies:
|
||||||
side-channel "^1.0.4"
|
side-channel "^1.0.6"
|
||||||
|
|
||||||
queue-microtask@^1.2.2:
|
queue-microtask@^1.2.2:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
@@ -9961,10 +10016,10 @@ semver@~7.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lru-cache "^6.0.0"
|
lru-cache "^6.0.0"
|
||||||
|
|
||||||
send@0.18.0:
|
send@0.19.0:
|
||||||
version "0.18.0"
|
version "0.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
|
||||||
integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
|
integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "2.6.9"
|
debug "2.6.9"
|
||||||
depd "2.0.0"
|
depd "2.0.0"
|
||||||
@@ -10014,15 +10069,15 @@ serve-index@^1.9.1:
|
|||||||
mime-types "~2.1.17"
|
mime-types "~2.1.17"
|
||||||
parseurl "~1.3.2"
|
parseurl "~1.3.2"
|
||||||
|
|
||||||
serve-static@1.15.0:
|
serve-static@1.16.2:
|
||||||
version "1.15.0"
|
version "1.16.2"
|
||||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
|
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
|
||||||
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
|
integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
|
||||||
dependencies:
|
dependencies:
|
||||||
encodeurl "~1.0.2"
|
encodeurl "~2.0.0"
|
||||||
escape-html "~1.0.3"
|
escape-html "~1.0.3"
|
||||||
parseurl "~1.3.3"
|
parseurl "~1.3.3"
|
||||||
send "0.18.0"
|
send "0.19.0"
|
||||||
|
|
||||||
set-function-length@^1.1.1:
|
set-function-length@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
@@ -10034,6 +10089,18 @@ set-function-length@^1.1.1:
|
|||||||
gopd "^1.0.1"
|
gopd "^1.0.1"
|
||||||
has-property-descriptors "^1.0.0"
|
has-property-descriptors "^1.0.0"
|
||||||
|
|
||||||
|
set-function-length@^1.2.1:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
||||||
|
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
||||||
|
dependencies:
|
||||||
|
define-data-property "^1.1.4"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
get-intrinsic "^1.2.4"
|
||||||
|
gopd "^1.0.1"
|
||||||
|
has-property-descriptors "^1.0.2"
|
||||||
|
|
||||||
set-function-name@^2.0.0, set-function-name@^2.0.1:
|
set-function-name@^2.0.0, set-function-name@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a"
|
resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a"
|
||||||
@@ -10105,6 +10172,16 @@ side-channel@^1.0.4:
|
|||||||
get-intrinsic "^1.0.2"
|
get-intrinsic "^1.0.2"
|
||||||
object-inspect "^1.9.0"
|
object-inspect "^1.9.0"
|
||||||
|
|
||||||
|
side-channel@^1.0.6:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
|
||||||
|
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
|
||||||
|
dependencies:
|
||||||
|
call-bind "^1.0.7"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
get-intrinsic "^1.2.4"
|
||||||
|
object-inspect "^1.13.1"
|
||||||
|
|
||||||
signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
|
signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
|
||||||
version "3.0.7"
|
version "3.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
||||||
@@ -10292,7 +10369,16 @@ string-length@^4.0.1:
|
|||||||
char-regex "^1.0.2"
|
char-regex "^1.0.2"
|
||||||
strip-ansi "^6.0.0"
|
strip-ansi "^6.0.0"
|
||||||
|
|
||||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
"string-width-cjs@npm:string-width@^4.2.0":
|
||||||
|
version "4.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||||
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
|
dependencies:
|
||||||
|
emoji-regex "^8.0.0"
|
||||||
|
is-fullwidth-code-point "^3.0.0"
|
||||||
|
strip-ansi "^6.0.1"
|
||||||
|
|
||||||
|
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
@@ -10383,7 +10469,14 @@ stringify-object@^3.3.0:
|
|||||||
is-obj "^1.0.1"
|
is-obj "^1.0.1"
|
||||||
is-regexp "^1.0.0"
|
is-regexp "^1.0.0"
|
||||||
|
|
||||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
|
dependencies:
|
||||||
|
ansi-regex "^5.0.1"
|
||||||
|
|
||||||
|
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
@@ -11288,7 +11381,16 @@ word-wrap@^1.2.3:
|
|||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
||||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||||
|
|
||||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@7.0.0, wrap-ansi@^7.0.0:
|
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
|
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||||
|
dependencies:
|
||||||
|
ansi-styles "^4.0.0"
|
||||||
|
string-width "^4.1.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
|
||||||
|
wrap-ansi@7.0.0, wrap-ansi@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||||
|
@@ -205,6 +205,11 @@ void YGNodeStyleSetPositionPercent(YGNodeRef node, YGEdge edge, float percent) {
|
|||||||
node, scopedEnum(edge), value::percent(percent));
|
node, scopedEnum(edge), value::percent(percent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YGNodeStyleSetPositionAuto(YGNodeRef node, YGEdge edge) {
|
||||||
|
updateStyle<&Style::position, &Style::setPosition>(
|
||||||
|
node, scopedEnum(edge), value::ofAuto());
|
||||||
|
}
|
||||||
|
|
||||||
YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge) {
|
YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge) {
|
||||||
return (YGValue)resolveRef(node)->style().position(scopedEnum(edge));
|
return (YGValue)resolveRef(node)->style().position(scopedEnum(edge));
|
||||||
}
|
}
|
||||||
|
@@ -71,8 +71,10 @@ YGNodeStyleSetPosition(YGNodeRef node, YGEdge edge, float position);
|
|||||||
YG_EXPORT void
|
YG_EXPORT void
|
||||||
YGNodeStyleSetPositionPercent(YGNodeRef node, YGEdge edge, float position);
|
YGNodeStyleSetPositionPercent(YGNodeRef node, YGEdge edge, float position);
|
||||||
YG_EXPORT YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge);
|
YG_EXPORT YGValue YGNodeStyleGetPosition(YGNodeConstRef node, YGEdge edge);
|
||||||
|
YG_EXPORT void YGNodeStyleSetPositionAuto(YGNodeRef node, YGEdge edge);
|
||||||
|
|
||||||
YG_EXPORT void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float margin);
|
YG_EXPORT
|
||||||
|
void YGNodeStyleSetMargin(YGNodeRef node, YGEdge edge, float margin);
|
||||||
YG_EXPORT void
|
YG_EXPORT void
|
||||||
YGNodeStyleSetMarginPercent(YGNodeRef node, YGEdge edge, float margin);
|
YGNodeStyleSetMarginPercent(YGNodeRef node, YGEdge edge, float margin);
|
||||||
YG_EXPORT void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge);
|
YG_EXPORT void YGNodeStyleSetMarginAuto(YGNodeRef node, YGEdge edge);
|
||||||
|
@@ -154,7 +154,8 @@ static void positionAbsoluteChildLegacy(
|
|||||||
(parent->style().flexWrap() == Wrap::WrapReverse));
|
(parent->style().flexWrap() == Wrap::WrapReverse));
|
||||||
|
|
||||||
if (child->style().isFlexEndPositionDefined(axis, direction) &&
|
if (child->style().isFlexEndPositionDefined(axis, direction) &&
|
||||||
!child->style().isFlexStartPositionDefined(axis, direction)) {
|
(!child->style().isFlexStartPositionDefined(axis, direction) ||
|
||||||
|
child->style().isFlexStartPositionAuto(axis, direction))) {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
containingNode->getLayout().measuredDimension(dimension(axis)) -
|
containingNode->getLayout().measuredDimension(dimension(axis)) -
|
||||||
child->getLayout().measuredDimension(dimension(axis)) -
|
child->getLayout().measuredDimension(dimension(axis)) -
|
||||||
@@ -169,7 +170,8 @@ static void positionAbsoluteChildLegacy(
|
|||||||
isAxisRow ? containingBlockWidth : containingBlockHeight),
|
isAxisRow ? containingBlockWidth : containingBlockHeight),
|
||||||
flexStartEdge(axis));
|
flexStartEdge(axis));
|
||||||
} else if (
|
} else if (
|
||||||
!child->style().isFlexStartPositionDefined(axis, direction) &&
|
(!child->style().isFlexStartPositionDefined(axis, direction) ||
|
||||||
|
child->style().isFlexStartPositionAuto(axis, direction)) &&
|
||||||
shouldCenter) {
|
shouldCenter) {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
(parent->getLayout().measuredDimension(dimension(axis)) -
|
(parent->getLayout().measuredDimension(dimension(axis)) -
|
||||||
@@ -177,7 +179,8 @@ static void positionAbsoluteChildLegacy(
|
|||||||
2.0f,
|
2.0f,
|
||||||
flexStartEdge(axis));
|
flexStartEdge(axis));
|
||||||
} else if (
|
} else if (
|
||||||
!child->style().isFlexStartPositionDefined(axis, direction) &&
|
(!child->style().isFlexStartPositionDefined(axis, direction) ||
|
||||||
|
child->style().isFlexStartPositionAuto(axis, direction)) &&
|
||||||
shouldFlexEnd) {
|
shouldFlexEnd) {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
(parent->getLayout().measuredDimension(dimension(axis)) -
|
(parent->getLayout().measuredDimension(dimension(axis)) -
|
||||||
@@ -223,7 +226,8 @@ static void positionAbsoluteChildImpl(
|
|||||||
// to the flex-start edge because this algorithm works by positioning on the
|
// to the flex-start edge because this algorithm works by positioning on the
|
||||||
// flex-start edge and then filling in the flex-end direction at the end if
|
// flex-start edge and then filling in the flex-end direction at the end if
|
||||||
// necessary.
|
// necessary.
|
||||||
if (child->style().isInlineStartPositionDefined(axis, direction)) {
|
if (child->style().isInlineStartPositionDefined(axis, direction) &&
|
||||||
|
!child->style().isInlineStartPositionAuto(axis, direction)) {
|
||||||
const float positionRelativeToInlineStart =
|
const float positionRelativeToInlineStart =
|
||||||
child->style().computeInlineStartPosition(
|
child->style().computeInlineStartPosition(
|
||||||
axis, direction, containingBlockSize) +
|
axis, direction, containingBlockSize) +
|
||||||
@@ -237,7 +241,9 @@ static void positionAbsoluteChildImpl(
|
|||||||
: positionRelativeToInlineStart;
|
: positionRelativeToInlineStart;
|
||||||
|
|
||||||
child->setLayoutPosition(positionRelativeToFlexStart, flexStartEdge(axis));
|
child->setLayoutPosition(positionRelativeToFlexStart, flexStartEdge(axis));
|
||||||
} else if (child->style().isInlineEndPositionDefined(axis, direction)) {
|
} else if (
|
||||||
|
child->style().isInlineEndPositionDefined(axis, direction) &&
|
||||||
|
!child->style().isInlineEndPositionAuto(axis, direction)) {
|
||||||
const float positionRelativeToInlineStart =
|
const float positionRelativeToInlineStart =
|
||||||
containingNode->getLayout().measuredDimension(dimension(axis)) -
|
containingNode->getLayout().measuredDimension(dimension(axis)) -
|
||||||
child->getLayout().measuredDimension(dimension(axis)) -
|
child->getLayout().measuredDimension(dimension(axis)) -
|
||||||
@@ -328,7 +334,10 @@ void layoutAbsoluteChild(
|
|||||||
if (child->style().isFlexStartPositionDefined(
|
if (child->style().isFlexStartPositionDefined(
|
||||||
FlexDirection::Row, direction) &&
|
FlexDirection::Row, direction) &&
|
||||||
child->style().isFlexEndPositionDefined(
|
child->style().isFlexEndPositionDefined(
|
||||||
FlexDirection::Row, direction)) {
|
FlexDirection::Row, direction) &&
|
||||||
|
!child->style().isFlexStartPositionAuto(
|
||||||
|
FlexDirection::Row, direction) &&
|
||||||
|
!child->style().isFlexEndPositionAuto(FlexDirection::Row, direction)) {
|
||||||
childWidth =
|
childWidth =
|
||||||
containingNode->getLayout().measuredDimension(Dimension::Width) -
|
containingNode->getLayout().measuredDimension(Dimension::Width) -
|
||||||
(containingNode->style().computeFlexStartBorder(
|
(containingNode->style().computeFlexStartBorder(
|
||||||
@@ -360,6 +369,10 @@ void layoutAbsoluteChild(
|
|||||||
if (child->style().isFlexStartPositionDefined(
|
if (child->style().isFlexStartPositionDefined(
|
||||||
FlexDirection::Column, direction) &&
|
FlexDirection::Column, direction) &&
|
||||||
child->style().isFlexEndPositionDefined(
|
child->style().isFlexEndPositionDefined(
|
||||||
|
FlexDirection::Column, direction) &&
|
||||||
|
!child->style().isFlexStartPositionAuto(
|
||||||
|
FlexDirection::Column, direction) &&
|
||||||
|
!child->style().isFlexEndPositionAuto(
|
||||||
FlexDirection::Column, direction)) {
|
FlexDirection::Column, direction)) {
|
||||||
childHeight =
|
childHeight =
|
||||||
containingNode->getLayout().measuredDimension(Dimension::Height) -
|
containingNode->getLayout().measuredDimension(Dimension::Height) -
|
||||||
|
@@ -1059,7 +1059,8 @@ static void justifyMainAxis(
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (childStyle.positionType() == PositionType::Absolute &&
|
if (childStyle.positionType() == PositionType::Absolute &&
|
||||||
child->style().isFlexStartPositionDefined(mainAxis, direction)) {
|
child->style().isFlexStartPositionDefined(mainAxis, direction) &&
|
||||||
|
!child->style().isFlexStartPositionAuto(mainAxis, direction)) {
|
||||||
if (performLayout) {
|
if (performLayout) {
|
||||||
// In case the child is position absolute and has left/top being
|
// In case the child is position absolute and has left/top being
|
||||||
// defined, we override the position to whatever the user said (and
|
// defined, we override the position to whatever the user said (and
|
||||||
@@ -1629,7 +1630,8 @@ static void calculateLayoutImpl(
|
|||||||
// top/left/bottom/right set, override all the previously computed
|
// top/left/bottom/right set, override all the previously computed
|
||||||
// positions to set it correctly.
|
// positions to set it correctly.
|
||||||
const bool isChildLeadingPosDefined =
|
const bool isChildLeadingPosDefined =
|
||||||
child->style().isFlexStartPositionDefined(crossAxis, direction);
|
child->style().isFlexStartPositionDefined(crossAxis, direction) &&
|
||||||
|
!child->style().isFlexStartPositionAuto(crossAxis, direction);
|
||||||
if (isChildLeadingPosDefined) {
|
if (isChildLeadingPosDefined) {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
child->style().computeFlexStartPosition(
|
child->style().computeFlexStartPosition(
|
||||||
|
@@ -226,7 +226,8 @@ float Node::relativePosition(
|
|||||||
if (style_.positionType() == PositionType::Static) {
|
if (style_.positionType() == PositionType::Static) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (style_.isInlineStartPositionDefined(axis, direction)) {
|
if (style_.isInlineStartPositionDefined(axis, direction) &&
|
||||||
|
!style_.isInlineStartPositionAuto(axis, direction)) {
|
||||||
return style_.computeInlineStartPosition(axis, direction, axisSize);
|
return style_.computeInlineStartPosition(axis, direction, axisSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -199,7 +199,11 @@ class YG_EXPORT Style {
|
|||||||
return pool_.getNumber(aspectRatio_);
|
return pool_.getNumber(aspectRatio_);
|
||||||
}
|
}
|
||||||
void setAspectRatio(FloatOptional value) {
|
void setAspectRatio(FloatOptional value) {
|
||||||
pool_.store(aspectRatio_, value);
|
// degenerate aspect ratios act as auto.
|
||||||
|
// see https://drafts.csswg.org/css-sizing-4/#valdef-aspect-ratio-ratio
|
||||||
|
pool_.store(
|
||||||
|
aspectRatio_,
|
||||||
|
value == 0.0f || std::isinf(value.unwrap()) ? FloatOptional{} : value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool horizontalInsetsDefined() const {
|
bool horizontalInsetsDefined() const {
|
||||||
@@ -223,22 +227,40 @@ class YG_EXPORT Style {
|
|||||||
return computePosition(flexStartEdge(axis), direction).isDefined();
|
return computePosition(flexStartEdge(axis), direction).isDefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isFlexStartPositionAuto(FlexDirection axis, Direction direction) const {
|
||||||
|
return computePosition(flexStartEdge(axis), direction).isAuto();
|
||||||
|
}
|
||||||
|
|
||||||
bool isInlineStartPositionDefined(FlexDirection axis, Direction direction)
|
bool isInlineStartPositionDefined(FlexDirection axis, Direction direction)
|
||||||
const {
|
const {
|
||||||
return computePosition(inlineStartEdge(axis, direction), direction)
|
return computePosition(inlineStartEdge(axis, direction), direction)
|
||||||
.isDefined();
|
.isDefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isInlineStartPositionAuto(FlexDirection axis, Direction direction)
|
||||||
|
const {
|
||||||
|
return computePosition(inlineStartEdge(axis, direction), direction)
|
||||||
|
.isAuto();
|
||||||
|
}
|
||||||
|
|
||||||
bool isFlexEndPositionDefined(FlexDirection axis, Direction direction) const {
|
bool isFlexEndPositionDefined(FlexDirection axis, Direction direction) const {
|
||||||
return computePosition(flexEndEdge(axis), direction).isDefined();
|
return computePosition(flexEndEdge(axis), direction).isDefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isFlexEndPositionAuto(FlexDirection axis, Direction direction) const {
|
||||||
|
return computePosition(flexEndEdge(axis), direction).isAuto();
|
||||||
|
}
|
||||||
|
|
||||||
bool isInlineEndPositionDefined(FlexDirection axis, Direction direction)
|
bool isInlineEndPositionDefined(FlexDirection axis, Direction direction)
|
||||||
const {
|
const {
|
||||||
return computePosition(inlineEndEdge(axis, direction), direction)
|
return computePosition(inlineEndEdge(axis, direction), direction)
|
||||||
.isDefined();
|
.isDefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isInlineEndPositionAuto(FlexDirection axis, Direction direction) const {
|
||||||
|
return computePosition(inlineEndEdge(axis, direction), direction).isAuto();
|
||||||
|
}
|
||||||
|
|
||||||
float computeFlexStartPosition(
|
float computeFlexStartPosition(
|
||||||
FlexDirection axis,
|
FlexDirection axis,
|
||||||
Direction direction,
|
Direction direction,
|
||||||
|
Reference in New Issue
Block a user