/* * Copyright (c) 2024-2025, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::CSS { class CSSNestedDeclarations final : public CSSRule { WEB_PLATFORM_OBJECT(CSSNestedDeclarations, CSSRule); GC_DECLARE_ALLOCATOR(CSSNestedDeclarations); public: [[nodiscard]] static GC::Ref create(JS::Realm&, CSSStyleProperties&); virtual ~CSSNestedDeclarations() override = default; CSSStyleProperties const& declaration() const { return m_declaration; } CSSStyleDeclaration* style(); CSSStyleRule const& parent_style_rule() const; private: CSSNestedDeclarations(JS::Realm&, CSSStyleProperties&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; virtual String serialized() const override; virtual void clear_caches() override; GC::Ref m_declaration; GC::Ptr mutable m_parent_style_rule; }; template<> inline bool CSSRule::fast_is() const { return type() == CSSRule::Type::NestedDeclarations; } }