mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-13 16:44:49 +08:00
47 lines
1.3 KiB
JavaScript
Executable File
47 lines
1.3 KiB
JavaScript
Executable File
// @ts-check
|
|
|
|
import ITemplate from "./ITemplate"
|
|
import MouseMoveNodes from "../input/mouse/MouseMoveNodes"
|
|
import sanitizeText from "./sanitizeText"
|
|
|
|
/**
|
|
* @typedef {import("../element/ISelectableDraggableElement").default} ISelectableDraggableElement
|
|
*/
|
|
|
|
/**
|
|
* @extends {ITemplate<ISelectableDraggableElement>}
|
|
*/
|
|
export default class SelectableDraggableTemplate extends ITemplate {
|
|
|
|
/**
|
|
* @param {ISelectableDraggableElement} element
|
|
*/
|
|
createInputObjects(element) {
|
|
return [
|
|
...super.createInputObjects(element),
|
|
new MouseMoveNodes(element, element.blueprint, {
|
|
looseTarget: true
|
|
}),
|
|
]
|
|
}
|
|
|
|
/**
|
|
* @param {ISelectableDraggableElement} element
|
|
*/
|
|
applyLocation(element) {
|
|
element.style.setProperty("--ueb-position-x", sanitizeText(element.location[0]))
|
|
element.style.setProperty("--ueb-position-y", sanitizeText(element.location[1]))
|
|
}
|
|
|
|
/**
|
|
* @param {ISelectableDraggableElement} element
|
|
*/
|
|
applySelected(element) {
|
|
if (element.selected) {
|
|
element.classList.add("ueb-selected")
|
|
} else {
|
|
element.classList.remove("ueb-selected")
|
|
}
|
|
}
|
|
}
|