1import { p as R, d as N, s as $ } from "./styles-f32eefb3.js"; 2import { l as c, c as r, j as k, A as B, t as G, o as E, q as A, n as C, f as _ } from "./mermaid-5a5980d4.js"; 3import { G as q } from "./graph-e9862b7e.js"; 4import { r as z } from "./index-5e3196ce.js"; 5import "./layout-2e6f21ea.js"; 6import "./clone-06085faa.js"; 7import "./edges-16a2be2d.js"; 8import "./createText-323577ec.js"; 9import "./line-552be4bc.js"; 10import "./array-2ff2c7a6.js"; 11import "./path-428ebac9.js"; 12const S = (o) => _.sanitizeText(o, r()); 13let v = { 14 dividerMargin: 10, 15 padding: 5, 16 textHeight: 10, 17 curve: void 0 18}; 19const P = function(o, e, p, n) { 20 const t = Object.keys(o); 21 c.info("keys:", t), c.info(o), t.forEach(function(s) { 22 var y, d; 23 const l = o[s], i = { 24 shape: "rect", 25 id: l.id, 26 domId: l.domId, 27 labelText: S(l.id), 28 labelStyle: "", 29 style: "fill: none; stroke: black", 30 // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release 31 padding: ((y = r().flowchart) == null ? void 0 : y.padding) ?? ((d = r().class) == null ? void 0 : d.padding) 32 }; 33 e.setNode(l.id, i), I(l.classes, e, p, n, l.id), c.info("setNode", i); 34 }); 35}, I = function(o, e, p, n, t) { 36 const s = Object.keys(o); 37 c.info("keys:", s), c.info(o), s.filter((l) => o[l].parent == t).forEach(function(l) { 38 var u, m; 39 const a = o[l], i = a.cssClasses.join(" "), y = E(a.styles), d = a.label ?? a.id, f = 0, h = "class_box", b = { 40 labelStyle: y.labelStyle, 41 shape: h, 42 labelText: S(d), 43 classData: a, 44 rx: f, 45 ry: f, 46 class: i, 47 style: y.style, 48 id: a.id, 49 domId: a.domId, 50 tooltip: n.db.getTooltip(a.id, t) || "", 51 haveCallback: a.haveCallback, 52 link: a.link, 53 width: a.type === "group" ? 500 : void 0, 54 type: a.type, 55 // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release 56 padding: ((u = r().flowchart) == null ? void 0 : u.padding) ?? ((m = r().class) == null ? void 0 : m.padding) 57 }; 58 e.setNode(a.id, b), t && e.setParent(a.id, t), c.info("setNode", b); 59 }); 60}, F = function(o, e, p, n) { 61 c.info(o), o.forEach(function(t, s) { 62 var m, g; 63 const l = t, a = "", i = { labelStyle: "", style: "" }, y = l.text, d = 0, f = "note", h = { 64 labelStyle: i.labelStyle, 65 shape: f, 66 labelText: S(y), 67 noteData: l, 68 rx: d, 69 ry: d, 70 class: a, 71 style: i.style, 72 id: l.id, 73 domId: l.id, 74 tooltip: "", 75 type: "note", 76 // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release 77 padding: ((m = r().flowchart) == null ? void 0 : m.padding) ?? ((g = r().class) == null ? void 0 : g.padding) 78 }; 79 if (e.setNode(l.id, h), c.info("setNode", h), !l.class || !(l.class in n)) 80 return; 81 const b = p + s, u = { 82 id: `edgeNote${b}`, 83 //Set relationship style and line type 84 classes: "relation", 85 pattern: "dotted", 86 // Set link type for rendering 87 arrowhead: "none", 88 //Set edge extra labels 89 startLabelRight: "", 90 endLabelLeft: "", 91 //Set relation arrow types 92 arrowTypeStart: "none", 93 arrowTypeEnd: "none", 94 style: "fill:none", 95 labelStyle: "", 96 curve: A(v.curve, C) 97 }; 98 e.setEdge(l.id, l.class, u, b); 99 }); 100}, H = function(o, e) { 101 const p = r().flowchart; 102 let n = 0; 103 o.forEach(function(t) { 104 var l; 105 n++; 106 const s = { 107 //Set relationship style and line type 108 classes: "relation", 109 pattern: t.relation.lineType == 1 ? "dashed" : "solid", 110 id: `id_${t.id1}_${t.id2}_${n}`, 111 // Set link type for rendering 112 arrowhead: t.type === "arrow_open" ? "none" : "normal", 113 //Set edge extra labels 114 startLabelRight: t.relationTitle1 === "none" ? "" : t.relationTitle1, 115 endLabelLeft: t.relationTitle2 === "none" ? "" : t.relationTitle2, 116 //Set relation arrow types 117 arrowTypeStart: D(t.relation.type1), 118 arrowTypeEnd: D(t.relation.type2), 119 style: "fill:none", 120 labelStyle: "", 121 curve: A(p == null ? void 0 : p.curve, C) 122 }; 123 if (c.info(s, t), t.style !== void 0) { 124 const a = E(t.style); 125 s.style = a.style, s.labelStyle = a.labelStyle; 126 } 127 t.text = t.title, t.text === void 0 ? t.style !== void 0 && (s.arrowheadStyle = "fill: #333") : (s.arrowheadStyle = "fill: #333", s.labelpos = "c", ((l = r().flowchart) == null ? void 0 : l.htmlLabels) ?? r().htmlLabels ? (s.labelType = "html", s.label = '<span class="edgeLabel">' + t.text + "</span>") : (s.labelType = "text", s.label = t.text.replace(_.lineBreakRegex, ` 128`), t.style === void 0 && (s.style = s.style || "stroke: #333; stroke-width: 1.5px;fill:none"), s.labelStyle = s.labelStyle.replace("color:", "fill:"))), e.setEdge(t.id1, t.id2, s, n); 129 }); 130}, V = function(o) { 131 v = { 132 ...v, 133 ...o 134 }; 135}, W = async function(o, e, p, n) { 136 c.info("Drawing class - ", e); 137 const t = r().flowchart ?? r().class, s = r().securityLevel; 138 c.info("config:", t); 139 const l = (t == null ? void 0 : t.nodeSpacing) ?? 50, a = (t == null ? void 0 : t.rankSpacing) ?? 50, i = new q({ 140 multigraph: !0, 141 compound: !0 142 }).setGraph({ 143 rankdir: n.db.getDirection(), 144 nodesep: l, 145 ranksep: a, 146 marginx: 8, 147 marginy: 8 148 }).setDefaultEdgeLabel(function() { 149 return {}; 150 }), y = n.db.getNamespaces(), d = n.db.getClasses(), f = n.db.getRelations(), h = n.db.getNotes(); 151 c.info(f), P(y, i, e, n), I(d, i, e, n), H(f, i), F(h, i, f.length + 1, d); 152 let b; 153 s === "sandbox" && (b = k("#i" + e)); 154 const u = s === "sandbox" ? k(b.nodes()[0].contentDocument.body) : k("body"), m = u.select(`[id="${e}"]`), g = u.select("#" + e + " g"); 155 if (await z( 156 g, 157 i,
158 ["aggregation", "extension", "composition", "dependency", "lollipop"], 159 "classDiagram", 160 e 161 ), B.insertTitle(m, "classTitleText", (t == null ? void 0 : t.titleTopMargin) ?? 5, n.db.getDiagramTitle()), G(i, m, t == null ? void 0 : t.diagramPadding, t == null ? void 0 : t.useMaxWidth), !(t != null && t.htmlLabels)) { 162 const T = s === "sandbox" ? b.nodes()[0].contentDocument : document, M = T.querySelectorAll('[id="' + e + '"] .edgeLabel .label'); 163 for (const w of M) { 164 const L = w.getBBox(), x = T.createElementNS("http://www.w3.org/2000/svg", "rect"); 165 x.setAttribute("rx", 0), x.setAttribute("ry", 0), x.setAttribute("width", L.width), x.setAttribute("height", L.height), w.insertBefore(x, w.firstChild); 166 } 167 } 168}; 169function D(o) { 170 let e; 171 switch (o) { 172 case 0: 173 e = "aggregation"; 174 break; 175 case 1: 176 e = "extension"; 177 break; 178 case 2: 179 e = "composition"; 180 break; 181 case 3: 182 e = "dependency"; 183 break; 184 case 4: 185 e = "lollipop"; 186 break; 187 default: 188 e = "none"; 189 } 190 return e; 191} 192const J = { 193 setConf: V, 194 draw: W 195}, ot = { 196 parser: R, 197 db: N, 198 renderer: J, 199 styles: $, 200 init: (o) => { 201 o.class || (o.class = {}), o.class.arrowMarkerAbsolute = o.arrowMarkerAbsolute, N.clear(); 202 } 203}; 204export { 205 ot as diagram 206};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.