Skip to main content

Editor

The <kritzel-editor> is the high-level, full-featured whiteboard component. It wraps <kritzel-engine> and adds a toolbar, utility panel, context menus, dialogs, and workspace management.

Props

PropertyTypeDescription
scaleMaxnumberMaximum zoom scale allowed
scaleMinnumberMinimum zoom scale allowed
lockDrawingScalebooleanWhen true, objects are drawn at a fixed visual size regardless of zoom
viewportBoundaryLeftnumberLeft boundary in world coordinates
viewportBoundaryRightnumberRight boundary in world coordinates
viewportBoundaryTopnumberTop boundary in world coordinates
viewportBoundaryBottomnumberBottom boundary in world coordinates
wheelEnabledbooleanEnable or disable mouse wheel zoom/pan
debugInfoKritzelDebugInfoToggle debug overlay information
userIKritzelUserThe current authenticated user
activeUsersIKritzelUser[]Other users currently in the session
controlsKritzelToolbarControl[]Toolbar items (selection, brush, line, eraser, text, shape, image, config)
globalContextMenuItemsContextMenuItem[]Context menu when right-clicking the canvas background
objectContextMenuItemsContextMenuItem[]Context menu when right-clicking a selected object
customSvgIconsRecord<string, string>Custom SVG icon definitions by name
isControlsVisiblebooleanShow/hide the toolbar
isUtilityPanelVisiblebooleanShow/hide the utility panel (undo/redo, zoom)
syncConfigKritzelSyncConfigSync provider configuration
assetStorageConfigKritzelAssetStorageConfigAsset storage configuration for images
activeWorkspaceIdstringProgrammatically force an active workspace
activeWorkspaceKritzelWorkspaceAutomatically updated with the current active workspace
editorIdstringUnique identifier for scoping settings and providers
userIKritzelUserThe current authenticated user
activeUsersIKritzelUser[]Other users currently in the session
cursorTargetHTMLElementTarget element to attach cursor styles to
isLoadingbooleanDisplays loading state/spinner
themeThemeNameCurrent active theme
themesKritzelTheme[]Array of available themes
loginConfigKritzelLoginConfigConfiguration for login dialog and providers
isWorkspaceManagerVisiblebooleanShow/hide the workspace manager toggle
isMoreMenuVisiblebooleanShow/hide the 'More' menu

Events

EventPayload TypeDescription
isReadyEditorIsReadyEventEmitted when the editor is fully initialized
activeWorkspaceChangeActiveWorkspaceChangeEventEmitted when the active workspace changes
workspacesChangeKritzelWorkspace[]Emitted when the list of workspaces changes
objectsChangeKritzelBaseObject[]Emitted when objects are added, removed, or modified
objectsAddedObjectsAddedEventEmitted when objects are added
objectsRemovedObjectsRemovedEventEmitted when objects are removed
objectsUpdatedObjectsUpdatedEventEmitted when objects are updated
undoStateChangeKritzelUndoStateEmitted when undo/redo availability changes
themeChangeThemeNameEmitted when the theme changes
viewportChangeKritzelViewportStateEmitted on pan, zoom, or resize
awarenessChangeMap<number, Record<string, any>>Emitted when collaborative awareness states change
isPublicChangeIKritzelIsPublicChangedEventEmitted when the workspace public sharing status toggles
loginLoginEventEmitted when login is triggered via the provider dialog
logoutvoidEmitted when the user attempts to log out via the menu

Methods

All methods are async and return Promises.

Object

addObject

Adds a new object to the canvas. The object is automatically assigned an ID, core reference, and z-index.

addObject<T extends KritzelBaseObject>(object: T): Promise<T | null>

removeObject

Removes an object from the canvas.

removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null>

updateObject

Updates properties of an existing canvas object.

updateObject<T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>): Promise<T | null>

getObjectById

Retrieves a canvas object by its unique ID.

getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null>

getAllObjects

Returns all objects on the canvas across all layers.

getAllObjects<T extends KritzelBaseObject>: Promise<T[]>

findObjects

Returns all objects matching the given predicate. Excludes internal selection-related objects.

findObjects<T extends KritzelBaseObject>(predicate: (obj: KritzelBaseObject) => boolean): Promise<T[]>

getObjectsTotalCount

Returns the total number of objects on the canvas.

getObjectsTotalCount: Promise<number>

getObjectsInViewport

Returns all objects currently visible within the viewport bounds.

getObjectsInViewport: Promise<KritzelBaseObject[]>

getCopiedObjects

Returns objects currently in the internal clipboard from a prior copy call.

getCopiedObjects: Promise<KritzelBaseObject[]>

Selection

getSelectedObjects

Returns the currently selected objects. Returns an empty array if nothing is selected.

getSelectedObjects: Promise<KritzelBaseObject[]>

selectObjects

Programmatically selects the given objects. Switches to the selection tool automatically.

selectObjects(objects: KritzelBaseObject[]): Promise<void>

selectAllObjectsInViewport

Selects all objects currently visible in the viewport. Switches to the selection tool automatically.

selectAllObjectsInViewport: Promise<void>

clearSelection

Deselects all currently selected objects.

clearSelection: Promise<void>

triggerSelectionChange

Manually triggers the objectsSelectionChange event.

triggerSelectionChange: Promise<void>

Viewport & Navigation

getViewport

Returns the current viewport state including position, scale, and dimensions.

getViewport: Promise<KritzelViewportState>

setViewport

Sets the viewport to center on the given world coordinates at the specified scale.

setViewport(x: number, y: number, scale: number): Promise<void>

panTo

Pans the viewport to center on the given world coordinates without changing the scale.

