Custom Edges
Svelte Flow comes with four different edge types - default
(bezier), straight
, step
and smoothstep
. It’s also possible to create a custom edge, if you need a special edge routing or controls at the edge. In this example we are demonstrating how to implement an edge with a button, a bi-directional edge, a self connecting edge. In all examples we are using the BaseEdge component as a helper.
<script lang="ts">
import { writable } from 'svelte/store';
import { SvelteFlow, Background, ConnectionMode, type Node, type Edge } from '@xyflow/svelte';
import '@xyflow/svelte/dist/style.css';
import { initialNodes, initialEdges } from './nodes-and-edges';
import ButtonEdge from './ButtonEdge.svelte';
import BiDirectionalEdge from './BiDirectionalEdge.svelte';
import BiDirectionalNode from './BiDirectionalNode.svelte';
import SelfConnectingEdge from './SelfConnectingEdge.svelte';
const nodes = writable<Node[]>(initialNodes);
const edges = writable<Edge[]>(initialEdges);
const nodeTypes = {
bidirectional: BiDirectionalNode
};
const edgeTypes = {
buttonedge: ButtonEdge,
bidirectional: BiDirectionalEdge,
selfconnecting: SelfConnectingEdge
};
</script>
<div style="height:100vh;">
<SvelteFlow {nodes} {nodeTypes} {edges} {edgeTypes} connectionMode={ConnectionMode.Loose} fitView>
<Background />
</SvelteFlow>
</div>