From 6293b4bbe0d03be2a85c5badbf440e063011b8a6 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Fri, 18 Apr 2025 23:22:28 +1000 Subject: [PATCH] Disconnect moved output links when dropped on canvas (#936) - Resolves #884 --- src/canvas/LinkConnector.ts | 6 ++++++ test/LinkConnector.integration.test.ts | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/canvas/LinkConnector.ts b/src/canvas/LinkConnector.ts index 7a0f862f8..cf3dafbe3 100644 --- a/src/canvas/LinkConnector.ts +++ b/src/canvas/LinkConnector.ts @@ -446,6 +446,12 @@ export class LinkConnector { link.inputNode.disconnectInput(link.inputIndex, true) } } + } else if (this.state.connectingTo === "output") { + for (const link of this.renderLinks) { + if (link instanceof MovingOutputLink) { + link.outputNode.disconnectOutput(link.outputIndex, link.inputNode) + } + } } } diff --git a/test/LinkConnector.integration.test.ts b/test/LinkConnector.integration.test.ts index 1ff112b82..f7ca98bb8 100644 --- a/test/LinkConnector.integration.test.ts +++ b/test/LinkConnector.integration.test.ts @@ -499,6 +499,9 @@ describe("LinkConnector Integration", () => { expect(connector.isRerouteValidDrop(reroute7)).toBe(false) expect(connector.isRerouteValidDrop(reroute10)).toBe(false) expect(connector.isRerouteValidDrop(reroute13)).toBe(false) + + // Prevent link disconnect when dropped on canvas (just for this test) + connector.events.addEventListener("dropped-on-canvas", e => e.preventDefault(), { once: true }) connector.dropLinks(graph, reroute7Event) connector.reset()