leaf-flip
Version:
A modern TypeScript library for creating realistic page turn effects
104 lines (98 loc) • 3.11 kB
text/typescript
type Corner = 'tl' | 'tr' | 'bl' | 'br';
type CornerDirection = 'backward' | 'forward' | 'all';
type CornerArray = Corner[];
type DisplayMode = 'single' | 'double';
interface LeafOptions {
page?: number;
pages?: number;
width?: number;
height?: number;
gradients?: boolean;
duration?: number;
acceleration?: boolean;
display?: DisplayMode;
when?: Record<string, (event: Event) => void>;
corners?: {
[key in CornerDirection]?: CornerArray;
};
}
interface FlipOptions {
folding?: HTMLElement | null;
corners?: 'backward' | 'forward' | 'all';
cornerSize?: number;
gradients?: boolean;
duration?: number;
acceleration?: boolean;
}
interface Point2D {
x: number;
y: number;
}
declare class FlipPage {
private element;
private options;
private data;
private isTurning;
private isDisabled;
constructor(element: HTMLElement, options?: Partial<FlipOptions>);
private initialize;
private setupWrapper;
private setupEventListeners;
private handleStart;
private handleMove;
private handleEnd;
private getPoint;
private detectCorner;
private updateFlip;
private applyTransform;
private completeFlip;
resize(): void;
flip(corner: string): void;
private getDefaultCornerPoint;
disable(disabled: boolean): void;
destroy(): void;
}
declare class LeafPage {
private element;
private options;
private data;
constructor(element: HTMLElement, options?: Partial<LeafOptions>);
private initialize;
private setupEventListeners;
private handleStart;
private handleMove;
private handleEnd;
private getEventPoint;
private detectCorner;
addPage(element: HTMLElement, page?: number): this;
private getPageWidth;
setDisplay(display: 'single' | 'double'): void;
private updatePagesPosition;
setPage(pageNumber: number): void;
next(): void;
previous(): void;
private view;
private dispatchEvent;
destroy(): void;
private startFlip;
private calculateFoldPosition;
private updateFlip;
private applyFoldTransform;
private completeFlip;
}
declare function createTurnPage(element: HTMLElement, options?: Partial<LeafOptions>): LeafPage;
declare function createFlipPage(element: HTMLElement, options?: Partial<FlipOptions>): FlipPage;
declare class Utils {
private static vendor;
private static has3d?;
static getVendorPrefix(): string;
static has3DSupport(): boolean;
static translate(x: number, y: number, use3d: boolean): string;
static rotate(degrees: number): string;
static createPoint2D(x: number, y: number): Point2D;
static transform(...transforms: string[]): string;
private static memoizedBezier;
static bezier(p1: Point2D, p2: Point2D, p3: Point2D, p4: Point2D, t: number): Point2D;
static clearMemoization(): void;
}
export { type Corner, type CornerArray, type CornerDirection, type DisplayMode, type FlipOptions, FlipPage, type LeafOptions, LeafPage, type Point2D, Utils, createFlipPage, createTurnPage };