Added handleEdgeSelect hook & click on edge-label now selects edge
This commit is contained in:
@@ -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] });
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user