mdts 0.13.0 → 0.14.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 (54) hide show
  1. package/README.md +32 -11
  2. package/dist/frontend/bundle.js +88 -66
  3. package/dist/frontend/markdown.css +10 -4
  4. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_classDiagram-3BZAVTQC_mjs.bundle.js +22 -0
  5. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_classDiagram-v2-QTMF73CY_mjs.bundle.js +22 -0
  6. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_diagram-GUPCWM2R_mjs.bundle.js +32 -0
  7. package/dist/frontend/{node_modules_mermaid_dist_chunks_mermaid_core_infoDiagram-LHK5PUON_mjs.bundle.js → node_modules_mermaid_dist_chunks_mermaid_core_infoDiagram-DDUCL6P7_mjs.bundle.js} +4 -4
  8. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_pieDiagram-DBDJKBY4_mjs.bundle.js +32 -0
  9. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-v2-EYPG3UTE_mjs.bundle.js +22 -0
  10. package/dist/frontend/vendors-node_modules_mermaid-js_parser_dist_mermaid-parser_core_mjs.bundle.js +1 -1
  11. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_architectureDiagram-SUXI7LT5_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_architectureDiagram-KFL7JDKH_mjs.bundle.js} +7 -18
  12. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-ZYB65J3Q_mjs.bundle.js +52 -0
  13. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-AAMF2YG6_mjs.bundle.js +32 -0
  14. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_chunk-JBRWN2VN_mjs.bundle.js +52 -0
  15. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_chunk-LXBSTHXV_mjs.bundle.js +42 -0
  16. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_dagre-JOIXM2OF_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_dagre-2BBEFEWP_mjs.bundle.js} +4 -4
  17. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-VMROVX33_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-4IRLE6MV_mjs.bundle.js} +10 -10
  18. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-ZTM2IBQH_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-RP2FKANI_mjs.bundle.js} +7 -7
  19. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-3M52JZNH_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-HZWUO2LU_mjs.bundle.js} +10 -10
  20. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_flowDiagram-THRYKUMA_mjs.bundle.js +62 -0
  21. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_ganttDiagram-WV7ZQ7D5_mjs.bundle.js +52 -0
  22. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-GW3U2K7C_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-OJR772UL_mjs.bundle.js} +10 -10
  23. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-FFXJYRFH_mjs.bundle.js +42 -0
  24. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-KOZQBZVT_mjs.bundle.js +32 -0
  25. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_mindmap-definition-6CBA2TL7_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_mindmap-definition-LNHGMQRG_mjs.bundle.js} +4 -4
  26. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-YPSRARAO_mjs.bundle.js +22 -0
  27. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_requirementDiagram-QOLK2EJ7_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_requirementDiagram-EGVEC5DT_mjs.bundle.js} +10 -10
  28. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-4UZDY2LN_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-HRAUVNP4_mjs.bundle.js} +4 -4
  29. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-4MX5Z3NR_mjs.bundle.js +42 -0
  30. package/dist/frontend/{vendors-node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-MI5ZYTHO_mjs.bundle.js → vendors-node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-UUKSUZ4H_mjs.bundle.js} +4 -4
  31. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_timeline-definition-3HZDQTIS_mjs.bundle.js +22 -0
  32. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-FDP5SA34_mjs.bundle.js +22 -0
  33. package/dist/server/public/welcome-demo.md +76 -0
  34. package/dist/server/public/welcome.md +21 -11
  35. package/dist/server/routes/plantuml.js +50 -0
  36. package/dist/server/server.js +5 -1
  37. package/package.json +8 -2
  38. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_classDiagram-M3E45YP4_mjs.bundle.js +0 -22
  39. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_classDiagram-v2-YAWTLIQI_mjs.bundle.js +0 -22
  40. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_diagram-5UYTHUR4_mjs.bundle.js +0 -32
  41. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_pieDiagram-NIOCPIFQ_mjs.bundle.js +0 -32
  42. package/dist/frontend/node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-v2-5AN5P6BG_mjs.bundle.js +0 -22
  43. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-6J76NXCF_mjs.bundle.js +0 -52
  44. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-6F6E4RAY_mjs.bundle.js +0 -32
  45. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_chunk-OW32GOEJ_mjs.bundle.js +0 -42
  46. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_chunk-SZ463SBG_mjs.bundle.js +0 -52
  47. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_flowDiagram-KYDEHFYC_mjs.bundle.js +0 -62
  48. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_ganttDiagram-EK5VF46D_mjs.bundle.js +0 -52
  49. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-EWQZEKCU_mjs.bundle.js +0 -42
  50. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-ZSS6B67P_mjs.bundle.js +0 -32
  51. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-2OG54O6I_mjs.bundle.js +0 -22
  52. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-SKLFT4DO_mjs.bundle.js +0 -42
  53. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_timeline-definition-MYPXXCX6_mjs.bundle.js +0 -22
  54. package/dist/frontend/vendors-node_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-H2YORKM3_mjs.bundle.js +0 -22
@@ -7,7 +7,7 @@
7
7
  * or disable the default devtool with "devtool: false".
8
8
  * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
9
  */
10
- (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_dagre-JOIXM2OF_mjs"],{
10
+ (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_dagre-2BBEFEWP_mjs"],{
11
11
 
12
12
  /***/ "./node_modules/dagre-d3-es/src/graphlib/json.js":
13
13
  /*!*******************************************************!*\
@@ -29,13 +29,13 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
29
29
 
30
30
  /***/ }),
31
31
 
32
- /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/dagre-JOIXM2OF.mjs":
32
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/dagre-2BBEFEWP.mjs":
33
33
  /*!**************************************************************************!*\
34
- !*** ./node_modules/mermaid/dist/chunks/mermaid.core/dagre-JOIXM2OF.mjs ***!
34
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/dagre-2BBEFEWP.mjs ***!
35
35
  \**************************************************************************/
36
36
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
37
37
 
