@usepagelet/runtime 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/v1/capabilities.md +59 -0
- package/dist/v1/chunks/architecture-7EHR7CIX-CDRXMAVQ.js +2 -0
- package/dist/v1/chunks/architecture-7EHR7CIX-CDRXMAVQ.js.map +7 -0
- package/dist/v1/chunks/architectureDiagram-3BPJPVTR-EYIVUOEK.js +37 -0
- package/dist/v1/chunks/architectureDiagram-3BPJPVTR-EYIVUOEK.js.map +7 -0
- package/dist/v1/chunks/blockDiagram-GPEHLZMM-P7MBAWVH.js +133 -0
- package/dist/v1/chunks/blockDiagram-GPEHLZMM-P7MBAWVH.js.map +7 -0
- package/dist/v1/chunks/c4Diagram-AAUBKEIU-2XSL5LGB.js +11 -0
- package/dist/v1/chunks/c4Diagram-AAUBKEIU-2XSL5LGB.js.map +7 -0
- package/dist/v1/chunks/chunk-2STBDRRH.js +2 -0
- package/dist/v1/chunks/chunk-2STBDRRH.js.map +7 -0
- package/dist/v1/chunks/chunk-6AA7JQNC.js +71 -0
- package/dist/v1/chunks/chunk-6AA7JQNC.js.map +7 -0
- package/dist/v1/chunks/chunk-72WSJX2P.js +2 -0
- package/dist/v1/chunks/chunk-72WSJX2P.js.map +7 -0
- package/dist/v1/chunks/chunk-AUV7QZZ7.js +2 -0
- package/dist/v1/chunks/chunk-AUV7QZZ7.js.map +7 -0
- package/dist/v1/chunks/chunk-AZFF2WJO.js +2 -0
- package/dist/v1/chunks/chunk-AZFF2WJO.js.map +7 -0
- package/dist/v1/chunks/chunk-C2IUOGBD.js +2 -0
- package/dist/v1/chunks/chunk-C2IUOGBD.js.map +7 -0
- package/dist/v1/chunks/chunk-DKQVSAO3.js +2 -0
- package/dist/v1/chunks/chunk-DKQVSAO3.js.map +7 -0
- package/dist/v1/chunks/chunk-DS52DG6H.js +2 -0
- package/dist/v1/chunks/chunk-DS52DG6H.js.map +7 -0
- package/dist/v1/chunks/chunk-DXEOG5W4.js +2 -0
- package/dist/v1/chunks/chunk-DXEOG5W4.js.map +7 -0
- package/dist/v1/chunks/chunk-EHSK6IMI.js +3 -0
- package/dist/v1/chunks/chunk-EHSK6IMI.js.map +7 -0
- package/dist/v1/chunks/chunk-FWZR474D.js +2 -0
- package/dist/v1/chunks/chunk-FWZR474D.js.map +7 -0
- package/dist/v1/chunks/chunk-FYLAOHYS.js +2 -0
- package/dist/v1/chunks/chunk-FYLAOHYS.js.map +7 -0
- package/dist/v1/chunks/chunk-G6W4FKMG.js +2 -0
- package/dist/v1/chunks/chunk-G6W4FKMG.js.map +7 -0
- package/dist/v1/chunks/chunk-HLP6UJDY.js +2 -0
- package/dist/v1/chunks/chunk-HLP6UJDY.js.map +7 -0
- package/dist/v1/chunks/chunk-IGLPGT7W.js +160 -0
- package/dist/v1/chunks/chunk-IGLPGT7W.js.map +7 -0
- package/dist/v1/chunks/chunk-IQVRW6XA.js +322 -0
- package/dist/v1/chunks/chunk-IQVRW6XA.js.map +7 -0
- package/dist/v1/chunks/chunk-IY5OUPDU.js +5 -0
- package/dist/v1/chunks/chunk-IY5OUPDU.js.map +7 -0
- package/dist/v1/chunks/chunk-JOJIMF7A.js +2 -0
- package/dist/v1/chunks/chunk-JOJIMF7A.js.map +7 -0
- package/dist/v1/chunks/chunk-NWD66TP4.js +2 -0
- package/dist/v1/chunks/chunk-NWD66TP4.js.map +7 -0
- package/dist/v1/chunks/chunk-PLQZIFSO.js +2 -0
- package/dist/v1/chunks/chunk-PLQZIFSO.js.map +7 -0
- package/dist/v1/chunks/chunk-PVPXGQIV.js +2 -0
- package/dist/v1/chunks/chunk-PVPXGQIV.js.map +7 -0
- package/dist/v1/chunks/chunk-QDJGX3SU.js +16 -0
- package/dist/v1/chunks/chunk-QDJGX3SU.js.map +7 -0
- package/dist/v1/chunks/chunk-QSGUWHXF.js +2 -0
- package/dist/v1/chunks/chunk-QSGUWHXF.js.map +7 -0
- package/dist/v1/chunks/chunk-RCIRWMC7.js +2 -0
- package/dist/v1/chunks/chunk-RCIRWMC7.js.map +7 -0
- package/dist/v1/chunks/chunk-S4ACHXBI.js +2 -0
- package/dist/v1/chunks/chunk-S4ACHXBI.js.map +7 -0
- package/dist/v1/chunks/chunk-SA4K3XYV.js +2 -0
- package/dist/v1/chunks/chunk-SA4K3XYV.js.map +7 -0
- package/dist/v1/chunks/chunk-SAENYLYK.js +232 -0
- package/dist/v1/chunks/chunk-SAENYLYK.js.map +7 -0
- package/dist/v1/chunks/chunk-SN6BTAM3.js +4 -0
- package/dist/v1/chunks/chunk-SN6BTAM3.js.map +7 -0
- package/dist/v1/chunks/chunk-SWJRRCAF.js +2 -0
- package/dist/v1/chunks/chunk-SWJRRCAF.js.map +7 -0
- package/dist/v1/chunks/chunk-TGL5CWDU.js +63 -0
- package/dist/v1/chunks/chunk-TGL5CWDU.js.map +7 -0
- package/dist/v1/chunks/chunk-TVSQ2OZ6.js +11 -0
- package/dist/v1/chunks/chunk-TVSQ2OZ6.js.map +7 -0
- package/dist/v1/chunks/chunk-URGT6V7R.js +2 -0
- package/dist/v1/chunks/chunk-URGT6V7R.js.map +7 -0
- package/dist/v1/chunks/chunk-WBEUYPCI.js +123 -0
- package/dist/v1/chunks/chunk-WBEUYPCI.js.map +7 -0
- package/dist/v1/chunks/chunk-WEZ3ELJO.js +2 -0
- package/dist/v1/chunks/chunk-WEZ3ELJO.js.map +7 -0
- package/dist/v1/chunks/chunk-WIIGSS4X.js +2 -0
- package/dist/v1/chunks/chunk-WIIGSS4X.js.map +7 -0
- package/dist/v1/chunks/chunk-XUJKMBZ5.js +2 -0
- package/dist/v1/chunks/chunk-XUJKMBZ5.js.map +7 -0
- package/dist/v1/chunks/chunk-YC75LZ32.js +33 -0
- package/dist/v1/chunks/chunk-YC75LZ32.js.map +7 -0
- package/dist/v1/chunks/chunk-YK2CHHQT.js +207 -0
- package/dist/v1/chunks/chunk-YK2CHHQT.js.map +7 -0
- package/dist/v1/chunks/chunk-YYWGGXI6.js +2 -0
- package/dist/v1/chunks/chunk-YYWGGXI6.js.map +7 -0
- package/dist/v1/chunks/chunk-ZY7EQCMR.js +4 -0
- package/dist/v1/chunks/chunk-ZY7EQCMR.js.map +7 -0
- package/dist/v1/chunks/classDiagram-4FO5ZUOK-4VU3VATX.js +2 -0
- package/dist/v1/chunks/classDiagram-4FO5ZUOK-4VU3VATX.js.map +7 -0
- package/dist/v1/chunks/classDiagram-v2-Q7XG4LA2-QIBN3KO6.js +2 -0
- package/dist/v1/chunks/classDiagram-v2-Q7XG4LA2-QIBN3KO6.js.map +7 -0
- package/dist/v1/chunks/cose-bilkent-S5V4N54A-MHLDSCZY.js +2 -0
- package/dist/v1/chunks/cose-bilkent-S5V4N54A-MHLDSCZY.js.map +7 -0
- package/dist/v1/chunks/dagre-BM42HDAG-U3ECKIMS.js +5 -0
- package/dist/v1/chunks/dagre-BM42HDAG-U3ECKIMS.js.map +7 -0
- package/dist/v1/chunks/diagram-2AECGRRQ-BNRGNWOM.js +44 -0
- package/dist/v1/chunks/diagram-2AECGRRQ-BNRGNWOM.js.map +7 -0
- package/dist/v1/chunks/diagram-5GNKFQAL-CPWZIJ4M.js +11 -0
- package/dist/v1/chunks/diagram-5GNKFQAL-CPWZIJ4M.js.map +7 -0
- package/dist/v1/chunks/diagram-KO2AKTUF-7CDCIBL3.js +4 -0
- package/dist/v1/chunks/diagram-KO2AKTUF-7CDCIBL3.js.map +7 -0
- package/dist/v1/chunks/diagram-LMA3HP47-LPHFNXWX.js +25 -0
- package/dist/v1/chunks/diagram-LMA3HP47-LPHFNXWX.js.map +7 -0
- package/dist/v1/chunks/diagram-OG6HWLK6-FWJ2MCGI.js +25 -0
- package/dist/v1/chunks/diagram-OG6HWLK6-FWJ2MCGI.js.map +7 -0
- package/dist/v1/chunks/erDiagram-TEJ5UH35-OX62GPYU.js +86 -0
- package/dist/v1/chunks/erDiagram-TEJ5UH35-OX62GPYU.js.map +7 -0
- package/dist/v1/chunks/eventmodeling-FCH6USID-NRRIBZEB.js +2 -0
- package/dist/v1/chunks/eventmodeling-FCH6USID-NRRIBZEB.js.map +7 -0
- package/dist/v1/chunks/flowDiagram-I6XJVG4X-I4ULL6MS.js +163 -0
- package/dist/v1/chunks/flowDiagram-I6XJVG4X-I4ULL6MS.js.map +7 -0
- package/dist/v1/chunks/ganttDiagram-6RSMTGT7-TIDOVKXT.js +293 -0
- package/dist/v1/chunks/ganttDiagram-6RSMTGT7-TIDOVKXT.js.map +7 -0
- package/dist/v1/chunks/gitGraph-WXDBUCRP-4LEEA2GI.js +2 -0
- package/dist/v1/chunks/gitGraph-WXDBUCRP-4LEEA2GI.js.map +7 -0
- package/dist/v1/chunks/gitGraphDiagram-PVQCEYII-BPEBW2KG.js +107 -0
- package/dist/v1/chunks/gitGraphDiagram-PVQCEYII-BPEBW2KG.js.map +7 -0
- package/dist/v1/chunks/info-J43DQDTF-EI2RS372.js +2 -0
- package/dist/v1/chunks/info-J43DQDTF-EI2RS372.js.map +7 -0
- package/dist/v1/chunks/infoDiagram-5YYISTIA-5GFVQYI7.js +3 -0
- package/dist/v1/chunks/infoDiagram-5YYISTIA-5GFVQYI7.js.map +7 -0
- package/dist/v1/chunks/ishikawaDiagram-YF4QCWOH-AZ7PAHIN.js +71 -0
- package/dist/v1/chunks/ishikawaDiagram-YF4QCWOH-AZ7PAHIN.js.map +7 -0
- package/dist/v1/chunks/journeyDiagram-JHISSGLW-B4ZN6VTS.js +140 -0
- package/dist/v1/chunks/journeyDiagram-JHISSGLW-B4ZN6VTS.js.map +7 -0
- package/dist/v1/chunks/kanban-definition-UN3LZRKU-5THRXHJP.js +90 -0
- package/dist/v1/chunks/kanban-definition-UN3LZRKU-5THRXHJP.js.map +7 -0
- package/dist/v1/chunks/katex-CLI7E3QC.js +258 -0
- package/dist/v1/chunks/katex-CLI7E3QC.js.map +7 -0
- package/dist/v1/chunks/mindmap-definition-RKZ34NQL-E57QDEMN.js +97 -0
- package/dist/v1/chunks/mindmap-definition-RKZ34NQL-E57QDEMN.js.map +7 -0
- package/dist/v1/chunks/packet-YPE3B663-PKWGZRBL.js +2 -0
- package/dist/v1/chunks/packet-YPE3B663-PKWGZRBL.js.map +7 -0
- package/dist/v1/chunks/pie-LRSECV5Y-QSTOXR4H.js +2 -0
- package/dist/v1/chunks/pie-LRSECV5Y-QSTOXR4H.js.map +7 -0
- package/dist/v1/chunks/pieDiagram-4H26LBE5-CZULUIHM.js +31 -0
- package/dist/v1/chunks/pieDiagram-4H26LBE5-CZULUIHM.js.map +7 -0
- package/dist/v1/chunks/quadrantDiagram-W4KKPZXB-WRXQ2LCP.js +8 -0
- package/dist/v1/chunks/quadrantDiagram-W4KKPZXB-WRXQ2LCP.js.map +7 -0
- package/dist/v1/chunks/radar-GUYGQ44K-UJHF7VJA.js +2 -0
- package/dist/v1/chunks/radar-GUYGQ44K-UJHF7VJA.js.map +7 -0
- package/dist/v1/chunks/requirementDiagram-4Y6WPE33-LUKBHY3G.js +85 -0
- package/dist/v1/chunks/requirementDiagram-4Y6WPE33-LUKBHY3G.js.map +7 -0
- package/dist/v1/chunks/sankeyDiagram-5OEKKPKP-IHGIKQ7Q.js +41 -0
- package/dist/v1/chunks/sankeyDiagram-5OEKKPKP-IHGIKQ7Q.js.map +7 -0
- package/dist/v1/chunks/sequenceDiagram-3UESZ5HK-AZIJM7V2.js +163 -0
- package/dist/v1/chunks/sequenceDiagram-3UESZ5HK-AZIJM7V2.js.map +7 -0
- package/dist/v1/chunks/stateDiagram-AJRCARHV-7TL53ICK.js +2 -0
- package/dist/v1/chunks/stateDiagram-AJRCARHV-7TL53ICK.js.map +7 -0
- package/dist/v1/chunks/stateDiagram-v2-BHNVJYJU-TJ245A24.js +2 -0
- package/dist/v1/chunks/stateDiagram-v2-BHNVJYJU-TJ245A24.js.map +7 -0
- package/dist/v1/chunks/timeline-definition-PNZ67QCA-C5FF5CVI.js +121 -0
- package/dist/v1/chunks/timeline-definition-PNZ67QCA-C5FF5CVI.js.map +7 -0
- package/dist/v1/chunks/treeView-BLDUP644-2MCPJRE2.js +2 -0
- package/dist/v1/chunks/treeView-BLDUP644-2MCPJRE2.js.map +7 -0
- package/dist/v1/chunks/treemap-LRROVOQU-WSVRI32O.js +2 -0
- package/dist/v1/chunks/treemap-LRROVOQU-WSVRI32O.js.map +7 -0
- package/dist/v1/chunks/vennDiagram-CIIHVFJN-NQU7FBQX.js +35 -0
- package/dist/v1/chunks/vennDiagram-CIIHVFJN-NQU7FBQX.js.map +7 -0
- package/dist/v1/chunks/wardley-L42UT6IY-GONRRIFG.js +2 -0
- package/dist/v1/chunks/wardley-L42UT6IY-GONRRIFG.js.map +7 -0
- package/dist/v1/chunks/wardleyDiagram-YWT4CUSO-KNM7EB5A.js +79 -0
- package/dist/v1/chunks/wardleyDiagram-YWT4CUSO-KNM7EB5A.js.map +7 -0
- package/dist/v1/chunks/xychartDiagram-2RQKCTM6-CMGOBHPC.js +8 -0
- package/dist/v1/chunks/xychartDiagram-2RQKCTM6-CMGOBHPC.js.map +7 -0
- package/dist/v1/modules/charts.js +4 -0
- package/dist/v1/modules/charts.js.map +7 -0
- package/dist/v1/modules/code.js +26 -0
- package/dist/v1/modules/code.js.map +7 -0
- package/dist/v1/modules/markdown.js +65 -0
- package/dist/v1/modules/markdown.js.map +7 -0
- package/dist/v1/modules/math.js +258 -0
- package/dist/v1/modules/math.js.map +7 -0
- package/dist/v1/modules/mermaid.js +9 -0
- package/dist/v1/modules/mermaid.js.map +7 -0
- package/dist/v1/modules/png.js +3 -0
- package/dist/v1/modules/png.js.map +7 -0
- package/dist/v1/pagelet.js +128 -0
- package/dist/v1/pagelet.js.map +7 -0
- package/package.json +40 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../node_modules/.pnpm/mermaid@11.15.0/node_modules/mermaid/dist/chunks/mermaid.core/chunk-3OPIFGDE.mjs"],
|
|
4
|
+
"sourcesContent": ["import {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-L5ZTLDWV.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-NZK2D7GU.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-O5CBEL6O.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr\n} from \"./chunk-5ZQYHXKU.mjs\";\nimport {\n evaluate,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n hasKatex,\n parseGenericTypes,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-CSCIHK7Q.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n if (!_classes) {\n cssClasses = \"node default\";\n } else {\n cssClasses = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n let label;\n if (node.label === void 0) {\n label = \"\";\n } else {\n label = typeof node.label === \"string\" ? node.label : node.label[0];\n }\n const addBackground = !!node.icon || !!node.img;\n const isMarkdown = node.labelType === \"markdown\";\n const text2 = await createText(\n labelEl,\n sanitizeText(decodeEntities(label), getConfig2()),\n {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n classes: isMarkdown ? \"markdown-node-label\" : \"\",\n style: node.labelStyle,\n addSvgBackground: addBackground,\n markdown: isMarkdown\n },\n getConfig2()\n );\n let bbox = text2.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n if (useHtmlLabels) {\n const div = text2.children[0];\n const dv = select(text2);\n await configureLabelImages(div, label);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels ?? getEffectiveHtmlLabels(getConfig2());\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\nfunction mergePaths(roughElement) {\n const paths = Array.from(roughElement.childNodes).filter(\n (node) => node.tagName === \"path\"\n );\n const mergedPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n const combinedPathData = paths.map((path) => path.getAttribute(\"d\")).filter((d) => d !== null).join(\" \");\n mergedPath.setAttribute(\"d\", combinedPathData);\n const fillPath = paths.find((path) => path.getAttribute(\"fill\") !== \"none\");\n const strokePath = paths.find((path) => path.getAttribute(\"stroke\") !== \"none\");\n const getAttr = /* @__PURE__ */ __name((element, attr) => {\n return element?.getAttribute(attr) ?? void 0;\n }, \"getAttr\");\n if (fillPath) {\n const fillAttrs = {\n fill: getAttr(fillPath, \"fill\"),\n \"fill-opacity\": getAttr(fillPath, \"fill-opacity\") ?? \"1\"\n };\n Object.entries(fillAttrs).forEach(([attr, value]) => {\n if (value) {\n mergedPath.setAttribute(attr, value);\n }\n });\n }\n if (strokePath) {\n const strokeAttrs = {\n stroke: getAttr(strokePath, \"stroke\"),\n \"stroke-width\": getAttr(strokePath, \"stroke-width\") ?? \"1\",\n \"stroke-opacity\": getAttr(strokePath, \"stroke-opacity\") ?? \"1\"\n };\n Object.entries(strokeAttrs).forEach(([attr, value]) => {\n if (value) {\n mergedPath.setAttribute(attr, value);\n }\n });\n }\n const group = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n group.appendChild(mergedPath);\n return group;\n}\n__name(mergePaths, \"mergePaths\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select2 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/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/rendering-util/rendering-elements/createLabel.js\nvar createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY\n },\n config\n );\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.domId).attr(\"data-look\", node.look);\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n let text2;\n if (node.labelType === \"markdown\") {\n text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n } else {\n text2 = await createLabel_default(labelEl, node.label, node.labelStyle || \"\", false, true);\n }\n let bbox = text2.getBBox();\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text2.children[0];\n const dv = select2(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.domId);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.domId).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = await createLabel_default(label, node.label, node.labelStyle, void 0, true);\n let bbox = text2.getBBox();\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text2.children[0];\n const dv = select2(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (getEffectiveHtmlLabels(siteConfig) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.domId).attr(\"data-look\", node.look);\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text2.children[0];\n const dv = select2(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.domId).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n let outerRectClass = \"outer\";\n if (node.look === \"neo\") {\n outerRectClass = \"divider\";\n } else {\n outerRectClass = \"divider\";\n }\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/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/rendering-util/rendering-elements/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/rendering-util/rendering-elements/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/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n {\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n const epsilon = 1e-6;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return;\n }\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n const offset = Math.abs(denom / 2);\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n }\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/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let 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 let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let 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 let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let 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\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/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/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nfunction calculateArcSagitta(chord, radiusX, radiusY) {\n const [semiMajorAxis, semiMinorAxis] = [radiusX, radiusY].sort((a, b) => b - a);\n return semiMinorAxis * (1 - Math.sqrt(1 - (chord / semiMajorAxis / 2) ** 2));\n}\n__name(calculateArcSagitta, \"calculateArcSagitta\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const calcTotalHeight = /* @__PURE__ */ __name((labelHeight) => labelHeight + labelPaddingY, \"calcTotalHeight\");\n const calcEllipseRadius = /* @__PURE__ */ __name((totalHeight2) => {\n const ry2 = totalHeight2 / 2;\n const rx2 = ry2 / (2.5 + totalHeight2 / 50);\n return [rx2, ry2];\n }, \"calcEllipseRadius\");\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalHeight = calcTotalHeight(node?.height ? node?.height : bbox.height);\n const [rx, ry] = calcEllipseRadius(totalHeight);\n const sagitta = calculateArcSagitta(totalHeight, rx, ry);\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + sagitta;\n const w = totalWidth - sagitta;\n const h = totalHeight;\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\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/rendering-util/rendering-elements/shapes/card.ts\nvar NOTCH_SIZE = 12;\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 28 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 24 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ?? bbox.width) + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX + NOTCH_SIZE);\n const h = (node?.height ?? bbox.height) + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + NOTCH_SIZE, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + NOTCH_SIZE },\n { x: left + NOTCH_SIZE, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\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 rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPadding = 16;\n const padding = options?.padding ?? halfPadding;\n const radius = node.look === \"neo\" ? bbox.width / 2 + labelPadding * 2 : bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options2);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function(bounds, point) {\n const radius2 = bounds.width / 2;\n return intersect_default.circle(bounds, radius2, point);\n };\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n crossedCircle2.attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const paddingX = node.look === \"neo\" ? 18 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const w = bbox.width + paddingX;\n const h = bbox.height + paddingY;\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node.look === \"neo\" ? 18 : node.padding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const w = bbox.width + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const h = bbox.height + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node.look === \"neo\" ? 18 : node.padding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const w = bbox.width + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const h = bbox.height + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const minWidth = 20, minHeight = 5;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, (bbox.width + labelPaddingX * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + labelPaddingY * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nvar MIN_HEIGHT = 8;\nvar MIN_WIDTH = 8;\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 24 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 24 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width ?? 0;\n node.width = (node.width ?? 0) - labelPaddingY;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n const rx2 = originalWidth / 2;\n const ry2 = rx2 / (2.5 + originalWidth / 50);\n node.height = (node.height ?? 0) - labelPaddingX - ry2 * 3;\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node.width ? node.width : bbox.width) + labelPaddingY;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = (node.height ? node.height : bbox.height) + labelPaddingX + ry;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container outer-path\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 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) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough13 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n let rect2;\n let { rx, ry } = node;\n const { cssStyles } = node;\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n if (node.look === \"handDrawn\") {\n const rc = rough13.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n }\n updateNodeBounds(node, rect2);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/datastore.ts\nimport rough14 from \"roughjs\";\nasync function datastore(parent, node) {\n const { cssClasses, labelPaddingX, labelPaddingY, padding, width, height } = node;\n const rectOptions = {\n rx: 0,\n ry: 0,\n classes: cssClasses ?? \"\",\n labelPaddingX: labelPaddingX ?? (padding ?? 0) * 2,\n labelPaddingY: labelPaddingY ?? padding ?? 0\n };\n const rect2 = await drawRect(parent, node, rectOptions);\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(rect2);\n const nodeOverrideOptions = userNodeOverrides(node, {});\n const borderSelection = rect2.select(\".basic.label-container > path:nth-child(2)\");\n const borderPath = borderSelection.node();\n if (!borderPath) {\n return rect2;\n }\n let bbox = null;\n if (borderPath instanceof SVGGraphicsElement) {\n bbox = borderPath.getBBox();\n } else {\n return rect2;\n }\n rect2.insert(\n () => rc.line(bbox.x, bbox.y, bbox.x + bbox.width, bbox.y, nodeOverrideOptions),\n \".basic.label-container g.label\"\n );\n rect2.insert(\n () => rc.line(\n bbox.x,\n bbox.y + bbox.height,\n bbox.x + bbox.width,\n bbox.y + bbox.height,\n nodeOverrideOptions\n ),\n \".basic.label-container g.label\"\n );\n borderSelection.remove();\n return rect2;\n }\n const selection = rect2.select(\".basic.label-container\");\n const datastoreWidth = (Number(selection.attr(\"width\")) || width) ?? 0;\n const datastoreHeight = (Number(selection.attr(\"height\")) || height) ?? 0;\n if (datastoreWidth > 0 && datastoreHeight > 0) {\n selection.attr(\"stroke-dasharray\", `${datastoreWidth} ${datastoreHeight}`);\n }\n return rect2;\n}\n__name(datastore, \"datastore\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough15 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + paddingX;\n const h = bbox.height + paddingY;\n const rectOffset2 = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset2 / 2;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset2 },\n { x: -x, y: y + rectOffset2 },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset2 }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough16 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n const gap = node.look === \"neo\" ? 12 : 5;\n node.labelStyle = labelStyles;\n const padding = node.padding ?? 0;\n const labelPadding = node.look === \"neo\" ? 16 : padding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const outerRadius = (node?.width ? node?.width / 2 : bbox.width / 2) + (labelPadding ?? 0);\n const innerRadius = outerRadius - gap;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough16.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough17 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough17.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough18 from \"roughjs\";\nvar MIN_HEIGHT2 = 10;\nvar MIN_WIDTH2 = 10;\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n if (node.width || node.height) {\n node.height = node?.height ?? 0;\n if (node.height < MIN_HEIGHT2) {\n node.height = MIN_HEIGHT2;\n }\n node.width = (node?.width ?? 0) - labelPaddingX - labelPaddingX / 2;\n if (node.width < MIN_WIDTH2) {\n node.width = MIN_WIDTH2;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0);\n const h = node?.height ? node?.height : w + bbox.height;\n const tw = h;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`).attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough19 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough20 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 15, minHeight = 10;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n if (node.width || node.height) {\n node.height = (node?.height ?? 0) - paddingY * 2;\n if (node.height < minHeight) {\n node.height = minHeight;\n }\n node.width = (node?.width ?? 0) - paddingX * 2;\n if (node.width < minWidth) {\n node.width = minWidth;\n }\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : Math.max(minWidth, bbox.width)) + paddingX * 2;\n const h = (node?.height ? node?.height : Math.max(minHeight, bbox.height)) + paddingY * 2;\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough21 from \"roughjs\";\nvar createHexagonPathD = /* @__PURE__ */ __name((x, y, width, height, m) => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createHexagonPathD\");\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n const f = node.look === \"neo\" ? 3.5 : 4;\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const wa = 70;\n const ha = 32;\n const labelPaddingX = node.look === \"neo\" ? wa : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? ha : nodePadding;\n if (node.width || node.height) {\n const originalHeight = node.height ?? 0;\n const m2 = originalHeight / f;\n node.width = (node?.width ?? 0) - 2 * m2 - labelPaddingY;\n node.height = (node.height ?? 0) - labelPaddingX;\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingX;\n const m = h / f;\n const w = (node?.width ? node?.width : bbox.width) + 2 * m + labelPaddingY;\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 let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough22 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough22.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough23 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough23.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough24 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n const topLabel = node.pos === \"t\";\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const rc = rough24.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconElem = shapeSvg.append(\"g\");\n if (node.icon) {\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n }\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough25 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough25.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough26 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough26.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough27 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n const img = new Image();\n img.src = node?.img ?? \"\";\n await img.decode();\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n const imageRawWidth = Math.max(\n node.label ? defaultWidth ?? 0 : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n const topLabel = node.pos === \"t\";\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough27.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"none\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.img) {\n const image = shapeSvg.append(\"image\");\n image.attr(\"href\", node.img);\n image.attr(\"width\", imageWidth);\n image.attr(\"height\", imageHeight);\n image.attr(\"preserveAspectRatio\", \"none\");\n image.attr(\n \"transform\",\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough28 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (labelPaddingX ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (labelPaddingY ?? 0) * 2, node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: -3 * h / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough28.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough29 from \"roughjs\";\nasync function lean_left(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: 0, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough29.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough30 from \"roughjs\";\nasync function lean_right(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough30.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough31 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 }\n ];\n const rc = rough31.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n lightningBolt2.attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n updateNodeBounds(node, lightningBolt2);\n node.intersect = function(point) {\n log.info(\"lightningBolt intersect\", node, point);\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough32 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nvar MIN_HEIGHT3 = 10;\nvar MIN_WIDTH3 = 10;\nasync function linedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 24 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width ?? 0;\n node.width = (node.width ?? 0) - labelPaddingX;\n if (node.width < MIN_WIDTH3) {\n node.width = MIN_WIDTH3;\n }\n const rx2 = originalWidth / 2;\n const ry2 = rx2 / (2.5 + originalWidth / 50);\n node.height = (node.height ?? 0) - labelPaddingY - ry2 * 3;\n if (node.height < MIN_HEIGHT3) {\n node.height = MIN_HEIGHT3;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = (node?.height ? node?.height : bbox.height) + ry + labelPaddingY * 2;\n const outerOffset = h * 0.1;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough32.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n innerLineEl.attr(\"class\", \"line\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container outer-path\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 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) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough33 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width;\n node.width = (originalWidth ?? 0) * 10 / 11 - labelPaddingX * 2;\n if (node.width < 10) {\n node.width = 10;\n }\n node.height = (node?.height ?? 0) - labelPaddingY * 2;\n if (node.height < 10) {\n node.height = 10;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0) * 2;\n const h = (node?.height ? node?.height : bbox.height) + (labelPaddingY ?? 0) * 2;\n const waveAmplitude = node.look === \"neo\" ? h / 4 : h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough33.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: finalH / 2 * 1.1 },\n { x: -w / 2, y: -finalH / 2 }\n ];\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough34 from \"roughjs\";\nasync function multiRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const rectOffset2 = node.look === \"neo\" ? 10 : 5;\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - labelPaddingX * 2 - 2 * rectOffset2, 10);\n node.height = Math.max((node?.height ?? 0) - labelPaddingY * 2 - 2 * rectOffset2, 10);\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + 2 * rectOffset2;\n const totalHeight = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2 + 2 * rectOffset2;\n const w = totalWidth - 2 * rectOffset2;\n const h = totalHeight - 2 * rectOffset2;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough34.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset2, y: y + rectOffset2 },\n { x: x - rectOffset2, y: y + h + rectOffset2 },\n { x: x + w - rectOffset2, y: y + h + rectOffset2 },\n { x: x + w - rectOffset2, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset2 },\n { x: x + w + rectOffset2, y: y + h - rectOffset2 },\n { x: x + w + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y },\n { x, y },\n { x, y: y + rectOffset2 }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n let outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n let innerNode = rc.path(innerPath, options);\n if (node.look !== \"handDrawn\") {\n outerNode = mergePaths(outerNode);\n innerNode = mergePaths(innerNode);\n }\n const multiRect2 = shapeSvg.insert(\"g\", \":first-child\");\n multiRect2.insert(() => outerNode);\n multiRect2.insert(() => innerNode);\n multiRect2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, multiRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough35 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n let adjustFinalHeight = true;\n if (node.width || node.height) {\n adjustFinalHeight = false;\n node.width = (node?.width ?? 0) - labelPaddingX * 2;\n node.height = (node?.height ?? 0) - labelPaddingY * 3;\n }\n const w = Math.max(bbox.width, node?.width ?? 0) + labelPaddingX * 2;\n const h = Math.max(bbox.height, node?.height ?? 0) + labelPaddingY * 3;\n const waveAmplitude = node.look === \"neo\" ? h / 4 : h / 8;\n const finalH = h + (adjustFinalHeight ? waveAmplitude / 2 : -waveAmplitude / 2);\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset2 = 10;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset2,\n y + finalH + rectOffset2,\n x + w - rectOffset2,\n y + finalH + rectOffset2,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset2, y: y + rectOffset2 },\n { x: x - rectOffset2, y: y + finalH + rectOffset2 },\n ...wavePoints,\n { x: x + w - rectOffset2, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset2 },\n { x: x + w + rectOffset2, y: lastWavePoint.y - 2 * rectOffset2 },\n { x: x + w + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y: y - rectOffset2 },\n { x: x + rectOffset2, y },\n { x, y },\n { x, y: y + rectOffset2 }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: y + rectOffset2 },\n { x: x + w - rectOffset2, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y: lastWavePoint.y - rectOffset2 },\n { x: x + w, y },\n { x, y }\n ];\n const rc = rough35.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n shape.insert(() => innerNode);\n shape.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset2 - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, shape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough36 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough36.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\");\n label.attr(\"class\", \"label noteLabel\");\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough37 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createDecisionBoxPathD\");\nasync function question(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const s = w + h;\n const adjustment = 0.5;\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 let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough37.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.calcIntersect = function(bounds, point) {\n const s2 = bounds.width;\n const points2 = [\n { x: s2 / 2, y: 0 },\n { x: s2, y: -s2 / 2 },\n { x: s2 / 2, y: -s2 },\n { x: 0, y: -s2 / 2 }\n ];\n const res = intersect_default.polygon(bounds, points2, point);\n return { x: res.x - 0.5, y: res.y - 0.5 };\n };\n node.intersect = function(point) {\n return this.calcIntersect(node, point);\n };\n return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough38 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 21 : nodePadding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding ?? 0;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ?? bbox.width) + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const h = (node?.height ?? bbox.height) + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n const points = [\n { x: x + notch, y },\n { x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y }\n ];\n const { cssStyles } = node;\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n label.attr(\n \"transform\",\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select3 } from \"d3\";\nimport rough39 from \"roughjs\";\nasync function rectWithTitle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.cssClasses;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const g = shapeSvg.insert(\"g\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n const description = node.description;\n const title = node.label;\n const text2 = await createLabel_default(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div2 = text2.children[0];\n const dv2 = select3(text2);\n bbox = div2.getBoundingClientRect();\n dv2.attr(\"width\", bbox.width);\n dv2.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", description);\n const textRows = description || [];\n const titleBox = text2.getBBox();\n const descr = await createLabel_default(\n label,\n Array.isArray(textRows) ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n );\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 const halfPadding = (node.padding || 0) / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text2).attr(\n \"transform\",\n \"translate( \" + (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 const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\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 }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nasync function roundedRect(parent, node, { config: { themeVariables } }) {\n const radius = themeVariables?.radius ?? 5;\n const options = {\n rx: radius,\n ry: radius,\n classes: \"\",\n labelPaddingX: (node?.padding ?? 0) * 1,\n labelPaddingY: (node?.padding ?? 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough40 from \"roughjs\";\nvar FRAME_WIDTH = 8;\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ?? bbox.width) + paddingX * 2 + (node.look === \"neo\" ? FRAME_WIDTH : FRAME_WIDTH * 2);\n const totalHeight = (node?.height ?? bbox.height) + paddingY * 2;\n const w = totalWidth - FRAME_WIDTH;\n const h = totalHeight;\n const x = FRAME_WIDTH - totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w, y },\n { x: x + w, y: y + h },\n { x: x - FRAME_WIDTH, y: y + h },\n { x: x - FRAME_WIDTH, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${FRAME_WIDTH / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough41 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - labelPaddingX * 2, 10);\n node.height = Math.max((node?.height ?? 0) / 1.5 - labelPaddingY * 2, 10);\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const totalHeight = ((node?.height ? node?.height : bbox.height) + labelPaddingY * 2) * 1.5;\n const w = totalWidth;\n const h = totalHeight / 1.5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding * 2;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? labelPaddingX,\n labelPaddingY\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough42 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 20 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.look === \"neo\" ? labelPaddingY * 2 : labelPaddingY);\n const w = bbox.width + h / 4 + (node.look === \"neo\" ? labelPaddingX * 2 : labelPaddingX);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: node.look === \"neo\" ? 3 : 5,\n ry: node.look === \"neo\" ? 3 : 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough43 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder, nodeShadow } = themeVariables;\n if (node.width || node.height) {\n if ((node.width ?? 0) < 14) {\n node.width = 14;\n }\n if ((node.height ?? 0) < 14) {\n node.height = 14;\n }\n }\n if (!node.width) {\n node.width = 14;\n }\n if (!node.height) {\n node.height = 14;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId ?? node.id);\n const rc = rough43.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, node.width, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const innerNodeRadius = (node.width ?? 0) * 5 / 14;\n const roughInnerNode = rc.circle(0, 0, innerNodeRadius, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (node.look !== \"handDrawn\") {\n circle2.attr(\"class\", \"outer-path\");\n }\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (node.width < 25 && nodeShadow && node.look !== \"handDrawn\") {\n const svgId = parent.node()?.ownerSVGElement?.id ?? \"\";\n const filterId = svgId ? `${svgId}-drop-shadow-small` : \"drop-shadow-small\";\n circle2.attr(\"style\", `filter:url(#${filterId})`);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, (node.width ?? 0) / 2, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough44 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor, nodeShadow } = themeVariables;\n if (node.width || node.height) {\n if ((node.width ?? 0) < 14) {\n node.width = 14;\n }\n if ((node.height ?? 0) < 14) {\n node.height = 14;\n }\n }\n if (!node.width) {\n node.width = 14;\n }\n if (!node.height) {\n node.height = 14;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, node.width, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", (node.width ?? 7) / 2).attr(\"width\", node.width ?? 14).attr(\"height\", node.height ?? 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", (node.width ?? 7) / 2).attr(\"width\", node.width ?? 14).attr(\"height\", node.height ?? 14);\n }\n if (node.width < 25 && nodeShadow && node.look !== \"handDrawn\") {\n const svgId = parent.node()?.ownerSVGElement?.id ?? \"\";\n const filterId = svgId ? `${svgId}-drop-shadow-small` : \"drop-shadow-small\";\n circle2.attr(\"style\", `filter:url(#${filterId})`);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, (node.width ?? 7) / 2, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough45 from \"roughjs\";\nvar FRAME_WIDTH2 = 8;\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node?.padding ?? 8;\n const labelPaddingX = node.look === \"neo\" ? 28 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ?? bbox.width) + 2 * FRAME_WIDTH2 + labelPaddingX;\n const totalHeight = (node?.height ?? bbox.height) + labelPaddingY;\n const w = totalWidth - 2 * FRAME_WIDTH2;\n const h = totalHeight;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\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 if (node.look === \"handDrawn\") {\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x, y, w + 16, h, options);\n const l1 = rc.line(x + FRAME_WIDTH2, y, x + FRAME_WIDTH2, y + h, options);\n const l2 = rc.line(x + FRAME_WIDTH2 + w, y, x + FRAME_WIDTH2 + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough46 from \"roughjs\";\nvar TAG_RATIO = 0.2;\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n if (node.width || node.height) {\n node.height = Math.max((node?.height ?? 0) - labelPaddingY * 2, 10);\n node.width = Math.max(\n (node?.width ?? 0) - labelPaddingX * 2 - TAG_RATIO * (node.height + labelPaddingY * 2),\n 10\n );\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalHeight = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const tagWidth = TAG_RATIO * totalHeight;\n const tagHeight = TAG_RATIO * totalHeight;\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + tagWidth;\n const w = totalWidth - tagWidth;\n const h = totalHeight;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough47 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough47.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.3 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.25,\n x + w - tagWidth,\n (y + h) * 1.3,\n -h * 0.02,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0), node?.width || 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0), node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough48 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nvar MIN_HEIGHT4 = 5;\nvar MIN_WIDTH4 = 10;\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPadding = node.look === \"neo\" ? 12 : nodePadding / 2;\n if (node.width || node.height) {\n const originalHeight = node.height ?? 0;\n node.height = (node.height ?? 0) - labelPadding;\n if (node.height < MIN_HEIGHT4) {\n node.height = MIN_HEIGHT4;\n }\n const ry2 = originalHeight / 2;\n const rx2 = ry2 / (2.5 + originalHeight / 50);\n node.width = (node.width ?? 0) - labelPadding - rx2 * 3;\n if (node.width < MIN_WIDTH4) {\n node.width = MIN_WIDTH4;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node.height ? node.height : bbox.height) + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = (node.width ? node.width : bbox.width) + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough49 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = node.look === \"neo\" ? nodePadding : nodePadding;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough50 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n const minWidth = 15, minHeight = 5;\n if (node.width || node.height) {\n node.height = (node.height ?? 0) - labelPaddingY * 2;\n if (node.height < minHeight) {\n node.height = minHeight;\n }\n node.width = (node.width ?? 0) - labelPaddingX * 2;\n if (node.width < minWidth) {\n node.width = minWidth;\n }\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough51 from \"roughjs\";\nvar MIN_HEIGHT5 = 10;\nvar MIN_WIDTH5 = 10;\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? nodePadding * 2 : nodePadding;\n if (node.width || node.height) {\n node.width = ((node?.width ?? 0) - labelPaddingX) / 2;\n if (node.width < MIN_WIDTH5) {\n node.width = MIN_WIDTH5;\n }\n node.height = node?.height ?? 0;\n if (node.height < MIN_HEIGHT5) {\n node.height = MIN_HEIGHT5;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX;\n const h = node?.height ? node?.height : w + bbox.height;\n const tw = h;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`).attr(\"class\", \"outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 12 : nodePadding;\n let adjustFinalHeight = true;\n if (node.width || node.height) {\n adjustFinalHeight = false;\n node.width = (node?.width ?? 0) - labelPaddingX * 2;\n if (node.width < 10) {\n node.width = 10;\n }\n node.height = (node?.height ?? 0) - labelPaddingY * 2;\n if (node.height < 10) {\n node.height = 10;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0) * 2;\n const h = (node?.height ? node?.height : bbox.height) + (labelPaddingY ?? 0) * 2;\n const waveAmplitude = node.look === \"neo\" ? h / 4 : h / 8;\n const finalH = h + (adjustFinalHeight ? waveAmplitude : -waveAmplitude);\n const { cssStyles } = node;\n const minWidth = 14;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough53 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === \"neo\" ? 16 : nodePadding;\n const labelPaddingY = node.look === \"neo\" ? 20 : nodePadding;\n if (node.width || node.height) {\n node.width = node?.width ?? 0;\n if (node.width < 20) {\n node.width = 20;\n }\n node.height = node?.height ?? 0;\n if (node.height < 10) {\n node.height = 10;\n }\n const waveAmplitude2 = Math.min(node.height * 0.2, node.height / 4);\n node.height = Math.ceil(node.height - labelPaddingY - waveAmplitude2 * (20 / 9));\n node.width = node.width - labelPaddingX * 2;\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY;\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough54 from \"roughjs\";\nvar rectOffset = 10;\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const paddingX = node.look === \"neo\" ? 16 : node.padding ?? 0;\n const paddingY = node.look === \"neo\" ? 12 : node.padding ?? 0;\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - paddingX * 2 - rectOffset, 10);\n node.height = Math.max((node?.height ?? 0) - paddingY * 2 - rectOffset, 10);\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = (node?.width ? node?.width : bbox.width) + paddingX * 2 + rectOffset;\n const totalHeight = (node?.height ? node?.height : bbox.height) + paddingY * 2 + rectOffset;\n const w = totalWidth - rectOffset;\n const h = totalHeight - rectOffset;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough55 from \"roughjs\";\nimport { select as select4 } from \"d3\";\nvar COLOR_THEMES = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar REDUX_THEMES = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n const { theme, themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder, borderColorArray } = themeVariables;\n if (node.look === \"handDrawn\") {\n const { themeVariables: themeVariables2 } = getConfig();\n const { background } = themeVariables2;\n const backgroundNode = {\n ...node,\n id: node.id + \"-background\",\n domId: (node.domId || node.id) + \"-background\",\n look: \"default\",\n cssStyles: [\"stroke: none\", `fill: ${background}`]\n };\n await erBox(parent, backgroundNode);\n }\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n if (entityNode.attributes.length === 0 && node.label) {\n const options2 = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: \"\"\n };\n if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n node.width = config.er.minEntityWidth;\n }\n const shapeSvg2 = await drawRect(parent, node, options2);\n if (theme != null && COLOR_THEMES.has(theme)) {\n const colorIndex = entityNode.colorIndex ?? 0;\n shapeSvg2.attr(\"data-color-id\", `color-${colorIndex % borderColorArray.length}`);\n }\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg2.select(\"text\");\n const bbox = textElement.node()?.getBBox();\n textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg2;\n }\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = \"node default\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n [\"attribute-type\"],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox2 = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n [\"attribute-name\"],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n [\"attribute-keys\"],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n [\"attribute-comment\"],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n const shapeBBox = shapeSvg.node().getBBox();\n if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n const rc = rough55.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n const text2 = select4(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text2.attr(\"class\").includes(\"attribute-name\")) {\n translateX += maxTypeWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n text2.attr(\n \"transform\",\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n if (theme != null && COLOR_THEMES.has(theme)) {\n const colorIndex = entityNode.colorIndex ?? 0;\n shapeSvg.attr(\"data-color-id\", `color-${colorIndex % borderColorArray.length}`);\n }\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"class\", \"outer-path\").attr(\"style\", cssStyles.join(\"\"));\n yOffsets.push(0);\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1;\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect2 = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder\n });\n shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${isEven ? \"even\" : \"odd\"}`);\n }\n const thickness = 1e-4;\n let points = lineToPolygon(x, nameBBox.height + y, w + x, nameBBox.height + y, thickness);\n let roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n points = lineToPolygon(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n const xCoord = maxTypeWidth + maxNameWidth + x;\n points = lineToPolygon(xCoord, nameBBox.height + y, xCoord, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n const xCoord = maxTypeWidth + maxNameWidth + maxKeysWidth + x;\n points = lineToPolygon(xCoord, nameBBox.height + y, xCoord, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n const yCoord = nameBBox.height + y + yOffset2;\n points = lineToPolygon(x, yCoord, w + x, yCoord, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\n if (theme != null && REDUX_THEMES.has(theme)) {\n shapeSvg.selectAll(\"path\").attr(\"style\", nodeStyles);\n } else {\n const allStyle = nodeStyles.split(\";\");\n const strokeStyles = allStyle?.filter((e) => {\n return e.includes(\"stroke\");\n })?.map((s) => `${s}`).join(\"; \");\n shapeSvg.selectAll(\"path\").attr(\"style\", strokeStyles ?? \"\");\n shapeSvg.selectAll(\".row-rect-even path\").attr(\"style\", nodeStyles);\n }\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n labelText = labelText.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n const text2 = label.node().appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels\n },\n config\n )\n );\n if (labelText.includes(\"<\") || labelText.includes(\">\")) {\n let child = text2.children[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n }\n let bbox = text2.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text2.children[0];\n div.style.textAlign = \"start\";\n const dv = select4(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n return bbox;\n}\n__name(addText, \"addText\");\nfunction lineToPolygon(x1, y1, x2, y2, thickness) {\n if (x1 === x2) {\n return [\n { x: x1 - thickness / 2, y: y1 },\n { x: x1 + thickness / 2, y: y1 },\n { x: x2 + thickness / 2, y: y2 },\n { x: x2 - thickness / 2, y: y2 }\n ];\n }\n return [\n { x: x1, y: y1 - thickness / 2 },\n { x: x1, y: y1 + thickness / 2 },\n { x: x2, y: y2 + thickness / 2 },\n { x: x2, y: y2 - thickness / 2 }\n ];\n}\n__name(lineToPolygon, \"lineToPolygon\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select6 } from \"d3\";\nimport rough56 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select5 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select5(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select5(text2);\n numberOfLines = div.innerHTML.split(\"<br>\").length;\n if (div.innerHTML.includes(\"</math>\")) {\n numberOfLines += div.innerHTML.split(\"<mrow>\").length - 1;\n }\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = textContent.replace(/<img[^>]*>/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?.toString() ?? 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 textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const { themeVariables } = config;\n const { useGradient } = themeVariables;\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = Math.max(node.width ?? 0, bbox.width);\n let h = Math.max(node.height ?? 0, bbox.height);\n const nodeHeightGreater = (node.height ?? 0) > bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n let extraHeight = renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0;\n if (nodeHeightGreater) {\n extraHeight = PADDING * 2;\n }\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + extraHeight,\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\");\n const rectBBox = rect2.node().getBBox();\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const methodsAreaPlacement = (annotationGroupHeight + labelGroupHeight + y + PADDING - (y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0))) / 2;\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select6(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (text2.attr(\"class\").includes(\"methods-group\")) {\n const membersGroupHeightForMethods = Math.max(membersGroupHeight, GAP / 2);\n if (nodeHeightGreater) {\n newTranslateY = Math.max(\n methodsAreaPlacement,\n annotationGroupHeight + labelGroupHeight + membersGroupHeightForMethods + y + GAP * 2 + PADDING\n ) + GAP * 2;\n } else {\n newTranslateY = annotationGroupHeight + labelGroupHeight + membersGroupHeightForMethods + y + GAP * 4 + PADDING;\n }\n }\n if (classNode.members.length === 0 && classNode.methods.length === 0 && config.class?.hideEmptyMembersBox) {\n if (classNode.annotations.length > 0) {\n newTranslateY = translateY - GAP;\n } else {\n newTranslateY = translateY;\n }\n }\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const firstLineY = annotationGroupHeight + labelGroupHeight + y + PADDING;\n const roughLine = rc.line(\n rectBBox.x,\n firstLineY,\n rectBBox.x + rectBBox.width,\n firstLineY + 1e-3,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", `divider${node.look === \"neo\" && !useGradient ? \" neo-line\" : \"\"}`).attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const secondLineY = annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING;\n const roughLine = rc.line(\n rectBBox.x,\n nodeHeightGreater ? Math.max(methodsAreaPlacement, secondLineY) : secondLineY,\n rectBBox.x + rectBBox.width,\n (nodeHeightGreater ? Math.max(methodsAreaPlacement, secondLineY) : secondLineY) + 1e-3,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", `divider${node.look === \"neo\" && !useGradient ? \" neo-line\" : \"\"}`).attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough57 from \"roughjs\";\nimport { select as select7 } from \"d3\";\nasync function requirementBox(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node;\n const elementNode = node;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = \"verifyMethod\" in node;\n const classes = getNodeClasses(node);\n const { themeVariables } = getConfig2();\n const { borderColorArray, requirementEdgeLabelBackground } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText3(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText3(shapeSvg, \"<<Element>>\", 0, node.labelStyle);\n }\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText3(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + \"; font-weight: bold;\"\n );\n accumulativeHeight += nameHeight + gap;\n if (isRequirementNode) {\n const idHeight = await addText3(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += idHeight;\n const textHeight = await addText3(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText3(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText3(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n const typeHeight2 = await addText3(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight2;\n await addText3(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rc = rough57.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container outer-path\").attr(\"style\", nodeStyles);\n if (borderColorArray?.length) {\n const colorIndex = node.colorIndex ?? 0;\n shapeSvg.attr(\"data-color-id\", `color-${colorIndex % borderColorArray.length}`);\n }\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select7(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const lineY = y + typeHeight + nameHeight + gap;\n let roughLine;\n if (node.look === \"neo\") {\n const thickness = 1e-3;\n const polygonPoints = [\n [x, lineY],\n [x + totalWidth, lineY],\n [x + totalWidth, lineY + thickness],\n [x, lineY + thickness]\n ];\n roughLine = rc.polygon(polygonPoints, options);\n } else {\n roughLine = rc.line(x, lineY, x + totalWidth, lineY, options);\n }\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n if (nodeStyles && node.look !== \"handDrawn\" && (requirementEdgeLabelBackground || borderColorArray?.length)) {\n shapeSvg.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n if (inputText === \"\") {\n return 0;\n }\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n const config = getConfig2();\n const useHtmlLabels = config.htmlLabels ?? true;\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels,\n style\n },\n config\n );\n let bbox;\n if (!useHtmlLabels) {\n const textChild = text2.children[0];\n for (const child of textChild.children) {\n if (style) {\n child.setAttribute(\"style\", style);\n }\n }\n bbox = text2.getBBox();\n bbox.height += 6;\n } else {\n const div = text2.children[0];\n const dv = select7(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough58 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n // no stroke\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough58.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes/bang.ts\nimport rough59 from \"roughjs\";\nasync function bang(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough59.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, \":first-child\");\n bangElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n bangElem.attr(\"transform\", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Bang intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(bang, \"bang\");\n\n// src/rendering-util/rendering-elements/shapes/cloud.ts\nimport rough60 from \"roughjs\";\nasync function cloud(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n const { cssStyles } = node;\n let cloudElem;\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough60.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, \":first-child\");\n cloudElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n cloudElem.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, cloudElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Cloud intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(cloud, \"cloud\");\n\n// src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts\nasync function defaultMindmapNode(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n const rectPath = node.look === \"neo\" ? `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - rd}\n H${-w / 2}\n Z\n ` : `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} ${-rd},${rd}\n h${-(w - 2 * rd)}\n q${-rd},0 ${-rd},${-rd}\n Z\n `;\n if (!node.domId) {\n throw new Error(\n `defaultMindmapNode: node \"${node.id}\" is missing a domId \\u2014 was render.ts domId prefixing skipped?`\n );\n }\n const bg = shapeSvg.append(\"path\").attr(\"id\", node.domId).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"style\", nodeStyles).attr(\"d\", rectPath);\n shapeSvg.append(\"line\").attr(\"class\", \"node-line-\").attr(\"x1\", -w / 2).attr(\"y1\", h / 2).attr(\"x2\", w / 2).attr(\"y2\", h / 2);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n updateNodeBounds(node, bg);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(defaultMindmapNode, \"defaultMindmapNode\");\n\n// src/rendering-util/rendering-elements/shapes/mindmapCircle.ts\nasync function mindmapCircle(parent, node) {\n const options = {\n padding: node.padding ?? 0\n };\n return circle(parent, node, options);\n}\n__name(mindmapCircle, \"mindmapCircle\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Data Store\",\n name: \"Data Store\",\n shortName: \"datastore\",\n description: \"Data flow diagram data store\",\n aliases: [\"data-store\"],\n handler: datastore\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Bang\",\n name: \"Bang\",\n shortName: \"bang\",\n description: \"Bang\",\n aliases: [\"bang\"],\n handler: bang\n },\n {\n semanticName: \"Cloud\",\n name: \"Cloud\",\n shortName: \"cloud\",\n description: \"cloud\",\n aliases: [\"cloud\"],\n handler: cloud\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n // er diagram\n erBox,\n // Requirement diagram\n requirementBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.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 ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n newEl.attr(\"data-look\", handleUndefinedAttr(node.look));\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems.get(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 labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],
|
|
5
|
+
"mappings": "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AS1G,EACX,EACA,CACE,aAAc,UACd,KAAM,YACN,UAAW,YACX,YAAa,iCACb,QAAS,CAAC,YAAa,SAAS,EAChC,QAASW,EACX,EACA,CACE,aAAc,UACd,KAAM,cACN,UAAW,QACX,YAAa,iBACb,QAAS,CAAC,UAAW,SAAS,EAC9B,QAASlF,EACX,EACA,CACE,aAAc,gBACd,KAAM,cACN,UAAW,UACX,YAAa,iBACb,QAASU,EACX,EACA,CACE,aAAc,oCACd,KAAM,eACN,UAAW,SACX,YAAa,iBACb,QAASI,EACX,EACA,CACE,aAAc,WACd,KAAM,iBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,WAAY,gBAAgB,EACtC,QAAS8G,EACX,EACA,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,wBACb,QAAS,CAAC,MAAO,UAAU,EAC3B,QAASiG,EACX,EACA,CACE,aAAc,QACd,KAAM,yBACN,UAAW,QACX,YAAa,qBACb,QAAS,CAAC,wBAAwB,EAClC,QAASnJ,EACX,EACA,CACE,aAAc,wBACd,KAAM,sBACN,UAAW,QACX,YAAa,wBACb,QAAS,CAAC,MAAO,qBAAqB,EACtC,QAAS2I,EACX,EACA,CACE,aAAc,eACd,KAAM,iBACN,UAAW,UACX,YAAa,eACb,QAAS,CAAC,OAAQ,gBAAgB,EAClC,QAASjF,EACX,EACA,CACE,aAAc,UACd,KAAM,mBACN,UAAW,YACX,YAAa,uBACb,QAAS,CAAC,mBAAoB,SAAS,EACvC,QAAS9G,EACX,EACA,CACE,aAAc,kBACd,KAAM,oBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,WAAY,oBAAqB,iBAAiB,EAC5D,QAAS4B,EACX,EACA,CACE,aAAc,UACd,KAAM,WACN,UAAW,MACX,YAAa,qBACb,QAAS,CAAC,UAAW,UAAU,EAC/B,QAAS0K,EACX,EACA,CACE,aAAc,mBACd,KAAM,cACN,UAAW,WACX,YAAa,mBACb,QAAS,CAAC,mBAAoB,aAAa,EAC3C,QAASU,EACX,EACA,CACE,aAAc,WACd,KAAM,gBACN,UAAW,SACX,YAAa,iBACb,QAAS,CAAC,W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",
|
|
6
|
+
"names": ["labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig2", "shapeSvg", "labelEl", "handleUndefinedAttr", "label", "addBackground", "isMarkdown", "text2", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "configureLabelImages", "insertLabel", "options", "getEffectiveHtmlLabels", "updateNodeBounds", "element", "getNodeClasses", "extra", "createPathFromPoints", "points", "pointStrings", "p", "i", "generateFullSineWavePoints", "x1", "y1", "x2", "y2", "amplitude", "numCycles", "deltaX", "deltaY", "cycleLength", "frequency", "midY", "t", "x", "y", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "startAngleRad", "angleStep", "angle", "mergePaths", "roughElement", "paths", "mergedPath", "combinedPathData", "path", "d", "fillPath", "strokePath", "getAttr", "attr", "fillAttrs", "value", "strokeAttrs", "group", "intersectRect", "point", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "config", "createLabel_default", "createRoundedRectPathD", "totalWidth", "totalHeight", "rect", "log", "siteConfig", "themeVariables", "handDrawnSeed", "clusterBkg", "clusterBorder", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "styles2String", "width", "height", "rect2", "rc", "at", "userNodeOverrides", "roughNode", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "noteGroup", "padding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "nodeBorder", "outerRectG", "innerRect", "innerHeight", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "kanbanSection", "divider", "outerRectClass", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "intersectNode", "intersect_node_default", "intersectEllipse", "rx", "ry", "cx", "cy", "px", "py", "det", "intersect_ellipse_default", "intersectCircle", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "b1", "c1", "r3", "r4", "epsilon", "sameSign", "a2", "b2", "c2", "r1", "r2", "denom", "offset", "num", "intersect_line_default", "intersectPolygon", "polyPoints", "intersections", "minX", "minY", "entry", "left", "top", "intersect", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "intersect_polygon_default", "intersect_default", "anchor", "classes", "cssStyles", "circleElem", "generateArcPoints", "clockwise", "midX", "transformedX", "transformedY", "distance", "scaledCenterDistance", "angleRange", "angle2", "calculateArcSagitta", "chord", "radiusX", "radiusY", "semiMajorAxis", "semiMinorAxis", "a", "b", "bowTieRect", "nodePadding", "labelPaddingX", "labelPaddingY", "calcTotalHeight", "labelHeight", "calcEllipseRadius", "totalHeight2", "ry2", "sagitta", "bowTieRectPath", "bowTieRectShapePath", "bowTieRectShape", "insertPolygonShape", "NOTCH_SIZE", "card", "right", "bottom", "polygon", "pathData", "choice", "s", "choicePath", "choiceShape", "circle", "labelPadding", "options2", "bounds", "radius2", "createLine", "r", "xAxis45", "yAxis45", "lineLength", "pointQ1", "pointQ2", "pointQ3", "pointQ4", "crossedCircle", "circleNode", "linePath", "lineNode", "crossedCircle2", "generateCirclePoints2", "curlyBraceLeft", "paddingX", "paddingY", "rectPoints", "newCurlyBracePath", "curlyBraceLeftNode", "rectPath", "rectShape", "curlyBraceLeftShape", "generateCirclePoints3", "curlyBraceRight", "curlyBraceRightNode", "curlyBraceRightShape", "generateCirclePoints4", "curlyBraces", "leftCurlyBracePoints", "rightCurlyBracePoints", "newLeftCurlyBracePath", "leftCurlyBraceNode", "newRightCurlyBracePath", "rightCurlyBraceNode", "curlyBracesShape", "curvedTrapezoid", "minWidth", "minHeight", "rw", "tw", "shapeNode", "createCylinderPathD", "createOuterCylinderPathD", "createInnerCylinderPathD", "MIN_HEIGHT", "MIN_WIDTH", "cylinder", "originalWidth", "cylinder2", "outerPathData", "innerPathData", "outerNode", "innerLine", "pos", "drawRect", "datastore", "rectOptions", "nodeOverrideOptions", "borderSelection", "borderPath", "selection", "datastoreWidth", "datastoreHeight", "dividedRectangle", "rectOffset2", "pts", "poly", "doublecircle", "gap", "outerRadius", "innerRadius", "circleGroup", "outerOptions", "innerOptions", "outerRoughNode", "innerRoughNode", "outerCircle", "innerCircle", "filledCircle", "filledCircle2", "MIN_HEIGHT2", "MIN_WIDTH2", "flippedTriangle", "flippedTriangle2", "forkJoin", "dir", "state2", "halfRoundedRectangle", "createHexagonPathD", "m", "hexagon", "f", "wa", "ha", "m2", "hourglass", "icon", "flowchart", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "topLabel", "stylesMap", "compileStyles", "iconNode", "outerWidth", "outerHeight", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "nodeHeight", "iconCircle", "mainBkg", "fill", "diameter", "iconRounded", "iconSquare", "imageSquare", "img", "imageNaturalWidth", "imageNaturalHeight", "imageRawWidth", "imageWidth", "imageHeight", "imageNode", "image", "inv_trapezoid", "labelRect", "lean_left", "lean_right", "lightningBolt", "lightningBolt2", "createCylinderPathD2", "outerOffset", "createOuterCylinderPathD2", "createInnerCylinderPathD2", "MIN_HEIGHT3", "MIN_WIDTH3", "linedCylinder", "linedWaveEdgedRect", "waveAmplitude", "finalH", "waveEdgeRect", "multiRect", "outerPathPoints", "innerPathPoints", "outerPath", "innerPath", "innerNode", "multiRect2", "multiWaveEdgedRectangle", "adjustFinalHeight", "wavePoints", "lastWavePoint", "note", "getConfig", "noteShapeNode", "createDecisionBoxPathD", "size", "question", "adjustment", "s2", "points2", "res", "rect_left_inv_arrow", "notch", "rectWithTitle", "g", "description", "title", "div2", "dv2", "textRows", "titleBox", "descr", "roughLine", "roundedRect", "FRAME_WIDTH", "shadedProcess", "slopedRect", "squareRect2", "stadium", "state", "stateEnd", "lineColor", "stateBorder", "nodeShadow", "innerFill", "innerNodeRadius", "circle2", "svgId", "filterId", "stateStart", "solidStateFill", "FRAME_WIDTH2", "subroutine", "l1", "l2", "el", "TAG_RATIO", "taggedRect", "tagWidth", "tagHeight", "tagPoints", "rectNode", "tagPath", "tagNode", "taggedRect2", "taggedWaveEdgedRectangle", "waveEdgeRectPath", "waveEdgeRectNode", "taggedWaveEdgeRectPath", "taggedWaveEdgeRectNode", "text", "createCylinderPathD3", "createOuterCylinderPathD3", "createInnerCylinderPathD3", "MIN_HEIGHT4", "MIN_WIDTH4", "tiltedCylinder", "originalHeight", "rx2", "trapezoid", "trapezoidalPentagon", "MIN_HEIGHT5", "MIN_WIDTH5", "triangle", "waveEdgedRectangle", "widthDif", "extraW", "waveRectangle", "waveAmplitude2", "waveRectPath", "waveRectNode", "waveRect", "rectOffset", "windowPane", "no", "windowPane2", "COLOR_THEMES", "REDUX_THEMES", "erBox", "entityNode", "theme", "rowEven", "rowOdd", "borderColorArray", "themeVariables2", "background", "backgroundNode", "PADDING", "TEXT_PADDING", "calculateTextWidth", "shapeSvg2", "colorIndex", "textElement", "nameBBox", "addText", "yOffset", "yOffsets", "rows", "maxTypeWidth", "maxNameWidth", "maxKeysWidth", "maxCommentWidth", "keysPresent", "commentPresent", "attribute", "typeBBox", "nameBBox2", "keysBBox", "commentBBox", "rowHeight", "totalWidthSections", "shapeBBox", "difference", "maxWidth", "totalShapeBBoxHeight", "sum", "row", "_", "nodes", "transform", "translateX", "translateY", "translate", "roughRect", "isEven", "roughRect2", "thickness", "lineToPolygon", "xCoord", "yOffset2", "yCoord", "strokeStyles", "e", "labelText", "parseGenericTypes", "child", "textHelper", "GAP", "annotationGroup", "labelGroup", "membersGroup", "methodsGroup", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "annotation", "addText2", "labelGroupBBox", "member", "methodsYOffset", "method", "annotationGroupBBox", "parentGroup", "styles", "textEl", "textContent", "hasKatex", "sanitizeText3", "numberOfLines", "images", "noImgText", "setupImage", "bodyFontSize", "textChild", "classBox", "useGradient", "classNode", "renderExtraBox", "nodeHeightGreater", "extraHeight", "rectBBox", "methodsAreaPlacement", "newTranslateY", "membersGroupHeightForMethods", "newTranslateX", "_2", "i2", "nodes2", "firstLineY", "secondLineY", "colorRegex", "match", "colorStyle", "match2", "requirementBox", "requirementNode", "elementNode", "isRequirementNode", "requirementEdgeLabelBackground", "typeHeight", "addText3", "accumulativeHeight", "nameHeight", "idHeight", "textHeight", "riskHeight", "typeHeight2", "lineY", "polygonPoints", "inputText", "colorFromPriority", "priority", "kanbanItem", "kanbanNode", "orgWidth", "labelElTitle", "ticketUrl", "link", "bbox2", "labelElAssigned", "bboxAssigned", "heightAdj", "line", "lineX", "bang", "effectiveWidth", "effectiveHeight", "bangElem", "cloud", "cloudElem", "defaultMindmapNode", "rd", "bg", "mindmapCircle", "shapesDefs", "generateShapeMap", "entries", "alias", "shapes2", "isValidShape", "nodeElems", "insertNode", "renderOptions", "newEl", "shapeHandler", "target", "setNodeElem", "clear2", "positionNode", "diff"]
|
|
7
|
+
}
|