/* * Copyright (c) 2025, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::CSS { // https://drafts.csswg.org/css-anchor-position-1/#funcdef-anchor-size class AnchorSizeStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(Optional const& anchor_name, Optional const& anchor_size, ValueComparingRefPtr const& fallback_value); virtual ~AnchorSizeStyleValue() override = default; virtual String to_string(SerializationMode) const override; bool properties_equal(AnchorSizeStyleValue const& other) const { return m_properties == other.m_properties; } Optional anchor_name() const { return m_properties.anchor_name; } Optional anchor_size() const { return m_properties.anchor_size; } ValueComparingRefPtr fallback_value() const { return m_properties.fallback_value; } private: AnchorSizeStyleValue(Optional const& anchor_name, Optional const& anchor_size, ValueComparingRefPtr const& fallback_value); struct Properties { Optional anchor_name; Optional anchor_size; ValueComparingRefPtr fallback_value; bool operator==(Properties const&) const = default; } m_properties; }; }