import IDraggablePositionedTemplate from "./IDraggablePositionedTemplate" import MouseMoveNodes from "../input/mouse/MouseMoveNodes" /** * @typedef {import("../element/NodeElement").default} NodeElement * @typedef {import("lit").PropertyValues} PropertyValues * @typedef {import("../input/mouse/MouseMoveDraggable").default} MouseMoveDraggable */ /** * @template {NodeElement} T * @extends {IDraggablePositionedTemplate} */ export default class ISelectableDraggableTemplate extends IDraggablePositionedTemplate { getDraggableElement() { return /** @type {Element} */(this.element) } createDraggableObject() { return /** @type {MouseMoveDraggable} */(new MouseMoveNodes(this.element, this.blueprint, { draggableElement: this.getDraggableElement(), })) } /** @param {PropertyValues} changedProperties */ firstUpdated(changedProperties) { super.firstUpdated(changedProperties) if (this.element.selected && !this.element.listeningDrag) { this.element.setSelected(true) } } }