{"version":3,"file":"667.main.js","mappings":"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","sources":["webpack:///./node_modules/mermaid/dist/chunks/mermaid.core/chunk-DGPT5PPI.mjs"],"sourcesContent":["import {\n createText,\n replaceIconSubstring\n} from \"./chunk-RAVNKOQV.mjs\";\nimport {\n decodeEntities\n} from \"./chunk-2EDTWDYI.mjs\";\nimport {\n __name,\n evaluate,\n getConfig2 as getConfig,\n log,\n sanitizeText\n} from \"./chunk-IIKMQLIC.mjs\";\n\n// src/dagre-wrapper/createLabel.js\nimport { select } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const span = div.append(\"span\");\n span.html(label);\n applyStyle(span, node.labelStyle);\n span.attr(\"class\", labelClass);\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name((_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: replaceIconSubstring(decodeEntities(vertexText)),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select2 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config = getConfig();\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(config.flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config),\n {\n useHtmlLabels,\n width: node.width || config.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config\n );\n } else {\n text = textNode.appendChild(\n createLabel_default(sanitizeText(decodeEntities(labelText), config), node.labelStyle, false, isNode)\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(config.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select2(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize ? config.fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select3 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.circle(node, 14, point);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name((parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select3(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel_default(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select3(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name((parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel_default(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select3(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel_default(classTitleString, node.labelStyle, true, true));\n select3(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select3(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel_default(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel_default(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select3(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select3(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems[node.id] = elem;\n}, \"setNodeElem\");\nvar clear = /* @__PURE__ */ __name(() => {\n nodeElems = {};\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n createLabel_default,\n intersect_rect_default,\n updateNodeBounds,\n insertNode,\n setNodeElem,\n clear,\n positionNode\n};\n"],"names":["applyStyle","dom","styleFn","attr","addHtmlLabel","node","fo","document","createElementNS","div","append","label","labelClass","isNode","span","html","labelStyle","style","createLabel_default","_vertexText","isTitle","vertexText","flowchart","htmlLabels","replace","debug","svgLabel","setAttribute","rows","split","Array","isArray","row","tspan","setAttributeNS","textContent","trim","appendChild","labelHelper","async","parent","_classes","config","classes","useHtmlLabels","shapeSvg","insert","domId","id","labelText","textNode","text","labelType","width","wrappingWidth","bbox","getBBox","halfPadding","padding","children","dv","images","getElementsByTagName","noImgText","Promise","all","map","img","res","setupImage","display","flexDirection","bodyFontSize","fontSize","window","getComputedStyle","body","enlargingFactor","parseInt","minWidth","maxWidth","setTimeout","complete","addEventListener","getBoundingClientRect","height","centerLabel","updateNodeBounds","element","insertPolygonShape","w","h","points","d","x","y","join","expandAndDeduplicateDirections","directions","uniqueDirections","Set","direction","add","getArrowPoints","duplicatedDirections","midpoint","has","intersectNode","point","intersect","intersect_node_default","intersectEllipse","rx","ry","cx","cy","px","py","det","Math","sqrt","dx","abs","dy","intersect_ellipse_default","intersectCircle","intersect_circle_default","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","intersect_line_default","intersect_polygon_default","intersectPolygon","polyPoints","x1","y1","intersections","minX","Number","POSITIVE_INFINITY","minY","forEach","entry","min","left","top","i","length","push","sort","p","q","pdx","pdy","distp","qdx","qdy","distq","intersect_rect_default","sx","sy","intersect_default","circle","ellipse","polygon","rect","note_default","info","rect2","formatClass","str","getClassesFromNode","otherClasses","class","question","s","questionElem","warn","choice","hexagon","m","hex","block_arrow","blockArrow","rect_left_inv_arrow","lean_right","el","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","pos","totalWidth","positioned","totalHeight","props","propKeys","Object","keys","borders","applyNodePropertyBorders","delete","propKey","composite","labelRect","trace","strokeDashArray","addBorder","skipBorder","includes","rectWithTitle","innerLine","text2","flat","title","textRows","slice","titleBox","descr","stadium","circle2","doublecircle","circleGroup","outerCircle","innerCircle","gap","subroutine","start","forkJoin","dir","shapes","rhombus","end","note","fork","class_box","topLine","bottomLine","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","type","classTitleLabel","classTitleBBox","classAttributes","members","member","parsedInfo","getDisplayDetails","parsedText","displayText","lbl","cssStyle","classMethods","methods","diffX2","diffX","lineHeight","memberBBox","nodeElems","insertNode","elem","newEl","link","target","securityLevel","linkTarget","tooltip","haveCallback","setNodeElem","clear","positionNode","diff","clusterNode"],"sourceRoot":""}