/* * Copyright (c) 2024, Matthew Olsson . * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::CSS { class CSSTransition : public Animations::Animation { WEB_PLATFORM_OBJECT(CSSTransition, Animations::Animation); public: static JS::NonnullGCPtr create(JS::Realm&, PropertyID, size_t transition_generation); StringView transition_property() const { return string_from_property_id(m_transition_property); } JS::GCPtr owning_element() const override { return m_owning_element; } void set_owning_element(JS::GCPtr value) { m_owning_element = value; } JS::GCPtr cached_declaration() const { return m_cached_declaration; } void set_cached_declaration(JS::GCPtr declaration) { m_cached_declaration = declaration; } virtual Animations::AnimationClass animation_class() const override; virtual Optional class_specific_composite_order(JS::NonnullGCPtr other) const override; private: CSSTransition(JS::Realm&, PropertyID, size_t transition_generation); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; virtual bool is_css_transition() const override { return true; } PropertyID m_transition_property; // https://drafts.csswg.org/css-transitions-2/#transition-generation size_t m_transition_generation; // https://drafts.csswg.org/css-transitions-2/#owning-element JS::GCPtr m_owning_element; JS::GCPtr m_cached_declaration; }; }