38
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var _chunk_M6DAPIYF_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-M6DAPIYF.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-M6DAPIYF.mjs\");\n/* harmony import */ var _chunk_MXNHSMXR_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-MXNHSMXR.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-MXNHSMXR.mjs\");\n/* harmony import */ var _chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-JW4RIYDF.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-JW4RIYDF.mjs\");\n/* harmony import */ var _chunk_AC5SNWB5_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-AC5SNWB5.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-AC5SNWB5.mjs\");\n/* harmony import */ var _chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./chunk-UWXLY5YG.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-UWXLY5YG.mjs\");\n/* harmony import */ var _chunk_QESNASVV_mjs__WEBPACK_IMPORTED_MODULE_5__ = __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_6__ = __webpack_require__(/*! ./chunk-55PJQP7W.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-55PJQP7W.mjs\");\n/* harmony import */ var _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./chunk-3XYRH5AP.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-3XYRH5AP.mjs\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"./node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"./node_modules/dagre-d3-es/src/graphlib/json.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"./node_modules/dagre-d3-es/src/graphlib/index.js\");\n\n\n\n\n\n\n\n\n\n// src/rendering-util/layout-algorithms/dagre/index.js\n\n\n\n\n// src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js\n\n\nvar clusterDb = /* @__PURE__ */ new Map();\nvar descendants = /* @__PURE__ */ new Map();\nvar parents = /* @__PURE__ */ new Map();\nvar clear4 = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(() => {\n descendants.clear();\n parents.clear();\n clusterDb.clear();\n}, \"clear\");\nvar isDescendant = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id, ancestorId) => {\n const ancestorDescendants = descendants.get(ancestorId) || [];\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"In isDescendant\", ancestorId, \" \", id, \" = \", ancestorDescendants.includes(id));\n return ancestorDescendants.includes(id);\n}, \"isDescendant\");\nvar edgeInCluster = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((edge, clusterId) => {\n const clusterDescendants = descendants.get(clusterId) || [];\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Descendants of \", clusterId, \" is \", clusterDescendants);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge is \", edge);\n if (edge.v === clusterId || edge.w === clusterId) {\n return false;\n }\n if (!clusterDescendants) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Tilt, \", clusterId, \",not in descendants\");\n return false;\n }\n return clusterDescendants.includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || clusterDescendants.includes(edge.w);\n}, \"edgeInCluster\");\nvar copy = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((clusterId, graph, newGraph, rootId) => {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Copying children of \",\n clusterId,\n \"root\",\n rootId,\n \"data\",\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n if (clusterId !== rootId && node !== clusterId) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Setting parent\", node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\n \"Not Setting parent for node=\",\n node,\n \"cluster!==rootId\",\n clusterId !== rootId,\n \"node!==clusterId\",\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Copying Edges\", edges);\n edges.forEach((edge) => {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge\", edge);\n const data2 = graph.edge(edge.v, edge.w, edge.name);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"Skipping copy of edge \",\n edge.v,\n \"-->\",\n edge.w,\n \" rootId: \",\n rootId,\n \" clusterId:\",\n clusterId\n );\n }\n } catch (e) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.error(e);\n }\n });\n }\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Removing node\", node);\n graph.removeNode(node);\n });\n}, \"copy\");\nvar extractDescendants = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents.set(child, id);\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n}, \"extractDescendants\");\nvar findCommonEdges = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, id1, id2) => {\n const edges1 = graph.edges().filter((edge) => edge.v === id1 || edge.w === id1);\n const edges2 = graph.edges().filter((edge) => edge.v === id2 || edge.w === id2);\n const edges1Prim = edges1.map((edge) => {\n return { v: edge.v === id1 ? id2 : edge.v, w: edge.w === id1 ? id1 : edge.w };\n });\n const edges2Prim = edges2.map((edge) => {\n return { v: edge.v, w: edge.w };\n });\n const result = edges1Prim.filter((edgeIn1) => {\n return edges2Prim.some((edge) => edgeIn1.v === edge.v && edgeIn1.w === edge.w);\n });\n return result;\n}, \"findCommonEdges\");\nvar findNonClusterChild = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id, graph, clusterId) => {\n const children = graph.children(id);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Searching children of id \", id, children);\n if (children.length < 1) {\n return id;\n }\n let reserve;\n for (const child of children) {\n const _id = findNonClusterChild(child, graph, clusterId);\n const commonEdges = findCommonEdges(graph, clusterId, _id);\n if (_id) {\n if (commonEdges.length > 0) {\n reserve = _id;\n } else {\n return _id;\n }\n }\n }\n return reserve;\n}, \"findNonClusterChild\");\nvar getAnchorId = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id) => {\n if (!clusterDb.has(id)) {\n return id;\n }\n if (!clusterDb.get(id).externalConnections) {\n return id;\n }\n if (clusterDb.has(id)) {\n return clusterDb.get(id).id;\n }\n return id;\n}, \"getAnchorId\");\nvar adjustClustersAndEdges = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, depth) => {\n if (!graph || depth > 10) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Opting out, no graph \");\n return;\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Opting in, graph \");\n }\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Cluster identified\",\n id,\n \" Replacement id in edges: \",\n findNonClusterChild(id, graph, id)\n );\n descendants.set(id, extractDescendants(id, graph));\n clusterDb.set(id, { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) });\n }\n });\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Cluster identified\", id, descendants);\n edges.forEach((edge) => {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Descendants of XXX \", id, \": \", descendants.get(id));\n clusterDb.get(id).externalConnections = true;\n }\n });\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Not a cluster \", id, descendants);\n }\n });\n for (let id of clusterDb.keys()) {\n const nonClusterChild = clusterDb.get(id).id;\n const parent = graph.parent(nonClusterChild);\n if (parent !== id && clusterDb.has(parent) && !clusterDb.get(parent).externalConnections) {\n clusterDb.get(id).id = parent;\n }\n }\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb.get(e.v),\n \" --- \",\n clusterDb.get(e.w)\n );\n if (clusterDb.get(e.v) || clusterDb.get(e.w)) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Fixing and trying - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n const parent = graph.parent(v);\n clusterDb.get(parent).externalConnections = true;\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n const parent = graph.parent(w);\n clusterDb.get(parent).externalConnections = true;\n edge.toCluster = e.w;\n }\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Adjusted Graph\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph));\n extractor(graph, 0);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(clusterDb);\n}, \"adjustClustersAndEdges\");\nvar extractor = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, depth) => {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"extractor - \", depth, dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.error(\"Bailing out\");\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n if (!hasChildren) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\n \"Extracting node\",\n node,\n clusterDb,\n clusterDb.has(node) && !clusterDb.get(node).externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children(\"D\"),\n \" Depth \",\n depth\n );\n if (!clusterDb.has(node)) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb.get(node).externalConnections && graph.children(node) && graph.children(node).length > 0) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Cluster without external connections, without a parent and with children\",\n node,\n depth\n );\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n if (clusterDb.get(node)?.clusterData?.dir) {\n dir = clusterDb.get(node).clusterData.dir;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Fixing dir\", clusterDb.get(node).clusterData.dir, dir);\n }\n const clusterGraph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_10__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Old graph before copy\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb.get(node).clusterData,\n label: clusterDb.get(node).label,\n graph: clusterGraph\n });\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"New graph after copy node: (\", node, \")\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(clusterGraph));\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Old graph after copy\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph));\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Cluster ** \",\n node,\n \" **not meeting the criteria !externalConnections:\",\n !clusterDb.get(node).externalConnections,\n \" no parent: \",\n !graph.parent(node),\n \" children \",\n graph.children(node) && graph.children(node).length > 0,\n graph.children(\"D\"),\n depth\n );\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(clusterDb);\n }\n }\n nodes = graph.nodes();\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\" Now next level\", node, data);\n if (data?.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n}, \"extractor\");\nvar sorter = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign([], nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n return result;\n}, \"sorter\");\nvar sortNodesByHierarchy = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph) => sorter(graph, graph.children()), \"sortNodesByHierarchy\");\n\n// src/rendering-util/layout-algorithms/dagre/index.js\nvar recursiveRender = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Graph in recursive render:XAX\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"No nodes found for\", graph);\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Recursive edges\", graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert(\"g\").attr(\"class\", \"clusters\");\n const edgePaths = elem.insert(\"g\").attr(\"class\", \"edgePaths\");\n const edgeLabels = elem.insert(\"g\").attr(\"class\", \"edgeLabels\");\n const nodes = elem.insert(\"g\").attr(\"class\", \"nodes\");\n await Promise.all(\n graph.nodes().map(async function(v) {\n const node = graph.node(v);\n if (parentCluster !== void 0) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\n \"Setting data for parent cluster XXX\\n Node.id = \",\n v,\n \"\\n data=\",\n data.height,\n \"\\nParent cluster\",\n parentCluster.height\n );\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node?.clusterNode) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Cluster identified XBX\", v, node.width, graph.node(v));\n const { ranksep, nodesep } = graph.graph();\n node.graph.setGraph({\n ...node.graph.graph(),\n ranksep: ranksep + 25,\n nodesep\n });\n const o = await recursiveRender(\n nodes,\n node.graph,\n diagramType,\n id,\n graph.node(v),\n siteConfig\n );\n const newEl = o.elem;\n (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.updateNodeBounds)(node, newEl);\n node.diff = o.diff || 0;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"New compound node after recursive render XAX\",\n v,\n \"width\",\n // node,\n node.width,\n \"height\",\n node.height\n // node.x,\n // node.y\n );\n (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.setNodeElem)(newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\n \"Cluster - the non recursive path XBX\",\n v,\n node.id,\n node,\n node.width,\n \"Graph:\",\n graph\n );\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(findNonClusterChild(node.id, graph));\n clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });\n } else {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Node - the non recursive path XAX\", v, nodes, graph.node(v), dir);\n await (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.insertNode)(nodes, graph.node(v), { config: siteConfig, dir });\n }\n }\n })\n );\n const processEdges = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(async () => {\n const edgePromises = graph.edges().map(async function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"Fix\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb.get(e.v),\n clusterDb.get(e.w)\n );\n await (0,_chunk_M6DAPIYF_mjs__WEBPACK_IMPORTED_MODULE_0__.insertEdgeLabel)(edgeLabels, edge);\n });\n await Promise.all(edgePromises);\n }, \"processEdges\");\n await processEdges();\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Graph before layout:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"############################################# XXX\");\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"### Layout ### XXX\");\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"############################################# XXX\");\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_8__.layout)(graph);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Graph after layout:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n let diff = 0;\n let { subGraphTitleTotalMargin } = (0,_chunk_AC5SNWB5_mjs__WEBPACK_IMPORTED_MODULE_3__.getSubGraphTitleMargins)(siteConfig);\n await Promise.all(\n sortNodesByHierarchy(graph).map(async function(v) {\n const node = graph.node(v);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"Position XBX => \" + v + \": (\" + node.x,\n \",\" + node.y,\n \") width: \",\n node.width,\n \" height: \",\n node.height\n );\n if (node?.clusterNode) {\n node.y += subGraphTitleTotalMargin;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"A tainted cluster node XBX1\",\n v,\n node.id,\n node.width,\n node.height,\n node.x,\n node.y,\n graph.parent(v)\n );\n clusterDb.get(node.id).node = node;\n (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.positionNode)(node);\n } else {\n if (graph.children(v).length > 0) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"A pure cluster node XBX1\",\n v,\n node.id,\n node.x,\n node.y,\n node.width,\n node.height,\n graph.parent(v)\n );\n node.height += subGraphTitleTotalMargin;\n graph.node(node.parentId);\n const halfPadding = node?.padding / 2 || 0;\n const labelHeight = node?.labelBBox?.height || 0;\n const offsetY = labelHeight - halfPadding || 0;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"OffsetY\", offsetY, \"labelHeight\", labelHeight, \"halfPadding\", halfPadding);\n await (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.insertCluster)(clusters, node);\n clusterDb.get(node.id).node = node;\n } else {\n const parent = graph.node(node.parentId);\n node.y += subGraphTitleTotalMargin / 2;\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"A regular node XBX1 - using the padding\",\n node.id,\n \"parent\",\n node.parentId,\n node.width,\n node.height,\n node.x,\n node.y,\n \"offsetY\",\n node.offsetY,\n \"parent\",\n parent,\n parent?.offsetY,\n node\n );\n (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.positionNode)(node);\n }\n }\n })\n );\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n edge.points.forEach((point) => point.y += subGraphTitleTotalMargin / 2);\n const startNode = graph.node(e.v);\n var endNode = graph.node(e.w);\n const paths = (0,_chunk_M6DAPIYF_mjs__WEBPACK_IMPORTED_MODULE_0__.insertEdge)(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id);\n (0,_chunk_M6DAPIYF_mjs__WEBPACK_IMPORTED_MODULE_0__.positionEdgeLabel)(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(v, n.type, n.diff);\n if (n.isGroup) {\n diff = n.diff;\n }\n });\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Returning from recursive render XAX\", elem, diff);\n return { elem, diff };\n}, \"recursiveRender\");\nvar render = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(async (data4Layout, svg) => {\n const graph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_10__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: data4Layout.direction,\n nodesep: data4Layout.config?.nodeSpacing || data4Layout.config?.flowchart?.nodeSpacing || data4Layout.nodeSpacing,\n ranksep: data4Layout.config?.rankSpacing || data4Layout.config?.flowchart?.rankSpacing || data4Layout.rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const element = svg.select(\"g\");\n (0,_chunk_M6DAPIYF_mjs__WEBPACK_IMPORTED_MODULE_0__.markers_default)(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);\n (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.clear2)();\n (0,_chunk_M6DAPIYF_mjs__WEBPACK_IMPORTED_MODULE_0__.clear)();\n (0,_chunk_JW4RIYDF_mjs__WEBPACK_IMPORTED_MODULE_2__.clear)();\n clear4();\n data4Layout.nodes.forEach((node) => {\n graph.setNode(node.id, { ...node });\n if (node.parentId) {\n graph.setParent(node.id, node.parentId);\n }\n });\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Edges:\", data4Layout.edges);\n data4Layout.edges.forEach((edge) => {\n if (edge.start === edge.end) {\n const nodeId = edge.start;\n const specialId1 = nodeId + \"---\" + nodeId + \"---1\";\n const specialId2 = nodeId + \"---\" + nodeId + \"---2\";\n const node = graph.node(nodeId);\n graph.setNode(specialId1, {\n domId: specialId1,\n id: specialId1,\n parentId: node.parentId,\n labelStyle: \"\",\n label: \"\",\n padding: 0,\n shape: \"labelRect\",\n // shape: 'rect',\n style: \"\",\n width: 10,\n height: 10\n });\n graph.setParent(specialId1, node.parentId);\n graph.setNode(specialId2, {\n domId: specialId2,\n id: specialId2,\n parentId: node.parentId,\n labelStyle: \"\",\n padding: 0,\n // shape: 'rect',\n shape: \"labelRect\",\n label: \"\",\n style: \"\",\n width: 10,\n height: 10\n });\n graph.setParent(specialId2, node.parentId);\n const edge1 = structuredClone(edge);\n const edgeMid = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge1.id = nodeId + \"-cyclic-special-1\";\n edgeMid.arrowTypeStart = \"none\";\n edgeMid.arrowTypeEnd = \"none\";\n edgeMid.id = nodeId + \"-cyclic-special-mid\";\n edge2.label = \"\";\n if (node.isGroup) {\n edge1.fromCluster = nodeId;\n edge2.toCluster = nodeId;\n }\n edge2.id = nodeId + \"-cyclic-special-2\";\n edge2.arrowTypeStart = \"none\";\n graph.setEdge(nodeId, specialId1, edge1, nodeId + \"-cyclic-special-0\");\n graph.setEdge(specialId1, specialId2, edgeMid, nodeId + \"-cyclic-special-1\");\n graph.setEdge(specialId2, nodeId, edge2, nodeId + \"-cyc<lic-special-2\");\n } else {\n graph.setEdge(edge.start, edge.end, { ...edge }, edge.id);\n }\n });\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Graph at first:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n adjustClustersAndEdges(graph);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Graph after XAX:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n const siteConfig = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_7__.getConfig2)();\n await recursiveRender(\n element,\n graph,\n data4Layout.type,\n data4Layout.diagramId,\n void 0,\n siteConfig\n );\n}, \"render\");\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/dagre-JOIXM2OF.mjs?\n}");
38
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var _chunk_NCRKNZAS_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-NCRKNZAS.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-NCRKNZAS.mjs\");\n/* harmony import */ var _chunk_WH6PBGIT_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-WH6PBGIT.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-WH6PBGIT.mjs\");\n/* harmony import */ var _chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-CV3G5MRU.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-CV3G5MRU.mjs\");\n/* harmony import */ var _chunk_JSVUIEYQ_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-JSVUIEYQ.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-JSVUIEYQ.mjs\");\n/* harmony import */ var _chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./chunk-7RNWAQOT.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-7RNWAQOT.mjs\");\n/* harmony import */ var _chunk_62K37W7T_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./chunk-62K37W7T.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-62K37W7T.mjs\");\n/* harmony import */ var _chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./chunk-U37J5Y7L.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-U37J5Y7L.mjs\");\n/* harmony import */ var _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./chunk-VIW5F6AA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-VIW5F6AA.mjs\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"./node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"./node_modules/dagre-d3-es/src/graphlib/json.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"./node_modules/dagre-d3-es/src/graphlib/index.js\");\n\n\n\n\n\n\n\n\n\n// src/rendering-util/layout-algorithms/dagre/index.js\n\n\n\n\n// src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js\n\n\nvar clusterDb = /* @__PURE__ */ new Map();\nvar descendants = /* @__PURE__ */ new Map();\nvar parents = /* @__PURE__ */ new Map();\nvar clear4 = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(() => {\n descendants.clear();\n parents.clear();\n clusterDb.clear();\n}, \"clear\");\nvar isDescendant = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id, ancestorId) => {\n const ancestorDescendants = descendants.get(ancestorId) || [];\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"In isDescendant\", ancestorId, \" \", id, \" = \", ancestorDescendants.includes(id));\n return ancestorDescendants.includes(id);\n}, \"isDescendant\");\nvar edgeInCluster = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((edge, clusterId) => {\n const clusterDescendants = descendants.get(clusterId) || [];\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Descendants of \", clusterId, \" is \", clusterDescendants);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge is \", edge);\n if (edge.v === clusterId || edge.w === clusterId) {\n return false;\n }\n if (!clusterDescendants) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Tilt, \", clusterId, \",not in descendants\");\n return false;\n }\n return clusterDescendants.includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || clusterDescendants.includes(edge.w);\n}, \"edgeInCluster\");\nvar copy = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((clusterId, graph, newGraph, rootId) => {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Copying children of \",\n clusterId,\n \"root\",\n rootId,\n \"data\",\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n if (clusterId !== rootId && node !== clusterId) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Setting parent\", node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\n \"Not Setting parent for node=\",\n node,\n \"cluster!==rootId\",\n clusterId !== rootId,\n \"node!==clusterId\",\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Copying Edges\", edges);\n edges.forEach((edge) => {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge\", edge);\n const data2 = graph.edge(edge.v, edge.w, edge.name);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"Skipping copy of edge \",\n edge.v,\n \"-->\",\n edge.w,\n \" rootId: \",\n rootId,\n \" clusterId:\",\n clusterId\n );\n }\n } catch (e) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.error(e);\n }\n });\n }\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Removing node\", node);\n graph.removeNode(node);\n });\n}, \"copy\");\nvar extractDescendants = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents.set(child, id);\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n}, \"extractDescendants\");\nvar findCommonEdges = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, id1, id2) => {\n const edges1 = graph.edges().filter((edge) => edge.v === id1 || edge.w === id1);\n const edges2 = graph.edges().filter((edge) => edge.v === id2 || edge.w === id2);\n const edges1Prim = edges1.map((edge) => {\n return { v: edge.v === id1 ? id2 : edge.v, w: edge.w === id1 ? id1 : edge.w };\n });\n const edges2Prim = edges2.map((edge) => {\n return { v: edge.v, w: edge.w };\n });\n const result = edges1Prim.filter((edgeIn1) => {\n return edges2Prim.some((edge) => edgeIn1.v === edge.v && edgeIn1.w === edge.w);\n });\n return result;\n}, \"findCommonEdges\");\nvar findNonClusterChild = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id, graph, clusterId) => {\n const children = graph.children(id);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Searching children of id \", id, children);\n if (children.length < 1) {\n return id;\n }\n let reserve;\n for (const child of children) {\n const _id = findNonClusterChild(child, graph, clusterId);\n const commonEdges = findCommonEdges(graph, clusterId, _id);\n if (_id) {\n if (commonEdges.length > 0) {\n reserve = _id;\n } else {\n return _id;\n }\n }\n }\n return reserve;\n}, \"findNonClusterChild\");\nvar getAnchorId = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((id) => {\n if (!clusterDb.has(id)) {\n return id;\n }\n if (!clusterDb.get(id).externalConnections) {\n return id;\n }\n if (clusterDb.has(id)) {\n return clusterDb.get(id).id;\n }\n return id;\n}, \"getAnchorId\");\nvar adjustClustersAndEdges = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, depth) => {\n if (!graph || depth > 10) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Opting out, no graph \");\n return;\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Opting in, graph \");\n }\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Cluster identified\",\n id,\n \" Replacement id in edges: \",\n findNonClusterChild(id, graph, id)\n );\n descendants.set(id, extractDescendants(id, graph));\n clusterDb.set(id, { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) });\n }\n });\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Cluster identified\", id, descendants);\n edges.forEach((edge) => {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Descendants of XXX \", id, \": \", descendants.get(id));\n clusterDb.get(id).externalConnections = true;\n }\n });\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Not a cluster \", id, descendants);\n }\n });\n for (let id of clusterDb.keys()) {\n const nonClusterChild = clusterDb.get(id).id;\n const parent = graph.parent(nonClusterChild);\n if (parent !== id && clusterDb.has(parent) && !clusterDb.get(parent).externalConnections) {\n clusterDb.get(id).id = parent;\n }\n }\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb.get(e.v),\n \" --- \",\n clusterDb.get(e.w)\n );\n if (clusterDb.get(e.v) || clusterDb.get(e.w)) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Fixing and trying - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n const parent = graph.parent(v);\n clusterDb.get(parent).externalConnections = true;\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n const parent = graph.parent(w);\n clusterDb.get(parent).externalConnections = true;\n edge.toCluster = e.w;\n }\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Adjusted Graph\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph));\n extractor(graph, 0);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(clusterDb);\n}, \"adjustClustersAndEdges\");\nvar extractor = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, depth) => {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"extractor - \", depth, dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.error(\"Bailing out\");\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n if (!hasChildren) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\n \"Extracting node\",\n node,\n clusterDb,\n clusterDb.has(node) && !clusterDb.get(node).externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children(\"D\"),\n \" Depth \",\n depth\n );\n if (!clusterDb.has(node)) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb.get(node).externalConnections && graph.children(node) && graph.children(node).length > 0) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Cluster without external connections, without a parent and with children\",\n node,\n depth\n );\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n if (clusterDb.get(node)?.clusterData?.dir) {\n dir = clusterDb.get(node).clusterData.dir;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Fixing dir\", clusterDb.get(node).clusterData.dir, dir);\n }\n const clusterGraph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_10__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Old graph before copy\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb.get(node).clusterData,\n label: clusterDb.get(node).label,\n graph: clusterGraph\n });\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"New graph after copy node: (\", node, \")\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(clusterGraph));\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Old graph after copy\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph));\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\n \"Cluster ** \",\n node,\n \" **not meeting the criteria !externalConnections:\",\n !clusterDb.get(node).externalConnections,\n \" no parent: \",\n !graph.parent(node),\n \" children \",\n graph.children(node) && graph.children(node).length > 0,\n graph.children(\"D\"),\n depth\n );\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(clusterDb);\n }\n }\n nodes = graph.nodes();\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\" Now next level\", node, data);\n if (data?.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n}, \"extractor\");\nvar sorter = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign([], nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n return result;\n}, \"sorter\");\nvar sortNodesByHierarchy = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)((graph) => sorter(graph, graph.children()), \"sortNodesByHierarchy\");\n\n// src/rendering-util/layout-algorithms/dagre/index.js\nvar recursiveRender = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Graph in recursive render:XAX\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"No nodes found for\", graph);\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Recursive edges\", graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert(\"g\").attr(\"class\", \"clusters\");\n const edgePaths = elem.insert(\"g\").attr(\"class\", \"edgePaths\");\n const edgeLabels = elem.insert(\"g\").attr(\"class\", \"edgeLabels\");\n const nodes = elem.insert(\"g\").attr(\"class\", \"nodes\");\n await Promise.all(\n graph.nodes().map(async function(v) {\n const node = graph.node(v);\n if (parentCluster !== void 0) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\n \"Setting data for parent cluster XXX\\n Node.id = \",\n v,\n \"\\n data=\",\n data.height,\n \"\\nParent cluster\",\n parentCluster.height\n );\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node?.clusterNode) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Cluster identified XBX\", v, node.width, graph.node(v));\n const { ranksep, nodesep } = graph.graph();\n node.graph.setGraph({\n ...node.graph.graph(),\n ranksep: ranksep + 25,\n nodesep\n });\n const o = await recursiveRender(\n nodes,\n node.graph,\n diagramType,\n id,\n graph.node(v),\n siteConfig\n );\n const newEl = o.elem;\n (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.updateNodeBounds)(node, newEl);\n node.diff = o.diff || 0;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"New compound node after recursive render XAX\",\n v,\n \"width\",\n // node,\n node.width,\n \"height\",\n node.height\n // node.x,\n // node.y\n );\n (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.setNodeElem)(newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\n \"Cluster - the non recursive path XBX\",\n v,\n node.id,\n node,\n node.width,\n \"Graph:\",\n graph\n );\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(findNonClusterChild(node.id, graph));\n clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });\n } else {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.trace(\"Node - the non recursive path XAX\", v, nodes, graph.node(v), dir);\n await (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.insertNode)(nodes, graph.node(v), { config: siteConfig, dir });\n }\n }\n })\n );\n const processEdges = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(async () => {\n const edgePromises = graph.edges().map(async function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"Fix\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb.get(e.v),\n clusterDb.get(e.w)\n );\n await (0,_chunk_NCRKNZAS_mjs__WEBPACK_IMPORTED_MODULE_0__.insertEdgeLabel)(edgeLabels, edge);\n });\n await Promise.all(edgePromises);\n }, \"processEdges\");\n await processEdges();\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Graph before layout:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"############################################# XXX\");\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"### Layout ### XXX\");\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"############################################# XXX\");\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_8__.layout)(graph);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Graph after layout:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n let diff = 0;\n let { subGraphTitleTotalMargin } = (0,_chunk_JSVUIEYQ_mjs__WEBPACK_IMPORTED_MODULE_3__.getSubGraphTitleMargins)(siteConfig);\n await Promise.all(\n sortNodesByHierarchy(graph).map(async function(v) {\n const node = graph.node(v);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"Position XBX => \" + v + \": (\" + node.x,\n \",\" + node.y,\n \") width: \",\n node.width,\n \" height: \",\n node.height\n );\n if (node?.clusterNode) {\n node.y += subGraphTitleTotalMargin;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"A tainted cluster node XBX1\",\n v,\n node.id,\n node.width,\n node.height,\n node.x,\n node.y,\n graph.parent(v)\n );\n clusterDb.get(node.id).node = node;\n (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.positionNode)(node);\n } else {\n if (graph.children(v).length > 0) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"A pure cluster node XBX1\",\n v,\n node.id,\n node.x,\n node.y,\n node.width,\n node.height,\n graph.parent(v)\n );\n node.height += subGraphTitleTotalMargin;\n graph.node(node.parentId);\n const halfPadding = node?.padding / 2 || 0;\n const labelHeight = node?.labelBBox?.height || 0;\n const offsetY = labelHeight - halfPadding || 0;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"OffsetY\", offsetY, \"labelHeight\", labelHeight, \"halfPadding\", halfPadding);\n await (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.insertCluster)(clusters, node);\n clusterDb.get(node.id).node = node;\n } else {\n const parent = graph.node(node.parentId);\n node.y += subGraphTitleTotalMargin / 2;\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\n \"A regular node XBX1 - using the padding\",\n node.id,\n \"parent\",\n node.parentId,\n node.width,\n node.height,\n node.x,\n node.y,\n \"offsetY\",\n node.offsetY,\n \"parent\",\n parent,\n parent?.offsetY,\n node\n );\n (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.positionNode)(node);\n }\n }\n })\n );\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n edge.points.forEach((point) => point.y += subGraphTitleTotalMargin / 2);\n const startNode = graph.node(e.v);\n var endNode = graph.node(e.w);\n const paths = (0,_chunk_NCRKNZAS_mjs__WEBPACK_IMPORTED_MODULE_0__.insertEdge)(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id);\n (0,_chunk_NCRKNZAS_mjs__WEBPACK_IMPORTED_MODULE_0__.positionEdgeLabel)(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.info(v, n.type, n.diff);\n if (n.isGroup) {\n diff = n.diff;\n }\n });\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Returning from recursive render XAX\", elem, diff);\n return { elem, diff };\n}, \"recursiveRender\");\nvar render = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.__name)(async (data4Layout, svg) => {\n const graph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_10__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: data4Layout.direction,\n nodesep: data4Layout.config?.nodeSpacing || data4Layout.config?.flowchart?.nodeSpacing || data4Layout.nodeSpacing,\n ranksep: data4Layout.config?.rankSpacing || data4Layout.config?.flowchart?.rankSpacing || data4Layout.rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const element = svg.select(\"g\");\n (0,_chunk_NCRKNZAS_mjs__WEBPACK_IMPORTED_MODULE_0__.markers_default)(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);\n (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.clear2)();\n (0,_chunk_NCRKNZAS_mjs__WEBPACK_IMPORTED_MODULE_0__.clear)();\n (0,_chunk_CV3G5MRU_mjs__WEBPACK_IMPORTED_MODULE_2__.clear)();\n clear4();\n data4Layout.nodes.forEach((node) => {\n graph.setNode(node.id, { ...node });\n if (node.parentId) {\n graph.setParent(node.id, node.parentId);\n }\n });\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.debug(\"Edges:\", data4Layout.edges);\n data4Layout.edges.forEach((edge) => {\n if (edge.start === edge.end) {\n const nodeId = edge.start;\n const specialId1 = nodeId + \"---\" + nodeId + \"---1\";\n const specialId2 = nodeId + \"---\" + nodeId + \"---2\";\n const node = graph.node(nodeId);\n graph.setNode(specialId1, {\n domId: specialId1,\n id: specialId1,\n parentId: node.parentId,\n labelStyle: \"\",\n label: \"\",\n padding: 0,\n shape: \"labelRect\",\n // shape: 'rect',\n style: \"\",\n width: 10,\n height: 10\n });\n graph.setParent(specialId1, node.parentId);\n graph.setNode(specialId2, {\n domId: specialId2,\n id: specialId2,\n parentId: node.parentId,\n labelStyle: \"\",\n padding: 0,\n // shape: 'rect',\n shape: \"labelRect\",\n label: \"\",\n style: \"\",\n width: 10,\n height: 10\n });\n graph.setParent(specialId2, node.parentId);\n const edge1 = structuredClone(edge);\n const edgeMid = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge1.id = nodeId + \"-cyclic-special-1\";\n edgeMid.arrowTypeStart = \"none\";\n edgeMid.arrowTypeEnd = \"none\";\n edgeMid.id = nodeId + \"-cyclic-special-mid\";\n edge2.label = \"\";\n if (node.isGroup) {\n edge1.fromCluster = nodeId;\n edge2.toCluster = nodeId;\n }\n edge2.id = nodeId + \"-cyclic-special-2\";\n edge2.arrowTypeStart = \"none\";\n graph.setEdge(nodeId, specialId1, edge1, nodeId + \"-cyclic-special-0\");\n graph.setEdge(specialId1, specialId2, edgeMid, nodeId + \"-cyclic-special-1\");\n graph.setEdge(specialId2, nodeId, edge2, nodeId + \"-cyc<lic-special-2\");\n } else {\n graph.setEdge(edge.start, edge.end, { ...edge }, edge.id);\n }\n });\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Graph at first:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n adjustClustersAndEdges(graph);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.log.warn(\"Graph after XAX:\", JSON.stringify(dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_9__.write(graph)));\n const siteConfig = (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_7__.getConfig2)();\n await recursiveRender(\n element,\n graph,\n data4Layout.type,\n data4Layout.diagramId,\n void 0,\n siteConfig\n );\n}, \"render\");\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/dagre-2BBEFEWP.mjs?\n}");
39
39
 