panTo(x: number, y: number): Promise<void>

zoomTo

Zooms the viewport to the given scale. Optionally centers on a world point; if omitted, zooms around the viewport center.

zoomTo(scale: number, worldX?: number, worldY?: number): Promise<void>

centerObjectInViewport

Pans and zooms the viewport to center on the given object.

centerObjectInViewport(object: KritzelBaseObject): Promise<KritzelBaseObject>

backToContent

Pans and zooms the viewport to fit the nearest content, with padding. Useful when the user has panned away from all objects.

backToContent: Promise<boolean>

Returns true if content was found and the viewport was adjusted, false otherwise.

screenToWorld

Converts screen-relative pixel coordinates to world coordinates.

screenToWorld(x: number, y: number): Promise<{ x: number; y: number }>

worldToScreen

Converts world coordinates to screen-relative pixel coordinates.

worldToScreen(x: number, y: number): Promise<{ x: number; y: number }>

Workspace

createWorkspace

Creates a new workspace and emits a workspacesChange event.

createWorkspace(workspace: KritzelWorkspace): Promise<KritzelWorkspace | null>

updateWorkspace

Updates an existing workspace's metadata and emits a workspacesChange event.

updateWorkspace(workspace: KritzelWorkspace): Promise<void>

deleteWorkspace

Deletes a workspace and emits a workspacesChange event.

deleteWorkspace(workspace: KritzelWorkspace): Promise<void>

getWorkspaces

Returns all available workspaces.

getWorkspaces: Promise<KritzelWorkspace[]>

getActiveWorkspace

Returns the currently active workspace.

getActiveWorkspace(): Promise<KritzelWorkspace>

loadSharedWorkspace

Loads a workspace shared externally using a secure access token.

loadSharedWorkspace(token: string): Promise<void>

reinitSync

Reinitializes the active synchronization provider connection.

reinitSync(): Promise<void>

Tool Management

registerTool

Registers a new drawing tool with the engine.

registerTool(
toolName: string,
toolClass: any,
toolConfig?: KritzelBrushToolConfig | KritzelLineToolConfig | KritzelTextToolConfig | KritzelShapeToolConfig
): Promise<KritzelBaseTool>

changeActiveTool

Switches the active drawing tool. Deactivates the current tool and clears any selection.

changeActiveTool(tool: KritzelBaseTool): Promise<void>

disable

Disables all user interaction with the engine (pointer, keyboard, etc.).

disable: Promise<void>

enable

Re-enables user interaction after a call to disable.

enable: Promise<void>

Clipboard & Editing

copy

Copies the currently selected objects to the internal clipboard.

copy: Promise<void>

paste

Pastes previously copied objects at the specified world coordinates.

paste(x: number, y: number): Promise<void>

delete

Deletes the currently selected objects from the canvas.

delete: Promise<void>

Ordering

bringForward

Moves an object one layer forward in the z-order. If omitted, applies to the current selection.

bringForward(object?: KritzelBaseObject): Promise<void>

sendBackward

Moves an object one layer backward in the z-order. If omitted, applies to the current selection.

sendBackward(object?: KritzelBaseObject): Promise<void>

bringToFront

Moves an object to the very front of the z-order. If omitted, applies to the current selection.

bringToFront(object?: KritzelBaseObject): Promise<void>

sendToBack

Moves an object to the very back of the z-order. If omitted, applies to the current selection.

sendToBack(object?: KritzelBaseObject): Promise<void>

Alignment

alignObjects

Aligns the currently selected objects according to the specified alignment.

alignObjects(alignment: KritzelAlignment): Promise<void>

Alignment values: StartHorizontal, CenterHorizontal, EndHorizontal, StartVertical, CenterVertical, EndVertical.


Grouping

group

Groups the currently selected objects into a single group.

group: Promise<void>

ungroup

Ungroups the currently selected group back into individual objects.

ungroup: Promise<void>

Undo & Redo

undo

Undoes the last action.

undo: Promise<void>

redo

Redoes the last undone action.

redo: Promise<void>

Export

getScreenshot

Captures a screenshot of the current viewport as a data URL.

getScreenshot(format?: 'png' | 'svg'): Promise<string>

exportViewportAsPng

Exports the current viewport as a PNG file and triggers a browser download.

exportViewportAsPng(): Promise<void>

exportViewportAsSvg

Exports the current viewport as an SVG file and triggers a browser download.

exportViewportAsSvg(): Promise<void>

exportSelectedObjectsAsPng

Exports currently selected objects as a PNG file download.

exportSelectedObjectsAsPng(): Promise<void>

exportSelectedObjectsAsSvg

Exports currently selected objects as an SVG file download.

exportSelectedObjectsAsSvg(): Promise<void>

downloadAsJson

Downloads the canvas state as a JSON file. Use the optional filename directly.

downloadAsJson(filename?: string): Promise<void>

importFromFile

Triggers a local file selector, parsing the user's selected file to import objects.

importFromFile(): Promise<void>

loadObjectsFromJson

Hydrates the canvas with a serialized JSON string containing objects.

loadObjectsFromJson(json: string): Promise<number>

External Services & Dialogs

openLoginDialog

Opens the authentication/login modal.

openLoginDialog(): Promise<void>

setLoginLoading

Indicates loading spinner state on a targeted provider during authentication.

setLoginLoading(provider: string | null): Promise<void>

Other

hideContextMenu

Hides the context menu and resets any associated selection state.

hideContextMenu: Promise<void>

getDisplayableShortcuts

Returns all registered keyboard shortcuts (without action/condition) for display in a help UI.

getDisplayableShortcuts: Promise<Omit<KritzelShortcut, 'action' | 'condition'>[]>