UNPKG

mermaid

Version:

Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.

102 lines (98 loc) 2.79 kB
import { shapes } from "./chunk-TEH6E4GO.mjs"; import { handleUndefinedAttr } from "./chunk-75Z2AOVW.mjs"; import { log } from "./chunk-X3CZISLH.mjs"; import { __name } from "./chunk-Y2CYZVJY.mjs"; // src/utils/subGraphTitleMargins.ts var getSubGraphTitleMargins = /* @__PURE__ */ __name(({ flowchart }) => { const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0; const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0; const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin; return { subGraphTitleTopMargin, subGraphTitleBottomMargin, subGraphTitleTotalMargin }; }, "getSubGraphTitleMargins"); // src/rendering-util/rendering-elements/nodes.ts var nodeElems = /* @__PURE__ */ new Map(); async function insertNode(elem, node, renderOptions) { let newEl; let el; if (node.shape === "rect") { if (node.rx && node.ry) { node.shape = "roundedRect"; } else { node.shape = "squareRect"; } } const shapeHandler = node.shape ? shapes[node.shape] : void 0; if (!shapeHandler) { throw new Error(`No such shape: ${node.shape}. Please check your syntax.`); } if (node.link) { let target; if (renderOptions.config.securityLevel === "sandbox") { target = "_top"; } else if (node.linkTarget) { target = node.linkTarget || "_blank"; } newEl = elem.insert("svg:a").attr("xlink:href", node.link).attr("target", target ?? null); el = await shapeHandler(newEl, node, renderOptions); } else { el = await shapeHandler(elem, node, renderOptions); newEl = el; } newEl.attr("data-look", handleUndefinedAttr(node.look)); if (node.tooltip) { el.attr("title", node.tooltip); } nodeElems.set(node.id, newEl); if (node.haveCallback) { newEl.attr("class", newEl.attr("class") + " clickable"); } return newEl; } __name(insertNode, "insertNode"); var setNodeElem = /* @__PURE__ */ __name((elem, node) => { nodeElems.set(node.id, elem); }, "setNodeElem"); var clear = /* @__PURE__ */ __name(() => { nodeElems.clear(); }, "clear"); var positionNode = /* @__PURE__ */ __name((node) => { const el = nodeElems.get(node.id); log.trace( "Transforming node", node.diff, node, "translate(" + (node.x - node.width / 2 - 5) + ", " + node.width / 2 + ")" ); const padding = 8; const diff = node.diff || 0; if (node.clusterNode) { el.attr( "transform", "translate(" + (node.x + diff - node.width / 2) + ", " + (node.y - node.height / 2 - padding) + ")" ); } else { el.attr("transform", "translate(" + node.x + ", " + node.y + ")"); } return diff; }, "positionNode"); export { getSubGraphTitleMargins, insertNode, setNodeElem, clear, positionNode };