blob: 95b52c3ead25ca4d5ad312e2b3f2228558df6c55 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web).
// Attributions and copyright licensing by Mozilla Contributors is licensed
// under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/.
// Generated from Web IDL definitions.
// ignore_for_file: unintended_html_in_doc_comment
@JS()
library;
import 'dart:js_interop';
import 'cssom.dart';
import 'dom.dart';
/// The **`AnimationEvent`** interface represents events providing information
/// related to
/// [animations](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animations/Using_CSS_animations).
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent).
extension type AnimationEvent._(JSObject _) implements Event, JSObject {
external factory AnimationEvent(
String type, [
AnimationEventInit animationEventInitDict,
]);
/// The **`AnimationEvent.animationName`** read-only property is a
/// string containing the value of the CSS
/// property associated with the transition.
external String get animationName;
/// The **`AnimationEvent.elapsedTime`** read-only property is a
/// `float` giving the amount of time the animation has been running, in
/// seconds,
/// when this event fired, excluding any time the animation was paused. For an
/// [Element.animationstart_event] event,
/// `elapsedTime` is `0.0` unless there was a negative value for
/// , in which case the event will be fired with
/// `elapsedTime` containing `(-1 * delay)`.
external double get elapsedTime;
/// The **`AnimationEvent.pseudoElement`** read-only property is a
/// string, starting with `'::'`, containing the name of the
/// [pseudo-element](https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements)
/// the animation runs on.
/// If the animation doesn't run on a pseudo-element but on the element, an
/// empty string: `''`.
external String get pseudoElement;
}
extension type AnimationEventInit._(JSObject _) implements EventInit, JSObject {
external factory AnimationEventInit({
bool bubbles,
bool cancelable,
bool composed,
String animationName,
num elapsedTime,
String pseudoElement,
});
external String get animationName;
external set animationName(String value);
external double get elapsedTime;
external set elapsedTime(num value);
external String get pseudoElement;
external set pseudoElement(String value);
}
/// The **`CSSKeyframeRule`** interface describes an object representing a set
/// of styles for a given keyframe. It corresponds to the contents of a single
/// keyframe of a
/// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_syntax/At-rule).
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule).
extension type CSSKeyframeRule._(JSObject _) implements CSSRule, JSObject {
/// The **`keyText`** property of the [CSSKeyframeRule] interface represents
/// the keyframe selector as a comma-separated list of percentage values. The
/// from and to keywords map to 0% and 100%, respectively.
external String get keyText;
external set keyText(String value);
/// The read-only **`CSSKeyframeRule.style`** property is the
/// [CSSStyleDeclaration] interface for the declaration block of the
/// [CSSKeyframeRule].
external JSObject get style;
}
/// The **`CSSKeyframesRule`** interface describes an object representing a
/// complete set of keyframes for a CSS animation. It corresponds to the
/// contents of a whole
/// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_syntax/At-rule).
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule).
extension type CSSKeyframesRule._(JSObject _) implements CSSRule, JSObject {
external CSSKeyframeRule operator [](int index);
/// The **`appendRule()`** method of the [CSSKeyframeRule] interface appends a
/// [CSSKeyFrameRule] to the end of the rules.
external void appendRule(String rule);
/// The **`deleteRule()`** method of the [CSSKeyframeRule] interface deletes
/// the [CSSKeyFrameRule] that matches the specified keyframe selector.
external void deleteRule(String select);
/// The **`findRule()`** method of the [CSSKeyframeRule] interface finds the
/// [CSSKeyFrameRule] that matches the specified keyframe selector.
external CSSKeyframeRule? findRule(String select);
/// The **`name`** property of the [CSSKeyframeRule] interface gets and sets
/// the name of the animation as used by the property.
external String get name;
external set name(String value);
/// The read-only **`cssRules`** property of the [CSSKeyframeRule] interface
/// returns a [CSSRuleList] containing the rules in the keyframes
/// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_syntax/At-rule).
///
/// > [!NOTE]
/// > The `CSSKeyframeRule` itself is indexable like an array, and functions
/// > similarly to its `cssRules` property.
external CSSRuleList get cssRules;
/// The read-only **`length`** property of the [CSSKeyframeRule] interface
/// returns the number of [CSSKeyframeRule] objects in its list. You can then
/// access each keyframe rule by its index directly on the `CSSKeyframeRule`
/// object.
external int get length;
}