@tecture/core 0.0.6 → 0.0.8
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/CHANGELOG.md +23 -0
- package/README.md +30 -0
- package/dist/cli.js +77 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/public/assets/{_baseUniq-Dhw8ANLN.js → _baseUniq-CUITAAZ7.js} +2 -2
- package/dist/public/assets/{_baseUniq-Dhw8ANLN.js.map → _baseUniq-CUITAAZ7.js.map} +1 -1
- package/dist/public/assets/{arc-DHr716eG.js → arc-DyFMcdgg.js} +2 -2
- package/dist/public/assets/{arc-DHr716eG.js.map → arc-DyFMcdgg.js.map} +1 -1
- package/dist/public/assets/{architectureDiagram-Q4EWVU46-CiupZxBl.js → architectureDiagram-Q4EWVU46-DZTi6y6q.js} +2 -2
- package/dist/public/assets/{architectureDiagram-Q4EWVU46-CiupZxBl.js.map → architectureDiagram-Q4EWVU46-DZTi6y6q.js.map} +1 -1
- package/dist/public/assets/{blockDiagram-DXYQGD6D-CZsYmXdZ.js → blockDiagram-DXYQGD6D-C5DgUxsA.js} +2 -2
- package/dist/public/assets/{blockDiagram-DXYQGD6D-CZsYmXdZ.js.map → blockDiagram-DXYQGD6D-C5DgUxsA.js.map} +1 -1
- package/dist/public/assets/{c4Diagram-AHTNJAMY-oYpz_hY-.js → c4Diagram-AHTNJAMY-BF_SaG8K.js} +2 -2
- package/dist/public/assets/{c4Diagram-AHTNJAMY-oYpz_hY-.js.map → c4Diagram-AHTNJAMY-BF_SaG8K.js.map} +1 -1
- package/dist/public/assets/channel-Chx65KuQ.js +2 -0
- package/dist/public/assets/{channel-D4DHyqBz.js.map → channel-Chx65KuQ.js.map} +1 -1
- package/dist/public/assets/{chunk-4BX2VUAB-BJASz7t9.js → chunk-4BX2VUAB-JU2t15qH.js} +2 -2
- package/dist/public/assets/{chunk-4BX2VUAB-BJASz7t9.js.map → chunk-4BX2VUAB-JU2t15qH.js.map} +1 -1
- package/dist/public/assets/{chunk-4TB4RGXK-BmBuFub9.js → chunk-4TB4RGXK-BqjiENIB.js} +2 -2
- package/dist/public/assets/{chunk-4TB4RGXK-BmBuFub9.js.map → chunk-4TB4RGXK-BqjiENIB.js.map} +1 -1
- package/dist/public/assets/chunk-55IACEB6-CwPOewiq.js +2 -0
- package/dist/public/assets/{chunk-55IACEB6-DpRX_xgZ.js.map → chunk-55IACEB6-CwPOewiq.js.map} +1 -1
- package/dist/public/assets/{chunk-EDXVE4YY-CjyvbsHL.js → chunk-EDXVE4YY-CeAdKClT.js} +2 -2
- package/dist/public/assets/{chunk-EDXVE4YY-CjyvbsHL.js.map → chunk-EDXVE4YY-CeAdKClT.js.map} +1 -1
- package/dist/public/assets/{chunk-FMBD7UC4-CopKIX9d.js → chunk-FMBD7UC4-BmV52drU.js} +2 -2
- package/dist/public/assets/{chunk-FMBD7UC4-CopKIX9d.js.map → chunk-FMBD7UC4-BmV52drU.js.map} +1 -1
- package/dist/public/assets/{chunk-OYMX7WX6-Qy94MD6F.js → chunk-OYMX7WX6-DMQ6OBmH.js} +2 -2
- package/dist/public/assets/{chunk-OYMX7WX6-Qy94MD6F.js.map → chunk-OYMX7WX6-DMQ6OBmH.js.map} +1 -1
- package/dist/public/assets/{chunk-QZHKN3VN-q0VhU4fD.js → chunk-QZHKN3VN-BbECxIVF.js} +2 -2
- package/dist/public/assets/{chunk-QZHKN3VN-q0VhU4fD.js.map → chunk-QZHKN3VN-BbECxIVF.js.map} +1 -1
- package/dist/public/assets/{chunk-YZCP3GAM-CLHu-ytS.js → chunk-YZCP3GAM-LV4b5o7A.js} +2 -2
- package/dist/public/assets/{chunk-YZCP3GAM-CLHu-ytS.js.map → chunk-YZCP3GAM-LV4b5o7A.js.map} +1 -1
- package/dist/public/assets/classDiagram-6PBFFD2Q-CuGjbxVu.js +2 -0
- package/dist/public/assets/{classDiagram-6PBFFD2Q-C_GcL8CY.js.map → classDiagram-6PBFFD2Q-CuGjbxVu.js.map} +1 -1
- package/dist/public/assets/classDiagram-v2-HSJHXN6E-CuGjbxVu.js +2 -0
- package/dist/public/assets/{classDiagram-v2-HSJHXN6E-C_GcL8CY.js.map → classDiagram-v2-HSJHXN6E-CuGjbxVu.js.map} +1 -1
- package/dist/public/assets/clone-B5zl9853.js +2 -0
- package/dist/public/assets/{clone-Cpn4E8-V.js.map → clone-B5zl9853.js.map} +1 -1
- package/dist/public/assets/{cose-bilkent-S5V4N54A-BCNrUYFS.js → cose-bilkent-S5V4N54A-NxYN3t_X.js} +2 -2
- package/dist/public/assets/{cose-bilkent-S5V4N54A-BCNrUYFS.js.map → cose-bilkent-S5V4N54A-NxYN3t_X.js.map} +1 -1
- package/dist/public/assets/{dagre-KV5264BT-BVapQShq.js → dagre-KV5264BT-DTQ94K2e.js} +2 -2
- package/dist/public/assets/{dagre-KV5264BT-BVapQShq.js.map → dagre-KV5264BT-DTQ94K2e.js.map} +1 -1
- package/dist/public/assets/{diagram-5BDNPKRD-D6B3PE9C.js → diagram-5BDNPKRD-BI7YTuYk.js} +2 -2
- package/dist/public/assets/{diagram-5BDNPKRD-D6B3PE9C.js.map → diagram-5BDNPKRD-BI7YTuYk.js.map} +1 -1
- package/dist/public/assets/{diagram-G4DWMVQ6-BaWJIFI_.js → diagram-G4DWMVQ6-CRfC6IFe.js} +2 -2
- package/dist/public/assets/{diagram-G4DWMVQ6-BaWJIFI_.js.map → diagram-G4DWMVQ6-CRfC6IFe.js.map} +1 -1
- package/dist/public/assets/{diagram-MMDJMWI5-CCy9j0cK.js → diagram-MMDJMWI5-CfWU0Xcy.js} +2 -2
- package/dist/public/assets/{diagram-MMDJMWI5-CCy9j0cK.js.map → diagram-MMDJMWI5-CfWU0Xcy.js.map} +1 -1
- package/dist/public/assets/{diagram-TYMM5635-Dlu7NmTQ.js → diagram-TYMM5635-DUUA764g.js} +2 -2
- package/dist/public/assets/{diagram-TYMM5635-Dlu7NmTQ.js.map → diagram-TYMM5635-DUUA764g.js.map} +1 -1
- package/dist/public/assets/{erDiagram-SMLLAGMA-X6FgEuRR.js → erDiagram-SMLLAGMA-CC6HpSJv.js} +2 -2
- package/dist/public/assets/{erDiagram-SMLLAGMA-X6FgEuRR.js.map → erDiagram-SMLLAGMA-CC6HpSJv.js.map} +1 -1
- package/dist/public/assets/{flowDiagram-DWJPFMVM-Bu3JFQlu.js → flowDiagram-DWJPFMVM-BcUwc3Qv.js} +2 -2
- package/dist/public/assets/{flowDiagram-DWJPFMVM-Bu3JFQlu.js.map → flowDiagram-DWJPFMVM-BcUwc3Qv.js.map} +1 -1
- package/dist/public/assets/{ganttDiagram-T4ZO3ILL-n168zCl5.js → ganttDiagram-T4ZO3ILL-BQ0OUFDb.js} +2 -2
- package/dist/public/assets/{ganttDiagram-T4ZO3ILL-n168zCl5.js.map → ganttDiagram-T4ZO3ILL-BQ0OUFDb.js.map} +1 -1
- package/dist/public/assets/{gitGraphDiagram-UUTBAWPF-DArjnyo2.js → gitGraphDiagram-UUTBAWPF-BMtxQA7c.js} +2 -2
- package/dist/public/assets/{gitGraphDiagram-UUTBAWPF-DArjnyo2.js.map → gitGraphDiagram-UUTBAWPF-BMtxQA7c.js.map} +1 -1
- package/dist/public/assets/{graph-Bfm3kqd3.js → graph-D-_LAAxI.js} +2 -2
- package/dist/public/assets/{graph-Bfm3kqd3.js.map → graph-D-_LAAxI.js.map} +1 -1
- package/dist/public/assets/{index-DMY07AUl.js → index-B08bCLVX.js} +3 -3
- package/dist/public/assets/{index-DMY07AUl.js.map → index-B08bCLVX.js.map} +1 -1
- package/dist/public/assets/{infoDiagram-42DDH7IO-pBrtdPq_.js → infoDiagram-42DDH7IO-Bamzqbzk.js} +2 -2
- package/dist/public/assets/{infoDiagram-42DDH7IO-pBrtdPq_.js.map → infoDiagram-42DDH7IO-Bamzqbzk.js.map} +1 -1
- package/dist/public/assets/{ishikawaDiagram-UXIWVN3A-BDIZnWTx.js → ishikawaDiagram-UXIWVN3A-zKsJsf_v.js} +2 -2
- package/dist/public/assets/{ishikawaDiagram-UXIWVN3A-BDIZnWTx.js.map → ishikawaDiagram-UXIWVN3A-zKsJsf_v.js.map} +1 -1
- package/dist/public/assets/{journeyDiagram-VCZTEJTY-DmSjb-PU.js → journeyDiagram-VCZTEJTY-C-6pvS6y.js} +2 -2
- package/dist/public/assets/{journeyDiagram-VCZTEJTY-DmSjb-PU.js.map → journeyDiagram-VCZTEJTY-C-6pvS6y.js.map} +1 -1
- package/dist/public/assets/{kanban-definition-6JOO6SKY-C8FgUjbs.js → kanban-definition-6JOO6SKY-DS7zW-ig.js} +2 -2
- package/dist/public/assets/{kanban-definition-6JOO6SKY-C8FgUjbs.js.map → kanban-definition-6JOO6SKY-DS7zW-ig.js.map} +1 -1
- package/dist/public/assets/{layout-DJh2njKG.js → layout-CVDJjYNO.js} +2 -2
- package/dist/public/assets/{layout-DJh2njKG.js.map → layout-CVDJjYNO.js.map} +1 -1
- package/dist/public/assets/{linear-kYTx6SLx.js → linear-lUY0N4kd.js} +2 -2
- package/dist/public/assets/{linear-kYTx6SLx.js.map → linear-lUY0N4kd.js.map} +1 -1
- package/dist/public/assets/{mermaid.core-sEG8CMeA.js → mermaid.core-H7Dmb05b.js} +5 -5
- package/dist/public/assets/{mermaid.core-sEG8CMeA.js.map → mermaid.core-H7Dmb05b.js.map} +1 -1
- package/dist/public/assets/{min-Cxji_8ZQ.js → min-CXznxZeM.js} +2 -2
- package/dist/public/assets/{min-Cxji_8ZQ.js.map → min-CXznxZeM.js.map} +1 -1
- package/dist/public/assets/{mindmap-definition-QFDTVHPH-B0-J9mrb.js → mindmap-definition-QFDTVHPH-jXt705eB.js} +2 -2
- package/dist/public/assets/{mindmap-definition-QFDTVHPH-B0-J9mrb.js.map → mindmap-definition-QFDTVHPH-jXt705eB.js.map} +1 -1
- package/dist/public/assets/{pieDiagram-DEJITSTG-CDZHsOGg.js → pieDiagram-DEJITSTG-Cs44d6OE.js} +2 -2
- package/dist/public/assets/{pieDiagram-DEJITSTG-CDZHsOGg.js.map → pieDiagram-DEJITSTG-Cs44d6OE.js.map} +1 -1
- package/dist/public/assets/{quadrantDiagram-34T5L4WZ-Cr3XLn8k.js → quadrantDiagram-34T5L4WZ-CpymTeDv.js} +2 -2
- package/dist/public/assets/{quadrantDiagram-34T5L4WZ-Cr3XLn8k.js.map → quadrantDiagram-34T5L4WZ-CpymTeDv.js.map} +1 -1
- package/dist/public/assets/{requirementDiagram-MS252O5E-DhckNPK2.js → requirementDiagram-MS252O5E-RyLqPw4W.js} +2 -2
- package/dist/public/assets/{requirementDiagram-MS252O5E-DhckNPK2.js.map → requirementDiagram-MS252O5E-RyLqPw4W.js.map} +1 -1
- package/dist/public/assets/{sankeyDiagram-XADWPNL6-Cst7lZQ5.js → sankeyDiagram-XADWPNL6-DamuB2BV.js} +2 -2
- package/dist/public/assets/{sankeyDiagram-XADWPNL6-Cst7lZQ5.js.map → sankeyDiagram-XADWPNL6-DamuB2BV.js.map} +1 -1
- package/dist/public/assets/{sequenceDiagram-FGHM5R23-BSz6hk1R.js → sequenceDiagram-FGHM5R23-6-TOylZP.js} +2 -2
- package/dist/public/assets/{sequenceDiagram-FGHM5R23-BSz6hk1R.js.map → sequenceDiagram-FGHM5R23-6-TOylZP.js.map} +1 -1
- package/dist/public/assets/{stateDiagram-FHFEXIEX-racSpEdx.js → stateDiagram-FHFEXIEX-B6cKPsIC.js} +2 -2
- package/dist/public/assets/{stateDiagram-FHFEXIEX-racSpEdx.js.map → stateDiagram-FHFEXIEX-B6cKPsIC.js.map} +1 -1
- package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-CXb0Znc0.js +2 -0
- package/dist/public/assets/{stateDiagram-v2-QKLJ7IA2-C8oha-gC.js.map → stateDiagram-v2-QKLJ7IA2-CXb0Znc0.js.map} +1 -1
- package/dist/public/assets/{timeline-definition-GMOUNBTQ-pBR5gxYm.js → timeline-definition-GMOUNBTQ-CdeBXF6y.js} +2 -2
- package/dist/public/assets/{timeline-definition-GMOUNBTQ-pBR5gxYm.js.map → timeline-definition-GMOUNBTQ-CdeBXF6y.js.map} +1 -1
- package/dist/public/assets/{vennDiagram-DHZGUBPP-OCE87T_5.js → vennDiagram-DHZGUBPP-D8DqpbrW.js} +2 -2
- package/dist/public/assets/{vennDiagram-DHZGUBPP-OCE87T_5.js.map → vennDiagram-DHZGUBPP-D8DqpbrW.js.map} +1 -1
- package/dist/public/assets/{wardley-RL74JXVD-691yvuUx.js → wardley-RL74JXVD-B1MU-JlC.js} +2 -2
- package/dist/public/assets/{wardley-RL74JXVD-691yvuUx.js.map → wardley-RL74JXVD-B1MU-JlC.js.map} +1 -1
- package/dist/public/assets/{wardleyDiagram-NUSXRM2D-CewxpYfR.js → wardleyDiagram-NUSXRM2D-MYKM6CF8.js} +2 -2
- package/dist/public/assets/{wardleyDiagram-NUSXRM2D-CewxpYfR.js.map → wardleyDiagram-NUSXRM2D-MYKM6CF8.js.map} +1 -1
- package/dist/public/assets/{xychartDiagram-5P7HB3ND-C_kdNFR1.js → xychartDiagram-5P7HB3ND-Brec7d4F.js} +2 -2
- package/dist/public/assets/{xychartDiagram-5P7HB3ND-C_kdNFR1.js.map → xychartDiagram-5P7HB3ND-Brec7d4F.js.map} +1 -1
- package/dist/public/index.html +1 -1
- package/package.json +1 -1
- package/dist/public/assets/channel-D4DHyqBz.js +0 -2
- package/dist/public/assets/chunk-55IACEB6-DpRX_xgZ.js +0 -2
- package/dist/public/assets/classDiagram-6PBFFD2Q-C_GcL8CY.js +0 -2
- package/dist/public/assets/classDiagram-v2-HSJHXN6E-C_GcL8CY.js +0 -2
- package/dist/public/assets/clone-Cpn4E8-V.js +0 -2
- package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-C8oha-gC.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockDiagram-DXYQGD6D-CZsYmXdZ.js","sources":["../../../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-DXYQGD6D.mjs"],"sourcesContent":["import {\n getIconStyles\n} from \"./chunk-FMBD7UC4.mjs\";\nimport {\n computeLabelTransform,\n getLineFunctionsWithOffset\n} from \"./chunk-BSJP7CBP.mjs\";\nimport {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-ZZ45TVLE.mjs\";\nimport {\n createText\n} from \"./chunk-U2HBQHQK.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-5PVQY5BW.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n getUrl,\n sanitizeText\n} from \"./chunk-ICPOFSXX.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 diagramId = \"\";\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 diagramId = \"\";\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 setDiagramId = /* @__PURE__ */ __name((id) => {\n diagramId = id;\n}, \"setDiagramId\");\nvar getDiagramId = /* @__PURE__ */ __name(() => diagramId, \"getDiagramId\");\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 setDiagramId,\n getDiagramId\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 dbDiagramId = db2.getDiagramId();\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 domId: dbDiagramId ? `${dbDiagramId}-${vertex.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 const prefixedEdgeId = id ? `${id}-${edge.id}` : edge.id;\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: prefixedEdgeId },\n {\n ...edge,\n id: prefixedEdgeId,\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 db2.setDiagramId(id);\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"],"names":["parser","o","__name","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","num","spaceId","edgeData","id","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","popStack","n","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","block_default","blockDatabase","edgeList","edgeCount","COLOR_KEYWORD","FILL_KEYWORD","BG_FILL","STYLECLASS_SEP","config","getConfig2","classes","diagramId","sanitizeText2","txt","common_default","addStyleClass","styleAttributes","foundClass","attrib","fixedAttrib","newStyle2","addStyle2Node","styles","foundBlock","setCssClass","itemIds","cssClassName","trimmedId","populateBlockDatabase","_blockList","parent","blockList","children","columnSettingBlock","b","column","block","log","count","existingBlock","w","j","newBlock","clone","blocks","rootBlock","clear2","clear","typeStr2Type","typeStr","edgeTypeStr2Type","edgeStrToEdgeData","cnt","generateId","setHierarchy","getColumns","blockId","getBlocksFlat","getBlocks","getEdges","getBlock","setBlock","setDiagramId","getDiagramId","getLogger","getClasses","db","getConfig","blockDB_default","fade","color","opacity","channel2","khroma.channel","g","khroma.rgba","getStyles","options","getIconStyles","styles_default","insertMarkers","elem","markerArray","type","markerName","markers","extension","composition","aggregation","dependency","lollipop","point","circle","cross","barb","markers_default","padding","_b","_a","calculateBlockPosition","columns","position","px","py","getMaxChildSize","maxWidth","maxHeight","child","width","height","x","y","setBlockSizes","db2","siblingWidth","siblingHeight","_c","childSize","numItems","xSize","ySize","childWidth","childHeight","_d","_e","_f","_g","_h","_i","_j","_k","layoutBlocks","widthOfChildren","rowHeights","colPos","currentMax","filled","rowYOffsets","offset","rows","a","row","columnPos","startingPosX","rowPos","width2","_l","_m","_n","halfWidth","rowYOffset","rowHeight","columnsFilled","_o","_p","_q","findBounds","minX","minY","maxX","maxY","layout","root","createLabel","element","_vertexText","style","isTitle","isNode","vertexText","config2","useHtmlLabels","getEffectiveHtmlLabels","createText","createLabel_default","addEdgeMarkers","svgPath","edge","url","diagramType","addEdgeMarker","arrowTypesMap","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","insertEdgeLabel","edgeLabel","label","isMarkdown","labelElement","bbox","transformBbox","div","dv","select","textEl","computeLabelTransform","fo","startEdgeLabelLeft","inner","startLabelElement","slBox","setTerminalWidth","startEdgeLabelRight","endEdgeLabelLeft","endLabelElement","endEdgeLabelRight","value","positionEdgeLabel","paths","path","siteConfig","subGraphTitleTotalMargin","getSubGraphTitleMargins","el","pos","utils_default","outsideNode","node","point2","dx","dy","h","intersection","outsidePoint","insidePoint","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundaryNode","points","lastPointOutside","isInside","inter","pointPresent","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","getLineFunctionsWithOffset","lineFunction","line","strokeClasses","getUrl","expandAndDeduplicateDirections","directions","uniqueDirections","direction","getArrowPoints","duplicatedDirections","f","midpoint","padding2","intersectNode","intersect_node_default","intersectEllipse","rx","ry","cx","cy","det","intersect_ellipse_default","intersectCircle","intersect_circle_default","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","sameSign","intersect_line_default","intersect_polygon_default","intersectPolygon","polyPoints","x1","y1","intersections","entry","left","top","intersect","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersect_rect_default","intersect_default","labelHelper","_classes","classes2","shapeSvg","labelText","text","sanitizeText","decodeEntities","halfPadding","select2","configureLabelImages","updateNodeBounds","insertPolygonShape","d","note","rect2","note_default","formatClass","getClassesFromNode","otherClasses","question","s","questionElem","choice","hexagon","m","hex","block_arrow","blockArrow","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","rect","totalWidth","totalHeight","propKeys","applyNodePropertyBorders","propKey","composite","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","select3","textRows","titleBox","descr","stadium","circle2","circle3","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","end","class_box","rowPadding","lineHeight","topLine","bottomLine","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","member","parsedInfo","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","renderOptions","newEl","target","positionNode","diff","getNodeFromBlock","positioned","vertex","classStr","radius","getStylesFromArray","bounds","dbDiagramId","calculateBlockSize","nodeEl","boundingBox","obj","insertBlockPositioned","performOperations","blocks2","operation","calculateBlockSizes","insertBlocks","insertEdges","edges","graphlib.Graph","startBlock","endBlock","start2","end2","prefixedEdgeId","getClasses2","diagObj","draw","_version","securityLevel","conf","sandboxElement","d3select","svg","bl","blArr","nodes","bounds2","magicFactor","useMaxWidth","configureSvgSize","blockRenderer_default","diagram"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"blockDiagram-DXYQGD6D-C5DgUxsA.js","sources":["../../../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-DXYQGD6D.mjs"],"sourcesContent":["import {\n getIconStyles\n} from \"./chunk-FMBD7UC4.mjs\";\nimport {\n computeLabelTransform,\n getLineFunctionsWithOffset\n} from \"./chunk-BSJP7CBP.mjs\";\nimport {\n configureLabelImages,\n getSubGraphTitleMargins\n} from \"./chunk-ZZ45TVLE.mjs\";\nimport {\n createText\n} from \"./chunk-U2HBQHQK.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-5PVQY5BW.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n getConfig,\n getConfig2,\n getEffectiveHtmlLabels,\n getUrl,\n sanitizeText\n} from \"./chunk-ICPOFSXX.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 diagramId = \"\";\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 diagramId = \"\";\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 setDiagramId = /* @__PURE__ */ __name((id) => {\n diagramId = id;\n}, \"setDiagramId\");\nvar getDiagramId = /* @__PURE__ */ __name(() => diagramId, \"getDiagramId\");\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 setDiagramId,\n getDiagramId\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 dbDiagramId = db2.getDiagramId();\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 domId: dbDiagramId ? `${dbDiagramId}-${vertex.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 const prefixedEdgeId = id ? `${id}-${edge.id}` : edge.id;\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: prefixedEdgeId },\n {\n ...edge,\n id: prefixedEdgeId,\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 db2.setDiagramId(id);\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"],"names":["parser","o","__name","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","num","spaceId","edgeData","id","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","popStack","n","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","block_default","blockDatabase","edgeList","edgeCount","COLOR_KEYWORD","FILL_KEYWORD","BG_FILL","STYLECLASS_SEP","config","getConfig2","classes","diagramId","sanitizeText2","txt","common_default","addStyleClass","styleAttributes","foundClass","attrib","fixedAttrib","newStyle2","addStyle2Node","styles","foundBlock","setCssClass","itemIds","cssClassName","trimmedId","populateBlockDatabase","_blockList","parent","blockList","children","columnSettingBlock","b","column","block","log","count","existingBlock","w","j","newBlock","clone","blocks","rootBlock","clear2","clear","typeStr2Type","typeStr","edgeTypeStr2Type","edgeStrToEdgeData","cnt","generateId","setHierarchy","getColumns","blockId","getBlocksFlat","getBlocks","getEdges","getBlock","setBlock","setDiagramId","getDiagramId","getLogger","getClasses","db","getConfig","blockDB_default","fade","color","opacity","channel2","khroma.channel","g","khroma.rgba","getStyles","options","getIconStyles","styles_default","insertMarkers","elem","markerArray","type","markerName","markers","extension","composition","aggregation","dependency","lollipop","point","circle","cross","barb","markers_default","padding","_b","_a","calculateBlockPosition","columns","position","px","py","getMaxChildSize","maxWidth","maxHeight","child","width","height","x","y","setBlockSizes","db2","siblingWidth","siblingHeight","_c","childSize","numItems","xSize","ySize","childWidth","childHeight","_d","_e","_f","_g","_h","_i","_j","_k","layoutBlocks","widthOfChildren","rowHeights","colPos","currentMax","filled","rowYOffsets","offset","rows","a","row","columnPos","startingPosX","rowPos","width2","_l","_m","_n","halfWidth","rowYOffset","rowHeight","columnsFilled","_o","_p","_q","findBounds","minX","minY","maxX","maxY","layout","root","createLabel","element","_vertexText","style","isTitle","isNode","vertexText","config2","useHtmlLabels","getEffectiveHtmlLabels","createText","createLabel_default","addEdgeMarkers","svgPath","edge","url","diagramType","addEdgeMarker","arrowTypesMap","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","insertEdgeLabel","edgeLabel","label","isMarkdown","labelElement","bbox","transformBbox","div","dv","select","textEl","computeLabelTransform","fo","startEdgeLabelLeft","inner","startLabelElement","slBox","setTerminalWidth","startEdgeLabelRight","endEdgeLabelLeft","endLabelElement","endEdgeLabelRight","value","positionEdgeLabel","paths","path","siteConfig","subGraphTitleTotalMargin","getSubGraphTitleMargins","el","pos","utils_default","outsideNode","node","point2","dx","dy","h","intersection","outsidePoint","insidePoint","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundaryNode","points","lastPointOutside","isInside","inter","pointPresent","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","getLineFunctionsWithOffset","lineFunction","line","strokeClasses","getUrl","expandAndDeduplicateDirections","directions","uniqueDirections","direction","getArrowPoints","duplicatedDirections","f","midpoint","padding2","intersectNode","intersect_node_default","intersectEllipse","rx","ry","cx","cy","det","intersect_ellipse_default","intersectCircle","intersect_circle_default","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","sameSign","intersect_line_default","intersect_polygon_default","intersectPolygon","polyPoints","x1","y1","intersections","entry","left","top","intersect","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersect_rect_default","intersect_default","labelHelper","_classes","classes2","shapeSvg","labelText","text","sanitizeText","decodeEntities","halfPadding","select2","configureLabelImages","updateNodeBounds","insertPolygonShape","d","note","rect2","note_default","formatClass","getClassesFromNode","otherClasses","question","s","questionElem","choice","hexagon","m","hex","block_arrow","blockArrow","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","rect","totalWidth","totalHeight","propKeys","applyNodePropertyBorders","propKey","composite","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","select3","textRows","titleBox","descr","stadium","circle2","circle3","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","end","class_box","rowPadding","lineHeight","topLine","bottomLine","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","member","parsedInfo","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","renderOptions","newEl","target","positionNode","diff","getNodeFromBlock","positioned","vertex","classStr","radius","getStylesFromArray","bounds","dbDiagramId","calculateBlockSize","nodeEl","boundingBox","obj","insertBlockPositioned","performOperations","blocks2","operation","calculateBlockSizes","insertBlocks","insertEdges","edges","graphlib.Graph","startBlock","endBlock","start2","end2","prefixedEdgeId","getClasses2","diagObj","draw","_version","securityLevel","conf","sandboxElement","d3select","svg","bl","blArr","nodes","bounds2","magicFactor","useMaxWidth","configureSvgSize","blockRenderer_default","diagram"],"mappings":"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","x_google_ignoreList":[0]}
|