diff --git a/packages/element/src/binding.ts b/packages/element/src/binding.ts index 560398df47..d63b1c043a 100644 --- a/packages/element/src/binding.ts +++ b/packages/element/src/binding.ts @@ -107,7 +107,7 @@ export const isBindingEnabled = (appState: AppState): boolean => { }; export const FIXED_BINDING_DISTANCE = 5; -export const BINDING_HIGHLIGHT_THICKNESS = 10; +const BINDING_HIGHLIGHT_THICKNESS = 10; export const BINDING_HIGHLIGHT_OFFSET = 4; const getNonDeletedElements = ( @@ -446,22 +446,13 @@ export const maybeBindLinearElement = ( const normalizePointBinding = ( binding: { focus: number; gap: number }, hoveredElement: ExcalidrawBindableElement, -) => { - let gap = binding.gap; - const maxGap = maxBindingGap( - hoveredElement, - hoveredElement.width, - hoveredElement.height, - ); - - if (gap > maxGap) { - gap = BINDING_HIGHLIGHT_THICKNESS + BINDING_HIGHLIGHT_OFFSET; - } - return { - ...binding, - gap, - }; -}; +) => ({ + ...binding, + gap: Math.min( + binding.gap, + maxBindingGap(hoveredElement, hoveredElement.width, hoveredElement.height), + ), +}); export const bindLinearElement = ( linearElement: NonDeleted, diff --git a/packages/excalidraw/renderer/interactiveScene.ts b/packages/excalidraw/renderer/interactiveScene.ts index 69c6a8196e..ca2daa72a3 100644 --- a/packages/excalidraw/renderer/interactiveScene.ts +++ b/packages/excalidraw/renderer/interactiveScene.ts @@ -17,7 +17,6 @@ import { import { BINDING_HIGHLIGHT_OFFSET, - BINDING_HIGHLIGHT_THICKNESS, maxBindingGap, } from "@excalidraw/element/binding"; import { LinearElementEditor } from "@excalidraw/element/linearElementEditor"; @@ -262,8 +261,9 @@ const renderBindingHighlightForBindableElement = ( context.strokeStyle = "rgba(0,0,0,.05)"; // When zooming out, make line width greater for visibility - const zoomValue = zoom.value < 1 ? zoom.value : 1; - context.lineWidth = BINDING_HIGHLIGHT_THICKNESS / zoomValue; + context.lineWidth = + maxBindingGap(element, element.width, element.height, zoom) - + BINDING_HIGHLIGHT_OFFSET; // To ensure the binding highlight doesn't overlap the element itself const padding = context.lineWidth / 2 + BINDING_HIGHLIGHT_OFFSET;