UNPKG

@react-motion-router/core

Version:

Declarative routing library for ReactJS ⚛ with animations baked in ⏮

139 lines (138 loc) 4.21 kB
import { Component } from 'react'; import { EasingFunction, PlainObject, Vec2 } from './common/types'; declare enum TransformOriginKeywordEnum { center = 0, top = 1, bottom = 2, left = 3, right = 4 } declare enum TransformOriginLengthUnitEnum { cap = 0, ch = 1, em = 2, ex = 3, ic = 4, lh = 5, rem = 6, rlh = 7, vh = 8, vw = 9, vi = 10, vb = 11, vmin = 12, vmax = 13, px = 14, cm = 15, mm = 16, Q = 17, in = 18, pc = 19, pt = 20, '%' = 21 } declare enum TransformOriginGlobalEnum { inital = 0, inherit = 1, revert = 2, unset = 3 } declare enum TransitionAnimationEnum { "morph" = 0, "fade-through" = 1, "fade" = 2, "cross-fade" = 3 } type TransitionAnimation = keyof typeof TransitionAnimationEnum; type TransformOriginGlobal = keyof typeof TransformOriginGlobalEnum; type TransformOriginLengthUnit = keyof typeof TransformOriginLengthUnitEnum; type TransformOriginLength = `${number}${TransformOriginLengthUnit}` | 0; type TransformOriginKeyword = keyof typeof TransformOriginKeywordEnum; type OneValueTransformOrigin = TransformOriginKeyword | TransformOriginLength; type TwoValueTransformOrigin = `${OneValueTransformOrigin} ${OneValueTransformOrigin}`; type ThreeValueTransformOrigin = `${OneValueTransformOrigin} ${OneValueTransformOrigin} ${TransformOriginLength}`; type TransformOrigin = TransformOriginGlobal | OneValueTransformOrigin | TwoValueTransformOrigin | ThreeValueTransformOrigin; export interface SharedElementNode { id: string; instance: SharedElement; } export type SharedElementNodeMap = Map<string, SharedElementNode>; export declare class SharedElementScene { private _nodes; private _name; private _scrollPos; private _getScreenRect; private _keepAlive; constructor(name: string); addNode(node: SharedElementNode | null): void; removeNode(_id: string): void; get xRatio(): number; get yRatio(): number; get nodes(): SharedElementNodeMap; get name(): string; get scrollPos(): Vec2; get x(): number; get y(): number; get keepAlive(): boolean; set scrollPos(_scrollPos: Vec2); set getScreenRect(_getScreenRect: () => DOMRect); set keepAlive(_keepAlive: boolean); isEmpty(): boolean; } export declare const SharedElementSceneContext: import("react").Context<SharedElementScene | null>; interface SharedElementConfig { type?: TransitionAnimation; transformOrigin?: TransformOrigin; easingFunction?: EasingFunction; duration?: number; delay?: number; x?: { delay?: number; duration?: number; easingFunction?: EasingFunction; }; y?: { delay?: number; duration?: number; easingFunction?: EasingFunction; }; } interface SharedElementProps { id: string | number; children: React.ReactChild; disabled?: boolean; config?: SharedElementConfig; } interface SharedElementState { hidden: boolean; keepAlive: boolean; } export declare class SharedElement extends Component<SharedElementProps, SharedElementState> { private _id; private _ref; private _scene; private _mutationObserver; private _callbackID; private _computedStyle; private _isMounted; private onRef; state: SharedElementState; get scene(): SharedElementScene | null; get node(): HTMLElement | null; get clientRect(): DOMRect; get CSSData(): [string, PlainObject<string>]; get CSSText(): string; get id(): string; get transitionType(): "fade" | "morph" | "fade-through" | "cross-fade" | undefined; onCloneAppended: (e: HTMLElement) => void; onCloneRemove: (e: HTMLElement) => void; keepAlive(_keepAlive: boolean): Promise<void>; hidden(_hidden: boolean): Promise<void>; private setRef; updateScene(): void; componentDidMount(): void; componentDidUpdate(prevProps: SharedElementProps): void; componentWillUnmount(): void; render(): JSX.Element; } export {};