motion
Version:
The Motion library for the web
106 lines (105 loc) • 3.82 kB
TypeScript
import { OptionResolver } from "../../utils/stagger";
import { NextTime } from "./timeline/types";
export declare type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
export declare type AcceptedElements = Element | Element[] | NodeListOf<Element> | string;
export declare type BezierDefinition = [number, number, number, number];
export interface CSSStyleDeclarationWithTransform extends Omit<CSSStyleDeclaration, "direction"> {
x: number;
y: number;
z: number;
rotateX: number;
rotateY: number;
rotateZ: number;
scaleX: number;
scaleY: number;
scaleZ: number;
skewX: number;
skewY: number;
}
export declare type StyleAnimationOptions = {
[K in keyof CSSStyleDeclarationWithTransform]?: AnimationOptions;
};
export declare type VariableAnimationOptions = {
[key: `--${string}`]: AnimationOptions;
};
export declare type AnimationOptionsWithOverrides = StyleAnimationOptions & VariableAnimationOptions & AnimationOptions;
export declare type ValueKeyframe = string | number;
export declare type UnresolvedValueKeyframe = ValueKeyframe | null;
export declare type ValueKeyframesDefinition = ValueKeyframe | ValueKeyframe[] | UnresolvedValueKeyframe[];
export declare type StyleKeyframes = {
[K in keyof CSSStyleDeclarationWithTransform]?: ValueKeyframe | ValueKeyframe[];
};
export declare type VariableKeyframes = {
[key: `--${string}`]: ValueKeyframe | ValueKeyframe[];
};
export declare type MotionKeyframes = StyleKeyframes & VariableKeyframes;
export declare type StyleKeyframesDefinition = {
[K in keyof CSSStyleDeclarationWithTransform]?: ValueKeyframesDefinition;
};
export declare type VariableKeyframesDefinition = {
[key: `--${string}`]: ValueKeyframesDefinition;
};
export declare type MotionKeyframesDefinition = StyleKeyframesDefinition & VariableKeyframesDefinition;
export declare type Easing = "linear" | "ease" | "ease-in" | "ease-out" | "ease-in-out" | "steps-start" | "steps-end" | `steps(${number}, ${"start" | "end"})` | BezierDefinition;
export declare type SpringOptions = {
stiffness?: number;
damping?: number;
mass?: number;
velocity?: number;
restSpeed?: number;
restDelta?: number;
};
export declare type KeyframeOptions = {
duration?: number;
easing?: Easing | Easing[];
offset?: number[];
};
export declare type PlaybackOptions = {
delay?: number;
endDelay?: number;
repeat?: number;
direction?: "normal" | "reverse" | "alternate" | "alternate-reverse";
};
export declare type AnimationOptions = SpringOptions & KeyframeOptions & PlaybackOptions & {
allowWebkitAcceleration?: boolean;
};
export interface AnimationWithCommitStyles extends Animation {
commitStyles: () => void;
}
export interface BasicAnimationControls {
pause: () => void;
play: () => void;
commitStyles: () => void;
cancel: () => void;
}
export declare type AnimationListOptions = Omit<AnimationOptionsWithOverrides, "delay"> & {
delay?: number | OptionResolver<number>;
at?: NextTime;
};
export interface AnimationControls {
play: VoidFunction;
pause: VoidFunction;
stop: VoidFunction;
finish: VoidFunction;
reverse: VoidFunction;
cancel: VoidFunction;
finished: Promise<any>;
currentTime: number | null;
playbackRate: number;
}
export interface CssPropertyDefinition {
syntax: `<${string}>`;
initialValue: string | number;
toDefaultUnit: (v: number) => string | number;
}
export declare type CssPropertyDefinitionMap = {
[key: string]: CssPropertyDefinition;
};
export interface PregeneratedAnimation {
keyframes: Array<string | number>;
duration: number;
}
export interface KeyframeGenerator {
isKeyframeGenerator: true;
generate: (keyframes: number[]) => false | PregeneratedAnimation;
}