40
40
  /***/ })
41
41
 
@@ -7,35 +7,35 @@
7
7
  * or disable the default devtool with "devtool: false".
8
8
  * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
9
  */
10
- (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-VMROVX33_mjs"],{
10
+ (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-4IRLE6MV_mjs"],{
11
11
 
12
- /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs":
12
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs":
13
13
  /*!**************************************************************************!*\
14
- !*** ./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs ***!
14
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs ***!
15
15
  \**************************************************************************/
16
16
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
17
17
 
18
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ populateCommonDb: () => (/* binding */ populateCommonDb)\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\n\n// src/diagrams/common/populateCommonDb.ts\nfunction populateCommonDb(ast, db) {\n if (ast.accDescr) {\n db.setAccDescription?.(ast.accDescr);\n }\n if (ast.accTitle) {\n db.setAccTitle?.(ast.accTitle);\n }\n if (ast.title) {\n db.setDiagramTitle?.(ast.title);\n }\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(populateCommonDb, \"populateCommonDb\");\n\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs?\n}");
18
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ populateCommonDb: () => (/* binding */ populateCommonDb)\n/* harmony export */ });\n/* harmony import */ var _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-VIW5F6AA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-VIW5F6AA.mjs\");\n\n\n// src/diagrams/common/populateCommonDb.ts\nfunction populateCommonDb(ast, db) {\n if (ast.accDescr) {\n db.setAccDescription?.(ast.accDescr);\n }\n if (ast.accTitle) {\n db.setAccTitle?.(ast.accTitle);\n }\n if (ast.title) {\n db.setDiagramTitle?.(ast.title);\n }\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(populateCommonDb, \"populateCommonDb\");\n\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs?\n}");
19
19
 
20
20
  /***/ }),
21
21
 
22
- /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/chunk-SKB7J2MH.mjs":
22
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/chunk-NRVI72HA.mjs":
23
23
  /*!**************************************************************************!*\
24
- !*** ./node_modules/mermaid/dist/chunks/mermaid.core/chunk-SKB7J2MH.mjs ***!
24
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/chunk-NRVI72HA.mjs ***!
25
25
  \**************************************************************************/
26
26
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
27
27
 
28
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupViewPortForSVG: () => (/* binding */ setupViewPortForSVG)\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\n\n// src/rendering-util/setupViewPortForSVG.ts\nvar setupViewPortForSVG = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((svg, padding, cssDiagram, useMaxWidth) => {\n svg.attr(\"class\", cssDiagram);\n const { width, height, x, y } = calculateDimensionsWithPadding(svg, padding);\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.configureSvgSize)(svg, height, width, useMaxWidth);\n const viewBox = createViewBox(x, y, width, height, padding);\n svg.attr(\"viewBox\", viewBox);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(`viewBox configured: ${viewBox} with padding: ${padding}`);\n}, \"setupViewPortForSVG\");\nvar calculateDimensionsWithPadding = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((svg, padding) => {\n const bounds = svg.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 };\n return {\n width: bounds.width + padding * 2,\n height: bounds.height + padding * 2,\n x: bounds.x,\n y: bounds.y\n };\n}, \"calculateDimensionsWithPadding\");\nvar createViewBox = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((x, y, width, height, padding) => {\n return `${x - padding} ${y - padding} ${width} ${height}`;\n}, \"createViewBox\");\n\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/chunk-SKB7J2MH.mjs?\n}");
28
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupViewPortForSVG: () => (/* binding */ setupViewPortForSVG)\n/* harmony export */ });\n/* harmony import */ var _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-VIW5F6AA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-VIW5F6AA.mjs\");\n\n\n// src/rendering-util/setupViewPortForSVG.ts\nvar setupViewPortForSVG = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((svg, padding, cssDiagram, useMaxWidth) => {\n svg.attr(\"class\", cssDiagram);\n const { width, height, x, y } = calculateDimensionsWithPadding(svg, padding);\n (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.configureSvgSize)(svg, height, width, useMaxWidth);\n const viewBox = createViewBox(x, y, width, height, padding);\n svg.attr(\"viewBox\", viewBox);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.log.debug(`viewBox configured: ${viewBox} with padding: ${padding}`);\n}, \"setupViewPortForSVG\");\nvar calculateDimensionsWithPadding = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((svg, padding) => {\n const bounds = svg.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 };\n return {\n width: bounds.width + padding * 2,\n height: bounds.height + padding * 2,\n x: bounds.x,\n y: bounds.y\n };\n}, \"calculateDimensionsWithPadding\");\nvar createViewBox = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)((x, y, width, height, padding) => {\n return `${x - padding} ${y - padding} ${width} ${height}`;\n}, \"createViewBox\");\n\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/chunk-NRVI72HA.mjs?\n}");
29
29
 
