UNPKG

flemo

Version:

A modern React router library with built-in motion animations and smooth transitions

47 lines (46 loc) 2.19 kB
import { NavigateStatus } from '../navigate/store'; import { DecoratorName } from './decorator/typing'; import { PanInfo, TargetAndTransition, Target, AnimationOptions, DragControls } from 'motion/react'; export interface RegisterTransition { } export type TransitionName = RegisterTransition[keyof RegisterTransition] | "none" | "cupertino" | "material" | "layout"; export type TransitionVariant = `${NavigateStatus}-${boolean}`; export type TransitionVariantValue = { value: Omit<Target, "transitionDuration" | "transitionDelay" | "transitionTimingFunction" | "transitionBehavior" | "transitionEnd" | "transitionProperty">; options: Omit<AnimationOptions, "delay"> & { delay?: number; }; }; export type TransitionOptions = { decoratorName?: DecoratorName; swipeDirection: "x" | "y"; onSwipeStart: (event: MouseEvent | TouchEvent | PointerEvent, info: PanInfo, options: { animate: (target: object, objectTarget: Target, options: AnimationOptions) => void; currentScreen: HTMLDivElement; prevScreen: HTMLDivElement; dragControls: DragControls; onStart?: (triggered: boolean) => void; }) => Promise<boolean>; onSwipe: (event: MouseEvent | TouchEvent | PointerEvent, info: PanInfo, options: { animate: (target: object, objectTarget: Target, options: AnimationOptions) => void; currentScreen: HTMLDivElement; prevScreen: HTMLDivElement; dragControls: DragControls; onProgress?: (triggered: boolean, progress: number) => void; }) => number; onSwipeEnd: (event: MouseEvent | TouchEvent | PointerEvent, info: PanInfo, options: { animate: (target: object, objectTarget: Target, options: AnimationOptions) => void; currentScreen: HTMLDivElement; prevScreen: HTMLDivElement; onStart?: (triggered: boolean) => void; }) => Promise<boolean>; } | { decoratorName?: DecoratorName; swipeDirection?: never; }; export interface BaseTransition { name: TransitionName; initial: TargetAndTransition; variants: Record<TransitionVariant, TransitionVariantValue>; } export type Transition = BaseTransition & TransitionOptions;