Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.tsdraw.com/llms.txt

Use this file to discover all available pages before exploring further.

Viewport

interface Viewport {
  x: number
  y: number
  zoom: number
}
Represents the camera position and zoom level.

ZoomRange

interface ZoomRange {
  min: number
  max: number
}

const DEFAULT_ZOOM_RANGE: ZoomRange = { min: 0.1, max: 8 }

Functions

createViewport

function createViewport(): Viewport
Returns a viewport at the origin with zoom 1.

screenToPage

function screenToPage(viewport: Viewport, screenX: number, screenY: number): { x: number; y: number }
Converts screen (pixel) coordinates to page (world) coordinates.

pageToScreen

function pageToScreen(viewport: Viewport, pageX: number, pageY: number): { x: number; y: number }
Converts page coordinates to screen coordinates.

setViewport

function setViewport(viewport: Viewport, next: Partial<Viewport>): Viewport
Returns a new viewport with the specified properties merged in.

panViewport

function panViewport(viewport: Viewport, deltaX: number, deltaY: number): Viewport
Returns a new viewport translated by the given deltas.

zoomViewport

function zoomViewport(viewport: Viewport, factor: number, centerX: number, centerY: number): Viewport
Returns a new viewport zoomed by the given factor, centered on the given screen point.

clampZoom

function clampZoom(viewport: Viewport, range: ZoomRange): Viewport
Clamps the viewport zoom to the given range.

Camera pan session

function beginCameraPan(viewport: Viewport): CameraPanSession
function moveCameraPan(session: CameraPanSession, deltaX: number, deltaY: number): Viewport

Camera slide

function startCameraSlide(viewport: Viewport, velocityX: number, velocityY: number, options?: CameraSlideOptions): CameraSlideAnimation
Creates a momentum-based slide animation that decelerates over time.