From 040af4f5456966609eb6c815996e277152d2a99c Mon Sep 17 00:00:00 2001 From: darshanr0107 Date: Fri, 5 Sep 2025 19:16:43 +0530 Subject: [PATCH] fix: failing unit test on-behalf-of: @Mermaid-Chart --- packages/mermaid-layout-elk/src/geometry.ts | 31 +++++++++++++-------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/packages/mermaid-layout-elk/src/geometry.ts b/packages/mermaid-layout-elk/src/geometry.ts index fe78fb5ee..3255b2e8b 100644 --- a/packages/mermaid-layout-elk/src/geometry.ts +++ b/packages/mermaid-layout-elk/src/geometry.ts @@ -163,25 +163,32 @@ export const replaceEndpoint = ( value: P | null | undefined, tol = 0.1 ) => { - if (!value) { + if (!value || points.length === 0) { return; } - const isDup = points.some((p, i) => - which === 'start' - ? i > 0 && Math.abs(p.x - value.x) < tol && Math.abs(p.y - value.y) < tol - : i < points.length - 1 && Math.abs(p.x - value.x) < tol && Math.abs(p.y - value.y) < tol - ); - if (isDup) { - if (which === 'start') { + + if (which === 'start') { + if ( + points.length > 0 && + Math.abs(points[0].x - value.x) < tol && + Math.abs(points[0].y - value.y) < tol + ) { + // duplicate start remove it points.shift(); } else { - points.pop(); + points[0] = value; } } else { - if (which === 'start') { - points[0] = value; + const last = points.length - 1; + if ( + points.length > 0 && + Math.abs(points[last].x - value.x) < tol && + Math.abs(points[last].y - value.y) < tol + ) { + // duplicate end remove it + points.pop(); } else { - points[points.length - 1] = value; + points[last] = value; } } };