/* * Copyright (c) 2024, Matthew Olsson . * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::Animations { // https://www.w3.org/TR/web-animations-1/#dictdef-keyframeanimationoptions struct KeyframeAnimationOptions : public KeyframeEffectOptions { FlyString id { ""_fly_string }; JS::GCPtr timeline; }; // https://www.w3.org/TR/web-animations-1/#dictdef-getanimationsoptions struct GetAnimationsOptions { bool subtree { false }; }; // https://www.w3.org/TR/web-animations-1/#animatable class Animatable { public: virtual ~Animatable() = default; WebIDL::ExceptionOr> animate(Optional> keyframes, Variant options = {}); Vector> get_animations(GetAnimationsOptions options = {}); void associate_with_effect(JS::NonnullGCPtr effect); void disassociate_with_effect(JS::NonnullGCPtr effect); private: Vector> m_associated_effects; bool m_is_sorted_by_composite_order { true }; }; }