@infinite-canvas-tutorial/webcomponents
Version:
WebComponents UI implementation
80 lines (79 loc) • 2.4 kB
TypeScript
import { Canvas, Commands, ComputedCamera, Pen, SerializedNode } from '@infinite-canvas-tutorial/ecs';
import { type LitElement } from 'lit';
import { AppState, Task } from './context';
/**
* Since the canvas is created in the system, we need to store them here for later use.
*/
export declare const pendingCanvases: {
container: LitElement;
canvas: Partial<Canvas>;
camera: Partial<ComputedCamera>;
}[];
/**
* Expose the API to the outside world.
*
* @see https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/excalidraw-api
*/
export declare class API {
#private;
private readonly element;
private readonly commands;
appState: AppState;
nodes: SerializedNode[];
/**
* Injected from the LitElement's context provider.
*/
getAppState: () => AppState;
setAppState: (appState: AppState) => void;
getNodes: () => SerializedNode[];
setNodes: (nodes: SerializedNode[]) => void;
constructor(element: LitElement, commands: Commands);
/**
* Create a new canvas.
*/
createCanvas(canvasProps: Partial<Canvas>): void;
/**
* Create a new camera.
*/
createCamera(cameraProps: Partial<ComputedCamera>): void;
/**
* Create a new landmark.
*/
createLandmark(): void;
/**
* Go to a landmark.
*/
gotoLandmark(): void;
/**
* ZoomLevel system will handle the zoom level.
*/
zoomTo(zoom: number): void;
resizeCanvas(width: number, height: number): void;
setPen(pen: Pen): void;
setTaskbars(selected: Task[]): void;
/**
* @see https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/excalidraw-api#setcursor
*/
setCursor(cursor: string): void;
/**
* Delete Canvas component
*/
destroy(): void;
/**
* Select nodes.
*/
selectNodes(selected: SerializedNode['id'][], preserveSelection?: boolean): void;
/**
* If diff is provided, no need to calculate diffs.
*/
updateNode(node: SerializedNode, diff?: Partial<SerializedNode>): void;
/**
* Update the scene with new nodes.
* It will calculate diffs and only update the changed nodes.
*
* @see https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/excalidraw-api#updatescene
*/
updateNodes(nodes: SerializedNode[]): void;
undo(): void;
redo(): void;
}