Links wip (broken)

This commit is contained in:
barsdeveloper
2022-03-14 18:58:23 +01:00
parent 8bca6dcff4
commit c4b0dac1b7
10 changed files with 1146 additions and 1083 deletions

View File

@@ -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
}
}

View File

@@ -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) {