diff --git a/packages/mermaid/src/rendering-util/rendering-elements/nodes.js b/packages/mermaid/src/rendering-util/rendering-elements/nodes.js index db7e9d5e5..97ebb0914 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/nodes.js +++ b/packages/mermaid/src/rendering-util/rendering-elements/nodes.js @@ -21,6 +21,7 @@ import { lean_right } from './shapes/leanRight.js'; import { lean_left } from './shapes/leanLeft.js'; import { trapezoid } from './shapes/trapezoid.js'; import { inv_trapezoid } from './shapes/invertedTrapezoid.js'; +import { labelRect } from './shapes/labelRect.js'; const shapes = { state, @@ -45,6 +46,7 @@ const shapes = { lean_left, trapezoid, inv_trapezoid, + labelRect, }; let nodeElems = {}; diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/drawRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/drawRect.ts index 3a95f8c86..7ae31051d 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/drawRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/drawRect.ts @@ -72,36 +72,3 @@ export const drawRect = async (parent: SVGAElement, node: Node, options: RectOpt return shapeSvg; }; - -export const labelRect = async (parent: SVGElement, node: Node) => { - const { shapeSvg } = await labelHelper(parent, node, 'label'); - - // log.trace('Classes = ', node.class); - // add the rect - const rect = shapeSvg.insert('rect', ':first-child'); - - // Hide the rect we are only after the label - const totalWidth = 0; - const totalHeight = 0; - rect.attr('width', totalWidth).attr('height', totalHeight); - shapeSvg.attr('class', 'label edgeLabel'); - - // if (node.props) { - // const propKeys = new Set(Object.keys(node.props)); - // if (node.props.borders) { - // applyNodePropertyBorders(rect, node.borders, totalWidth, totalHeight); - // propKeys.delete('borders'); - // } - // propKeys.forEach((propKey) => { - // log.warn(`Unknown node property ${propKey}`); - // }); - // } - - updateNodeBounds(node, rect); - - node.intersect = function (point) { - return intersect.rect(node, point); - }; - - return shapeSvg; -}; diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts new file mode 100644 index 000000000..00c026edd --- /dev/null +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts @@ -0,0 +1,49 @@ +import type { Node, RectOptions } from '$root/rendering-util/types.d.ts'; +import { drawRect } from './drawRect.js'; +import { labelHelper, updateNodeBounds } from './util.js'; +import intersect from '../intersect/index.js'; + +export const roundedRect = async (parent: SVGAElement, node: Node) => { + const options = { + rx: 5, + ry: 5, + classes: '', + labelPaddingX: (node?.padding || 0) * 1, + labelPaddingY: (node?.padding || 0) * 1, + } as RectOptions; + + return drawRect(parent, node, options); +}; + +export const labelRect = async (parent: SVGElement, node: Node) => { + const { shapeSvg } = await labelHelper(parent, node, 'label'); + + // log.trace('Classes = ', node.class); + // add the rect + const rect = shapeSvg.insert('rect', ':first-child'); + + // Hide the rect we are only after the label + const totalWidth = 0; + const totalHeight = 0; + rect.attr('width', totalWidth).attr('height', totalHeight); + shapeSvg.attr('class', 'label edgeLabel'); + + // if (node.props) { + // const propKeys = new Set(Object.keys(node.props)); + // if (node.props.borders) { + // applyNodePropertyBorders(rect, node.borders, totalWidth, totalHeight); + // propKeys.delete('borders'); + // } + // propKeys.forEach((propKey) => { + // log.warn(`Unknown node property ${propKey}`); + // }); + // } + + updateNodeBounds(node, rect); + + node.intersect = function (point) { + return intersect.rect(node, point); + }; + + return shapeSvg; +};