diff --git a/crates/figma_import/src/figma_schema.rs b/crates/figma_import/src/figma_schema.rs index 7064315e3..6213d2f02 100644 --- a/crates/figma_import/src/figma_schema.rs +++ b/crates/figma_import/src/figma_schema.rs @@ -1024,6 +1024,10 @@ pub struct Node { pub stroke_cap: StrokeCap, pub bound_variables: Option, pub explicit_variable_modes: Option>, + pub min_width: Option, + pub min_height: Option, + pub max_width: Option, + pub max_height: Option, } impl Node { diff --git a/crates/figma_import/src/tools/fetch_layout.rs b/crates/figma_import/src/tools/fetch_layout.rs index 148f7588c..b1b79b678 100644 --- a/crates/figma_import/src/tools/fetch_layout.rs +++ b/crates/figma_import/src/tools/fetch_layout.rs @@ -238,6 +238,7 @@ pub fn fetch_layout(args: Args) -> Result<(), ConvertError> { eprintln!("Warning: {error}"); } + // Take the first argument as the root node let stage = views.get(&NodeQuery::NodeName(args.nodes.get(0).expect("NOT EMPTY").to_string())); if let Some(stage) = stage { let mut id = 0; diff --git a/crates/figma_import/src/transform_flexbox.rs b/crates/figma_import/src/transform_flexbox.rs index b4489a56c..23179b5b5 100644 --- a/crates/figma_import/src/transform_flexbox.rs +++ b/crates/figma_import/src/transform_flexbox.rs @@ -59,6 +59,7 @@ use dc_bundle::legacy_definition::view::text_style::{StyledTextRun, TextStyle}; use dc_bundle::legacy_definition::view::view::{RenderMethod, ScrollInfo, View}; use dc_bundle::legacy_definition::view::view_style::ViewStyle; use log::error; + use unicode_segmentation::UnicodeSegmentation; // If an Auto content preview widget specifies a "Hug contents" sizing policy, this @@ -119,6 +120,20 @@ fn compute_layout( style.layout_style.bounding_box.height = bounds.height(); } + if let Some(max_width) = node.max_width { + style.layout_style.max_width = DimensionProto::new_points(max_width); + } + if let Some(max_height) = node.max_height { + style.layout_style.max_height = DimensionProto::new_points(max_height); + } + + if let Some(min_width) = node.min_width { + style.layout_style.min_width = DimensionProto::new_points(min_width); + } + if let Some(min_height) = node.min_height { + style.layout_style.min_height = DimensionProto::new_points(min_height); + } + // Frames can implement Auto Layout on their children. if let Some(frame) = node.frame() { style.layout_style.position_type = match frame.layout_positioning { @@ -219,7 +234,7 @@ fn compute_layout( } figma_schema::LayoutSizingMode::Auto => DimensionProto::new_auto(), }; - if hug_width { + if hug_width && node.min_width.is_none() { style.layout_style.min_width = DimensionProto::new_auto(); } } @@ -240,7 +255,7 @@ fn compute_layout( } figma_schema::LayoutSizingMode::Auto => DimensionProto::new_auto(), }; - if hug_height { + if hug_height && node.min_height.is_none() { style.layout_style.min_height = DimensionProto::new_auto(); } } @@ -320,20 +335,20 @@ fn compute_layout( style.layout_style.height = DimensionProto::new_auto(); } if let Some(bounds) = node.absolute_bounding_box { - if !hug_width { + if !hug_width && node.min_width.is_none() { style.layout_style.min_width = DimensionProto::new_points(bounds.width().ceil()); } - if !hug_height { + if !hug_height && node.min_height.is_none() { style.layout_style.min_height = DimensionProto::new_points(bounds.height().ceil()); } } if let Some(size) = &node.size { if size.is_valid() { - if !hug_width { + if !hug_width && node.min_width.is_none() { style.layout_style.min_width = DimensionProto::new_points(size.x()); } - if !hug_height { + if !hug_height && node.min_height.is_none() { style.layout_style.min_height = DimensionProto::new_points(size.y()); } // Set fixed vector size @@ -373,7 +388,9 @@ fn compute_layout( style.layout_style.height = DimensionProto::new_auto(); } figma_schema::TextAutoResize::WidthAndHeight => { - style.layout_style.min_width = DimensionProto::new_auto(); + if node.min_width.is_none() { + style.layout_style.min_width = DimensionProto::new_auto(); + } style.layout_style.width = DimensionProto::new_auto(); style.layout_style.height = DimensionProto::new_auto(); } @@ -456,7 +473,9 @@ fn compute_layout( right / parent_bounds.width().ceil() }); style.layout_style.width = DimensionProto::new_auto(); - style.layout_style.min_width = DimensionProto::new_auto(); + if node.min_width.is_none() { + style.layout_style.min_width = DimensionProto::new_auto(); + } } } @@ -502,7 +521,9 @@ fn compute_layout( style.layout_style.top = DimensionProto::new_percent(top); style.layout_style.bottom = DimensionProto::new_percent(bottom); style.layout_style.height = DimensionProto::new_auto(); - style.layout_style.min_height = DimensionProto::new_auto(); + if node.min_height.is_none() { + style.layout_style.min_height = DimensionProto::new_auto(); + } } } } diff --git a/crates/figma_import/tests/layout-unit-tests.dcf b/crates/figma_import/tests/layout-unit-tests.dcf index 70bfde19b..8e42f9de3 100644 Binary files a/crates/figma_import/tests/layout-unit-tests.dcf and b/crates/figma_import/tests/layout-unit-tests.dcf differ diff --git a/designcompose/src/main/assets/figma/DesignSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf b/designcompose/src/main/assets/figma/DesignSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf index 654725c31..313c9bd52 100644 Binary files a/designcompose/src/main/assets/figma/DesignSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf and b/designcompose/src/main/assets/figma/DesignSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf differ diff --git a/designcompose/src/testDebug/res/raw/raw_resource_test_hello_world_doc b/designcompose/src/testDebug/res/raw/raw_resource_test_hello_world_doc index d9f32c662..9ba06cb80 100644 Binary files a/designcompose/src/testDebug/res/raw/raw_resource_test_hello_world_doc and b/designcompose/src/testDebug/res/raw/raw_resource_test_hello_world_doc differ diff --git a/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf b/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf index 57ba8a700..1f4b29efe 100644 Binary files a/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf and b/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/AutoLayoutTestDoc_ArHVZAQIsKf2B9mATnVvLX.dcf b/integration-tests/validation/src/main/assets/figma/AutoLayoutTestDoc_ArHVZAQIsKf2B9mATnVvLX.dcf new file mode 100644 index 000000000..0d10149f0 Binary files /dev/null and b/integration-tests/validation/src/main/assets/figma/AutoLayoutTestDoc_ArHVZAQIsKf2B9mATnVvLX.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf b/integration-tests/validation/src/main/assets/figma/BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf index 709bd74ad..f612185b6 100644 Binary files a/integration-tests/validation/src/main/assets/figma/BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf and b/integration-tests/validation/src/main/assets/figma/BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf b/integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf index c946a4113..7ec695a4d 100644 Binary files a/integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf and b/integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ColorTintTestDoc_MCtUD3yjONxK6rQm65yqM5.dcf b/integration-tests/validation/src/main/assets/figma/ColorTintTestDoc_MCtUD3yjONxK6rQm65yqM5.dcf index b11775293..8a1a3e9fa 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ColorTintTestDoc_MCtUD3yjONxK6rQm65yqM5.dcf and b/integration-tests/validation/src/main/assets/figma/ColorTintTestDoc_MCtUD3yjONxK6rQm65yqM5.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ComponentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf b/integration-tests/validation/src/main/assets/figma/ComponentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf index 2ac586df5..207d80e77 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ComponentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf and b/integration-tests/validation/src/main/assets/figma/ComponentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf b/integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf index 5d5735451..405cbc1a5 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf and b/integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ComponentTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf b/integration-tests/validation/src/main/assets/figma/ComponentTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf index 7e3545a9d..d99e4e5ee 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ComponentTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf and b/integration-tests/validation/src/main/assets/figma/ComponentTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf b/integration-tests/validation/src/main/assets/figma/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf index cb571eaec..d7aedee10 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf and b/integration-tests/validation/src/main/assets/figma/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf b/integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf index 5b8c1601e..b2dcc3b96 100644 Binary files a/integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf and b/integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/CustomBrushTestDoc_oetCBVw8gCAxmCNllXx7zO.dcf b/integration-tests/validation/src/main/assets/figma/CustomBrushTestDoc_oetCBVw8gCAxmCNllXx7zO.dcf index 76b76dbbf..396cdc92a 100644 Binary files a/integration-tests/validation/src/main/assets/figma/CustomBrushTestDoc_oetCBVw8gCAxmCNllXx7zO.dcf and b/integration-tests/validation/src/main/assets/figma/CustomBrushTestDoc_oetCBVw8gCAxmCNllXx7zO.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf b/integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf index 8b40dfcb5..e1176f337 100644 Binary files a/integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf and b/integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf b/integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf index 95669cfa0..bb6548872 100644 Binary files a/integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf and b/integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/FillTestDoc_dB3q96FkxkTO4czn5NqnxV.dcf b/integration-tests/validation/src/main/assets/figma/FillTestDoc_dB3q96FkxkTO4czn5NqnxV.dcf index d67dfc423..5ab776b3a 100644 Binary files a/integration-tests/validation/src/main/assets/figma/FillTestDoc_dB3q96FkxkTO4czn5NqnxV.dcf and b/integration-tests/validation/src/main/assets/figma/FillTestDoc_dB3q96FkxkTO4czn5NqnxV.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf b/integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf index eb405382e..3b388051c 100644 Binary files a/integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf and b/integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/GridLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf b/integration-tests/validation/src/main/assets/figma/GridLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf index bf24891d6..c1193704a 100644 Binary files a/integration-tests/validation/src/main/assets/figma/GridLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf and b/integration-tests/validation/src/main/assets/figma/GridLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf b/integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf index 8a2ce4e47..80e60308a 100644 Binary files a/integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf and b/integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/HelloByeDoc_MCHaMYcIEnRpbvU9Ms7a0o.dcf b/integration-tests/validation/src/main/assets/figma/HelloByeDoc_MCHaMYcIEnRpbvU9Ms7a0o.dcf index ccdf12258..519c2e630 100644 Binary files a/integration-tests/validation/src/main/assets/figma/HelloByeDoc_MCHaMYcIEnRpbvU9Ms7a0o.dcf and b/integration-tests/validation/src/main/assets/figma/HelloByeDoc_MCHaMYcIEnRpbvU9Ms7a0o.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/HelloVersionDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf b/integration-tests/validation/src/main/assets/figma/HelloVersionDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf index 15ca7808b..90ad809f7 100644 Binary files a/integration-tests/validation/src/main/assets/figma/HelloVersionDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf and b/integration-tests/validation/src/main/assets/figma/HelloVersionDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf b/integration-tests/validation/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf index 5e67f350f..ffe3451c1 100644 Binary files a/integration-tests/validation/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf and b/integration-tests/validation/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/HyperlinkValidationDoc_uBExbEg4lcRa0xN2yaLTX8.dcf b/integration-tests/validation/src/main/assets/figma/HyperlinkValidationDoc_uBExbEg4lcRa0xN2yaLTX8.dcf index 9b70993c6..4d946ca56 100644 Binary files a/integration-tests/validation/src/main/assets/figma/HyperlinkValidationDoc_uBExbEg4lcRa0xN2yaLTX8.dcf and b/integration-tests/validation/src/main/assets/figma/HyperlinkValidationDoc_uBExbEg4lcRa0xN2yaLTX8.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/IgnoreAutoLayoutTestDoc_vPNR6N02HfdcpC8wR5yBYP.dcf b/integration-tests/validation/src/main/assets/figma/IgnoreAutoLayoutTestDoc_vPNR6N02HfdcpC8wR5yBYP.dcf index 393b34e3e..db366d115 100644 Binary files a/integration-tests/validation/src/main/assets/figma/IgnoreAutoLayoutTestDoc_vPNR6N02HfdcpC8wR5yBYP.dcf and b/integration-tests/validation/src/main/assets/figma/IgnoreAutoLayoutTestDoc_vPNR6N02HfdcpC8wR5yBYP.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf b/integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf index 5f1fa8445..a87839e25 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf and b/integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/InteractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf b/integration-tests/validation/src/main/assets/figma/InteractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf index 85efc058e..481f2fbd6 100644 Binary files a/integration-tests/validation/src/main/assets/figma/InteractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf and b/integration-tests/validation/src/main/assets/figma/InteractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ItemSpacingTestDoc_YXrHBp6C6OaW5ShcCYeGJc.dcf b/integration-tests/validation/src/main/assets/figma/ItemSpacingTestDoc_YXrHBp6C6OaW5ShcCYeGJc.dcf index a52b0f68a..6ec9c5653 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ItemSpacingTestDoc_YXrHBp6C6OaW5ShcCYeGJc.dcf and b/integration-tests/validation/src/main/assets/figma/ItemSpacingTestDoc_YXrHBp6C6OaW5ShcCYeGJc.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/LayoutReplacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf b/integration-tests/validation/src/main/assets/figma/LayoutReplacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf index a52f378d6..883b609f0 100644 Binary files a/integration-tests/validation/src/main/assets/figma/LayoutReplacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf and b/integration-tests/validation/src/main/assets/figma/LayoutReplacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf b/integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf index 2172f45e3..67c434f5a 100644 Binary files a/integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf and b/integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf b/integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf index aa6882318..085fd8ab8 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf and b/integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf b/integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf index 4f7f49709..387f64ccd 100644 Binary files a/integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf and b/integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf b/integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf index 6a32ff326..2e252b21b 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf and b/integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/OnePxSeparatorDoc_EXjTHxfMNBtXDrz8hr6MFB.dcf b/integration-tests/validation/src/main/assets/figma/OnePxSeparatorDoc_EXjTHxfMNBtXDrz8hr6MFB.dcf index fa414949a..7dff12d8c 100644 Binary files a/integration-tests/validation/src/main/assets/figma/OnePxSeparatorDoc_EXjTHxfMNBtXDrz8hr6MFB.dcf and b/integration-tests/validation/src/main/assets/figma/OnePxSeparatorDoc_EXjTHxfMNBtXDrz8hr6MFB.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf b/integration-tests/validation/src/main/assets/figma/OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf index 73cc970d9..c5c2cfba1 100644 Binary files a/integration-tests/validation/src/main/assets/figma/OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf and b/integration-tests/validation/src/main/assets/figma/OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/RecursiveCustomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf b/integration-tests/validation/src/main/assets/figma/RecursiveCustomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf index ed76321a9..903eec3c5 100644 Binary files a/integration-tests/validation/src/main/assets/figma/RecursiveCustomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf and b/integration-tests/validation/src/main/assets/figma/RecursiveCustomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf b/integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf index 554d2e9f6..0b961204c 100644 Binary files a/integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf and b/integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf b/integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf index 46192f986..1b9542a5a 100644 Binary files a/integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf and b/integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/StyledTextRunsDoc_mIYV4YsYYaMTsBMCVskA4N.dcf b/integration-tests/validation/src/main/assets/figma/StyledTextRunsDoc_mIYV4YsYYaMTsBMCVskA4N.dcf index 2d5935a95..a73b5ba86 100644 Binary files a/integration-tests/validation/src/main/assets/figma/StyledTextRunsDoc_mIYV4YsYYaMTsBMCVskA4N.dcf and b/integration-tests/validation/src/main/assets/figma/StyledTextRunsDoc_mIYV4YsYYaMTsBMCVskA4N.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf b/integration-tests/validation/src/main/assets/figma/TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf index 6c119e798..e29adf0fd 100644 Binary files a/integration-tests/validation/src/main/assets/figma/TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf and b/integration-tests/validation/src/main/assets/figma/TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf b/integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf index 32a2e6eed..d4e543541 100644 Binary files a/integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf and b/integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/TextResizingTestDoc_kAoYvgHkPzA4J4pALZ3Xhg.dcf b/integration-tests/validation/src/main/assets/figma/TextResizingTestDoc_kAoYvgHkPzA4J4pALZ3Xhg.dcf index 1e1b1ed13..6d65f604b 100644 Binary files a/integration-tests/validation/src/main/assets/figma/TextResizingTestDoc_kAoYvgHkPzA4J4pALZ3Xhg.dcf and b/integration-tests/validation/src/main/assets/figma/TextResizingTestDoc_kAoYvgHkPzA4J4pALZ3Xhg.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf b/integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf index 614958c42..3fdb21ed3 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf and b/integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf b/integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf index d43aaf3a1..9e5a734a1 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf and b/integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf b/integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf index 4bdfddafa..578ae84e9 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf and b/integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VariantAsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf b/integration-tests/validation/src/main/assets/figma/VariantAsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf index 324d561e0..3c84af6be 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariantAsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf and b/integration-tests/validation/src/main/assets/figma/VariantAsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf b/integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf index cf952c6d4..f58ab74e7 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf and b/integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf b/integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf index d37dd5f79..39b25d78b 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf and b/integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf differ diff --git a/integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf b/integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf index 3a9f140fd..af3d443b2 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf and b/integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf differ diff --git a/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AllExamples.kt b/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AllExamples.kt index 732b6f4bf..850da7a9b 100644 --- a/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AllExamples.kt +++ b/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AllExamples.kt @@ -29,6 +29,7 @@ val EXAMPLES: ArrayList Unit, String?>> = Triple("HelloVersion", { HelloVersion() }, HelloVersionDoc.javaClass.name), // Alphabetically ordered and trying to put similar tests together... Triple("Alignment", { AlignmentTest() }, AlignmentTestDoc.javaClass.name), + Triple("AutoLayout", { AutoLayoutTest() }, AutoLayoutTestDoc.javaClass.name), Triple("Battleship", { BattleshipTest() }, BattleshipDoc.javaClass.name), Triple("Blend Modes", { BlendModeTest() }, BlendModeTestDoc.javaClass.name), Triple("Component Replace", { ComponentReplaceTest() }, ComponentReplaceDoc.javaClass.name), diff --git a/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AutoLayoutTest.kt b/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AutoLayoutTest.kt new file mode 100644 index 000000000..b106e8485 --- /dev/null +++ b/integration-tests/validation/src/main/java/com/android/designcompose/testapp/validation/examples/AutoLayoutTest.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.designcompose.testapp.validation.examples + +import androidx.compose.runtime.Composable +import com.android.designcompose.annotation.DesignComponent +import com.android.designcompose.annotation.DesignDoc + +@DesignDoc(id = "ArHVZAQIsKf2B9mATnVvLX") +interface AutoLayoutTest { + @DesignComponent(node = "#root") fun main() +} + +@Composable +fun AutoLayoutTest() { + AutoLayoutTestDoc.main() +} diff --git a/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout.png b/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout.png new file mode 100644 index 000000000..0cd8e2363 Binary files /dev/null and b/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout.png differ diff --git a/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout_SQUOOSH.png b/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout_SQUOOSH.png new file mode 100644 index 000000000..759322452 Binary files /dev/null and b/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout_SQUOOSH.png differ diff --git a/reference-apps/helloworld/helloworld-app/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf b/reference-apps/helloworld/helloworld-app/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf index d9f32c662..9ba06cb80 100644 Binary files a/reference-apps/helloworld/helloworld-app/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf and b/reference-apps/helloworld/helloworld-app/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf differ diff --git a/reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf b/reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf index 73aef7a3a..421242035 100644 Binary files a/reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf and b/reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf differ