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 = (