From 65d225cb2cc4e57fd6b9c76adb3240835e3c9f7e Mon Sep 17 00:00:00 2001 From: darshanr0107 Date: Thu, 28 Aug 2025 16:34:07 +0530 Subject: [PATCH] fix: remove diagram-specific logic from generic rendering utils on-behalf-of: @Mermaid-Chart --- .../mermaid/src/diagrams/mindmap/mindmapRenderer.ts | 9 ++++++--- .../rendering-elements/shapes/circle.ts | 5 ++--- .../rendering-elements/shapes/drawRect.ts | 5 +---- .../rendering-elements/shapes/roundedRect.ts | 12 +++--------- .../rendering-elements/shapes/squareRect.ts | 2 +- packages/mermaid/src/rendering-util/types.ts | 2 ++ 6 files changed, 15 insertions(+), 20 deletions(-) diff --git a/packages/mermaid/src/diagrams/mindmap/mindmapRenderer.ts b/packages/mermaid/src/diagrams/mindmap/mindmapRenderer.ts index 7a8fcc011..2a8ea5710 100644 --- a/packages/mermaid/src/diagrams/mindmap/mindmapRenderer.ts +++ b/packages/mermaid/src/diagrams/mindmap/mindmapRenderer.ts @@ -61,14 +61,17 @@ export const draw: DrawDefinition = async (text, id, _version, diagObj) => { return; } data4Layout.nodes.forEach((node) => { - node.from = 'mindmap'; if (node.shape === 'rounded') { node.radius = 15; node.taper = 15; node.stroke = 'none'; + node.width = 0; + node.padding = 15; + } else if (node.shape === 'circle') { + node.padding = 10; } else if (node.shape === 'rect') { - node.height = 46; - node.width = 92; + node.width = 0; + node.padding = 10; } }); // Use the unified rendering system diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/circle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/circle.ts index 782ae72a2..1dab28d60 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/circle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/circle.ts @@ -11,9 +11,8 @@ export async function circle(parent: D3Selection( const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node)); const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0); - const totalHeight = Math.max( - bbox.height + (node.from === 'mindmap' ? options.labelPaddingY : options.labelPaddingY * 2), - node?.height || 0 - ); + const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0); const x = -totalWidth / 2; const y = -totalHeight / 2; diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/roundedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/roundedRect.ts index bcaf38887..2b8f03d92 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/roundedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/roundedRect.ts @@ -95,15 +95,9 @@ export async function roundedRect( const labelPaddingX = node?.padding ?? 0; const labelPaddingY = node?.padding ?? 0; - let w; - let h; - if (node.from === 'mindmap') { - w = bbox.width + labelPaddingX * 2; - h = bbox.height + labelPaddingY; - } else { - w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2; - h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2; - } + + const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2; + const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2; const radius = node.radius || 5; const taper = node.taper || 5; // Taper width for the rounded corners const { cssStyles } = node; diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/squareRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/squareRect.ts index ed32f115c..0e5ec730e 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/squareRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/squareRect.ts @@ -7,7 +7,7 @@ export async function squareRect(parent: D3Selecti rx: 0, ry: 0, classes: '', - labelPaddingX: node.from === 'mindmap' ? (node?.padding || 0) * 1 : (node?.padding || 0) * 2, + labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2, labelPaddingY: (node?.padding || 0) * 1, } as RectOptions; return drawRect(parent, node, options); diff --git a/packages/mermaid/src/rendering-util/types.ts b/packages/mermaid/src/rendering-util/types.ts index db9b10487..45beb59d2 100644 --- a/packages/mermaid/src/rendering-util/types.ts +++ b/packages/mermaid/src/rendering-util/types.ts @@ -60,6 +60,8 @@ interface BaseNode { borderStyle?: string; borderWidth?: number; labelTextColor?: string; + labelPaddingX?: number; + labelPaddingY?: number; // Flowchart specific properties x?: number;