@smoovy/tween
Version:
simple and easy-to-use tween lib
52 lines (51 loc) • 2.34 kB
TypeScript
import { TweenController, TweenControllerConfig } from './controller';
import { DOMTweenProps } from './props';
import { SimpleTweenConfig } from './tween';
export interface TimelineConfig extends Omit<TweenControllerConfig, 'duration' | 'initSeek'> {
items?: Partial<TimelineItem>[];
}
export interface TimelineItemConfig {
offset?: number;
}
export interface TimlineSideEffect {
callback: () => void;
item?: TimelineItem;
config: TimelineItemConfig;
called: boolean;
}
export type TimelineDynamicController = () => TweenController;
export interface TimelineItem {
controller?: TweenController;
dynamic?: TimelineDynamicController;
config: TimelineItemConfig;
}
export declare class Timeline extends TweenController<TimelineConfig> {
protected config: TimelineConfig;
readonly items: TimelineItem[];
private sideEffects;
private timelineReversed;
constructor(config: TimelineConfig);
call(callback: () => void, config?: TimelineItemConfig): this;
clear(): this;
add(item: TweenController | TweenController[] | TimelineDynamicController, config?: TimelineItemConfig): this;
to<V extends DOMTweenProps>(from: HTMLElement, to: Partial<V>, config?: SimpleTweenConfig<V> & TimelineItemConfig): Timeline;
to<V extends object>(from: V, to: Partial<V>, config?: SimpleTweenConfig<V> & TimelineItemConfig): Timeline;
fromTo<V extends DOMTweenProps>(target: HTMLElement, from: Partial<V>, to: Partial<V>, config?: SimpleTweenConfig<V> & TimelineItemConfig): Timeline;
fromTo<V extends object>(target: V, from: Partial<V>, to: Partial<V>, config?: SimpleTweenConfig<V> & TimelineItemConfig): Timeline;
remove(controller: TweenController): this;
/** @todo make more memory efficient: less arrays more floats */
private updateDuration;
revealAllItems(): this;
revealItem(item: TimelineItem): TimelineItem & {
controller: TweenController;
};
isDynamic(): boolean;
protected getStartMs(items: TimelineItem[], index: number, noDelay?: boolean): number;
private callEffects;
seek(ms: number, noDelay?: boolean, noEvents?: boolean, force?: boolean): this;
protected beforeStart(): void;
reverse(): this;
stop(silent?: boolean): this;
resetEffects(): void;
reset(seek?: number, noEvents?: boolean): this;
}