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;