30
30
  /***/ }),
31
31
 
32
- /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/diagram-VMROVX33.mjs":
32
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/diagram-4IRLE6MV.mjs":
33
33
  /*!****************************************************************************!*\
34
- !*** ./node_modules/mermaid/dist/chunks/mermaid.core/diagram-VMROVX33.mjs ***!
34
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/diagram-4IRLE6MV.mjs ***!
35
35
  \****************************************************************************/
36
36
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
37
37
 
38
- 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_SKB7J2MH_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-SKB7J2MH.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-SKB7J2MH.mjs\");\n/* harmony import */ var _chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-UWXLY5YG.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-UWXLY5YG.mjs\");\n/* harmony import */ var _chunk_353BL4L5_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-353BL4L5.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs\");\n/* harmony import */ var _chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_3__ = __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_4__ = __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_5__ = __webpack_require__(/*! ./chunk-3XYRH5AP.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-3XYRH5AP.mjs\");\n/* harmony import */ var _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mermaid-js/parser */ \"./node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/src/index.js\");\n\n\n\n\n\n\n\n// src/diagrams/treemap/db.ts\nvar TreeMapDB = class {\n constructor() {\n this.nodes = [];\n this.levels = /* @__PURE__ */ new Map();\n this.outerNodes = [];\n this.classes = /* @__PURE__ */ new Map();\n this.setAccTitle = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.setAccTitle;\n this.getAccTitle = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.getAccTitle;\n this.setDiagramTitle = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.setDiagramTitle;\n this.getDiagramTitle = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.getDiagramTitle;\n this.getAccDescription = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.getAccDescription;\n this.setAccDescription = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.setAccDescription;\n }\n static {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(this, \"TreeMapDB\");\n }\n getNodes() {\n return this.nodes;\n }\n getConfig() {\n const defaultConfig = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.defaultConfig_default;\n const userConfig = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.getConfig)();\n return (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_3__.cleanAndMerge)({\n ...defaultConfig.treemap,\n ...userConfig.treemap ?? {}\n });\n }\n addNode(node, level) {\n this.nodes.push(node);\n this.levels.set(node, level);\n if (level === 0) {\n this.outerNodes.push(node);\n this.root ??= node;\n }\n }\n getRoot() {\n return { name: \"\", children: this.outerNodes };\n }\n addClass(id, _style) {\n const styleClass = this.classes.get(id) ?? { id, styles: [], textStyles: [] };\n const styles = _style.replace(/\\\\,/g, \"\\xA7\\xA7\\xA7\").replace(/,/g, \";\").replace(/§§§/g, \",\").split(\";\");\n if (styles) {\n styles.forEach((s) => {\n if ((0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.isLabelStyle)(s)) {\n if (styleClass?.textStyles) {\n styleClass.textStyles.push(s);\n } else {\n styleClass.textStyles = [s];\n }\n }\n if (styleClass?.styles) {\n styleClass.styles.push(s);\n } else {\n styleClass.styles = [s];\n }\n });\n }\n this.classes.set(id, styleClass);\n }\n getClasses() {\n return this.classes;\n }\n getStylesForClass(classSelector) {\n return this.classes.get(classSelector)?.styles ?? [];\n }\n clear() {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.clear)();\n this.nodes = [];\n this.levels = /* @__PURE__ */ new Map();\n this.outerNodes = [];\n this.classes = /* @__PURE__ */ new Map();\n this.root = void 0;\n }\n};\n\n// src/diagrams/treemap/parser.ts\n\n\n// src/diagrams/treemap/utils.ts\nfunction buildHierarchy(items) {\n if (!items.length) {\n return [];\n }\n const root = [];\n const stack = [];\n items.forEach((item) => {\n const node = {\n name: item.name,\n children: item.type === \"Leaf\" ? void 0 : []\n };\n node.classSelector = item?.classSelector;\n if (item?.cssCompiledStyles) {\n node.cssCompiledStyles = [item.cssCompiledStyles];\n }\n if (item.type === \"Leaf\" && item.value !== void 0) {\n node.value = item.value;\n }\n while (stack.length > 0 && stack[stack.length - 1].level >= item.level) {\n stack.pop();\n }\n if (stack.length === 0) {\n root.push(node);\n } else {\n const parent = stack[stack.length - 1].node;\n if (parent.children) {\n parent.children.push(node);\n } else {\n parent.children = [node];\n }\n }\n if (item.type !== \"Leaf\") {\n stack.push({ node, level: item.level });\n }\n });\n return root;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(buildHierarchy, \"buildHierarchy\");\n\n// src/diagrams/treemap/parser.ts\nvar populate = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((ast, db) => {\n (0,_chunk_353BL4L5_mjs__WEBPACK_IMPORTED_MODULE_2__.populateCommonDb)(ast, db);\n const items = [];\n for (const row of ast.TreemapRows ?? []) {\n if (row.$type === \"ClassDefStatement\") {\n db.addClass(row.className ?? \"\", row.styleText ?? \"\");\n }\n }\n for (const row of ast.TreemapRows ?? []) {\n const item = row.item;\n if (!item) {\n continue;\n }\n const level = row.indent ? parseInt(row.indent) : 0;\n const name = getItemName(item);\n const styles = item.classSelector ? db.getStylesForClass(item.classSelector) : [];\n const cssCompiledStyles = styles.length > 0 ? styles.join(\";\") : void 0;\n const itemData = {\n level,\n name,\n type: item.$type,\n value: item.value,\n classSelector: item.classSelector,\n cssCompiledStyles\n };\n items.push(itemData);\n }\n const hierarchyNodes = buildHierarchy(items);\n const addNodesRecursively = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((nodes, level) => {\n for (const node of nodes) {\n db.addNode(node, level);\n if (node.children && node.children.length > 0) {\n addNodesRecursively(node.children, level + 1);\n }\n }\n }, \"addNodesRecursively\");\n addNodesRecursively(hierarchyNodes, 0);\n}, \"populate\");\nvar getItemName = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((item) => {\n return item.name ? String(item.name) : \"\";\n}, \"getItemName\");\nvar parser = {\n // @ts-expect-error - TreeMapDB is not assignable to DiagramDB\n parser: { yy: void 0 },\n parse: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(async (text) => {\n try {\n const parseFunc = _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_6__.parse;\n const ast = await parseFunc(\"treemap\", text);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.log.debug(\"Treemap AST:\", ast);\n const db = parser.parser?.yy;\n if (!(db instanceof TreeMapDB)) {\n throw new Error(\n \"parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populate(ast, db);\n } catch (error) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.log.error(\"Error parsing treemap:\", error);\n throw error;\n }\n }, \"parse\")\n};\n\n// src/diagrams/treemap/renderer.ts\n\nvar DEFAULT_INNER_PADDING = 10;\nvar SECTION_INNER_PADDING = 10;\nvar SECTION_HEADER_HEIGHT = 25;\nvar draw = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((_text, id, _version, diagram2) => {\n const treemapDb = diagram2.db;\n const config = treemapDb.getConfig();\n const treemapInnerPadding = config.padding ?? DEFAULT_INNER_PADDING;\n const title = treemapDb.getDiagramTitle();\n const root = treemapDb.getRoot();\n const { themeVariables } = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.getConfig)();\n if (!root) {\n return;\n }\n const titleHeight = title ? 30 : 0;\n const svg = (0,_chunk_P3VETL53_mjs__WEBPACK_IMPORTED_MODULE_4__.selectSvgElement)(id);\n const width = config.nodeWidth ? config.nodeWidth * SECTION_INNER_PADDING : 960;\n const height = config.nodeHeight ? config.nodeHeight * SECTION_INNER_PADDING : 500;\n const svgWidth = width;\n const svgHeight = height + titleHeight;\n svg.attr(\"viewBox\", `0 0 ${svgWidth} ${svgHeight}`);\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.configureSvgSize)(svg, svgHeight, svgWidth, config.useMaxWidth);\n let valueFormat;\n try {\n const formatStr = config.valueFormat || \",\";\n if (formatStr === \"$0,0\") {\n valueFormat = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((value) => \"$\" + (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(\",\")(value), \"valueFormat\");\n } else if (formatStr.startsWith(\"$\") && formatStr.includes(\",\")) {\n const precision = /\\.\\d+/.exec(formatStr);\n const precisionStr = precision ? precision[0] : \"\";\n valueFormat = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((value) => \"$\" + (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(\",\" + precisionStr)(value), \"valueFormat\");\n } else if (formatStr.startsWith(\"$\")) {\n const restOfFormat = formatStr.substring(1);\n valueFormat = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((value) => \"$\" + (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(restOfFormat || \"\")(value), \"valueFormat\");\n } else {\n valueFormat = (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(formatStr);\n }\n } catch (error) {\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.log.error(\"Error creating format function:\", error);\n valueFormat = (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(\",\");\n }\n const colorScale = (0,d3__WEBPACK_IMPORTED_MODULE_7__.scaleOrdinal)().range([\n \"transparent\",\n themeVariables.cScale0,\n themeVariables.cScale1,\n themeVariables.cScale2,\n themeVariables.cScale3,\n themeVariables.cScale4,\n themeVariables.cScale5,\n themeVariables.cScale6,\n themeVariables.cScale7,\n themeVariables.cScale8,\n themeVariables.cScale9,\n themeVariables.cScale10,\n themeVariables.cScale11\n ]);\n const colorScalePeer = (0,d3__WEBPACK_IMPORTED_MODULE_7__.scaleOrdinal)().range([\n \"transparent\",\n themeVariables.cScalePeer0,\n themeVariables.cScalePeer1,\n themeVariables.cScalePeer2,\n themeVariables.cScalePeer3,\n themeVariables.cScalePeer4,\n themeVariables.cScalePeer5,\n themeVariables.cScalePeer6,\n themeVariables.cScalePeer7,\n themeVariables.cScalePeer8,\n themeVariables.cScalePeer9,\n themeVariables.cScalePeer10,\n themeVariables.cScalePeer11\n ]);\n const colorScaleLabel = (0,d3__WEBPACK_IMPORTED_MODULE_7__.scaleOrdinal)().range([\n themeVariables.cScaleLabel0,\n themeVariables.cScaleLabel1,\n themeVariables.cScaleLabel2,\n themeVariables.cScaleLabel3,\n themeVariables.cScaleLabel4,\n themeVariables.cScaleLabel5,\n themeVariables.cScaleLabel6,\n themeVariables.cScaleLabel7,\n themeVariables.cScaleLabel8,\n themeVariables.cScaleLabel9,\n themeVariables.cScaleLabel10,\n themeVariables.cScaleLabel11\n ]);\n if (title) {\n svg.append(\"text\").attr(\"x\", svgWidth / 2).attr(\"y\", titleHeight / 2).attr(\"class\", \"treemapTitle\").attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(title);\n }\n const g = svg.append(\"g\").attr(\"transform\", `translate(0, ${titleHeight})`).attr(\"class\", \"treemapContainer\");\n const hierarchyRoot = (0,d3__WEBPACK_IMPORTED_MODULE_7__.hierarchy)(root).sum((d) => d.value ?? 0).sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n const treemapLayout = (0,d3__WEBPACK_IMPORTED_MODULE_7__.treemap)().size([width, height]).paddingTop(\n (d) => d.children && d.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0\n ).paddingInner(treemapInnerPadding).paddingLeft((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingRight((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingBottom((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).round(true);\n const treemapData = treemapLayout(hierarchyRoot);\n const branchNodes = treemapData.descendants().filter((d) => d.children && d.children.length > 0);\n const sections = g.selectAll(\".treemapSection\").data(branchNodes).enter().append(\"g\").attr(\"class\", \"treemapSection\").attr(\"transform\", (d) => `translate(${d.x0},${d.y0})`);\n sections.append(\"rect\").attr(\"width\", (d) => d.x1 - d.x0).attr(\"height\", SECTION_HEADER_HEIGHT).attr(\"class\", \"treemapSectionHeader\").attr(\"fill\", \"none\").attr(\"fill-opacity\", 0.6).attr(\"stroke-width\", 0.6).attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n return \"\";\n });\n sections.append(\"clipPath\").attr(\"id\", (_d, i) => `clip-section-${id}-${i}`).append(\"rect\").attr(\"width\", (d) => Math.max(0, d.x1 - d.x0 - 12)).attr(\"height\", SECTION_HEADER_HEIGHT);\n sections.append(\"rect\").attr(\"width\", (d) => d.x1 - d.x0).attr(\"height\", (d) => d.y1 - d.y0).attr(\"class\", (_d, i) => {\n return `treemapSection section${i}`;\n }).attr(\"fill\", (d) => colorScale(d.data.name)).attr(\"fill-opacity\", 0.6).attr(\"stroke\", (d) => colorScalePeer(d.data.name)).attr(\"stroke-width\", 2).attr(\"stroke-opacity\", 0.4).attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n const styles = (0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return styles.nodeStyles + \";\" + styles.borderStyles.join(\";\");\n });\n sections.append(\"text\").attr(\"class\", \"treemapSectionLabel\").attr(\"x\", 6).attr(\"y\", SECTION_HEADER_HEIGHT / 2).attr(\"dominant-baseline\", \"middle\").text((d) => d.depth === 0 ? \"\" : d.data.name).attr(\"font-weight\", \"bold\").attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n const labelStyles = \"dominant-baseline: middle; font-size: 12px; fill:\" + colorScaleLabel(d.data.name) + \"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\";\n const styles = (0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n }).each(function(d) {\n if (d.depth === 0) {\n return;\n }\n const self = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(this);\n const originalText = d.data.name;\n self.text(originalText);\n const totalHeaderWidth = d.x1 - d.x0;\n const labelXPosition = 6;\n let spaceForTextContent;\n if (config.showValues !== false && d.value) {\n const valueEndsAtXRelative = totalHeaderWidth - 10;\n const estimatedValueTextActualWidth = 30;\n const gapBetweenLabelAndValue = 10;\n const labelMustEndBeforeX = valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue;\n spaceForTextContent = labelMustEndBeforeX - labelXPosition;\n } else {\n const labelOwnRightPadding = 6;\n spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding;\n }\n const minimumWidthToDisplay = 15;\n const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent);\n const textNode = self.node();\n const currentTextContentLength = textNode.getComputedTextLength();\n if (currentTextContentLength > actualAvailableWidth) {\n const ellipsis = \"...\";\n let currentTruncatedText = originalText;\n while (currentTruncatedText.length > 0) {\n currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1);\n if (currentTruncatedText.length === 0) {\n self.text(ellipsis);\n if (textNode.getComputedTextLength() > actualAvailableWidth) {\n self.text(\"\");\n }\n break;\n }\n self.text(currentTruncatedText + ellipsis);\n if (textNode.getComputedTextLength() <= actualAvailableWidth) {\n break;\n }\n }\n }\n });\n if (config.showValues !== false) {\n sections.append(\"text\").attr(\"class\", \"treemapSectionValue\").attr(\"x\", (d) => d.x1 - d.x0 - 10).attr(\"y\", SECTION_HEADER_HEIGHT / 2).attr(\"text-anchor\", \"end\").attr(\"dominant-baseline\", \"middle\").text((d) => d.value ? valueFormat(d.value) : \"\").attr(\"font-style\", \"italic\").attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n const labelStyles = \"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:\" + colorScaleLabel(d.data.name) + \"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\";\n const styles = (0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n });\n }\n const leafNodes = treemapData.leaves();\n const cell = g.selectAll(\".treemapLeafGroup\").data(leafNodes).enter().append(\"g\").attr(\"class\", (d, i) => {\n return `treemapNode treemapLeafGroup leaf${i}${d.data.classSelector ? ` ${d.data.classSelector}` : \"\"}x`;\n }).attr(\"transform\", (d) => `translate(${d.x0},${d.y0})`);\n cell.append(\"rect\").attr(\"width\", (d) => d.x1 - d.x0).attr(\"height\", (d) => d.y1 - d.y0).attr(\"class\", \"treemapLeaf\").attr(\"fill\", (d) => {\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n }).attr(\"style\", (d) => {\n const styles = (0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return styles.nodeStyles;\n }).attr(\"fill-opacity\", 0.3).attr(\"stroke\", (d) => {\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n }).attr(\"stroke-width\", 3);\n cell.append(\"clipPath\").attr(\"id\", (_d, i) => `clip-${id}-${i}`).append(\"rect\").attr(\"width\", (d) => Math.max(0, d.x1 - d.x0 - 4)).attr(\"height\", (d) => Math.max(0, d.y1 - d.y0 - 4));\n const leafLabels = cell.append(\"text\").attr(\"class\", \"treemapLabel\").attr(\"x\", (d) => (d.x1 - d.x0) / 2).attr(\"y\", (d) => (d.y1 - d.y0) / 2).attr(\"style\", (d) => {\n const labelStyles = \"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:\" + colorScaleLabel(d.data.name) + \";\";\n const styles = (0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n }).attr(\"clip-path\", (_d, i) => `url(#clip-${id}-${i})`).text((d) => d.data.name);\n leafLabels.each(function(d) {\n const self = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(this);\n const nodeWidth = d.x1 - d.x0;\n const nodeHeight = d.y1 - d.y0;\n const textNode = self.node();\n const padding = 4;\n const availableWidth = nodeWidth - 2 * padding;\n const availableHeight = nodeHeight - 2 * padding;\n if (availableWidth < 10 || availableHeight < 10) {\n self.style(\"display\", \"none\");\n return;\n }\n let currentLabelFontSize = parseInt(self.style(\"font-size\"), 10);\n const minLabelFontSize = 8;\n const originalValueRelFontSize = 28;\n const valueScaleFactor = 0.6;\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n while (textNode.getComputedTextLength() > availableWidth && currentLabelFontSize > minLabelFontSize) {\n currentLabelFontSize--;\n self.style(\"font-size\", `${currentLabelFontSize}px`);\n }\n let prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n let combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) {\n currentLabelFontSize--;\n prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n if (prospectiveValueFontSize < minValueFontSize && currentLabelFontSize === minLabelFontSize) {\n break;\n }\n self.style(\"font-size\", `${currentLabelFontSize}px`);\n combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) {\n }\n }\n self.style(\"font-size\", `${currentLabelFontSize}px`);\n if (textNode.getComputedTextLength() > availableWidth || currentLabelFontSize < minLabelFontSize || availableHeight < currentLabelFontSize) {\n self.style(\"display\", \"none\");\n }\n });\n if (config.showValues !== false) {\n const leafValues = cell.append(\"text\").attr(\"class\", \"treemapValue\").attr(\"x\", (d) => (d.x1 - d.x0) / 2).attr(\"y\", function(d) {\n return (d.y1 - d.y0) / 2;\n }).attr(\"style\", (d) => {\n const labelStyles = \"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:\" + colorScaleLabel(d.data.name) + \";\";\n const styles = (0,_chunk_UWXLY5YG_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n }).attr(\"clip-path\", (_d, i) => `url(#clip-${id}-${i})`).text((d) => d.value ? valueFormat(d.value) : \"\");\n leafValues.each(function(d) {\n const valueTextElement = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(this);\n const parentCellNode = this.parentNode;\n if (!parentCellNode) {\n valueTextElement.style(\"display\", \"none\");\n return;\n }\n const labelElement = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(parentCellNode).select(\".treemapLabel\");\n if (labelElement.empty() || labelElement.style(\"display\") === \"none\") {\n valueTextElement.style(\"display\", \"none\");\n return;\n }\n const finalLabelFontSize = parseFloat(labelElement.style(\"font-size\"));\n const originalValueFontSize = 28;\n const valueScaleFactor = 0.6;\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n const actualValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor))\n );\n valueTextElement.style(\"font-size\", `${actualValueFontSize}px`);\n const labelCenterY = (d.y1 - d.y0) / 2;\n const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue;\n valueTextElement.attr(\"y\", valueTopActualY);\n const nodeWidth = d.x1 - d.x0;\n const nodeTotalHeight = d.y1 - d.y0;\n const cellBottomPadding = 4;\n const maxValueBottomY = nodeTotalHeight - cellBottomPadding;\n const availableWidthForValue = nodeWidth - 2 * 4;\n if (valueTextElement.node().getComputedTextLength() > availableWidthForValue || valueTopActualY + actualValueFontSize > maxValueBottomY || actualValueFontSize < minValueFontSize) {\n valueTextElement.style(\"display\", \"none\");\n } else {\n valueTextElement.style(\"display\", null);\n }\n });\n }\n const diagramPadding = config.diagramPadding ?? 8;\n (0,_chunk_SKB7J2MH_mjs__WEBPACK_IMPORTED_MODULE_0__.setupViewPortForSVG)(svg, diagramPadding, \"flowchart\", config?.useMaxWidth || false);\n}, \"draw\");\nvar getClasses = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(function(_text, diagramObj) {\n return diagramObj.db.getClasses();\n}, \"getClasses\");\nvar renderer = { draw, getClasses };\n\n// src/diagrams/treemap/styles.ts\nvar defaultTreemapStyleOptions = {\n sectionStrokeColor: \"black\",\n sectionStrokeWidth: \"1\",\n sectionFillColor: \"#efefef\",\n leafStrokeColor: \"black\",\n leafStrokeWidth: \"1\",\n leafFillColor: \"#efefef\",\n labelColor: \"black\",\n labelFontSize: \"12px\",\n valueFontSize: \"10px\",\n valueColor: \"black\",\n titleColor: \"black\",\n titleFontSize: \"14px\"\n};\nvar getStyles = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(({\n treemap: treemap2\n} = {}) => {\n const options = (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_3__.cleanAndMerge)(defaultTreemapStyleOptions, treemap2);\n return `\n .treemapNode.section {\n stroke: ${options.sectionStrokeColor};\n stroke-width: ${options.sectionStrokeWidth};\n fill: ${options.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${options.leafStrokeColor};\n stroke-width: ${options.leafStrokeWidth};\n fill: ${options.leafFillColor};\n }\n .treemapLabel {\n fill: ${options.labelColor};\n font-size: ${options.labelFontSize};\n }\n .treemapValue {\n fill: ${options.valueColor};\n font-size: ${options.valueFontSize};\n }\n .treemapTitle {\n fill: ${options.titleColor};\n font-size: ${options.titleFontSize};\n }\n `;\n}, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/treemap/diagram.ts\nvar diagram = {\n parser,\n get db() {\n return new TreeMapDB();\n },\n renderer,\n styles: styles_default\n};\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/diagram-VMROVX33.mjs?\n}");
38
+ 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_NRVI72HA_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-NRVI72HA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-NRVI72HA.mjs\");\n/* harmony import */ var _chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-7RNWAQOT.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-7RNWAQOT.mjs\");\n/* harmony import */ var _chunk_ANTBXLJU_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-ANTBXLJU.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs\");\n/* harmony import */ var _chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-U37J5Y7L.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-U37J5Y7L.mjs\");\n/* harmony import */ var _chunk_T57MJCP2_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./chunk-T57MJCP2.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-T57MJCP2.mjs\");\n/* harmony import */ var _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./chunk-VIW5F6AA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-VIW5F6AA.mjs\");\n/* harmony import */ var _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mermaid-js/parser */ \"./node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/src/index.js\");\n\n\n\n\n\n\n\n// src/diagrams/treemap/db.ts\nvar TreeMapDB = class {\n constructor() {\n this.nodes = [];\n this.levels = /* @__PURE__ */ new Map();\n this.outerNodes = [];\n this.classes = /* @__PURE__ */ new Map();\n this.setAccTitle = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.setAccTitle;\n this.getAccTitle = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.getAccTitle;\n this.setDiagramTitle = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.setDiagramTitle;\n this.getDiagramTitle = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.getDiagramTitle;\n this.getAccDescription = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.getAccDescription;\n this.setAccDescription = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.setAccDescription;\n }\n static {\n (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(this, \"TreeMapDB\");\n }\n getNodes() {\n return this.nodes;\n }\n getConfig() {\n const defaultConfig = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.defaultConfig_default;\n const userConfig = (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.getConfig)();\n return (0,_chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_3__.cleanAndMerge)({\n ...defaultConfig.treemap,\n ...userConfig.treemap ?? {}\n });\n }\n addNode(node, level) {\n this.nodes.push(node);\n this.levels.set(node, level);\n if (level === 0) {\n this.outerNodes.push(node);\n this.root ??= node;\n }\n }\n getRoot() {\n return { name: \"\", children: this.outerNodes };\n }\n addClass(id, _style) {\n const styleClass = this.classes.get(id) ?? { id, styles: [], textStyles: [] };\n const styles = _style.replace(/\\\\,/g, \"\\xA7\\xA7\\xA7\").replace(/,/g, \";\").replace(/§§§/g, \",\").split(\";\");\n if (styles) {\n styles.forEach((s) => {\n if ((0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.isLabelStyle)(s)) {\n if (styleClass?.textStyles) {\n styleClass.textStyles.push(s);\n } else {\n styleClass.textStyles = [s];\n }\n }\n if (styleClass?.styles) {\n styleClass.styles.push(s);\n } else {\n styleClass.styles = [s];\n }\n });\n }\n this.classes.set(id, styleClass);\n }\n getClasses() {\n return this.classes;\n }\n getStylesForClass(classSelector) {\n return this.classes.get(classSelector)?.styles ?? [];\n }\n clear() {\n (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.clear)();\n this.nodes = [];\n this.levels = /* @__PURE__ */ new Map();\n this.outerNodes = [];\n this.classes = /* @__PURE__ */ new Map();\n this.root = void 0;\n }\n};\n\n// src/diagrams/treemap/parser.ts\n\n\n// src/diagrams/treemap/utils.ts\nfunction buildHierarchy(items) {\n if (!items.length) {\n return [];\n }\n const root = [];\n const stack = [];\n items.forEach((item) => {\n const node = {\n name: item.name,\n children: item.type === \"Leaf\" ? void 0 : []\n };\n node.classSelector = item?.classSelector;\n if (item?.cssCompiledStyles) {\n node.cssCompiledStyles = [item.cssCompiledStyles];\n }\n if (item.type === \"Leaf\" && item.value !== void 0) {\n node.value = item.value;\n }\n while (stack.length > 0 && stack[stack.length - 1].level >= item.level) {\n stack.pop();\n }\n if (stack.length === 0) {\n root.push(node);\n } else {\n const parent = stack[stack.length - 1].node;\n if (parent.children) {\n parent.children.push(node);\n } else {\n parent.children = [node];\n }\n }\n if (item.type !== \"Leaf\") {\n stack.push({ node, level: item.level });\n }\n });\n return root;\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(buildHierarchy, \"buildHierarchy\");\n\n// src/diagrams/treemap/parser.ts\nvar populate = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((ast, db) => {\n (0,_chunk_ANTBXLJU_mjs__WEBPACK_IMPORTED_MODULE_2__.populateCommonDb)(ast, db);\n const items = [];\n for (const row of ast.TreemapRows ?? []) {\n if (row.$type === \"ClassDefStatement\") {\n db.addClass(row.className ?? \"\", row.styleText ?? \"\");\n }\n }\n for (const row of ast.TreemapRows ?? []) {\n const item = row.item;\n if (!item) {\n continue;\n }\n const level = row.indent ? parseInt(row.indent) : 0;\n const name = getItemName(item);\n const styles = item.classSelector ? db.getStylesForClass(item.classSelector) : [];\n const cssCompiledStyles = styles.length > 0 ? styles.join(\";\") : void 0;\n const itemData = {\n level,\n name,\n type: item.$type,\n value: item.value,\n classSelector: item.classSelector,\n cssCompiledStyles\n };\n items.push(itemData);\n }\n const hierarchyNodes = buildHierarchy(items);\n const addNodesRecursively = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((nodes, level) => {\n for (const node of nodes) {\n db.addNode(node, level);\n if (node.children && node.children.length > 0) {\n addNodesRecursively(node.children, level + 1);\n }\n }\n }, \"addNodesRecursively\");\n addNodesRecursively(hierarchyNodes, 0);\n}, \"populate\");\nvar getItemName = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((item) => {\n return item.name ? String(item.name) : \"\";\n}, \"getItemName\");\nvar parser = {\n // @ts-expect-error - TreeMapDB is not assignable to DiagramDB\n parser: { yy: void 0 },\n parse: /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(async (text) => {\n try {\n const parseFunc = _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_6__.parse;\n const ast = await parseFunc(\"treemap\", text);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.log.debug(\"Treemap AST:\", ast);\n const db = parser.parser?.yy;\n if (!(db instanceof TreeMapDB)) {\n throw new Error(\n \"parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populate(ast, db);\n } catch (error) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.log.error(\"Error parsing treemap:\", error);\n throw error;\n }\n }, \"parse\")\n};\n\n// src/diagrams/treemap/renderer.ts\n\nvar DEFAULT_INNER_PADDING = 10;\nvar SECTION_INNER_PADDING = 10;\nvar SECTION_HEADER_HEIGHT = 25;\nvar draw = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((_text, id, _version, diagram2) => {\n const treemapDb = diagram2.db;\n const config = treemapDb.getConfig();\n const treemapInnerPadding = config.padding ?? DEFAULT_INNER_PADDING;\n const title = treemapDb.getDiagramTitle();\n const root = treemapDb.getRoot();\n const { themeVariables } = (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.getConfig)();\n if (!root) {\n return;\n }\n const titleHeight = title ? 30 : 0;\n const svg = (0,_chunk_T57MJCP2_mjs__WEBPACK_IMPORTED_MODULE_4__.selectSvgElement)(id);\n const width = config.nodeWidth ? config.nodeWidth * SECTION_INNER_PADDING : 960;\n const height = config.nodeHeight ? config.nodeHeight * SECTION_INNER_PADDING : 500;\n const svgWidth = width;\n const svgHeight = height + titleHeight;\n svg.attr(\"viewBox\", `0 0 ${svgWidth} ${svgHeight}`);\n (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.configureSvgSize)(svg, svgHeight, svgWidth, config.useMaxWidth);\n let valueFormat;\n try {\n const formatStr = config.valueFormat || \",\";\n if (formatStr === \"$0,0\") {\n valueFormat = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((value) => \"$\" + (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(\",\")(value), \"valueFormat\");\n } else if (formatStr.startsWith(\"$\") && formatStr.includes(\",\")) {\n const precision = /\\.\\d+/.exec(formatStr);\n const precisionStr = precision ? precision[0] : \"\";\n valueFormat = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((value) => \"$\" + (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(\",\" + precisionStr)(value), \"valueFormat\");\n } else if (formatStr.startsWith(\"$\")) {\n const restOfFormat = formatStr.substring(1);\n valueFormat = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)((value) => \"$\" + (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(restOfFormat || \"\")(value), \"valueFormat\");\n } else {\n valueFormat = (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(formatStr);\n }\n } catch (error) {\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.log.error(\"Error creating format function:\", error);\n valueFormat = (0,d3__WEBPACK_IMPORTED_MODULE_7__.format)(\",\");\n }\n const colorScale = (0,d3__WEBPACK_IMPORTED_MODULE_7__.scaleOrdinal)().range([\n \"transparent\",\n themeVariables.cScale0,\n themeVariables.cScale1,\n themeVariables.cScale2,\n themeVariables.cScale3,\n themeVariables.cScale4,\n themeVariables.cScale5,\n themeVariables.cScale6,\n themeVariables.cScale7,\n themeVariables.cScale8,\n themeVariables.cScale9,\n themeVariables.cScale10,\n themeVariables.cScale11\n ]);\n const colorScalePeer = (0,d3__WEBPACK_IMPORTED_MODULE_7__.scaleOrdinal)().range([\n \"transparent\",\n themeVariables.cScalePeer0,\n themeVariables.cScalePeer1,\n themeVariables.cScalePeer2,\n themeVariables.cScalePeer3,\n themeVariables.cScalePeer4,\n themeVariables.cScalePeer5,\n themeVariables.cScalePeer6,\n themeVariables.cScalePeer7,\n themeVariables.cScalePeer8,\n themeVariables.cScalePeer9,\n themeVariables.cScalePeer10,\n themeVariables.cScalePeer11\n ]);\n const colorScaleLabel = (0,d3__WEBPACK_IMPORTED_MODULE_7__.scaleOrdinal)().range([\n themeVariables.cScaleLabel0,\n themeVariables.cScaleLabel1,\n themeVariables.cScaleLabel2,\n themeVariables.cScaleLabel3,\n themeVariables.cScaleLabel4,\n themeVariables.cScaleLabel5,\n themeVariables.cScaleLabel6,\n themeVariables.cScaleLabel7,\n themeVariables.cScaleLabel8,\n themeVariables.cScaleLabel9,\n themeVariables.cScaleLabel10,\n themeVariables.cScaleLabel11\n ]);\n if (title) {\n svg.append(\"text\").attr(\"x\", svgWidth / 2).attr(\"y\", titleHeight / 2).attr(\"class\", \"treemapTitle\").attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(title);\n }\n const g = svg.append(\"g\").attr(\"transform\", `translate(0, ${titleHeight})`).attr(\"class\", \"treemapContainer\");\n const hierarchyRoot = (0,d3__WEBPACK_IMPORTED_MODULE_7__.hierarchy)(root).sum((d) => d.value ?? 0).sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n const treemapLayout = (0,d3__WEBPACK_IMPORTED_MODULE_7__.treemap)().size([width, height]).paddingTop(\n (d) => d.children && d.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0\n ).paddingInner(treemapInnerPadding).paddingLeft((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingRight((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingBottom((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).round(true);\n const treemapData = treemapLayout(hierarchyRoot);\n const branchNodes = treemapData.descendants().filter((d) => d.children && d.children.length > 0);\n const sections = g.selectAll(\".treemapSection\").data(branchNodes).enter().append(\"g\").attr(\"class\", \"treemapSection\").attr(\"transform\", (d) => `translate(${d.x0},${d.y0})`);\n sections.append(\"rect\").attr(\"width\", (d) => d.x1 - d.x0).attr(\"height\", SECTION_HEADER_HEIGHT).attr(\"class\", \"treemapSectionHeader\").attr(\"fill\", \"none\").attr(\"fill-opacity\", 0.6).attr(\"stroke-width\", 0.6).attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n return \"\";\n });\n sections.append(\"clipPath\").attr(\"id\", (_d, i) => `clip-section-${id}-${i}`).append(\"rect\").attr(\"width\", (d) => Math.max(0, d.x1 - d.x0 - 12)).attr(\"height\", SECTION_HEADER_HEIGHT);\n sections.append(\"rect\").attr(\"width\", (d) => d.x1 - d.x0).attr(\"height\", (d) => d.y1 - d.y0).attr(\"class\", (_d, i) => {\n return `treemapSection section${i}`;\n }).attr(\"fill\", (d) => colorScale(d.data.name)).attr(\"fill-opacity\", 0.6).attr(\"stroke\", (d) => colorScalePeer(d.data.name)).attr(\"stroke-width\", 2).attr(\"stroke-opacity\", 0.4).attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n const styles = (0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return styles.nodeStyles + \";\" + styles.borderStyles.join(\";\");\n });\n sections.append(\"text\").attr(\"class\", \"treemapSectionLabel\").attr(\"x\", 6).attr(\"y\", SECTION_HEADER_HEIGHT / 2).attr(\"dominant-baseline\", \"middle\").text((d) => d.depth === 0 ? \"\" : d.data.name).attr(\"font-weight\", \"bold\").attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n const labelStyles = \"dominant-baseline: middle; font-size: 12px; fill:\" + colorScaleLabel(d.data.name) + \"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\";\n const styles = (0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n }).each(function(d) {\n if (d.depth === 0) {\n return;\n }\n const self = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(this);\n const originalText = d.data.name;\n self.text(originalText);\n const totalHeaderWidth = d.x1 - d.x0;\n const labelXPosition = 6;\n let spaceForTextContent;\n if (config.showValues !== false && d.value) {\n const valueEndsAtXRelative = totalHeaderWidth - 10;\n const estimatedValueTextActualWidth = 30;\n const gapBetweenLabelAndValue = 10;\n const labelMustEndBeforeX = valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue;\n spaceForTextContent = labelMustEndBeforeX - labelXPosition;\n } else {\n const labelOwnRightPadding = 6;\n spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding;\n }\n const minimumWidthToDisplay = 15;\n const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent);\n const textNode = self.node();\n const currentTextContentLength = textNode.getComputedTextLength();\n if (currentTextContentLength > actualAvailableWidth) {\n const ellipsis = \"...\";\n let currentTruncatedText = originalText;\n while (currentTruncatedText.length > 0) {\n currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1);\n if (currentTruncatedText.length === 0) {\n self.text(ellipsis);\n if (textNode.getComputedTextLength() > actualAvailableWidth) {\n self.text(\"\");\n }\n break;\n }\n self.text(currentTruncatedText + ellipsis);\n if (textNode.getComputedTextLength() <= actualAvailableWidth) {\n break;\n }\n }\n }\n });\n if (config.showValues !== false) {\n sections.append(\"text\").attr(\"class\", \"treemapSectionValue\").attr(\"x\", (d) => d.x1 - d.x0 - 10).attr(\"y\", SECTION_HEADER_HEIGHT / 2).attr(\"text-anchor\", \"end\").attr(\"dominant-baseline\", \"middle\").text((d) => d.value ? valueFormat(d.value) : \"\").attr(\"font-style\", \"italic\").attr(\"style\", (d) => {\n if (d.depth === 0) {\n return \"display: none;\";\n }\n const labelStyles = \"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:\" + colorScaleLabel(d.data.name) + \"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\";\n const styles = (0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n });\n }\n const leafNodes = treemapData.leaves();\n const cell = g.selectAll(\".treemapLeafGroup\").data(leafNodes).enter().append(\"g\").attr(\"class\", (d, i) => {\n return `treemapNode treemapLeafGroup leaf${i}${d.data.classSelector ? ` ${d.data.classSelector}` : \"\"}x`;\n }).attr(\"transform\", (d) => `translate(${d.x0},${d.y0})`);\n cell.append(\"rect\").attr(\"width\", (d) => d.x1 - d.x0).attr(\"height\", (d) => d.y1 - d.y0).attr(\"class\", \"treemapLeaf\").attr(\"fill\", (d) => {\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n }).attr(\"style\", (d) => {\n const styles = (0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return styles.nodeStyles;\n }).attr(\"fill-opacity\", 0.3).attr(\"stroke\", (d) => {\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n }).attr(\"stroke-width\", 3);\n cell.append(\"clipPath\").attr(\"id\", (_d, i) => `clip-${id}-${i}`).append(\"rect\").attr(\"width\", (d) => Math.max(0, d.x1 - d.x0 - 4)).attr(\"height\", (d) => Math.max(0, d.y1 - d.y0 - 4));\n const leafLabels = cell.append(\"text\").attr(\"class\", \"treemapLabel\").attr(\"x\", (d) => (d.x1 - d.x0) / 2).attr(\"y\", (d) => (d.y1 - d.y0) / 2).attr(\"style\", (d) => {\n const labelStyles = \"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:\" + colorScaleLabel(d.data.name) + \";\";\n const styles = (0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n }).attr(\"clip-path\", (_d, i) => `url(#clip-${id}-${i})`).text((d) => d.data.name);\n leafLabels.each(function(d) {\n const self = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(this);\n const nodeWidth = d.x1 - d.x0;\n const nodeHeight = d.y1 - d.y0;\n const textNode = self.node();\n const padding = 4;\n const availableWidth = nodeWidth - 2 * padding;\n const availableHeight = nodeHeight - 2 * padding;\n if (availableWidth < 10 || availableHeight < 10) {\n self.style(\"display\", \"none\");\n return;\n }\n let currentLabelFontSize = parseInt(self.style(\"font-size\"), 10);\n const minLabelFontSize = 8;\n const originalValueRelFontSize = 28;\n const valueScaleFactor = 0.6;\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n while (textNode.getComputedTextLength() > availableWidth && currentLabelFontSize > minLabelFontSize) {\n currentLabelFontSize--;\n self.style(\"font-size\", `${currentLabelFontSize}px`);\n }\n let prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n let combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) {\n currentLabelFontSize--;\n prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n if (prospectiveValueFontSize < minValueFontSize && currentLabelFontSize === minLabelFontSize) {\n break;\n }\n self.style(\"font-size\", `${currentLabelFontSize}px`);\n combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) {\n }\n }\n self.style(\"font-size\", `${currentLabelFontSize}px`);\n if (textNode.getComputedTextLength() > availableWidth || currentLabelFontSize < minLabelFontSize || availableHeight < currentLabelFontSize) {\n self.style(\"display\", \"none\");\n }\n });\n if (config.showValues !== false) {\n const leafValues = cell.append(\"text\").attr(\"class\", \"treemapValue\").attr(\"x\", (d) => (d.x1 - d.x0) / 2).attr(\"y\", function(d) {\n return (d.y1 - d.y0) / 2;\n }).attr(\"style\", (d) => {\n const labelStyles = \"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:\" + colorScaleLabel(d.data.name) + \";\";\n const styles = (0,_chunk_7RNWAQOT_mjs__WEBPACK_IMPORTED_MODULE_1__.styles2String)({ cssCompiledStyles: d.data.cssCompiledStyles });\n return labelStyles + styles.labelStyles.replace(\"color:\", \"fill:\");\n }).attr(\"clip-path\", (_d, i) => `url(#clip-${id}-${i})`).text((d) => d.value ? valueFormat(d.value) : \"\");\n leafValues.each(function(d) {\n const valueTextElement = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(this);\n const parentCellNode = this.parentNode;\n if (!parentCellNode) {\n valueTextElement.style(\"display\", \"none\");\n return;\n }\n const labelElement = (0,d3__WEBPACK_IMPORTED_MODULE_7__.select)(parentCellNode).select(\".treemapLabel\");\n if (labelElement.empty() || labelElement.style(\"display\") === \"none\") {\n valueTextElement.style(\"display\", \"none\");\n return;\n }\n const finalLabelFontSize = parseFloat(labelElement.style(\"font-size\"));\n const originalValueFontSize = 28;\n const valueScaleFactor = 0.6;\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n const actualValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor))\n );\n valueTextElement.style(\"font-size\", `${actualValueFontSize}px`);\n const labelCenterY = (d.y1 - d.y0) / 2;\n const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue;\n valueTextElement.attr(\"y\", valueTopActualY);\n const nodeWidth = d.x1 - d.x0;\n const nodeTotalHeight = d.y1 - d.y0;\n const cellBottomPadding = 4;\n const maxValueBottomY = nodeTotalHeight - cellBottomPadding;\n const availableWidthForValue = nodeWidth - 2 * 4;\n if (valueTextElement.node().getComputedTextLength() > availableWidthForValue || valueTopActualY + actualValueFontSize > maxValueBottomY || actualValueFontSize < minValueFontSize) {\n valueTextElement.style(\"display\", \"none\");\n } else {\n valueTextElement.style(\"display\", null);\n }\n });\n }\n const diagramPadding = config.diagramPadding ?? 8;\n (0,_chunk_NRVI72HA_mjs__WEBPACK_IMPORTED_MODULE_0__.setupViewPortForSVG)(svg, diagramPadding, \"flowchart\", config?.useMaxWidth || false);\n}, \"draw\");\nvar getClasses = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(function(_text, diagramObj) {\n return diagramObj.db.getClasses();\n}, \"getClasses\");\nvar renderer = { draw, getClasses };\n\n// src/diagrams/treemap/styles.ts\nvar defaultTreemapStyleOptions = {\n sectionStrokeColor: \"black\",\n sectionStrokeWidth: \"1\",\n sectionFillColor: \"#efefef\",\n leafStrokeColor: \"black\",\n leafStrokeWidth: \"1\",\n leafFillColor: \"#efefef\",\n labelColor: \"black\",\n labelFontSize: \"12px\",\n valueFontSize: \"10px\",\n valueColor: \"black\",\n titleColor: \"black\",\n titleFontSize: \"14px\"\n};\nvar getStyles = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_5__.__name)(({\n treemap: treemap2\n} = {}) => {\n const options = (0,_chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_3__.cleanAndMerge)(defaultTreemapStyleOptions, treemap2);\n return `\n .treemapNode.section {\n stroke: ${options.sectionStrokeColor};\n stroke-width: ${options.sectionStrokeWidth};\n fill: ${options.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${options.leafStrokeColor};\n stroke-width: ${options.leafStrokeWidth};\n fill: ${options.leafFillColor};\n }\n .treemapLabel {\n fill: ${options.labelColor};\n font-size: ${options.labelFontSize};\n }\n .treemapValue {\n fill: ${options.valueColor};\n font-size: ${options.valueFontSize};\n }\n .treemapTitle {\n fill: ${options.titleColor};\n font-size: ${options.titleFontSize};\n }\n `;\n}, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/treemap/diagram.ts\nvar diagram = {\n parser,\n get db() {\n return new TreeMapDB();\n },\n renderer,\n styles: styles_default\n};\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/diagram-4IRLE6MV.mjs?\n}");
39
39
 
