diff --git a/src/canvas/index.ts b/src/canvas/index.ts index 846934545..6ec3d1c35 100644 --- a/src/canvas/index.ts +++ b/src/canvas/index.ts @@ -276,6 +276,10 @@ export default class CanvasModule extends Module { return this.getCanvasView().fixedOffsetEl; } + getSpotsEl() { + return this.canvasView?.spotsEl; + } + render(): HTMLElement { this.canvasView?.remove(); this.canvasView = new CanvasView(this.canvas); diff --git a/src/canvas/model/CanvasSpot.ts b/src/canvas/model/CanvasSpot.ts index a45670d7e..8a4c02a77 100644 --- a/src/canvas/model/CanvasSpot.ts +++ b/src/canvas/model/CanvasSpot.ts @@ -2,6 +2,7 @@ import CanvasModule from '..'; import { ModuleModel } from '../../abstract'; import { BoxRect, LiteralUnion } from '../../common'; import Component from '../../dom_components/model/Component'; +import ComponentView from '../../dom_components/view/ComponentView'; import Frame from './Frame'; export enum CanvasSpotBuiltInTypes { @@ -22,6 +23,7 @@ export interface CanvasSpotProps { type: T; boxRect?: BoxRect; component?: Component; + componentView?: ComponentView; frame?: Frame; } @@ -34,17 +36,59 @@ export default class CanvasSpot extends ModuleModel { template() { const { pfx } = this; return ` -
+
+
+
`; } @@ -64,6 +66,7 @@ export default class CanvasView extends ModuleView { toolsEl?: HTMLElement; framesArea?: HTMLElement; toolsWrapper?: HTMLElement; + spotsEl?: HTMLElement; ready = false; frames!: FramesView; @@ -571,6 +574,7 @@ export default class CanvasView extends ModuleView { this.offsetEl = el.querySelector(`.${ppfx}offset-v`)!; this.fixedOffsetEl = el.querySelector(`.${ppfx}offset-fixed-v`)!; this.toolsGlobEl = el.querySelector(`.${ppfx}tools-gl`)!; + this.spotsEl = el.querySelector('[data-spots]')!; this.el.className = getUiClass(em, this.className); this.ready = true; this._renderFrames();