/* * Copyright (c) 2026, Callum Law * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::CSS { class EmptyOptionalStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create() { static auto& instance = adopt_ref(*new (nothrow) EmptyOptionalStyleValue()).leak_ref(); return instance; } virtual ~EmptyOptionalStyleValue() override = default; // NB: This style is used to represent a missing optional value, it should only appear within a StyleValueList which // will skip serializing/tokenizing it and the relevant separator so it should never be serialized/tokenized. virtual void serialize(StringBuilder&, SerializationMode) const override { VERIFY_NOT_REACHED(); } virtual Vector tokenize() const override { VERIFY_NOT_REACHED(); } bool properties_equal(EmptyOptionalStyleValue const&) const { return true; } virtual bool is_computationally_independent() const override { return true; } private: EmptyOptionalStyleValue() : StyleValueWithDefaultOperators(Type::EmptyOptional) { } }; }