Skip to content

Commit 2aca7c8

Browse files
committed
Rename and extractions for clarity
1 parent 1b97b4e commit 2aca7c8

File tree

2 files changed

+38
-33
lines changed

2 files changed

+38
-33
lines changed

src/renderer/core/canvas/links/linkDropOrchestrator.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const resolveSlotTargetCandidate = (
5050
return candidate
5151
}
5252

53-
export const resolveNodeSurfaceCandidate = (
53+
export const resolveNodeSurfaceSlotCandidate = (
5454
target: EventTarget | null,
5555
{ adapter, graph, session }: DropResolutionContext
5656
): SlotDropCandidate | null => {
@@ -65,10 +65,10 @@ export const resolveNodeSurfaceCandidate = (
6565

6666
const nodeId: NodeId = nodeIdAttr
6767

68-
const cachedPreferred = session.preferredSlotForNode.get(nodeId)
69-
if (cachedPreferred !== undefined) {
70-
return cachedPreferred
71-
? { layout: cachedPreferred.layout, compatible: true }
68+
const cachedPreferredSlotForNode = session.preferredSlotForNode.get(nodeId)
69+
if (cachedPreferredSlotForNode !== undefined) {
70+
return cachedPreferredSlotForNode
71+
? { layout: cachedPreferredSlotForNode.layout, compatible: true }
7272
: null
7373
}
7474

src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.ts

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
import { createLinkConnectorAdapter } from '@/renderer/core/canvas/links/linkConnectorAdapter'
2121
import type { LinkConnectorAdapter } from '@/renderer/core/canvas/links/linkConnectorAdapter'
2222
import {
23-
resolveNodeSurfaceCandidate,
23+
resolveNodeSurfaceSlotCandidate,
2424
resolveSlotTargetCandidate
2525
} from '@/renderer/core/canvas/links/linkDropOrchestrator'
2626
import {
@@ -330,7 +330,7 @@ export function useSlotLinkInteraction({
330330
const slotCandidate = resolveSlotTargetCandidate(target, context)
331331
const nodeCandidate = slotCandidate
332332
? null
333-
: resolveNodeSurfaceCandidate(target, context)
333+
: resolveNodeSurfaceSlotCandidate(target, context)
334334
candidate = slotCandidate ?? nodeCandidate
335335
dragContext.lastHoverSlotKey = hoveredSlotKey
336336
dragContext.lastHoverNodeId = hoveredNodeId
@@ -498,37 +498,14 @@ export function useSlotLinkInteraction({
498498
return
499499
}
500500

501-
// Prefer using the snapped candidate captured during hover for perf + consistency
502501
const snappedCandidate = state.candidate?.compatible
503502
? state.candidate
504503
: null
505504

506-
let connected = tryConnectToCandidate(snappedCandidate)
505+
const hasConnected = connectByPriority(canvasEvent.target, snappedCandidate)
507506

508-
// Fallback to DOM slot under pointer (if any), then node fallback, then reroute
509-
if (!connected) {
510-
const adapter = activeAdapter
511-
const graph = app.canvas?.graph ?? null
512-
const context = { adapter, graph, session: dragContext }
513-
const domCandidate = resolveSlotTargetCandidate(
514-
canvasEvent.target,
515-
context
516-
)
517-
connected = tryConnectToCandidate(domCandidate)
518-
519-
if (!connected) {
520-
const nodeCandidate = resolveNodeSurfaceCandidate(
521-
canvasEvent.target,
522-
context
523-
)
524-
connected = tryConnectToCandidate(nodeCandidate)
525-
}
526-
}
527-
528-
if (!connected) connected = tryConnectViaRerouteAtPointer() || connected
529-
530-
if (!connected) {
531-
if (activeAdapter) activeAdapter.dropOnCanvas(canvasEvent)
507+
if (!hasConnected) {
508+
activeAdapter?.dropOnCanvas(canvasEvent)
532509
}
533510

534511
cleanupInteraction()
@@ -548,6 +525,34 @@ export function useSlotLinkInteraction({
548525
app.canvas?.setDirty(true, true)
549526
}
550527

528+
function connectByPriority(
529+
target: EventTarget | null,
530+
snappedCandidate: SlotDropCandidate | null
531+
): boolean {
532+
const adapter = activeAdapter
533+
const graph = app.canvas?.graph ?? null
534+
const context = { adapter, graph, session: dragContext }
535+
536+
const attemptSnapped = () => tryConnectToCandidate(snappedCandidate)
537+
538+
const domSlotCandidate = resolveSlotTargetCandidate(target, context)
539+
const attemptDomSlot = () => tryConnectToCandidate(domSlotCandidate)
540+
541+
const nodeSurfaceSlotCandidate = resolveNodeSurfaceSlotCandidate(
542+
target,
543+
context
544+
)
545+
const attemptNodeSurface = () =>
546+
tryConnectToCandidate(nodeSurfaceSlotCandidate)
547+
const attemptReroute = () => tryConnectViaRerouteAtPointer()
548+
549+
if (attemptSnapped()) return true
550+
if (attemptDomSlot()) return true
551+
if (attemptNodeSurface()) return true
552+
if (attemptReroute()) return true
553+
return false
554+
}
555+
551556
const onPointerDown = (event: PointerEvent) => {
552557
if (event.button !== 0) return
553558
if (!nodeId) return

0 commit comments

Comments
 (0)