diff --git a/crates/figma_import/src/figma_schema.rs b/crates/figma_import/src/figma_schema.rs index 835660a2a..900282ffe 100644 --- a/crates/figma_import/src/figma_schema.rs +++ b/crates/figma_import/src/figma_schema.rs @@ -1009,6 +1009,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 412612e92..7418b07c5 100644 --- a/crates/figma_import/src/tools/fetch_layout.rs +++ b/crates/figma_import/src/tools/fetch_layout.rs @@ -236,7 +236,8 @@ pub fn fetch_layout(args: Args) -> Result<(), ConvertError> { eprintln!("Warning: {error}"); } - let stage = views.get(&NodeQuery::NodeName("#stage".to_string())); + // Take the first argument as the root node + let stage = views.get(&NodeQuery::NodeName(args.nodes.get(0).expect("NotEmpty").to_string())); if let Some(stage) = stage { let mut id = 0; let mut layout_manager = LayoutManager::new(); diff --git a/crates/figma_import/src/transform_flexbox.rs b/crates/figma_import/src/transform_flexbox.rs index 733cf2a32..d2eae9240 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 = PositionType::Relative; @@ -216,7 +231,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(); } } @@ -237,7 +252,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(); } } @@ -314,20 +329,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 @@ -367,7 +382,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(); } @@ -450,7 +467,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(); + } } } @@ -496,7 +515,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 5c11cf5e2..14f8b8c5f 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 fdf470e6b..8274aa4e6 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/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf b/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf index f6c210083..b6b2cb032 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..5917d3bd3 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 f6bc6ee47..8192ef196 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 23ad49b13..8bf491963 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 28e7aed88..7f32626c7 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 801bc5544..a63d6ef21 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 dea4f49aa..fe3ef9331 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/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf b/integration-tests/validation/src/main/assets/figma/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf index 79c2c42cc..e4739fe8c 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 69563d3c4..92b581bb4 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 ca3815223..9e3515bee 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 8081c81a2..3dfecf9b1 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 475c6c27e..866d4811d 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 7be67aa57..90b1e948a 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 bca46a6e6..5af7cf61b 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 e7fff7c2f..decc5ff1c 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 6d521447f..1736cce88 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 7908b9fa7..0afd123d1 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 d5b0dfec6..112054c5c 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 dac1472d2..7f783dd7e 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 42bf42408..c4b9874bc 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/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf b/integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf index 20c28c231..0ab73cd69 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 3dba4e511..7face6762 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 ae6d34ebf..1204e7ef8 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 3bf310d1f..afe054800 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 643ee6246..476f25917 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 4cddd2ec4..f68459116 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 b9b252093..6209c28a1 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 2ecb377a9..511c68c4c 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 c75238dd4..935647af2 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 e9105cc38..a6db13166 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 a9a4e8f32..ab09f78d5 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 6d355a2e3..549f18af9 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 a7673706e..d92bab201 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 736305f3b..c4dafc526 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 0de974ac1..157b28767 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 f14f1b2d7..c9866264d 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 7b7bb291a..cc37b9dbe 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 a19d51bb8..abf44222b 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/VariablesTestDoc_HhGxvL4aHhP8ALsLNz56TP.dcf b/integration-tests/validation/src/main/assets/figma/VariablesTestDoc_HhGxvL4aHhP8ALsLNz56TP.dcf index 35243d609..665e6bf35 100644 Binary files a/integration-tests/validation/src/main/assets/figma/VariablesTestDoc_HhGxvL4aHhP8ALsLNz56TP.dcf and b/integration-tests/validation/src/main/assets/figma/VariablesTestDoc_HhGxvL4aHhP8ALsLNz56TP.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 1f4b1227b..4de1cedc5 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 95d758a28..49ce9545a 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 dffe52294..3c02ddaf1 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 d256709f1..7010030c1 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 7b71f1fc7..7c088cd7e 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 e4c251e3d..81009c2ee 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 9ea728e61..a1d2efca6 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..0c18aa7d1 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..dad5126bb Binary files /dev/null and b/integration-tests/validation/src/testDebug/roborazzi/RenderAllExamples/AutoLayout_SQUOOSH.png 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 2d72888e6..722e7110e 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