/* * Copyright (c) 2025, Aliaksandr Kalenik * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::CSS { enum class ExcludePropertiesNestedInNotPseudoClass : bool { No, Yes, }; enum class InsideNthChildPseudoClass { No, Yes, }; struct StyleInvalidationData; void build_invalidation_sets_for_simple_selector(Selector::SimpleSelector const&, InvalidationSet&, ExcludePropertiesNestedInNotPseudoClass, StyleInvalidationData&, InsideNthChildPseudoClass); struct StyleInvalidationData { HashMap descendant_invalidation_sets; HashTable ids_used_in_has_selectors; HashTable class_names_used_in_has_selectors; HashTable attribute_names_used_in_has_selectors; HashTable tag_names_used_in_has_selectors; HashTable pseudo_classes_used_in_has_selectors; void build_invalidation_sets_for_selector(Selector const& selector); }; }