blob: d5b7b1634bfde7169b286751eb6fa32d062d9e68 [file] [log] [blame]
// Copyright (c) 2023, 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.
import 'dart:js_interop';
import 'css_typed_om.dart';
import 'dom.dart';
import 'hr_time.dart';
import 'html.dart';
import 'web_animations_2.dart';
typedef AnimationPlayState = String;
typedef AnimationReplaceState = String;
typedef FillMode = String;
typedef PlaybackDirection = String;
typedef CompositeOperation = String;
typedef CompositeOperationOrAuto = String;
@JS('AnimationTimeline')
@staticInterop
class AnimationTimeline implements JSObject {}
extension AnimationTimelineExtension on AnimationTimeline {
external Animation play([AnimationEffect? effect]);
external CSSNumberish? get currentTime;
external CSSNumberish? get duration;
}
@JS()
@staticInterop
@anonymous
class DocumentTimelineOptions implements JSObject {
external factory DocumentTimelineOptions({DOMHighResTimeStamp originTime});
}
extension DocumentTimelineOptionsExtension on DocumentTimelineOptions {
external set originTime(DOMHighResTimeStamp value);
external DOMHighResTimeStamp get originTime;
}
@JS('DocumentTimeline')
@staticInterop
class DocumentTimeline implements AnimationTimeline {
external factory DocumentTimeline([DocumentTimelineOptions options]);
}
@JS('Animation')
@staticInterop
class Animation implements EventTarget {
external factory Animation([
AnimationEffect? effect,
AnimationTimeline? timeline,
]);
}
extension AnimationExtension on Animation {
external JSVoid cancel();
external JSVoid finish();
external JSVoid play();
external JSVoid pause();
external JSVoid updatePlaybackRate(double playbackRate);
external JSVoid reverse();
external JSVoid persist();
external JSVoid commitStyles();
external set startTime(CSSNumberish? value);
external CSSNumberish? get startTime;
external set currentTime(CSSNumberish? value);
external CSSNumberish? get currentTime;
external set id(String value);
external String get id;
external set effect(AnimationEffect? value);
external AnimationEffect? get effect;
external set timeline(AnimationTimeline? value);
external AnimationTimeline? get timeline;
external set playbackRate(double value);
external double get playbackRate;
external AnimationPlayState get playState;
external AnimationReplaceState get replaceState;
external bool get pending;
external JSPromise get ready;
external JSPromise get finished;
external set onfinish(EventHandler value);
external EventHandler get onfinish;
external set oncancel(EventHandler value);
external EventHandler get oncancel;
external set onremove(EventHandler value);
external EventHandler get onremove;
}
@JS('AnimationEffect')
@staticInterop
class AnimationEffect implements JSObject {}
extension AnimationEffectExtension on AnimationEffect {
external JSVoid before(AnimationEffect effects);
external JSVoid after(AnimationEffect effects);
external JSVoid replace(AnimationEffect effects);
external JSVoid remove();
external EffectTiming getTiming();
external ComputedEffectTiming getComputedTiming();
external JSVoid updateTiming([OptionalEffectTiming timing]);
external GroupEffect? get parent;
external AnimationEffect? get previousSibling;
external AnimationEffect? get nextSibling;
}
@JS()
@staticInterop
@anonymous
class EffectTiming implements JSObject {
external factory EffectTiming({
double delay,
double endDelay,
double playbackRate,
JSAny? duration,
FillMode fill,
double iterationStart,
double iterations,
PlaybackDirection direction,
String easing,
});
}
extension EffectTimingExtension on EffectTiming {
external set delay(double value);
external double get delay;
external set endDelay(double value);
external double get endDelay;
external set playbackRate(double value);
external double get playbackRate;
external set duration(JSAny? value);
external JSAny? get duration;
external set fill(FillMode value);
external FillMode get fill;
external set iterationStart(double value);
external double get iterationStart;
external set iterations(double value);
external double get iterations;
external set direction(PlaybackDirection value);
external PlaybackDirection get direction;
external set easing(String value);
external String get easing;
}
@JS()
@staticInterop
@anonymous
class OptionalEffectTiming implements JSObject {
external factory OptionalEffectTiming({
double playbackRate,
double delay,
double endDelay,
FillMode fill,
double iterationStart,
double iterations,
JSAny? duration,
PlaybackDirection direction,
String easing,
});
}
extension OptionalEffectTimingExtension on OptionalEffectTiming {
external set playbackRate(double value);
external double get playbackRate;
external set delay(double value);
external double get delay;
external set endDelay(double value);
external double get endDelay;
external set fill(FillMode value);
external FillMode get fill;
external set iterationStart(double value);
external double get iterationStart;
external set iterations(double value);
external double get iterations;
external set duration(JSAny? value);
external JSAny? get duration;
external set direction(PlaybackDirection value);
external PlaybackDirection get direction;
external set easing(String value);
external String get easing;
}
@JS()
@staticInterop
@anonymous
class ComputedEffectTiming implements EffectTiming {
external factory ComputedEffectTiming({
CSSNumberish startTime,
CSSNumberish endTime,
CSSNumberish activeDuration,
CSSNumberish? localTime,
double? progress,
double? currentIteration,
});
}
extension ComputedEffectTimingExtension on ComputedEffectTiming {
external set startTime(CSSNumberish value);
external CSSNumberish get startTime;
external set endTime(CSSNumberish value);
external CSSNumberish get endTime;
external set activeDuration(CSSNumberish value);
external CSSNumberish get activeDuration;
external set localTime(CSSNumberish? value);
external CSSNumberish? get localTime;
external set progress(double? value);
external double? get progress;
external set currentIteration(double? value);
external double? get currentIteration;
}
@JS('KeyframeEffect')
@staticInterop
class KeyframeEffect implements AnimationEffect {
external factory KeyframeEffect(
JSAny? sourceOrTarget, [
JSObject? keyframes,
JSAny? options,
]);
}
extension KeyframeEffectExtension on KeyframeEffect {
external JSArray getKeyframes();
external JSVoid setKeyframes(JSObject? keyframes);
external set iterationComposite(IterationCompositeOperation value);
external IterationCompositeOperation get iterationComposite;
external set target(Element? value);
external Element? get target;
external set pseudoElement(String? value);
external String? get pseudoElement;
external set composite(CompositeOperation value);
external CompositeOperation get composite;
}
@JS()
@staticInterop
@anonymous
class BaseComputedKeyframe implements JSObject {
external factory BaseComputedKeyframe({
double? offset,
double computedOffset,
String easing,
CompositeOperationOrAuto composite,
});
}
extension BaseComputedKeyframeExtension on BaseComputedKeyframe {
external set offset(double? value);
external double? get offset;
external set computedOffset(double value);
external double get computedOffset;
external set easing(String value);
external String get easing;
external set composite(CompositeOperationOrAuto value);
external CompositeOperationOrAuto get composite;
}
@JS()
@staticInterop
@anonymous
class BasePropertyIndexedKeyframe implements JSObject {
external factory BasePropertyIndexedKeyframe({
JSAny? offset,
JSAny? easing,
JSAny? composite,
});
}
extension BasePropertyIndexedKeyframeExtension on BasePropertyIndexedKeyframe {
external set offset(JSAny? value);
external JSAny? get offset;
external set easing(JSAny? value);
external JSAny? get easing;
external set composite(JSAny? value);
external JSAny? get composite;
}
@JS()
@staticInterop
@anonymous
class BaseKeyframe implements JSObject {
external factory BaseKeyframe({
double? offset,
String easing,
CompositeOperationOrAuto composite,
});
}
extension BaseKeyframeExtension on BaseKeyframe {
external set offset(double? value);
external double? get offset;
external set easing(String value);
external String get easing;
external set composite(CompositeOperationOrAuto value);
external CompositeOperationOrAuto get composite;
}
@JS()
@staticInterop
@anonymous
class KeyframeEffectOptions implements EffectTiming {
external factory KeyframeEffectOptions({
IterationCompositeOperation iterationComposite,
CompositeOperation composite,
String? pseudoElement,
});
}
extension KeyframeEffectOptionsExtension on KeyframeEffectOptions {
external set iterationComposite(IterationCompositeOperation value);
external IterationCompositeOperation get iterationComposite;
external set composite(CompositeOperation value);
external CompositeOperation get composite;
external set pseudoElement(String? value);
external String? get pseudoElement;
}
@JS('Animatable')
@staticInterop
class Animatable implements JSObject {}
extension AnimatableExtension on Animatable {
external Animation animate(
JSObject? keyframes, [
JSAny? options,
]);
external JSArray getAnimations([GetAnimationsOptions options]);
}
@JS()
@staticInterop
@anonymous
class KeyframeAnimationOptions implements KeyframeEffectOptions {
external factory KeyframeAnimationOptions({
JSAny? rangeStart,
JSAny? rangeEnd,
String id,
AnimationTimeline? timeline,
});
}
extension KeyframeAnimationOptionsExtension on KeyframeAnimationOptions {
external set rangeStart(JSAny? value);
external JSAny? get rangeStart;
external set rangeEnd(JSAny? value);
external JSAny? get rangeEnd;
external set id(String value);
external String get id;
external set timeline(AnimationTimeline? value);
external AnimationTimeline? get timeline;
}
@JS()
@staticInterop
@anonymous
class GetAnimationsOptions implements JSObject {
external factory GetAnimationsOptions({bool subtree});
}
extension GetAnimationsOptionsExtension on GetAnimationsOptions {
external set subtree(bool value);
external bool get subtree;
}