mdts 0.5.1 → 0.6.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.
Files changed (49) hide show
  1. package/dist/cli.js +2 -1
  2. package/dist/frontend/bundle.js +9280 -484
  3. package/dist/frontend/markdown.css +3 -3
  4. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_architecture-O4VJ6CD3_mjs.bundle.js +22 -0
  5. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_gitGraph-ZV4HHKMB_mjs.bundle.js +22 -0
  6. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_info-63CPKGFF_mjs.bundle.js +22 -0
  7. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_packet-HUATNLJX_mjs.bundle.js +22 -0
  8. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_pie-WTHONI2E_mjs.bundle.js +22 -0
  9. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_radar-NJJJXTRR_mjs.bundle.js +22 -0
  10. package/dist/frontend/node_modules_mermaid-js_parser_dist_chunks_mermaid-parser_core_treemap-75Q7IDZK_mjs.bundle.js +22 -0
  11. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_classDiagram-M3E45YP4_mjs.bundle.js +22 -0
  12. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_classDiagram-v2-YAWTLIQI_mjs.bundle.js +22 -0
  13. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_diagram-5UYTHUR4_mjs.bundle.js +32 -0
  14. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_infoDiagram-LHK5PUON_mjs.bundle.js +22 -0
  15. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_pieDiagram-NIOCPIFQ_mjs.bundle.js +32 -0
  16. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-v2-5AN5P6BG_mjs.bundle.js +22 -0
  17. package/dist/frontend/vendors-node_modules_cytoscape_dist_cytoscape_esm_mjs.bundle.js +22 -0
  18. package/dist/frontend/vendors-node_modules_dagre-d3-es_src_dagre_index_js.bundle.js +682 -0
  19. package/dist/frontend/vendors-node_modules_dagre-d3-es_src_graphlib_index_js.bundle.js +42 -0
  20. package/dist/frontend/vendors-node_modules_katex_dist_katex_mjs.bundle.js +22 -0
  21. package/dist/frontend/vendors-node_modules_lodash-es__baseClone_js-node_modules_lodash-es__baseFlatten_js-node_modu-64f2a5.bundle.js +852 -0
  22. package/dist/frontend/vendors-node_modules_lodash-es__basePickBy_js-node_modules_lodash-es__hasUnicode_js-node_modu-b1bc3b.bundle.js +232 -0
  23. package/dist/frontend/vendors-node_modules_mermaid-js_parser_dist_mermaid-parser_core_mjs.bundle.js +1582 -0
  24. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_architectureDiagram-SUXI7LT5_mjs.bundle.js +74 -0
  25. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-6J76NXCF_mjs.bundle.js +52 -0
  26. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-6F6E4RAY_mjs.bundle.js +32 -0
  27. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_chunk-OW32GOEJ_mjs.bundle.js +42 -0
  28. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_chunk-SZ463SBG_mjs.bundle.js +52 -0
  29. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_dagre-JOIXM2OF_mjs.bundle.js +42 -0
  30. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-VMROVX33_mjs.bundle.js +42 -0
  31. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-ZTM2IBQH_mjs.bundle.js +32 -0
  32. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-3M52JZNH_mjs.bundle.js +52 -0
  33. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_flowDiagram-KYDEHFYC_mjs.bundle.js +62 -0
  34. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_ganttDiagram-EK5VF46D_mjs.bundle.js +52 -0
  35. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-GW3U2K7C_mjs.bundle.js +42 -0
  36. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-EWQZEKCU_mjs.bundle.js +42 -0
  37. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-ZSS6B67P_mjs.bundle.js +32 -0
  38. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_mindmap-definition-6CBA2TL7_mjs.bundle.js +52 -0
  39. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-2OG54O6I_mjs.bundle.js +22 -0
  40. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_requirementDiagram-QOLK2EJ7_mjs.bundle.js +42 -0
  41. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-4UZDY2LN_mjs.bundle.js +162 -0
  42. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-SKLFT4DO_mjs.bundle.js +42 -0
  43. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-MI5ZYTHO_mjs.bundle.js +22 -0
  44. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_timeline-definition-MYPXXCX6_mjs.bundle.js +22 -0
  45. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-H2YORKM3_mjs.bundle.js +22 -0
  46. package/dist/server/routes/outline.js +2 -1
  47. package/dist/server/server.js +16 -15
  48. package/dist/utils/logger.js +12 -0
  49. package/package.json +1 -1
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /*
3
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
4
+ * This devtool is neither made for production nor for readable output files.
5
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
6
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
+ * or disable the default devtool with "devtool: false".
8
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
+ */
10
+ (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_timeline-definition-MYPXXCX6_mjs"],{
11
+
12
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-MYPXXCX6.mjs":
13
+ /*!****************************************************************************************!*\
14
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-MYPXXCX6.mjs ***!
15
+ \****************************************************************************************/
16
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
17
+
18
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ diagram: () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-3XYRH5AP.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-3XYRH5AP.mjs\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/src/index.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! khroma */ \"./node_modules/khroma/dist/methods/is_dark.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! khroma */ \"./node_modules/khroma/dist/methods/lighten.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! khroma */ \"./node_modules/khroma/dist/methods/darken.js\");\n\n\n// src/diagrams/timeline/parser/timeline.jison\nvar parser = function() {\n var o = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 16], $V7 = [1, 17];\n var parser2 = {\n trace: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"timeline\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"title\": 11, \"acc_title\": 12, \"acc_title_value\": 13, \"acc_descr\": 14, \"acc_descr_value\": 15, \"acc_descr_multiline_value\": 16, \"section\": 17, \"period_statement\": 18, \"event_statement\": 19, \"period\": 20, \"event\": 21, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"timeline\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 11: \"title\", 12: \"acc_title\", 13: \"acc_title_value\", 14: \"acc_descr\", 15: \"acc_descr_value\", 16: \"acc_descr_multiline_value\", 17: \"section\", 20: \"period\", 21: \"event\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]],\n performAction: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n // removed by dead control flow\n{}\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.getCommonDb().setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 15:\n yy.addTask($$[$0], 0, \"\");\n this.$ = $$[$0];\n break;\n case 16:\n yy.addEvent($$[$0].substr(2));\n this.$ = $$[$0];\n break;\n }\n }, \"anonymous\"),\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 18, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, o($V0, [2, 11]), o($V0, [2, 12]), o($V0, [2, 13]), o($V0, [2, 14]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 4]), o($V0, [2, 9]), o($V0, [2, 10])],\n defaultActions: {},\n parseError: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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 (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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 (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: { \"case-insensitive\": true },\n performAction: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n // removed by dead control flow\n{}\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n // removed by dead control flow\n{}\n case 6:\n return 11;\n // removed by dead control flow\n{}\n case 7:\n this.begin(\"acc_title\");\n return 12;\n // removed by dead control flow\n{}\n case 8:\n this.popState();\n return \"acc_title_value\";\n // removed by dead control flow\n{}\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n // removed by dead control flow\n{}\n case 10:\n this.popState();\n return \"acc_descr_value\";\n // removed by dead control flow\n{}\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n // removed by dead control flow\n{}\n case 14:\n return 17;\n // removed by dead control flow\n{}\n case 15:\n return 21;\n // removed by dead control flow\n{}\n case 16:\n return 20;\n // removed by dead control flow\n{}\n case 17:\n return 6;\n // removed by dead control flow\n{}\n case 18:\n return \"INVALID\";\n // removed by dead control flow\n{}\n }\n }, \"anonymous\"),\n rules: [/^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:timeline\\b)/i, /^(?:title\\s[^\\n]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^:\\n]+)/i, /^(?::\\s(?:[^:\\n]|:(?!\\s))+)/i, /^(?:[^#:\\n]+)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nvar timeline_default = parser;\n\n// src/diagrams/timeline/timelineDb.js\nvar timelineDb_exports = {};\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__export)(timelineDb_exports, {\n addEvent: () => addEvent,\n addSection: () => addSection,\n addTask: () => addTask,\n addTaskOrg: () => addTaskOrg,\n clear: () => clear2,\n default: () => timelineDb_default,\n getCommonDb: () => getCommonDb,\n getSections: () => getSections,\n getTasks: () => getTasks\n});\nvar currentSection = \"\";\nvar currentTaskId = 0;\nvar sections = [];\nvar tasks = [];\nvar rawTasks = [];\nvar getCommonDb = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(() => _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.commonDb_exports, \"getCommonDb\");\nvar clear2 = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.clear)();\n}, \"clear\");\nvar addSection = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(txt) {\n currentSection = txt;\n sections.push(txt);\n}, \"addSection\");\nvar getSections = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function() {\n return sections;\n}, \"getSections\");\nvar getTasks = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks.push(...rawTasks);\n return tasks;\n}, \"getTasks\");\nvar addTask = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : []\n };\n rawTasks.push(rawTask);\n}, \"addTask\");\nvar addEvent = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(event) {\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n currentTask.events.push(event);\n}, \"addEvent\");\nvar addTaskOrg = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n}, \"addTaskOrg\");\nvar compileTasks = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function() {\n const compileTask = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(pos) {\n return rawTasks[pos].processed;\n }, \"compileTask\");\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n}, \"compileTasks\");\nvar timelineDb_default = {\n clear: clear2,\n getCommonDb,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent\n};\n\n// src/diagrams/timeline/timelineRenderer.ts\n\n\n// src/diagrams/timeline/svgDraw.js\n\nvar MAX_SECTIONS = 12;\nvar drawRect = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, rectData) {\n const rectElem = elem.append(\"rect\");\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.y);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", rectData.width);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (rectData.class !== void 0) {\n rectElem.attr(\"class\", rectData.class);\n }\n return rectElem;\n}, \"drawRect\");\nvar drawFace = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc = (0,d3__WEBPACK_IMPORTED_MODULE_1__.arc)().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(smile, \"smile\");\n function sad(face2) {\n const arc = (0,d3__WEBPACK_IMPORTED_MODULE_1__.arc)().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(sad, \"sad\");\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(ambivalent, \"ambivalent\");\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n return circleElement;\n}, \"drawFace\");\nvar drawCircle = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n}, \"drawCircle\");\nvar drawText = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, textData) {\n const nText = textData.text.replace(/<br\\s*\\/?>/gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n}, \"drawText\");\nvar drawLabel = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(genPoints, \"genPoints\");\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n}, \"drawLabel\");\nvar drawSection = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, section, conf) {\n const g = elem.append(\"g\");\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"journey-section section-type-\" + section.num },\n conf,\n section.colour\n );\n}, \"drawSection\");\nvar taskCount = -1;\nvar drawTask = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf,\n task.colour\n );\n}, \"drawTask\");\nvar drawBackgroundRect = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: \"rect\"\n });\n rectElem.lower();\n}, \"drawBackgroundRect\");\nvar getTextObj = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n \"text-anchor\": \"start\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n}, \"getTextObj\");\nvar getNoteRect = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n}, \"getNoteRect\");\nvar _drawTextCandidateFunc = /* @__PURE__ */ function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(byText, \"byText\");\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n const lines = content.split(/<br\\s*\\/?>/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(byTspan, \"byTspan\");\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(byFo, \"byFo\");\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(_setTextAttrs, \"_setTextAttrs\");\n return function(conf) {\n return conf.textPlacement === \"fo\" ? byFo : conf.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nvar initGraphics = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n}, \"initGraphics\");\nfunction wrap(text, width) {\n text.each(function() {\n var text2 = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(this), words = text2.text().split(/(\\s+|<br>)/).reverse(), word, line = [], lineHeight = 1.1, y = text2.attr(\"y\"), dy = parseFloat(text2.attr(\"dy\")), tspan = text2.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(\" \").trim());\n if (tspan.node().getComputedTextLength() > width || word === \"<br>\") {\n line.pop();\n tspan.text(line.join(\" \").trim());\n if (word === \"<br>\") {\n line = [\"\"];\n } else {\n line = [word];\n }\n tspan = text2.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(wrap, \"wrap\");\nvar drawNode = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, node, fullSection, conf) {\n const section = fullSection % MAX_SECTIONS - 1;\n const nodeElem = elem.append(\"g\");\n node.section = section;\n nodeElem.attr(\n \"class\",\n (node.class ? node.class + \" \" : \"\") + \"timeline-node \" + (\"section-\" + section)\n );\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize?.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n textElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + node.padding / 2 + \")\");\n defaultBkg(bkgElem, node, section, conf);\n return node;\n}, \"drawNode\");\nvar getVirtualNodeHeight = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, node, conf) {\n const textElem = elem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize?.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n}, \"getVirtualNodeHeight\");\nvar defaultBkg = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n}, \"defaultBkg\");\nvar svgDraw_default = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight\n};\n\n// src/diagrams/timeline/timelineRenderer.ts\nvar draw = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(text, id, version, diagObj) {\n const conf = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.getConfig2)();\n const LEFT_MARGIN = conf.timeline?.leftMargin ?? 50;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"timeline\", diagObj.db);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"task\", tasks2);\n svgDraw_default.initGraphics(svg);\n const sections2 = diagObj.db.getSections();\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"sections\", sections2);\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n sectionBeginY = 50;\n let sectionNumber = 0;\n let hasSections = true;\n sections2.forEach(function(section) {\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n const sectionHeight = svgDraw_default.getVirtualNodeHeight(svg, sectionNode, conf);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"sectionHeight before draw\", sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"tasks.length\", tasks2.length);\n for (const [i, task] of tasks2.entries()) {\n const taskNode = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n const taskHeight = svgDraw_default.getVirtualNodeHeight(svg, taskNode, conf);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"taskHeight before draw\", taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n maxEventCount = Math.max(maxEventCount, task.events.length);\n let maxEventLineLengthTemp = 0;\n for (const event of task.events) {\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n maxEventLineLengthTemp += svgDraw_default.getVirtualNodeHeight(svg, eventNode, conf);\n }\n if (task.events.length > 0) {\n maxEventLineLengthTemp += (task.events.length - 1) * 10;\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"maxSectionHeight before draw\", maxSectionHeight);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"maxTaskHeight before draw\", maxTaskHeight);\n if (sections2 && sections2.length > 0) {\n sections2.forEach((section) => {\n const tasksForSection = tasks2.filter((task) => task.section === section);\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"sectionNode\", sectionNode);\n const sectionNodeWrapper = svg.append(\"g\");\n const node = svgDraw_default.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"sectionNode output\", node);\n sectionNodeWrapper.attr(\"transform\", `translate(${masterX}, ${sectionBeginY})`);\n masterY += maxSectionHeight + 50;\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false\n );\n }\n masterX += 200 * Math.max(tasksForSection.length, 1);\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n hasSections = false;\n drawTasks(\n svg,\n tasks2,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true\n );\n }\n const box = svg.node().getBBox();\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"bounds\", box);\n if (title) {\n svg.append(\"text\").text(title).attr(\"x\", box.width / 2 - LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 20);\n }\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n const lineWrapper = svg.append(\"g\").attr(\"class\", \"lineWrapper\");\n lineWrapper.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", depthY).attr(\"x2\", box.width + 3 * LEFT_MARGIN).attr(\"y2\", depthY).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.setupGraphViewbox)(\n void 0,\n svg,\n conf.timeline?.padding ?? 50,\n conf.timeline?.useMaxWidth ?? false\n );\n}, \"draw\");\nvar drawTasks = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(diagram2, tasks2, sectionColor, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) {\n for (const task of tasks2) {\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"taskNode\", taskNode);\n const taskWrapper = diagram2.append(\"g\").attr(\"class\", \"taskWrapper\");\n const node = svgDraw_default.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"taskHeight after draw\", taskHeight);\n taskWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n if (task.events) {\n const lineWrapper = diagram2.append(\"g\").attr(\"class\", \"lineWrapper\");\n let lineLength = maxTaskHeight;\n masterY += 100;\n lineLength = lineLength + drawEvents(diagram2, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n lineWrapper.append(\"line\").attr(\"x1\", masterX + 190 / 2).attr(\"y1\", masterY + maxTaskHeight).attr(\"x2\", masterX + 190 / 2).attr(\"y2\", masterY + maxTaskHeight + 100 + maxEventLineLength + 100).attr(\"stroke-width\", 2).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\").attr(\"stroke-dasharray\", \"5,5\");\n }\n masterX = masterX + 200;\n if (isWithoutSections && !conf.timeline?.disableMulticolor) {\n sectionColor++;\n }\n }\n masterY = masterY - 10;\n}, \"drawTasks\");\nvar drawEvents = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(function(diagram2, events, sectionColor, masterX, masterY, conf) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n for (const event of events) {\n const eventNode = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(\"eventNode\", eventNode);\n const eventWrapper = diagram2.append(\"g\").attr(\"class\", \"eventWrapper\");\n const node = svgDraw_default.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n masterY = eventBeginY;\n return maxEventHeight;\n}, \"drawEvents\");\nvar timelineRenderer_default = {\n setConf: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(() => {\n }, \"setConf\"),\n draw\n};\n\n// src/diagrams/timeline/styles.js\n\nvar genSections = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((options) => {\n let sections2 = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if ((0,khroma__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections2 += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options[\"cScaleLabel\" + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections2;\n}, \"genSections\");\nvar getStyles = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/timeline/timeline-definition.ts\nvar diagram = {\n db: timelineDb_exports,\n renderer: timelineRenderer_default,\n parser: timeline_default,\n styles: styles_default\n};\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-MYPXXCX6.mjs?\n}");
19
+
20
+ /***/ })
21
+
22
+ }]);
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /*
3
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
4
+ * This devtool is neither made for production nor for readable output files.
5
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
6
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
+ * or disable the default devtool with "devtool: false".
8
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
+ */
10
+ (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-H2YORKM3_mjs"],{
11
+
12
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-H2YORKM3.mjs":
13
+ /*!***********************************************************************************!*\
14
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-H2YORKM3.mjs ***!
15
+ \***********************************************************************************/
16
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
17
+
18
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ diagram: () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _chunk_QESNASVV_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-QESNASVV.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-QESNASVV.mjs\");\n/* harmony import */ var _chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-55PJQP7W.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-55PJQP7W.mjs\");\n/* harmony import */ var _chunk_P3VETL53_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-P3VETL53.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-P3VETL53.mjs\");\n/* harmony import */ var _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-3XYRH5AP.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-3XYRH5AP.mjs\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/src/index.js\");\n\n\n\n\n\n// src/diagrams/xychart/parser/xychart.jison\nvar parser = function() {\n var o = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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, 10, 12, 14, 16, 18, 19, 21, 23], $V1 = [2, 6], $V2 = [1, 3], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 7], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $V7 = [1, 25], $V8 = [1, 26], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [1, 32], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 43], $Vk = [1, 42], $Vl = [1, 47], $Vm = [1, 50], $Vn = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $Vo = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], $Vp = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $Vq = [1, 64];\n var parser2 = {\n trace: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"XYCHART\": 5, \"chartConfig\": 6, \"document\": 7, \"CHART_ORIENTATION\": 8, \"statement\": 9, \"title\": 10, \"text\": 11, \"X_AXIS\": 12, \"parseXAxis\": 13, \"Y_AXIS\": 14, \"parseYAxis\": 15, \"LINE\": 16, \"plotData\": 17, \"BAR\": 18, \"acc_title\": 19, \"acc_title_value\": 20, \"acc_descr\": 21, \"acc_descr_value\": 22, \"acc_descr_multiline_value\": 23, \"SQUARE_BRACES_START\": 24, \"commaSeparatedNumbers\": 25, \"SQUARE_BRACES_END\": 26, \"NUMBER_WITH_DECIMAL\": 27, \"COMMA\": 28, \"xAxisData\": 29, \"bandData\": 30, \"ARROW_DELIMITER\": 31, \"commaSeparatedTexts\": 32, \"yAxisData\": 33, \"NEWLINE\": 34, \"SEMI\": 35, \"EOF\": 36, \"alphaNum\": 37, \"STR\": 38, \"MD_STR\": 39, \"alphaNumToken\": 40, \"AMP\": 41, \"NUM\": 42, \"ALPHA\": 43, \"PLUS\": 44, \"EQUALS\": 45, \"MULT\": 46, \"DOT\": 47, \"BRKT\": 48, \"MINUS\": 49, \"UNDERSCORE\": 50, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"XYCHART\", 8: \"CHART_ORIENTATION\", 10: \"title\", 12: \"X_AXIS\", 14: \"Y_AXIS\", 16: \"LINE\", 18: \"BAR\", 19: \"acc_title\", 20: \"acc_title_value\", 21: \"acc_descr\", 22: \"acc_descr_value\", 23: \"acc_descr_multiline_value\", 24: \"SQUARE_BRACES_START\", 26: \"SQUARE_BRACES_END\", 27: \"NUMBER_WITH_DECIMAL\", 28: \"COMMA\", 31: \"ARROW_DELIMITER\", 34: \"NEWLINE\", 35: \"SEMI\", 36: \"EOF\", 38: \"STR\", 39: \"MD_STR\", 41: \"AMP\", 42: \"NUM\", 43: \"ALPHA\", 44: \"PLUS\", 45: \"EQUALS\", 46: \"MULT\", 47: \"DOT\", 48: \"BRKT\", 49: \"MINUS\", 50: \"UNDERSCORE\" },\n productions_: [0, [3, 2], [3, 3], [3, 2], [3, 1], [6, 1], [7, 0], [7, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 3], [9, 2], [9, 3], [9, 2], [9, 2], [9, 1], [17, 3], [25, 3], [25, 1], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]],\n performAction: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 5:\n yy.setOrientation($$[$0]);\n break;\n case 9:\n yy.setDiagramTitle($$[$0].text.trim());\n break;\n case 12:\n yy.setLineData({ text: \"\", type: \"text\" }, $$[$0]);\n break;\n case 13:\n yy.setLineData($$[$0 - 1], $$[$0]);\n break;\n case 14:\n yy.setBarData({ text: \"\", type: \"text\" }, $$[$0]);\n break;\n case 15:\n yy.setBarData($$[$0 - 1], $$[$0]);\n break;\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n this.$ = $$[$0 - 1];\n break;\n case 20:\n this.$ = [Number($$[$0 - 2]), ...$$[$0]];\n break;\n case 21:\n this.$ = [Number($$[$0])];\n break;\n case 22:\n yy.setXAxisTitle($$[$0]);\n break;\n case 23:\n yy.setXAxisTitle($$[$0 - 1]);\n break;\n case 24:\n yy.setXAxisTitle({ type: \"text\", text: \"\" });\n break;\n case 25:\n yy.setXAxisBand($$[$0]);\n break;\n case 26:\n yy.setXAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));\n break;\n case 27:\n this.$ = $$[$0 - 1];\n break;\n case 28:\n this.$ = [$$[$0 - 2], ...$$[$0]];\n break;\n case 29:\n this.$ = [$$[$0]];\n break;\n case 30:\n yy.setYAxisTitle($$[$0]);\n break;\n case 31:\n yy.setYAxisTitle($$[$0 - 1]);\n break;\n case 32:\n yy.setYAxisTitle({ type: \"text\", text: \"\" });\n break;\n case 33:\n yy.setYAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));\n break;\n case 37:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 38:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 39:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 40:\n this.$ = $$[$0];\n break;\n case 41:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n }\n }, \"anonymous\"),\n table: [o($V0, $V1, { 3: 1, 4: 2, 7: 4, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [3] }, o($V0, $V1, { 4: 2, 7: 4, 3: 8, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), o($V0, $V1, { 4: 2, 7: 4, 6: 9, 3: 10, 5: $V2, 8: [1, 11], 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] }, o($V6, [2, 34]), o($V6, [2, 35]), o($V6, [2, 36]), { 1: [2, 1] }, o($V0, $V1, { 4: 2, 7: 4, 3: 21, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 3] }, o($V6, [2, 5]), o($V0, [2, 7], { 4: 22, 34: $V3, 35: $V4, 36: $V5 }), { 11: 23, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 39, 13: 38, 24: $Vj, 27: $Vk, 29: 40, 30: 41, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 45, 15: 44, 27: $Vl, 33: 46, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 49, 17: 48, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 52, 17: 51, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 20: [1, 53] }, { 22: [1, 54] }, o($Vn, [2, 18]), { 1: [2, 2] }, o($Vn, [2, 8]), o($Vn, [2, 9]), o($Vo, [2, 37], { 40: 55, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }), o($Vo, [2, 38]), o($Vo, [2, 39]), o($Vp, [2, 40]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), o($Vp, [2, 47]), o($Vp, [2, 48]), o($Vp, [2, 49]), o($Vp, [2, 50]), o($Vp, [2, 51]), o($Vn, [2, 10]), o($Vn, [2, 22], { 30: 41, 29: 56, 24: $Vj, 27: $Vk }), o($Vn, [2, 24]), o($Vn, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 11]), o($Vn, [2, 30], { 33: 60, 27: $Vl }), o($Vn, [2, 32]), { 31: [1, 61] }, o($Vn, [2, 12]), { 17: 62, 24: $Vm }, { 25: 63, 27: $Vq }, o($Vn, [2, 14]), { 17: 65, 24: $Vm }, o($Vn, [2, 16]), o($Vn, [2, 17]), o($Vp, [2, 41]), o($Vn, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, o($Vn, [2, 31]), { 27: [1, 69] }, o($Vn, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, o($Vn, [2, 15]), o($Vn, [2, 26]), o($Vn, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 33]), o($Vn, [2, 19]), { 25: 73, 27: $Vq }, { 26: [2, 28] }, { 26: [2, 20] }],\n defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] },\n parseError: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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 (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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 (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__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__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: { \"case-insensitive\": true },\n performAction: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n this.popState();\n return 34;\n // removed by dead control flow\n{}\n case 3:\n this.popState();\n return 34;\n // removed by dead control flow\n{}\n case 4:\n return 34;\n // removed by dead control flow\n{}\n case 5:\n break;\n case 6:\n return 10;\n // removed by dead control flow\n{}\n case 7:\n this.pushState(\"acc_title\");\n return 19;\n // removed by dead control flow\n{}\n case 8:\n this.popState();\n return \"acc_title_value\";\n // removed by dead control flow\n{}\n case 9:\n this.pushState(\"acc_descr\");\n return 21;\n // removed by dead control flow\n{}\n case 10:\n this.popState();\n return \"acc_descr_value\";\n // removed by dead control flow\n{}\n case 11:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n // removed by dead control flow\n{}\n case 14:\n return 5;\n // removed by dead control flow\n{}\n case 15:\n return 8;\n // removed by dead control flow\n{}\n case 16:\n this.pushState(\"axis_data\");\n return \"X_AXIS\";\n // removed by dead control flow\n{}\n case 17:\n this.pushState(\"axis_data\");\n return \"Y_AXIS\";\n // removed by dead control flow\n{}\n case 18:\n this.pushState(\"axis_band_data\");\n return 24;\n // removed by dead control flow\n{}\n case 19:\n return 31;\n // removed by dead control flow\n{}\n case 20:\n this.pushState(\"data\");\n return 16;\n // removed by dead control flow\n{}\n case 21:\n this.pushState(\"data\");\n return 18;\n // removed by dead control flow\n{}\n case 22:\n this.pushState(\"data_inner\");\n return 24;\n // removed by dead control flow\n{}\n case 23:\n return 27;\n // removed by dead control flow\n{}\n case 24:\n this.popState();\n return 26;\n // removed by dead control flow\n{}\n case 25:\n this.popState();\n break;\n case 26:\n this.pushState(\"string\");\n break;\n case 27:\n this.popState();\n break;\n case 28:\n return \"STR\";\n // removed by dead control flow\n{}\n case 29:\n return 24;\n // removed by dead control flow\n{}\n case 30:\n return 26;\n // removed by dead control flow\n{}\n case 31:\n return 43;\n // removed by dead control flow\n{}\n case 32:\n return \"COLON\";\n // removed by dead control flow\n{}\n case 33:\n return 44;\n // removed by dead control flow\n{}\n case 34:\n return 28;\n // removed by dead control flow\n{}\n case 35:\n return 45;\n // removed by dead control flow\n{}\n case 36:\n return 46;\n // removed by dead control flow\n{}\n case 37:\n return 48;\n // removed by dead control flow\n{}\n case 38:\n return 50;\n // removed by dead control flow\n{}\n case 39:\n return 47;\n // removed by dead control flow\n{}\n case 40:\n return 41;\n // removed by dead control flow\n{}\n case 41:\n return 49;\n // removed by dead control flow\n{}\n case 42:\n return 42;\n // removed by dead control flow\n{}\n case 43:\n break;\n case 44:\n return 35;\n // removed by dead control flow\n{}\n case 45:\n return 36;\n // removed by dead control flow\n{}\n }\n }, \"anonymous\"),\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:(\\r?\\n))/i, /^(?:(\\r?\\n))/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:title\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:\\{)/i, /^(?:[^\\}]*)/i, /^(?:xychart-beta\\b)/i, /^(?:(?:vertical|horizontal))/i, /^(?:x-axis\\b)/i, /^(?:y-axis\\b)/i, /^(?:\\[)/i, /^(?:-->)/i, /^(?:line\\b)/i, /^(?:bar\\b)/i, /^(?:\\[)/i, /^(?:[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+))/i, /^(?:\\])/i, /^(?:(?:`\\) \\{ this\\.pushState\\(md_string\\); \\}\\n<md_string>\\(\\?:\\(\\?!`\"\\)\\.\\)\\+ \\{ return MD_STR; \\}\\n<md_string>\\(\\?:`))/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:\\[)/i, /^(?:\\])/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:\\*)/i, /^(?:#)/i, /^(?:[\\_])/i, /^(?:\\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\\s+)/i, /^(?:;)/i, /^(?:$)/i],\n conditions: { \"data_inner\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"data\": { \"rules\": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"axis_band_data\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"axis_data\": { \"rules\": [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"title\": { \"rules\": [], \"inclusive\": false }, \"md_string\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [27, 28], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nvar xychart_default = parser;\n\n// src/diagrams/xychart/chartBuilder/interfaces.ts\nfunction isBarPlot(data) {\n return data.type === \"bar\";\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(isBarPlot, \"isBarPlot\");\nfunction isBandAxisData(data) {\n return data.type === \"band\";\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(isBandAxisData, \"isBandAxisData\");\nfunction isLinearAxisData(data) {\n return data.type === \"linear\";\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(isLinearAxisData, \"isLinearAxisData\");\n\n// src/diagrams/xychart/chartBuilder/textDimensionCalculator.ts\nvar TextDimensionCalculatorWithFont = class {\n constructor(parentGroup) {\n this.parentGroup = parentGroup;\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"TextDimensionCalculatorWithFont\");\n }\n getMaxDimension(texts, fontSize) {\n if (!this.parentGroup) {\n return {\n width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize,\n height: fontSize\n };\n }\n const dimension = {\n width: 0,\n height: 0\n };\n const elem = this.parentGroup.append(\"g\").attr(\"visibility\", \"hidden\").attr(\"font-size\", fontSize);\n for (const t of texts) {\n const bbox = (0,_chunk_QESNASVV_mjs__WEBPACK_IMPORTED_MODULE_0__.computeDimensionOfText)(elem, 1, t);\n const width = bbox ? bbox.width : t.length * fontSize;\n const height = bbox ? bbox.height : fontSize;\n dimension.width = Math.max(dimension.width, width);\n dimension.height = Math.max(dimension.height, height);\n }\n elem.remove();\n return dimension;\n }\n};\n\n// src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts\n\n\n// src/diagrams/xychart/chartBuilder/components/axis/baseAxis.ts\nvar BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7;\nvar MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2;\nvar BaseAxis = class {\n constructor(axisConfig, title, textDimensionCalculator, axisThemeConfig) {\n this.axisConfig = axisConfig;\n this.title = title;\n this.textDimensionCalculator = textDimensionCalculator;\n this.axisThemeConfig = axisThemeConfig;\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = \"left\";\n this.showTitle = false;\n this.showLabel = false;\n this.showTick = false;\n this.showAxisLine = false;\n this.outerPadding = 0;\n this.titleTextHeight = 0;\n this.labelTextHeight = 0;\n this.range = [0, 10];\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = \"left\";\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"BaseAxis\");\n }\n setRange(range) {\n this.range = range;\n if (this.axisPosition === \"left\" || this.axisPosition === \"right\") {\n this.boundingRect.height = range[1] - range[0];\n } else {\n this.boundingRect.width = range[1] - range[0];\n }\n this.recalculateScale();\n }\n getRange() {\n return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];\n }\n setAxisPosition(axisPosition) {\n this.axisPosition = axisPosition;\n this.setRange(this.range);\n }\n getTickDistance() {\n const range = this.getRange();\n return Math.abs(range[0] - range[1]) / this.getTickValues().length;\n }\n getAxisOuterPadding() {\n return this.outerPadding;\n }\n getLabelDimension() {\n return this.textDimensionCalculator.getMaxDimension(\n this.getTickValues().map((tick) => tick.toString()),\n this.axisConfig.labelFontSize\n );\n }\n recalculateOuterPaddingToDrawBar() {\n if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) {\n this.outerPadding = Math.floor(BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() / 2);\n }\n this.recalculateScale();\n }\n calculateSpaceIfDrawnHorizontally(availableSpace) {\n let availableHeight = availableSpace.height;\n if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) {\n availableHeight -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width;\n this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding);\n const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2;\n this.labelTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableHeight -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height - availableHeight;\n }\n calculateSpaceIfDrawnVertical(availableSpace) {\n let availableWidth = availableSpace.width;\n if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) {\n availableWidth -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height;\n this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding);\n const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableWidth -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width - availableWidth;\n this.boundingRect.height = availableSpace.height;\n }\n calculateSpace(availableSpace) {\n if (this.axisPosition === \"left\" || this.axisPosition === \"right\") {\n this.calculateSpaceIfDrawnVertical(availableSpace);\n } else {\n this.calculateSpaceIfDrawnHorizontally(availableSpace);\n }\n this.recalculateScale();\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n getDrawableElementsForLeftAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const x = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"left-axis\", \"axisl-line\"],\n data: [\n {\n path: `M ${x},${this.boundingRect.y} L ${x},${this.boundingRect.y + this.boundingRect.height} `,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"left-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n y: this.getScaleValue(tick),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"middle\",\n horizontalPos: \"right\"\n }))\n });\n }\n if (this.showTick) {\n const x = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"left-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${x},${this.getScaleValue(tick)} L ${x - this.axisConfig.tickLength},${this.getScaleValue(tick)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"left-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.axisConfig.titlePadding,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 270,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElementsForBottomAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"bottom-axis\", \"axis-line\"],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"bottom-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }))\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"bottom-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y} L ${this.getScaleValue(tick)},${y + this.axisConfig.tickLength}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"bottom-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.range[0] + (this.range[1] - this.range[0]) / 2,\n y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElementsForTopAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"top-axis\", \"axis-line\"],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"top-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding,\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }))\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"top-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(tick)},${y + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"top-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.axisConfig.titlePadding,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElements() {\n if (this.axisPosition === \"left\") {\n return this.getDrawableElementsForLeftAxis();\n }\n if (this.axisPosition === \"right\") {\n throw Error(\"Drawing of right axis is not implemented\");\n }\n if (this.axisPosition === \"bottom\") {\n return this.getDrawableElementsForBottomAxis();\n }\n if (this.axisPosition === \"top\") {\n return this.getDrawableElementsForTopAxis();\n }\n return [];\n }\n};\n\n// src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts\nvar BandAxis = class extends BaseAxis {\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"BandAxis\");\n }\n constructor(axisConfig, axisThemeConfig, categories, title, textDimensionCalculator) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.categories = categories;\n this.scale = (0,d3__WEBPACK_IMPORTED_MODULE_4__.scaleBand)().domain(this.categories).range(this.getRange());\n }\n setRange(range) {\n super.setRange(range);\n }\n recalculateScale() {\n this.scale = (0,d3__WEBPACK_IMPORTED_MODULE_4__.scaleBand)().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.log.trace(\"BandAxis axis final categories, range: \", this.categories, this.getRange());\n }\n getTickValues() {\n return this.categories;\n }\n getScaleValue(value) {\n return this.scale(value) ?? this.getRange()[0];\n }\n};\n\n// src/diagrams/xychart/chartBuilder/components/axis/linearAxis.ts\n\nvar LinearAxis = class extends BaseAxis {\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"LinearAxis\");\n }\n constructor(axisConfig, axisThemeConfig, domain, title, textDimensionCalculator) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.domain = domain;\n this.scale = (0,d3__WEBPACK_IMPORTED_MODULE_4__.scaleLinear)().domain(this.domain).range(this.getRange());\n }\n getTickValues() {\n return this.scale.ticks();\n }\n recalculateScale() {\n const domain = [...this.domain];\n if (this.axisPosition === \"left\") {\n domain.reverse();\n }\n this.scale = (0,d3__WEBPACK_IMPORTED_MODULE_4__.scaleLinear)().domain(domain).range(this.getRange());\n }\n getScaleValue(value) {\n return this.scale(value);\n }\n};\n\n// src/diagrams/xychart/chartBuilder/components/axis/index.ts\nfunction getAxis(data, axisConfig, axisThemeConfig, tmpSVGGroup2) {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);\n if (isBandAxisData(data)) {\n return new BandAxis(\n axisConfig,\n axisThemeConfig,\n data.categories,\n data.title,\n textDimensionCalculator\n );\n }\n return new LinearAxis(\n axisConfig,\n axisThemeConfig,\n [data.min, data.max],\n data.title,\n textDimensionCalculator\n );\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getAxis, \"getAxis\");\n\n// src/diagrams/xychart/chartBuilder/components/chartTitle.ts\nvar ChartTitle = class {\n constructor(textDimensionCalculator, chartConfig, chartData, chartThemeConfig) {\n this.textDimensionCalculator = textDimensionCalculator;\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.chartThemeConfig = chartThemeConfig;\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.showChartTitle = false;\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"ChartTitle\");\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace) {\n const titleDimension = this.textDimensionCalculator.getMaxDimension(\n [this.chartData.title],\n this.chartConfig.titleFontSize\n );\n const widthRequired = Math.max(titleDimension.width, availableSpace.width);\n const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding;\n if (titleDimension.width <= widthRequired && titleDimension.height <= heightRequired && this.chartConfig.showTitle && this.chartData.title) {\n this.boundingRect.width = widthRequired;\n this.boundingRect.height = heightRequired;\n this.showChartTitle = true;\n }\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n getDrawableElements() {\n const drawableElem = [];\n if (this.showChartTitle) {\n drawableElem.push({\n groupTexts: [\"chart-title\"],\n type: \"text\",\n data: [\n {\n fontSize: this.chartConfig.titleFontSize,\n text: this.chartData.title,\n verticalPos: \"middle\",\n horizontalPos: \"center\",\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.chartThemeConfig.titleColor,\n rotation: 0\n }\n ]\n });\n }\n return drawableElem;\n }\n};\nfunction getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);\n return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getChartTitleComponent, \"getChartTitleComponent\");\n\n// src/diagrams/xychart/chartBuilder/components/plot/linePlot.ts\n\nvar LinePlot = class {\n constructor(plotData, xAxis, yAxis, orientation, plotIndex2) {\n this.plotData = plotData;\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n this.orientation = orientation;\n this.plotIndex = plotIndex2;\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"LinePlot\");\n }\n getDrawableElement() {\n const finalData = this.plotData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1])\n ]);\n let path;\n if (this.orientation === \"horizontal\") {\n path = (0,d3__WEBPACK_IMPORTED_MODULE_4__.line)().y((d) => d[0]).x((d) => d[1])(finalData);\n } else {\n path = (0,d3__WEBPACK_IMPORTED_MODULE_4__.line)().x((d) => d[0]).y((d) => d[1])(finalData);\n }\n if (!path) {\n return [];\n }\n return [\n {\n groupTexts: [\"plot\", `line-plot-${this.plotIndex}`],\n type: \"path\",\n data: [\n {\n path,\n strokeFill: this.plotData.strokeFill,\n strokeWidth: this.plotData.strokeWidth\n }\n ]\n }\n ];\n }\n};\n\n// src/diagrams/xychart/chartBuilder/components/plot/barPlot.ts\nvar BarPlot = class {\n constructor(barData, boundingRect, xAxis, yAxis, orientation, plotIndex2) {\n this.barData = barData;\n this.boundingRect = boundingRect;\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n this.orientation = orientation;\n this.plotIndex = plotIndex2;\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"BarPlot\");\n }\n getDrawableElement() {\n const finalData = this.barData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1])\n ]);\n const barPaddingPercent = 0.05;\n const barWidth = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - barPaddingPercent);\n const barWidthHalf = barWidth / 2;\n if (this.orientation === \"horizontal\") {\n return [\n {\n groupTexts: [\"plot\", `bar-plot-${this.plotIndex}`],\n type: \"rect\",\n data: finalData.map((data) => ({\n x: this.boundingRect.x,\n y: data[0] - barWidthHalf,\n height: barWidth,\n width: data[1] - this.boundingRect.x,\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill\n }))\n }\n ];\n }\n return [\n {\n groupTexts: [\"plot\", `bar-plot-${this.plotIndex}`],\n type: \"rect\",\n data: finalData.map((data) => ({\n x: data[0] - barWidthHalf,\n y: data[1],\n width: barWidth,\n height: this.boundingRect.y + this.boundingRect.height - data[1],\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill\n }))\n }\n ];\n }\n};\n\n// src/diagrams/xychart/chartBuilder/components/plot/index.ts\nvar BasePlot = class {\n constructor(chartConfig, chartData, chartThemeConfig) {\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.chartThemeConfig = chartThemeConfig;\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"BasePlot\");\n }\n setAxes(xAxis, yAxis) {\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace) {\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height;\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n getDrawableElements() {\n if (!(this.xAxis && this.yAxis)) {\n throw Error(\"Axes must be passed to render Plots\");\n }\n const drawableElem = [];\n for (const [i, plot] of this.chartData.plots.entries()) {\n switch (plot.type) {\n case \"line\":\n {\n const linePlot = new LinePlot(\n plot,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...linePlot.getDrawableElement());\n }\n break;\n case \"bar\":\n {\n const barPlot = new BarPlot(\n plot,\n this.boundingRect,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...barPlot.getDrawableElement());\n }\n break;\n }\n }\n return drawableElem;\n }\n};\nfunction getPlotComponent(chartConfig, chartData, chartThemeConfig) {\n return new BasePlot(chartConfig, chartData, chartThemeConfig);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getPlotComponent, \"getPlotComponent\");\n\n// src/diagrams/xychart/chartBuilder/orchestrator.ts\nvar Orchestrator = class {\n constructor(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.componentStore = {\n title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2),\n plot: getPlotComponent(chartConfig, chartData, chartThemeConfig),\n xAxis: getAxis(\n chartData.xAxis,\n chartConfig.xAxis,\n {\n titleColor: chartThemeConfig.xAxisTitleColor,\n labelColor: chartThemeConfig.xAxisLabelColor,\n tickColor: chartThemeConfig.xAxisTickColor,\n axisLineColor: chartThemeConfig.xAxisLineColor\n },\n tmpSVGGroup2\n ),\n yAxis: getAxis(\n chartData.yAxis,\n chartConfig.yAxis,\n {\n titleColor: chartThemeConfig.yAxisTitleColor,\n labelColor: chartThemeConfig.yAxisLabelColor,\n tickColor: chartThemeConfig.yAxisTickColor,\n axisLineColor: chartThemeConfig.yAxisLineColor\n },\n tmpSVGGroup2\n )\n };\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"Orchestrator\");\n }\n calculateVerticalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);\n let chartHeight = Math.floor(\n availableHeight * this.chartConfig.plotReservedSpacePercent / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight\n });\n plotY = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition(\"bottom\");\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableHeight -= spaceUsed.height;\n this.componentStore.yAxis.setAxisPosition(\"left\");\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n plotX = spaceUsed.width;\n availableWidth -= spaceUsed.width;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight });\n this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n calculateHorizontalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let titleYEnd = 0;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);\n let chartHeight = Math.floor(\n availableHeight * this.chartConfig.plotReservedSpacePercent / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight\n });\n titleYEnd = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition(\"left\");\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableWidth -= spaceUsed.width;\n plotX = spaceUsed.width;\n this.componentStore.yAxis.setAxisPosition(\"top\");\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableHeight -= spaceUsed.height;\n plotY = titleYEnd + spaceUsed.height;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd });\n this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n calculateSpace() {\n if (this.chartConfig.chartOrientation === \"horizontal\") {\n this.calculateHorizontalSpace();\n } else {\n this.calculateVerticalSpace();\n }\n }\n getDrawableElement() {\n this.calculateSpace();\n const drawableElem = [];\n this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);\n for (const component of Object.values(this.componentStore)) {\n drawableElem.push(...component.getDrawableElements());\n }\n return drawableElem;\n }\n};\n\n// src/diagrams/xychart/chartBuilder/index.ts\nvar XYChartBuilder = class {\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(this, \"XYChartBuilder\");\n }\n static build(config, chartData, chartThemeConfig, tmpSVGGroup2) {\n const orchestrator = new Orchestrator(config, chartData, chartThemeConfig, tmpSVGGroup2);\n return orchestrator.getDrawableElement();\n }\n};\n\n// src/diagrams/xychart/xychartDb.ts\nvar plotIndex = 0;\nvar tmpSVGGroup;\nvar xyChartConfig = getChartDefaultConfig();\nvar xyChartThemeConfig = getChartDefaultThemeConfig();\nvar xyChartData = getChartDefaultData();\nvar plotColorPalette = xyChartThemeConfig.plotColorPalette.split(\",\").map((color) => color.trim());\nvar hasSetXAxis = false;\nvar hasSetYAxis = false;\nfunction getChartDefaultThemeConfig() {\n const defaultThemeVariables = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getThemeVariables)();\n const config = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)();\n return (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)(defaultThemeVariables.xyChart, config.themeVariables.xyChart);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getChartDefaultThemeConfig, \"getChartDefaultThemeConfig\");\nfunction getChartDefaultConfig() {\n const config = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)();\n return (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)(\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.defaultConfig_default.xyChart,\n config.xyChart\n );\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getChartDefaultConfig, \"getChartDefaultConfig\");\nfunction getChartDefaultData() {\n return {\n yAxis: {\n type: \"linear\",\n title: \"\",\n min: Infinity,\n max: -Infinity\n },\n xAxis: {\n type: \"band\",\n title: \"\",\n categories: []\n },\n title: \"\",\n plots: []\n };\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getChartDefaultData, \"getChartDefaultData\");\nfunction textSanitizer(text) {\n const config = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)();\n return (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.sanitizeText)(text.trim(), config);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(textSanitizer, \"textSanitizer\");\nfunction setTmpSVGG(SVGG) {\n tmpSVGGroup = SVGG;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setTmpSVGG, \"setTmpSVGG\");\nfunction setOrientation(orientation) {\n if (orientation === \"horizontal\") {\n xyChartConfig.chartOrientation = \"horizontal\";\n } else {\n xyChartConfig.chartOrientation = \"vertical\";\n }\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setOrientation, \"setOrientation\");\nfunction setXAxisTitle(title) {\n xyChartData.xAxis.title = textSanitizer(title.text);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setXAxisTitle, \"setXAxisTitle\");\nfunction setXAxisRangeData(min, max) {\n xyChartData.xAxis = { type: \"linear\", title: xyChartData.xAxis.title, min, max };\n hasSetXAxis = true;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setXAxisRangeData, \"setXAxisRangeData\");\nfunction setXAxisBand(categories) {\n xyChartData.xAxis = {\n type: \"band\",\n title: xyChartData.xAxis.title,\n categories: categories.map((c) => textSanitizer(c.text))\n };\n hasSetXAxis = true;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setXAxisBand, \"setXAxisBand\");\nfunction setYAxisTitle(title) {\n xyChartData.yAxis.title = textSanitizer(title.text);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setYAxisTitle, \"setYAxisTitle\");\nfunction setYAxisRangeData(min, max) {\n xyChartData.yAxis = { type: \"linear\", title: xyChartData.yAxis.title, min, max };\n hasSetYAxis = true;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setYAxisRangeData, \"setYAxisRangeData\");\nfunction setYAxisRangeFromPlotData(data) {\n const minValue = Math.min(...data);\n const maxValue = Math.max(...data);\n const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity;\n xyChartData.yAxis = {\n type: \"linear\",\n title: xyChartData.yAxis.title,\n min: Math.min(prevMinValue, minValue),\n max: Math.max(prevMaxValue, maxValue)\n };\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setYAxisRangeFromPlotData, \"setYAxisRangeFromPlotData\");\nfunction transformDataWithoutCategory(data) {\n let retData = [];\n if (data.length === 0) {\n return retData;\n }\n if (!hasSetXAxis) {\n const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity;\n setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data.length));\n }\n if (!hasSetYAxis) {\n setYAxisRangeFromPlotData(data);\n }\n if (isBandAxisData(xyChartData.xAxis)) {\n retData = xyChartData.xAxis.categories.map((c, i) => [c, data[i]]);\n }\n if (isLinearAxisData(xyChartData.xAxis)) {\n const min = xyChartData.xAxis.min;\n const max = xyChartData.xAxis.max;\n const step = (max - min) / (data.length - 1);\n const categories = [];\n for (let i = min; i <= max; i += step) {\n categories.push(`${i}`);\n }\n retData = categories.map((c, i) => [c, data[i]]);\n }\n return retData;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(transformDataWithoutCategory, \"transformDataWithoutCategory\");\nfunction getPlotColorFromPalette(plotIndex2) {\n return plotColorPalette[plotIndex2 === 0 ? 0 : plotIndex2 % plotColorPalette.length];\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getPlotColorFromPalette, \"getPlotColorFromPalette\");\nfunction setLineData(title, data) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: \"line\",\n strokeFill: getPlotColorFromPalette(plotIndex),\n strokeWidth: 2,\n data: plotData\n });\n plotIndex++;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setLineData, \"setLineData\");\nfunction setBarData(title, data) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: \"bar\",\n fill: getPlotColorFromPalette(plotIndex),\n data: plotData\n });\n plotIndex++;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(setBarData, \"setBarData\");\nfunction getDrawableElem() {\n if (xyChartData.plots.length === 0) {\n throw Error(\"No Plot to render, please provide a plot with some data\");\n }\n xyChartData.title = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getDiagramTitle)();\n return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getDrawableElem, \"getDrawableElem\");\nfunction getChartThemeConfig() {\n return xyChartThemeConfig;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getChartThemeConfig, \"getChartThemeConfig\");\nfunction getChartConfig() {\n return xyChartConfig;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getChartConfig, \"getChartConfig\");\nfunction getXYChartData() {\n return xyChartData;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getXYChartData, \"getXYChartData\");\nvar clear2 = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(function() {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.clear)();\n plotIndex = 0;\n xyChartConfig = getChartDefaultConfig();\n xyChartData = getChartDefaultData();\n xyChartThemeConfig = getChartDefaultThemeConfig();\n plotColorPalette = xyChartThemeConfig.plotColorPalette.split(\",\").map((color) => color.trim());\n hasSetXAxis = false;\n hasSetYAxis = false;\n}, \"clear\");\nvar xychartDb_default = {\n getDrawableElem,\n clear: clear2,\n setAccTitle: _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.setAccTitle,\n getAccTitle: _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getAccTitle,\n setDiagramTitle: _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.setDiagramTitle,\n getDiagramTitle: _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getDiagramTitle,\n getAccDescription: _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getAccDescription,\n setAccDescription: _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.setAccDescription,\n setOrientation,\n setXAxisTitle,\n setXAxisRangeData,\n setXAxisBand,\n setYAxisTitle,\n setYAxisRangeData,\n setLineData,\n setBarData,\n setTmpSVGG,\n getChartThemeConfig,\n getChartConfig,\n getXYChartData\n};\n\n// src/diagrams/xychart/xychartRenderer.ts\nvar draw = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((txt, id, _version, diagObj) => {\n const db = diagObj.db;\n const themeConfig = db.getChartThemeConfig();\n const chartConfig = db.getChartConfig();\n const labelData = db.getXYChartData().plots[0].data.map((data) => data[1]);\n function getDominantBaseLine(horizontalPos) {\n return horizontalPos === \"top\" ? \"text-before-edge\" : \"middle\";\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getDominantBaseLine, \"getDominantBaseLine\");\n function getTextAnchor(verticalPos) {\n return verticalPos === \"left\" ? \"start\" : verticalPos === \"right\" ? \"end\" : \"middle\";\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getTextAnchor, \"getTextAnchor\");\n function getTextTransformation(data) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getTextTransformation, \"getTextTransformation\");\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.log.debug(\"Rendering xychart chart\\n\" + txt);\n const svg = (0,_chunk_P3VETL53_mjs__WEBPACK_IMPORTED_MODULE_2__.selectSvgElement)(id);\n const group = svg.append(\"g\").attr(\"class\", \"main\");\n const background = group.append(\"rect\").attr(\"width\", chartConfig.width).attr(\"height\", chartConfig.height).attr(\"class\", \"background\");\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.configureSvgSize)(svg, chartConfig.height, chartConfig.width, true);\n svg.attr(\"viewBox\", `0 0 ${chartConfig.width} ${chartConfig.height}`);\n background.attr(\"fill\", themeConfig.backgroundColor);\n db.setTmpSVGG(svg.append(\"g\").attr(\"class\", \"mermaid-tmp-group\"));\n const shapes = db.getDrawableElem();\n const groups = {};\n function getGroup(gList) {\n let elem = group;\n let prefix = \"\";\n for (const [i] of gList.entries()) {\n let parent = group;\n if (i > 0 && groups[prefix]) {\n parent = groups[prefix];\n }\n prefix += gList[i];\n elem = groups[prefix];\n if (!elem) {\n elem = groups[prefix] = parent.append(\"g\").attr(\"class\", gList[i]);\n }\n }\n return elem;\n }\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(getGroup, \"getGroup\");\n for (const shape of shapes) {\n if (shape.data.length === 0) {\n continue;\n }\n const shapeGroup = getGroup(shape.groupTexts);\n switch (shape.type) {\n case \"rect\":\n shapeGroup.selectAll(\"rect\").data(shape.data).enter().append(\"rect\").attr(\"x\", (data) => data.x).attr(\"y\", (data) => data.y).attr(\"width\", (data) => data.width).attr(\"height\", (data) => data.height).attr(\"fill\", (data) => data.fill).attr(\"stroke\", (data) => data.strokeFill).attr(\"stroke-width\", (data) => data.strokeWidth);\n if (chartConfig.showDataLabel) {\n if (chartConfig.chartOrientation === \"horizontal\") {\n let fitsHorizontally2 = function(item, fontSize) {\n const { data, label } = item;\n const textWidth = fontSize * label.length * charWidthFactor;\n return textWidth <= data.width - 10;\n };\n var fitsHorizontally = fitsHorizontally2;\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(fitsHorizontally2, \"fitsHorizontally\");\n const charWidthFactor = 0.7;\n const validItems = shape.data.map((d, i) => ({ data: d, label: labelData[i].toString() })).filter((item) => item.data.width > 0 && item.data.height > 0);\n const candidateFontSizes = validItems.map((item) => {\n const { data } = item;\n let fontSize = data.height * 0.7;\n while (!fitsHorizontally2(item, fontSize) && fontSize > 0) {\n fontSize -= 1;\n }\n return fontSize;\n });\n const uniformFontSize = Math.floor(Math.min(...candidateFontSizes));\n shapeGroup.selectAll(\"text\").data(validItems).enter().append(\"text\").attr(\"x\", (item) => item.data.x + item.data.width - 10).attr(\"y\", (item) => item.data.y + item.data.height / 2).attr(\"text-anchor\", \"end\").attr(\"dominant-baseline\", \"middle\").attr(\"fill\", \"black\").attr(\"font-size\", `${uniformFontSize}px`).text((item) => item.label);\n } else {\n let fitsInBar2 = function(item, fontSize, yOffset2) {\n const { data, label } = item;\n const charWidthFactor = 0.7;\n const textWidth = fontSize * label.length * charWidthFactor;\n const centerX = data.x + data.width / 2;\n const leftEdge = centerX - textWidth / 2;\n const rightEdge = centerX + textWidth / 2;\n const horizontalFits = leftEdge >= data.x && rightEdge <= data.x + data.width;\n const verticalFits = data.y + yOffset2 + fontSize <= data.y + data.height;\n return horizontalFits && verticalFits;\n };\n var fitsInBar = fitsInBar2;\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(fitsInBar2, \"fitsInBar\");\n const yOffset = 10;\n const validItems = shape.data.map((d, i) => ({ data: d, label: labelData[i].toString() })).filter((item) => item.data.width > 0 && item.data.height > 0);\n const candidateFontSizes = validItems.map((item) => {\n const { data, label } = item;\n let fontSize = data.width / (label.length * 0.7);\n while (!fitsInBar2(item, fontSize, yOffset) && fontSize > 0) {\n fontSize -= 1;\n }\n return fontSize;\n });\n const uniformFontSize = Math.floor(Math.min(...candidateFontSizes));\n shapeGroup.selectAll(\"text\").data(validItems).enter().append(\"text\").attr(\"x\", (item) => item.data.x + item.data.width / 2).attr(\"y\", (item) => item.data.y + yOffset).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"hanging\").attr(\"fill\", \"black\").attr(\"font-size\", `${uniformFontSize}px`).text((item) => item.label);\n }\n }\n break;\n case \"text\":\n shapeGroup.selectAll(\"text\").data(shape.data).enter().append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", (data) => data.fill).attr(\"font-size\", (data) => data.fontSize).attr(\"dominant-baseline\", (data) => getDominantBaseLine(data.verticalPos)).attr(\"text-anchor\", (data) => getTextAnchor(data.horizontalPos)).attr(\"transform\", (data) => getTextTransformation(data)).text((data) => data.text);\n break;\n case \"path\":\n shapeGroup.selectAll(\"path\").data(shape.data).enter().append(\"path\").attr(\"d\", (data) => data.path).attr(\"fill\", (data) => data.fill ? data.fill : \"none\").attr(\"stroke\", (data) => data.strokeFill).attr(\"stroke-width\", (data) => data.strokeWidth);\n break;\n }\n }\n}, \"draw\");\nvar xychartRenderer_default = {\n draw\n};\n\n// src/diagrams/xychart/xychartDiagram.ts\nvar diagram = {\n parser: xychart_default,\n db: xychartDb_default,\n renderer: xychartRenderer_default\n};\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-H2YORKM3.mjs?\n}");
19
+
20
+ /***/ })
21
+
22
+ }]);
@@ -41,6 +41,7 @@ const express_1 = require("express");
41
41
  const fs = __importStar(require("fs"));
