/** * Present a CMap through the bundled drawing engine. * * CmapView owns the canvas and concrete cmap.js instance. It creates and * destroys drawing objects but contains no concept, placement or persistence * rules; CmapEditor remains responsible for interpreting user interaction. */ export class CmapView { constructor(canvas, CmapFactory, onSelection, onActivation) { if (!(canvas instanceof Object)) throw new TypeError("A CMap canvas is required"); if (typeof CmapFactory !== "function") throw new TypeError("A CMap factory is required"); this.canvas = canvas; this.map = CmapFactory(canvas); this.map.onSelection(onSelection); this.map.onActivation(onActivation); } createNode(attributes) { return this.map.node(attributes); } createConnector(attributes) { return this.map.link(attributes); } setZoom(factor) { this.map.zoom(factor); } surfaceElement() { return this.canvas.querySelector(":scope > .rw-cmap-surface"); } destroy() { if (typeof this.map.destroy === "function") this.map.destroy(); } }