import { G as R } from './graph-39d39682.js'; import { S as z, v as F, x as j, o as A, l as g, p as U, c as S, j as G, r as q, q as E, n as L, h as C, y as H, t as K, z as W, } from './index-0e3b96e2.js'; import { r as X } from './index-01f381cb-66b06431.js'; import { b1 as J, b2 as Q } from './index-9c042f98.js'; import { c as Y } from './channel-80f48b39.js'; function Z(e) { return typeof e == 'string' ? new z([document.querySelectorAll(e)], [document.documentElement]) : new z([j(e)], F); } function be(e, l) { return !!e.children(l).length; } function fe(e) { return N(e.v) + ':' + N(e.w) + ':' + N(e.name); } var O = /:/g; function N(e) { return e ? String(e).replace(O, '\\:') : ''; } function ee(e, l) { l && e.attr('style', l); } function ue(e, l, c) { l && e.attr('class', l).attr('class', c + ' ' + e.attr('class')); } function we(e, l) { var c = l.graph(); if (J(c)) { var a = c.transition; if (Q(a)) return a(e); } return e; } function te(e, l) { var c = e.append('foreignObject').attr('width', '100000'), a = c.append('xhtml:div'); a.attr('xmlns', 'http://www.w3.org/1999/xhtml'); var i = l.label; switch (typeof i) { case 'function': a.insert(i); break; case 'object': a.insert(function () { return i; }); break; default: a.html(i); } ee(a, l.labelStyle), a.style('display', 'inline-block'), a.style('white-space', 'nowrap'); var d = a.node().getBoundingClientRect(); return c.attr('width', d.width).attr('height', d.height), c; } const P = {}, re = function (e) { const l = Object.keys(e); for (const c of l) P[c] = e[c]; }, V = async function (e, l, c, a, i, d) { const u = a.select(`[id="${c}"]`), n = Object.keys(e); for (const p of n) { const r = e[p]; let y = 'default'; r.classes.length > 0 && (y = r.classes.join(' ')), (y = y + ' flowchart-label'); const w = A(r.styles); let t = r.text !== void 0 ? r.text : r.id, s; if ((g.info('vertex', r, r.labelType), r.labelType === 'markdown')) g.info('vertex', r, r.labelType); else if (U(S().flowchart.htmlLabels)) (s = te(u, { label: t }).node()), s.parentNode.removeChild(s); else { const k = i.createElementNS('http://www.w3.org/2000/svg', 'text'); k.setAttribute('style', w.labelStyle.replace('color:', 'fill:')); const _ = t.split(G.lineBreakRegex); for (const $ of _) { const v = i.createElementNS('http://www.w3.org/2000/svg', 'tspan'); v.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'), v.setAttribute('dy', '1em'), v.setAttribute('x', '1'), (v.textContent = $), k.appendChild(v); } s = k; } let b = 0, o = ''; switch (r.type) { case 'round': (b = 5), (o = 'rect'); break; case 'square': o = 'rect'; break; case 'diamond': o = 'question'; break; case 'hexagon': o = 'hexagon'; break; case 'odd': o = 'rect_left_inv_arrow'; break; case 'lean_right': o = 'lean_right'; break; case 'lean_left': o = 'lean_left'; break; case 'trapezoid': o = 'trapezoid'; break; case 'inv_trapezoid': o = 'inv_trapezoid'; break; case 'odd_right': o = 'rect_left_inv_arrow'; break; case 'circle': o = 'circle'; break; case 'ellipse': o = 'ellipse'; break; case 'stadium': o = 'stadium'; break; case 'subroutine': o = 'subroutine'; break; case 'cylinder': o = 'cylinder'; break; case 'group': o = 'rect'; break; case 'doublecircle': o = 'doublecircle'; break; default: o = 'rect'; } const T = await q(t, S()); l.setNode(r.id, { labelStyle: w.labelStyle, shape: o, labelText: T, labelType: r.labelType, rx: b, ry: b, class: y, style: w.style, id: r.id, link: r.link, linkTarget: r.linkTarget, tooltip: d.db.getTooltip(r.id) || '', domId: d.db.lookUpDomId(r.id), haveCallback: r.haveCallback, width: r.type === 'group' ? 500 : void 0, dir: r.dir, type: r.type, props: r.props, padding: S().flowchart.padding, }), g.info('setNode', { labelStyle: w.labelStyle, labelType: r.labelType, shape: o, labelText: T, rx: b, ry: b, class: y, style: w.style, id: r.id, domId: d.db.lookUpDomId(r.id), width: r.type === 'group' ? 500 : void 0, type: r.type, dir: r.dir, props: r.props, padding: S().flowchart.padding, }); } }, M = async function (e, l, c) { g.info('abc78 edges = ', e); let a = 0, i = {}, d, u; if (e.defaultStyle !== void 0) { const n = A(e.defaultStyle); (d = n.style), (u = n.labelStyle); } for (const n of e) { a++; const p = 'L-' + n.start + '-' + n.end; i[p] === void 0 ? ((i[p] = 0), g.info('abc78 new entry', p, i[p])) : (i[p]++, g.info('abc78 new entry', p, i[p])); let r = p + '-' + i[p]; g.info('abc78 new link id to be used is', p, r, i[p]); const y = 'LS-' + n.start, w = 'LE-' + n.end, t = { style: '', labelStyle: '' }; switch ( ((t.minlen = n.length || 1), n.type === 'arrow_open' ? (t.arrowhead = 'none') : (t.arrowhead = 'normal'), (t.arrowTypeStart = 'arrow_open'), (t.arrowTypeEnd = 'arrow_open'), n.type) ) { case 'double_arrow_cross': t.arrowTypeStart = 'arrow_cross'; case 'arrow_cross': t.arrowTypeEnd = 'arrow_cross'; break; case 'double_arrow_point': t.arrowTypeStart = 'arrow_point'; case 'arrow_point': t.arrowTypeEnd = 'arrow_point'; break; case 'double_arrow_circle': t.arrowTypeStart = 'arrow_circle'; case 'arrow_circle': t.arrowTypeEnd = 'arrow_circle'; break; } let s = '', b = ''; switch (n.stroke) { case 'normal': (s = 'fill:none;'), d !== void 0 && (s = d), u !== void 0 && (b = u), (t.thickness = 'normal'), (t.pattern = 'solid'); break; case 'dotted': (t.thickness = 'normal'), (t.pattern = 'dotted'), (t.style = 'fill:none;stroke-width:2px;stroke-dasharray:3;'); break; case 'thick': (t.thickness = 'thick'), (t.pattern = 'solid'), (t.style = 'stroke-width: 3.5px;fill:none;'); break; case 'invisible': (t.thickness = 'invisible'), (t.pattern = 'solid'), (t.style = 'stroke-width: 0;fill:none;'); break; } if (n.style !== void 0) { const o = A(n.style); (s = o.style), (b = o.labelStyle); } (t.style = t.style += s), (t.labelStyle = t.labelStyle += b), n.interpolate !== void 0 ? (t.curve = E(n.interpolate, L)) : e.defaultInterpolate !== void 0 ? (t.curve = E(e.defaultInterpolate, L)) : (t.curve = E(P.curve, L)), n.text === void 0 ? n.style !== void 0 && (t.arrowheadStyle = 'fill: #333') : ((t.arrowheadStyle = 'fill: #333'), (t.labelpos = 'c')), (t.labelType = n.labelType), (t.label = await q( n.text.replace( G.lineBreakRegex, ` ` ), S() )), n.style === void 0 && (t.style = t.style || 'stroke: #333; stroke-width: 1.5px;fill:none;'), (t.labelStyle = t.labelStyle.replace('color:', 'fill:')), (t.id = r), (t.classes = 'flowchart-link ' + y + ' ' + w), l.setEdge(n.start, n.end, t, a); } }, le = function (e, l) { return l.db.getClasses(); }, ae = async function (e, l, c, a) { g.info('Drawing flowchart'); let i = a.db.getDirection(); i === void 0 && (i = 'TD'); const { securityLevel: d, flowchart: u } = S(), n = u.nodeSpacing || 50, p = u.rankSpacing || 50; let r; d === 'sandbox' && (r = C('#i' + l)); const y = d === 'sandbox' ? C(r.nodes()[0].contentDocument.body) : C('body'), w = d === 'sandbox' ? r.nodes()[0].contentDocument : document, t = new R({ multigraph: !0, compound: !0 }) .setGraph({ rankdir: i, nodesep: n, ranksep: p, marginx: 0, marginy: 0 }) .setDefaultEdgeLabel(function () { return {}; }); let s; const b = a.db.getSubGraphs(); g.info('Subgraphs - ', b); for (let f = b.length - 1; f >= 0; f--) (s = b[f]), g.info('Subgraph - ', s), a.db.addVertex(s.id, { text: s.title, type: s.labelType }, 'group', void 0, s.classes, s.dir); const o = a.db.getVertices(), T = a.db.getEdges(); g.info('Edges', T); let k = 0; for (k = b.length - 1; k >= 0; k--) { (s = b[k]), Z('cluster').append('text'); for (let f = 0; f < s.nodes.length; f++) g.info('Setting up subgraphs', s.nodes[f], s.id), t.setParent(s.nodes[f], s.id); } await V(o, t, l, y, w, a), await M(T, t); const _ = y.select(`[id="${l}"]`), $ = y.select('#' + l + ' g'); if ( (await X($, t, ['point', 'circle', 'cross'], 'flowchart', l), H.insertTitle(_, 'flowchartTitleText', u.titleTopMargin, a.db.getDiagramTitle()), K(t, _, u.diagramPadding, u.useMaxWidth), a.db.indexNodes('subGraph' + k), !u.htmlLabels) ) { const f = w.querySelectorAll('[id="' + l + '"] .edgeLabel .label'); for (const x of f) { const m = x.getBBox(), h = w.createElementNS('http://www.w3.org/2000/svg', 'rect'); h.setAttribute('rx', 0), h.setAttribute('ry', 0), h.setAttribute('width', m.width), h.setAttribute('height', m.height), x.insertBefore(h, x.firstChild); } } Object.keys(o).forEach(function (f) { const x = o[f]; if (x.link) { const m = C('#' + l + ' [id="' + f + '"]'); if (m) { const h = w.createElementNS('http://www.w3.org/2000/svg', 'a'); h.setAttributeNS('http://www.w3.org/2000/svg', 'class', x.classes.join(' ')), h.setAttributeNS('http://www.w3.org/2000/svg', 'href', x.link), h.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener'), d === 'sandbox' ? h.setAttributeNS('http://www.w3.org/2000/svg', 'target', '_top') : x.linkTarget && h.setAttributeNS('http://www.w3.org/2000/svg', 'target', x.linkTarget); const B = m.insert(function () { return h; }, ':first-child'), I = m.select('.label-container'); I && B.append(function () { return I.node(); }); const D = m.select('.label'); D && B.append(function () { return D.node(); }); } } }); }, he = { setConf: re, addVertices: V, addEdges: M, getClasses: le, draw: ae }, oe = (e, l) => { const c = Y, a = c(e, 'r'), i = c(e, 'g'), d = c(e, 'b'); return W(a, i, d, l); }, ne = (e) => `.label { font-family: ${e.fontFamily}; color: ${e.nodeTextColor || e.textColor}; } .cluster-label text { fill: ${e.titleColor}; } .cluster-label span,p { color: ${e.titleColor}; } .label text,span,p { fill: ${e.nodeTextColor || e.textColor}; color: ${e.nodeTextColor || e.textColor}; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: 1px; } .flowchart-label text { text-anchor: middle; } // .flowchart-label .text-outer-tspan { // text-anchor: middle; // } // .flowchart-label .text-inner-tspan { // text-anchor: start; // } .node .katex path { fill: #000; stroke: #000; stroke-width: 1px; } .node .label { text-align: center; } .node.clickable { cursor: pointer; } .arrowheadPath { fill: ${e.arrowheadColor}; } .edgePath .path { stroke: ${e.lineColor}; stroke-width: 2.0px; } .flowchart-link { stroke: ${e.lineColor}; fill: none; } .edgeLabel { background-color: ${e.edgeLabelBackground}; rect { opacity: 0.5; background-color: ${e.edgeLabelBackground}; fill: ${e.edgeLabelBackground}; } text-align: center; } /* For html labels only */ .labelBkg { background-color: ${oe(e.edgeLabelBackground, 0.5)}; // background-color: } .cluster rect { fill: ${e.clusterBkg}; stroke: ${e.clusterBorder}; stroke-width: 1px; } .cluster text { fill: ${e.titleColor}; } .cluster span,p { color: ${e.titleColor}; } /* .cluster div { color: ${e.titleColor}; } */ div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: ${e.fontFamily}; font-size: 12px; background: ${e.tertiaryColor}; border: 1px solid ${e.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } .flowchartTitleText { text-anchor: middle; font-size: 18px; fill: ${e.textColor}; } `, ge = ne; export { ee as a, te as b, we as c, ue as d, fe as e, he as f, ge as g, be as i, Z as s };