Files
ueblueprint/js/input/mouse/MouseMoveNodes.js
2023-04-15 15:29:21 +02:00

38 lines
1.2 KiB
JavaScript
Executable File

import MouseMoveDraggable from "./MouseMoveDraggable.js"
/**
* @typedef {import("../../element/NodeElement.js").default} NodeElement
* @typedef {import("../../template/node/CommentNodeTemplate.js").default} CommentNodeTemplate
*/
/** @extends {MouseMoveDraggable<NodeElement>} */
export default class MouseMoveNodes extends MouseMoveDraggable {
startDrag() {
if (!this.target.selected) {
this.blueprint.unselectAll()
this.target.setSelected(true)
}
}
dragAction(location, offset) {
this.target.acknowledgeDrag(offset)
}
unclicked() {
if (!this.started) {
this.blueprint.unselectAll()
this.target.setSelected(true)
} else {
this.blueprint.getNodes(true).forEach(node =>
node.boundComments
.filter(comment => !node.isInsideComment(comment))
.forEach(comment => node.unbindFromComment(comment))
)
this.blueprint.getCommentNodes().forEach(comment =>
/** @type {CommentNodeTemplate} */(comment.template).manageNodesBind()
)
}
}
}