/** * @typedef {{ width: number, height: number, originalWidth?: number, originalHeight?: number }} WhiteboardPageSize * @typedef {{ x: number, y: number }} Point * @typedef {{ points: number[][], color?: string, width?: number, type?: 'draw'|'erase' }} WhiteboardStroke * @typedef {{ id?: string|number, x: number, y: number, content: string, fontSize?: number, width?: number }} WhiteboardTextItem * @typedef {{ id?: string|number, stickerId?: string, x: number, y: number, src: string, width?: number, height?: number, type?: string }} WhiteboardImageItem * @typedef {{ * pageIndex: number, * enabled: boolean, * Renderer: any, * onChange?: () => void, * onToolChange?: (tool: string) => void, * }} WhiteboardPageInit */ /** * Per-page whiteboard renderer/controller. */ export class WhiteboardPage { /** * Create a page controller. * @param {WhiteboardPageInit} props */ constructor(props: WhiteboardPageInit); /** @type {number|null} */ pageIndex: number | null; /** @type {WhiteboardStroke[]} */ strokes: WhiteboardStroke[]; /** @type {WhiteboardTextItem[]} */ text: WhiteboardTextItem[]; /** @type {WhiteboardImageItem[]} */ images: WhiteboardImageItem[]; /** @type {WhiteboardPageSize|null} */ size: WhiteboardPageSize | null; /** @type {{ width: number|null, height: number|null }|null} */ originalSize: { width: number | null; height: number | null; } | null; /** * Set tool for this page. * @param {string} tool */ setTool(tool: string): void; /** * Get current tool for this page. * @returns {string} */ getTool(): string; /** * Enable/disable interactivity for this page. * @param {boolean} enabled */ setEnabled(enabled: boolean): void; /** * @returns {boolean} */ isEnabled(): boolean; /** * Store page size (does not resize canvas). * @param {WhiteboardPageSize} size */ setSize(size: WhiteboardPageSize): void; /** * Resize the Konva stage. * @param {number} width * @param {number} height */ resize(width: number, height: number): void; /** * Mount Konva stage into a container. * @param {HTMLElement} container */ mount(container: HTMLElement): void; /** * Re-render all content for this page. */ render(): void; /** * Render stroke paths. */ renderStrokes(): void; /** * Render text nodes. */ renderText(): void; /** * Render image/sticker nodes. * NOTE: Images are reconciled by id to avoid re-creating nodes (prevents flicker). * If src changes for an existing id, this path does not reload the image. */ renderImages(): void; /** * Destroy Konva stage and clean up listeners. */ destroy(): void; /** * Serialize page data. * @returns {{ strokes: any[], text: any[], stickers: any[] }} */ toJSON(): { strokes: any[]; text: any[]; stickers: any[]; }; /** * Apply data to this page and re-render. * @param {{ strokes?: any[], text?: any[], images?: any[] }} data */ applyData(data?: { strokes?: any[]; text?: any[]; images?: any[]; }): void; /** * Add a stroke to the model. * @param {WhiteboardStroke} stroke */ addStroke(stroke: WhiteboardStroke): void; /** * Add a text item to the model. * @param {WhiteboardTextItem} item */ addText(item: WhiteboardTextItem): void; /** * Add an image/sticker to the model. * @param {WhiteboardImageItem} item */ addImage(item: WhiteboardImageItem): void; #private; } export type WhiteboardPageSize = { width: number; height: number; originalWidth?: number; originalHeight?: number; }; export type Point = { x: number; y: number; }; export type WhiteboardStroke = { points: number[][]; color?: string; width?: number; type?: "draw" | "erase"; }; export type WhiteboardTextItem = { id?: string | number; x: number; y: number; content: string; fontSize?: number; width?: number; }; export type WhiteboardImageItem = { id?: string | number; stickerId?: string; x: number; y: number; src: string; width?: number; height?: number; type?: string; }; export type WhiteboardPageInit = { pageIndex: number; enabled: boolean; Renderer: any; onChange?: () => void; onToolChange?: (tool: string) => void; }; //# sourceMappingURL=WhiteboardPage.d.ts.map