42
42
  const markdown_it_1 = __importDefault(require("markdown-it"));
43
43
  const path_1 = __importDefault(require("path"));
44
+ const logger_1 = require("../../utils/logger");
44
45
  const md = new markdown_it_1.default();
45
46
  const slugify = (text) => {
46
47
  return text
@@ -85,7 +86,7 @@ const outlineRouter = (directory) => {
85
86
  res.json(outline);
86
87
  }
87
88
  catch (error) {
88
- console.error(`Error getting outline for ${filePath}:`, error);
89
+ logger_1.logger.error(`Error getting outline for ${filePath}:`, error);
89
90
  res.status(500).send('Error getting outline.');
90
91
  }
91
92
  });
@@ -53,10 +53,11 @@ const path_1 = __importDefault(require("path"));
53
53
  const ws_1 = require("ws");
54
54
  const filetree_1 = require("./routes/filetree");
55
55
  const outline_1 = require("./routes/outline");
56
+ const logger_1 = require("../utils/logger");
56
57
  const serve = (directory, port) => {
57
58
  const app = (0, exports.createApp)(directory);
58
59
  const server = app.listen(port, () => {
59
- console.log(`🚀 Server listening at http://localhost:${port}`);
60
+ logger_1.logger.log(`🚀 Server listening at http://localhost:${port}`);
60
61
  });
61
62
  setupWatcher(directory, server, port);
62
63
  return server;
@@ -84,11 +85,11 @@ const createApp = (directory, currentLocation = __dirname) => {
84
85
  // Security check: Ensure the resolved path is within the designated directory
85
86
  // This prevents path traversal attacks (e.g., accessing files outside 'directory')
86
87
  if (!filePath.startsWith(directory)) {
87
- console.error(`🚫 Attempted path traversal: ${filePath}`);
88
+ logger_1.logger.error(`🚫 Attempted path traversal: ${filePath}`);
88
89
  return res.status(403).send('Forbidden');
89
90
  }
90
91
  if (!fs.existsSync(filePath)) {
91
- console.error(`🚫 File not found: ${filePath}`);
92
+ logger_1.logger.error(`🚫 File not found: ${filePath}`);
92
93
  return res.status(404).send('File not found');
93
94
  }
94
95
  next();
@@ -114,11 +115,11 @@ const createApp = (directory, currentLocation = __dirname) => {
114
115
  return res.sendFile(req.path, { root: directory }, (err) => {
115
116
  if (err) {
116
117
  if ('code' in err && err.code === 'ENOENT') {
117
- console.error(`🚫 File not found: ${path_1.default.join(directory, req.path)}`);
118
+ logger_1.logger.error(`🚫 File not found: ${path_1.default.join(directory, req.path)}`);
118
119
  res.status(404).send('File not found');
119
120
  }
120
121
  else {
121
- console.error(`🚫 Error serving file ${path_1.default.join(directory, req.path)}:`, err);
122
+ logger_1.logger.error(`🚫 Error serving file ${path_1.default.join(directory, req.path)}:`, err);
122
123
  res.status(500).send('Internal Server Error');
123
124
  }
124
125
  }
@@ -131,18 +132,18 @@ exports.createApp = createApp;
131
132
  const setupWatcher = (directory, server, port) => {
132
133
  const wss = new ws_1.WebSocketServer({ server });
133
134
  wss.on('listening', () => {
134
- console.log(`🚀 WebSocket server listening at ws://localhost:${port}`);
135
+ logger_1.logger.log(`🚀 WebSocket server listening at ws://localhost:${port}`);
135
136
  });
136
137
  wss.on('connection', () => {
137
- console.log('🤝 Livereload Client connected');
138
+ logger_1.logger.log('🤝 Livereload Client connected');
138
139
  wss.on('close', () => {
139
- console.log('👋 Livereload Client closed');
140
+ logger_1.logger.log('👋 Livereload Client closed');
140
141
  });
141
142
  wss.on('wsClientError', (e) => {
142
- console.error('🚫 Error on WebSocket server:', e);
143
+ logger_1.logger.error('🚫 Error on WebSocket server:', e);
143
144
  });
144
145
  wss.on('error', (e) => {
145
- console.error('🚫 Error on WebSocket server:', e);
146
+ logger_1.logger.error('🚫 Error on WebSocket server:', e);
146
147
  });
147
148
  });
148
149
  const isMarkdownOrSimpleAsset = (filePath) => {
@@ -171,23 +172,23 @@ const setupWatcher = (directory, server, port) => {
171
172
  });
172
173
  }
173
174
  catch (e) {
174
- console.error('🚫 Error watching directory:', e);
175
- console.error('Livereload will be disabled');
175
+ logger_1.logger.error('🚫 Error watching directory:', e);
176
+ logger_1.logger.error('Livereload will be disabled');
176
177
  }
177
178
  watcher === null || watcher === void 0 ? void 0 : watcher.on('change', (filePath) => {
178
- console.log(`🔃 File changed: ${filePath}, reloading...`);
179
+ logger_1.logger.log(`🔃 File changed: ${filePath}, reloading...`);
179
180
  wss.clients.forEach((client) => {
180
181
  client.send(JSON.stringify({ type: 'reload-content' }));
181
182
  });
182
183
  });
183
184
  watcher === null || watcher === void 0 ? void 0 : watcher.on('add', (filePath) => {
184
- console.log(`🌲 File added: ${filePath}, reloading tree...`);
185
+ logger_1.logger.log(`🌲 File added: ${filePath}, reloading tree...`);
185
186
  wss.clients.forEach((client) => {
186
187
  client.send(JSON.stringify({ type: 'reload-tree' }));
187
188
  });
188
189
  });
189
190
  watcher === null || watcher === void 0 ? void 0 : watcher.on('unlink', (filePath) => {
190
- console.log(`🌲 File removed: ${filePath}, reloading tree...`);
191
+ logger_1.logger.log(`🌲 File removed: ${filePath}, reloading tree...`);
191
192
  wss.clients.forEach((client) => {
192
193
  client.send(JSON.stringify({ type: 'reload-tree' }));
193
194
  });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logger = void 0;
4
+ class Logger {
5
+ log(message, ...args) {
6
+ console.log(message, ...args);
7
+ }
8
+ error(message, ...args) {
9
+ console.error(message, ...args);
10
+ }
11
+ }
12
+ exports.logger = new Logger();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdts",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "A markdown preview server.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",