Added handleEdgeSelect hook & click on edge-label now selects edge

This commit is contained in:
peterkogo
2024-01-18 14:26:35 +01:00
parent 6bb9c5360d
commit 88aa0fccf3
7 changed files with 86 additions and 50 deletions
@@ -0,0 +1,39 @@
import { get } from 'svelte/store';
import { useStore } from '$lib/store';
import { errorMessages } from '@xyflow/system';
export function useHandleEdgeSelect() {
const {
edgeLookup,
selectionRect,
selectionRectMode,
multiselectionKeyPressed,
addSelectedEdges,
unselectNodesAndEdges,
elementsSelectable
} = useStore();
return (id: string) => {
const edge = get(edgeLookup).get(id);
if (!edge) {
console.warn('012', errorMessages['error012'](id));
return;
}
const selectable =
edge.selectable || (get(elementsSelectable) && typeof edge.selectable === 'undefined');
if (selectable) {
selectionRect.set(null);
selectionRectMode.set(null);
if (!edge.selected) {
addSelectedEdges([id]);
} else if (edge.selected && get(multiselectionKeyPressed)) {
unselectNodesAndEdges({ nodes: [], edges: [edge] });
}
}
};
}