/* * Copyright (c) 2026, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::CSS { // https://drafts.csswg.org/css-conditional-5/#container-rule class WEB_API ContainerQuery final : public RefCounted { public: static NonnullRefPtr create(NonnullOwnPtr&&); bool matches() const { return m_matches; } ContainerQueryFeatureRequirements const& feature_requirements() const { return m_feature_requirements; } MatchResult evaluate(DOM::AbstractElement const&, Optional const& container_name) const; String to_string() const; void dump(StringBuilder&, int indent_levels = 0) const; private: explicit ContainerQuery(NonnullOwnPtr&&); NonnullOwnPtr m_condition; ContainerQueryFeatureRequirements m_feature_requirements; bool m_matches { false }; }; bool container_name_matches(DOM::Element const&, Optional const& container_name); }