UNPKG

62.5 kBJavaScriptView Raw
1import { d as sanitizeText$1, c as getConfig, G as parseGenericTypes, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, C as setDiagramTitle, D as getDiagramTitle, f as common, E as clear$1, l as log, A as utils, j as d3select } from "./mermaid-dcacb631.js";
2var parser = function() {
3 var o = function(k, v, o2, l) {
4 for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)
5 ;
6 return o2;
7 }, $V0 = [1, 17], $V1 = [1, 18], $V2 = [1, 19], $V3 = [1, 39], $V4 = [1, 40], $V5 = [1, 25], $V6 = [1, 23], $V7 = [1, 24], $V8 = [1, 31], $V9 = [1, 32], $Va = [1, 33], $Vb = [1, 34], $Vc = [1, 35], $Vd = [1, 36], $Ve = [1, 26], $Vf = [1, 27], $Vg = [1, 28], $Vh = [1, 29], $Vi = [1, 43], $Vj = [1, 30], $Vk = [1, 42], $Vl = [1, 44], $Vm = [1, 41], $Vn = [1, 45], $Vo = [1, 9], $Vp = [1, 8, 9], $Vq = [1, 56], $Vr = [1, 57], $Vs = [1, 58], $Vt = [1, 59], $Vu = [1, 60], $Vv = [1, 61], $Vw = [1, 62], $Vx = [1, 8, 9, 39], $Vy = [1, 74], $Vz = [1, 8, 9, 12, 13, 21, 37, 39, 42, 59, 60, 61, 62, 63, 64, 65, 70, 72], $VA = [1, 8, 9, 12, 13, 19, 21, 37, 39, 42, 46, 59, 60, 61, 62, 63, 64, 65, 70, 72, 74, 80, 95, 97, 98], $VB = [13, 74, 80, 95, 97, 98], $VC = [13, 64, 65, 74, 80, 95, 97, 98], $VD = [13, 59, 60, 61, 62, 63, 74, 80, 95, 97, 98], $VE = [1, 93], $VF = [1, 110], $VG = [1, 108], $VH = [1, 102], $VI = [1, 103], $VJ = [1, 104], $VK = [1, 105], $VL = [1, 106], $VM = [1, 107], $VN = [1, 109], $VO = [1, 8, 9, 37, 39, 42], $VP = [1, 8, 9, 21], $VQ = [1, 8, 9, 78], $VR = [1, 8, 9, 21, 73, 74, 78, 80, 81, 82, 83, 84, 85];
8 var parser2 = {
9 trace: function trace() {
10 },
11 yy: {},
12 symbols_: { "error": 2, "start": 3, "mermaidDoc": 4, "statements": 5, "graphConfig": 6, "CLASS_DIAGRAM": 7, "NEWLINE": 8, "EOF": 9, "statement": 10, "classLabel": 11, "SQS": 12, "STR": 13, "SQE": 14, "namespaceName": 15, "alphaNumToken": 16, "className": 17, "classLiteralName": 18, "GENERICTYPE": 19, "relationStatement": 20, "LABEL": 21, "namespaceStatement": 22, "classStatement": 23, "memberStatement": 24, "annotationStatement": 25, "clickStatement": 26, "styleStatement": 27, "cssClassStatement": 28, "noteStatement": 29, "direction": 30, "acc_title": 31, "acc_title_value": 32, "acc_descr": 33, "acc_descr_value": 34, "acc_descr_multiline_value": 35, "namespaceIdentifier": 36, "STRUCT_START": 37, "classStatements": 38, "STRUCT_STOP": 39, "NAMESPACE": 40, "classIdentifier": 41, "STYLE_SEPARATOR": 42, "members": 43, "CLASS": 44, "ANNOTATION_START": 45, "ANNOTATION_END": 46, "MEMBER": 47, "SEPARATOR": 48, "relation": 49, "NOTE_FOR": 50, "noteText": 51, "NOTE": 52, "direction_tb": 53, "direction_bt": 54, "direction_rl": 55, "direction_lr": 56, "relationType": 57, "lineType": 58, "AGGREGATION": 59, "EXTENSION": 60, "COMPOSITION": 61, "DEPENDENCY": 62, "LOLLIPOP": 63, "LINE": 64, "DOTTED_LINE": 65, "CALLBACK": 66, "LINK": 67, "LINK_TARGET": 68, "CLICK": 69, "CALLBACK_NAME": 70, "CALLBACK_ARGS": 71, "HREF": 72, "STYLE": 73, "ALPHA": 74, "stylesOpt": 75, "CSSCLASS": 76, "style": 77, "COMMA": 78, "styleComponent": 79, "NUM": 80, "COLON": 81, "UNIT": 82, "SPACE": 83, "BRKT": 84, "PCT": 85, "commentToken": 86, "textToken": 87, "graphCodeTokens": 88, "textNoTagsToken": 89, "TAGSTART": 90, "TAGEND": 91, "==": 92, "--": 93, "DEFAULT": 94, "MINUS": 95, "keywords": 96, "UNICODE_TEXT": 97, "BQUOTE_STR": 98, "$accept": 0, "$end": 1 },
13 terminals_: { 2: "error", 7: "CLASS_DIAGRAM", 8: "NEWLINE", 9: "EOF", 12: "SQS", 13: "STR", 14: "SQE", 19: "GENERICTYPE", 21: "LABEL", 31: "acc_title", 32: "acc_title_value", 33: "acc_descr", 34: "acc_descr_value", 35: "acc_descr_multiline_value", 37: "STRUCT_START", 39: "STRUCT_STOP", 40: "NAMESPACE", 42: "STYLE_SEPARATOR", 44: "CLASS", 45: "ANNOTATION_START", 46: "ANNOTATION_END", 47: "MEMBER", 48: "SEPARATOR", 50: "NOTE_FOR", 52: "NOTE", 53: "direction_tb", 54: "direction_bt", 55: "direction_rl", 56: "direction_lr", 59: "AGGREGATION", 60: "EXTENSION", 61: "COMPOSITION", 62: "DEPENDENCY", 63: "LOLLIPOP", 64: "LINE", 65: "DOTTED_LINE", 66: "CALLBACK", 67: "LINK", 68: "LINK_TARGET", 69: "CLICK", 70: "CALLBACK_NAME", 71: "CALLBACK_ARGS", 72: "HREF", 73: "STYLE", 74: "ALPHA", 76: "CSSCLASS", 78: "COMMA", 80: "NUM", 81: "COLON", 82: "UNIT", 83: "SPACE", 84: "BRKT", 85: "PCT", 88: "graphCodeTokens", 90: "TAGSTART", 91: "TAGEND", 92: "==", 93: "--", 94: "DEFAULT", 95: "MINUS", 96: "keywords", 97: "UNICODE_TEXT", 98: "BQUOTE_STR" },
14 productions_: [0, [3, 1], [3, 1], [4, 1], [6, 4], [5, 1], [5, 2], [5, 3], [11, 3], [15, 1], [15, 2], [17, 1], [17, 1], [17, 2], [17, 2], [17, 2], [10, 1], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [22, 4], [22, 5], [36, 2], [38, 1], [38, 2], [38, 3], [23, 1], [23, 3], [23, 4], [23, 6], [41, 2], [41, 3], [25, 4], [43, 1], [43, 2], [24, 1], [24, 2], [24, 1], [24, 1], [20, 3], [20, 4], [20, 4], [20, 5], [29, 3], [29, 2], [30, 1], [30, 1], [30, 1], [30, 1], [49, 3], [49, 2], [49, 2], [49, 1], [57, 1], [57, 1], [57, 1], [57, 1], [57, 1], [58, 1], [58, 1], [26, 3], [26, 4], [26, 3], [26, 4], [26, 4], [26, 5], [26, 3], [26, 4], [26, 4], [26, 5], [26, 4], [26, 5], [26, 5], [26, 6], [27, 3], [28, 3], [75, 1], [75, 3], [77, 1], [77, 2], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [86, 1], [86, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [89, 1], [89, 1], [89, 1], [89, 1], [16, 1], [16, 1], [16, 1], [16, 1], [18, 1], [51, 1]],
15 performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
16 var $0 = $$.length - 1;
17 switch (yystate) {
18 case 8:
19 this.$ = $$[$0 - 1];
20 break;
21 case 9:
22 case 11:
23 case 12:
24 this.$ = $$[$0];
25 break;
26 case 10:
27 case 13:
28 this.$ = $$[$0 - 1] + $$[$0];
29 break;
30 case 14:
31 case 15:
32 this.$ = $$[$0 - 1] + "~" + $$[$0] + "~";
33 break;
34 case 16:
35 yy.addRelation($$[$0]);
36 break;
37 case 17:
38 $$[$0 - 1].title = yy.cleanupLabel($$[$0]);
39 yy.addRelation($$[$0 - 1]);
40 break;
41 case 27:
42 this.$ = $$[$0].trim();
43 yy.setAccTitle(this.$);
44 break;
45 case 28:
46 case 29:
47 this.$ = $$[$0].trim();
48 yy.setAccDescription(this.$);
49 break;
50 case 30:
51 yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]);
52 break;
53 case 31:
54 yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]);
55 break;
56 case 32:
57 this.$ = $$[$0];
58 yy.addNamespace($$[$0]);
59 break;
60 case 33:
61 this.$ = [$$[$0]];
62 break;
63 case 34:
64 this.$ = [$$[$0 - 1]];
65 break;
66 case 35:
67 $$[$0].unshift($$[$0 - 2]);
68 this.$ = $$[$0];
69 break;
70 case 37:
71 yy.setCssClass($$[$0 - 2], $$[$0]);
72 break;
73 case 38:
74 yy.addMembers($$[$0 - 3], $$[$0 - 1]);
75 break;
76 case 39:
77 yy.setCssClass($$[$0 - 5], $$[$0 - 3]);
78 yy.addMembers($$[$0 - 5], $$[$0 - 1]);
79 break;
80 case 40:
81 this.$ = $$[$0];
82 yy.addClass($$[$0]);
83 break;
84 case 41:
85 this.$ = $$[$0 - 1];
86 yy.addClass($$[$0 - 1]);
87 yy.setClassLabel($$[$0 - 1], $$[$0]);
88 break;
89 case 42:
90 yy.addAnnotation($$[$0], $$[$0 - 2]);
91 break;
92 case 43:
93 this.$ = [$$[$0]];
94 break;
95 case 44:
96 $$[$0].push($$[$0 - 1]);
97 this.$ = $$[$0];
98 break;
99 case 45:
100 break;
101 case 46:
102 yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0]));
103 break;
104 case 47:
105 break;
106 case 48:
107 break;
108 case 49:
109 this.$ = { "id1": $$[$0 - 2], "id2": $$[$0], relation: $$[$0 - 1], relationTitle1: "none", relationTitle2: "none" };
110 break;
111 case 50:
112 this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: "none" };
113 break;
114 case 51:
115 this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: "none", relationTitle2: $$[$0 - 1] };
116 break;
117 case 52:
118 this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] };
119 break;
120 case 53:
121 yy.addNote($$[$0], $$[$0 - 1]);
122 break;
123 case 54:
124 yy.addNote($$[$0]);
125 break;
126 case 55:
127 yy.setDirection("TB");
128 break;
129 case 56:
130 yy.setDirection("BT");
131 break;
132 case 57:
133 yy.setDirection("RL");
134 break;
135 case 58:
136 yy.setDirection("LR");
137 break;
138 case 59:
139 this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] };
140 break;
141 case 60:
142 this.$ = { type1: "none", type2: $$[$0], lineType: $$[$0 - 1] };
143 break;
144 case 61:
145 this.$ = { type1: $$[$0 - 1], type2: "none", lineType: $$[$0] };
146 break;
147 case 62:
148 this.$ = { type1: "none", type2: "none", lineType: $$[$0] };
149 break;
150 case 63:
151 this.$ = yy.relationType.AGGREGATION;
152 break;
153 case 64:
154 this.$ = yy.relationType.EXTENSION;
155 break;
156 case 65:
157 this.$ = yy.relationType.COMPOSITION;
158 break;
159 case 66:
160 this.$ = yy.relationType.DEPENDENCY;
161 break;
162 case 67:
163 this.$ = yy.relationType.LOLLIPOP;
164 break;
165 case 68:
166 this.$ = yy.lineType.LINE;
167 break;
168 case 69:
169 this.$ = yy.lineType.DOTTED_LINE;
170 break;
171 case 70:
172 case 76:
173 this.$ = $$[$0 - 2];
174 yy.setClickEvent($$[$0 - 1], $$[$0]);
175 break;
176 case 71:
177 case 77:
178 this.$ = $$[$0 - 3];
179 yy.setClickEvent($$[$0 - 2], $$[$0 - 1]);
180 yy.setTooltip($$[$0 - 2], $$[$0]);
181 break;
182 case 72:
183 this.$ = $$[$0 - 2];
184 yy.setLink($$[$0 - 1], $$[$0]);
185 break;
186 case 73:
187 this.$ = $$[$0 - 3];
188 yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]);
189 break;
190 case 74:
191 this.$ = $$[$0 - 3];
192 yy.setLink($$[$0 - 2], $$[$0 - 1]);
193 yy.setTooltip($$[$0 - 2], $$[$0]);
194 break;
195 case 75:
196 this.$ = $$[$0 - 4];
197 yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);
198 yy.setTooltip($$[$0 - 3], $$[$0 - 1]);
199 break;
200 case 78:
201 this.$ = $$[$0 - 3];
202 yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);
203 break;
204 case 79:
205 this.$ = $$[$0 - 4];
206 yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);
207 yy.setTooltip($$[$0 - 3], $$[$0]);
208 break;
209 case 80:
210 this.$ = $$[$0 - 3];
211 yy.setLink($$[$0 - 2], $$[$0]);
212 break;
213 case 81:
214 this.$ = $$[$0 - 4];
215 yy.setLink($$[$0 - 3], $$[$0 - 1], $$[$0]);
216 break;
217 case 82:
218 this.$ = $$[$0 - 4];
219 yy.setLink($$[$0 - 3], $$[$0 - 1]);
220 yy.setTooltip($$[$0 - 3], $$[$0]);
221 break;
222 case 83:
223 this.$ = $$[$0 - 5];
224 yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);
225 yy.setTooltip($$[$0 - 4], $$[$0 - 1]);
226 break;
227 case 84:
228 this.$ = $$[$0 - 2];
229 yy.setCssStyle($$[$0 - 1], $$[$0]);
230 break;
231 case 85:
232 yy.setCssClass($$[$0 - 1], $$[$0]);
233 break;
234 case 86:
235 this.$ = [$$[$0]];
236 break;
237 case 87:
238 $$[$0 - 2].push($$[$0]);
239 this.$ = $$[$0 - 2];
240 break;
241 case 89:
242 this.$ = $$[$0 - 1] + $$[$0];
243 break;
244 }
245 },
246 table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: [1, 6], 10: 5, 16: 37, 17: 20, 18: 38, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: 16, 31: $V0, 33: $V1, 35: $V2, 36: 21, 40: $V3, 41: 22, 44: $V4, 45: $V5, 47: $V6, 48: $V7, 50: $V8, 52: $V9, 53: $Va, 54: $Vb, 55: $Vc, 56: $Vd, 66: $Ve, 67: $Vf, 69: $Vg, 73: $Vh, 74: $Vi, 76: $Vj, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o($Vo, [2, 5], { 8: [1, 46] }), { 8: [1, 47] }, o($Vp, [2, 16], { 21: [1, 48] }), o($Vp, [2, 18]), o($Vp, [2, 19]), o($Vp, [2, 20]), o($Vp, [2, 21]), o($Vp, [2, 22]), o($Vp, [2, 23]), o($Vp, [2, 24]), o($Vp, [2, 25]), o($Vp, [2, 26]), { 32: [1, 49] }, { 34: [1, 50] }, o($Vp, [2, 29]), o($Vp, [2, 45], { 49: 51, 57: 54, 58: 55, 13: [1, 52], 21: [1, 53], 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv, 65: $Vw }), { 37: [1, 63] }, o($Vx, [2, 36], { 37: [1, 65], 42: [1, 64] }), o($Vp, [2, 47]), o($Vp, [2, 48]), { 16: 66, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, { 16: 37, 17: 67, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 16: 37, 17: 68, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 16: 37, 17: 69, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 74: [1, 70] }, { 13: [1, 71] }, { 16: 37, 17: 72, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 13: $Vy, 51: 73 }, o($Vp, [2, 55]), o($Vp, [2, 56]), o($Vp, [2, 57]), o($Vp, [2, 58]), o($Vz, [2, 11], { 16: 37, 18: 38, 17: 75, 19: [1, 76], 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }), o($Vz, [2, 12], { 19: [1, 77] }), { 15: 78, 16: 79, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, { 16: 37, 17: 80, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($VA, [2, 112]), o($VA, [2, 113]), o($VA, [2, 114]), o($VA, [2, 115]), o([1, 8, 9, 12, 13, 19, 21, 37, 39, 42, 59, 60, 61, 62, 63, 64, 65, 70, 72], [2, 116]), o($Vo, [2, 6], { 10: 5, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: 16, 17: 20, 36: 21, 41: 22, 16: 37, 18: 38, 5: 81, 31: $V0, 33: $V1, 35: $V2, 40: $V3, 44: $V4, 45: $V5, 47: $V6, 48: $V7, 50: $V8, 52: $V9, 53: $Va, 54: $Vb, 55: $Vc, 56: $Vd, 66: $Ve, 67: $Vf, 69: $Vg, 73: $Vh, 74: $Vi, 76: $Vj, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }), { 5: 82, 10: 5, 16: 37, 17: 20, 18: 38, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: 16, 31: $V0, 33: $V1, 35: $V2, 36: 21, 40: $V3, 41: 22, 44: $V4, 45: $V5, 47: $V6, 48: $V7, 50: $V8, 52: $V9, 53: $Va, 54: $Vb, 55: $Vc, 56: $Vd, 66: $Ve, 67: $Vf, 69: $Vg, 73: $Vh, 74: $Vi, 76: $Vj, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($Vp, [2, 17]), o($Vp, [2, 27]), o($Vp, [2, 28]), { 13: [1, 84], 16: 37, 17: 83, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 49: 85, 57: 54, 58: 55, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv, 65: $Vw }, o($Vp, [2, 46]), { 58: 86, 64: $Vv, 65: $Vw }, o($VB, [2, 62], { 57: 87, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu }), o($VC, [2, 63]), o($VC, [2, 64]), o($VC, [2, 65]), o($VC, [2, 66]), o($VC, [2, 67]), o($VD, [2, 68]), o($VD, [2, 69]), { 8: [1, 89], 23: 90, 38: 88, 41: 22, 44: $V4 }, { 16: 91, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, { 43: 92, 47: $VE }, { 46: [1, 94] }, { 13: [1, 95] }, { 13: [1, 96] }, { 70: [1, 97], 72: [1, 98] }, { 21: $VF, 73: $VG, 74: $VH, 75: 99, 77: 100, 79: 101, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }, { 74: [1, 111] }, { 13: $Vy, 51: 112 }, o($Vp, [2, 54]), o($Vp, [2, 117]), o($Vz, [2, 13]), o($Vz, [2, 14]), o($Vz, [2, 15]), { 37: [2, 32] }, { 15: 113, 16: 79, 37: [2, 9], 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, o($VO, [2, 40], { 11: 114, 12: [1, 115] }), o($Vo, [2, 7]), { 9: [1, 116] }, o($VP, [2, 49]), { 16: 37, 17: 117, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 13: [1, 119], 16: 37, 17: 118, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($VB, [2, 61], { 57: 120, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu }), o($VB, [2, 60]), { 39: [1, 121] }, { 23: 90, 38: 122, 41: 22, 44: $V4 }, { 8: [1, 123], 39: [2, 33] }, o($Vx, [2, 37], { 37: [1, 124] }), { 39: [1, 125] }, { 39: [2, 43], 43: 126, 47: $VE }, { 16: 37, 17: 127, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($Vp, [2, 70], { 13: [1, 128] }), o($Vp, [2, 72], { 13: [1, 130], 68: [1, 129] }), o($Vp, [2, 76], { 13: [1, 131], 71: [1, 132] }), { 13: [1, 133] }, o($Vp, [2, 84], { 78: [1, 134] }), o($VQ, [2, 86], { 79: 135, 21: $VF, 73: $VG, 74: $VH, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }), o($VR, [2, 88]), o($VR, [2, 90]), o($VR, [2, 91]), o($VR, [2, 92]), o($VR, [2, 93]), o($VR, [2, 94]), o($VR, [2, 95]), o($VR, [2, 96]), o($VR, [2, 97]), o($VR, [2, 98]), o($Vp, [2, 85]), o($Vp, [2, 53]), { 37: [2, 10] }, o($VO, [2, 41]), { 13: [1, 136] }, { 1: [2, 4] }, o($VP, [2, 51]), o($VP, [2, 50]), { 16: 37, 17: 137, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($VB, [2, 59]), o($Vp, [2, 30]), { 39: [1, 138] }, { 23: 90, 38: 139, 39: [2, 34], 41: 22, 44: $V4 }, { 43: 140, 47: $VE }, o($Vx, [2, 38]), { 39: [2, 44] }, o($Vp, [2, 42]), o($Vp, [2, 71]), o($Vp, [2, 73]), o($Vp, [2, 74], { 68: [1, 141] }), o($Vp, [2, 77]), o($Vp, [2, 78], { 13: [1, 142] }), o($Vp, [2, 80], { 13: [1, 144], 68: [1, 143] }), { 21: $VF, 73: $VG, 74: $VH, 77: 145, 79: 101, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }, o($VR, [2, 89]), { 14: [1, 146] }, o($VP, [2, 52]), o($Vp, [2, 31]), { 39: [2, 35] }, { 39: [1, 147] }, o($Vp, [2, 75]), o($Vp, [2, 79]), o($Vp, [2, 81]), o($Vp, [2, 82], { 68: [1, 148] }), o($VQ, [2, 87], { 79: 135, 21: $VF, 73: $VG, 74: $VH, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }), o($VO, [2, 8]), o($Vx, [2, 39]), o($Vp, [2, 83])],
247 defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 78: [2, 32], 113: [2, 10], 116: [2, 4], 126: [2, 44], 139: [2, 35] },
248 parseError: function parseError(str, hash) {
249 if (hash.recoverable) {
250 this.trace(str);
251 } else {
252 var error = new Error(str);
253 error.hash = hash;
254 throw error;
255 }
256 },
257 parse: function parse(input) {
258 var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;
259 var args = lstack.slice.call(arguments, 1);
260 var lexer2 = Object.create(this.lexer);
261 var sharedState = { yy: {} };
262 for (var k in this.yy) {
263 if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
264 sharedState.yy[k] = this.yy[k];
265 }
266 }
267 lexer2.setInput(input, sharedState.yy);
268 sharedState.yy.lexer = lexer2;
269 sharedState.yy.parser = this;
270 if (typeof lexer2.yylloc == "undefined") {
271 lexer2.yylloc = {};
272 }
273 var yyloc = lexer2.yylloc;
274 lstack.push(yyloc);
275 var ranges = lexer2.options && lexer2.options.ranges;
276 if (typeof sharedState.yy.parseError === "function") {
277 this.parseError = sharedState.yy.parseError;
278 } else {
279 this.parseError = Object.getPrototypeOf(this).parseError;
280 }
281 function lex() {
282 var token;
283 token = tstack.pop() || lexer2.lex() || EOF;
284 if (typeof token !== "number") {
285 if (token instanceof Array) {
286 tstack = token;
287 token = tstack.pop();
288 }
289 token = self.symbols_[token] || token;
290 }
291 return token;
292 }
293 var symbol, state, action, r, yyval = {}, p, len, newState, expected;
294 while (true) {
295 state = stack[stack.length - 1];
296 if (this.defaultActions[state]) {
297 action = this.defaultActions[state];
298 } else {
299 if (symbol === null || typeof symbol == "undefined") {
300 symbol = lex();
301 }
302 action = table[state] && table[state][symbol];
303 }
304 if (typeof action === "undefined" || !action.length || !action[0]) {
305 var errStr = "";
306 expected = [];
307 for (p in table[state]) {
308 if (this.terminals_[p] && p > TERROR) {
309 expected.push("'" + this.terminals_[p] + "'");
310 }
311 }
312 if (lexer2.showPosition) {
313 errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
314 } else {
315 errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
316 }
317 this.parseError(errStr, {
318 text: lexer2.match,
319 token: this.terminals_[symbol] || symbol,
320 line: lexer2.yylineno,
321 loc: yyloc,
322 expected
323 });
324 }
325 if (action[0] instanceof Array && action.length > 1) {
326 throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
327 }
328 switch (action[0]) {
329 case 1:
330 stack.push(symbol);
331 vstack.push(lexer2.yytext);
332 lstack.push(lexer2.yylloc);
333 stack.push(action[1]);
334 symbol = null;
335 {
336 yyleng = lexer2.yyleng;
337 yytext = lexer2.yytext;
338 yylineno = lexer2.yylineno;
339 yyloc = lexer2.yylloc;
340 }
341 break;
342 case 2:
343 len = this.productions_[action[1]][1];
344 yyval.$ = vstack[vstack.length - len];
345 yyval._$ = {
346 first_line: lstack[lstack.length - (len || 1)].first_line,
347 last_line: lstack[lstack.length - 1].last_line,
348 first_column: lstack[lstack.length - (len || 1)].first_column,
349 last_column: lstack[lstack.length - 1].last_column
350 };
351 if (ranges) {
352 yyval._$.range = [
353 lstack[lstack.length - (len || 1)].range[0],
354 lstack[lstack.length - 1].range[1]
355 ];
356 }
357 r = this.performAction.apply(yyval, [
358 yytext,
359 yyleng,
360 yylineno,
361 sharedState.yy,
362 action[1],
363 vstack,
364 lstack
365 ].concat(args));
366 if (typeof r !== "undefined") {
367 return r;
368 }
369 if (len) {
370 stack = stack.slice(0, -1 * len * 2);
371 vstack = vstack.slice(0, -1 * len);
372 lstack = lstack.slice(0, -1 * len);
373 }
374 stack.push(this.productions_[action[1]][0]);
375 vstack.push(yyval.$);
376 lstack.push(yyval._$);
377 newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
378 stack.push(newState);
379 break;
380 case 3:
381 return true;
382 }
383 }
384 return true;
385 }
386 };
387 var lexer = function() {
388 var lexer2 = {
389 EOF: 1,
390 parseError: function parseError(str, hash) {
391 if (this.yy.parser) {
392 this.yy.parser.parseError(str, hash);
393 } else {
394 throw new Error(str);
395 }
396 },
397 // resets the lexer, sets new input
398 setInput: function(input, yy) {
399 this.yy = yy || this.yy || {};
400 this._input = input;
401 this._more = this._backtrack = this.done = false;
402 this.yylineno = this.yyleng = 0;
403 this.yytext = this.matched = this.match = "";
404 this.conditionStack = ["INITIAL"];
405 this.yylloc = {
406 first_line: 1,
407 first_column: 0,
408 last_line: 1,
409 last_column: 0
410 };
411 if (this.options.ranges) {
412 this.yylloc.range = [0, 0];
413 }
414 this.offset = 0;
415 return this;
416 },
417 // consumes and returns one char from the input
418 input: function() {
419 var ch = this._input[0];
420 this.yytext += ch;
421 this.yyleng++;
422 this.offset++;
423 this.match += ch;
424 this.matched += ch;
425 var lines = ch.match(/(?:\r\n?|\n).*/g);
426 if (lines) {
427 this.yylineno++;
428 this.yylloc.last_line++;
429 } else {
430 this.yylloc.last_column++;
431 }
432 if (this.options.ranges) {
433 this.yylloc.range[1]++;
434 }
435 this._input = this._input.slice(1);
436 return ch;
437 },
438 // unshifts one char (or a string) into the input
439 unput: function(ch) {
440 var len = ch.length;
441 var lines = ch.split(/(?:\r\n?|\n)/g);
442 this._input = ch + this._input;
443 this.yytext = this.yytext.substr(0, this.yytext.length - len);
444 this.offset -= len;
445 var oldLines = this.match.split(/(?:\r\n?|\n)/g);
446 this.match = this.match.substr(0, this.match.length - 1);
447 this.matched = this.matched.substr(0, this.matched.length - 1);
448 if (lines.length - 1) {
449 this.yylineno -= lines.length - 1;
450 }
451 var r = this.yylloc.range;
452 this.yylloc = {
453 first_line: this.yylloc.first_line,
454 last_line: this.yylineno + 1,
455 first_column: this.yylloc.first_column,
456 last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
457 };
458 if (this.options.ranges) {
459 this.yylloc.range = [r[0], r[0] + this.yyleng - len];
460 }
461 this.yyleng = this.yytext.length;
462 return this;
463 },
464 // When called from action, caches matched text and appends it on next action
465 more: function() {
466 this._more = true;
467 return this;
468 },
469 // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
470 reject: function() {
471 if (this.options.backtrack_lexer) {
472 this._backtrack = true;
473 } else {
474 return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
475 text: "",
476 token: null,
477 line: this.yylineno
478 });
479 }
480 return this;
481 },
482 // retain first n characters of the match
483 less: function(n) {
484 this.unput(this.match.slice(n));
485 },
486 // displays already matched input, i.e. for error messages
487 pastInput: function() {
488 var past = this.matched.substr(0, this.matched.length - this.match.length);
489 return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
490 },
491 // displays upcoming input, i.e. for error messages
492 upcomingInput: function() {
493 var next = this.match;
494 if (next.length < 20) {
495 next += this._input.substr(0, 20 - next.length);
496 }
497 return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
498 },
499 // displays the character position where the lexing error occurred, i.e. for error messages
500 showPosition: function() {
501 var pre = this.pastInput();
502 var c = new Array(pre.length + 1).join("-");
503 return pre + this.upcomingInput() + "\n" + c + "^";
504 },
505 // test the lexed token: return FALSE when not a match, otherwise return token
506 test_match: function(match, indexed_rule) {
507 var token, lines, backup;
508 if (this.options.backtrack_lexer) {
509 backup = {
510 yylineno: this.yylineno,
511 yylloc: {
512 first_line: this.yylloc.first_line,
513 last_line: this.last_line,
514 first_column: this.yylloc.first_column,
515 last_column: this.yylloc.last_column
516 },
517 yytext: this.yytext,
518 match: this.match,
519 matches: this.matches,
520 matched: this.matched,
521 yyleng: this.yyleng,
522 offset: this.offset,
523 _more: this._more,
524 _input: this._input,
525 yy: this.yy,
526 conditionStack: this.conditionStack.slice(0),
527 done: this.done
528 };
529 if (this.options.ranges) {
530 backup.yylloc.range = this.yylloc.range.slice(0);
531 }
532 }
533 lines = match[0].match(/(?:\r\n?|\n).*/g);
534 if (lines) {
535 this.yylineno += lines.length;
536 }
537 this.yylloc = {
538 first_line: this.yylloc.last_line,
539 last_line: this.yylineno + 1,
540 first_column: this.yylloc.last_column,
541 last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
542 };
543 this.yytext += match[0];
544 this.match += match[0];
545 this.matches = match;
546 this.yyleng = this.yytext.length;
547 if (this.options.ranges) {
548 this.yylloc.range = [this.offset, this.offset += this.yyleng];
549 }
550 this._more = false;
551 this._backtrack = false;
552 this._input = this._input.slice(match[0].length);
553 this.matched += match[0];
554 token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
555 if (this.done && this._input) {
556 this.done = false;
557 }
558 if (token) {
559 return token;
560 } else if (this._backtrack) {
561 for (var k in backup) {
562 this[k] = backup[k];
563 }
564 return false;
565 }
566 return false;
567 },
568 // return next match in input
569 next: function() {
570 if (this.done) {
571 return this.EOF;
572 }
573 if (!this._input) {
574 this.done = true;
575 }
576 var token, match, tempMatch, index;
577 if (!this._more) {
578 this.yytext = "";
579 this.match = "";
580 }
581 var rules = this._currentRules();
582 for (var i = 0; i < rules.length; i++) {
583 tempMatch = this._input.match(this.rules[rules[i]]);
584 if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
585 match = tempMatch;
586 index = i;
587 if (this.options.backtrack_lexer) {
588 token = this.test_match(tempMatch, rules[i]);
589 if (token !== false) {
590 return token;
591 } else if (this._backtrack) {
592 match = false;
593 continue;
594 } else {
595 return false;
596 }
597 } else if (!this.options.flex) {
598 break;
599 }
600 }
601 }
602 if (match) {
603 token = this.test_match(match, rules[index]);
604 if (token !== false) {
605 return token;
606 }
607 return false;
608 }
609 if (this._input === "") {
610 return this.EOF;
611 } else {
612 return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
613 text: "",
614 token: null,
615 line: this.yylineno
616 });
617 }
618 },
619 // return next match that has a token
620 lex: function lex() {
621 var r = this.next();
622 if (r) {
623 return r;
624 } else {
625 return this.lex();
626 }
627 },
628 // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
629 begin: function begin(condition) {
630 this.conditionStack.push(condition);
631 },
632 // pop the previously active lexer condition state off the condition stack
633 popState: function popState() {
634 var n = this.conditionStack.length - 1;
635 if (n > 0) {
636 return this.conditionStack.pop();
637 } else {
638 return this.conditionStack[0];
639 }
640 },
641 // produce the lexer rule set which is active for the currently active lexer condition state
642 _currentRules: function _currentRules() {
643 if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
644 return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
645 } else {
646 return this.conditions["INITIAL"].rules;
647 }
648 },
649 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
650 topState: function topState(n) {
651 n = this.conditionStack.length - 1 - Math.abs(n || 0);
652 if (n >= 0) {
653 return this.conditionStack[n];
654 } else {
655 return "INITIAL";
656 }
657 },
658 // alias for begin(condition)
659 pushState: function pushState(condition) {
660 this.begin(condition);
661 },
662 // return the number of states currently on the stack
663 stateStackSize: function stateStackSize() {
664 return this.conditionStack.length;
665 },
666 options: {},
667 performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
668 switch ($avoiding_name_collisions) {
669 case 0:
670 return 53;
671 case 1:
672 return 54;
673 case 2:
674 return 55;
675 case 3:
676 return 56;
677 case 4:
678 break;
679 case 5:
680 break;
681 case 6:
682 this.begin("acc_title");
683 return 31;
684 case 7:
685 this.popState();
686 return "acc_title_value";
687 case 8:
688 this.begin("acc_descr");
689 return 33;
690 case 9:
691 this.popState();
692 return "acc_descr_value";
693 case 10:
694 this.begin("acc_descr_multiline");
695 break;
696 case 11:
697 this.popState();
698 break;
699 case 12:
700 return "acc_descr_multiline_value";
701 case 13:
702 return 8;
703 case 14:
704 break;
705 case 15:
706 return 7;
707 case 16:
708 return 7;
709 case 17:
710 return "EDGE_STATE";
711 case 18:
712 this.begin("callback_name");
713 break;
714 case 19:
715 this.popState();
716 break;
717 case 20:
718 this.popState();
719 this.begin("callback_args");
720 break;
721 case 21:
722 return 70;
723 case 22:
724 this.popState();
725 break;
726 case 23:
727 return 71;
728 case 24:
729 this.popState();
730 break;
731 case 25:
732 return "STR";
733 case 26:
734 this.begin("string");
735 break;
736 case 27:
737 return 73;
738 case 28:
739 this.begin("namespace");
740 return 40;
741 case 29:
742 this.popState();
743 return 8;
744 case 30:
745 break;
746 case 31:
747 this.begin("namespace-body");
748 return 37;
749 case 32:
750 this.popState();
751 return 39;
752 case 33:
753 return "EOF_IN_STRUCT";
754 case 34:
755 return 8;
756 case 35:
757 break;
758 case 36:
759 return "EDGE_STATE";
760 case 37:
761 this.begin("class");
762 return 44;
763 case 38:
764 this.popState();
765 return 8;
766 case 39:
767 break;
768 case 40:
769 this.popState();
770 this.popState();
771 return 39;
772 case 41:
773 this.begin("class-body");
774 return 37;
775 case 42:
776 this.popState();
777 return 39;
778 case 43:
779 return "EOF_IN_STRUCT";
780 case 44:
781 return "EDGE_STATE";
782 case 45:
783 return "OPEN_IN_STRUCT";
784 case 46:
785 break;
786 case 47:
787 return "MEMBER";
788 case 48:
789 return 76;
790 case 49:
791 return 66;
792 case 50:
793 return 67;
794 case 51:
795 return 69;
796 case 52:
797 return 50;
798 case 53:
799 return 52;
800 case 54:
801 return 45;
802 case 55:
803 return 46;
804 case 56:
805 return 72;
806 case 57:
807 this.popState();
808 break;
809 case 58:
810 return "GENERICTYPE";
811 case 59:
812 this.begin("generic");
813 break;
814 case 60:
815 this.popState();
816 break;
817 case 61:
818 return "BQUOTE_STR";
819 case 62:
820 this.begin("bqstring");
821 break;
822 case 63:
823 return 68;
824 case 64:
825 return 68;
826 case 65:
827 return 68;
828 case 66:
829 return 68;
830 case 67:
831 return 60;
832 case 68:
833 return 60;
834 case 69:
835 return 62;
836 case 70:
837 return 62;
838 case 71:
839 return 61;
840 case 72:
841 return 59;
842 case 73:
843 return 63;
844 case 74:
845 return 64;
846 case 75:
847 return 65;
848 case 76:
849 return 21;
850 case 77:
851 return 42;
852 case 78:
853 return 95;
854 case 79:
855 return "DOT";
856 case 80:
857 return "PLUS";
858 case 81:
859 return 81;
860 case 82:
861 return 78;
862 case 83:
863 return 84;
864 case 84:
865 return 84;
866 case 85:
867 return 85;
868 case 86:
869 return "EQUALS";
870 case 87:
871 return "EQUALS";
872 case 88:
873 return 74;
874 case 89:
875 return 12;
876 case 90:
877 return 14;
878 case 91:
879 return "PUNCTUATION";
880 case 92:
881 return 80;
882 case 93:
883 return 97;
884 case 94:
885 return 83;
886 case 95:
887 return 83;
888 case 96:
889 return 9;
890 }
891 },
892 rules: [/^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/, /^(?:%%[^\n]*(\r?\n)*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:classDiagram-v2\b)/, /^(?:classDiagram\b)/, /^(?:\[\*\])/, /^(?:call[\s]+)/, /^(?:\([\s]*\))/, /^(?:\()/, /^(?:[^(]*)/, /^(?:\))/, /^(?:[^)]*)/, /^(?:["])/, /^(?:[^"]*)/, /^(?:["])/, /^(?:style\b)/, /^(?:namespace\b)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:\[\*\])/, /^(?:class\b)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\[\*\])/, /^(?:[{])/, /^(?:[\n])/, /^(?:[^{}\n]*)/, /^(?:cssClass\b)/, /^(?:callback\b)/, /^(?:link\b)/, /^(?:click\b)/, /^(?:note for\b)/, /^(?:note\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href\b)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:~)/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\b)/, /^(?:_blank\b)/, /^(?:_parent\b)/, /^(?:_top\b)/, /^(?:\s*<\|)/, /^(?:\s*\|>)/, /^(?:\s*>)/, /^(?:\s*<)/, /^(?:\s*\*)/, /^(?:\s*o\b)/, /^(?:\s*\(\))/, /^(?:--)/, /^(?:\.\.)/, /^(?::{1}[^:\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?::)/, /^(?:,)/, /^(?:#)/, /^(?:#)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\w+)/, /^(?:\[)/, /^(?:\])/, /^(?:[!"#$%&'*+,-.`?\\/])/, /^(?:[0-9]+)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\s)/, /^(?:\s)/, /^(?:$)/],
893 conditions: { "namespace-body": { "rules": [26, 32, 33, 34, 35, 36, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "namespace": { "rules": [26, 28, 29, 30, 31, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "class-body": { "rules": [26, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "class": { "rules": [26, 38, 39, 40, 41, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "acc_descr_multiline": { "rules": [11, 12, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "acc_descr": { "rules": [9, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "acc_title": { "rules": [7, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "callback_args": { "rules": [22, 23, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "callback_name": { "rules": [19, 20, 21, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "href": { "rules": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "struct": { "rules": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "generic": { "rules": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "bqstring": { "rules": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "string": { "rules": [24, 25, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 28, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96], "inclusive": true } }
894 };
895 return lexer2;
896 }();
897 parser2.lexer = lexer;
898 function Parser() {
899 this.yy = {};
900 }
901 Parser.prototype = parser2;
902 parser2.Parser = Parser;
903 return new Parser();
904}();
905parser.parser = parser;
906const parser$1 = parser;
907const visibilityValues = ["#", "+", "~", "-", ""];
908class ClassMember {
909 constructor(input, memberType) {
910 this.memberType = memberType;
911 this.visibility = "";
912 this.classifier = "";
913 const sanitizedInput = sanitizeText$1(input, getConfig());
914 this.parseMember(sanitizedInput);
915 }
916 getDisplayDetails() {
917 let displayText = this.visibility + parseGenericTypes(this.id);
918 if (this.memberType === "method") {
919 displayText += `(${parseGenericTypes(this.parameters.trim())})`;
920 if (this.returnType) {
921 displayText += " : " + parseGenericTypes(this.returnType);
922 }
923 }
924 displayText = displayText.trim();
925 const cssStyle = this.parseClassifier();
926 return {
927 displayText,
928 cssStyle
929 };
930 }
931 parseMember(input) {
932 let potentialClassifier = "";
933 if (this.memberType === "method") {
934 const methodRegEx = /([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/;
935 const match = input.match(methodRegEx);
936 if (match) {
937 const detectedVisibility = match[1] ? match[1].trim() : "";
938 if (visibilityValues.includes(detectedVisibility)) {
939 this.visibility = detectedVisibility;
940 }
941 this.id = match[2].trim();
942 this.parameters = match[3] ? match[3].trim() : "";
943 potentialClassifier = match[4] ? match[4].trim() : "";
944 this.returnType = match[5] ? match[5].trim() : "";
945 if (potentialClassifier === "") {
946 const lastChar = this.returnType.substring(this.returnType.length - 1);
947 if (lastChar.match(/[$*]/)) {
948 potentialClassifier = lastChar;
949 this.returnType = this.returnType.substring(0, this.returnType.length - 1);
950 }
951 }
952 }
953 } else {
954 const length = input.length;
955 const firstChar = input.substring(0, 1);
956 const lastChar = input.substring(length - 1);
957 if (visibilityValues.includes(firstChar)) {
958 this.visibility = firstChar;
959 }
960 if (lastChar.match(/[$*]/)) {
961 potentialClassifier = lastChar;
962 }
963 this.id = input.substring(
964 this.visibility === "" ? 0 : 1,
965 potentialClassifier === "" ? length : length - 1
966 );
967 }
968 this.classifier = potentialClassifier;
969 }
970 parseClassifier() {
971 switch (this.classifier) {
972 case "*":
973 return "font-style:italic;";
974 case "$":
975 return "text-decoration:underline;";
976 default:
977 return "";
978 }
979 }
980}
981const MERMAID_DOM_ID_PREFIX = "classId-";
982let relations = [];
983let classes = {};
984let notes = [];
985let classCounter = 0;
986let namespaces = {};
987let namespaceCounter = 0;
988let functions = [];
989const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
990const splitClassNameAndType = function(_id) {
991 const id = common.sanitizeText(_id, getConfig());
992 let genericType = "";
993 let className = id;
994 if (id.indexOf("~") > 0) {
995 const split = id.split("~");
996 className = sanitizeText(split[0]);
997 genericType = sanitizeText(split[1]);
998 }
999 return { className, type: genericType };
1000};
1001const setClassLabel = function(_id, label) {
1002 const id = common.sanitizeText(_id, getConfig());
1003 if (label) {
1004 label = sanitizeText(label);
1005 }
1006 const { className } = splitClassNameAndType(id);
1007 classes[className].label = label;
1008};
1009const addClass = function(_id) {
1010 const id = common.sanitizeText(_id, getConfig());
1011 const { className, type } = splitClassNameAndType(id);
1012 if (Object.hasOwn(classes, className)) {
1013 return;
1014 }
1015 const name = common.sanitizeText(className, getConfig());
1016 classes[name] = {
1017 id: name,
1018 type,
1019 label: name,
1020 cssClasses: [],
1021 methods: [],
1022 members: [],
1023 annotations: [],
1024 styles: [],
1025 domId: MERMAID_DOM_ID_PREFIX + name + "-" + classCounter
1026 };
1027 classCounter++;
1028};
1029const lookUpDomId = function(_id) {
1030 const id = common.sanitizeText(_id, getConfig());
1031 if (id in classes) {
1032 return classes[id].domId;
1033 }
1034 throw new Error("Class not found: " + id);
1035};
1036const clear = function() {
1037 relations = [];
1038 classes = {};
1039 notes = [];
1040 functions = [];
1041 functions.push(setupToolTips);
1042 namespaces = {};
1043 namespaceCounter = 0;
1044 clear$1();
1045};
1046const getClass = function(id) {
1047 return classes[id];
1048};
1049const getClasses = function() {
1050 return classes;
1051};
1052const getRelations = function() {
1053 return relations;
1054};
1055const getNotes = function() {
1056 return notes;
1057};
1058const addRelation = function(relation) {
1059 log.debug("Adding relation: " + JSON.stringify(relation));
1060 addClass(relation.id1);
1061 addClass(relation.id2);
1062 relation.id1 = splitClassNameAndType(relation.id1).className;
1063 relation.id2 = splitClassNameAndType(relation.id2).className;
1064 relation.relationTitle1 = common.sanitizeText(relation.relationTitle1.trim(), getConfig());
1065 relation.relationTitle2 = common.sanitizeText(relation.relationTitle2.trim(), getConfig());
1066 relations.push(relation);
1067};
1068const addAnnotation = function(className, annotation) {
1069 const validatedClassName = splitClassNameAndType(className).className;
1070 classes[validatedClassName].annotations.push(annotation);
1071};
1072const addMember = function(className, member) {
1073 addClass(className);
1074 const validatedClassName = splitClassNameAndType(className).className;
1075 const theClass = classes[validatedClassName];
1076 if (typeof member === "string") {
1077 const memberString = member.trim();
1078 if (memberString.startsWith("<<") && memberString.endsWith(">>")) {
1079 theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));
1080 } else if (memberString.indexOf(")") > 0) {
1081 theClass.methods.push(new ClassMember(memberString, "method"));
1082 } else if (memberString) {
1083 theClass.members.push(new ClassMember(memberString, "attribute"));
1084 }
1085 }
1086};
1087const addMembers = function(className, members) {
1088 if (Array.isArray(members)) {
1089 members.reverse();
1090 members.forEach((member) => addMember(className, member));
1091 }
1092};
1093const addNote = function(text, className) {
1094 const note = {
1095 id: `note${notes.length}`,
1096 class: className,
1097 text
1098 };
1099 notes.push(note);
1100};
1101const cleanupLabel = function(label) {
1102 if (label.startsWith(":")) {
1103 label = label.substring(1);
1104 }
1105 return sanitizeText(label.trim());
1106};
1107const setCssClass = function(ids, className) {
1108 ids.split(",").forEach(function(_id) {
1109 let id = _id;
1110 if (_id[0].match(/\d/)) {
1111 id = MERMAID_DOM_ID_PREFIX + id;
1112 }
1113 if (classes[id] !== void 0) {
1114 classes[id].cssClasses.push(className);
1115 }
1116 });
1117};
1118const setTooltip = function(ids, tooltip) {
1119 ids.split(",").forEach(function(id) {
1120 if (tooltip !== void 0) {
1121 classes[id].tooltip = sanitizeText(tooltip);
1122 }
1123 });
1124};
1125const getTooltip = function(id, namespace) {
1126 if (namespace) {
1127 return namespaces[namespace].classes[id].tooltip;
1128 }
1129 return classes[id].tooltip;
1130};
1131const setLink = function(ids, linkStr, target) {
1132 const config = getConfig();
1133 ids.split(",").forEach(function(_id) {
1134 let id = _id;
1135 if (_id[0].match(/\d/)) {
1136 id = MERMAID_DOM_ID_PREFIX + id;
1137 }
1138 if (classes[id] !== void 0) {
1139 classes[id].link = utils.formatUrl(linkStr, config);
1140 if (config.securityLevel === "sandbox") {
1141 classes[id].linkTarget = "_top";
1142 } else if (typeof target === "string") {
1143 classes[id].linkTarget = sanitizeText(target);
1144 } else {
1145 classes[id].linkTarget = "_blank";
1146 }
1147 }
1148 });
1149 setCssClass(ids, "clickable");
1150};
1151const setClickEvent = function(ids, functionName, functionArgs) {
1152 ids.split(",").forEach(function(id) {
1153 setClickFunc(id, functionName, functionArgs);
1154 classes[id].haveCallback = true;
1155 });
1156 setCssClass(ids, "clickable");
1157};
1158const setClickFunc = function(_domId, functionName, functionArgs) {
1159 const domId = common.sanitizeText(_domId, getConfig());
1160 const config = getConfig();
1161 if (config.securityLevel !== "loose") {
1162 return;
1163 }
1164 if (functionName === void 0) {
1165 return;
1166 }
1167 const id = domId;
1168 if (classes[id] !== void 0) {
1169 const elemId = lookUpDomId(id);
1170 let argList = [];
1171 if (typeof functionArgs === "string") {
1172 argList = functionArgs.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
1173 for (let i = 0; i < argList.length; i++) {
1174 let item = argList[i].trim();
1175 if (item.charAt(0) === '"' && item.charAt(item.length - 1) === '"') {
1176 item = item.substr(1, item.length - 2);
1177 }
1178 argList[i] = item;
1179 }
1180 }
1181 if (argList.length === 0) {
1182 argList.push(elemId);
1183 }
1184 functions.push(function() {
1185 const elem = document.querySelector(`[id="${elemId}"]`);
1186 if (elem !== null) {
1187 elem.addEventListener(
1188 "click",
1189 function() {
1190 utils.runFunc(functionName, ...argList);
1191 },
1192 false
1193 );
1194 }
1195 });
1196 }
1197};
1198const bindFunctions = function(element) {
1199 functions.forEach(function(fun) {
1200 fun(element);
1201 });
1202};
1203const lineType = {
1204 LINE: 0,
1205 DOTTED_LINE: 1
1206};
1207const relationType = {
1208 AGGREGATION: 0,
1209 EXTENSION: 1,
1210 COMPOSITION: 2,
1211 DEPENDENCY: 3,
1212 LOLLIPOP: 4
1213};
1214const setupToolTips = function(element) {
1215 let tooltipElem = d3select(".mermaidTooltip");
1216 if ((tooltipElem._groups || tooltipElem)[0][0] === null) {
1217 tooltipElem = d3select("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0);
1218 }
1219 const svg = d3select(element).select("svg");
1220 const nodes = svg.selectAll("g.node");
1221 nodes.on("mouseover", function() {
1222 const el = d3select(this);
1223 const title = el.attr("title");
1224 if (title === null) {
1225 return;
1226 }
1227 const rect = this.getBoundingClientRect();
1228 tooltipElem.transition().duration(200).style("opacity", ".9");
1229 tooltipElem.text(el.attr("title")).style("left", window.scrollX + rect.left + (rect.right - rect.left) / 2 + "px").style("top", window.scrollY + rect.top - 14 + document.body.scrollTop + "px");
1230 tooltipElem.html(tooltipElem.html().replace(/&lt;br\/&gt;/g, "<br/>"));
1231 el.classed("hover", true);
1232 }).on("mouseout", function() {
1233 tooltipElem.transition().duration(500).style("opacity", 0);
1234 const el = d3select(this);
1235 el.classed("hover", false);
1236 });
1237};
1238functions.push(setupToolTips);
1239let direction = "TB";
1240const getDirection = () => direction;
1241const setDirection = (dir) => {
1242 direction = dir;
1243};
1244const addNamespace = function(id) {
1245 if (namespaces[id] !== void 0) {
1246 return;
1247 }
1248 namespaces[id] = {
1249 id,
1250 classes: {},
1251 children: {},
1252 domId: MERMAID_DOM_ID_PREFIX + id + "-" + namespaceCounter
1253 };
1254 namespaceCounter++;
1255};
1256const getNamespace = function(name) {
1257 return namespaces[name];
1258};
1259const getNamespaces = function() {
1260 return namespaces;
1261};
1262const addClassesToNamespace = function(id, classNames) {
1263 if (namespaces[id] === void 0) {
1264 return;
1265 }
1266 for (const name of classNames) {
1267 const { className } = splitClassNameAndType(name);
1268 classes[className].parent = id;
1269 namespaces[id].classes[className] = classes[className];
1270 }
1271};
1272const setCssStyle = function(id, styles2) {
1273 const thisClass = classes[id];
1274 if (!styles2 || !thisClass) {
1275 return;
1276 }
1277 for (const s of styles2) {
1278 if (s.includes(",")) {
1279 thisClass.styles.push(...s.split(","));
1280 } else {
1281 thisClass.styles.push(s);
1282 }
1283 }
1284};
1285const db = {
1286 setAccTitle,
1287 getAccTitle,
1288 getAccDescription,
1289 setAccDescription,
1290 getConfig: () => getConfig().class,
1291 addClass,
1292 bindFunctions,
1293 clear,
1294 getClass,
1295 getClasses,
1296 getNotes,
1297 addAnnotation,
1298 addNote,
1299 getRelations,
1300 addRelation,
1301 getDirection,
1302 setDirection,
1303 addMember,
1304 addMembers,
1305 cleanupLabel,
1306 lineType,
1307 relationType,
1308 setClickEvent,
1309 setCssClass,
1310 setLink,
1311 getTooltip,
1312 setTooltip,
1313 lookUpDomId,
1314 setDiagramTitle,
1315 getDiagramTitle,
1316 setClassLabel,
1317 addNamespace,
1318 addClassesToNamespace,
1319 getNamespace,
1320 getNamespaces,
1321 setCssStyle
1322};
1323const getStyles = (options) => `g.classGroup text {
1324 fill: ${options.nodeBorder || options.classText};
1325 stroke: none;
1326 font-family: ${options.fontFamily};
1327 font-size: 10px;
1328
1329 .title {
1330 font-weight: bolder;
1331 }
1332
1333}
1334
1335.nodeLabel, .edgeLabel {
1336 color: ${options.classText};
1337}
1338.edgeLabel .label rect {
1339 fill: ${options.mainBkg};
1340}
1341.label text {
1342 fill: ${options.classText};
1343}
1344.edgeLabel .label span {
1345 background: ${options.mainBkg};
1346}
1347
1348.classTitle {
1349 font-weight: bolder;
1350}
1351.node rect,
1352 .node circle,
1353 .node ellipse,
1354 .node polygon,
1355 .node path {
1356 fill: ${options.mainBkg};
1357 stroke: ${options.nodeBorder};
1358 stroke-width: 1px;
1359 }
1360
1361
1362.divider {
1363 stroke: ${options.nodeBorder};
1364 stroke-width: 1;
1365}
1366
1367g.clickable {
1368 cursor: pointer;
1369}
1370
1371g.classGroup rect {
1372 fill: ${options.mainBkg};
1373 stroke: ${options.nodeBorder};
1374}
1375
1376g.classGroup line {
1377 stroke: ${options.nodeBorder};
1378 stroke-width: 1;
1379}
1380
1381.classLabel .box {
1382 stroke: none;
1383 stroke-width: 0;
1384 fill: ${options.mainBkg};
1385 opacity: 0.5;
1386}
1387
1388.classLabel .label {
1389 fill: ${options.nodeBorder};
1390 font-size: 10px;
1391}
1392
1393.relation {
1394 stroke: ${options.lineColor};
1395 stroke-width: 1;
1396 fill: none;
1397}
1398
1399.dashed-line{
1400 stroke-dasharray: 3;
1401}
1402
1403.dotted-line{
1404 stroke-dasharray: 1 2;
1405}
1406
1407#compositionStart, .composition {
1408 fill: ${options.lineColor} !important;
1409 stroke: ${options.lineColor} !important;
1410 stroke-width: 1;
1411}
1412
1413#compositionEnd, .composition {
1414 fill: ${options.lineColor} !important;
1415 stroke: ${options.lineColor} !important;
1416 stroke-width: 1;
1417}
1418
1419#dependencyStart, .dependency {
1420 fill: ${options.lineColor} !important;
1421 stroke: ${options.lineColor} !important;
1422 stroke-width: 1;
1423}
1424
1425#dependencyStart, .dependency {
1426 fill: ${options.lineColor} !important;
1427 stroke: ${options.lineColor} !important;
1428 stroke-width: 1;
1429}
1430
1431#extensionStart, .extension {
1432 fill: transparent !important;
1433 stroke: ${options.lineColor} !important;
1434 stroke-width: 1;
1435}
1436
1437#extensionEnd, .extension {
1438 fill: transparent !important;
1439 stroke: ${options.lineColor} !important;
1440 stroke-width: 1;
1441}
1442
1443#aggregationStart, .aggregation {
1444 fill: transparent !important;
1445 stroke: ${options.lineColor} !important;
1446 stroke-width: 1;
1447}
1448
1449#aggregationEnd, .aggregation {
1450 fill: transparent !important;
1451 stroke: ${options.lineColor} !important;
1452 stroke-width: 1;
1453}
1454
1455#lollipopStart, .lollipop {
1456 fill: ${options.mainBkg} !important;
1457 stroke: ${options.lineColor} !important;
1458 stroke-width: 1;
1459}
1460
1461#lollipopEnd, .lollipop {
1462 fill: ${options.mainBkg} !important;
1463 stroke: ${options.lineColor} !important;
1464 stroke-width: 1;
1465}
1466
1467.edgeTerminals {
1468 font-size: 11px;
1469 line-height: initial;
1470}
1471
1472.classTitleText {
1473 text-anchor: middle;
1474 font-size: 18px;
1475 fill: ${options.textColor};
1476}
1477`;
1478const styles = getStyles;
1479export {
1480 db as d,
1481 parser$1 as p,
1482 styles as s
1483};