From 0627a71fb6f7d17c62aa46bbc427a5535a79f118 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Thu, 25 Sep 2025 18:02:26 -0700 Subject: [PATCH 1/3] those who know cont --- .../litegraph/src/canvas/MovingInputLink.ts | 26 ++----------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/src/lib/litegraph/src/canvas/MovingInputLink.ts b/src/lib/litegraph/src/canvas/MovingInputLink.ts index 9ca06df2a..fb094222c 100644 --- a/src/lib/litegraph/src/canvas/MovingInputLink.ts +++ b/src/lib/litegraph/src/canvas/MovingInputLink.ts @@ -73,30 +73,8 @@ export class MovingInputLink extends MovingLinkBase { return link } - connectToOutput( - outputNode: LGraphNode, - output: INodeOutputSlot, - events: CustomEventTarget - ): LLink | null | undefined { - if ( - outputNode === this.outputNode && - output === this.outputSlot && - this.inputSlot === this.inputNode.inputs[this.inputIndex] - ) { - return - } - - const afterRerouteId = this.fromReroute?.id ?? this.link.parentId - - this.inputNode.disconnectInput(this.inputIndex, true) - const newLink = outputNode.connectSlots( - output, - this.inputNode, - this.inputSlot, - afterRerouteId - ) - if (newLink) events.dispatch('input-moved', this) - return newLink + connectToOutput(): never { + throw new Error('MovingInputLink cannot connect to an output.') } connectToSubgraphInput(): void { From 1ca3d75aaf29523a5e270d98b012eb617da97954 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Thu, 25 Sep 2025 19:13:24 -0700 Subject: [PATCH 2/3] nit --- src/renderer/core/canvas/links/slotLinkPreviewRenderer.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/renderer/core/canvas/links/slotLinkPreviewRenderer.ts b/src/renderer/core/canvas/links/slotLinkPreviewRenderer.ts index c8e513779..281c9b42b 100644 --- a/src/renderer/core/canvas/links/slotLinkPreviewRenderer.ts +++ b/src/renderer/core/canvas/links/slotLinkPreviewRenderer.ts @@ -46,9 +46,8 @@ export function attachSlotLinkPreviewRenderer(canvas: LGraphCanvas) { if (!linkRenderer) return const context = buildContext(canvas) - const adapter = createLinkConnectorAdapter() - const renderLinks = adapter?.renderLinks - if (!adapter || !renderLinks || renderLinks.length === 0) return + const renderLinks = createLinkConnectorAdapter()?.renderLinks + if (!renderLinks || renderLinks.length === 0) return const to: ReadOnlyPoint = [pointer.canvas.x, pointer.canvas.y] ctx.save() From ecc5bed87d3238a598b479038431a0bfa055aee2 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Thu, 25 Sep 2025 19:17:19 -0700 Subject: [PATCH 3/3] type --- .../composables/useSlotLinkInteraction.ts | 43 +++++-------------- 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.ts b/src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.ts index 4eabdf609..57f6fa21f 100644 --- a/src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.ts +++ b/src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.ts @@ -140,35 +140,12 @@ export function useSlotLinkInteraction({ return 'canConnectToReroute' in link } - type InputConnectableLink = RenderLink & { - toType: 'input' - canConnectToInput: (node: LGraphNode, input: INodeInputSlot) => boolean - } - - type OutputConnectableLink = RenderLink & { - toType: 'output' - canConnectToOutput: (node: LGraphNode, output: INodeOutputSlot) => boolean - } - - function isInputConnectableLink( - link: RenderLink - ): link is InputConnectableLink { - return ( - link.toType === 'input' && - typeof (link as { canConnectToInput?: unknown }).canConnectToInput === - 'function' - ) - } - - function isOutputConnectableLink( - link: RenderLink - ): link is OutputConnectableLink { - return ( - link.toType === 'output' && - typeof (link as { canConnectToOutput?: unknown }).canConnectToOutput === - 'function' - ) - } + type ToInputLink = RenderLink & { toType: 'input' } + type ToOutputLink = RenderLink & { toType: 'output' } + const isToInputLink = (link: RenderLink): link is ToInputLink => + link.toType === 'input' + const isToOutputLink = (link: RenderLink): link is ToOutputLink => + link.toType === 'output' function connectLinksToInput( links: ReadonlyArray, @@ -176,7 +153,7 @@ export function useSlotLinkInteraction({ inputSlot: INodeInputSlot ): boolean { const validCandidates = links - .filter(isInputConnectableLink) + .filter(isToInputLink) .filter((link) => link.canConnectToInput(node, inputSlot)) for (const link of validCandidates) { @@ -192,7 +169,7 @@ export function useSlotLinkInteraction({ outputSlot: INodeOutputSlot ): boolean { const validCandidates = links - .filter(isOutputConnectableLink) + .filter(isToOutputLink) .filter((link) => link.canConnectToOutput(node, outputSlot)) for (const link of validCandidates) { @@ -353,7 +330,7 @@ export function useSlotLinkInteraction({ if (results.length && maybeReroutes !== null) { const originalReroutes = maybeReroutes.slice(0, -1).reverse() for (const link of adapter.renderLinks) { - if (!isInputConnectableLink(link)) continue + if (!isToInputLink(link)) continue for (const result of results) { link.connectToRerouteInput( reroute, @@ -370,7 +347,7 @@ export function useSlotLinkInteraction({ if (sourceOutput) { const { node, output } = sourceOutput for (const link of adapter.renderLinks) { - if (!isOutputConnectableLink(link)) continue + if (!isToOutputLink(link)) continue if (hasCanConnectToReroute(link) && !link.canConnectToReroute(reroute)) continue link.connectToRerouteOutput(