/** * @license * Copyright 2024 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { ReactiveControllerHost } from 'lit'; import { BaseCanvasController } from './base.controller.js'; import { CanvasHost, CanvasViewport } from '../interfaces/index.js'; /** * Extended host interface for viewport controller */ export interface ViewportHost extends CanvasHost { viewport: CanvasViewport; } /** * Controller for managing canvas viewport (pan, zoom, transform) */ export declare class ViewportController extends BaseCanvasController { private readonly boundHandleWheel; private readonly debouncedDispatchViewportChanged; private animationFrameId; constructor(host: ViewportHost & ReactiveControllerHost); hostConnected(): void; hostDisconnected(): void; /** * Handle wheel events for pan and zoom */ private handleWheel; /** * Handle zoom via wheel */ private handleZoom; /** * Handle pan via wheel */ private handlePan; /** * Update the CSS transform on the viewport element */ updateTransform(): void; /** * Update config panel position to follow the configured node */ updateConfigPanelPosition(): void; /** * Update insert panel position to track LEFT of the target node */ updateInsertPanelPosition(): void; /** * Handle panning via mouse drag */ handlePanDrag(e: MouseEvent): void; /** * Start panning */ startPan(e: MouseEvent): void; /** * Stop panning and dispatch viewport changed event */ stopPan(): void; /** * Zoom in */ zoomIn(): void; /** * Zoom out */ zoomOut(): void; /** * Pan the viewport to center on a specific canvas coordinate. * Animates smoothly using an ease-out curve. Preserves the current zoom level. */ panToPosition(canvasX: number, canvasY: number, animate?: boolean): void; /** * Reset view to default */ resetView(): void; /** * Set zoom level centered on a specific screen point (used by pinch-to-zoom) */ setZoomAtPoint(newZoom: number, clientX: number, clientY: number): void; /** * Set zoom level centered on viewport */ setZoom(zoom: number): void; /** * Get current zoom percentage */ getZoomPercentage(): number; } //# sourceMappingURL=viewport.controller.d.ts.map