// https://drafts.csswg.org/web-animations-1/#the-effecttiming-dictionaries // https://drafts.csswg.org/web-animations-2/#the-effecttiming-dictionaries dictionary EffectTiming { double delay = 0; double endDelay = 0; FillMode fill = "auto"; double iterationStart = 0.0; unrestricted double iterations = 1.0; // FIXME: Support playbackRate (unrestricted double or CSSNumericValue or DOMString) duration = "auto"; PlaybackDirection direction = "normal"; DOMString easing = "linear"; }; // https://drafts.csswg.org/web-animations-1/#dictdef-optionaleffecttiming // https://drafts.csswg.org/web-animations-2/#ref-for-dictdef-optionaleffecttiming dictionary OptionalEffectTiming { double delay; double endDelay; FillMode fill; double iterationStart; unrestricted double iterations; // FIXME: Support playbackRate (unrestricted double or DOMString) duration; PlaybackDirection direction; DOMString easing; }; // https://drafts.csswg.org/web-animations-1/#the-fillmode-enumeration enum FillMode { "none", "forwards", "backwards", "both", "auto" }; // https://drafts.csswg.org/web-animations-1/#the-playbackdirection-enumeration enum PlaybackDirection { "normal", "reverse", "alternate", "alternate-reverse" }; // https://drafts.csswg.org/web-animations-1/#the-computedeffecttiming-dictionary dictionary ComputedEffectTiming : EffectTiming { [GenerateAsRequired] CSSNumberish endTime; [GenerateAsRequired] CSSNumberish activeDuration; CSSNumberish? localTime; double? progress; unrestricted double? currentIteration; }; // https://drafts.csswg.org/web-animations-1/#the-animationeffect-interface [Exposed=Window] interface AnimationEffect { EffectTiming getTiming(); ComputedEffectTiming getComputedTiming(); undefined updateTiming(optional OptionalEffectTiming timing = {}); };