From 7c31c57f9b461a604ef25c57d4885ac8dd180c60 Mon Sep 17 00:00:00 2001 From: dzuo <68603119+dzuoo@users.noreply.github.com> Date: Tue, 1 Jul 2025 11:12:19 +0800 Subject: [PATCH] feat(core): enhance elevate-edges-on-select to support direct edge selection --- packages/core/src/utils/edge.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/core/src/utils/edge.ts b/packages/core/src/utils/edge.ts index eaecd2213..d58d15503 100644 --- a/packages/core/src/utils/edge.ts +++ b/packages/core/src/utils/edge.ts @@ -103,7 +103,14 @@ export function getEdgeZIndex(edge: GraphEdge, findNode: Actions['findNode'], el } if (elevateEdgesOnSelect) { - z = hasZIndex ? edge.zIndex! : Math.max(source.computedPosition.z || 0, target.computedPosition.z || 0) + const baseZ = hasZIndex ? edge.zIndex! : 0 + const nodeBasedZ = Math.max(source.computedPosition.z || 0, target.computedPosition.z || 0) + const edgeSelectedZ = edge.selected ? 1000 : 0 + + // Take the maximum elevation to avoid double-stacking when both node and edge are selected + const elevationZ = Math.max(nodeBasedZ - baseZ, edgeSelectedZ) + + z = baseZ + elevationZ } return z