/* * Copyright (c) 2026, Tim Ledbetter * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::DOM { class SlotRegistry { public: void add(HTML::HTMLSlotElement&); void remove(HTML::HTMLSlotElement&); GC::Ptr first_slot_with_name(FlyString const& name) const; template void for_each_slot(Callback callback) { if (is_empty()) return; for (auto& slot : m_slots) { if (slot) callback(*slot); } } bool is_empty() const; private: bool try_insert_in_tree_order(HTML::HTMLSlotElement&); Vector> m_slots; size_t m_slot_count { 0 }; }; }