All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webapp.flowDiagram-b222e15a.86d4c2fa.js.map Maven / Gradle / Ivy

{"mappings":"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","sources":["","node_modules/mermaid/dist/index-01f381cb.js","node_modules/dagre-d3-es/src/graphlib/json.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n      var $parcel$global = globalThis;\n    var parcelRequire = $parcel$global[\"parcelRequire3bab\"];\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"4FlE0\", function(module, exports) {\n\n$parcel$export(module.exports, \"r\", () => $365bc7d5dc9758d1$export$43caf9889c228507);\n\nvar $hV1gR = parcelRequire(\"hV1gR\");\n\nvar $c0ySZ = parcelRequire(\"c0ySZ\");\n\nvar $hl1Sc = parcelRequire(\"hl1Sc\");\n\nvar $4jcZX = parcelRequire(\"4jcZX\");\n\nvar $4LkSm = parcelRequire(\"4LkSm\");\n\nvar $fmBVZ = parcelRequire(\"fmBVZ\");\n\nvar $2YFJl = parcelRequire(\"2YFJl\");\nlet $365bc7d5dc9758d1$var$clusterDb = {};\nlet $365bc7d5dc9758d1$var$descendants = {};\nlet $365bc7d5dc9758d1$var$parents = {};\nconst $365bc7d5dc9758d1$var$clear$1 = ()=>{\n    $365bc7d5dc9758d1$var$descendants = {};\n    $365bc7d5dc9758d1$var$parents = {};\n    $365bc7d5dc9758d1$var$clusterDb = {};\n};\nconst $365bc7d5dc9758d1$var$isDescendant = (id, ancestorId)=>{\n    (0, $4jcZX.l).trace(\"In isDescendant\", ancestorId, \" \", id, \" = \", $365bc7d5dc9758d1$var$descendants[ancestorId].includes(id));\n    if ($365bc7d5dc9758d1$var$descendants[ancestorId].includes(id)) return true;\n    return false;\n};\nconst $365bc7d5dc9758d1$var$edgeInCluster = (edge, clusterId)=>{\n    (0, $4jcZX.l).info(\"Descendants of \", clusterId, \" is \", $365bc7d5dc9758d1$var$descendants[clusterId]);\n    (0, $4jcZX.l).info(\"Edge is \", edge);\n    if (edge.v === clusterId) return false;\n    if (edge.w === clusterId) return false;\n    if (!$365bc7d5dc9758d1$var$descendants[clusterId]) {\n        (0, $4jcZX.l).debug(\"Tilt, \", clusterId, \",not in descendants\");\n        return false;\n    }\n    return $365bc7d5dc9758d1$var$descendants[clusterId].includes(edge.v) || $365bc7d5dc9758d1$var$isDescendant(edge.v, clusterId) || $365bc7d5dc9758d1$var$isDescendant(edge.w, clusterId) || $365bc7d5dc9758d1$var$descendants[clusterId].includes(edge.w);\n};\nconst $365bc7d5dc9758d1$var$copy = (clusterId, graph, newGraph, rootId)=>{\n    (0, $4jcZX.l).warn(\"Copying children of \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n    const nodes = graph.children(clusterId) || [];\n    if (clusterId !== rootId) nodes.push(clusterId);\n    (0, $4jcZX.l).warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\n    nodes.forEach((node)=>{\n        if (graph.children(node).length > 0) $365bc7d5dc9758d1$var$copy(node, graph, newGraph, rootId);\n        else {\n            const data = graph.node(node);\n            (0, $4jcZX.l).info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n            newGraph.setNode(node, data);\n            if (rootId !== graph.parent(node)) {\n                (0, $4jcZX.l).warn(\"Setting parent\", node, graph.parent(node));\n                newGraph.setParent(node, graph.parent(node));\n            }\n            if (clusterId !== rootId && node !== clusterId) {\n                (0, $4jcZX.l).debug(\"Setting parent\", node, clusterId);\n                newGraph.setParent(node, clusterId);\n            } else {\n                (0, $4jcZX.l).info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n                (0, $4jcZX.l).debug(\"Not Setting parent for node=\", node, \"cluster!==rootId\", clusterId !== rootId, \"node!==clusterId\", node !== clusterId);\n            }\n            const edges = graph.edges(node);\n            (0, $4jcZX.l).debug(\"Copying Edges\", edges);\n            edges.forEach((edge)=>{\n                (0, $4jcZX.l).info(\"Edge\", edge);\n                const data2 = graph.edge(edge.v, edge.w, edge.name);\n                (0, $4jcZX.l).info(\"Edge data\", data2, rootId);\n                try {\n                    if ($365bc7d5dc9758d1$var$edgeInCluster(edge, rootId)) {\n                        (0, $4jcZX.l).info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n                        newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n                        (0, $4jcZX.l).info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n                    } else (0, $4jcZX.l).info(\"Skipping copy of edge \", edge.v, \"-->\", edge.w, \" rootId: \", rootId, \" clusterId:\", clusterId);\n                } catch (e) {\n                    (0, $4jcZX.l).error(e);\n                }\n            });\n        }\n        (0, $4jcZX.l).debug(\"Removing node\", node);\n        graph.removeNode(node);\n    });\n};\nconst $365bc7d5dc9758d1$var$extractDescendants = (id, graph)=>{\n    const children = graph.children(id);\n    let res = [\n        ...children\n    ];\n    for (const child of children){\n        $365bc7d5dc9758d1$var$parents[child] = id;\n        res = [\n            ...res,\n            ...$365bc7d5dc9758d1$var$extractDescendants(child, graph)\n        ];\n    }\n    return res;\n};\nconst $365bc7d5dc9758d1$var$findNonClusterChild = (id, graph)=>{\n    (0, $4jcZX.l).trace(\"Searching\", id);\n    const children = graph.children(id);\n    (0, $4jcZX.l).trace(\"Searching children of id \", id, children);\n    if (children.length < 1) {\n        (0, $4jcZX.l).trace(\"This is a valid node\", id);\n        return id;\n    }\n    for (const child of children){\n        const _id = $365bc7d5dc9758d1$var$findNonClusterChild(child, graph);\n        if (_id) {\n            (0, $4jcZX.l).trace(\"Found replacement for\", id, \" => \", _id);\n            return _id;\n        }\n    }\n};\nconst $365bc7d5dc9758d1$var$getAnchorId = (id)=>{\n    if (!$365bc7d5dc9758d1$var$clusterDb[id]) return id;\n    if (!$365bc7d5dc9758d1$var$clusterDb[id].externalConnections) return id;\n    if ($365bc7d5dc9758d1$var$clusterDb[id]) return $365bc7d5dc9758d1$var$clusterDb[id].id;\n    return id;\n};\nconst $365bc7d5dc9758d1$var$adjustClustersAndEdges = (graph, depth)=>{\n    if (!graph || depth > 10) {\n        (0, $4jcZX.l).debug(\"Opting out, no graph \");\n        return;\n    } else (0, $4jcZX.l).debug(\"Opting in, graph \");\n    graph.nodes().forEach(function(id) {\n        const children = graph.children(id);\n        if (children.length > 0) {\n            (0, $4jcZX.l).warn(\"Cluster identified\", id, \" Replacement id in edges: \", $365bc7d5dc9758d1$var$findNonClusterChild(id, graph));\n            $365bc7d5dc9758d1$var$descendants[id] = $365bc7d5dc9758d1$var$extractDescendants(id, graph);\n            $365bc7d5dc9758d1$var$clusterDb[id] = {\n                id: $365bc7d5dc9758d1$var$findNonClusterChild(id, graph),\n                clusterData: graph.node(id)\n            };\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            (0, $4jcZX.l).debug(\"Cluster identified\", id, $365bc7d5dc9758d1$var$descendants);\n            edges.forEach((edge)=>{\n                if (edge.v !== id && edge.w !== id) {\n                    const d1 = $365bc7d5dc9758d1$var$isDescendant(edge.v, id);\n                    const d2 = $365bc7d5dc9758d1$var$isDescendant(edge.w, id);\n                    if (d1 ^ d2) {\n                        (0, $4jcZX.l).warn(\"Edge: \", edge, \" leaves cluster \", id);\n                        (0, $4jcZX.l).warn(\"Descendants of XXX \", id, \": \", $365bc7d5dc9758d1$var$descendants[id]);\n                        $365bc7d5dc9758d1$var$clusterDb[id].externalConnections = true;\n                    }\n                }\n            });\n        } else (0, $4jcZX.l).debug(\"Not a cluster \", id, $365bc7d5dc9758d1$var$descendants);\n    });\n    for (let id of Object.keys($365bc7d5dc9758d1$var$clusterDb)){\n        const nonClusterChild = $365bc7d5dc9758d1$var$clusterDb[id].id;\n        const parent = graph.parent(nonClusterChild);\n        if (parent !== id && $365bc7d5dc9758d1$var$clusterDb[parent] && !$365bc7d5dc9758d1$var$clusterDb[parent].externalConnections) $365bc7d5dc9758d1$var$clusterDb[id].id = parent;\n    }\n    graph.edges().forEach(function(e) {\n        const edge = graph.edge(e);\n        (0, $4jcZX.l).warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n        (0, $4jcZX.l).warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n        let v = e.v;\n        let w = e.w;\n        (0, $4jcZX.l).warn(\"Fix XXX\", $365bc7d5dc9758d1$var$clusterDb, \"ids:\", e.v, e.w, \"Translating: \", $365bc7d5dc9758d1$var$clusterDb[e.v], \" --- \", $365bc7d5dc9758d1$var$clusterDb[e.w]);\n        if ($365bc7d5dc9758d1$var$clusterDb[e.v] && $365bc7d5dc9758d1$var$clusterDb[e.w] && $365bc7d5dc9758d1$var$clusterDb[e.v] === $365bc7d5dc9758d1$var$clusterDb[e.w]) {\n            (0, $4jcZX.l).warn(\"Fixing and trixing link to self - removing XXX\", e.v, e.w, e.name);\n            (0, $4jcZX.l).warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n            v = $365bc7d5dc9758d1$var$getAnchorId(e.v);\n            w = $365bc7d5dc9758d1$var$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 ($365bc7d5dc9758d1$var$clusterDb[e.v] || $365bc7d5dc9758d1$var$clusterDb[e.w]) {\n            (0, $4jcZX.l).warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n            v = $365bc7d5dc9758d1$var$getAnchorId(e.v);\n            w = $365bc7d5dc9758d1$var$getAnchorId(e.w);\n            graph.removeEdge(e.v, e.w, e.name);\n            if (v !== e.v) {\n                const parent = graph.parent(v);\n                $365bc7d5dc9758d1$var$clusterDb[parent].externalConnections = true;\n                edge.fromCluster = e.v;\n            }\n            if (w !== e.w) {\n                const parent = graph.parent(w);\n                $365bc7d5dc9758d1$var$clusterDb[parent].externalConnections = true;\n                edge.toCluster = e.w;\n            }\n            (0, $4jcZX.l).warn(\"Fix Replacing with XXX\", v, w, e.name);\n            graph.setEdge(v, w, edge, e.name);\n        }\n    });\n    (0, $4jcZX.l).warn(\"Adjusted Graph\", $c0ySZ.write(graph));\n    $365bc7d5dc9758d1$var$extractor(graph, 0);\n    (0, $4jcZX.l).trace($365bc7d5dc9758d1$var$clusterDb);\n};\nconst $365bc7d5dc9758d1$var$extractor = (graph, depth)=>{\n    (0, $4jcZX.l).warn(\"extractor - \", depth, $c0ySZ.write(graph), graph.children(\"D\"));\n    if (depth > 10) {\n        (0, $4jcZX.l).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        (0, $4jcZX.l).debug(\"Done, no node has children\", graph.nodes());\n        return;\n    }\n    (0, $4jcZX.l).debug(\"Nodes = \", nodes, depth);\n    for (const node of nodes){\n        (0, $4jcZX.l).debug(\"Extracting node\", node, $365bc7d5dc9758d1$var$clusterDb, $365bc7d5dc9758d1$var$clusterDb[node] && !$365bc7d5dc9758d1$var$clusterDb[node].externalConnections, !graph.parent(node), graph.node(node), graph.children(\"D\"), \" Depth \", depth);\n        if (!$365bc7d5dc9758d1$var$clusterDb[node]) (0, $4jcZX.l).debug(\"Not a cluster\", node, depth);\n        else if (!$365bc7d5dc9758d1$var$clusterDb[node].externalConnections && // !graph.parent(node) &&\n        graph.children(node) && graph.children(node).length > 0) {\n            (0, $4jcZX.l).warn(\"Cluster without external connections, without a parent and with children\", node, depth);\n            const graphSettings = graph.graph();\n            let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n            if ($365bc7d5dc9758d1$var$clusterDb[node] && $365bc7d5dc9758d1$var$clusterDb[node].clusterData && $365bc7d5dc9758d1$var$clusterDb[node].clusterData.dir) {\n                dir = $365bc7d5dc9758d1$var$clusterDb[node].clusterData.dir;\n                (0, $4jcZX.l).warn(\"Fixing dir\", $365bc7d5dc9758d1$var$clusterDb[node].clusterData.dir, dir);\n            }\n            const clusterGraph = new $4LkSm.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            (0, $4jcZX.l).warn(\"Old graph before copy\", $c0ySZ.write(graph));\n            $365bc7d5dc9758d1$var$copy(node, graph, clusterGraph, node);\n            graph.setNode(node, {\n                clusterNode: true,\n                id: node,\n                clusterData: $365bc7d5dc9758d1$var$clusterDb[node].clusterData,\n                labelText: $365bc7d5dc9758d1$var$clusterDb[node].labelText,\n                graph: clusterGraph\n            });\n            (0, $4jcZX.l).warn(\"New graph after copy node: (\", node, \")\", $c0ySZ.write(clusterGraph));\n            (0, $4jcZX.l).debug(\"Old graph after copy\", $c0ySZ.write(graph));\n        } else {\n            (0, $4jcZX.l).warn(\"Cluster ** \", node, \" **not meeting the criteria !externalConnections:\", !$365bc7d5dc9758d1$var$clusterDb[node].externalConnections, \" no parent: \", !graph.parent(node), \" children \", graph.children(node) && graph.children(node).length > 0, graph.children(\"D\"), depth);\n            (0, $4jcZX.l).debug($365bc7d5dc9758d1$var$clusterDb);\n        }\n    }\n    nodes = graph.nodes();\n    (0, $4jcZX.l).warn(\"New list of nodes\", nodes);\n    for (const node of nodes){\n        const data = graph.node(node);\n        (0, $4jcZX.l).warn(\" Now next level\", node, data);\n        if (data.clusterNode) $365bc7d5dc9758d1$var$extractor(data.graph, depth + 1);\n    }\n};\nconst $365bc7d5dc9758d1$var$sorter = (graph, nodes)=>{\n    if (nodes.length === 0) return [];\n    let result = Object.assign(nodes);\n    nodes.forEach((node)=>{\n        const children = graph.children(node);\n        const sorted = $365bc7d5dc9758d1$var$sorter(graph, children);\n        result = [\n            ...result,\n            ...sorted\n        ];\n    });\n    return result;\n};\nconst $365bc7d5dc9758d1$var$sortNodesByHierarchy = (graph)=>$365bc7d5dc9758d1$var$sorter(graph, graph.children());\nconst $365bc7d5dc9758d1$var$rect = (parent, node)=>{\n    (0, $4jcZX.l).info(\"Creating subgraph rect for \", node.id, node);\n    const siteConfig = (0, $4jcZX.c)();\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 = (0, $4jcZX.m)(siteConfig.flowchart.htmlLabels);\n    const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n    const text = node.labelType === \"markdown\" ? (0, $fmBVZ.a)(label, node.labelText, {\n        style: node.labelStyle,\n        useHtmlLabels: useHtmlLabels\n    }) : label.node().appendChild((0, $hl1Sc.c)(node.labelText, node.labelStyle, void 0, true));\n    let bbox = text.getBBox();\n    if ((0, $4jcZX.m)(siteConfig.flowchart.htmlLabels)) {\n        const div = text.children[0];\n        const dv = (0, $2YFJl.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) node.diff = (bbox.width - node.width) / 2 - node.padding / 2;\n    else node.diff = -node.padding / 2;\n    (0, $4jcZX.l).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: subGraphTitleTopMargin } = (0, $hl1Sc.g)(siteConfig);\n    if (useHtmlLabels) label.attr(\"transform\", // 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    else label.attr(\"transform\", // This puts the label on top of the box instead of inside it\n    `translate(${node.x}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`);\n    const rectBox = rect2.node().getBBox();\n    node.width = rectBox.width;\n    node.height = rectBox.height;\n    node.intersect = function(point) {\n        return (0, $hl1Sc.i)(node, point);\n    };\n    return shapeSvg;\n};\nconst $365bc7d5dc9758d1$var$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 (0, $hl1Sc.i)(node, point);\n    };\n    return shapeSvg;\n};\nconst $365bc7d5dc9758d1$var$roundedWithTitle = (parent, node)=>{\n    const siteConfig = (0, $4jcZX.c)();\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((0, $hl1Sc.c)(node.labelText, node.labelStyle, void 0, true));\n    let bbox = text.getBBox();\n    if ((0, $4jcZX.m)(siteConfig.flowchart.htmlLabels)) {\n        const div = text.children[0];\n        const dv = (0, $2YFJl.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) node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n    else node.diff = -node.padding / 2;\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: subGraphTitleTopMargin } = (0, $hl1Sc.g)(siteConfig);\n    label.attr(\"transform\", `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 - node.padding / 3 + ((0, $4jcZX.m)(siteConfig.flowchart.htmlLabels) ? 5 : 3) + subGraphTitleTopMargin})`);\n    const rectBox = rect2.node().getBBox();\n    node.height = rectBox.height;\n    node.intersect = function(point) {\n        return (0, $hl1Sc.i)(node, point);\n    };\n    return shapeSvg;\n};\nconst $365bc7d5dc9758d1$var$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 (0, $hl1Sc.i)(node, point);\n    };\n    return shapeSvg;\n};\nconst $365bc7d5dc9758d1$var$shapes = {\n    rect: $365bc7d5dc9758d1$var$rect,\n    roundedWithTitle: $365bc7d5dc9758d1$var$roundedWithTitle,\n    noteGroup: $365bc7d5dc9758d1$var$noteGroup,\n    divider: $365bc7d5dc9758d1$var$divider\n};\nlet $365bc7d5dc9758d1$var$clusterElems = {};\nconst $365bc7d5dc9758d1$var$insertCluster = (elem, node)=>{\n    (0, $4jcZX.l).trace(\"Inserting cluster\");\n    const shape = node.shape || \"rect\";\n    $365bc7d5dc9758d1$var$clusterElems[node.id] = $365bc7d5dc9758d1$var$shapes[shape](elem, node);\n};\nconst $365bc7d5dc9758d1$var$clear = ()=>{\n    $365bc7d5dc9758d1$var$clusterElems = {};\n};\nconst $365bc7d5dc9758d1$var$recursiveRender = async (_elem, graph, diagramType, id, parentCluster, siteConfig)=>{\n    (0, $4jcZX.l).info(\"Graph in recursive render: XXX\", $c0ySZ.write(graph), parentCluster);\n    const dir = graph.graph().rankdir;\n    (0, $4jcZX.l).trace(\"Dir in recursive render - dir:\", dir);\n    const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n    if (!graph.nodes()) (0, $4jcZX.l).info(\"No nodes found for\", graph);\n    else (0, $4jcZX.l).info(\"Recursive render XXX\", graph.nodes());\n    if (graph.edges().length > 0) (0, $4jcZX.l).trace(\"Recursive edges\", graph.edge(graph.edges()[0]));\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(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            (0, $4jcZX.l).info(\"Setting data for cluster XXX (\", v, \") \", data, parentCluster);\n            graph.setNode(parentCluster.id, data);\n            if (!graph.parent(v)) {\n                (0, $4jcZX.l).trace(\"Setting parent\", v, parentCluster.id);\n                graph.setParent(v, parentCluster.id, data);\n            }\n        }\n        (0, $4jcZX.l).info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n        if (node && node.clusterNode) {\n            (0, $4jcZX.l).info(\"Cluster identified\", v, node.width, graph.node(v));\n            const o = await $365bc7d5dc9758d1$var$recursiveRender(nodes, node.graph, diagramType, id, graph.node(v), siteConfig);\n            const newEl = o.elem;\n            (0, $hl1Sc.u)(node, newEl);\n            node.diff = o.diff || 0;\n            (0, $4jcZX.l).info(\"Node bounds (abc123)\", v, node, node.width, node.x, node.y);\n            (0, $hl1Sc.s)(newEl, node);\n            (0, $4jcZX.l).warn(\"Recursive render complete \", newEl, node);\n        } else if (graph.children(v).length > 0) {\n            (0, $4jcZX.l).info(\"Cluster - the non recursive path XXX\", v, node.id, node, graph);\n            (0, $4jcZX.l).info($365bc7d5dc9758d1$var$findNonClusterChild(node.id, graph));\n            $365bc7d5dc9758d1$var$clusterDb[node.id] = {\n                id: $365bc7d5dc9758d1$var$findNonClusterChild(node.id, graph),\n                node: node\n            };\n        } else {\n            (0, $4jcZX.l).info(\"Node - the non recursive path\", v, node.id, node);\n            await (0, $hl1Sc.e)(nodes, graph.node(v), dir);\n        }\n    }));\n    graph.edges().forEach(function(e) {\n        const edge = graph.edge(e.v, e.w, e.name);\n        (0, $4jcZX.l).info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n        (0, $4jcZX.l).info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n        (0, $4jcZX.l).info(\"Fix\", $365bc7d5dc9758d1$var$clusterDb, \"ids:\", e.v, e.w, \"Translating: \", $365bc7d5dc9758d1$var$clusterDb[e.v], $365bc7d5dc9758d1$var$clusterDb[e.w]);\n        (0, $hl1Sc.f)(edgeLabels, edge);\n    });\n    graph.edges().forEach(function(e) {\n        (0, $4jcZX.l).info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n    });\n    (0, $4jcZX.l).info(\"#############################################\");\n    (0, $4jcZX.l).info(\"###                Layout                 ###\");\n    (0, $4jcZX.l).info(\"#############################################\");\n    (0, $4jcZX.l).info(graph);\n    (0, $hV1gR.layout)(graph);\n    (0, $4jcZX.l).info(\"Graph after layout:\", $c0ySZ.write(graph));\n    let diff = 0;\n    const { subGraphTitleTotalMargin: subGraphTitleTotalMargin } = (0, $hl1Sc.g)(siteConfig);\n    $365bc7d5dc9758d1$var$sortNodesByHierarchy(graph).forEach(function(v) {\n        const node = graph.node(v);\n        (0, $4jcZX.l).info(\"Position \" + v + \": \" + JSON.stringify(graph.node(v)));\n        (0, $4jcZX.l).info(\"Position \" + v + \": (\" + node.x, \",\" + node.y, \") width: \", node.width, \" height: \", node.height);\n        if (node && node.clusterNode) {\n            node.y += subGraphTitleTotalMargin;\n            (0, $hl1Sc.p)(node);\n        } else if (graph.children(v).length > 0) {\n            node.height += subGraphTitleTotalMargin;\n            $365bc7d5dc9758d1$var$insertCluster(clusters, node);\n            $365bc7d5dc9758d1$var$clusterDb[node.id].node = node;\n        } else {\n            node.y += subGraphTitleTotalMargin / 2;\n            (0, $hl1Sc.p)(node);\n        }\n    });\n    graph.edges().forEach(function(e) {\n        const edge = graph.edge(e);\n        (0, $4jcZX.l).info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n        edge.points.forEach((point)=>point.y += subGraphTitleTotalMargin / 2);\n        const paths = (0, $hl1Sc.h)(edgePaths, e, edge, $365bc7d5dc9758d1$var$clusterDb, diagramType, graph, id);\n        (0, $hl1Sc.j)(edge, paths);\n    });\n    graph.nodes().forEach(function(v) {\n        const n = graph.node(v);\n        (0, $4jcZX.l).info(v, n.type, n.diff);\n        if (n.type === \"group\") diff = n.diff;\n    });\n    return {\n        elem: elem,\n        diff: diff\n    };\n};\nconst $365bc7d5dc9758d1$export$43caf9889c228507 = async (elem, graph, markers, diagramType, id)=>{\n    (0, $hl1Sc.a)(elem, markers, diagramType, id);\n    (0, $hl1Sc.b)();\n    (0, $hl1Sc.d)();\n    $365bc7d5dc9758d1$var$clear();\n    $365bc7d5dc9758d1$var$clear$1();\n    (0, $4jcZX.l).warn(\"Graph at first:\", JSON.stringify($c0ySZ.write(graph)));\n    $365bc7d5dc9758d1$var$adjustClustersAndEdges(graph);\n    (0, $4jcZX.l).warn(\"Graph after:\", JSON.stringify($c0ySZ.write(graph)));\n    const siteConfig = (0, $4jcZX.c)();\n    await $365bc7d5dc9758d1$var$recursiveRender(elem, graph, diagramType, id, void 0, siteConfig);\n};\n\n});\nparcelRegister(\"c0ySZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"write\", () => $8be08bb87e59fed8$export$68d8715fc104d294);\n\nvar $hNIl0 = parcelRequire(\"hNIl0\");\nvar $fpekr = parcelRequire(\"fpekr\");\nvar $1G4S6 = parcelRequire(\"1G4S6\");\nvar $3kePu = parcelRequire(\"3kePu\");\n\nvar $2rLgF = parcelRequire(\"2rLgF\");\nfunction $8be08bb87e59fed8$export$68d8715fc104d294(g) {\n    var json = {\n        options: {\n            directed: g.isDirected(),\n            multigraph: g.isMultigraph(),\n            compound: g.isCompound()\n        },\n        nodes: $8be08bb87e59fed8$var$writeNodes(g),\n        edges: $8be08bb87e59fed8$var$writeEdges(g)\n    };\n    if (!$1G4S6.default(g.graph())) json.value = $hNIl0.default(g.graph());\n    return json;\n}\nfunction $8be08bb87e59fed8$var$writeNodes(g) {\n    return $3kePu.default(g.nodes(), function(v) {\n        var nodeValue = g.node(v);\n        var parent = g.parent(v);\n        var node = {\n            v: v\n        };\n        if (!$1G4S6.default(nodeValue)) node.value = nodeValue;\n        if (!$1G4S6.default(parent)) node.parent = parent;\n        return node;\n    });\n}\nfunction $8be08bb87e59fed8$var$writeEdges(g) {\n    return $3kePu.default(g.edges(), function(e) {\n        var edgeValue = g.edge(e);\n        var edge = {\n            v: e.v,\n            w: e.w\n        };\n        if (!$1G4S6.default(e.name)) edge.name = e.name;\n        if (!$1G4S6.default(edgeValue)) edge.value = edgeValue;\n        return edge;\n    });\n}\nfunction $8be08bb87e59fed8$export$aafa59e2e03f2942(json) {\n    var g = new (0, $2rLgF.Graph)(json.options).setGraph(json.value);\n    $fpekr.default(json.nodes, function(entry) {\n        g.setNode(entry.v, entry.value);\n        if (entry.parent) g.setParent(entry.v, entry.parent);\n    });\n    $fpekr.default(json.edges, function(entry) {\n        g.setEdge({\n            v: entry.v,\n            w: entry.w,\n            name: entry.name\n        }, entry.value);\n    });\n    return g;\n}\n\n});\n\n\n\n//# sourceMappingURL=flowDiagram-b222e15a.86d4c2fa.js.map\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","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"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","parcelRequire","$parcel$global","globalThis","parcelRegister","register","module","exports","$365bc7d5dc9758d1$export$43caf9889c228507","$hV1gR","$c0ySZ","$hl1Sc","$4jcZX","$4LkSm","$fmBVZ","$2YFJl","$365bc7d5dc9758d1$var$clusterDb","$365bc7d5dc9758d1$var$descendants","$365bc7d5dc9758d1$var$parents","$365bc7d5dc9758d1$var$clear$1","$365bc7d5dc9758d1$var$isDescendant","id","ancestorId","l","trace","includes","$365bc7d5dc9758d1$var$edgeInCluster","edge","clusterId","info","w","debug","$365bc7d5dc9758d1$var$copy","graph","newGraph","rootId","warn","node","nodes","children","push","forEach","length","data","setNode","parent","setParent","edges","data2","name","setEdge","error","removeNode","$365bc7d5dc9758d1$var$extractDescendants","res","child","$365bc7d5dc9758d1$var$findNonClusterChild","_id","$365bc7d5dc9758d1$var$getAnchorId","externalConnections","$365bc7d5dc9758d1$var$adjustClustersAndEdges","depth","clusterData","d1","keys","nonClusterChild","JSON","stringify","removeEdge","specialId","domId","labelStyle","labelText","label","padding","shape","style","edge1","structuredClone","edge2","arrowTypeEnd","fromCluster","toCluster","write","$365bc7d5dc9758d1$var$extractor","hasChildren","dir","graphSettings","rankdir","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","clusterNode","$365bc7d5dc9758d1$var$sorter","result","assign","sorted","$365bc7d5dc9758d1$var$sortNodesByHierarchy","$365bc7d5dc9758d1$var$shapes","rect","siteConfig","c","shapeSvg","insert","attr","class","rect2","useHtmlLabels","m","flowchart","htmlLabels","text","labelType","a","appendChild","bbox","getBBox","div","dv","select","getBoundingClientRect","width","height","diff","rx","ry","x","y","subGraphTitleTopMargin","g","rectBox","intersect","point","i","roundedWithTitle","classes","innerRect","append","halfPadding","noteGroup","divider","$365bc7d5dc9758d1$var$clusterElems","$365bc7d5dc9758d1$var$insertCluster","elem","$365bc7d5dc9758d1$var$clear","$365bc7d5dc9758d1$var$recursiveRender","_elem","diagramType","parentCluster","clusters","edgePaths","edgeLabels","Promise","all","map","parse","o","newEl","u","f","layout","subGraphTitleTotalMargin","p","points","paths","h","j","type","markers","b","d","$8be08bb87e59fed8$export$68d8715fc104d294","$hNIl0","$1G4S6","$3kePu","json","options","directed","isDirected","isMultigraph","isCompound","default","nodeValue","value","edgeValue"],"version":3,"file":"flowDiagram-b222e15a.86d4c2fa.js.map"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy