From 83493f26b78b3e4132ed9547ed73641378fb2eca Mon Sep 17 00:00:00 2001 From: omkarht Date: Mon, 2 Sep 2024 21:00:12 +0530 Subject: [PATCH] implemented neo-fication for multiRect, slopedRect, waveEdgedRectangle shapes --- .../rendering-elements/shapes/multiRect.ts | 7 +++++-- .../rendering-elements/shapes/slopedRect.ts | 9 ++++++--- .../rendering-elements/shapes/waveEdgedRectangle.ts | 9 ++++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts index 380020056..e675e59db 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts @@ -11,8 +11,11 @@ export const multiRect = async (parent: SVGAElement, node: Node) => { const { labelStyles, nodeStyles } = styles2String(node); node.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node)); - const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0); - const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0); + const nodePadding = node.padding ?? 0; + const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding; + const labelPaddingY = node.look === 'neo' ? nodePadding * 1 : nodePadding; + const w = Math.max(bbox.width + (labelPaddingX ?? 0) * 2, node?.width ?? 0); + const h = Math.max(bbox.height + (labelPaddingY ?? 0) * 2, node?.height ?? 0); const rectOffset = 5; const x = -w / 2; const y = -h / 2; diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts index 6adcfd245..afadd61c8 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts @@ -11,8 +11,11 @@ export const slopedRect = async (parent: SVGAElement, node: Node) => { const { labelStyles, nodeStyles } = styles2String(node); node.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node)); - const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0); - const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0); + const nodePadding = node.padding ?? 0; + const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding; + const labelPaddingY = node.look === 'neo' ? nodePadding * 1 : nodePadding; + const w = Math.max(bbox.width + (labelPaddingX ?? 0) * 2, node?.width ?? 0); + const h = Math.max(bbox.height + (labelPaddingY ?? 0) * 2, node?.height ?? 0); const x = -w / 2; const y = -h / 2; @@ -51,7 +54,7 @@ export const slopedRect = async (parent: SVGAElement, node: Node) => { polygon.attr('transform', `translate(0, ${h / 4})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (labelPaddingX ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (labelPaddingY ?? 0) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts index 2538fbea2..d3a363d4d 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts @@ -14,8 +14,11 @@ export const waveEdgedRectangle = async (parent: SVGAElement, node: Node) => { const { labelStyles, nodeStyles } = styles2String(node); node.labelStyle = labelStyles; const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node)); - const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0); - const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0); + const nodePadding = node.padding ?? 0; + const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding; + const labelPaddingY = node.look === 'neo' ? nodePadding * 1 : nodePadding; + const w = Math.max(bbox.width + (labelPaddingX ?? 0) * 2, node?.width ?? 0); + const h = Math.max(bbox.height + (labelPaddingY ?? 0) * 2, node?.height ?? 0); const waveAmplitude = h / 4; const finalH = h + waveAmplitude; const { cssStyles } = node; @@ -54,7 +57,7 @@ export const waveEdgedRectangle = async (parent: SVGAElement, node: Node) => { waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (labelPaddingX ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (labelPaddingY ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, waveEdgeRect);