40
40
  /***/ })
41
41
 
@@ -7,25 +7,25 @@
7
7
  * or disable the default devtool with "devtool: false".
8
8
  * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
9
  */
10
- (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-ZTM2IBQH_mjs"],{
10
+ (self["webpackChunk_mdts_frontend"] = self["webpackChunk_mdts_frontend"] || []).push([["vendors-node_modules_mermaid_dist_chunks_mermaid_core_diagram-RP2FKANI_mjs"],{
11
11
 
12
- /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs":
12
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs":
13
13
  /*!**************************************************************************!*\
14
- !*** ./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs ***!
14
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs ***!
15
15
  \**************************************************************************/
16
16
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
17
17
 
18
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ populateCommonDb: () => (/* binding */ populateCommonDb)\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\n\n// src/diagrams/common/populateCommonDb.ts\nfunction populateCommonDb(ast, db) {\n if (ast.accDescr) {\n db.setAccDescription?.(ast.accDescr);\n }\n if (ast.accTitle) {\n db.setAccTitle?.(ast.accTitle);\n }\n if (ast.title) {\n db.setDiagramTitle?.(ast.title);\n }\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(populateCommonDb, \"populateCommonDb\");\n\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.mjs?\n}");
18
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ populateCommonDb: () => (/* binding */ populateCommonDb)\n/* harmony export */ });\n/* harmony import */ var _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-VIW5F6AA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-VIW5F6AA.mjs\");\n\n\n// src/diagrams/common/populateCommonDb.ts\nfunction populateCommonDb(ast, db) {\n if (ast.accDescr) {\n db.setAccDescription?.(ast.accDescr);\n }\n if (ast.accTitle) {\n db.setAccTitle?.(ast.accTitle);\n }\n if (ast.title) {\n db.setDiagramTitle?.(ast.title);\n }\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_0__.__name)(populateCommonDb, \"populateCommonDb\");\n\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs?\n}");
19
19
 
20
20
  /***/ }),
