{"version":3,"file":"12-a72eac494ce65a7ee317.js","mappings":"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","sources":["webpack:///./node_modules/lodash-es/clone.js","webpack:///./node_modules/dagre-d3-es/src/graphlib/json.js","webpack:///./node_modules/mermaid/dist/chunks/mermaid.core/dagre-4EVJKHTY.mjs"],"sourcesContent":["import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","import * 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 {\n clear as clear2,\n insertEdge,\n insertEdgeLabel,\n markers_default,\n positionEdgeLabel\n} from \"./chunk-66SQ7PYY.mjs\";\nimport {\n clear,\n clear2 as clear3,\n insertCluster,\n insertNode,\n positionNode,\n setNodeElem,\n updateNodeBounds\n} from \"./chunk-7NZE2EM7.mjs\";\nimport \"./chunk-OPO4IU42.mjs\";\nimport \"./chunk-3JNJP5BE.mjs\";\nimport {\n getSubGraphTitleMargins\n} from \"./chunk-3X56UNUX.mjs\";\nimport \"./chunk-6JOS74DS.mjs\";\nimport \"./chunk-7DKRZKHE.mjs\";\nimport {\n __name,\n getConfig2 as getConfig,\n log\n} from \"./chunk-6DBFFHIP.mjs\";\n\n// src/rendering-util/layout-algorithms/dagre/index.js\nimport { layout as dagreLayout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlibJson2 from \"dagre-d3-es/src/graphlib/json.js\";\nimport * as graphlib2 from \"dagre-d3-es/src/graphlib/index.js\";\n\n// src/rendering-util/layout-algorithms/dagre/mermaid-graphlib.js\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport * as graphlibJson from \"dagre-d3-es/src/graphlib/json.js\";\nvar clusterDb = /* @__PURE__ */ new Map();\nvar descendants = /* @__PURE__ */ new Map();\nvar parents = /* @__PURE__ */ new Map();\nvar clear4 = /* @__PURE__ */ __name(() => {\n descendants.clear();\n parents.clear();\n clusterDb.clear();\n}, \"clear\");\nvar isDescendant = /* @__PURE__ */ __name((id, ancestorId) => {\n const ancestorDescendants = descendants.get(ancestorId) || [];\n log.trace(\"In isDescendant\", ancestorId, \" \", id, \" = \", ancestorDescendants.includes(id));\n return ancestorDescendants.includes(id);\n}, \"isDescendant\");\nvar edgeInCluster = /* @__PURE__ */ __name((edge, clusterId) => {\n const clusterDescendants = descendants.get(clusterId) || [];\n log.info(\"Descendants of \", clusterId, \" is \", clusterDescendants);\n log.info(\"Edge is \", edge);\n if (edge.v === clusterId || edge.w === clusterId) {\n return false;\n }\n if (!clusterDescendants) {\n 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__ */ __name((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}, \"copy\");\nvar extractDescendants = /* @__PURE__ */ __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__ */ __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__ */ __name((id, graph, clusterId) => {\n const children = graph.children(id);\n 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__ */ __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__ */ __name((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, 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 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 log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n log.warn(\"Descendants of XXX \", id, \": \", descendants.get(id));\n clusterDb.get(id).externalConnections = true;\n }\n });\n } else {\n 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 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.get(e.v),\n \" --- \",\n clusterDb.get(e.w)\n );\n if (clusterDb.get(e.v) || clusterDb.get(e.w)) {\n 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 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}, \"adjustClustersAndEdges\");\nvar extractor = /* @__PURE__ */ __name((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.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 log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb.get(node).externalConnections && 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.get(node)?.clusterData?.dir) {\n dir = clusterDb.get(node).clusterData.dir;\n log.warn(\"Fixing dir\", clusterDb.get(node).clusterData.dir, dir);\n }\n const clusterGraph = new graphlib.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 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.get(node).clusterData,\n label: clusterDb.get(node).label,\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.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 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}, \"extractor\");\nvar sorter = /* @__PURE__ */ __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__ */ __name((graph) => sorter(graph, graph.children()), \"sortNodesByHierarchy\");\n\n// src/rendering-util/layout-algorithms/dagre/index.js\nvar recursiveRender = /* @__PURE__ */ __name(async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n log.warn(\"Graph in recursive render:XAX\", graphlibJson2.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.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 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 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?.clusterNode) {\n 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 updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n 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 setNodeElem(newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n 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 log.trace(findNonClusterChild(node.id, graph));\n clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });\n } else {\n log.trace(\"Node - the non recursive path XAX\", v, nodes, graph.node(v), dir);\n await insertNode(nodes, graph.node(v), { config: siteConfig, dir });\n }\n }\n })\n );\n const processEdges = /* @__PURE__ */ __name(async () => {\n const edgePromises = graph.edges().map(async 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(\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 insertEdgeLabel(edgeLabels, edge);\n });\n await Promise.all(edgePromises);\n }, \"processEdges\");\n await processEdges();\n log.info(\"Graph before layout:\", JSON.stringify(graphlibJson2.write(graph)));\n log.info(\"############################################# XXX\");\n log.info(\"### Layout ### XXX\");\n log.info(\"############################################# XXX\");\n dagreLayout(graph);\n log.info(\"Graph after layout:\", JSON.stringify(graphlibJson2.write(graph)));\n let diff = 0;\n let { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n await Promise.all(\n sortNodesByHierarchy(graph).map(async function(v) {\n const node = graph.node(v);\n 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 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 positionNode(node);\n } else {\n if (graph.children(v).length > 0) {\n 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 log.debug(\"OffsetY\", offsetY, \"labelHeight\", labelHeight, \"halfPadding\", halfPadding);\n await 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 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 positionNode(node);\n }\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 startNode = graph.node(e.v);\n var endNode = graph.node(e.w);\n const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, 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.isGroup) {\n diff = n.diff;\n }\n });\n log.warn(\"Returning from recursive render XAX\", elem, diff);\n return { elem, diff };\n}, \"recursiveRender\");\nvar render = /* @__PURE__ */ __name(async (data4Layout, svg) => {\n const graph = new graphlib2.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 markers_default(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);\n clear3();\n clear2();\n 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 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.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 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