/* * Copyright (c) 2024, Matthew Olsson . * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::CSS { class TransitionStyleValue final : public StyleValueWithDefaultOperators { public: struct Transition { ValueComparingRefPtr property_name; CSS::Time duration { CSS::Time::make_seconds(0.0) }; CSS::Time delay { CSS::Time::make_seconds(0.0) }; ValueComparingRefPtr easing; bool operator==(Transition const&) const = default; }; static ValueComparingNonnullRefPtr create(Vector transitions) { return adopt_ref(*new (nothrow) TransitionStyleValue(move(transitions))); } virtual ~TransitionStyleValue() override = default; auto const& transitions() const { return m_transitions; } virtual String to_string() const override; bool properties_equal(TransitionStyleValue const& other) const; private: explicit TransitionStyleValue(Vector transitions) : StyleValueWithDefaultOperators(Type::Transition) , m_transitions(move(transitions)) { } Vector m_transitions; }; }