{ "version": 3, "sources": ["../../node_modules/dagre-d3-es/src/graphlib/json.js", "../../node_modules/mermaid/dist/index-01f381cb.js"], "sourcesContent": ["import * as _ from 'lodash-es';\nimport { Graph } from './graph.js';\n\nexport { write, read };\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound(),\n },\n nodes: writeNodes(g),\n edges: writeEdges(g),\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function (v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function (e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function (entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function (entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n", "import { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlibJson from \"dagre-d3-es/src/graphlib/json.js\";\nimport { c as createLabel, g as getSubGraphTitleMargins, i as intersectRect, a as insertMarkers, b as clear$2, d as clear$3, u as updateNodeBounds, s as setNodeElem, e as insertNode, f as insertEdgeLabel, p as positionNode, h as insertEdge, j as positionEdgeLabel } from \"./edges-066a5561.js\";\nimport { l as log, c as getConfig, m as evaluate } from \"./mermaid-6dc72991.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { a as createText } from \"./createText-ca0c5216.js\";\nimport { select } from \"d3\";\nlet clusterDb = {};\nlet descendants = {};\nlet parents = {};\nconst clear$1 = () => {\n descendants = {};\n parents = {};\n clusterDb = {};\n};\nconst isDescendant = (id, ancestorId) => {\n log.trace(\"In isDescendant\", ancestorId, \" \", id, \" = \", descendants[ancestorId].includes(id));\n if (descendants[ancestorId].includes(id)) {\n return true;\n }\n return false;\n};\nconst edgeInCluster = (edge, clusterId) => {\n log.info(\"Descendants of \", clusterId, \" is \", descendants[clusterId]);\n log.info(\"Edge is \", edge);\n if (edge.v === clusterId) {\n return false;\n }\n if (edge.w === clusterId) {\n return false;\n }\n if (!descendants[clusterId]) {\n log.debug(\"Tilt, \", clusterId, \",not in descendants\");\n return false;\n }\n return descendants[clusterId].includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || descendants[clusterId].includes(edge.w);\n};\nconst copy = (clusterId, graph, newGraph, rootId) => {\n 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 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 log.info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n if (clusterId !== rootId && node !== clusterId) {\n log.debug(\"Setting parent\", node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n 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 log.debug(\"Copying Edges\", edges);\n edges.forEach((edge) => {\n log.info(\"Edge\", edge);\n const data2 = graph.edge(edge.v, edge.w, edge.name);\n log.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n log.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n log.info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n 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 log.error(e);\n }\n });\n }\n log.debug(\"Removing node\", node);\n graph.removeNode(node);\n });\n};\nconst extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents[child] = id;\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n};\nconst findNonClusterChild = (id, graph) => {\n log.trace(\"Searching\", id);\n const children = graph.children(id);\n log.trace(\"Searching children of id \", id, children);\n if (children.length < 1) {\n log.trace(\"This is a valid node\", id);\n return id;\n }\n for (const child of children) {\n const _id = findNonClusterChild(child, graph);\n if (_id) {\n log.trace(\"Found replacement for\", id, \" => \", _id);\n return _id;\n }\n }\n};\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\nconst adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug(\"Opting out, no graph \");\n return;\n } else {\n log.debug(\"Opting in, graph \");\n }\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n \"Cluster identified\",\n id,\n \" Replacement id in edges: \",\n findNonClusterChild(id, graph)\n );\n descendants[id] = extractDescendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), 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 log.debug(\"Cluster identified\", id, descendants);\n edges.forEach((edge) => {\n if (edge.v !== id && edge.w !== id) {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n log.warn(\"Descendants of XXX \", id, \": \", descendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug(\"Not a cluster \", id, descendants);\n }\n });\n for (let id of Object.keys(clusterDb)) {\n const nonClusterChild = clusterDb[id].id;\n const parent = graph.parent(nonClusterChild);\n if (parent !== id && clusterDb[parent] && !clusterDb[parent].externalConnections) {\n clusterDb[id].id = parent;\n }\n }\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n log.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb[e.v],\n \" --- \",\n clusterDb[e.w]\n );\n if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) {\n log.warn(\"Fixing and trixing link to self - removing XXX\", e.v, e.w, e.name);\n log.warn(\"Fixing and trixing - 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 const specialId = e.w + \"---\" + e.v;\n graph.setNode(specialId, {\n domId: specialId,\n id: specialId,\n labelStyle: \"\",\n labelText: edge.label,\n padding: 0,\n shape: \"labelRect\",\n style: \"\"\n });\n const edge1 = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge2.label = \"\";\n edge1.fromCluster = e.v;\n edge2.toCluster = e.v;\n graph.setEdge(v, specialId, edge1, e.name + \"-cyclic-special\");\n graph.setEdge(specialId, w, edge2, e.name + \"-cyclic-special\");\n } else if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn(\"Fixing and trixing - 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[parent].externalConnections = true;\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n const parent = graph.parent(w);\n clusterDb[parent].externalConnections = true;\n edge.toCluster = e.w;\n }\n log.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn(\"Adjusted Graph\", graphlibJson.write(graph));\n extractor(graph, 0);\n log.trace(clusterDb);\n};\nconst extractor = (graph, depth) => {\n log.warn(\"extractor - \", depth, graphlibJson.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n 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 log.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n log.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\n log.debug(\n \"Extracting node\",\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children(\"D\"),\n \" Depth \",\n depth\n );\n if (!clusterDb[node]) {\n log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb[node].externalConnections && // !graph.parent(node) &&\n graph.children(node) && graph.children(node).length > 0) {\n 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[node] && clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn(\"Fixing dir\", clusterDb[node].clusterData.dir, dir);\n }\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n log.warn(\"Old graph before copy\", graphlibJson.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n log.warn(\"New graph after copy node: (\", node, \")\", graphlibJson.write(clusterGraph));\n log.debug(\"Old graph after copy\", graphlibJson.write(graph));\n } else {\n log.warn(\n \"Cluster ** \",\n node,\n \" **not meeting the criteria !externalConnections:\",\n !clusterDb[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 log.debug(clusterDb);\n }\n }\n nodes = graph.nodes();\n log.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n log.warn(\" Now next level\", node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\nconst sorter = (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};\nconst sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\nconst rect = (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig();\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster\" + (node.class ? \" \" + node.class : \"\")).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const text = node.labelType === \"markdown\" ? createText(label, node.labelText, { style: node.labelStyle, useHtmlLabels }) : label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2 - node.padding / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n log.trace(\"Data \", node, JSON.stringify(node));\n rect2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - width / 2).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width).attr(\"height\", node.height + padding);\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n if (useHtmlLabels) {\n label.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n } else {\n label.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n }\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst noteGroup = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n const siteConfig = getConfig();\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const innerRect = shapeSvg.append(\"rect\");\n const text = label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n rect2.attr(\"class\", \"outer\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width + padding).attr(\"height\", node.height + padding);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding + bbox.height - 1).attr(\"width\", width + padding).attr(\"height\", node.height + padding - bbox.height - 3);\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 - node.padding / 3 + (evaluate(siteConfig.flowchart.htmlLabels) ? 5 : 3) + subGraphTitleTopMargin})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst divider = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"class\", \"divider\").attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding);\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\nlet clusterElems = {};\nconst insertCluster = (elem, node) => {\n log.trace(\"Inserting cluster\");\n const shape = node.shape || \"rect\";\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nconst clear = () => {\n clusterElems = {};\n};\nconst recursiveRender = async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n log.info(\"Graph in recursive render: XXX\", graphlibJson.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n log.info(\"No nodes found for\", graph);\n } else {\n log.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace(\"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 log.info(\"Setting data for cluster XXX (\", v, \") \", data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n log.info(\"Cluster identified\", v, node.width, graph.node(v));\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 updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info(\"Node bounds (abc123)\", v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n log.warn(\"Recursive render complete \", newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n log.info(\"Cluster - the non recursive path XXX\", v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n } else {\n log.info(\"Node - the non recursive path\", v, node.id, node);\n await insertNode(nodes, graph.node(v), dir);\n }\n }\n })\n );\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n log.info(\"Fix\", clusterDb, \"ids:\", e.v, e.w, \"Translating: \", clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n graph.edges().forEach(function(e) {\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n });\n log.info(\"#############################################\");\n log.info(\"### Layout ###\");\n log.info(\"#############################################\");\n log.info(graph);\n layout(graph);\n log.info(\"Graph after layout:\", graphlibJson.write(graph));\n let diff = 0;\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n sortNodesByHierarchy(graph).forEach(function(v) {\n const node = graph.node(v);\n log.info(\"Position \" + v + \": \" + JSON.stringify(graph.node(v)));\n log.info(\n \"Position \" + v + \": (\" + node.x,\n \",\" + node.y,\n \") width: \",\n node.width,\n \" height: \",\n node.height\n );\n if (node && node.clusterNode) {\n node.y += subGraphTitleTotalMargin;\n positionNode(node);\n } else {\n if (graph.children(v).length > 0) {\n node.height += subGraphTitleTotalMargin;\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n node.y += subGraphTitleTotalMargin / 2;\n positionNode(node);\n }\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n edge.points.forEach((point) => point.y += subGraphTitleTotalMargin / 2);\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramType, graph, id);\n positionEdgeLabel(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === \"group\") {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\nconst render = async (elem, graph, markers, diagramType, id) => {\n insertMarkers(elem, markers, diagramType, id);\n clear$2();\n clear$3();\n clear();\n clear$1();\n log.warn(\"Graph at first:\", JSON.stringify(graphlibJson.write(graph)));\n adjustClustersAndEdges(graph);\n log.warn(\"Graph after:\", JSON.stringify(graphlibJson.write(graph)));\n const siteConfig = getConfig();\n await recursiveRender(elem, graph, diagramType, id, void 0, siteConfig);\n};\nexport {\n render as r\n};\n"], "mappings": "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", "names": ["write", "g", "json", "writeNodes", "writeEdges", "isUndefined_default", "clone_default", "map_default", "v", "nodeValue", "parent", "node", "e", "edgeValue", "edge", "clusterDb", "descendants", "parents", "clear$1", "isDescendant", "id", "ancestorId", "log$1", "edgeInCluster", "edge", "clusterId", "copy", "graph", "newGraph", "rootId", "nodes", "node", "data", "edges", "data2", "e", "extractDescendants", "children", "res", "child", "findNonClusterChild", "_id", "getAnchorId", "adjustClustersAndEdges", "depth", "d1", "d2", "nonClusterChild", "parent", "v", "w", "specialId", "edge1", "edge2", "write", "extractor", "hasChildren", "dir", "clusterGraph", "Graph", "sorter", "result", "sorted", "sortNodesByHierarchy", "rect", "siteConfig", "getConfig", "shapeSvg", "rect2", "useHtmlLabels", "evaluate", "label", "text", "createText", "createLabel$1", "bbox", "div", "dv", "select_default", "padding", "halfPadding", "width", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "rectBox", "point", "intersectRect$1", "noteGroup", "roundedWithTitle", "innerRect", "divider", "shapes", "clusterElems", "insertCluster", "elem", "shape", "clear", "recursiveRender", "_elem", "diagramType", "parentCluster", "clusters", "edgePaths", "edgeLabels", "o", "newEl", "updateNodeBounds", "setNodeElem", "insertNode", "insertEdgeLabel", "layout", "diff", "subGraphTitleTotalMargin", "positionNode", "paths", "insertEdge", "positionEdgeLabel", "n", "render", "markers", "insertMarkers$1"] }