/* * Copyright (c) 2026, Callum Law #include namespace Web::CSS { // NB: We use this struct internally instead of just using FunctionParameter so we can store the values in more // convenient types (i.e. not just strings) struct FunctionParameterInternal { FlyString name; NonnullOwnPtr type; Optional> default_value; void serialize(StringBuilder& builder) const; }; // https://drafts.csswg.org/css-mixins-1/#dictdef-functionparameter struct FunctionParameter { FlyString name; String type; Optional default_value; static FunctionParameter from_internal_function_parameter(FunctionParameterInternal const&); }; // https://drafts.csswg.org/css-mixins-1/#cssfunctionrule class CSSFunctionRule : public CSSGroupingRule { WEB_PLATFORM_OBJECT(CSSFunctionRule, CSSGroupingRule); GC_DECLARE_ALLOCATOR(CSSFunctionRule); public: static GC::Ref create(JS::Realm&, CSSRuleList&, FlyString name, Vector parameters, NonnullOwnPtr return_type); virtual ~CSSFunctionRule() override = default; virtual void initialize(JS::Realm&) override; FlyString name() const { return m_name; } Vector get_parameters() const; String return_type() const; String serialized() const override; private: CSSFunctionRule(JS::Realm&, CSSRuleList&, FlyString name, Vector parameters, NonnullOwnPtr return_type); FlyString m_name; Vector m_parameters; NonnullOwnPtr m_return_type; }; }