import { IelementTransform, ICSSElementTransform } from './Helpers'; import { Action } from 'popmotion'; import { Predicate } from 'popmotion/lib/chainable/types'; export declare class Loc { Left: number; Top: number; constructor(Left?: number, Top?: number); add(point: Loc): Loc; subtract(point: Loc): Loc; scale(scale: number): Loc; combineWithTransforms(inputElement: HTMLElement): Loc; } declare global { interface HTMLElement { offsetLoc: () => Loc; scrollLoc: () => Loc; marginLoc: () => Loc; getOuterWidth: () => number; getOuterHeight: () => number; } interface CSSStyleDeclaration { borderLoc: () => Loc; } } export interface IPopMotionZoomSettings { popMotionAction?: (from: ICSSElementTransform, to: ICSSElementTransform) => Action; popMotionWhile?: Predicate; popMotionPipe?: Function[]; popMotionFilter?: Predicate; } export interface IBaseSettings { duration?: number; easing?: string | Array; nativeAnimation?: boolean; root?: HTMLElement; animationStarted?: Array<() => void>; animationCompleted?: Array<() => void>; popMotionSettings?: IPopMotionZoomSettings; } export interface ISettings extends IBaseSettings { targetSize?: number; scaleMode?: 'both' | 'height' | 'width' | 'none' | 'scale'; navOffset?: Loc; completion?: number; } export interface IResetSettings extends IBaseSettings { } export declare class Zoomooz { transitionAnimator: TransitionAnimator; popMotiontransitionAnimator: PopMotionTransitionAnimator; constructor(); private verifyInputElements; getRootOffsets(root: HTMLElement): Loc; computeActualPosition(input: HTMLElement, rootElement?: HTMLElement): Loc; private getElementOffset; private parsePixelLoc; private parsePixel; computeZoomedPosition(scale: number, elementOffset: Loc, elemWidth: number, elemHeight: number, navOffset?: Loc, root?: HTMLElement): Loc; ZoomTo(zoomToElement: HTMLElement, settings: ISettings): void; Reset(settings: IResetSettings): void; getScale(height: number, width: number, elem: HTMLElement, settings: ISettings): number; getScaledOffset(scale: number, width: number, height: number): Loc; stop(): void; } export declare class PopMotionTransitionAnimator implements ITransitionAnimator { private coldSubscription?; AnimateTransition(targetElement: HTMLElement, startTransform: IelementTransform, endTransform: IelementTransform, settings: ISettings): void; Stop(): void; } export interface ITransitionAnimator { AnimateTransition(targetElement: HTMLElement, startTransform: IelementTransform, endTransform: IelementTransform, settings: ISettings): any; Stop(): any; } export declare class TransitionAnimator implements ITransitionAnimator { private animation_interval_timer?; private easingFunction?; private animation_start_time?; private stop?; private started; AnimateTransition(targetElement: HTMLElement, startTransform: IelementTransform, endTransform: IelementTransform, settings: ISettings): void; private animationStep; Stop(): void; }