UNPKG

popmotion-pose

Version:

A declarative animation library for HTML and SVG

110 lines (109 loc) 4.27 kB
import { ValueType } from 'style-value-types'; import { Action, ValueReaction, ColdSubscription, TweenProps, PhysicsProps, SpringProps, DecayProps, KeyframesProps } from 'popmotion'; import { Poser, PoserConfig } from 'pose-core'; import { Pose as PoseCore, PoseMap as PoseMapCore, PoserState as PoserStateCore, ExtendAPI, TransformPose, ReadValueFromSource } from 'pose-core'; import { Styler } from 'stylefire'; import { Merge } from 'ts-essentials'; import { easingLookup } from './inc/lookups'; export declare type Value = { raw: ValueReaction; type?: ValueType; }; export declare type Pose = PoseCore<Action, TransitionDefinition>; export declare type PoseMap = PoseMapCore<Action, TransitionDefinition>; export declare type PoserState = PoserStateCore<Value, Action, ColdSubscription, DomPopmotionPoser>; export declare type Transformer = (v: any) => any; export declare type TransitionProps = { from: string | number; velocity: number; to: string | number; key: string; prevPoseKey: string; dimensions: Dimensions; }; export declare type ResolverProps = TransitionProps & { [key: string]: any; }; export declare type Transition = (props: ResolverProps) => Action | false; export interface DomPopmotionPoser extends Poser<Value, Action, ColdSubscription, DomPopmotionPoser> { addChild: (element: Element, config: PoserConfig<Value>) => DomPopmotionPoser; flip: (op: Function) => Promise<any>; measure: () => BoundingBox; } export declare type DragBounds = { [key in BoundingBoxDimension]?: number | string; }; export declare type DomPopmotionConfig = { onDragStart?: (e: MouseEvent | TouchEvent) => any; onDragEnd?: (e: MouseEvent | TouchEvent) => any; onPressStart?: (e: MouseEvent | TouchEvent) => any; onPressEnd?: (e: MouseEvent | TouchEvent) => any; draggable?: Draggable; hoverable?: boolean; dragBounds?: DragBounds | ((props: ResolverProps) => DragBounds); props?: { [key: string]: any; }; [key: string]: any; }; export declare type Draggable = boolean | 'x' | 'y'; export declare type PopmotionPoserFactoryConfig<P, TD> = { extendAPI: ExtendAPI<Value, Action, ColdSubscription, P>; transformPose: TransformPose<Value, Action, ColdSubscription, P, TD>; addListenerToValue: (key: string, styler: Styler) => (v: any) => void; readValueFromSource?: ReadValueFromSource; posePriority?: string[]; setValueNative: (key: string, to: any, props: { elementStyler: Styler; }) => void; forceRender: (props: { elementStyler: Styler; }) => void; }; export declare type Dimensions = { get: (measurement?: BoundingBoxDimension) => BoundingBox | number; measurementAsPixels: (measurement: BoundingBoxDimension, value: string | number, type?: ValueType) => number; measure: () => BoundingBox; has: () => boolean; }; export declare type BoundingBox = { [key in BoundingBoxDimension]: number; }; export declare enum BoundingBoxDimension { width = "width", height = "height", left = "left", right = "right", top = "top", bottom = "bottom" } declare type NoEase = { ease?: undefined; }; export declare type CubicBezierArgs = [number, number, number, number]; declare type TransitionDefinitionCommonProps = { delay?: number; min?: number; max?: number; round?: boolean; }; export declare type DecayDefinition = { type: 'decay'; } & TransitionDefinitionCommonProps & DecayProps & NoEase; export declare type KeyframesDefinition = { type: 'keyframes'; } & TransitionDefinitionCommonProps & KeyframesProps; export declare type PhysicsDefinition = { type: 'physics'; } & TransitionDefinitionCommonProps & PhysicsProps & NoEase; export declare type SpringDefinition = { type: 'spring'; } & TransitionDefinitionCommonProps & SpringProps & NoEase; export declare type TweenDefinition = Merge<{ type: 'tween'; } & TransitionDefinitionCommonProps & TweenProps, { ease: TweenProps['ease'] | keyof typeof easingLookup | CubicBezierArgs; }>; export declare type TransitionDefinition = TweenDefinition | PhysicsDefinition | SpringDefinition | DecayDefinition | KeyframesDefinition; export declare type AnimationDef = TransitionDefinition; export {};