export interface CameraView { panX: number; panY: number; zoom: number; } export interface CameraViewport { width: number; height: number; insetLeft?: number; insetRight?: number; insetTop?: number; insetBottom?: number; } export interface CameraFrameRect { x: number; y: number; width: number; height: number; } export interface CameraScreenRect { left: number; top: number; width: number; height: number; } /** Convert a rendered DOM rectangle back into infinite-canvas coordinates. */ export declare function canvasRectFromScreenRect(rect: CameraScreenRect, viewport: Pick, camera: CameraView): CameraFrameRect | null; /** Fixed initial view of the new canvas. It has nothing to do with frame/iframe/viewport geometry. */ export declare const DEFAULT_CANVAS_CAMERA_VIEW: Readonly; /** * The only automatic view decisions allowed when switching canvases: * If there is a previous user view, it is restored. If not, a fixed default value is used. * Because it does not receive asynchronous geometry or viewport as input, ready cannot move the camera. */ export declare function resolveCanvasCameraView(saved: CameraView | null | undefined): CameraView; /** * Camera placement only used when the user explicitly requests movement in the frame list. * Align and center the frame within the viewport, excluding the area covered by the panel. */ export declare function resolveFrameFocusCameraView(frame: CameraFrameRect, viewport: CameraViewport, options?: { padding?: number; minZoom?: number; maxZoom?: number; }): CameraView; /** * Reveals a sidebar-selected frame with the smallest possible pan adjustment. * The user's zoom is never changed, and an already visible frame does not move * the camera. Explicit fit commands continue to use resolveFrameFocusCameraView. */ export declare function resolveFrameRevealCameraView(frame: CameraFrameRect, viewport: CameraViewport, current: CameraView, options?: { padding?: number; tolerance?: number; }): CameraView;