@plumile/ui 0.1.83 → 0.1.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/BackofficeJsonViewerAsync-B_YPyubK.js +10 -0
- package/lib/esm/{BackofficeJsonViewerAsync-Czd9VhUz.js.map → BackofficeJsonViewerAsync-B_YPyubK.js.map} +1 -1
- package/lib/esm/{MarkdownCodeBlock-B3PblX3D.js → MarkdownCodeBlock-B__tyIcc.js} +2 -2
- package/lib/esm/{MarkdownCodeBlock-B3PblX3D.js.map → MarkdownCodeBlock-B__tyIcc.js.map} +1 -1
- package/lib/esm/{MarkdownRenderer-RgELUK6t.js → MarkdownRenderer-w1EzXVlv.js} +2 -2
- package/lib/esm/{MarkdownRenderer-RgELUK6t.js.map → MarkdownRenderer-w1EzXVlv.js.map} +1 -1
- package/lib/esm/{architectureDiagram-2XIMDMQ5-BUhb7PkG.js → architectureDiagram-2XIMDMQ5-D9W3hi1n.js} +5 -5
- package/lib/esm/{architectureDiagram-2XIMDMQ5-BUhb7PkG.js.map → architectureDiagram-2XIMDMQ5-D9W3hi1n.js.map} +1 -1
- package/lib/esm/{blockDiagram-WCTKOSBZ-C8Ohzdg3.js → blockDiagram-WCTKOSBZ-0tOAzLGT.js} +7 -7
- package/lib/esm/{blockDiagram-WCTKOSBZ-C8Ohzdg3.js.map → blockDiagram-WCTKOSBZ-0tOAzLGT.js.map} +1 -1
- package/lib/esm/{c4Diagram-IC4MRINW-CQUp6kiC.js → c4Diagram-IC4MRINW-BfvUsZKR.js} +4 -4
- package/lib/esm/{c4Diagram-IC4MRINW-CQUp6kiC.js.map → c4Diagram-IC4MRINW-BfvUsZKR.js.map} +1 -1
- package/lib/esm/{channel-BBzlf3l-.js → channel-BevqKLlC.js} +2 -2
- package/lib/esm/{channel-BBzlf3l-.js.map → channel-BevqKLlC.js.map} +1 -1
- package/lib/esm/{chunk-7R4GIKGN-Cg9-qmu5.js → chunk-7R4GIKGN-tSw2Wb9z.js} +2 -2
- package/lib/esm/{chunk-7R4GIKGN-Cg9-qmu5.js.map → chunk-7R4GIKGN-tSw2Wb9z.js.map} +1 -1
- package/lib/esm/{chunk-GEFDOKGD-Dkux3ZgH.js → chunk-GEFDOKGD-CWu-rFVf.js} +2 -2
- package/lib/esm/{chunk-GEFDOKGD-Dkux3ZgH.js.map → chunk-GEFDOKGD-CWu-rFVf.js.map} +1 -1
- package/lib/esm/{chunk-GLR3WWYH-BBakjhtu.js → chunk-GLR3WWYH-Dy7JAiPZ.js} +6 -6
- package/lib/esm/{chunk-GLR3WWYH-BBakjhtu.js.map → chunk-GLR3WWYH-Dy7JAiPZ.js.map} +1 -1
- package/lib/esm/{chunk-HHEYEP7N-BRntQHI9.js → chunk-HHEYEP7N-CwMxvvqW.js} +2 -2
- package/lib/esm/{chunk-HHEYEP7N-BRntQHI9.js.map → chunk-HHEYEP7N-CwMxvvqW.js.map} +1 -1
- package/lib/esm/{chunk-JSJVCQXG-DuVavFA7.js → chunk-JSJVCQXG-BhZagW93.js} +2 -2
- package/lib/esm/{chunk-JSJVCQXG-DuVavFA7.js.map → chunk-JSJVCQXG-BhZagW93.js.map} +1 -1
- package/lib/esm/{chunk-KX2RTZJC-BEZu4ePM.js → chunk-KX2RTZJC-BfnFx2cA.js} +2 -2
- package/lib/esm/{chunk-KX2RTZJC-BEZu4ePM.js.map → chunk-KX2RTZJC-BfnFx2cA.js.map} +1 -1
- package/lib/esm/{chunk-KYZI473N-DeJhj0TI.js → chunk-KYZI473N-BwYBBC73.js} +6 -6
- package/lib/esm/{chunk-KYZI473N-DeJhj0TI.js.map → chunk-KYZI473N-BwYBBC73.js.map} +1 -1
- package/lib/esm/{chunk-NQ4KR5QH-pcyIZSOf.js → chunk-NQ4KR5QH-CtcoAyde.js} +5 -5
- package/lib/esm/{chunk-NQ4KR5QH-pcyIZSOf.js.map → chunk-NQ4KR5QH-CtcoAyde.js.map} +1 -1
- package/lib/esm/{chunk-O4XLMI2P-B49RDRA_.js → chunk-O4XLMI2P-DxPipWrP.js} +8 -8
- package/lib/esm/{chunk-O4XLMI2P-B49RDRA_.js.map → chunk-O4XLMI2P-DxPipWrP.js.map} +1 -1
- package/lib/esm/{chunk-PQ6SQG4A-BJO_yF6z.js → chunk-PQ6SQG4A-DlekIw0F.js} +2 -2
- package/lib/esm/{chunk-PQ6SQG4A-BJO_yF6z.js.map → chunk-PQ6SQG4A-DlekIw0F.js.map} +1 -1
- package/lib/esm/{chunk-PU5JKC2W-BzaL_NH3.js → chunk-PU5JKC2W-nnfoXdoB.js} +3 -3
- package/lib/esm/{chunk-PU5JKC2W-BzaL_NH3.js.map → chunk-PU5JKC2W-nnfoXdoB.js.map} +1 -1
- package/lib/esm/{chunk-WL4C6EOR-CtRNKYmt.js → chunk-WL4C6EOR-CepZqrvG.js} +6 -6
- package/lib/esm/{chunk-WL4C6EOR-CtRNKYmt.js.map → chunk-WL4C6EOR-CepZqrvG.js.map} +1 -1
- package/lib/esm/{chunk-YBOYWFTD-BL_YEnkQ.js → chunk-YBOYWFTD-DQeJ-Crn.js} +3 -3
- package/lib/esm/{chunk-YBOYWFTD-BL_YEnkQ.js.map → chunk-YBOYWFTD-DQeJ-Crn.js.map} +1 -1
- package/lib/esm/{classDiagram-VBA2DB6C-BT1J_4pK.js → classDiagram-VBA2DB6C-Cz661asi.js} +12 -12
- package/lib/esm/{classDiagram-VBA2DB6C-BT1J_4pK.js.map → classDiagram-VBA2DB6C-Cz661asi.js.map} +1 -1
- package/lib/esm/{classDiagram-v2-RAHNMMFH-CKSbfgdS.js → classDiagram-v2-RAHNMMFH-gl-L4tD0.js} +12 -12
- package/lib/esm/{classDiagram-v2-RAHNMMFH-CKSbfgdS.js.map → classDiagram-v2-RAHNMMFH-gl-L4tD0.js.map} +1 -1
- package/lib/esm/{dagre-D6grMmmr.js → dagre-CUvGkXru.js} +2 -2
- package/lib/esm/{dagre-D6grMmmr.js.map → dagre-CUvGkXru.js.map} +1 -1
- package/lib/esm/{dagre-KLK3FWXG-CT3GGyXF.js → dagre-KLK3FWXG-CfNc9pEH.js} +9 -9
- package/lib/esm/{dagre-KLK3FWXG-CT3GGyXF.js.map → dagre-KLK3FWXG-CfNc9pEH.js.map} +1 -1
- package/lib/esm/{diagram-E7M64L7V-RIQNonUo.js → diagram-E7M64L7V-owGUX1SK.js} +6 -6
- package/lib/esm/{diagram-E7M64L7V-RIQNonUo.js.map → diagram-E7M64L7V-owGUX1SK.js.map} +1 -1
- package/lib/esm/{diagram-IFDJBPK2-D1Vwi5RU.js → diagram-IFDJBPK2-BNNr6py0.js} +4 -4
- package/lib/esm/{diagram-IFDJBPK2-D1Vwi5RU.js.map → diagram-IFDJBPK2-BNNr6py0.js.map} +1 -1
- package/lib/esm/{diagram-P4PSJMXO-B84-dlrB.js → diagram-P4PSJMXO-DYqpdLub.js} +4 -4
- package/lib/esm/{diagram-P4PSJMXO-B84-dlrB.js.map → diagram-P4PSJMXO-DYqpdLub.js.map} +1 -1
- package/lib/esm/{erDiagram-INFDFZHY-DMLpjzc4.js → erDiagram-INFDFZHY-Bg0Cs5pu.js} +11 -11
- package/lib/esm/{erDiagram-INFDFZHY-DMLpjzc4.js.map → erDiagram-INFDFZHY-Bg0Cs5pu.js.map} +1 -1
- package/lib/esm/{flowDiagram-PKNHOUZH-Ce1-VA32.js → flowDiagram-PKNHOUZH-TkU27ZFV.js} +12 -12
- package/lib/esm/{flowDiagram-PKNHOUZH-Ce1-VA32.js.map → flowDiagram-PKNHOUZH-TkU27ZFV.js.map} +1 -1
- package/lib/esm/{ganttDiagram-A5KZAMGK-BAmfVCUC.js → ganttDiagram-A5KZAMGK-C3eQMnaD.js} +3 -3
- package/lib/esm/{ganttDiagram-A5KZAMGK-BAmfVCUC.js.map → ganttDiagram-A5KZAMGK-C3eQMnaD.js.map} +1 -1
- package/lib/esm/{gitGraphDiagram-K3NZZRJ6-CR62Izxa.js → gitGraphDiagram-K3NZZRJ6-CeYQZRvp.js} +3 -3
- package/lib/esm/{gitGraphDiagram-K3NZZRJ6-CR62Izxa.js.map → gitGraphDiagram-K3NZZRJ6-CeYQZRvp.js.map} +1 -1
- package/lib/esm/{infoDiagram-LFFYTUFH-CEaM6i7D.js → infoDiagram-LFFYTUFH-rYfR0LAG.js} +3 -3
- package/lib/esm/{infoDiagram-LFFYTUFH-CEaM6i7D.js.map → infoDiagram-LFFYTUFH-rYfR0LAG.js.map} +1 -1
- package/lib/esm/{ishikawaDiagram-PHBUUO56-DPmaeRZg.js → ishikawaDiagram-PHBUUO56-Cv42PfHQ.js} +4 -4
- package/lib/esm/{ishikawaDiagram-PHBUUO56-DPmaeRZg.js.map → ishikawaDiagram-PHBUUO56-Cv42PfHQ.js.map} +1 -1
- package/lib/esm/{journeyDiagram-4ABVD52K-CIkELGB9.js → journeyDiagram-4ABVD52K-TAtGE2GU.js} +3 -3
- package/lib/esm/{journeyDiagram-4ABVD52K-CIkELGB9.js.map → journeyDiagram-4ABVD52K-TAtGE2GU.js.map} +1 -1
- package/lib/esm/{kanban-definition-K7BYSVSG-CzRVcKjg.js → kanban-definition-K7BYSVSG-iey_6CC1.js} +8 -8
- package/lib/esm/{kanban-definition-K7BYSVSG-CzRVcKjg.js.map → kanban-definition-K7BYSVSG-iey_6CC1.js.map} +1 -1
- package/lib/esm/{katex-C5br0dxW.js → katex-W0_-X3Wb.js} +4 -4
- package/lib/esm/katex-W0_-X3Wb.js.map +1 -0
- package/lib/esm/{line-CNKkQ82B.js → line-AZ-MMAnt.js} +2 -2
- package/lib/esm/{line-CNKkQ82B.js.map → line-AZ-MMAnt.js.map} +1 -1
- package/lib/esm/{mermaid.core-CgCa7Y6s.js → mermaid.core-Ckiof3bn.js} +39 -39
- package/lib/esm/{mermaid.core-CgCa7Y6s.js.map → mermaid.core-Ckiof3bn.js.map} +1 -1
- package/lib/esm/{mindmap-definition-YRQLILUH-B7c3ueCh.js → mindmap-definition-YRQLILUH-DttP-UXP.js} +10 -10
- package/lib/esm/{mindmap-definition-YRQLILUH-B7c3ueCh.js.map → mindmap-definition-YRQLILUH-DttP-UXP.js.map} +1 -1
- package/lib/esm/{pieDiagram-SKSYHLDU-BKf7D_uz.js → pieDiagram-SKSYHLDU-BuVky6TE.js} +4 -4
- package/lib/esm/{pieDiagram-SKSYHLDU-BKf7D_uz.js.map → pieDiagram-SKSYHLDU-BuVky6TE.js.map} +1 -1
- package/lib/esm/{quadrantDiagram-337W2JSQ-CZMVpQuF.js → quadrantDiagram-337W2JSQ-COnmLuk_.js} +2 -2
- package/lib/esm/{quadrantDiagram-337W2JSQ-CZMVpQuF.js.map → quadrantDiagram-337W2JSQ-COnmLuk_.js.map} +1 -1
- package/lib/esm/{requirementDiagram-Z7DCOOCP-CXxLUHMG.js → requirementDiagram-Z7DCOOCP-ChSklNBb.js} +10 -10
- package/lib/esm/{requirementDiagram-Z7DCOOCP-CXxLUHMG.js.map → requirementDiagram-Z7DCOOCP-ChSklNBb.js.map} +1 -1
- package/lib/esm/{sankeyDiagram-WA2Y5GQK-BauuH8-1.js → sankeyDiagram-WA2Y5GQK-tI6Eo-LD.js} +2 -2
- package/lib/esm/{sankeyDiagram-WA2Y5GQK-BauuH8-1.js.map → sankeyDiagram-WA2Y5GQK-tI6Eo-LD.js.map} +1 -1
- package/lib/esm/{sequenceDiagram-2WXFIKYE-AWPjBivx.js → sequenceDiagram-2WXFIKYE-C7KV1rxZ.js} +4 -4
- package/lib/esm/{sequenceDiagram-2WXFIKYE-AWPjBivx.js.map → sequenceDiagram-2WXFIKYE-C7KV1rxZ.js.map} +1 -1
- package/lib/esm/{src-D6nEpsqe.js → src-5_DIXRl3.js} +747 -583
- package/lib/esm/src-5_DIXRl3.js.map +1 -0
- package/lib/esm/{stateDiagram-RAJIS63D-CXgEabgV.js → stateDiagram-RAJIS63D-BFn7Uwqt.js} +13 -13
- package/lib/esm/{stateDiagram-RAJIS63D-CXgEabgV.js.map → stateDiagram-RAJIS63D-BFn7Uwqt.js.map} +1 -1
- package/lib/esm/{stateDiagram-v2-FVOUBMTO-CahcZ8-y.js → stateDiagram-v2-FVOUBMTO-DDke9x6W.js} +11 -11
- package/lib/esm/{stateDiagram-v2-FVOUBMTO-CahcZ8-y.js.map → stateDiagram-v2-FVOUBMTO-DDke9x6W.js.map} +1 -1
- package/lib/esm/{timeline-definition-YZTLITO2-Dk8ByuG8.js → timeline-definition-YZTLITO2-BxLV7tzr.js} +2 -2
- package/lib/esm/{timeline-definition-YZTLITO2-Dk8ByuG8.js.map → timeline-definition-YZTLITO2-BxLV7tzr.js.map} +1 -1
- package/lib/esm/ui.js +5 -5
- package/lib/esm/{vennDiagram-LZ73GAT5-BcIblXz3.js → vennDiagram-LZ73GAT5-BciD5X0b.js} +4 -4
- package/lib/esm/{vennDiagram-LZ73GAT5-BcIblXz3.js.map → vennDiagram-LZ73GAT5-BciD5X0b.js.map} +1 -1
- package/lib/esm/{xychartDiagram-JWTSCODW-Csn18jU4.js → xychartDiagram-JWTSCODW-yIaPAmwy.js} +6 -6
- package/lib/esm/{xychartDiagram-JWTSCODW-Csn18jU4.js.map → xychartDiagram-JWTSCODW-yIaPAmwy.js.map} +1 -1
- package/lib/types/components/charts/MetricHistoryChart.d.ts +22 -0
- package/lib/types/components/charts/MetricHistoryChart.d.ts.map +1 -0
- package/lib/types/components/charts/metricHistoryChart.css.d.ts +8 -0
- package/lib/types/components/charts/metricHistoryChart.css.d.ts.map +1 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/lib/esm/BackofficeJsonViewerAsync-Czd9VhUz.js +0 -10
- package/lib/esm/katex-C5br0dxW.js.map +0 -1
- package/lib/esm/src-D6nEpsqe.js.map +0 -1
package/lib/esm/{blockDiagram-WCTKOSBZ-C8Ohzdg3.js.map → blockDiagram-WCTKOSBZ-0tOAzLGT.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockDiagram-WCTKOSBZ-C8Ohzdg3.js","names":["khroma.channel","khroma.rgba","select","curveBasis","line","select2","select3","graphlib.Graph","d3select"],"sources":["../../../../node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-WCTKOSBZ.mjs"],"sourcesContent":["import {\n getIconStyles\n} from \"./chunk-FMBD7UC4.mjs\";\nimport {\n computeLabelTransform,\n getLineFunctionsWithOffset\n} from \"./chunk-MX3YWQON.mjs\";\nimport {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-YBOYWFTD.mjs\";\nimport {\n createText\n} from \"./chunk-PU5JKC2W.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-GEFDOKGD.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n getUrl,\n sanitizeText\n} from \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/block/parser/block.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 15], $V1 = [1, 7], $V2 = [1, 13], $V3 = [1, 14], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 10, 21, 28, 29, 30, 31, 39, 43, 46], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 10, 15, 16, 21, 28, 29, 30, 31, 39, 43, 46], $Vd = [8, 10, 15, 16, 21, 27, 28, 29, 30, 31, 39, 43, 46], $Ve = [1, 49];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"spaceLines\": 3, \"SPACELINE\": 4, \"NL\": 5, \"separator\": 6, \"SPACE\": 7, \"EOF\": 8, \"start\": 9, \"BLOCK_DIAGRAM_KEY\": 10, \"document\": 11, \"stop\": 12, \"statement\": 13, \"link\": 14, \"LINK\": 15, \"START_LINK\": 16, \"LINK_LABEL\": 17, \"STR\": 18, \"nodeStatement\": 19, \"columnsStatement\": 20, \"SPACE_BLOCK\": 21, \"blockStatement\": 22, \"classDefStatement\": 23, \"cssClassStatement\": 24, \"styleStatement\": 25, \"node\": 26, \"SIZE\": 27, \"COLUMNS\": 28, \"id-block\": 29, \"end\": 30, \"NODE_ID\": 31, \"nodeShapeNLabel\": 32, \"dirList\": 33, \"DIR\": 34, \"NODE_DSTART\": 35, \"NODE_DEND\": 36, \"BLOCK_ARROW_START\": 37, \"BLOCK_ARROW_END\": 38, \"classDef\": 39, \"CLASSDEF_ID\": 40, \"CLASSDEF_STYLEOPTS\": 41, \"DEFAULT\": 42, \"class\": 43, \"CLASSENTITY_IDS\": 44, \"STYLECLASS\": 45, \"style\": 46, \"STYLE_ENTITY_IDS\": 47, \"STYLE_DEFINITION_DATA\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACELINE\", 5: \"NL\", 7: \"SPACE\", 8: \"EOF\", 10: \"BLOCK_DIAGRAM_KEY\", 15: \"LINK\", 16: \"START_LINK\", 17: \"LINK_LABEL\", 18: \"STR\", 21: \"SPACE_BLOCK\", 27: \"SIZE\", 28: \"COLUMNS\", 29: \"id-block\", 30: \"end\", 31: \"NODE_ID\", 34: \"DIR\", 35: \"NODE_DSTART\", 36: \"NODE_DEND\", 37: \"BLOCK_ARROW_START\", 38: \"BLOCK_ARROW_END\", 39: \"classDef\", 40: \"CLASSDEF_ID\", 41: \"CLASSDEF_STYLEOPTS\", 42: \"DEFAULT\", 43: \"class\", 44: \"CLASSENTITY_IDS\", 45: \"STYLECLASS\", 46: \"style\", 47: \"STYLE_ENTITY_IDS\", 48: \"STYLE_DEFINITION_DATA\" },\n productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [33, 1], [33, 2], [32, 3], [32, 4], [23, 3], [23, 3], [24, 3], [25, 3]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.getLogger().debug(\"Rule: separator (NL) \");\n break;\n case 5:\n yy.getLogger().debug(\"Rule: separator (Space) \");\n break;\n case 6:\n yy.getLogger().debug(\"Rule: separator (EOF) \");\n break;\n case 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0 - 1]);\n yy.setHierarchy($$[$0 - 1]);\n break;\n case 8:\n yy.getLogger().debug(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().debug(\"Stop EOF \");\n break;\n case 10:\n yy.getLogger().debug(\"Stop NL2 \");\n break;\n case 11:\n yy.getLogger().debug(\"Stop EOF2 \");\n break;\n case 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]);\n typeof $$[$0].length === \"number\" ? this.$ = $$[$0] : this.$ = [$$[$0]];\n break;\n case 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0 - 1]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext);\n this.$ = { edgeTypeStr: $$[$0], label: \"\" };\n break;\n case 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0 - 3], $$[$0 - 1], $$[$0]);\n this.$ = { edgeTypeStr: $$[$0], label: $$[$0 - 1] };\n break;\n case 18:\n const num = parseInt($$[$0]);\n const spaceId = yy.generateId();\n this.$ = { id: spaceId, type: \"space\", label: \"\", width: num, children: [] };\n break;\n case 23:\n yy.getLogger().debug(\"Rule: (nodeStatement link node) \", $$[$0 - 2], $$[$0 - 1], $$[$0], \" typestr: \", $$[$0 - 1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0 - 1].edgeTypeStr);\n this.$ = [\n { id: $$[$0 - 2].id, label: $$[$0 - 2].label, type: $$[$0 - 2].type, directions: $$[$0 - 2].directions },\n { id: $$[$0 - 2].id + \"-\" + $$[$0].id, start: $$[$0 - 2].id, end: $$[$0].id, label: $$[$0 - 1].label, type: \"edge\", directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: \"arrow_open\" },\n { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions }\n ];\n break;\n case 24:\n yy.getLogger().debug(\"Rule: nodeStatement (abc88 node size) \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1].id, label: $$[$0 - 1].label, type: yy.typeStr2Type($$[$0 - 1].typeStr), directions: $$[$0 - 1].directions, widthInColumns: parseInt($$[$0], 10) };\n break;\n case 25:\n yy.getLogger().debug(\"Rule: nodeStatement (node) \", $$[$0]);\n this.$ = { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns: 1 };\n break;\n case 26:\n yy.getLogger().debug(\"APA123\", this ? this : \"na\");\n yy.getLogger().debug(\"COLUMNS: \", $$[$0]);\n this.$ = { type: \"column-setting\", columns: $$[$0] === \"auto\" ? -1 : parseInt($$[$0]) };\n break;\n case 27:\n yy.getLogger().debug(\"Rule: id-block statement : \", $$[$0 - 2], $$[$0 - 1]);\n const id2 = yy.generateId();\n this.$ = { ...$$[$0 - 2], type: \"composite\", children: $$[$0 - 1] };\n break;\n case 28:\n yy.getLogger().debug(\"Rule: blockStatement : \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n const id = yy.generateId();\n this.$ = { id, type: \"composite\", label: \"\", children: $$[$0 - 1] };\n break;\n case 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]);\n this.$ = { id: $$[$0] };\n break;\n case 30:\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n break;\n case 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]);\n this.$ = [$$[$0]];\n break;\n case 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0 - 1], $$[$0]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 2] + $$[$0], label: $$[$0 - 1] };\n break;\n case 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0 - 3], $$[$0 - 2], \" #3:\", $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 3] + $$[$0], label: $$[$0 - 2], directions: $$[$0 - 1] };\n break;\n case 35:\n case 36:\n this.$ = { type: \"classDef\", id: $$[$0 - 1].trim(), css: $$[$0].trim() };\n break;\n case 37:\n this.$ = { type: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n this.$ = { type: \"applyStyles\", id: $$[$0 - 1].trim(), stylesStr: $$[$0].trim() };\n break;\n }\n }, \"anonymous\"),\n table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 10: $V0, 11: 3, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 8: [1, 20] }, o($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 10: $V0, 21: $V1, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }), o($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o($V9, [2, 17]), o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), o($V9, [2, 21]), o($V9, [2, 22]), o($Vc, [2, 25], { 27: [1, 25] }), o($V9, [2, 26]), { 19: 26, 26: 12, 31: $V4 }, { 10: $V0, 11: 27, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 40: [1, 28], 42: [1, 29] }, { 44: [1, 30] }, { 47: [1, 31] }, o($Vd, [2, 29], { 32: 32, 35: [1, 33], 37: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 31: $V4 }, { 31: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 10: $V0, 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 30: [1, 38] }, { 41: [1, 39] }, { 41: [1, 40] }, { 45: [1, 41] }, { 48: [1, 42] }, o($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o($V9, [2, 28]), o($V9, [2, 35]), o($V9, [2, 36]), o($V9, [2, 37]), o($V9, [2, 38]), { 36: [1, 47] }, { 33: 48, 34: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 38: [1, 51] }, { 33: 52, 34: $Ve, 38: [2, 31] }, { 31: [2, 15] }, o($Vd, [2, 34]), { 38: [2, 32] }],\n defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: {},\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().debug(\"Found block-beta\");\n return 10;\n break;\n case 1:\n yy.getLogger().debug(\"Found id-block\");\n return 29;\n break;\n case 2:\n yy.getLogger().debug(\"Found block\");\n return 10;\n break;\n case 3:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 4:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 5:\n return 5;\n break;\n case 6:\n yy_.yytext = -1;\n return 28;\n break;\n case 7:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n break;\n case 8:\n this.pushState(\"md_string\");\n break;\n case 9:\n return \"MD_STR\";\n break;\n case 10:\n this.popState();\n break;\n case 11:\n this.pushState(\"string\");\n break;\n case 12:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 13:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n break;\n case 14:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n break;\n case 15:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n break;\n case 16:\n return 42;\n break;\n case 17:\n return \"LINKSTYLE\";\n break;\n case 18:\n return \"INTERPOLATE\";\n break;\n case 19:\n this.pushState(\"CLASSDEF\");\n return 39;\n break;\n case 20:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 40;\n break;\n case 22:\n this.popState();\n return 41;\n break;\n case 23:\n this.pushState(\"CLASS\");\n return 43;\n break;\n case 24:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 44;\n break;\n case 25:\n this.popState();\n return 45;\n break;\n case 26:\n this.pushState(\"STYLE_STMNT\");\n return 46;\n break;\n case 27:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 47;\n break;\n case 28:\n this.popState();\n return 48;\n break;\n case 29:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n break;\n case 30:\n this.popState();\n return \"acc_title_value\";\n break;\n case 31:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n break;\n case 32:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 33:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return \"acc_descr_multiline_value\";\n break;\n case 36:\n return 30;\n break;\n case 37:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 38:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 39:\n this.popState();\n yy.getLogger().debug(\"Lex: ))\");\n return \"NODE_DEND\";\n break;\n case 40:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 41:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 42:\n this.popState();\n yy.getLogger().debug(\"Lex: (-\");\n return \"NODE_DEND\";\n break;\n case 43:\n this.popState();\n yy.getLogger().debug(\"Lex: -)\");\n return \"NODE_DEND\";\n break;\n case 44:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 45:\n this.popState();\n yy.getLogger().debug(\"Lex: ]]\");\n return \"NODE_DEND\";\n break;\n case 46:\n this.popState();\n yy.getLogger().debug(\"Lex: (\");\n return \"NODE_DEND\";\n break;\n case 47:\n this.popState();\n yy.getLogger().debug(\"Lex: ])\");\n return \"NODE_DEND\";\n break;\n case 48:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 49:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 50:\n this.popState();\n yy.getLogger().debug(\"Lex: )]\");\n return \"NODE_DEND\";\n break;\n case 51:\n this.popState();\n yy.getLogger().debug(\"Lex: )\");\n return \"NODE_DEND\";\n break;\n case 52:\n this.popState();\n yy.getLogger().debug(\"Lex: ]>\");\n return \"NODE_DEND\";\n break;\n case 53:\n this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n break;\n case 54:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 55:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 56:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 57:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 58:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 59:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 62:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 63:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 64:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 65:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 66:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 67:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 68:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 69:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 70:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 71:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 72:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 73:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 37;\n break;\n case 74:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 31;\n break;\n case 75:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n break;\n case 76:\n this.pushState(\"md_string\");\n break;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n return \"NODE_DESCR\";\n break;\n case 79:\n this.popState();\n break;\n case 80:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 81:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n break;\n case 83:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 84:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 85:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n break;\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n break;\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n break;\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n break;\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n break;\n case 91:\n yy_.yytext = \"]>\";\n yy.getLogger().debug(\"Lex (ARROW_DIR end):\", yy_.yytext);\n this.popState();\n this.popState();\n return \"BLOCK_ARROW_END\";\n break;\n case 92:\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 93:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 94:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 95:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 96:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 97:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 98:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 99:\n this.pushState(\"md_string\");\n break;\n case 100:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\n break;\n case 101:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 102:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 103:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 104:\n yy.getLogger().debug(\"Lex: COLON\", yy_.yytext);\n yy_.yytext = yy_.yytext.slice(1);\n return 27;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:block-beta\\b)/, /^(?:block:)/, /^(?:block\\b)/, /^(?:[\\s]+)/, /^(?:[\\n]+)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:columns\\s+auto\\b)/, /^(?:columns\\s+[\\d]+)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:space[:]\\d+)/, /^(?:space\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\s+)/, /^(?:DEFAULT\\s+)/, /^(?:\\w+\\s+)/, /^(?:[^\\n]*)/, /^(?:class\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:style\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:end\\b\\s*)/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:[\\)]\\))/, /^(?:\\}\\})/, /^(?:\\})/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\()/, /^(?:\\]\\])/, /^(?:\\()/, /^(?:\\]\\))/, /^(?:\\\\\\])/, /^(?:\\/\\])/, /^(?:\\)\\])/, /^(?:[\\)])/, /^(?:\\]>)/, /^(?:[\\]])/, /^(?:-\\))/, /^(?:\\(-)/, /^(?:\\)\\))/, /^(?:\\))/, /^(?:\\(\\(\\()/, /^(?:\\(\\()/, /^(?:\\{\\{)/, /^(?:\\{)/, /^(?:>)/, /^(?:\\(\\[)/, /^(?:\\()/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\[\\\\)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:\\[)/, /^(?:<\\[)/, /^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:]+)/, /^(?:$)/, /^(?:[\"][`])/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:\\]>\\s*\\()/, /^(?:,?\\s*right\\s*)/, /^(?:,?\\s*left\\s*)/, /^(?:,?\\s*x\\s*)/, /^(?:,?\\s*y\\s*)/, /^(?:,?\\s*up\\s*)/, /^(?:,?\\s*down\\s*)/, /^(?:\\)\\s*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[\"][`])/, /^(?:[\"])/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?::\\d+)/],\n conditions: { \"STYLE_DEFINITION\": { \"rules\": [28], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [22], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [20, 21], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [25], \"inclusive\": false }, \"CLASS\": { \"rules\": [24], \"inclusive\": false }, \"LLABEL\": { \"rules\": [99, 100, 101, 102, 103], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [85, 86, 87, 88, 89, 90, 91], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [76, 81, 84], \"inclusive\": false }, \"NODE\": { \"rules\": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 77, 80], \"inclusive\": false }, \"md_string\": { \"rules\": [9, 10, 78, 79], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [12, 13, 82, 83], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [34, 35], \"inclusive\": false }, \"acc_descr\": { \"rules\": [32], \"inclusive\": false }, \"acc_title\": { \"rules\": [30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 23, 26, 29, 31, 33, 36, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 92, 93, 94, 95, 96, 97, 98, 104], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar block_default = parser;\n\n// src/diagrams/block/blockDB.ts\nimport clone from \"lodash-es/clone.js\";\nvar blockDatabase = /* @__PURE__ */ new Map();\nvar edgeList = [];\nvar edgeCount = /* @__PURE__ */ new Map();\nvar COLOR_KEYWORD = \"color\";\nvar FILL_KEYWORD = \"fill\";\nvar BG_FILL = \"bgFill\";\nvar STYLECLASS_SEP = \",\";\nvar config = getConfig2();\nvar classes = /* @__PURE__ */ new Map();\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, config), \"sanitizeText\");\nvar addStyleClass = /* @__PURE__ */ __name(function(id, styleAttributes = \"\") {\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id, styles: [], textStyles: [] };\n classes.set(id, foundClass);\n }\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n}, \"addStyleClass\");\nvar addStyle2Node = /* @__PURE__ */ __name(function(id, styles = \"\") {\n const foundBlock = blockDatabase.get(id);\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n}, \"addStyle2Node\");\nvar setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: \"na\", children: [] };\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n}, \"setCssClass\");\nvar populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === \"column-setting\");\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (typeof column === \"number\" && column > 0 && block.type !== \"column-setting\" && typeof block.widthInColumns === \"number\" && block.widthInColumns > column) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText2(block.label);\n }\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, block?.styleClass ?? \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns ?? -1;\n } else if (block.type === \"edge\") {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n if (existingBlock === void 0) {\n blockDatabase.set(block.id, block);\n } else {\n if (block.type !== \"na\") {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + \"-\" + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === void 0) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n}, \"populateBlockDatabase\");\nvar blocks = [];\nvar rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nvar clear2 = /* @__PURE__ */ __name(() => {\n log.debug(\"Clear called\");\n clear();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = /* @__PURE__ */ new Map([[\"root\", rootBlock]]);\n blocks = [];\n classes = /* @__PURE__ */ new Map();\n edgeList = [];\n edgeCount = /* @__PURE__ */ new Map();\n}, \"clear\");\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\n__name(typeStr2Type, \"typeStr2Type\");\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\n__name(edgeTypeStr2Type, \"edgeTypeStr2Type\");\nfunction edgeStrToEdgeData(typeStr) {\n switch (typeStr.replace(/^[\\s-]+|[\\s-]+$/g, \"\")) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \">\":\n return \"arrow_point\";\n default:\n return \"\";\n }\n}\n__name(edgeStrToEdgeData, \"edgeStrToEdgeData\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nvar setHierarchy = /* @__PURE__ */ __name((block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n}, \"setHierarchy\");\nvar getColumns = /* @__PURE__ */ __name((blockId) => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n}, \"getColumns\");\nvar getBlocksFlat = /* @__PURE__ */ __name(() => {\n return [...blockDatabase.values()];\n}, \"getBlocksFlat\");\nvar getBlocks = /* @__PURE__ */ __name(() => {\n return blocks || [];\n}, \"getBlocks\");\nvar getEdges = /* @__PURE__ */ __name(() => {\n return edgeList;\n}, \"getEdges\");\nvar getBlock = /* @__PURE__ */ __name((id) => {\n return blockDatabase.get(id);\n}, \"getBlock\");\nvar setBlock = /* @__PURE__ */ __name((block) => {\n blockDatabase.set(block.id, block);\n}, \"setBlock\");\nvar getLogger = /* @__PURE__ */ __name(() => log, \"getLogger\");\nvar getClasses = /* @__PURE__ */ __name(function() {\n return classes;\n}, \"getClasses\");\nvar db = {\n getConfig: /* @__PURE__ */ __name(() => getConfig().block, \"getConfig\"),\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear: clear2,\n generateId\n};\nvar blockDB_default = db;\n\n// src/diagrams/block/styles.ts\nimport * as khroma from \"khroma\";\nvar fade = /* @__PURE__ */ __name((color, opacity) => {\n const channel2 = khroma.channel;\n const r = channel2(color, \"r\");\n const g = channel2(color, \"g\");\n const b = channel2(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n}, \"fade\");\nvar getStyles = /* @__PURE__ */ __name((options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \\`<p>\\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/block/blockRenderer.ts\nimport { select as d3select } from \"d3\";\n\n// src/dagre-wrapper/markers.js\nvar insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n}, \"insertMarkers\");\nvar extension = /* @__PURE__ */ __name((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}, \"extension\");\nvar composition = /* @__PURE__ */ __name((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}, \"composition\");\nvar aggregation = /* @__PURE__ */ __name((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}, \"aggregation\");\nvar dependency = /* @__PURE__ */ __name((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}, \"dependency\");\nvar lollipop = /* @__PURE__ */ __name((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}, \"lollipop\");\nvar point = /* @__PURE__ */ __name((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}, \"point\");\nvar circle = /* @__PURE__ */ __name((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}, \"circle\");\nvar cross = /* @__PURE__ */ __name((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}, \"cross\");\nvar barb = /* @__PURE__ */ __name((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}, \"barb\");\nvar markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb\n};\nvar markers_default = insertMarkers;\n\n// src/diagrams/block/layout.ts\nvar padding = getConfig2()?.block?.padding ?? 8;\nfunction calculateBlockPosition(columns, position) {\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error(\"Columns must be an integer !== 0.\");\n }\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error(\"Position must be a non-negative integer.\" + position);\n }\n if (columns < 0) {\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n return { px: 0, py: position };\n }\n const px = position % columns;\n const py = Math.floor(position / columns);\n return { px, py };\n}\n__name(calculateBlockPosition, \"calculateBlockPosition\");\nvar getMaxChildSize = /* @__PURE__ */ __name((block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n \"getMaxChildSize abc95 child:\",\n child.id,\n \"width:\",\n width,\n \"height:\",\n height,\n \"x:\",\n x,\n \"y:\",\n y,\n child.type\n );\n if (child.type === \"space\") {\n continue;\n }\n if (width > maxWidth) {\n maxWidth = width / (child.widthInColumns ?? 1);\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n}, \"getMaxChildSize\");\nfunction setBlockSizes(block, db2, siblingWidth = 0, siblingHeight = 0) {\n log.debug(\n \"setBlockSizes abc95 (start)\",\n block.id,\n block?.size?.x,\n \"block width =\",\n block?.size,\n \"siblingWidth\",\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db2);\n }\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug(\"setBlockSizes abc95 maxWidth of\", block.id, \":s children is \", maxWidth, maxHeight);\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db2, maxWidth, maxHeight);\n }\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n const ySize = Math.ceil(numItems / xSize);\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n log.debug(\"Size indata abc88\", block.id, \"childWidth\", childWidth, \"maxWidth\", maxWidth);\n log.debug(\"Size indata abc88\", block.id, \"childHeight\", childHeight, \"maxHeight\", maxHeight);\n log.debug(\"Size indata abc88 xSize\", xSize, \"padding\", padding);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug(\"abc95 (growing to fit) width\", block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0\n };\n }\n log.debug(\n \"setBlockSizes abc94 (done)\",\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n__name(setBlockSizes, \"setBlockSizes\");\nfunction layoutBlocks(block, db2) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug(\"layoutBlocks columns abc95\", block.id, \"=>\", columns, block);\n if (block.children && // find max width of children\n block.children.length > 0) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n log.debug(\"widthOfChildren 88\", widthOfChildren, \"posX\");\n const rowHeights = /* @__PURE__ */ new Map();\n {\n let colPos = 0;\n for (const child of block.children) {\n if (!child.size) {\n continue;\n }\n const { py } = calculateBlockPosition(columns, colPos);\n const currentMax = rowHeights.get(py) ?? 0;\n if (child.size.height > currentMax) {\n rowHeights.set(py, child.size.height);\n }\n let filled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n filled = Math.min(filled, columns - colPos % columns);\n }\n colPos += filled;\n }\n }\n const rowYOffsets = /* @__PURE__ */ new Map();\n {\n let offset = 0;\n const rows = [...rowHeights.keys()].sort((a, b) => a - b);\n for (const row of rows) {\n rowYOffsets.set(row, offset);\n offset += (rowHeights.get(row) ?? 0) + padding;\n }\n }\n let columnPos = 0;\n log.debug(\"abc91 block?.size?.x\", block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n if (!child.size) {\n continue;\n }\n const { width: width2, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug(\"New row in layout for block\", block.id, \" and child \", child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width2}${padding}`\n );\n if (parent.size) {\n const halfWidth = width2 / 2;\n child.size.x = startingPosX + padding + halfWidth;\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n startingPosX = child.size.x + halfWidth;\n const rowYOffset = rowYOffsets.get(py) ?? 0;\n const rowHeight = rowHeights.get(py) ?? height;\n child.size.y = parent.size.y - parent.size.height / 2 + rowYOffset + rowHeight / 2 + padding;\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db2);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n columnsFilled = Math.min(columnsFilled, columns - columnPos % columns);\n }\n columnPos += columnsFilled;\n log.debug(\"abc88 columnsPos\", child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n__name(layoutBlocks, \"layoutBlocks\");\nfunction findBounds(block, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {\n if (block.size && block.id !== \"root\") {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n__name(findBounds, \"findBounds\");\nfunction layout(db2) {\n const root = db2.getBlock(\"root\");\n if (!root) {\n return;\n }\n setBlockSizes(root, db2, 0, 0);\n layoutBlocks(root, db2);\n log.debug(\"getBlocks\", JSON.stringify(root, null, 2));\n const { minX, minY, maxX, maxY } = findBounds(root);\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n__name(layout, \"layout\");\n\n// src/diagrams/block/renderHelpers.ts\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\n\n// src/dagre-wrapper/createLabel.js\nvar createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config2 = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config2);\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY\n },\n config2\n );\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((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}, \"addEdgeMarkers\");\nvar 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};\nvar addEdgeMarker = /* @__PURE__ */ __name((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}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {\n const config2 = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config2);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n const isMarkdown = edge.labelType === \"markdown\";\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n // TODO: The old code only set addSvgBackground when using markdown, but\n // this function is only used by block diagrams which never use markdown.\n addSvgBackground: isMarkdown,\n isNode: false,\n markdown: isMarkdown,\n // If using markdown, wrap using default width\n width: isMarkdown ? void 0 : Number.POSITIVE_INFINITY\n },\n config2\n );\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n } else {\n const textEl = select(labelElement).select(\"text\").node();\n if (textEl && typeof textEl.getBBox === \"function\") {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr(\"transform\", computeLabelTransform(transformBbox, useHtmlLabels));\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(inner, edge.startLabelLeft, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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 startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(\n startEdgeLabelRight,\n edge.startLabelRight,\n edge.labelStyle\n );\n fo = startLabelElement;\n inner.node().appendChild(startLabelElement);\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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 endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(inner, edge.endLabelLeft, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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 endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(inner, edge.endLabelRight, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig2()) && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((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 = getConfig2();\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_default.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_default.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_default.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_default.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_default.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}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((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}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((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}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, 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}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(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?.intersect && 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 (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = getUrl(true);\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}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select3 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding2 = 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 * padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding2, 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 * padding2 },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding2, 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: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\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: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\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: -padding2 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n // top left corner of arrow\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n // Two points, the right corners\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\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: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 }\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: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\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}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, 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 intersect = intersect_line_default(\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 (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - 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}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((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}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select2 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(config2);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).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 let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n {\n useHtmlLabels,\n width: node.width || config2.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config2\n );\n } else {\n text = await createLabel_default(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n node.labelStyle,\n false,\n isNode\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (getEffectiveHtmlLabels(config2)) {\n const div = text.children[0];\n const dv = select2(text);\n await configureLabelImages(div, labelText);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig2());\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_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.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}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).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 = await createLabel_default(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = text.children[0];\n const dv = select3(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = await createLabel_default(\n label,\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n );\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = descr.children[0];\n const dv = select3(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.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, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.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, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name(async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = await createLabel_default(\n labelContainer,\n interfaceLabelText,\n node.labelStyle,\n true,\n true\n );\n let interfaceBBox = interfaceLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = interfaceLabel.children[0];\n const dv = select3(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getEffectiveHtmlLabels(getConfig2())) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = await createLabel_default(\n labelContainer,\n classTitleString,\n node.labelStyle,\n true,\n true\n );\n select3(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = classTitleLabel.children[0];\n const dv = select3(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n parsedText = parsedText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n displayText = displayText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select3(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select3(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle: circle2,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, renderOptions) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig2().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, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding2 = 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 - padding2) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\n// src/diagrams/block/renderHelpers.ts\nfunction getNodeFromBlock(block, db2, positioned = false) {\n const vertex = block;\n let classStr = \"default\";\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding2;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding2 = 0;\n break;\n case \"square\":\n shape = \"rect\";\n break;\n case \"diamond\":\n shape = \"question\";\n break;\n case \"hexagon\":\n shape = \"hexagon\";\n break;\n case \"block_arrow\":\n shape = \"block_arrow\";\n break;\n case \"odd\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n shape = \"lean_right\";\n break;\n case \"lean_left\":\n shape = \"lean_left\";\n break;\n case \"trapezoid\":\n shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n shape = \"inv_trapezoid\";\n break;\n case \"rect_left_inv_arrow\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n shape = \"circle\";\n break;\n case \"ellipse\":\n shape = \"ellipse\";\n break;\n case \"stadium\":\n shape = \"stadium\";\n break;\n case \"subroutine\":\n shape = \"subroutine\";\n break;\n case \"cylinder\":\n shape = \"cylinder\";\n break;\n case \"group\":\n shape = \"rect\";\n break;\n case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray(vertex?.styles ?? []);\n const vertexText = vertex.label;\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding2 ?? getConfig()?.block?.padding ?? 0\n };\n return node;\n}\n__name(getNodeFromBlock, \"getNodeFromBlock\");\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const config2 = getConfig();\n const nodeEl = await insertNode(elem, node, { config: config2 });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\n__name(calculateBlockSize, \"calculateBlockSize\");\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n const config2 = getConfig();\n await insertNode(elem, node, { config: config2 });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n__name(insertBlockPositioned, \"insertBlockPositioned\");\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\n__name(performOperations, \"performOperations\");\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\n__name(calculateBlockSizes, \"calculateBlockSizes\");\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\n__name(insertBlocks, \"insertBlocks\");\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if (startBlock?.size && endBlock?.size) {\n const start2 = startBlock.size;\n const end2 = endBlock.size;\n const points = [\n { x: start2.x, y: start2.y },\n { x: start2.x + (end2.x - start2.x) / 2, y: start2.y + (end2.y - start2.y) / 2 },\n { x: end2.x, y: end2.y }\n ];\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: edge.id },\n {\n ...edge,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\n__name(insertEdges, \"insertEdges\");\n\n// src/diagrams/block/blockRenderer.ts\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagObj) {\n return diagObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = d3select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n const markers2 = [\"point\", \"circle\", \"cross\"];\n markers_default(svg, markers2, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n}, \"draw\");\nvar blockRenderer_default = {\n draw,\n getClasses: getClasses2\n};\n\n// src/diagrams/block/blockDiagram.ts\nvar diagram = {\n parser: block_default,\n db: blockDB_default,\n renderer: blockRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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K,CAAC,GAAG,GAAG,CAAC;GAAE;IAAE,IAAI;IAAI,IAAI;IAAI,IAAI;IAAK;GAAE;IAAE,IAAI;IAAK,IAAI;IAAI,IAAI;IAAG,IAAI;IAAG,IAAI;IAAG,IAAI;IAAK,IAAI;IAAG,IAAI;IAAG,IAAI;IAAI,IAAI;IAAI,IAAI;IAAI,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK;GAAE;IAAE,IAAI,CAAC,GAAG,GAAG;IAAE,IAAI,CAAC,GAAG,GAAG;IAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,EAAE;IAAE,IAAI;IAAI,IAAI,CAAC,GAAG,GAAG;IAAE,IAAI,CAAC,GAAG,GAAG;IAAE,CAAC;GAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,CAAC;GAAE;IAAE,IAAI;IAAI,IAAI;IAAK;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,CAAC;GAAE;IAAE,IAAI;IAAK,IAAI;IAAI,IAAI;IAAG,IAAI;IAAI,IAAI;IAAK,IAAI;IAAK,IAAI;IAAG,IAAI;IAAG,IAAI;IAAK,IAAI;IAAG,IAAI;IAAG,IAAI;IAAI,IAAI;IAAI,IAAI;IAAI,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,CAAC;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAA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"}
|
|
1
|
+
{"version":3,"file":"blockDiagram-WCTKOSBZ-0tOAzLGT.js","names":["khroma.channel","khroma.rgba","select","curveBasis","line","select2","select3","graphlib.Graph","d3select"],"sources":["../../../../node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-WCTKOSBZ.mjs"],"sourcesContent":["import {\n getIconStyles\n} from \"./chunk-FMBD7UC4.mjs\";\nimport {\n computeLabelTransform,\n getLineFunctionsWithOffset\n} from \"./chunk-MX3YWQON.mjs\";\nimport {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-YBOYWFTD.mjs\";\nimport {\n createText\n} from \"./chunk-PU5JKC2W.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-GEFDOKGD.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n getUrl,\n sanitizeText\n} from \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/block/parser/block.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 15], $V1 = [1, 7], $V2 = [1, 13], $V3 = [1, 14], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 10, 21, 28, 29, 30, 31, 39, 43, 46], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 10, 15, 16, 21, 28, 29, 30, 31, 39, 43, 46], $Vd = [8, 10, 15, 16, 21, 27, 28, 29, 30, 31, 39, 43, 46], $Ve = [1, 49];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"spaceLines\": 3, \"SPACELINE\": 4, \"NL\": 5, \"separator\": 6, \"SPACE\": 7, \"EOF\": 8, \"start\": 9, \"BLOCK_DIAGRAM_KEY\": 10, \"document\": 11, \"stop\": 12, \"statement\": 13, \"link\": 14, \"LINK\": 15, \"START_LINK\": 16, \"LINK_LABEL\": 17, \"STR\": 18, \"nodeStatement\": 19, \"columnsStatement\": 20, \"SPACE_BLOCK\": 21, \"blockStatement\": 22, \"classDefStatement\": 23, \"cssClassStatement\": 24, \"styleStatement\": 25, \"node\": 26, \"SIZE\": 27, \"COLUMNS\": 28, \"id-block\": 29, \"end\": 30, \"NODE_ID\": 31, \"nodeShapeNLabel\": 32, \"dirList\": 33, \"DIR\": 34, \"NODE_DSTART\": 35, \"NODE_DEND\": 36, \"BLOCK_ARROW_START\": 37, \"BLOCK_ARROW_END\": 38, \"classDef\": 39, \"CLASSDEF_ID\": 40, \"CLASSDEF_STYLEOPTS\": 41, \"DEFAULT\": 42, \"class\": 43, \"CLASSENTITY_IDS\": 44, \"STYLECLASS\": 45, \"style\": 46, \"STYLE_ENTITY_IDS\": 47, \"STYLE_DEFINITION_DATA\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACELINE\", 5: \"NL\", 7: \"SPACE\", 8: \"EOF\", 10: \"BLOCK_DIAGRAM_KEY\", 15: \"LINK\", 16: \"START_LINK\", 17: \"LINK_LABEL\", 18: \"STR\", 21: \"SPACE_BLOCK\", 27: \"SIZE\", 28: \"COLUMNS\", 29: \"id-block\", 30: \"end\", 31: \"NODE_ID\", 34: \"DIR\", 35: \"NODE_DSTART\", 36: \"NODE_DEND\", 37: \"BLOCK_ARROW_START\", 38: \"BLOCK_ARROW_END\", 39: \"classDef\", 40: \"CLASSDEF_ID\", 41: \"CLASSDEF_STYLEOPTS\", 42: \"DEFAULT\", 43: \"class\", 44: \"CLASSENTITY_IDS\", 45: \"STYLECLASS\", 46: \"style\", 47: \"STYLE_ENTITY_IDS\", 48: \"STYLE_DEFINITION_DATA\" },\n productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [33, 1], [33, 2], [32, 3], [32, 4], [23, 3], [23, 3], [24, 3], [25, 3]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.getLogger().debug(\"Rule: separator (NL) \");\n break;\n case 5:\n yy.getLogger().debug(\"Rule: separator (Space) \");\n break;\n case 6:\n yy.getLogger().debug(\"Rule: separator (EOF) \");\n break;\n case 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0 - 1]);\n yy.setHierarchy($$[$0 - 1]);\n break;\n case 8:\n yy.getLogger().debug(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().debug(\"Stop EOF \");\n break;\n case 10:\n yy.getLogger().debug(\"Stop NL2 \");\n break;\n case 11:\n yy.getLogger().debug(\"Stop EOF2 \");\n break;\n case 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]);\n typeof $$[$0].length === \"number\" ? this.$ = $$[$0] : this.$ = [$$[$0]];\n break;\n case 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0 - 1]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext);\n this.$ = { edgeTypeStr: $$[$0], label: \"\" };\n break;\n case 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0 - 3], $$[$0 - 1], $$[$0]);\n this.$ = { edgeTypeStr: $$[$0], label: $$[$0 - 1] };\n break;\n case 18:\n const num = parseInt($$[$0]);\n const spaceId = yy.generateId();\n this.$ = { id: spaceId, type: \"space\", label: \"\", width: num, children: [] };\n break;\n case 23:\n yy.getLogger().debug(\"Rule: (nodeStatement link node) \", $$[$0 - 2], $$[$0 - 1], $$[$0], \" typestr: \", $$[$0 - 1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0 - 1].edgeTypeStr);\n this.$ = [\n { id: $$[$0 - 2].id, label: $$[$0 - 2].label, type: $$[$0 - 2].type, directions: $$[$0 - 2].directions },\n { id: $$[$0 - 2].id + \"-\" + $$[$0].id, start: $$[$0 - 2].id, end: $$[$0].id, label: $$[$0 - 1].label, type: \"edge\", directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: \"arrow_open\" },\n { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions }\n ];\n break;\n case 24:\n yy.getLogger().debug(\"Rule: nodeStatement (abc88 node size) \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1].id, label: $$[$0 - 1].label, type: yy.typeStr2Type($$[$0 - 1].typeStr), directions: $$[$0 - 1].directions, widthInColumns: parseInt($$[$0], 10) };\n break;\n case 25:\n yy.getLogger().debug(\"Rule: nodeStatement (node) \", $$[$0]);\n this.$ = { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns: 1 };\n break;\n case 26:\n yy.getLogger().debug(\"APA123\", this ? this : \"na\");\n yy.getLogger().debug(\"COLUMNS: \", $$[$0]);\n this.$ = { type: \"column-setting\", columns: $$[$0] === \"auto\" ? -1 : parseInt($$[$0]) };\n break;\n case 27:\n yy.getLogger().debug(\"Rule: id-block statement : \", $$[$0 - 2], $$[$0 - 1]);\n const id2 = yy.generateId();\n this.$ = { ...$$[$0 - 2], type: \"composite\", children: $$[$0 - 1] };\n break;\n case 28:\n yy.getLogger().debug(\"Rule: blockStatement : \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n const id = yy.generateId();\n this.$ = { id, type: \"composite\", label: \"\", children: $$[$0 - 1] };\n break;\n case 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]);\n this.$ = { id: $$[$0] };\n break;\n case 30:\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n break;\n case 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]);\n this.$ = [$$[$0]];\n break;\n case 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0 - 1], $$[$0]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 2] + $$[$0], label: $$[$0 - 1] };\n break;\n case 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0 - 3], $$[$0 - 2], \" #3:\", $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 3] + $$[$0], label: $$[$0 - 2], directions: $$[$0 - 1] };\n break;\n case 35:\n case 36:\n this.$ = { type: \"classDef\", id: $$[$0 - 1].trim(), css: $$[$0].trim() };\n break;\n case 37:\n this.$ = { type: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n this.$ = { type: \"applyStyles\", id: $$[$0 - 1].trim(), stylesStr: $$[$0].trim() };\n break;\n }\n }, \"anonymous\"),\n table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 10: $V0, 11: 3, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 8: [1, 20] }, o($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 10: $V0, 21: $V1, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }), o($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o($V9, [2, 17]), o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), o($V9, [2, 21]), o($V9, [2, 22]), o($Vc, [2, 25], { 27: [1, 25] }), o($V9, [2, 26]), { 19: 26, 26: 12, 31: $V4 }, { 10: $V0, 11: 27, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 40: [1, 28], 42: [1, 29] }, { 44: [1, 30] }, { 47: [1, 31] }, o($Vd, [2, 29], { 32: 32, 35: [1, 33], 37: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 31: $V4 }, { 31: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 10: $V0, 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 30: [1, 38] }, { 41: [1, 39] }, { 41: [1, 40] }, { 45: [1, 41] }, { 48: [1, 42] }, o($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o($V9, [2, 28]), o($V9, [2, 35]), o($V9, [2, 36]), o($V9, [2, 37]), o($V9, [2, 38]), { 36: [1, 47] }, { 33: 48, 34: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 38: [1, 51] }, { 33: 52, 34: $Ve, 38: [2, 31] }, { 31: [2, 15] }, o($Vd, [2, 34]), { 38: [2, 32] }],\n defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: {},\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().debug(\"Found block-beta\");\n return 10;\n break;\n case 1:\n yy.getLogger().debug(\"Found id-block\");\n return 29;\n break;\n case 2:\n yy.getLogger().debug(\"Found block\");\n return 10;\n break;\n case 3:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 4:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 5:\n return 5;\n break;\n case 6:\n yy_.yytext = -1;\n return 28;\n break;\n case 7:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n break;\n case 8:\n this.pushState(\"md_string\");\n break;\n case 9:\n return \"MD_STR\";\n break;\n case 10:\n this.popState();\n break;\n case 11:\n this.pushState(\"string\");\n break;\n case 12:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 13:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n break;\n case 14:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n break;\n case 15:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n break;\n case 16:\n return 42;\n break;\n case 17:\n return \"LINKSTYLE\";\n break;\n case 18:\n return \"INTERPOLATE\";\n break;\n case 19:\n this.pushState(\"CLASSDEF\");\n return 39;\n break;\n case 20:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 40;\n break;\n case 22:\n this.popState();\n return 41;\n break;\n case 23:\n this.pushState(\"CLASS\");\n return 43;\n break;\n case 24:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 44;\n break;\n case 25:\n this.popState();\n return 45;\n break;\n case 26:\n this.pushState(\"STYLE_STMNT\");\n return 46;\n break;\n case 27:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 47;\n break;\n case 28:\n this.popState();\n return 48;\n break;\n case 29:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n break;\n case 30:\n this.popState();\n return \"acc_title_value\";\n break;\n case 31:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n break;\n case 32:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 33:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return \"acc_descr_multiline_value\";\n break;\n case 36:\n return 30;\n break;\n case 37:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 38:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 39:\n this.popState();\n yy.getLogger().debug(\"Lex: ))\");\n return \"NODE_DEND\";\n break;\n case 40:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 41:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 42:\n this.popState();\n yy.getLogger().debug(\"Lex: (-\");\n return \"NODE_DEND\";\n break;\n case 43:\n this.popState();\n yy.getLogger().debug(\"Lex: -)\");\n return \"NODE_DEND\";\n break;\n case 44:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 45:\n this.popState();\n yy.getLogger().debug(\"Lex: ]]\");\n return \"NODE_DEND\";\n break;\n case 46:\n this.popState();\n yy.getLogger().debug(\"Lex: (\");\n return \"NODE_DEND\";\n break;\n case 47:\n this.popState();\n yy.getLogger().debug(\"Lex: ])\");\n return \"NODE_DEND\";\n break;\n case 48:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 49:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 50:\n this.popState();\n yy.getLogger().debug(\"Lex: )]\");\n return \"NODE_DEND\";\n break;\n case 51:\n this.popState();\n yy.getLogger().debug(\"Lex: )\");\n return \"NODE_DEND\";\n break;\n case 52:\n this.popState();\n yy.getLogger().debug(\"Lex: ]>\");\n return \"NODE_DEND\";\n break;\n case 53:\n this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n break;\n case 54:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 55:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 56:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 57:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 58:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 59:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 62:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 63:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 64:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 65:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 66:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 67:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 68:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 69:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 70:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 71:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 72:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 73:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 37;\n break;\n case 74:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 31;\n break;\n case 75:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n break;\n case 76:\n this.pushState(\"md_string\");\n break;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n return \"NODE_DESCR\";\n break;\n case 79:\n this.popState();\n break;\n case 80:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 81:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n break;\n case 83:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 84:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 85:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n break;\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n break;\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n break;\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n break;\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n break;\n case 91:\n yy_.yytext = \"]>\";\n yy.getLogger().debug(\"Lex (ARROW_DIR end):\", yy_.yytext);\n this.popState();\n this.popState();\n return \"BLOCK_ARROW_END\";\n break;\n case 92:\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 93:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 94:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 95:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 96:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 97:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 98:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 99:\n this.pushState(\"md_string\");\n break;\n case 100:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\n break;\n case 101:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 102:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 103:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 104:\n yy.getLogger().debug(\"Lex: COLON\", yy_.yytext);\n yy_.yytext = yy_.yytext.slice(1);\n return 27;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:block-beta\\b)/, /^(?:block:)/, /^(?:block\\b)/, /^(?:[\\s]+)/, /^(?:[\\n]+)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:columns\\s+auto\\b)/, /^(?:columns\\s+[\\d]+)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:space[:]\\d+)/, /^(?:space\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\s+)/, /^(?:DEFAULT\\s+)/, /^(?:\\w+\\s+)/, /^(?:[^\\n]*)/, /^(?:class\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:style\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:end\\b\\s*)/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:[\\)]\\))/, /^(?:\\}\\})/, /^(?:\\})/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\()/, /^(?:\\]\\])/, /^(?:\\()/, /^(?:\\]\\))/, /^(?:\\\\\\])/, /^(?:\\/\\])/, /^(?:\\)\\])/, /^(?:[\\)])/, /^(?:\\]>)/, /^(?:[\\]])/, /^(?:-\\))/, /^(?:\\(-)/, /^(?:\\)\\))/, /^(?:\\))/, /^(?:\\(\\(\\()/, /^(?:\\(\\()/, /^(?:\\{\\{)/, /^(?:\\{)/, /^(?:>)/, /^(?:\\(\\[)/, /^(?:\\()/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\[\\\\)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:\\[)/, /^(?:<\\[)/, /^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:]+)/, /^(?:$)/, /^(?:[\"][`])/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:\\]>\\s*\\()/, /^(?:,?\\s*right\\s*)/, /^(?:,?\\s*left\\s*)/, /^(?:,?\\s*x\\s*)/, /^(?:,?\\s*y\\s*)/, /^(?:,?\\s*up\\s*)/, /^(?:,?\\s*down\\s*)/, /^(?:\\)\\s*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[\"][`])/, /^(?:[\"])/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?::\\d+)/],\n conditions: { \"STYLE_DEFINITION\": { \"rules\": [28], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [22], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [20, 21], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [25], \"inclusive\": false }, \"CLASS\": { \"rules\": [24], \"inclusive\": false }, \"LLABEL\": { \"rules\": [99, 100, 101, 102, 103], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [85, 86, 87, 88, 89, 90, 91], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [76, 81, 84], \"inclusive\": false }, \"NODE\": { \"rules\": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 77, 80], \"inclusive\": false }, \"md_string\": { \"rules\": [9, 10, 78, 79], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [12, 13, 82, 83], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [34, 35], \"inclusive\": false }, \"acc_descr\": { \"rules\": [32], \"inclusive\": false }, \"acc_title\": { \"rules\": [30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 23, 26, 29, 31, 33, 36, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 92, 93, 94, 95, 96, 97, 98, 104], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar block_default = parser;\n\n// src/diagrams/block/blockDB.ts\nimport clone from \"lodash-es/clone.js\";\nvar blockDatabase = /* @__PURE__ */ new Map();\nvar edgeList = [];\nvar edgeCount = /* @__PURE__ */ new Map();\nvar COLOR_KEYWORD = \"color\";\nvar FILL_KEYWORD = \"fill\";\nvar BG_FILL = \"bgFill\";\nvar STYLECLASS_SEP = \",\";\nvar config = getConfig2();\nvar classes = /* @__PURE__ */ new Map();\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, config), \"sanitizeText\");\nvar addStyleClass = /* @__PURE__ */ __name(function(id, styleAttributes = \"\") {\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id, styles: [], textStyles: [] };\n classes.set(id, foundClass);\n }\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n}, \"addStyleClass\");\nvar addStyle2Node = /* @__PURE__ */ __name(function(id, styles = \"\") {\n const foundBlock = blockDatabase.get(id);\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n}, \"addStyle2Node\");\nvar setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: \"na\", children: [] };\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n}, \"setCssClass\");\nvar populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === \"column-setting\");\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (typeof column === \"number\" && column > 0 && block.type !== \"column-setting\" && typeof block.widthInColumns === \"number\" && block.widthInColumns > column) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText2(block.label);\n }\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, block?.styleClass ?? \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns ?? -1;\n } else if (block.type === \"edge\") {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n if (existingBlock === void 0) {\n blockDatabase.set(block.id, block);\n } else {\n if (block.type !== \"na\") {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + \"-\" + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === void 0) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n}, \"populateBlockDatabase\");\nvar blocks = [];\nvar rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nvar clear2 = /* @__PURE__ */ __name(() => {\n log.debug(\"Clear called\");\n clear();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = /* @__PURE__ */ new Map([[\"root\", rootBlock]]);\n blocks = [];\n classes = /* @__PURE__ */ new Map();\n edgeList = [];\n edgeCount = /* @__PURE__ */ new Map();\n}, \"clear\");\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\n__name(typeStr2Type, \"typeStr2Type\");\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\n__name(edgeTypeStr2Type, \"edgeTypeStr2Type\");\nfunction edgeStrToEdgeData(typeStr) {\n switch (typeStr.replace(/^[\\s-]+|[\\s-]+$/g, \"\")) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \">\":\n return \"arrow_point\";\n default:\n return \"\";\n }\n}\n__name(edgeStrToEdgeData, \"edgeStrToEdgeData\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nvar setHierarchy = /* @__PURE__ */ __name((block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n}, \"setHierarchy\");\nvar getColumns = /* @__PURE__ */ __name((blockId) => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n}, \"getColumns\");\nvar getBlocksFlat = /* @__PURE__ */ __name(() => {\n return [...blockDatabase.values()];\n}, \"getBlocksFlat\");\nvar getBlocks = /* @__PURE__ */ __name(() => {\n return blocks || [];\n}, \"getBlocks\");\nvar getEdges = /* @__PURE__ */ __name(() => {\n return edgeList;\n}, \"getEdges\");\nvar getBlock = /* @__PURE__ */ __name((id) => {\n return blockDatabase.get(id);\n}, \"getBlock\");\nvar setBlock = /* @__PURE__ */ __name((block) => {\n blockDatabase.set(block.id, block);\n}, \"setBlock\");\nvar getLogger = /* @__PURE__ */ __name(() => log, \"getLogger\");\nvar getClasses = /* @__PURE__ */ __name(function() {\n return classes;\n}, \"getClasses\");\nvar db = {\n getConfig: /* @__PURE__ */ __name(() => getConfig().block, \"getConfig\"),\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear: clear2,\n generateId\n};\nvar blockDB_default = db;\n\n// src/diagrams/block/styles.ts\nimport * as khroma from \"khroma\";\nvar fade = /* @__PURE__ */ __name((color, opacity) => {\n const channel2 = khroma.channel;\n const r = channel2(color, \"r\");\n const g = channel2(color, \"g\");\n const b = channel2(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n}, \"fade\");\nvar getStyles = /* @__PURE__ */ __name((options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \\`<p>\\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/block/blockRenderer.ts\nimport { select as d3select } from \"d3\";\n\n// src/dagre-wrapper/markers.js\nvar insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n}, \"insertMarkers\");\nvar extension = /* @__PURE__ */ __name((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}, \"extension\");\nvar composition = /* @__PURE__ */ __name((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}, \"composition\");\nvar aggregation = /* @__PURE__ */ __name((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}, \"aggregation\");\nvar dependency = /* @__PURE__ */ __name((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}, \"dependency\");\nvar lollipop = /* @__PURE__ */ __name((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}, \"lollipop\");\nvar point = /* @__PURE__ */ __name((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}, \"point\");\nvar circle = /* @__PURE__ */ __name((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}, \"circle\");\nvar cross = /* @__PURE__ */ __name((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}, \"cross\");\nvar barb = /* @__PURE__ */ __name((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}, \"barb\");\nvar markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb\n};\nvar markers_default = insertMarkers;\n\n// src/diagrams/block/layout.ts\nvar padding = getConfig2()?.block?.padding ?? 8;\nfunction calculateBlockPosition(columns, position) {\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error(\"Columns must be an integer !== 0.\");\n }\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error(\"Position must be a non-negative integer.\" + position);\n }\n if (columns < 0) {\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n return { px: 0, py: position };\n }\n const px = position % columns;\n const py = Math.floor(position / columns);\n return { px, py };\n}\n__name(calculateBlockPosition, \"calculateBlockPosition\");\nvar getMaxChildSize = /* @__PURE__ */ __name((block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n \"getMaxChildSize abc95 child:\",\n child.id,\n \"width:\",\n width,\n \"height:\",\n height,\n \"x:\",\n x,\n \"y:\",\n y,\n child.type\n );\n if (child.type === \"space\") {\n continue;\n }\n if (width > maxWidth) {\n maxWidth = width / (child.widthInColumns ?? 1);\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n}, \"getMaxChildSize\");\nfunction setBlockSizes(block, db2, siblingWidth = 0, siblingHeight = 0) {\n log.debug(\n \"setBlockSizes abc95 (start)\",\n block.id,\n block?.size?.x,\n \"block width =\",\n block?.size,\n \"siblingWidth\",\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db2);\n }\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug(\"setBlockSizes abc95 maxWidth of\", block.id, \":s children is \", maxWidth, maxHeight);\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db2, maxWidth, maxHeight);\n }\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n const ySize = Math.ceil(numItems / xSize);\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n log.debug(\"Size indata abc88\", block.id, \"childWidth\", childWidth, \"maxWidth\", maxWidth);\n log.debug(\"Size indata abc88\", block.id, \"childHeight\", childHeight, \"maxHeight\", maxHeight);\n log.debug(\"Size indata abc88 xSize\", xSize, \"padding\", padding);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug(\"abc95 (growing to fit) width\", block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0\n };\n }\n log.debug(\n \"setBlockSizes abc94 (done)\",\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n__name(setBlockSizes, \"setBlockSizes\");\nfunction layoutBlocks(block, db2) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug(\"layoutBlocks columns abc95\", block.id, \"=>\", columns, block);\n if (block.children && // find max width of children\n block.children.length > 0) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n log.debug(\"widthOfChildren 88\", widthOfChildren, \"posX\");\n const rowHeights = /* @__PURE__ */ new Map();\n {\n let colPos = 0;\n for (const child of block.children) {\n if (!child.size) {\n continue;\n }\n const { py } = calculateBlockPosition(columns, colPos);\n const currentMax = rowHeights.get(py) ?? 0;\n if (child.size.height > currentMax) {\n rowHeights.set(py, child.size.height);\n }\n let filled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n filled = Math.min(filled, columns - colPos % columns);\n }\n colPos += filled;\n }\n }\n const rowYOffsets = /* @__PURE__ */ new Map();\n {\n let offset = 0;\n const rows = [...rowHeights.keys()].sort((a, b) => a - b);\n for (const row of rows) {\n rowYOffsets.set(row, offset);\n offset += (rowHeights.get(row) ?? 0) + padding;\n }\n }\n let columnPos = 0;\n log.debug(\"abc91 block?.size?.x\", block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n if (!child.size) {\n continue;\n }\n const { width: width2, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug(\"New row in layout for block\", block.id, \" and child \", child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width2}${padding}`\n );\n if (parent.size) {\n const halfWidth = width2 / 2;\n child.size.x = startingPosX + padding + halfWidth;\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n startingPosX = child.size.x + halfWidth;\n const rowYOffset = rowYOffsets.get(py) ?? 0;\n const rowHeight = rowHeights.get(py) ?? height;\n child.size.y = parent.size.y - parent.size.height / 2 + rowYOffset + rowHeight / 2 + padding;\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db2);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n columnsFilled = Math.min(columnsFilled, columns - columnPos % columns);\n }\n columnPos += columnsFilled;\n log.debug(\"abc88 columnsPos\", child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n__name(layoutBlocks, \"layoutBlocks\");\nfunction findBounds(block, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {\n if (block.size && block.id !== \"root\") {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n__name(findBounds, \"findBounds\");\nfunction layout(db2) {\n const root = db2.getBlock(\"root\");\n if (!root) {\n return;\n }\n setBlockSizes(root, db2, 0, 0);\n layoutBlocks(root, db2);\n log.debug(\"getBlocks\", JSON.stringify(root, null, 2));\n const { minX, minY, maxX, maxY } = findBounds(root);\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n__name(layout, \"layout\");\n\n// src/diagrams/block/renderHelpers.ts\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\n\n// src/dagre-wrapper/createLabel.js\nvar createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config2 = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config2);\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY\n },\n config2\n );\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((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}, \"addEdgeMarkers\");\nvar 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};\nvar addEdgeMarker = /* @__PURE__ */ __name((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}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {\n const config2 = getConfig2();\n const useHtmlLabels = getEffectiveHtmlLabels(config2);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n const isMarkdown = edge.labelType === \"markdown\";\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n // TODO: The old code only set addSvgBackground when using markdown, but\n // this function is only used by block diagrams which never use markdown.\n addSvgBackground: isMarkdown,\n isNode: false,\n markdown: isMarkdown,\n // If using markdown, wrap using default width\n width: isMarkdown ? void 0 : Number.POSITIVE_INFINITY\n },\n config2\n );\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n } else {\n const textEl = select(labelElement).select(\"text\").node();\n if (textEl && typeof textEl.getBBox === \"function\") {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr(\"transform\", computeLabelTransform(transformBbox, useHtmlLabels));\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(inner, edge.startLabelLeft, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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 startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const startLabelElement = await createLabel_default(\n startEdgeLabelRight,\n edge.startLabelRight,\n edge.labelStyle\n );\n fo = startLabelElement;\n inner.node().appendChild(startLabelElement);\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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 endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(inner, edge.endLabelLeft, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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 endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n const endLabelElement = await createLabel_default(inner, edge.endLabelRight, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr(\"width\", slBox.width);\n dv.attr(\"height\", slBox.height);\n }\n inner.attr(\"transform\", computeLabelTransform(slBox, useHtmlLabels));\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}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig2()) && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((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 = getConfig2();\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_default.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_default.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_default.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_default.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_default.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}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((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}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((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}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, 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}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(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?.intersect && 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 (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = getUrl(true);\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}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select3 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding2 = 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 * padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding2, 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 * padding2 },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding2, 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: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\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: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\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: -padding2 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n // top left corner of arrow\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n // Two points, the right corners\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\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: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 }\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: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\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}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, 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 intersect = intersect_line_default(\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 (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - 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}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((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}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select2 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(config2);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).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 let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n {\n useHtmlLabels,\n width: node.width || config2.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config2\n );\n } else {\n text = await createLabel_default(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n node.labelStyle,\n false,\n isNode\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (getEffectiveHtmlLabels(config2)) {\n const div = text.children[0];\n const dv = select2(text);\n await configureLabelImages(div, labelText);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig2());\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_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.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}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).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 = await createLabel_default(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = text.children[0];\n const dv = select3(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = await createLabel_default(\n label,\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n );\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = descr.children[0];\n const dv = select3(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select3(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select3(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.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, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.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, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name(async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = await createLabel_default(\n labelContainer,\n interfaceLabelText,\n node.labelStyle,\n true,\n true\n );\n let interfaceBBox = interfaceLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = interfaceLabel.children[0];\n const dv = select3(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getEffectiveHtmlLabels(getConfig2())) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = await createLabel_default(\n labelContainer,\n classTitleString,\n node.labelStyle,\n true,\n true\n );\n select3(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = classTitleLabel.children[0];\n const dv = select3(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n parsedText = parsedText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig2())) {\n displayText = displayText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = await createLabel_default(\n labelContainer,\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig2())) {\n const div = lbl.children[0];\n const dv = select3(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select3(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select3(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select3(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle: circle2,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, renderOptions) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig2().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, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding2 = 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 - padding2) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\n// src/diagrams/block/renderHelpers.ts\nfunction getNodeFromBlock(block, db2, positioned = false) {\n const vertex = block;\n let classStr = \"default\";\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding2;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding2 = 0;\n break;\n case \"square\":\n shape = \"rect\";\n break;\n case \"diamond\":\n shape = \"question\";\n break;\n case \"hexagon\":\n shape = \"hexagon\";\n break;\n case \"block_arrow\":\n shape = \"block_arrow\";\n break;\n case \"odd\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n shape = \"lean_right\";\n break;\n case \"lean_left\":\n shape = \"lean_left\";\n break;\n case \"trapezoid\":\n shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n shape = \"inv_trapezoid\";\n break;\n case \"rect_left_inv_arrow\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n shape = \"circle\";\n break;\n case \"ellipse\":\n shape = \"ellipse\";\n break;\n case \"stadium\":\n shape = \"stadium\";\n break;\n case \"subroutine\":\n shape = \"subroutine\";\n break;\n case \"cylinder\":\n shape = \"cylinder\";\n break;\n case \"group\":\n shape = \"rect\";\n break;\n case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray(vertex?.styles ?? []);\n const vertexText = vertex.label;\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding2 ?? getConfig()?.block?.padding ?? 0\n };\n return node;\n}\n__name(getNodeFromBlock, \"getNodeFromBlock\");\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const config2 = getConfig();\n const nodeEl = await insertNode(elem, node, { config: config2 });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\n__name(calculateBlockSize, \"calculateBlockSize\");\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n const config2 = getConfig();\n await insertNode(elem, node, { config: config2 });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n__name(insertBlockPositioned, \"insertBlockPositioned\");\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\n__name(performOperations, \"performOperations\");\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\n__name(calculateBlockSizes, \"calculateBlockSizes\");\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\n__name(insertBlocks, \"insertBlocks\");\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if (startBlock?.size && endBlock?.size) {\n const start2 = startBlock.size;\n const end2 = endBlock.size;\n const points = [\n { x: start2.x, y: start2.y },\n { x: start2.x + (end2.x - start2.x) / 2, y: start2.y + (end2.y - start2.y) / 2 },\n { x: end2.x, y: end2.y }\n ];\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: edge.id },\n {\n ...edge,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\n__name(insertEdges, \"insertEdges\");\n\n// src/diagrams/block/blockRenderer.ts\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagObj) {\n return diagObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = d3select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n const markers2 = [\"point\", \"circle\", \"cross\"];\n markers_default(svg, markers2, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n}, \"draw\");\nvar blockRenderer_default = {\n draw,\n getClasses: getClasses2\n};\n\n// src/diagrams/block/blockDiagram.ts\nvar diagram = {\n parser: block_default,\n db: blockDB_default,\n renderer: blockRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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K,CAAC,GAAG,GAAG,CAAC;GAAE;IAAE,IAAI;IAAI,IAAI;IAAI,IAAI;IAAK;GAAE;IAAE,IAAI;IAAK,IAAI;IAAI,IAAI;IAAG,IAAI;IAAG,IAAI;IAAG,IAAI;IAAK,IAAI;IAAG,IAAI;IAAG,IAAI;IAAI,IAAI;IAAI,IAAI;IAAI,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK;GAAE;IAAE,IAAI,CAAC,GAAG,GAAG;IAAE,IAAI,CAAC,GAAG,GAAG;IAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,EAAE;IAAE,IAAI;IAAI,IAAI,CAAC,GAAG,GAAG;IAAE,IAAI,CAAC,GAAG,GAAG;IAAE,CAAC;GAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,CAAC;GAAE;IAAE,IAAI;IAAI,IAAI;IAAK;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,CAAC;GAAE;IAAE,IAAI;IAAK,IAAI;IAAI,IAAI;IAAG,IAAI;IAAI,IAAI;IAAK,IAAI;IAAK,IAAI;IAAG,IAAI;IAAG,IAAI;IAAK,IAAI;IAAG,IAAI;IAAG,IAAI;IAAI,IAAI;IAAI,IAAI;IAAI,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK,IAAI;IAAK;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAAG,CAAC;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;GAAE,EAAE,GAAK,CAAC,GAAG,GAA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"}
|