/* * Copyright (c) 2025, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::DOM { // Either an Element or a PseudoElement class AbstractElement { public: AbstractElement(GC::Ref, Optional = {}); Element& element() { return m_element; } Element const& element() const { return m_element; } Optional pseudo_element() const { return m_pseudo_element; } GC::Ptr parent_element() const; GC::Ptr computed_properties() const; CSS::CountersSet& ensure_counters_set(); void set_counters_set(OwnPtr&&); void visit(GC::Cell::Visitor& visitor) const; private: GC::Ref m_element; Optional m_pseudo_element; }; }