Meta: Add basic-shape as a CSS property value type

This commit is contained in:
MacDue 2024-05-26 00:20:52 +01:00 committed by Andreas Kling
parent 120915048c
commit 0135af6e60
Notes: sideshowbarker 2024-07-17 11:34:34 +09:00
3 changed files with 10 additions and 1 deletions

View file

@ -22,7 +22,7 @@ bool is_animatable_property(JsonObject& properties, StringView property_name);
static bool type_name_is_enum(StringView type_name)
{
return !AK::first_is_one_of(type_name,
"angle"sv, "background-position"sv, "color"sv, "custom-ident"sv, "easing-function"sv, "flex"sv, "frequency"sv, "image"sv,
"angle"sv, "background-position"sv, "basic-shape"sv, "color"sv, "custom-ident"sv, "easing-function"sv, "flex"sv, "frequency"sv, "image"sv,
"integer"sv, "length"sv, "number"sv, "paint"sv, "percentage"sv, "position"sv, "ratio"sv, "rect"sv,
"resolution"sv, "string"sv, "time"sv, "url"sv);
}
@ -180,6 +180,7 @@ NonnullRefPtr<StyleValue> property_initial_value(JS::Realm&, PropertyID);
enum class ValueType {
Angle,
BackgroundPosition,
BasicShape,
Color,
CustomIdent,
EasingFunction,
@ -699,6 +700,8 @@ bool property_accepts_type(PropertyID property_id, ValueType value_type)
property_generator.appendln(" case ValueType::Angle:");
} else if (type_name == "background-position") {
property_generator.appendln(" case ValueType::BackgroundPosition:");
} else if (type_name == "basic-shape") {
property_generator.appendln(" case ValueType::BasicShape:");
} else if (type_name == "color") {
property_generator.appendln(" case ValueType::Color:");
} else if (type_name == "custom-ident") {

View file

@ -34,6 +34,7 @@ Optional<CSSNumericType::BaseType> CSSNumericType::base_type_from_value_type(Val
return BaseType::Time;
case ValueType::BackgroundPosition:
case ValueType::BasicShape:
case ValueType::Color:
case ValueType::CustomIdent:
case ValueType::EasingFunction:

View file

@ -6587,6 +6587,11 @@ Optional<Parser::PropertyAndValue> Parser::parse_css_value_for_properties(Readon
return PropertyAndValue { *property, maybe_position };
}
if (auto property = any_property_accepts_type(property_ids, ValueType::BasicShape); property.has_value()) {
if (auto maybe_basic_shape = parse_basic_shape_value(tokens))
return PropertyAndValue { *property, maybe_basic_shape };
}
if (auto property = any_property_accepts_type(property_ids, ValueType::Ratio); property.has_value()) {
if (auto maybe_ratio = parse_ratio_value(tokens))
return PropertyAndValue { *property, maybe_ratio };