21
21
 
22
- /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/diagram-ZTM2IBQH.mjs":
22
+ /***/ "./node_modules/mermaid/dist/chunks/mermaid.core/diagram-RP2FKANI.mjs":
23
23
  /*!****************************************************************************!*\
24
- !*** ./node_modules/mermaid/dist/chunks/mermaid.core/diagram-ZTM2IBQH.mjs ***!
24
+ !*** ./node_modules/mermaid/dist/chunks/mermaid.core/diagram-RP2FKANI.mjs ***!
25
25
  \****************************************************************************/
26
26
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
27
27
 
28
- 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_353BL4L5_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-353BL4L5.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-353BL4L5.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 _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mermaid-js/parser */ \"./node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs\");\n\n\n\n\n\n// src/diagrams/radar/db.ts\nvar defaultOptions = {\n showLegend: true,\n ticks: 5,\n max: null,\n min: 0,\n graticule: \"circle\"\n};\nvar defaultRadarData = {\n axes: [],\n curves: [],\n options: defaultOptions\n};\nvar data = structuredClone(defaultRadarData);\nvar DEFAULT_RADAR_CONFIG = _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.defaultConfig_default.radar;\nvar getConfig2 = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => {\n const config = (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)({\n ...DEFAULT_RADAR_CONFIG,\n ...(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)().radar\n });\n return config;\n}, \"getConfig\");\nvar getAxes = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => data.axes, \"getAxes\");\nvar getCurves = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => data.curves, \"getCurves\");\nvar getOptions = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => data.options, \"getOptions\");\nvar setAxes = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((axes) => {\n data.axes = axes.map((axis) => {\n return {\n name: axis.name,\n label: axis.label ?? axis.name\n };\n });\n}, \"setAxes\");\nvar setCurves = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((curves) => {\n data.curves = curves.map((curve) => {\n return {\n name: curve.name,\n label: curve.label ?? curve.name,\n entries: computeCurveEntries(curve.entries)\n };\n });\n}, \"setCurves\");\nvar computeCurveEntries = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((entries) => {\n if (entries[0].axis == void 0) {\n return entries.map((entry) => entry.value);\n }\n const axes = getAxes();\n if (axes.length === 0) {\n throw new Error(\"Axes must be populated before curves for reference entries\");\n }\n return axes.map((axis) => {\n const entry = entries.find((entry2) => entry2.axis?.$refText === axis.name);\n if (entry === void 0) {\n throw new Error(\"Missing entry for axis \" + axis.label);\n }\n return entry.value;\n });\n}, \"computeCurveEntries\");\nvar setOptions = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((options) => {\n const optionMap = options.reduce(\n (acc, option) => {\n acc[option.name] = option;\n return acc;\n },\n {}\n );\n data.options = {\n showLegend: optionMap.showLegend?.value ?? defaultOptions.showLegend,\n ticks: optionMap.ticks?.value ?? defaultOptions.ticks,\n max: optionMap.max?.value ?? defaultOptions.max,\n min: optionMap.min?.value ?? defaultOptions.min,\n graticule: optionMap.graticule?.value ?? defaultOptions.graticule\n };\n}, \"setOptions\");\nvar clear2 = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => {\n (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.clear)();\n data = structuredClone(defaultRadarData);\n}, \"clear\");\nvar db = {\n getAxes,\n getCurves,\n getOptions,\n setAxes,\n setCurves,\n setOptions,\n getConfig: getConfig2,\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};\n\n// src/diagrams/radar/parser.ts\n\nvar populate = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((ast) => {\n (0,_chunk_353BL4L5_mjs__WEBPACK_IMPORTED_MODULE_0__.populateCommonDb)(ast, db);\n const { axes, curves, options } = ast;\n db.setAxes(axes);\n db.setCurves(curves);\n db.setOptions(options);\n}, \"populate\");\nvar parser = {\n parse: /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(async (input) => {\n const ast = await (0,_mermaid_js_parser__WEBPACK_IMPORTED_MODULE_4__.parse)(\"radar\", input);\n _chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.log.debug(ast);\n populate(ast);\n }, \"parse\")\n};\n\n// src/diagrams/radar/renderer.ts\nvar draw = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((_text, id, _version, diagram2) => {\n const db2 = diagram2.db;\n const axes = db2.getAxes();\n const curves = db2.getCurves();\n const options = db2.getOptions();\n const config = db2.getConfig();\n const title = db2.getDiagramTitle();\n const svg = (0,_chunk_P3VETL53_mjs__WEBPACK_IMPORTED_MODULE_2__.selectSvgElement)(id);\n const g = drawFrame(svg, config);\n const maxValue = options.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries)));\n const minValue = options.min;\n const radius = Math.min(config.width, config.height) / 2;\n drawGraticule(g, axes, radius, options.ticks, options.graticule);\n drawAxes(g, axes, radius, config);\n drawCurves(g, axes, curves, minValue, maxValue, options.graticule, config);\n drawLegend(g, curves, options.showLegend, config);\n g.append(\"text\").attr(\"class\", \"radarTitle\").text(title).attr(\"x\", 0).attr(\"y\", -config.height / 2 - config.marginTop);\n}, \"draw\");\nvar drawFrame = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((svg, config) => {\n const totalWidth = config.width + config.marginLeft + config.marginRight;\n const totalHeight = config.height + config.marginTop + config.marginBottom;\n const center = {\n x: config.marginLeft + config.width / 2,\n y: config.marginTop + config.height / 2\n };\n svg.attr(\"viewbox\", `0 0 ${totalWidth} ${totalHeight}`).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n return svg.append(\"g\").attr(\"transform\", `translate(${center.x}, ${center.y})`);\n}, \"drawFrame\");\nvar drawGraticule = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((g, axes, radius, ticks, graticule) => {\n if (graticule === \"circle\") {\n for (let i = 0; i < ticks; i++) {\n const r = radius * (i + 1) / ticks;\n g.append(\"circle\").attr(\"r\", r).attr(\"class\", \"radarGraticule\");\n }\n } else if (graticule === \"polygon\") {\n const numAxes = axes.length;\n for (let i = 0; i < ticks; i++) {\n const r = radius * (i + 1) / ticks;\n const points = axes.map((_, j) => {\n const angle = 2 * j * Math.PI / numAxes - Math.PI / 2;\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return `${x},${y}`;\n }).join(\" \");\n g.append(\"polygon\").attr(\"points\", points).attr(\"class\", \"radarGraticule\");\n }\n }\n}, \"drawGraticule\");\nvar drawAxes = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((g, axes, radius, config) => {\n const numAxes = axes.length;\n for (let i = 0; i < numAxes; i++) {\n const label = axes[i].label;\n const angle = 2 * i * Math.PI / numAxes - Math.PI / 2;\n g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", 0).attr(\"x2\", radius * config.axisScaleFactor * Math.cos(angle)).attr(\"y2\", radius * config.axisScaleFactor * Math.sin(angle)).attr(\"class\", \"radarAxisLine\");\n g.append(\"text\").text(label).attr(\"x\", radius * config.axisLabelFactor * Math.cos(angle)).attr(\"y\", radius * config.axisLabelFactor * Math.sin(angle)).attr(\"class\", \"radarAxisLabel\");\n }\n}, \"drawAxes\");\nfunction drawCurves(g, axes, curves, minValue, maxValue, graticule, config) {\n const numAxes = axes.length;\n const radius = Math.min(config.width, config.height) / 2;\n curves.forEach((curve, index) => {\n if (curve.entries.length !== numAxes) {\n return;\n }\n const points = curve.entries.map((entry, i) => {\n const angle = 2 * Math.PI * i / numAxes - Math.PI / 2;\n const r = relativeRadius(entry, minValue, maxValue, radius);\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return { x, y };\n });\n if (graticule === \"circle\") {\n g.append(\"path\").attr(\"d\", closedRoundCurve(points, config.curveTension)).attr(\"class\", `radarCurve-${index}`);\n } else if (graticule === \"polygon\") {\n g.append(\"polygon\").attr(\"points\", points.map((p) => `${p.x},${p.y}`).join(\" \")).attr(\"class\", `radarCurve-${index}`);\n }\n });\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(drawCurves, \"drawCurves\");\nfunction relativeRadius(value, minValue, maxValue, radius) {\n const clippedValue = Math.min(Math.max(value, minValue), maxValue);\n return radius * (clippedValue - minValue) / (maxValue - minValue);\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(relativeRadius, \"relativeRadius\");\nfunction closedRoundCurve(points, tension) {\n const numPoints = points.length;\n let d = `M${points[0].x},${points[0].y}`;\n for (let i = 0; i < numPoints; i++) {\n const p0 = points[(i - 1 + numPoints) % numPoints];\n const p1 = points[i];\n const p2 = points[(i + 1) % numPoints];\n const p3 = points[(i + 2) % numPoints];\n const cp1 = {\n x: p1.x + (p2.x - p0.x) * tension,\n y: p1.y + (p2.y - p0.y) * tension\n };\n const cp2 = {\n x: p2.x - (p3.x - p1.x) * tension,\n y: p2.y - (p3.y - p1.y) * tension\n };\n d += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p2.x},${p2.y}`;\n }\n return `${d} Z`;\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(closedRoundCurve, \"closedRoundCurve\");\nfunction drawLegend(g, curves, showLegend, config) {\n if (!showLegend) {\n return;\n }\n const legendX = (config.width / 2 + config.marginRight) * 3 / 4;\n const legendY = -(config.height / 2 + config.marginTop) * 3 / 4;\n const lineHeight = 20;\n curves.forEach((curve, index) => {\n const itemGroup = g.append(\"g\").attr(\"transform\", `translate(${legendX}, ${legendY + index * lineHeight})`);\n itemGroup.append(\"rect\").attr(\"width\", 12).attr(\"height\", 12).attr(\"class\", `radarLegendBox-${index}`);\n itemGroup.append(\"text\").attr(\"x\", 16).attr(\"y\", 0).attr(\"class\", \"radarLegendText\").text(curve.label);\n });\n}\n(0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(drawLegend, \"drawLegend\");\nvar renderer = { draw };\n\n// src/diagrams/radar/styles.ts\nvar genIndexStyles = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((themeVariables, radarOptions) => {\n let sections = \"\";\n for (let i = 0; i < themeVariables.THEME_COLOR_LIMIT; i++) {\n const indexColor = themeVariables[`cScale${i}`];\n sections += `\n\t\t.radarCurve-${i} {\n\t\t\tcolor: ${indexColor};\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t\tstroke-width: ${radarOptions.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${i} {\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t}\n\t\t`;\n }\n return sections;\n}, \"genIndexStyles\");\nvar buildRadarStyleOptions = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((radar) => {\n const defaultThemeVariables = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getThemeVariables)();\n const currentConfig = (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)();\n const themeVariables = (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)(defaultThemeVariables, currentConfig.themeVariables);\n const radarOptions = (0,_chunk_55PJQP7W_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)(themeVariables.radar, radar);\n return { themeVariables, radarOptions };\n}, \"buildRadarStyleOptions\");\nvar styles = /* @__PURE__ */ (0,_chunk_3XYRH5AP_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(({ radar } = {}) => {\n const { themeVariables, radarOptions } = buildRadarStyleOptions(radar);\n return `\n\t.radarTitle {\n\t\tfont-size: ${themeVariables.fontSize};\n\t\tcolor: ${themeVariables.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${radarOptions.axisColor};\n\t\tstroke-width: ${radarOptions.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${radarOptions.axisLabelFontSize}px;\n\t\tcolor: ${radarOptions.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${radarOptions.graticuleColor};\n\t\tfill-opacity: ${radarOptions.graticuleOpacity};\n\t\tstroke: ${radarOptions.graticuleColor};\n\t\tstroke-width: ${radarOptions.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${radarOptions.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${genIndexStyles(themeVariables, radarOptions)}\n\t`;\n}, \"styles\");\n\n// src/diagrams/radar/diagram.ts\nvar diagram = {\n parser,\n db,\n renderer,\n styles\n};\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/diagram-ZTM2IBQH.mjs?\n}");
28
+ 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_ANTBXLJU_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-ANTBXLJU.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-ANTBXLJU.mjs\");\n/* harmony import */ var _chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-U37J5Y7L.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-U37J5Y7L.mjs\");\n/* harmony import */ var _chunk_T57MJCP2_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-T57MJCP2.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-T57MJCP2.mjs\");\n/* harmony import */ var _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-VIW5F6AA.mjs */ \"./node_modules/mermaid/dist/chunks/mermaid.core/chunk-VIW5F6AA.mjs\");\n/* harmony import */ var _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mermaid-js/parser */ \"./node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs\");\n\n\n\n\n\n// src/diagrams/radar/db.ts\nvar defaultOptions = {\n showLegend: true,\n ticks: 5,\n max: null,\n min: 0,\n graticule: \"circle\"\n};\nvar defaultRadarData = {\n axes: [],\n curves: [],\n options: defaultOptions\n};\nvar data = structuredClone(defaultRadarData);\nvar DEFAULT_RADAR_CONFIG = _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.defaultConfig_default.radar;\nvar getConfig2 = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => {\n const config = (0,_chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)({\n ...DEFAULT_RADAR_CONFIG,\n ...(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)().radar\n });\n return config;\n}, \"getConfig\");\nvar getAxes = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => data.axes, \"getAxes\");\nvar getCurves = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => data.curves, \"getCurves\");\nvar getOptions = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => data.options, \"getOptions\");\nvar setAxes = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((axes) => {\n data.axes = axes.map((axis) => {\n return {\n name: axis.name,\n label: axis.label ?? axis.name\n };\n });\n}, \"setAxes\");\nvar setCurves = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((curves) => {\n data.curves = curves.map((curve) => {\n return {\n name: curve.name,\n label: curve.label ?? curve.name,\n entries: computeCurveEntries(curve.entries)\n };\n });\n}, \"setCurves\");\nvar computeCurveEntries = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((entries) => {\n if (entries[0].axis == void 0) {\n return entries.map((entry) => entry.value);\n }\n const axes = getAxes();\n if (axes.length === 0) {\n throw new Error(\"Axes must be populated before curves for reference entries\");\n }\n return axes.map((axis) => {\n const entry = entries.find((entry2) => entry2.axis?.$refText === axis.name);\n if (entry === void 0) {\n throw new Error(\"Missing entry for axis \" + axis.label);\n }\n return entry.value;\n });\n}, \"computeCurveEntries\");\nvar setOptions = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((options) => {\n const optionMap = options.reduce(\n (acc, option) => {\n acc[option.name] = option;\n return acc;\n },\n {}\n );\n data.options = {\n showLegend: optionMap.showLegend?.value ?? defaultOptions.showLegend,\n ticks: optionMap.ticks?.value ?? defaultOptions.ticks,\n max: optionMap.max?.value ?? defaultOptions.max,\n min: optionMap.min?.value ?? defaultOptions.min,\n graticule: optionMap.graticule?.value ?? defaultOptions.graticule\n };\n}, \"setOptions\");\nvar clear2 = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(() => {\n (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.clear)();\n data = structuredClone(defaultRadarData);\n}, \"clear\");\nvar db = {\n getAxes,\n getCurves,\n getOptions,\n setAxes,\n setCurves,\n setOptions,\n getConfig: getConfig2,\n clear: clear2,\n setAccTitle: _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.setAccTitle,\n getAccTitle: _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.getAccTitle,\n setDiagramTitle: _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.setDiagramTitle,\n getDiagramTitle: _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.getDiagramTitle,\n getAccDescription: _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.getAccDescription,\n setAccDescription: _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.setAccDescription\n};\n\n// src/diagrams/radar/parser.ts\n\nvar populate = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((ast) => {\n (0,_chunk_ANTBXLJU_mjs__WEBPACK_IMPORTED_MODULE_0__.populateCommonDb)(ast, db);\n const { axes, curves, options } = ast;\n db.setAxes(axes);\n db.setCurves(curves);\n db.setOptions(options);\n}, \"populate\");\nvar parser = {\n parse: /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(async (input) => {\n const ast = await (0,_mermaid_js_parser__WEBPACK_IMPORTED_MODULE_4__.parse)(\"radar\", input);\n _chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.log.debug(ast);\n populate(ast);\n }, \"parse\")\n};\n\n// src/diagrams/radar/renderer.ts\nvar draw = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((_text, id, _version, diagram2) => {\n const db2 = diagram2.db;\n const axes = db2.getAxes();\n const curves = db2.getCurves();\n const options = db2.getOptions();\n const config = db2.getConfig();\n const title = db2.getDiagramTitle();\n const svg = (0,_chunk_T57MJCP2_mjs__WEBPACK_IMPORTED_MODULE_2__.selectSvgElement)(id);\n const g = drawFrame(svg, config);\n const maxValue = options.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries)));\n const minValue = options.min;\n const radius = Math.min(config.width, config.height) / 2;\n drawGraticule(g, axes, radius, options.ticks, options.graticule);\n drawAxes(g, axes, radius, config);\n drawCurves(g, axes, curves, minValue, maxValue, options.graticule, config);\n drawLegend(g, curves, options.showLegend, config);\n g.append(\"text\").attr(\"class\", \"radarTitle\").text(title).attr(\"x\", 0).attr(\"y\", -config.height / 2 - config.marginTop);\n}, \"draw\");\nvar drawFrame = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((svg, config) => {\n const totalWidth = config.width + config.marginLeft + config.marginRight;\n const totalHeight = config.height + config.marginTop + config.marginBottom;\n const center = {\n x: config.marginLeft + config.width / 2,\n y: config.marginTop + config.height / 2\n };\n svg.attr(\"viewbox\", `0 0 ${totalWidth} ${totalHeight}`).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n return svg.append(\"g\").attr(\"transform\", `translate(${center.x}, ${center.y})`);\n}, \"drawFrame\");\nvar drawGraticule = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((g, axes, radius, ticks, graticule) => {\n if (graticule === \"circle\") {\n for (let i = 0; i < ticks; i++) {\n const r = radius * (i + 1) / ticks;\n g.append(\"circle\").attr(\"r\", r).attr(\"class\", \"radarGraticule\");\n }\n } else if (graticule === \"polygon\") {\n const numAxes = axes.length;\n for (let i = 0; i < ticks; i++) {\n const r = radius * (i + 1) / ticks;\n const points = axes.map((_, j) => {\n const angle = 2 * j * Math.PI / numAxes - Math.PI / 2;\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return `${x},${y}`;\n }).join(\" \");\n g.append(\"polygon\").attr(\"points\", points).attr(\"class\", \"radarGraticule\");\n }\n }\n}, \"drawGraticule\");\nvar drawAxes = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((g, axes, radius, config) => {\n const numAxes = axes.length;\n for (let i = 0; i < numAxes; i++) {\n const label = axes[i].label;\n const angle = 2 * i * Math.PI / numAxes - Math.PI / 2;\n g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", 0).attr(\"x2\", radius * config.axisScaleFactor * Math.cos(angle)).attr(\"y2\", radius * config.axisScaleFactor * Math.sin(angle)).attr(\"class\", \"radarAxisLine\");\n g.append(\"text\").text(label).attr(\"x\", radius * config.axisLabelFactor * Math.cos(angle)).attr(\"y\", radius * config.axisLabelFactor * Math.sin(angle)).attr(\"class\", \"radarAxisLabel\");\n }\n}, \"drawAxes\");\nfunction drawCurves(g, axes, curves, minValue, maxValue, graticule, config) {\n const numAxes = axes.length;\n const radius = Math.min(config.width, config.height) / 2;\n curves.forEach((curve, index) => {\n if (curve.entries.length !== numAxes) {\n return;\n }\n const points = curve.entries.map((entry, i) => {\n const angle = 2 * Math.PI * i / numAxes - Math.PI / 2;\n const r = relativeRadius(entry, minValue, maxValue, radius);\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return { x, y };\n });\n if (graticule === \"circle\") {\n g.append(\"path\").attr(\"d\", closedRoundCurve(points, config.curveTension)).attr(\"class\", `radarCurve-${index}`);\n } else if (graticule === \"polygon\") {\n g.append(\"polygon\").attr(\"points\", points.map((p) => `${p.x},${p.y}`).join(\" \")).attr(\"class\", `radarCurve-${index}`);\n }\n });\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(drawCurves, \"drawCurves\");\nfunction relativeRadius(value, minValue, maxValue, radius) {\n const clippedValue = Math.min(Math.max(value, minValue), maxValue);\n return radius * (clippedValue - minValue) / (maxValue - minValue);\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(relativeRadius, \"relativeRadius\");\nfunction closedRoundCurve(points, tension) {\n const numPoints = points.length;\n let d = `M${points[0].x},${points[0].y}`;\n for (let i = 0; i < numPoints; i++) {\n const p0 = points[(i - 1 + numPoints) % numPoints];\n const p1 = points[i];\n const p2 = points[(i + 1) % numPoints];\n const p3 = points[(i + 2) % numPoints];\n const cp1 = {\n x: p1.x + (p2.x - p0.x) * tension,\n y: p1.y + (p2.y - p0.y) * tension\n };\n const cp2 = {\n x: p2.x - (p3.x - p1.x) * tension,\n y: p2.y - (p3.y - p1.y) * tension\n };\n d += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p2.x},${p2.y}`;\n }\n return `${d} Z`;\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(closedRoundCurve, \"closedRoundCurve\");\nfunction drawLegend(g, curves, showLegend, config) {\n if (!showLegend) {\n return;\n }\n const legendX = (config.width / 2 + config.marginRight) * 3 / 4;\n const legendY = -(config.height / 2 + config.marginTop) * 3 / 4;\n const lineHeight = 20;\n curves.forEach((curve, index) => {\n const itemGroup = g.append(\"g\").attr(\"transform\", `translate(${legendX}, ${legendY + index * lineHeight})`);\n itemGroup.append(\"rect\").attr(\"width\", 12).attr(\"height\", 12).attr(\"class\", `radarLegendBox-${index}`);\n itemGroup.append(\"text\").attr(\"x\", 16).attr(\"y\", 0).attr(\"class\", \"radarLegendText\").text(curve.label);\n });\n}\n(0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(drawLegend, \"drawLegend\");\nvar renderer = { draw };\n\n// src/diagrams/radar/styles.ts\nvar genIndexStyles = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((themeVariables, radarOptions) => {\n let sections = \"\";\n for (let i = 0; i < themeVariables.THEME_COLOR_LIMIT; i++) {\n const indexColor = themeVariables[`cScale${i}`];\n sections += `\n\t\t.radarCurve-${i} {\n\t\t\tcolor: ${indexColor};\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t\tstroke-width: ${radarOptions.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${i} {\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t}\n\t\t`;\n }\n return sections;\n}, \"genIndexStyles\");\nvar buildRadarStyleOptions = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)((radar) => {\n const defaultThemeVariables = (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.getThemeVariables)();\n const currentConfig = (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.getConfig)();\n const themeVariables = (0,_chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)(defaultThemeVariables, currentConfig.themeVariables);\n const radarOptions = (0,_chunk_U37J5Y7L_mjs__WEBPACK_IMPORTED_MODULE_1__.cleanAndMerge)(themeVariables.radar, radar);\n return { themeVariables, radarOptions };\n}, \"buildRadarStyleOptions\");\nvar styles = /* @__PURE__ */ (0,_chunk_VIW5F6AA_mjs__WEBPACK_IMPORTED_MODULE_3__.__name)(({ radar } = {}) => {\n const { themeVariables, radarOptions } = buildRadarStyleOptions(radar);\n return `\n\t.radarTitle {\n\t\tfont-size: ${themeVariables.fontSize};\n\t\tcolor: ${themeVariables.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${radarOptions.axisColor};\n\t\tstroke-width: ${radarOptions.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${radarOptions.axisLabelFontSize}px;\n\t\tcolor: ${radarOptions.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${radarOptions.graticuleColor};\n\t\tfill-opacity: ${radarOptions.graticuleOpacity};\n\t\tstroke: ${radarOptions.graticuleColor};\n\t\tstroke-width: ${radarOptions.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${radarOptions.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${genIndexStyles(themeVariables, radarOptions)}\n\t`;\n}, \"styles\");\n\n// src/diagrams/radar/diagram.ts\nvar diagram = {\n parser,\n db,\n renderer,\n styles\n};\n\n\n\n//# sourceURL=webpack://@mdts/frontend/./node_modules/mermaid/dist/chunks/mermaid.core/diagram-RP2FKANI.mjs?\n}");
29
29
 
30
30
  /***/ })
31
31