@kong/markdown 1.3.1 → 1.3.2

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.
Files changed (82) hide show
  1. package/dist/{arc-CRNu716j.js → arc-8cjaq9av.js} +2 -2
  2. package/dist/{arc-CRNu716j.js.map → arc-8cjaq9av.js.map} +1 -1
  3. package/dist/{blockDiagram-6b2b5046-D2MkRD_j.js → blockDiagram-6b2b5046-CXMFsTaq.js} +6 -6
  4. package/dist/{blockDiagram-6b2b5046-D2MkRD_j.js.map → blockDiagram-6b2b5046-CXMFsTaq.js.map} +1 -1
  5. package/dist/{c4Diagram-b947cdbb-DCrk3XXk.js → c4Diagram-b947cdbb-vwALH1WH.js} +3 -3
  6. package/dist/{c4Diagram-b947cdbb-DCrk3XXk.js.map → c4Diagram-b947cdbb-vwALH1WH.js.map} +1 -1
  7. package/dist/channel-CiebjdPJ.js +6 -0
  8. package/dist/{channel-AStNV-TO.js.map → channel-CiebjdPJ.js.map} +1 -1
  9. package/dist/{classDiagram-35230388-xHVnplkU.js → classDiagram-35230388-CTxUL5uA.js} +6 -6
  10. package/dist/{classDiagram-35230388-xHVnplkU.js.map → classDiagram-35230388-CTxUL5uA.js.map} +1 -1
  11. package/dist/{classDiagram-v2-412acd34-Df3TOSJO.js → classDiagram-v2-412acd34-BQSUu5Vr.js} +6 -6
  12. package/dist/{classDiagram-v2-412acd34-Df3TOSJO.js.map → classDiagram-v2-412acd34-BQSUu5Vr.js.map} +1 -1
  13. package/dist/clone-AVwa-Pmf.js +9 -0
  14. package/dist/{clone-BEwR0ae8.js.map → clone-AVwa-Pmf.js.map} +1 -1
  15. package/dist/{createText-423428c9-CQXqrQGV.js → createText-423428c9-C_xMZUNE.js} +2 -2
  16. package/dist/{createText-423428c9-CQXqrQGV.js.map → createText-423428c9-C_xMZUNE.js.map} +1 -1
  17. package/dist/{edges-d417c7a0-D2l0zXjx.js → edges-d417c7a0-9M_sA3AX.js} +4 -4
  18. package/dist/{edges-d417c7a0-D2l0zXjx.js.map → edges-d417c7a0-9M_sA3AX.js.map} +1 -1
  19. package/dist/{erDiagram-0ea73325-CGortXf-.js → erDiagram-0ea73325-LCVGPMbf.js} +5 -5
  20. package/dist/{erDiagram-0ea73325-CGortXf-.js.map → erDiagram-0ea73325-LCVGPMbf.js.map} +1 -1
  21. package/dist/{flowDb-d35e309a-B37o2qfF.js → flowDb-d35e309a-EwD5UOTn.js} +2 -2
  22. package/dist/{flowDb-d35e309a-B37o2qfF.js.map → flowDb-d35e309a-EwD5UOTn.js.map} +1 -1
  23. package/dist/{flowDiagram-d949d7c1-CZWR-qRX.js → flowDiagram-d949d7c1-B8fV1Bgb.js} +7 -7
  24. package/dist/{flowDiagram-d949d7c1-CZWR-qRX.js.map → flowDiagram-d949d7c1-B8fV1Bgb.js.map} +1 -1
  25. package/dist/{flowDiagram-v2-49332944-OmkAsRSo.js → flowDiagram-v2-49332944-B1NmgnBY.js} +6 -6
  26. package/dist/{flowDiagram-v2-49332944-OmkAsRSo.js.map → flowDiagram-v2-49332944-B1NmgnBY.js.map} +1 -1
  27. package/dist/{flowchart-elk-definition-27cc417a-DvRAXt5Q.js → flowchart-elk-definition-27cc417a-uJBgGb6w.js} +5 -5
  28. package/dist/{flowchart-elk-definition-27cc417a-DvRAXt5Q.js.map → flowchart-elk-definition-27cc417a-uJBgGb6w.js.map} +1 -1
  29. package/dist/{ganttDiagram-5c869e3b-CFIXQjia.js → ganttDiagram-5c869e3b-CP3jCxVz.js} +3 -3
  30. package/dist/{ganttDiagram-5c869e3b-CFIXQjia.js.map → ganttDiagram-5c869e3b-CP3jCxVz.js.map} +1 -1
  31. package/dist/{gitGraphDiagram-b9d81de9-dYIPtz9A.js → gitGraphDiagram-b9d81de9-C0mDyUJG.js} +2 -2
  32. package/dist/{gitGraphDiagram-b9d81de9-dYIPtz9A.js.map → gitGraphDiagram-b9d81de9-C0mDyUJG.js.map} +1 -1
  33. package/dist/{graph-DnI6iIW-.js → graph-D8osM22K.js} +2 -2
  34. package/dist/{graph-DnI6iIW-.js.map → graph-D8osM22K.js.map} +1 -1
  35. package/dist/{index-8fae9850-BrJpYy1U.js → index-8fae9850-LWne7Y_5.js} +7 -7
  36. package/dist/{index-8fae9850-BrJpYy1U.js.map → index-8fae9850-LWne7Y_5.js.map} +1 -1
  37. package/dist/{index-BdQ-n4gH.js → index-H0_TiiZ2.js} +24 -24
  38. package/dist/{index-BdQ-n4gH.js.map → index-H0_TiiZ2.js.map} +1 -1
  39. package/dist/{infoDiagram-db7b18fc-D02OQKc3.js → infoDiagram-db7b18fc-BUwIw4xq.js} +2 -2
  40. package/dist/{infoDiagram-db7b18fc-D02OQKc3.js.map → infoDiagram-db7b18fc-BUwIw4xq.js.map} +1 -1
  41. package/dist/{journeyDiagram-d5636530-DthrqUFi.js → journeyDiagram-d5636530-BcAzfkwS.js} +4 -4
  42. package/dist/{journeyDiagram-d5636530-DthrqUFi.js.map → journeyDiagram-d5636530-BcAzfkwS.js.map} +1 -1
  43. package/dist/kong-markdown.es.js +1 -1
  44. package/dist/kong-markdown.umd.js +1 -1
  45. package/dist/{layout-OFztbzEY.js → layout-ZVjoo1C9.js} +3 -3
  46. package/dist/{layout-OFztbzEY.js.map → layout-ZVjoo1C9.js.map} +1 -1
  47. package/dist/{line-BSAYYjII.js → line-Cw7WGRye.js} +2 -2
  48. package/dist/{line-BSAYYjII.js.map → line-Cw7WGRye.js.map} +1 -1
  49. package/dist/{linear-D6IIV3ES.js → linear-CM8CQPYx.js} +2 -2
  50. package/dist/{linear-D6IIV3ES.js.map → linear-CM8CQPYx.js.map} +1 -1
  51. package/dist/{mindmap-definition-377f8f1f-CP5Ij5zq.js → mindmap-definition-377f8f1f-CZ-84IMz.js} +3 -3
  52. package/dist/{mindmap-definition-377f8f1f-CP5Ij5zq.js.map → mindmap-definition-377f8f1f-CZ-84IMz.js.map} +1 -1
  53. package/dist/{pieDiagram-b0208e96-CEy_a3qY.js → pieDiagram-b0208e96-DWGdunAA.js} +3 -3
  54. package/dist/{pieDiagram-b0208e96-CEy_a3qY.js.map → pieDiagram-b0208e96-DWGdunAA.js.map} +1 -1
  55. package/dist/{quadrantDiagram-0332be45-D1m3bfLE.js → quadrantDiagram-0332be45-CcjioNyx.js} +3 -3
  56. package/dist/{quadrantDiagram-0332be45-D1m3bfLE.js.map → quadrantDiagram-0332be45-CcjioNyx.js.map} +1 -1
  57. package/dist/{requirementDiagram-bf7890df-BXOuPT18.js → requirementDiagram-bf7890df-Bhse_3cX.js} +5 -5
  58. package/dist/{requirementDiagram-bf7890df-BXOuPT18.js.map → requirementDiagram-bf7890df-Bhse_3cX.js.map} +1 -1
  59. package/dist/{sankeyDiagram-0acdec17-C_WfLS-d.js → sankeyDiagram-0acdec17-mp2WREQF.js} +2 -2
  60. package/dist/{sankeyDiagram-0acdec17-C_WfLS-d.js.map → sankeyDiagram-0acdec17-mp2WREQF.js.map} +1 -1
  61. package/dist/{sequenceDiagram-c18d009d-xoFAj6ID.js → sequenceDiagram-c18d009d-C2BOoE0J.js} +3 -3
  62. package/dist/{sequenceDiagram-c18d009d-xoFAj6ID.js.map → sequenceDiagram-c18d009d-C2BOoE0J.js.map} +1 -1
  63. package/dist/{stateDiagram-43596fc0-Dm1AkWdr.js → stateDiagram-43596fc0-DcFmBqVD.js} +6 -6
  64. package/dist/{stateDiagram-43596fc0-Dm1AkWdr.js.map → stateDiagram-43596fc0-DcFmBqVD.js.map} +1 -1
  65. package/dist/{stateDiagram-v2-2ead4f9c-X0XO1e_0.js → stateDiagram-v2-2ead4f9c-B0kAUaOw.js} +6 -6
  66. package/dist/{stateDiagram-v2-2ead4f9c-X0XO1e_0.js.map → stateDiagram-v2-2ead4f9c-B0kAUaOw.js.map} +1 -1
  67. package/dist/style.css +1 -1
  68. package/dist/{styles-6860f46c-g9ltY6y9.js → styles-6860f46c-CCfIsYmF.js} +2 -2
  69. package/dist/{styles-6860f46c-g9ltY6y9.js.map → styles-6860f46c-CCfIsYmF.js.map} +1 -1
  70. package/dist/{styles-7383a064-D9pZsmll.js → styles-7383a064-Z66HBsPQ.js} +5 -5
  71. package/dist/{styles-7383a064-D9pZsmll.js.map → styles-7383a064-Z66HBsPQ.js.map} +1 -1
  72. package/dist/{styles-b2c874b6-2MSTrrjT.js → styles-b2c874b6-vUP-zip8.js} +2 -2
  73. package/dist/{styles-b2c874b6-2MSTrrjT.js.map → styles-b2c874b6-vUP-zip8.js.map} +1 -1
  74. package/dist/{svgDrawCommon-0ee1b4e9-BiqdHuRv.js → svgDrawCommon-0ee1b4e9-BN89CkAa.js} +2 -2
  75. package/dist/{svgDrawCommon-0ee1b4e9-BiqdHuRv.js.map → svgDrawCommon-0ee1b4e9-BN89CkAa.js.map} +1 -1
  76. package/dist/{timeline-definition-d977decf-J4adcb4f.js → timeline-definition-d977decf-hPFfx-Ol.js} +3 -3
  77. package/dist/{timeline-definition-d977decf-J4adcb4f.js.map → timeline-definition-d977decf-hPFfx-Ol.js.map} +1 -1
  78. package/dist/{xychartDiagram-e50adddc-COrJQ_9O.js → xychartDiagram-e50adddc-rKOcwKj9.js} +5 -5
  79. package/dist/{xychartDiagram-e50adddc-COrJQ_9O.js.map → xychartDiagram-e50adddc-rKOcwKj9.js.map} +1 -1
  80. package/package.json +1 -1
  81. package/dist/channel-AStNV-TO.js +0 -6
  82. package/dist/clone-BEwR0ae8.js +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"edges-d417c7a0-D2l0zXjx.js","sources":["../node_modules/.pnpm/mermaid@10.8.0/node_modules/mermaid/dist/edges-d417c7a0.js"],"sourcesContent":["import { l as log, m as evaluate, c as getConfig, J as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-0603ccf8.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { a as createText } from \"./createText-423428c9.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + \">\" + label + \"</span>\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.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 = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\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}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.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 (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.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};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst expandAndDeduplicateDirections = (directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n};\nconst getArrowPoints = (duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n};\nconst formatClass = (str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst block_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst composite = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"<br/>\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"&lt;\" + node.classData.type + \"&gt;\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n newEl.attr(\"data-node\", \"true\");\n newEl.attr(\"data-id\", node.id);\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nconst getSubGraphTitleMargins = ({\n flowchart\n}) => {\n var _a, _b;\n const subGraphTitleTopMargin = ((_a = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _a.top) ?? 0;\n const subGraphTitleBottomMargin = ((_b = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _b.bottom) ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n};\nconst markerOffsets = {\n aggregation: 18,\n extension: 18,\n composition: 18,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 5.3\n};\nfunction calculateDeltaAndAngle(point1, point2) {\n if (point1 === void 0 || point2 === void 0) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\nconst pointTransformer = (data) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\nconst getLineFunctionsWithOffset = (edge) => {\n return {\n x: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n return pointTransformer(d).x + offset;\n },\n y: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n return pointTransformer(d).y + offset;\n }\n };\n};\nconst addEdgeMarkers = (svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n};\nconst arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nconst addEdgeMarker = (svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if ((head == null ? void 0 : head.intersect) && (tail == null ? void 0 : tail.intersect)) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n getSubGraphTitleMargins as g,\n insertEdge as h,\n intersectRect$1 as i,\n positionEdgeLabel as j,\n getLineFunctionsWithOffset as k,\n labelHelper as l,\n addEdgeMarkers as m,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n"],"names":["insertMarkers","elem","markerArray","type","id","markerName","markers","extension","log","composition","aggregation","dependency","lollipop","point","circle$1","cross","barb","insertMarkers$1","applyStyle","dom","styleFn","addHtmlLabel","node","fo","select","div","label","labelClass","createLabel","_vertexText","style","isTitle","isNode","vertexText","evaluate","getConfig","decodeEntities","s","svgLabel","rows","row","tspan","createLabel$1","labelHelper","parent","_classes","classes","useHtmlLabels","shapeSvg","labelText","textNode","text","createText","sanitizeText","bbox","halfPadding","dv","images","noImgText","img","res","setupImage","bodyFontSize","width","updateNodeBounds","element","insertPolygonShape","w","h","points","d","intersectNode","point2","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","y","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","i","intersect2","p","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersectRect$1","intersect","note","rect2","note$1","expandAndDeduplicateDirections","directions","uniqueDirections","direction","getArrowPoints","duplicatedDirections","f","height","midpoint","padding","formatClass","str","getClassesFromNode","otherClasses","question","questionElem","choice","hexagon","m","hex","block_arrow","blockArrow","rect_left_inv_arrow","lean_right","el","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","pos","rect","totalWidth","totalHeight","propKeys","applyNodePropertyBorders","propKey","composite","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","textRows","titleBox","descr","stadium","circle","circle2","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","end","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","member","parsedInfo","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","newEl","target","setNodeElem","clear$1","positionNode","diff","getSubGraphTitleMargins","flowchart","_a","_b","subGraphTitleTopMargin","subGraphTitleBottomMargin","subGraphTitleTotalMargin","markerOffsets","calculateDeltaAndAngle","point1","pointTransformer","x2","y2","deltaX","deltaY","data","getLineFunctionsWithOffset","edge","angle","addEdgeMarkers","svgPath","url","diagramType","addEdgeMarker","arrowTypesMap","position","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","clear","insertEdgeLabel","labelElement","edgeLabel","startLabelElement","startEdgeLabelLeft","inner","slBox","setTerminalWidth","startEdgeLabelRight","endLabelElement","endEdgeLabelLeft","endEdgeLabelRight","value","positionEdgeLabel","paths","path","siteConfig","utils","outsideNode","intersection","outsidePoint","insidePoint","r","Q","R","_x","_y","cutPathAtIntersect","_points","boundryNode","lastPointOutside","isInside","inter","pointPresent","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","lineFunction","line","strokeClasses"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"edges-d417c7a0-9M_sA3AX.js","sources":["../node_modules/.pnpm/mermaid@10.8.0/node_modules/mermaid/dist/edges-d417c7a0.js"],"sourcesContent":["import { l as log, m as evaluate, c as getConfig, J as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-0603ccf8.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { a as createText } from \"./createText-423428c9.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + \">\" + label + \"</span>\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.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 = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\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}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.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 (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.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};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst expandAndDeduplicateDirections = (directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n};\nconst getArrowPoints = (duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n};\nconst formatClass = (str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst block_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst composite = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"<br/>\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"&lt;\" + node.classData.type + \"&gt;\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n newEl.attr(\"data-node\", \"true\");\n newEl.attr(\"data-id\", node.id);\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nconst getSubGraphTitleMargins = ({\n flowchart\n}) => {\n var _a, _b;\n const subGraphTitleTopMargin = ((_a = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _a.top) ?? 0;\n const subGraphTitleBottomMargin = ((_b = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _b.bottom) ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n};\nconst markerOffsets = {\n aggregation: 18,\n extension: 18,\n composition: 18,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 5.3\n};\nfunction calculateDeltaAndAngle(point1, point2) {\n if (point1 === void 0 || point2 === void 0) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\nconst pointTransformer = (data) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\nconst getLineFunctionsWithOffset = (edge) => {\n return {\n x: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n return pointTransformer(d).x + offset;\n },\n y: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n return pointTransformer(d).y + offset;\n }\n };\n};\nconst addEdgeMarkers = (svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n};\nconst arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nconst addEdgeMarker = (svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if ((head == null ? void 0 : head.intersect) && (tail == null ? void 0 : tail.intersect)) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n getSubGraphTitleMargins as g,\n insertEdge as h,\n intersectRect$1 as i,\n positionEdgeLabel as j,\n getLineFunctionsWithOffset as k,\n labelHelper as l,\n addEdgeMarkers as m,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n"],"names":["insertMarkers","elem","markerArray","type","id","markerName","markers","extension","log","composition","aggregation","dependency","lollipop","point","circle$1","cross","barb","insertMarkers$1","applyStyle","dom","styleFn","addHtmlLabel","node","fo","select","div","label","labelClass","createLabel","_vertexText","style","isTitle","isNode","vertexText","evaluate","getConfig","decodeEntities","s","svgLabel","rows","row","tspan","createLabel$1","labelHelper","parent","_classes","classes","useHtmlLabels","shapeSvg","labelText","textNode","text","createText","sanitizeText","bbox","halfPadding","dv","images","noImgText","img","res","setupImage","bodyFontSize","width","updateNodeBounds","element","insertPolygonShape","w","h","points","d","intersectNode","point2","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","y","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","i","intersect2","p","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersectRect$1","intersect","note","rect2","note$1","expandAndDeduplicateDirections","directions","uniqueDirections","direction","getArrowPoints","duplicatedDirections","f","height","midpoint","padding","formatClass","str","getClassesFromNode","otherClasses","question","questionElem","choice","hexagon","m","hex","block_arrow","blockArrow","rect_left_inv_arrow","lean_right","el","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","pos","rect","totalWidth","totalHeight","propKeys","applyNodePropertyBorders","propKey","composite","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","textRows","titleBox","descr","stadium","circle","circle2","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","end","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","member","parsedInfo","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","newEl","target","setNodeElem","clear$1","positionNode","diff","getSubGraphTitleMargins","flowchart","_a","_b","subGraphTitleTopMargin","subGraphTitleBottomMargin","subGraphTitleTotalMargin","markerOffsets","calculateDeltaAndAngle","point1","pointTransformer","x2","y2","deltaX","deltaY","data","getLineFunctionsWithOffset","edge","angle","addEdgeMarkers","svgPath","url","diagramType","addEdgeMarker","arrowTypesMap","position","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","clear","insertEdgeLabel","labelElement","edgeLabel","startLabelElement","startEdgeLabelLeft","inner","slBox","setTerminalWidth","startEdgeLabelRight","endLabelElement","endEdgeLabelLeft","endEdgeLabelRight","value","positionEdgeLabel","paths","path","siteConfig","utils","outsideNode","intersection","outsidePoint","insidePoint","r","Q","R","_x","_y","cutPathAtIntersect","_points","boundryNode","lastPointOutside","isInside","inter","pointPresent","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","lineFunction","line","strokeClasses"],"mappings":"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","x_google_ignoreList":[0]}