mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-28 03:24:43 +08:00
Links wip (broken)
This commit is contained in:
@@ -18,9 +18,10 @@ export default class IMouseClickDrag extends IPointing {
|
||||
/** @type {(e: MouseEvent) => void} */
|
||||
#mouseUpHandler
|
||||
|
||||
/** @type {Boolean} */
|
||||
#trackingMouse = false
|
||||
|
||||
started = false
|
||||
|
||||
constructor(target, blueprint, options) {
|
||||
super(target, blueprint, options)
|
||||
this.clickButton = options?.clickButton ?? 0
|
||||
@@ -28,7 +29,6 @@ export default class IMouseClickDrag extends IPointing {
|
||||
this.moveEverywhere = options?.moveEverywhere ?? false
|
||||
this.looseTarget = options?.looseTarget ?? false
|
||||
this.consumeClickEvent = options?.consumeClickEvent ?? true
|
||||
this.started = false
|
||||
this.clickedPosition = [0, 0]
|
||||
|
||||
const movementListenedElement = this.moveEverywhere ? document.documentElement : this.movementSpace
|
||||
@@ -44,10 +44,8 @@ export default class IMouseClickDrag extends IPointing {
|
||||
if (this.consumeClickEvent) {
|
||||
e.stopImmediatePropagation() // Captured, don't call anyone else
|
||||
}
|
||||
self.started = false
|
||||
// Attach the listeners
|
||||
movementListenedElement.addEventListener("mousemove", self.#mouseStartedMovingHandler)
|
||||
document.addEventListener("mouseup", self.#mouseUpHandler)
|
||||
self.clickedPosition = self.locationFromEvent(e)
|
||||
self.clicked(self.clickedPosition)
|
||||
}
|
||||
@@ -62,9 +60,13 @@ export default class IMouseClickDrag extends IPointing {
|
||||
|
||||
this.#mouseStartedMovingHandler = e => {
|
||||
e.preventDefault()
|
||||
if (this.consumeClickEvent) {
|
||||
e.stopImmediatePropagation() // Captured, don't call anyone else
|
||||
}
|
||||
// Delegate from now on to self.#mouseMoveHandler
|
||||
movementListenedElement.removeEventListener("mousemove", self.#mouseStartedMovingHandler)
|
||||
movementListenedElement.addEventListener("mousemove", self.#mouseMoveHandler)
|
||||
document.addEventListener("mouseup", self.#mouseUpHandler)
|
||||
// Handler calls e.preventDefault() when it receives the event, this means dispatchEvent returns false
|
||||
const dragEvent = self.getEvent(Configuration.trackingMouseEventName.begin)
|
||||
self.#trackingMouse = this.target.dispatchEvent(dragEvent) == false
|
||||
@@ -75,6 +77,9 @@ export default class IMouseClickDrag extends IPointing {
|
||||
|
||||
this.#mouseMoveHandler = e => {
|
||||
e.preventDefault()
|
||||
if (this.consumeClickEvent) {
|
||||
e.stopImmediatePropagation() // Captured, don't call anyone else
|
||||
}
|
||||
const location = self.locationFromEvent(e)
|
||||
const movement = [e.movementX, e.movementY]
|
||||
self.dragTo(location, movement)
|
||||
@@ -86,6 +91,9 @@ export default class IMouseClickDrag extends IPointing {
|
||||
this.#mouseUpHandler = e => {
|
||||
if (!self.exitAnyButton || e.button == self.clickButton) {
|
||||
e.preventDefault()
|
||||
if (this.consumeClickEvent) {
|
||||
e.stopImmediatePropagation() // Captured, don't call anyone else
|
||||
}
|
||||
// Remove the handlers of "mousemove" and "mouseup"
|
||||
movementListenedElement.removeEventListener("mousemove", self.#mouseStartedMovingHandler)
|
||||
movementListenedElement.removeEventListener("mousemove", self.#mouseMoveHandler)
|
||||
@@ -96,6 +104,7 @@ export default class IMouseClickDrag extends IPointing {
|
||||
this.target.dispatchEvent(dragEvent)
|
||||
self.#trackingMouse = false
|
||||
}
|
||||
self.started = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ export default class MouseCreateLink extends IMouseClickDrag {
|
||||
let self = this
|
||||
this.#mouseenterHandler = e => {
|
||||
if (!self.enteredPin) {
|
||||
e.preventDefault()
|
||||
self.linkValid = false
|
||||
self.enteredPin = e.target
|
||||
const a = self.enteredPin, b = self.target
|
||||
@@ -53,6 +54,7 @@ export default class MouseCreateLink extends IMouseClickDrag {
|
||||
}
|
||||
this.#mouseleaveHandler = e => {
|
||||
if (self.enteredPin == e.target) {
|
||||
e.preventDefault()
|
||||
self.enteredPin = null
|
||||
self.linkValid = false
|
||||
this.setLinkMessage(LinkMessageElement.placeNode())
|
||||
@@ -94,6 +96,7 @@ export default class MouseCreateLink extends IMouseClickDrag {
|
||||
}
|
||||
this.enteredPin = null
|
||||
this.link = null
|
||||
this.#listenedPins = null
|
||||
}
|
||||
|
||||
setLinkMessage(linkMessage) {
|
||||
|
||||
Reference in New Issue
Block a user