From a3e3055186451755a2844037c20754fa462a98fa Mon Sep 17 00:00:00 2001 From: peterkogo Date: Fri, 11 Apr 2025 15:32:07 +0200 Subject: [PATCH] added Edge Reconnection --- .../routes/examples/edges/ButtonEdge.svelte | 114 +++++++------- .../examples/edges/CustomBezierEdge.svelte | 54 +------ .../svelte/src/lib/actions/portal/index.ts | 32 +--- .../src/lib/actions/portal/portal.svelte.ts | 42 +++++ .../EdgeLabelRenderer.svelte | 7 +- .../EdgeReconnectAnchor.svelte | 145 ++++++++++++++++++ .../components/EdgeReconnectAnchor/index.ts | 1 + .../src/lib/components/Handle/Handle.svelte | 4 +- .../ViewportPortal/ViewportPortal.svelte | 7 +- .../container/SvelteFlow/SvelteFlow.svelte | 3 - .../lib/container/SvelteFlow/Wrapper.svelte | 7 + .../src/lib/container/SvelteFlow/types.ts | 18 ++- packages/svelte/src/lib/index.ts | 4 + .../plugins/NodeToolbar/NodeToolbar.svelte | 4 +- .../src/lib/store/initial-store.svelte.ts | 20 ++- packages/svelte/src/lib/types/general.ts | 4 + packages/system/src/types/general.ts | 13 ++ 17 files changed, 314 insertions(+), 165 deletions(-) create mode 100644 packages/svelte/src/lib/actions/portal/portal.svelte.ts create mode 100644 packages/svelte/src/lib/components/EdgeReconnectAnchor/EdgeReconnectAnchor.svelte create mode 100644 packages/svelte/src/lib/components/EdgeReconnectAnchor/index.ts diff --git a/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte b/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte index 9096a029..c18cc65a 100644 --- a/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte +++ b/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte @@ -5,38 +5,21 @@ type EdgeProps, EdgeLabelRenderer, useSvelteFlow, - MarkerType + MarkerType, + EdgeReconnectAnchor } from '@xyflow/svelte'; - type $$Props = EdgeProps; - - interface Props { - id?: $$Props['id']; - style?: $$Props['style']; - markerEnd?: $$Props['markerEnd']; - sourceX: $$Props['sourceX']; - sourceY: $$Props['sourceY']; - sourcePosition: $$Props['sourcePosition']; - targetX: $$Props['targetX']; - targetY: $$Props['targetY']; - targetPosition: $$Props['targetPosition']; - [key: string]: any; - } - let { - id = '', - style = undefined, - markerEnd = undefined, + style, + markerEnd, sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, - ...rest - }: Props = $props(); - - rest; + selected + }: EdgeProps = $props(); let [edgePath, labelX, labelY] = $derived( getBezierPath({ @@ -50,42 +33,61 @@ ); const { updateEdge } = useSvelteFlow(); + + let reconnecting = $state(false); - - -
- -
-
+ + + +{/if} + +{#if selected} + + +{/if}