Reworked edge rerendering

This commit is contained in:
peterkogo
2024-12-11 15:22:44 +01:00
parent 1c67bf848f
commit 24735aa003
8 changed files with 79 additions and 124 deletions
@@ -11,51 +11,55 @@
import type { SvelteFlowStore } from '$lib/store/types';
const {
id,
type = 'default',
edge,
store,
onedgeclick,
onedgecontextmenu,
onedgemouseenter,
onedgemouseleave
}: { store: SvelteFlowStore; edge: EdgeLayouted } & EdgeEvents = $props();
let {
source,
target,
data = {},
style,
zIndex,
animated = false,
selected = false,
selectable,
deletable,
hidden,
label,
labelStyle,
markerStart,
markerEnd,
sourceHandle,
targetHandle,
sourceX,
sourceY,
targetX,
targetY,
sourcePosition,
targetPosition,
ariaLabel,
animated,
selected,
label,
labelStyle,
data = {},
style,
interactionWidth,
type = 'default',
sourceHandle,
targetHandle,
markerStart,
markerEnd,
selectable: edgeSelectable,
deletable,
hidden,
zIndex,
class: className,
onedgeclick,
onedgecontextmenu,
onedgemouseenter,
onedgemouseleave
}: { store: SvelteFlowStore } & EdgeLayouted & EdgeEvents = $props();
ariaLabel
} = $derived(edge);
const { id } = edge;
setContext('svelteflow__edge_id', id);
let edgeType = $derived(type ?? 'default');
let EdgeComponent = $derived(store.edgeTypes[edgeType] ?? BezierEdgeInternal);
let selectable = $derived(edgeSelectable ?? store.elementsSelectable);
let EdgeComponent = $derived(store.edgeTypes[type] ?? BezierEdgeInternal);
let markerStartUrl = $derived(
markerStart ? `url('#${getMarkerId(markerStart, store.flowId)}')` : undefined
);
let markerEndUrl = $derived(
markerEnd ? `url('#${getMarkerId(markerEnd, store.flowId)}')` : undefined
);
let isSelectable = $derived(selectable ?? store.elementsSelectable);
const handleEdgeSelect = useHandleEdgeSelect();
@@ -88,7 +92,7 @@
class={cc(['svelte-flow__edge', className])}
class:animated
class:selected
class:selectable={isSelectable}
class:selectable
data-id={id}
{onclick}
oncontextmenu={onedgecontextmenu
@@ -130,9 +134,9 @@
{data}
{style}
{interactionWidth}
selectable={isSelectable}
{selectable}
deletable={deletable ?? true}
type={edgeType}
{type}
sourceHandleId={sourceHandle}
targetHandleId={targetHandle}
markerStart={markerStartUrl}