@next-bricks/markdown 1.12.24 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +1 -1
- package/dist/chunks/1045.a33dd9ee.js +2 -0
- package/dist/chunks/1045.a33dd9ee.js.map +1 -0
- package/dist/chunks/114.b104fe5c.js +2 -0
- package/dist/chunks/{114.9c73672d.js.map → 114.b104fe5c.js.map} +1 -1
- package/dist/chunks/1370.6df4802a.js +2 -0
- package/dist/chunks/1370.6df4802a.js.map +1 -0
- package/dist/chunks/1889.f4c0a479.js +2 -0
- package/dist/chunks/1889.f4c0a479.js.map +1 -0
- package/dist/chunks/1931.4e68852d.js +2 -0
- package/dist/chunks/1931.4e68852d.js.map +1 -0
- package/dist/chunks/2052.f5fa5ba8.js +2 -0
- package/dist/chunks/2052.f5fa5ba8.js.map +1 -0
- package/dist/chunks/2260.7689bad0.js +2 -0
- package/dist/chunks/2260.7689bad0.js.map +1 -0
- package/dist/chunks/2432.163eff99.js +2 -0
- package/dist/chunks/2432.163eff99.js.map +1 -0
- package/dist/chunks/2508.40555d58.js +2 -0
- package/dist/chunks/2508.40555d58.js.map +1 -0
- package/dist/chunks/3144.687d51bc.js +3 -0
- package/dist/chunks/3144.687d51bc.js.map +1 -0
- package/dist/chunks/3208.52b54906.js +2 -0
- package/dist/chunks/3208.52b54906.js.map +1 -0
- package/dist/chunks/3331.d253bee3.js +1 -0
- package/dist/chunks/3419.021626e1.js +2 -0
- package/dist/chunks/3419.021626e1.js.map +1 -0
- package/dist/chunks/3426.b77adece.js +2 -0
- package/dist/chunks/3426.b77adece.js.map +1 -0
- package/dist/chunks/3744.fb671d32.js +2 -0
- package/dist/chunks/3744.fb671d32.js.map +1 -0
- package/dist/chunks/3816.c332ec87.js +2 -0
- package/dist/chunks/3816.c332ec87.js.map +1 -0
- package/dist/chunks/3935.0c998406.js +2 -0
- package/dist/chunks/3935.0c998406.js.map +1 -0
- package/dist/chunks/4041.1ffd6c27.js +3 -0
- package/dist/chunks/4041.1ffd6c27.js.map +1 -0
- package/dist/chunks/4228.def9e6d0.js +2 -0
- package/dist/chunks/4228.def9e6d0.js.map +1 -0
- package/dist/chunks/4281.5a66071d.js +2 -0
- package/dist/chunks/4281.5a66071d.js.map +1 -0
- package/dist/chunks/4474.8a69d99c.js +2 -0
- package/dist/chunks/4474.8a69d99c.js.map +1 -0
- package/dist/chunks/4491.b16bbc17.js +1 -0
- package/dist/chunks/4623.de387c33.js +2 -0
- package/dist/chunks/4623.de387c33.js.map +1 -0
- package/dist/chunks/5191.4cbdd4c5.js +1 -0
- package/dist/chunks/5250.325c403b.js +3 -0
- package/dist/chunks/5250.325c403b.js.map +1 -0
- package/dist/chunks/5307.4c4fbea2.js +2 -0
- package/dist/chunks/5307.4c4fbea2.js.map +1 -0
- package/dist/chunks/5384.1362903a.js +2 -0
- package/dist/chunks/5384.1362903a.js.map +1 -0
- package/dist/chunks/5522.bbd6f76c.js +3 -0
- package/dist/chunks/5522.bbd6f76c.js.LICENSE.txt +23 -0
- package/dist/chunks/5522.bbd6f76c.js.map +1 -0
- package/dist/chunks/5548.ca97b7f3.js +2 -0
- package/dist/chunks/5548.ca97b7f3.js.map +1 -0
- package/dist/chunks/5727.1208291b.js +2 -0
- package/dist/chunks/5727.1208291b.js.map +1 -0
- package/dist/chunks/5807.b2af4fc7.js +2 -0
- package/dist/chunks/5807.b2af4fc7.js.map +1 -0
- package/dist/chunks/5936.5b0bbcdd.js +2 -0
- package/dist/chunks/5936.5b0bbcdd.js.map +1 -0
- package/dist/chunks/6023.87f1fe35.js +2 -0
- package/dist/chunks/6023.87f1fe35.js.map +1 -0
- package/dist/chunks/6029.54138f12.js +1 -0
- package/dist/chunks/6069.14414932.js +2 -0
- package/dist/chunks/6069.14414932.js.map +1 -0
- package/dist/chunks/6161.01ba9636.js +2 -0
- package/dist/chunks/6161.01ba9636.js.map +1 -0
- package/dist/chunks/6530.d3f82fe7.js +2 -0
- package/dist/chunks/6530.d3f82fe7.js.map +1 -0
- package/dist/chunks/6934.c7512e66.js +2 -0
- package/dist/chunks/6934.c7512e66.js.map +1 -0
- package/dist/chunks/721.9eae42b6.js +1 -0
- package/dist/chunks/7302.d13140ab.js +2 -0
- package/dist/chunks/7302.d13140ab.js.map +1 -0
- package/dist/chunks/7353.29aabede.js +1 -0
- package/dist/chunks/7733.33cce27d.js +2 -0
- package/dist/chunks/7733.33cce27d.js.map +1 -0
- package/dist/chunks/7768.25c15640.js +3 -0
- package/dist/chunks/7768.25c15640.js.map +1 -0
- package/dist/chunks/7842.e3ea98aa.js +2 -0
- package/dist/chunks/7842.e3ea98aa.js.map +1 -0
- package/dist/chunks/8231.d0c4a771.js +2 -0
- package/dist/chunks/8231.d0c4a771.js.map +1 -0
- package/dist/chunks/8348.a0fc3b22.js +2 -0
- package/dist/chunks/8348.a0fc3b22.js.map +1 -0
- package/dist/chunks/8588.40a68a26.js +2 -0
- package/dist/chunks/8588.40a68a26.js.map +1 -0
- package/dist/chunks/8633.9efe013c.js +2 -0
- package/dist/chunks/8633.9efe013c.js.map +1 -0
- package/dist/chunks/8755.1b6803c6.js +1 -0
- package/dist/chunks/879.8ebd35ee.js +2 -0
- package/dist/chunks/879.8ebd35ee.js.map +1 -0
- package/dist/chunks/8936.36f22403.js +3 -0
- package/dist/chunks/8936.36f22403.js.LICENSE.txt +9 -0
- package/dist/chunks/8936.36f22403.js.map +1 -0
- package/dist/chunks/8989.fc531bf8.js +2 -0
- package/dist/chunks/8989.fc531bf8.js.map +1 -0
- package/dist/chunks/9034.35342672.js +2 -0
- package/dist/chunks/9034.35342672.js.map +1 -0
- package/dist/chunks/9263.c8740fab.js +2 -0
- package/dist/chunks/9263.c8740fab.js.map +1 -0
- package/dist/chunks/9634.1b443d78.js +2 -0
- package/dist/chunks/9634.1b443d78.js.map +1 -0
- package/dist/chunks/9831.cbf8de56.js +2 -0
- package/dist/chunks/9831.cbf8de56.js.map +1 -0
- package/dist/chunks/eo-markdown-display.711c6146.js +2 -0
- package/dist/chunks/eo-markdown-display.711c6146.js.map +1 -0
- package/dist/chunks/eo-markdown-editor.a32213aa.js +2 -0
- package/dist/chunks/{eo-markdown-editor.23244943.js.map → eo-markdown-editor.a32213aa.js.map} +1 -1
- package/dist/chunks/main.f6a4f1c5.js +2 -0
- package/dist/chunks/main.f6a4f1c5.js.map +1 -0
- package/dist/examples.json +1 -1
- package/dist/index.21c96785.js +2 -0
- package/dist/index.21c96785.js.map +1 -0
- package/docs/eo-markdown-display.md +11 -0
- package/package.json +2 -2
- package/dist/chunks/114.9c73672d.js +0 -2
- package/dist/chunks/144.c2505eec.js +0 -3
- package/dist/chunks/144.c2505eec.js.map +0 -1
- package/dist/chunks/250.a0a72cdb.js +0 -3
- package/dist/chunks/250.a0a72cdb.js.map +0 -1
- package/dist/chunks/370.3a944ca6.js +0 -2
- package/dist/chunks/370.3a944ca6.js.map +0 -1
- package/dist/chunks/41.dc782816.js +0 -3
- package/dist/chunks/41.dc782816.js.map +0 -1
- package/dist/chunks/426.dc455e92.js +0 -2
- package/dist/chunks/426.dc455e92.js.map +0 -1
- package/dist/chunks/45.d25ab6d3.js +0 -2
- package/dist/chunks/45.d25ab6d3.js.map +0 -1
- package/dist/chunks/489.36fea43a.js +0 -2
- package/dist/chunks/489.36fea43a.js.map +0 -1
- package/dist/chunks/52.45084502.js +0 -2
- package/dist/chunks/52.45084502.js.map +0 -1
- package/dist/chunks/623.4eaa6d49.js +0 -2
- package/dist/chunks/623.4eaa6d49.js.map +0 -1
- package/dist/chunks/698.53c6cc78.js +0 -2
- package/dist/chunks/698.53c6cc78.js.map +0 -1
- package/dist/chunks/733.5804af84.js +0 -2
- package/dist/chunks/733.5804af84.js.map +0 -1
- package/dist/chunks/768.5f676b0d.js +0 -3
- package/dist/chunks/768.5f676b0d.js.map +0 -1
- package/dist/chunks/818.0756786a.js +0 -3
- package/dist/chunks/818.0756786a.js.LICENSE.txt +0 -9
- package/dist/chunks/818.0756786a.js.map +0 -1
- package/dist/chunks/889.ac9c9ed8.js +0 -2
- package/dist/chunks/889.ac9c9ed8.js.map +0 -1
- package/dist/chunks/989.54365193.js +0 -2
- package/dist/chunks/989.54365193.js.map +0 -1
- package/dist/chunks/eo-markdown-display.c4b08b82.js +0 -2
- package/dist/chunks/eo-markdown-display.c4b08b82.js.map +0 -1
- package/dist/chunks/eo-markdown-editor.23244943.js +0 -2
- package/dist/chunks/main.9922d357.js +0 -2
- package/dist/chunks/main.9922d357.js.map +0 -1
- package/dist/index.5f944ef6.js +0 -2
- package/dist/index.5f944ef6.js.map +0 -1
- /package/dist/chunks/{144.c2505eec.js.LICENSE.txt → 3144.687d51bc.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{41.dc782816.js.LICENSE.txt → 4041.1ffd6c27.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{250.a0a72cdb.js.LICENSE.txt → 5250.325c403b.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{768.5f676b0d.js.LICENSE.txt → 7768.25c15640.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/5307.4c4fbea2.js","mappings":"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","sources":["webpack:///../../node_modules/lodash-es/clone.js","webpack:///../../node_modules/khroma/dist/methods/channel.js","webpack:///../../node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-6J76NXCF.mjs","webpack:///../../node_modules/lodash-es/union.js","webpack:///../../node_modules/dagre-d3-es/src/graphlib/graph.js","webpack:///../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-E2GYISFI.mjs"],"sourcesContent":["import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst channel = (color, channel) => {\n return _.lang.round(Color.parse(color)[channel]);\n};\n/* EXPORT */\nexport default channel;\n","import {\n getIconStyles\n} from \"./chunk-E2GYISFI.mjs\";\nimport {\n getLineFunctionsWithOffset\n} from \"./chunk-MXNHSMXR.mjs\";\nimport {\n getSubGraphTitleMargins\n} from \"./chunk-AC5SNWB5.mjs\";\nimport {\n createText,\n replaceIconSubstring\n} from \"./chunk-QESNASVV.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-55PJQP7W.mjs\";\nimport {\n __name,\n clear,\n common_default,\n configureSvgSize,\n evaluate,\n getConfig,\n getConfig2,\n getUrl,\n log,\n sanitizeText\n} from \"./chunk-3XYRH5AP.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, 7], $V1 = [1, 13], $V2 = [1, 14], $V3 = [1, 15], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 21, 28, 29, 30, 31, 32, 40, 44, 47], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 15, 16, 21, 28, 29, 30, 31, 32, 40, 44, 47], $Vd = [8, 15, 16, 21, 27, 28, 29, 30, 31, 32, 40, 44, 47], $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, \"block\": 31, \"NODE_ID\": 32, \"nodeShapeNLabel\": 33, \"dirList\": 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\": 49, \"$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: \"block\", 32: \"NODE_ID\", 35: \"DIR\", 36: \"NODE_DSTART\", 37: \"NODE_DEND\", 38: \"BLOCK_ARROW_START\", 39: \"BLOCK_ARROW_END\", 40: \"classDef\", 41: \"CLASSDEF_ID\", 42: \"CLASSDEF_STYLEOPTS\", 43: \"DEFAULT\", 44: \"class\", 45: \"CLASSENTITY_IDS\", 46: \"STYLECLASS\", 47: \"style\", 48: \"STYLE_ENTITY_IDS\", 49: \"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], [34, 1], [34, 2], [33, 3], [33, 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] }, { 11: 3, 13: 4, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $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, 21: $V0, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $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, 32: $V4 }, { 11: 27, 13: 4, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 41: [1, 28], 43: [1, 29] }, { 45: [1, 30] }, { 48: [1, 31] }, o($Vd, [2, 29], { 33: 32, 36: [1, 33], 38: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 32: $V4 }, { 32: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 30: [1, 38] }, { 42: [1, 39] }, { 42: [1, 40] }, { 46: [1, 41] }, { 49: [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]), { 37: [1, 47] }, { 34: 48, 35: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 39: [1, 51] }, { 34: 52, 35: $Ve, 39: [2, 31] }, { 32: [2, 15] }, o($Vd, [2, 34]), { 39: [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 return 10;\n break;\n case 1:\n yy.getLogger().debug(\"Found space-block\");\n return 31;\n break;\n case 2:\n yy.getLogger().debug(\"Found nl-block\");\n return 31;\n break;\n case 3:\n yy.getLogger().debug(\"Found space-block\");\n return 29;\n break;\n case 4:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 5:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 6:\n return 5;\n break;\n case 7:\n yy_.yytext = -1;\n return 28;\n break;\n case 8:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n break;\n case 9:\n this.pushState(\"md_string\");\n break;\n case 10:\n return \"MD_STR\";\n break;\n case 11:\n this.popState();\n break;\n case 12:\n this.pushState(\"string\");\n break;\n case 13:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 14:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n break;\n case 15:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n break;\n case 16:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n break;\n case 17:\n return 43;\n break;\n case 18:\n return \"LINKSTYLE\";\n break;\n case 19:\n return \"INTERPOLATE\";\n break;\n case 20:\n this.pushState(\"CLASSDEF\");\n return 40;\n break;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 22:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 41;\n break;\n case 23:\n this.popState();\n return 42;\n break;\n case 24:\n this.pushState(\"CLASS\");\n return 44;\n break;\n case 25:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 45;\n break;\n case 26:\n this.popState();\n return 46;\n break;\n case 27:\n this.pushState(\"STYLE_STMNT\");\n return 47;\n break;\n case 28:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 48;\n break;\n case 29:\n this.popState();\n return 49;\n break;\n case 30:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n break;\n case 31:\n this.popState();\n return \"acc_title_value\";\n break;\n case 32:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n break;\n case 33:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 34:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 35:\n this.popState();\n break;\n case 36:\n return \"acc_descr_multiline_value\";\n break;\n case 37:\n return 30;\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 this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n break;\n case 55:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 56:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 57:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 58:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 59:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 62:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 63:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 64:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 65:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 66:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 67:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 68:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 69:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 70:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 71:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 72:\n this.pushState(\"NODE\");\n return 36;\n break;\n case 73:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 36;\n break;\n case 74:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 38;\n break;\n case 75:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 32;\n break;\n case 76:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n break;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n this.pushState(\"md_string\");\n break;\n case 79:\n return \"NODE_DESCR\";\n break;\n case 80:\n this.popState();\n break;\n case 81:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 83:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n break;\n case 84:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 85:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n break;\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n break;\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n break;\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n break;\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n break;\n case 91:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n break;\n case 92:\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 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: LINK\", yy_.yytext);\n return 15;\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 yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 100:\n this.pushState(\"md_string\");\n break;\n case 101:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\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 this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 105:\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\\s+)/, /^(?:block\\n+)/, /^(?:block:)/, /^(?:[\\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\": [29], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [28], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [23], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [21, 22], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [26], \"inclusive\": false }, \"CLASS\": { \"rules\": [25], \"inclusive\": false }, \"LLABEL\": { \"rules\": [100, 101, 102, 103, 104], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [86, 87, 88, 89, 90, 91, 92], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [77, 82, 85], \"inclusive\": false }, \"NODE\": { \"rules\": [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 78, 81], \"inclusive\": false }, \"md_string\": { \"rules\": [10, 11, 79, 80], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [13, 14, 83, 84], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [35, 36], \"inclusive\": false }, \"acc_descr\": { \"rules\": [33], \"inclusive\": false }, \"acc_title\": { \"rules\": [31], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 24, 27, 30, 32, 34, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 93, 94, 95, 96, 97, 98, 99, 105], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nvar block_default = parser;\n\n// src/diagrams/block/blockDB.ts\nimport clone from \"lodash-es/clone.js\";\nvar blockDatabase = /* @__PURE__ */ new Map();\nvar edgeList = [];\nvar edgeCount = /* @__PURE__ */ new Map();\nvar COLOR_KEYWORD = \"color\";\nvar FILL_KEYWORD = \"fill\";\nvar BG_FILL = \"bgFill\";\nvar STYLECLASS_SEP = \",\";\nvar config = getConfig2();\nvar classes = /* @__PURE__ */ new Map();\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, config), \"sanitizeText\");\nvar addStyleClass = /* @__PURE__ */ __name(function(id, styleAttributes = \"\") {\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id, styles: [], textStyles: [] };\n classes.set(id, foundClass);\n }\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n}, \"addStyleClass\");\nvar addStyle2Node = /* @__PURE__ */ __name(function(id, styles = \"\") {\n const foundBlock = blockDatabase.get(id);\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n}, \"addStyle2Node\");\nvar setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: \"na\", children: [] };\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n}, \"setCssClass\");\nvar populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n for (const block of blockList) {\n if (block.label) {\n block.label = sanitizeText2(block.label);\n }\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, block?.styleClass ?? \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns ?? -1;\n } else if (block.type === \"edge\") {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n if (existingBlock === void 0) {\n blockDatabase.set(block.id, block);\n } else {\n if (block.type !== \"na\") {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + \"-\" + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === void 0) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n}, \"populateBlockDatabase\");\nvar blocks = [];\nvar rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nvar clear2 = /* @__PURE__ */ __name(() => {\n log.debug(\"Clear called\");\n clear();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = /* @__PURE__ */ new Map([[\"root\", rootBlock]]);\n blocks = [];\n classes = /* @__PURE__ */ new Map();\n edgeList = [];\n edgeCount = /* @__PURE__ */ new Map();\n}, \"clear\");\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\n__name(typeStr2Type, \"typeStr2Type\");\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\n__name(edgeTypeStr2Type, \"edgeTypeStr2Type\");\nfunction edgeStrToEdgeData(typeStr) {\n switch (typeStr.trim()) {\n case \"--x\":\n return \"arrow_cross\";\n case \"--o\":\n return \"arrow_circle\";\n default:\n return \"arrow_point\";\n }\n}\n__name(edgeStrToEdgeData, \"edgeStrToEdgeData\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nvar setHierarchy = /* @__PURE__ */ __name((block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n}, \"setHierarchy\");\nvar getColumns = /* @__PURE__ */ __name((blockId) => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n}, \"getColumns\");\nvar getBlocksFlat = /* @__PURE__ */ __name(() => {\n return [...blockDatabase.values()];\n}, \"getBlocksFlat\");\nvar getBlocks = /* @__PURE__ */ __name(() => {\n return blocks || [];\n}, \"getBlocks\");\nvar getEdges = /* @__PURE__ */ __name(() => {\n return edgeList;\n}, \"getEdges\");\nvar getBlock = /* @__PURE__ */ __name((id) => {\n return blockDatabase.get(id);\n}, \"getBlock\");\nvar setBlock = /* @__PURE__ */ __name((block) => {\n blockDatabase.set(block.id, block);\n}, \"setBlock\");\nvar getLogger = /* @__PURE__ */ __name(() => log, \"getLogger\");\nvar getClasses = /* @__PURE__ */ __name(function() {\n return classes;\n}, \"getClasses\");\nvar db = {\n getConfig: /* @__PURE__ */ __name(() => getConfig().block, \"getConfig\"),\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear: clear2,\n generateId\n};\nvar blockDB_default = db;\n\n// src/diagrams/block/styles.ts\nimport * as khroma from \"khroma\";\nvar fade = /* @__PURE__ */ __name((color, opacity) => {\n const channel2 = khroma.channel;\n const r = channel2(color, \"r\");\n const g = channel2(color, \"g\");\n const b = channel2(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n}, \"fade\");\nvar getStyles = /* @__PURE__ */ __name((options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n 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: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color:\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 / (block.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 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 child.size.y = parent.size.y - parent.size.height / 2 + py * (height + padding) + height / 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 columnPos += child?.widthInColumns ?? 1;\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\nimport { select } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const span = div.append(\"span\");\n span.html(label);\n applyStyle(span, node.labelStyle);\n span.attr(\"class\", labelClass);\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.debug(\"vertexText\" + vertexText);\n const label = await replaceIconSubstring(decodeEntities(vertexText));\n const node = {\n isNode,\n label,\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select as select2 } 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 = evaluate(config2.flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n },\n config2\n ) : await createLabel_default(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select2(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = await createLabel_default(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = await createLabel_default(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = await createLabel_default(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = await createLabel_default(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getConfig2().flowchart.htmlLabels && 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 select4 } 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 select3 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || evaluate(config2.flowchart.htmlLabels);\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 const textNode = label.node();\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 = textNode.appendChild(\n await createLabel_default(\n sanitizeText(decodeEntities(labelText), config2),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(config2.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select3(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config2.fontSize ? config2.fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig2().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_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 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select4(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select4(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 select4(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 select4(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 = labelContainer.node().appendChild(await createLabel_default(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select4(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 (getConfig2().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(await createLabel_default(classTitleString, node.labelStyle, true, true));\n select4(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select4(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 (getConfig2().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n await createLabel_default(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select4(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 (getConfig2().flowchart.htmlLabels) {\n displayText = displayText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n await createLabel_default(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select4(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 select4(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 select4(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 select4(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 select4(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle: circle2,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, renderOptions) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig2().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding2 = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding2) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\n// src/diagrams/block/renderHelpers.ts\nfunction getNodeFromBlock(block, db2, positioned = false) {\n const vertex = block;\n let classStr = \"default\";\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding2;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding2 = 0;\n break;\n case \"square\":\n shape = \"rect\";\n break;\n case \"diamond\":\n shape = \"question\";\n break;\n case \"hexagon\":\n shape = \"hexagon\";\n break;\n case \"block_arrow\":\n shape = \"block_arrow\";\n break;\n case \"odd\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n shape = \"lean_right\";\n break;\n case \"lean_left\":\n shape = \"lean_left\";\n break;\n case \"trapezoid\":\n shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n shape = \"inv_trapezoid\";\n break;\n case \"rect_left_inv_arrow\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n shape = \"circle\";\n break;\n case \"ellipse\":\n shape = \"ellipse\";\n break;\n case \"stadium\":\n shape = \"stadium\";\n break;\n case \"subroutine\":\n shape = \"subroutine\";\n break;\n case \"cylinder\":\n shape = \"cylinder\";\n break;\n case \"group\":\n shape = \"rect\";\n break;\n case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray(vertex?.styles ?? []);\n const vertexText = vertex.label;\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding2 ?? getConfig()?.block?.padding ?? 0\n };\n return node;\n}\n__name(getNodeFromBlock, \"getNodeFromBlock\");\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const config2 = getConfig();\n const nodeEl = await insertNode(elem, node, { config: config2 });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\n__name(calculateBlockSize, \"calculateBlockSize\");\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n const config2 = getConfig();\n await insertNode(elem, node, { config: config2 });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n__name(insertBlockPositioned, \"insertBlockPositioned\");\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\n__name(performOperations, \"performOperations\");\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\n__name(calculateBlockSizes, \"calculateBlockSizes\");\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\n__name(insertBlocks, \"insertBlocks\");\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if (startBlock?.size && endBlock?.size) {\n const start2 = startBlock.size;\n const end2 = endBlock.size;\n const points = [\n { x: start2.x, y: start2.y },\n { x: start2.x + (end2.x - start2.x) / 2, y: start2.y + (end2.y - start2.y) / 2 },\n { x: end2.x, y: end2.y }\n ];\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: edge.id },\n {\n ...edge,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\n__name(insertEdges, \"insertEdges\");\n\n// src/diagrams/block/blockRenderer.ts\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagObj) {\n return diagObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = d3select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n const markers2 = [\"point\", \"circle\", \"cross\"];\n markers_default(svg, markers2, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n}, \"draw\");\nvar blockRenderer_default = {\n draw,\n getClasses: getClasses2\n};\n\n// src/diagrams/block/blockDiagram.ts\nvar diagram = {\n parser: block_default,\n db: blockDB_default,\n renderer: blockRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\nexport class Graph {\n constructor(opts = {}) {\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n }\n /* === Graph functions ========= */\n isDirected() {\n return this._isDirected;\n }\n isMultigraph() {\n return this._isMultigraph;\n }\n isCompound() {\n return this._isCompound;\n }\n setGraph(label) {\n this._label = label;\n return this;\n }\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n nodeCount() {\n return this._nodeCount;\n }\n nodes() {\n return _.keys(this._nodes);\n }\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n // @ts-expect-error\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n node(v) {\n return this._nodes[v];\n }\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n filterNodes(filter) {\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n // @ts-expect-error\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n /* === Edge functions ========== */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n edgeCount() {\n return this._edgeCount;\n }\n edges() {\n return _.values(this._edgeObjs);\n }\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n /*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n // @ts-expect-error\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","import {\n __name\n} from \"./chunk-3XYRH5AP.mjs\";\n\n// src/diagrams/globalStyles.ts\nvar getIconStyles = /* @__PURE__ */ __name(() => `\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n`, \"getIconStyles\");\n\nexport {\n getIconStyles\n};\n"],"names":["value","color","channel","lang","round","parse","parser","o","k","v","o2","l","length","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","parser2","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","getLogger","debug","setHierarchy","this","$","concat","edgeTypeStr","label","num","parseInt","spaceId","generateId","id","type","width","children","edgeData","edgeStrToEdgeData","directions","start","end","arrowTypeEnd","arrowTypeStart","typeStr2Type","typeStr","widthInColumns","columns","trim","css","styleClass","stylesStr","table","defaultActions","parseError","str","hash","recoverable","error","Error","input","self","stack","tstack","vstack","lstack","recovering","args","slice","call","arguments","lexer2","Object","create","lexer","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","push","ranges","options","lex","token","pop","Array","getPrototypeOf","n","symbol","preErrorSymbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","line","loc","first_line","last_line","first_column","last_column","range","apply","EOF","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","split","substr","oldLines","more","reject","backtrack_lexer","less","pastInput","past","replace","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","i","flex","begin","condition","popState","conditions","topState","Math","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","block_default","blockDatabase","Map","edgeList","edgeCount","COLOR_KEYWORD","FILL_KEYWORD","config","classes","sanitizeText2","txt","sanitizeText","addStyleClass","styleAttributes","foundClass","get","styles","textStyles","set","forEach","attrib","fixedAttrib","RegExp","exec","newStyle2","addStyle2Node","foundBlock","setCssClass","itemIds","cssClassName","trimmedId","populateBlockDatabase","_blockList","parent","blockList","flat","block","count","existingBlock","w","j","newBlock","blocks","rootBlock","clear2","edgeTypeStr2Type","cnt","random","toString","getColumns","blockId","getBlocksFlat","values","getBlocks","getEdges","getBlock","setBlock","getClasses","blockDB_default","getConfig","clear","fade","opacity","channel2","g","b","styles_default","fontFamily","nodeTextColor","textColor","titleColor","mainBkg","nodeBorder","arrowheadColor","lineColor","edgeLabelBackground","clusterBkg","clusterBorder","tertiaryColor","border2","insertMarkers","elem","markerArray","markerName","markers","extension","append","attr","composition","aggregation","dependency","lollipop","point","style","circle","cross","barb","markers_default","padding","calculateBlockPosition","position","Number","isInteger","px","py","floor","getMaxChildSize","maxWidth","maxHeight","child","height","x","y","size","setBlockSizes","db2","siblingWidth","siblingHeight","childSize","JSON","stringify","numItems","xSize","ySize","ceil","childWidth","childHeight","max","min","layoutBlocks","widthOfChildren","columnPos","startingPosX","rowPos","width2","halfWidth","findBounds","minX","minY","maxX","maxY","layout","root","applyStyle","dom","styleFn","addHtmlLabel","node","fo","document","createElementNS","div","labelClass","isNode","span","html","labelStyle","createLabel_default","async","_vertexText","isTitle","vertexText","flowchart","htmlLabels","svgLabel","setAttribute","rows","isArray","row","tspan","setAttributeNS","textContent","appendChild","addEdgeMarkers","svgPath","edge","url","diagramType","addEdgeMarker","arrowTypesMap","arrow_cross","arrow_point","arrow_barb","arrow_circle","arrowType","endMarkerType","warn","suffix","edgeLabels","terminalLabels","insertEdgeLabel","config2","useHtmlLabels","labelElement","labelType","addSvgBackground","edgeLabel","insert","bbox","getBBox","dv","getBoundingClientRect","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","setTerminalWidth","startLabelRight","startEdgeLabelRight","startRight","endLabelLeft","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","positionEdgeLabel","paths","path","updatedPath","originalPath","siteConfig","subGraphTitleTotalMargin","el","pos","calcLabelPosition","calcTerminalLabelPosition","outsideNode","point2","dx","dy","h","intersection","outsidePoint","insidePoint","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundaryNode","points","lastPointOutside","isInside","inter","pointPresent","some","e","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","intersect","unshift","toCluster","fromCluster","reverse","lineData","filter","isNaN","curve","lineFunction","strokeClasses","thickness","pattern","arrowMarkerAbsolute","expandAndDeduplicateDirections","uniqueDirections","Set","direction","add","getArrowPoints","duplicatedDirections","midpoint","padding2","has","intersectNode","intersect_node_default","intersectEllipse","rx","ry","cx","cy","det","sqrt","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","POSITIVE_INFINITY","entry","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","intersect_default","ellipse","polygon","rect","sx","sy","labelHelper","_classes","classes2","shapeSvg","domId","labelText","textNode","wrappingWidth","halfPadding","images","getElementsByTagName","noImgText","Promise","all","map","img","setupImage","display","flexDirection","bodyFontSize","fontSize","window","getComputedStyle","body","enlargingFactor","minWidth","setTimeout","complete","addEventListener","centerLabel","updateNodeBounds","element","insertPolygonShape","d","note_default","info","rect2","formatClass","getClassesFromNode","otherClasses","class","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","totalWidth","positioned","totalHeight","props","propKeys","keys","borders","applyNodePropertyBorders","delete","propKey","composite","labelRect","strokeDashArray","addBorder","skipBorder","includes","rectWithTitle","innerLine","text2","title","textRows","titleBox","descr","stadium","circle2","circle3","doublecircle","circleGroup","outerCircle","innerCircle","gap","subroutine","forkJoin","dir","shapes","rhombus","note","fork","class_box","topLine","bottomLine","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","members","member","parsedInfo","getDisplayDetails","parsedText","displayText","lbl","cssStyle","classMethods","methods","diffX2","diffX","lineHeight","memberBBox","nodeElems","insertNode","renderOptions","newEl","link","target","securityLevel","linkTarget","tooltip","haveCallback","positionNode","diff","clusterNode","getNodeFromBlock","vertex","classStr","radius","bounds","calculateBlockSize","nodeEl","boundingBox","obj","remove","insertBlockPositioned","performOperations","blocks2","operation","calculateBlockSizes","insertBlocks","insertEdges","edges","multigraph","compound","setGraph","rankdir","nodesep","ranksep","marginx","marginy","setNode","startBlock","endBlock","start2","end2","name","getClasses2","diagObj","db","diagram","renderer","draw","_version","conf","sandboxElement","nodes","contentDocument","svg","select","bl","blArr","bounds2","magicFactor","useMaxWidth","arrays","isArrayLikeObject","GRAPH_NODE","Graph","constructor","opts","_isDirected","directed","_isMultigraph","_isCompound","_label","undefined","_defaultNodeLabelFn","_defaultEdgeLabelFn","_nodes","_parent","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","isDirected","isMultigraph","isCompound","setDefaultNodeLabel","newDefault","nodeCount","_nodeCount","sources","sinks","setNodes","vs","hasNode","removeNode","removeEdge","_removeFromParentsChildList","setParent","ancestor","predecessors","predsV","successors","sucsV","neighbors","preds","isLeaf","filterNodes","copy","setEdge","parents","findParent","setDefaultEdgeLabel","_edgeCount","setPath","valueSpecified","arg0","edgeArgsToId","edgeObj","v_","w_","tmp","edgeArgsToObj","freeze","incrementOrInitEntry","edgeObjToId","hasEdge","decrementOrRemoveEntry","inEdges","u","inV","outEdges","outV","nodeEdges","getIconStyles"],"sourceRoot":""}
|