import * as Geom from '../geom.js'; import * as Events from '../events.js'; import { Plugin, PluginApi, PluginHooks, PluginListeners } from '../plugins.js'; import type { HtmlCanvasAlternative } from './canvasrenderer.js'; export interface CanvasOptions { element: HTMLElement; } export type LazyCanvasOptions = string | HTMLElement | CanvasOptions; export type Event = Events.Event & { /** For drawing events the rendering context of the underlying canvas set up for drawing the element. */ renderingContext?: CanvasRenderingContext2D; }; export interface HtmlCanvasApi extends PluginApi { /** Returns the underlying canvas element. */ get element(): HTMLCanvasElement; /** Update the underlying canvas element. */ set element(element: HTMLCanvasElement); /** Returns the actual canvas context */ get context(): CanvasRenderingContext2D; clientToCanvas(clientPos: Geom.Point): Geom.Point; canvasToClient(renderPos: Geom.Point): Geom.Point; } export declare class HtmlCanvas implements Plugin, HtmlCanvasAlternative { private _update; private _container?; private _offscreenCanvas; private _offscreenContext; private _mainCanvas; private _context; private _resizeObserver; private _resizeHandler; private _prevUpdateHash; private _scaleFactor; private _cssWidth; private _cssHeight; meta: { name: string; }; get api(): HtmlCanvasApi; get hooks(): PluginHooks; get listeners(): PluginListeners; private _extendEvent; static extractOptions(options: unknown): CanvasOptions; constructor(options: CanvasOptions); private _setCanvas; unregister(): void; get element(): HTMLCanvasElement; set element(element: HTMLCanvasElement); get context(): CanvasRenderingContext2D; private _calcSize; frameBegin(): void; frameEnd(): void; private _clientRect; private _canvasScale; private _clientToCanvas; private _canvasToClient; private _toCanvasElement; private _createResizeObserverFor; }