From a727f6c5e2a57ee6258dd3abc19bc54c6d282da3 Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Thu, 7 May 2026 22:23:30 +0200 Subject: [PATCH] feat: Distance based candidates Signed-off-by: Mark Tolmacs --- packages/element/src/collision.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/element/src/collision.ts b/packages/element/src/collision.ts index 6999512b44..1f2a51ea0a 100644 --- a/packages/element/src/collision.ts +++ b/packages/element/src/collision.ts @@ -359,12 +359,18 @@ export const getHoveredElementForBinding = ( return candidateElements[0]; } - // Prefer smaller shapes + // Prefer closer shapes return candidateElements .sort( - (a, b) => b.width ** 2 + b.height ** 2 - (a.width ** 2 + a.height ** 2), + (a, b) => + (isPointInElement(point, a, elementsMap) + ? Infinity + : distanceToElement(a, elementsMap, point)) - + (isPointInElement(point, b, elementsMap) + ? Infinity + : distanceToElement(b, elementsMap, point)), ) - .pop() as NonDeleted; + .shift() as NonDeleted; }; export const getHoveredElementForFocusPoint = (