import { BaseFlipArgs, FlippedIds } from '../types'; import { SpringOption, SpringConfig } from '../../springSettings/types'; import { StaggerConfig, OnFlipperComplete, FlipId } from '../../types'; import { SerializableFlippedProps } from '../../types'; import { Spring } from '../../forked-rebound/types'; export type ScopedSelector = (selector: string) => HTMLElement[]; export interface AnimateFlippedElementsArgs extends BaseFlipArgs { flippedIds: FlippedIds; applyTransformOrigin: boolean; spring: SpringOption; debug: boolean; staggerConfig: StaggerConfig; decisionData: any; scopedSelector: ScopedSelector; onComplete: OnFlipperComplete; containerEl: HTMLElement; } export type OnUpdate = (spring: Spring) => void; export type GetOnUpdateFunc = ({ spring, onAnimationEnd }: { spring: Spring; onAnimationEnd: () => void; }) => OnUpdate; export type Matrix = number[]; export type InvertedChild = [ HTMLElement, Omit ]; export type InvertedChildren = InvertedChild[]; export interface AnimatedVals { matrix: Matrix; opacity?: number; } export type InitializeFlip = () => void; export type ChildIds = string[]; export interface StaggeredChildren { [stagger: string]: FlipDataArray; } export interface FlipData { element: HTMLElement; id: string; stagger: string; springConfig: SpringConfig; getOnUpdateFunc: GetOnUpdateFunc; initializeFlip: InitializeFlip; onAnimationEnd: () => void; childIds: ChildIds; delayUntil?: FlipId; onSpringActivate?: () => void; } export type FlipDataArray = FlipData[]; export interface FlipDataDict { [flipId: string]: FlipData; }