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()