@andespindola/brainlink 0.1.0-beta.30 → 0.1.0-beta.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -23,6 +23,7 @@ const state = {
|
|
|
23
23
|
nodeDetails: new Map(),
|
|
24
24
|
transform: { x: 0, y: 0, scale: 1 },
|
|
25
25
|
pointer: { x: 0, y: 0, down: false, dragNode: null, moved: false },
|
|
26
|
+
cursor: { x: 0, y: 0, inCanvas: false },
|
|
26
27
|
graphSignature: '',
|
|
27
28
|
graphStatus: '',
|
|
28
29
|
last: performance.now()
|
|
@@ -687,6 +688,30 @@ const wheelZoomFactor = event => {
|
|
|
687
688
|
return event.deltaY < 0 ? 1 + adjustedStep : 1 / (1 + adjustedStep)
|
|
688
689
|
}
|
|
689
690
|
|
|
691
|
+
const isScreenPointInsideCanvas = (screenX, screenY) => {
|
|
692
|
+
const rect = canvas.getBoundingClientRect()
|
|
693
|
+
|
|
694
|
+
return screenX >= rect.left && screenX <= rect.right && screenY >= rect.top && screenY <= rect.bottom
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
const handleWheelZoom = event => {
|
|
698
|
+
if (!isScreenPointInsideCanvas(event.clientX, event.clientY)) {
|
|
699
|
+
return
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
event.preventDefault()
|
|
703
|
+
const rect = canvas.getBoundingClientRect()
|
|
704
|
+
const cursorX = event.clientX - rect.left
|
|
705
|
+
const cursorY = event.clientY - rect.top
|
|
706
|
+
const factor = wheelZoomFactor(event)
|
|
707
|
+
|
|
708
|
+
if (!Number.isFinite(factor) || factor <= 0 || factor === 1) {
|
|
709
|
+
return
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
zoomAtPoint(cursorX, cursorY, factor)
|
|
713
|
+
}
|
|
714
|
+
|
|
690
715
|
const bindEvents = () => {
|
|
691
716
|
window.addEventListener('resize', resize)
|
|
692
717
|
elements.search.addEventListener('input', event => {
|
|
@@ -730,14 +755,7 @@ const bindEvents = () => {
|
|
|
730
755
|
}
|
|
731
756
|
if (event.target === elements.contentDialog) elements.contentDialog.close()
|
|
732
757
|
})
|
|
733
|
-
|
|
734
|
-
event.preventDefault()
|
|
735
|
-
const rect = canvas.getBoundingClientRect()
|
|
736
|
-
const cursorX = event.clientX - rect.left
|
|
737
|
-
const cursorY = event.clientY - rect.top
|
|
738
|
-
const factor = wheelZoomFactor(event)
|
|
739
|
-
zoomAtPoint(cursorX, cursorY, factor)
|
|
740
|
-
}, { passive: false })
|
|
758
|
+
window.addEventListener('wheel', handleWheelZoom, { passive: false })
|
|
741
759
|
canvas.addEventListener('dblclick', event => {
|
|
742
760
|
const rect = canvas.getBoundingClientRect()
|
|
743
761
|
const cursorX = event.clientX - rect.left
|
|
@@ -757,6 +775,7 @@ const bindEvents = () => {
|
|
|
757
775
|
canvas.addEventListener('pointermove', event => {
|
|
758
776
|
const point = worldPoint(event)
|
|
759
777
|
state.hovered = hitNode(point)
|
|
778
|
+
state.cursor = { x: event.clientX, y: event.clientY, inCanvas: true }
|
|
760
779
|
if (!state.pointer.down) return
|
|
761
780
|
const dx = event.clientX - state.pointer.x
|
|
762
781
|
const dy = event.clientY - state.pointer.y
|
|
@@ -780,6 +799,12 @@ const bindEvents = () => {
|
|
|
780
799
|
canvas.addEventListener('pointercancel', () => {
|
|
781
800
|
state.pointer = { x: 0, y: 0, down: false, dragNode: null, moved: false }
|
|
782
801
|
})
|
|
802
|
+
canvas.addEventListener('pointerenter', event => {
|
|
803
|
+
state.cursor = { x: event.clientX, y: event.clientY, inCanvas: true }
|
|
804
|
+
})
|
|
805
|
+
canvas.addEventListener('pointerleave', event => {
|
|
806
|
+
state.cursor = { x: event.clientX, y: event.clientY, inCanvas: false }
|
|
807
|
+
})
|
|
783
808
|
window.addEventListener('keydown', event => {
|
|
784
809
|
if (event.key === '+' || event.key === '=') {
|
|
785
810
|
event.preventDefault()
|
package/package.json
CHANGED