Files
ueblueprint/js/template/SelectableDraggableTemplate.js
2022-09-24 22:41:46 +02:00

36 lines
1.0 KiB
JavaScript
Executable File

import IDraggableTemplate from "./IDraggableTemplate"
import ITemplate from "./ITemplate"
import MouseMoveNodes from "../input/mouse/MouseMoveNodes"
/** @typedef {import("../element/ISelectableDraggableElement").default} ISelectableDraggableElement */
/**
* @template {ISelectableDraggableElement} T
* @extends {ITemplate<T>}
*/
export default class SelectableDraggableTemplate extends IDraggableTemplate {
/** @param {T} element */
getDraggableElement(element) {
return element
}
createDraggableObject(element) {
return new MouseMoveNodes(element, element.blueprint, {
draggableElement: this.getDraggableElement(element),
looseTarget: true,
})
}
/**
* @param {T} element
* @param {Map} changedProperties
*/
firstUpdated(element, changedProperties) {
super.firstUpdated(element, changedProperties)
if (element.selected && !element.listeningDrag) {
element.setSelected(true)
}
}
}