@lightningjs/renderer
Version:
Lightning 3 Renderer
67 lines (66 loc) • 2.25 kB
TypeScript
import type { IEventEmitter } from './IEventEmitter.js';
export type AnimationControllerState = 'scheduled' | 'running' | 'paused' | 'stopped';
/**
* Animation Controller interface
*
* @remarks
* This interface is used to control animations. It provides methods to start,
* stop, pause, and restore animations. It also provides a way to wait for the
* animation to stop.
*
* This interface extends the `IEventEmitter` interface, which means you can
* listen to these events emitted by the animation controller:
* - `animating` - Emitted when the animation finishes it's delay phase and
* starts animating.
* - `stopped` - Emitted when the animation stops either by calling the `stop()`
* method or when the animation finishes naturally.
*/
export interface IAnimationController extends IEventEmitter {
/**
* Start the animation
*
* @remarks
* If the animation is paused this method will resume the animation.
*/
start(): IAnimationController;
/**
* Stop the animation
*
* @remarks
* Resets the animation to the start state
*/
stop(): IAnimationController;
/**
* Pause the animation
*/
pause(): IAnimationController;
/**
* Restore the animation to the original values
*/
restore(): IAnimationController;
/**
* Promise that resolves when the last active animation is stopped (including
* when the animation finishes naturally).
*
* @remarks
* The Promise returned by this method is reset every time the animation
* enters a new start/stop cycle. This means you must call `start()` before
* calling this method if you want to wait for the animation to stop.
*
* This method always returns a resolved promise if the animation is currently
* in a stopped state.
*
* @returns
*/
waitUntilStopped(): Promise<void>;
/**
* Current state of the animation
*
* @remarks
* - `stopped` - The animation is currently stopped (at the beggining or end
* of the animation)
* - `running` - The animation is currently running
* - `paused` - The animation is currently paused
*/
readonly state: AnimationControllerState;
}