UNPKG

motion

Version:

The Motion library for the web

106 lines (105 loc) 3.82 kB
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; }