ranui
Version:
A framework-agnostic Web Components UI library built on native custom elements, with TypeScript types, light/dark theming, SSR and PWA support.
1,823 lines (1,811 loc) • 45.7 kB
JavaScript
import { n as l, t as Bt } from "./chunk-Y2CYZVJY-0JxdZxki.js";
import { m as w, p as Ft } from "./src-DtRLxcYO.js";
import { H as Yt, K as Pt, U as zt, a as Kt, it as Gt, v as Ut, w as Zt, x as it, y as jt } from "./chunk-WYO6CB5R-DDHkKowO.js";
import { t as Wt } from "./channel-k5-UxdcV.js";
import { c as Ht, g as Qt } from "./chunk-ICXQ74PX-DR8rL-xF.js";
import "./chunk-HOUHSVGY-DRQcQeMT.js";
import "./chunk-Q4XR5HBZ-3BHjjc9u.js";
import "./chunk-7BUUIJ7U-9hiBbc7O.js";
import "./chunk-OGEWGWER-BV51ll2w.js";
import { t as Xt } from "./chunk-XXDRQBXY-BB1i_53q.js";
import { t as qt } from "./chunk-VR4S4FIN-CJi5okl4.js";
import "./chunk-C7G6YPKG-CA-DNpvI.js";
import "./chunk-ZGVPDNZ5-6uMbTJXy.js";
import "./chunk-52WLFC77-wpL7en7e.js";
import { r as Jt, t as $t } from "./chunk-FWX5IMBZ-DZ5VYvm5.js";
var gt = (function() {
var e = /* @__PURE__ */ l(function(n, o, h, c) {
for (h = h || {}, c = n.length; c--; h[n[c]] = o) ;
return h;
}, "o"), i = [
6,
8,
10,
22,
24,
26,
28,
33,
34,
35,
36,
37,
40,
43,
44,
48,
50,
51,
52
], u = [1, 10], a = [1, 11], d = [1, 12], p = [1, 13], _ = [1, 23], f = [1, 24], E = [1, 25], j = [1, 26], W = [1, 27], T = [1, 19], H = [1, 28], V = [1, 29], C = [1, 20], O = [1, 18], I = [1, 21], M = [1, 22], nt = [1, 36], at = [1, 37], ot = [1, 38], ct = [1, 39], lt = [1, 40], B = [
6,
8,
10,
13,
15,
17,
20,
21,
22,
24,
26,
28,
33,
34,
35,
36,
37,
40,
43,
44,
48,
50,
51,
52,
66,
67,
68,
69,
70
], N = [1, 45], A = [1, 46], F = [1, 55], Y = [
40,
48,
50,
51,
52,
71,
72
], P = [1, 66], z = [1, 64], R = [1, 61], K = [1, 65], G = [1, 67], Q = [
6,
8,
10,
13,
17,
22,
24,
26,
28,
33,
34,
35,
36,
37,
40,
41,
42,
43,
44,
48,
49,
50,
51,
52,
66,
67,
68,
69,
70
], bt = [
66,
67,
68,
69,
70
], mt = [1, 85], kt = [1, 84], Et = [1, 82], St = [1, 83], Tt = [
6,
10,
42,
47
], D = [
6,
10,
13,
41,
42,
47,
48,
49
], X = [1, 93], q = [1, 92], J = [1, 91], U = [19, 58], Ot = [1, 102], Nt = [1, 101], ht = [
19,
58,
61,
63
], ut = {
trace: /* @__PURE__ */ l(function() {
}, "trace"),
yy: {},
symbols_: {
error: 2,
start: 3,
ER_DIAGRAM: 4,
document: 5,
EOF: 6,
line: 7,
SPACE: 8,
statement: 9,
NEWLINE: 10,
entityName: 11,
relSpec: 12,
COLON: 13,
role: 14,
STYLE_SEPARATOR: 15,
idList: 16,
BLOCK_START: 17,
attributes: 18,
BLOCK_STOP: 19,
SQS: 20,
SQE: 21,
title: 22,
title_value: 23,
acc_title: 24,
acc_title_value: 25,
acc_descr: 26,
acc_descr_value: 27,
acc_descr_multiline_value: 28,
direction: 29,
classDefStatement: 30,
classStatement: 31,
styleStatement: 32,
direction_tb: 33,
direction_bt: 34,
direction_rl: 35,
direction_lr: 36,
CLASSDEF: 37,
stylesOpt: 38,
separator: 39,
UNICODE_TEXT: 40,
STYLE_TEXT: 41,
COMMA: 42,
CLASS: 43,
STYLE: 44,
style: 45,
styleComponent: 46,
SEMI: 47,
NUM: 48,
BRKT: 49,
ENTITY_NAME: 50,
DECIMAL_NUM: 51,
ENTITY_ONE: 52,
attribute: 53,
attributeType: 54,
attributeName: 55,
attributeKeyTypeList: 56,
attributeComment: 57,
ATTRIBUTE_WORD: 58,
"?": 59,
attributeKeyType: 60,
",": 61,
ATTRIBUTE_KEY: 62,
COMMENT: 63,
cardinality: 64,
relType: 65,
ZERO_OR_ONE: 66,
ZERO_OR_MORE: 67,
ONE_OR_MORE: 68,
ONLY_ONE: 69,
MD_PARENT: 70,
NON_IDENTIFYING: 71,
IDENTIFYING: 72,
WORD: 73,
$accept: 0,
$end: 1
},
terminals_: {
2: "error",
4: "ER_DIAGRAM",
6: "EOF",
8: "SPACE",
10: "NEWLINE",
13: "COLON",
15: "STYLE_SEPARATOR",
17: "BLOCK_START",
19: "BLOCK_STOP",
20: "SQS",
21: "SQE",
22: "title",
23: "title_value",
24: "acc_title",
25: "acc_title_value",
26: "acc_descr",
27: "acc_descr_value",
28: "acc_descr_multiline_value",
33: "direction_tb",
34: "direction_bt",
35: "direction_rl",
36: "direction_lr",
37: "CLASSDEF",
40: "UNICODE_TEXT",
41: "STYLE_TEXT",
42: "COMMA",
43: "CLASS",
44: "STYLE",
47: "SEMI",
48: "NUM",
49: "BRKT",
50: "ENTITY_NAME",
51: "DECIMAL_NUM",
52: "ENTITY_ONE",
58: "ATTRIBUTE_WORD",
59: "?",
61: ",",
62: "ATTRIBUTE_KEY",
63: "COMMENT",
66: "ZERO_OR_ONE",
67: "ZERO_OR_MORE",
68: "ONE_OR_MORE",
69: "ONLY_ONE",
70: "MD_PARENT",
71: "NON_IDENTIFYING",
72: "IDENTIFYING",
73: "WORD"
},
productions_: [
0,
[3, 3],
[5, 0],
[5, 2],
[7, 2],
[7, 1],
[7, 1],
[7, 1],
[9, 5],
[9, 9],
[9, 7],
[9, 7],
[9, 4],
[9, 6],
[9, 3],
[9, 5],
[9, 1],
[9, 3],
[9, 7],
[9, 9],
[9, 6],
[9, 8],
[9, 4],
[9, 6],
[9, 2],
[9, 2],
[9, 2],
[9, 1],
[9, 1],
[9, 1],
[9, 1],
[9, 1],
[29, 1],
[29, 1],
[29, 1],
[29, 1],
[30, 4],
[16, 1],
[16, 1],
[16, 3],
[16, 3],
[31, 3],
[32, 4],
[38, 1],
[38, 3],
[45, 1],
[45, 2],
[39, 1],
[39, 1],
[39, 1],
[46, 1],
[46, 1],
[46, 1],
[46, 1],
[11, 1],
[11, 1],
[11, 1],
[11, 1],
[11, 1],
[18, 1],
[18, 2],
[53, 2],
[53, 3],
[53, 3],
[53, 4],
[54, 1],
[54, 2],
[55, 1],
[56, 1],
[56, 3],
[60, 1],
[57, 1],
[12, 3],
[64, 1],
[64, 1],
[64, 1],
[64, 1],
[64, 1],
[65, 1],
[65, 1],
[14, 1],
[14, 1],
[14, 1]
],
performAction: /* @__PURE__ */ l(function(o, h, c, r, y, t, Z) {
var s = t.length - 1;
switch (y) {
case 1:
break;
case 2:
this.$ = [];
break;
case 3:
t[s - 1].push(t[s]), this.$ = t[s - 1];
break;
case 4:
case 5:
this.$ = t[s];
break;
case 6:
case 7:
this.$ = [];
break;
case 8:
r.addEntity(t[s - 4]), r.addEntity(t[s - 2]), r.addRelationship(t[s - 4], t[s], t[s - 2], t[s - 3]);
break;
case 9:
r.addEntity(t[s - 8]), r.addEntity(t[s - 4]), r.addRelationship(t[s - 8], t[s], t[s - 4], t[s - 5]), r.setClass([t[s - 8]], t[s - 6]), r.setClass([t[s - 4]], t[s - 2]);
break;
case 10:
r.addEntity(t[s - 6]), r.addEntity(t[s - 2]), r.addRelationship(t[s - 6], t[s], t[s - 2], t[s - 3]), r.setClass([t[s - 6]], t[s - 4]);
break;
case 11:
r.addEntity(t[s - 6]), r.addEntity(t[s - 4]), r.addRelationship(t[s - 6], t[s], t[s - 4], t[s - 5]), r.setClass([t[s - 4]], t[s - 2]);
break;
case 12:
r.addEntity(t[s - 3]), r.addAttributes(t[s - 3], t[s - 1]);
break;
case 13:
r.addEntity(t[s - 5]), r.addAttributes(t[s - 5], t[s - 1]), r.setClass([t[s - 5]], t[s - 3]);
break;
case 14:
r.addEntity(t[s - 2]);
break;
case 15:
r.addEntity(t[s - 4]), r.setClass([t[s - 4]], t[s - 2]);
break;
case 16:
r.addEntity(t[s]);
break;
case 17:
r.addEntity(t[s - 2]), r.setClass([t[s - 2]], t[s]);
break;
case 18:
r.addEntity(t[s - 6], t[s - 4]), r.addAttributes(t[s - 6], t[s - 1]);
break;
case 19:
r.addEntity(t[s - 8], t[s - 6]), r.addAttributes(t[s - 8], t[s - 1]), r.setClass([t[s - 8]], t[s - 3]);
break;
case 20:
r.addEntity(t[s - 5], t[s - 3]);
break;
case 21:
r.addEntity(t[s - 7], t[s - 5]), r.setClass([t[s - 7]], t[s - 2]);
break;
case 22:
r.addEntity(t[s - 3], t[s - 1]);
break;
case 23:
r.addEntity(t[s - 5], t[s - 3]), r.setClass([t[s - 5]], t[s]);
break;
case 24:
case 25:
this.$ = t[s].trim(), r.setAccTitle(this.$);
break;
case 26:
case 27:
this.$ = t[s].trim(), r.setAccDescription(this.$);
break;
case 32:
r.setDirection("TB");
break;
case 33:
r.setDirection("BT");
break;
case 34:
r.setDirection("RL");
break;
case 35:
r.setDirection("LR");
break;
case 36:
this.$ = t[s - 3], r.addClass(t[s - 2], t[s - 1]);
break;
case 37:
case 38:
case 59:
case 68:
this.$ = [t[s]];
break;
case 39:
case 40:
this.$ = t[s - 2].concat([t[s]]);
break;
case 41:
this.$ = t[s - 2], r.setClass(t[s - 1], t[s]);
break;
case 42:
this.$ = t[s - 3], r.addCssStyles(t[s - 2], t[s - 1]);
break;
case 43:
this.$ = [t[s]];
break;
case 44:
t[s - 2].push(t[s]), this.$ = t[s - 2];
break;
case 46:
this.$ = t[s - 1] + t[s];
break;
case 54:
case 80:
case 81:
this.$ = t[s].replace(/"/g, "");
break;
case 55:
case 56:
case 57:
case 58:
case 82:
this.$ = t[s];
break;
case 60:
t[s].push(t[s - 1]), this.$ = t[s];
break;
case 61:
this.$ = {
type: t[s - 1],
name: t[s]
};
break;
case 62:
this.$ = {
type: t[s - 2],
name: t[s - 1],
keys: t[s]
};
break;
case 63:
this.$ = {
type: t[s - 2],
name: t[s - 1],
comment: t[s]
};
break;
case 64:
this.$ = {
type: t[s - 3],
name: t[s - 2],
keys: t[s - 1],
comment: t[s]
};
break;
case 65:
case 67:
case 70:
this.$ = t[s];
break;
case 66:
this.$ = t[s - 1] + t[s];
break;
case 69:
t[s - 2].push(t[s]), this.$ = t[s - 2];
break;
case 71:
this.$ = t[s].replace(/"/g, "");
break;
case 72:
this.$ = {
cardA: t[s],
relType: t[s - 1],
cardB: t[s - 2]
};
break;
case 73:
this.$ = r.Cardinality.ZERO_OR_ONE;
break;
case 74:
this.$ = r.Cardinality.ZERO_OR_MORE;
break;
case 75:
this.$ = r.Cardinality.ONE_OR_MORE;
break;
case 76:
this.$ = r.Cardinality.ONLY_ONE;
break;
case 77:
this.$ = r.Cardinality.MD_PARENT;
break;
case 78:
this.$ = r.Identification.NON_IDENTIFYING;
break;
case 79:
this.$ = r.Identification.IDENTIFYING;
break;
}
}, "anonymous"),
table: [
{
3: 1,
4: [1, 2]
},
{ 1: [3] },
e(i, [2, 2], { 5: 3 }),
{
6: [1, 4],
7: 5,
8: [1, 6],
9: 7,
10: [1, 8],
11: 9,
22: u,
24: a,
26: d,
28: p,
29: 14,
30: 15,
31: 16,
32: 17,
33: _,
34: f,
35: E,
36: j,
37: W,
40: T,
43: H,
44: V,
48: C,
50: O,
51: I,
52: M
},
e(i, [2, 7], { 1: [2, 1] }),
e(i, [2, 3]),
{
9: 30,
11: 9,
22: u,
24: a,
26: d,
28: p,
29: 14,
30: 15,
31: 16,
32: 17,
33: _,
34: f,
35: E,
36: j,
37: W,
40: T,
43: H,
44: V,
48: C,
50: O,
51: I,
52: M
},
e(i, [2, 5]),
e(i, [2, 6]),
e(i, [2, 16], {
12: 31,
64: 35,
15: [1, 32],
17: [1, 33],
20: [1, 34],
66: nt,
67: at,
68: ot,
69: ct,
70: lt
}),
{ 23: [1, 41] },
{ 25: [1, 42] },
{ 27: [1, 43] },
e(i, [2, 27]),
e(i, [2, 28]),
e(i, [2, 29]),
e(i, [2, 30]),
e(i, [2, 31]),
e(B, [2, 54]),
e(B, [2, 55]),
e(B, [2, 56]),
e(B, [2, 57]),
e(B, [2, 58]),
e(i, [2, 32]),
e(i, [2, 33]),
e(i, [2, 34]),
e(i, [2, 35]),
{
16: 44,
40: N,
41: A
},
{
16: 47,
40: N,
41: A
},
{
16: 48,
40: N,
41: A
},
e(i, [2, 4]),
{
11: 49,
40: T,
48: C,
50: O,
51: I,
52: M
},
{
16: 50,
40: N,
41: A
},
{
18: 51,
19: [1, 52],
53: 53,
54: 54,
58: F
},
{
11: 56,
40: T,
48: C,
50: O,
51: I,
52: M
},
{
65: 57,
71: [1, 58],
72: [1, 59]
},
e(Y, [2, 73]),
e(Y, [2, 74]),
e(Y, [2, 75]),
e(Y, [2, 76]),
e(Y, [2, 77]),
e(i, [2, 24]),
e(i, [2, 25]),
e(i, [2, 26]),
{
13: P,
38: 60,
41: z,
42: R,
45: 62,
46: 63,
48: K,
49: G
},
e(Q, [2, 37]),
e(Q, [2, 38]),
{
16: 68,
40: N,
41: A,
42: R
},
{
13: P,
38: 69,
41: z,
42: R,
45: 62,
46: 63,
48: K,
49: G
},
{
13: [1, 70],
15: [1, 71]
},
e(i, [2, 17], {
64: 35,
12: 72,
17: [1, 73],
42: R,
66: nt,
67: at,
68: ot,
69: ct,
70: lt
}),
{ 19: [1, 74] },
e(i, [2, 14]),
{
18: 75,
19: [2, 59],
53: 53,
54: 54,
58: F
},
{
55: 76,
58: [1, 77]
},
{
58: [2, 65],
59: [1, 78]
},
{ 21: [1, 79] },
{
64: 80,
66: nt,
67: at,
68: ot,
69: ct,
70: lt
},
e(bt, [2, 78]),
e(bt, [2, 79]),
{
6: mt,
10: kt,
39: 81,
42: Et,
47: St
},
{
40: [1, 86],
41: [1, 87]
},
e(Tt, [2, 43], {
46: 88,
13: P,
41: z,
48: K,
49: G
}),
e(D, [2, 45]),
e(D, [2, 50]),
e(D, [2, 51]),
e(D, [2, 52]),
e(D, [2, 53]),
e(i, [2, 41], { 42: R }),
{
6: mt,
10: kt,
39: 89,
42: Et,
47: St
},
{
14: 90,
40: X,
50: q,
73: J
},
{
16: 94,
40: N,
41: A
},
{
11: 95,
40: T,
48: C,
50: O,
51: I,
52: M
},
{
18: 96,
19: [1, 97],
53: 53,
54: 54,
58: F
},
e(i, [2, 12]),
{ 19: [2, 60] },
e(U, [2, 61], {
56: 98,
57: 99,
60: 100,
62: Ot,
63: Nt
}),
e([
19,
58,
62,
63
], [2, 67]),
{ 58: [2, 66] },
e(i, [2, 22], {
15: [1, 104],
17: [1, 103]
}),
e([
40,
48,
50,
51,
52
], [2, 72]),
e(i, [2, 36]),
{
13: P,
41: z,
45: 105,
46: 63,
48: K,
49: G
},
e(i, [2, 47]),
e(i, [2, 48]),
e(i, [2, 49]),
e(Q, [2, 39]),
e(Q, [2, 40]),
e(D, [2, 46]),
e(i, [2, 42]),
e(i, [2, 8]),
e(i, [2, 80]),
e(i, [2, 81]),
e(i, [2, 82]),
{
13: [1, 106],
42: R
},
{
13: [1, 108],
15: [1, 107]
},
{ 19: [1, 109] },
e(i, [2, 15]),
e(U, [2, 62], {
57: 110,
61: [1, 111],
63: Nt
}),
e(U, [2, 63]),
e(ht, [2, 68]),
e(U, [2, 71]),
e(ht, [2, 70]),
{
18: 112,
19: [1, 113],
53: 53,
54: 54,
58: F
},
{
16: 114,
40: N,
41: A
},
e(Tt, [2, 44], {
46: 88,
13: P,
41: z,
48: K,
49: G
}),
{
14: 115,
40: X,
50: q,
73: J
},
{
16: 116,
40: N,
41: A
},
{
14: 117,
40: X,
50: q,
73: J
},
e(i, [2, 13]),
e(U, [2, 64]),
{
60: 118,
62: Ot
},
{ 19: [1, 119] },
e(i, [2, 20]),
e(i, [2, 23], {
17: [1, 120],
42: R
}),
e(i, [2, 11]),
{
13: [1, 121],
42: R
},
e(i, [2, 10]),
e(ht, [2, 69]),
e(i, [2, 18]),
{
18: 122,
19: [1, 123],
53: 53,
54: 54,
58: F
},
{
14: 124,
40: X,
50: q,
73: J
},
{ 19: [1, 125] },
e(i, [2, 21]),
e(i, [2, 9]),
e(i, [2, 19])
],
defaultActions: {
75: [2, 60],
78: [2, 66]
},
parseError: /* @__PURE__ */ l(function(o, h) {
if (h.recoverable) this.trace(o);
else {
var c = new Error(o);
throw c.hash = h, c;
}
}, "parseError"),
parse: /* @__PURE__ */ l(function(o) {
var h = this, c = [0], r = [], y = [null], t = [], Z = this.table, s = "", tt = 0, At = 0, Rt = 0, Lt = 2, Ct = 1, wt = t.slice.call(arguments, 1), g = Object.create(this.lexer), x = { yy: {} };
for (var dt in this.yy) Object.prototype.hasOwnProperty.call(this.yy, dt) && (x.yy[dt] = this.yy[dt]);
g.setInput(o, x.yy), x.yy.lexer = g, x.yy.parser = this, typeof g.yylloc > "u" && (g.yylloc = {});
var pt = g.yylloc;
t.push(pt);
var Vt = g.options && g.options.ranges;
typeof x.yy.parseError == "function" ? this.parseError = x.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
function Mt(k) {
c.length = c.length - 2 * k, y.length = y.length - k, t.length = t.length - k;
}
l(Mt, "popStack");
function It() {
var k = r.pop() || g.lex() || Ct;
return typeof k != "number" && (k instanceof Array && (r = k, k = r.pop()), k = h.symbols_[k] || k), k;
}
l(It, "lex");
for (var b, ft, v, m, yt, L = {}, et, S, xt, st; ; ) {
if (v = c[c.length - 1], this.defaultActions[v] ? m = this.defaultActions[v] : ((b === null || typeof b > "u") && (b = It()), m = Z[v] && Z[v][b]), typeof m > "u" || !m.length || !m[0]) {
var _t = "";
st = [];
for (et in Z[v]) this.terminals_[et] && et > Lt && st.push("'" + this.terminals_[et] + "'");
g.showPosition ? _t = "Parse error on line " + (tt + 1) + `:
` + g.showPosition() + `
Expecting ` + st.join(", ") + ", got '" + (this.terminals_[b] || b) + "'" : _t = "Parse error on line " + (tt + 1) + ": Unexpected " + (b == Ct ? "end of input" : "'" + (this.terminals_[b] || b) + "'"), this.parseError(_t, {
text: g.match,
token: this.terminals_[b] || b,
line: g.yylineno,
loc: pt,
expected: st
});
}
if (m[0] instanceof Array && m.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + v + ", token: " + b);
switch (m[0]) {
case 1:
c.push(b), y.push(g.yytext), t.push(g.yylloc), c.push(m[1]), b = null, ft ? (b = ft, ft = null) : (At = g.yyleng, s = g.yytext, tt = g.yylineno, pt = g.yylloc, Rt > 0 && Rt--);
break;
case 2:
if (S = this.productions_[m[1]][1], L.$ = y[y.length - S], L._$ = {
first_line: t[t.length - (S || 1)].first_line,
last_line: t[t.length - 1].last_line,
first_column: t[t.length - (S || 1)].first_column,
last_column: t[t.length - 1].last_column
}, Vt && (L._$.range = [t[t.length - (S || 1)].range[0], t[t.length - 1].range[1]]), yt = this.performAction.apply(L, [
s,
At,
tt,
x.yy,
m[1],
y,
t
].concat(wt)), typeof yt < "u") return yt;
S && (c = c.slice(0, -1 * S * 2), y = y.slice(0, -1 * S), t = t.slice(0, -1 * S)), c.push(this.productions_[m[1]][0]), y.push(L.$), t.push(L._$), xt = Z[c[c.length - 2]][c[c.length - 1]], c.push(xt);
break;
case 3:
return !0;
}
}
return !0;
}, "parse")
};
ut.lexer = /* @__PURE__ */ (function() {
return {
EOF: 1,
parseError: /* @__PURE__ */ l(function(o, h) {
if (this.yy.parser) this.yy.parser.parseError(o, h);
else throw new Error(o);
}, "parseError"),
setInput: /* @__PURE__ */ l(function(n, o) {
return this.yy = o || this.yy || {}, this._input = n, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
first_line: 1,
first_column: 0,
last_line: 1,
last_column: 0
}, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this;
}, "setInput"),
input: /* @__PURE__ */ l(function() {
var n = this._input[0];
return this.yytext += n, this.yyleng++, this.offset++, this.match += n, this.matched += n, n.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), n;
}, "input"),
unput: /* @__PURE__ */ l(function(n) {
var o = n.length, h = n.split(/(?:\r\n?|\n)/g);
this._input = n + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - o), this.offset -= o;
var c = this.match.split(/(?:\r\n?|\n)/g);
this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), h.length - 1 && (this.yylineno -= h.length - 1);
var r = this.yylloc.range;
return this.yylloc = {
first_line: this.yylloc.first_line,
last_line: this.yylineno + 1,
first_column: this.yylloc.first_column,
last_column: h ? (h.length === c.length ? this.yylloc.first_column : 0) + c[c.length - h.length].length - h[0].length : this.yylloc.first_column - o
}, this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - o]), this.yyleng = this.yytext.length, this;
}, "unput"),
more: /* @__PURE__ */ l(function() {
return this._more = !0, this;
}, "more"),
reject: /* @__PURE__ */ l(function() {
if (this.options.backtrack_lexer) this._backtrack = !0;
else 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).
` + this.showPosition(), {
text: "",
token: null,
line: this.yylineno
});
return this;
}, "reject"),
less: /* @__PURE__ */ l(function(n) {
this.unput(this.match.slice(n));
}, "less"),
pastInput: /* @__PURE__ */ l(function() {
var n = this.matched.substr(0, this.matched.length - this.match.length);
return (n.length > 20 ? "..." : "") + n.substr(-20).replace(/\n/g, "");
}, "pastInput"),
upcomingInput: /* @__PURE__ */ l(function() {
var n = this.match;
return n.length < 20 && (n += this._input.substr(0, 20 - n.length)), (n.substr(0, 20) + (n.length > 20 ? "..." : "")).replace(/\n/g, "");
}, "upcomingInput"),
showPosition: /* @__PURE__ */ l(function() {
var n = this.pastInput(), o = new Array(n.length + 1).join("-");
return n + this.upcomingInput() + `
` + o + "^";
}, "showPosition"),
test_match: /* @__PURE__ */ l(function(n, o) {
var h, c, r;
if (this.options.backtrack_lexer && (r = {
yylineno: this.yylineno,
yylloc: {
first_line: this.yylloc.first_line,
last_line: this.last_line,
first_column: this.yylloc.first_column,
last_column: this.yylloc.last_column
},
yytext: this.yytext,
match: this.match,
matches: this.matches,
matched: this.matched,
yyleng: this.yyleng,
offset: this.offset,
_more: this._more,
_input: this._input,
yy: this.yy,
conditionStack: this.conditionStack.slice(0),
done: this.done
}, this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))), c = n[0].match(/(?:\r\n?|\n).*/g), c && (this.yylineno += c.length), this.yylloc = {
first_line: this.yylloc.last_line,
last_line: this.yylineno + 1,
first_column: this.yylloc.last_column,
last_column: c ? c[c.length - 1].length - c[c.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + n[0].length
}, this.yytext += n[0], this.match += n[0], this.matches = n, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(n[0].length), this.matched += n[0], h = this.performAction.call(this, this.yy, this, o, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), h) return h;
if (this._backtrack) {
for (var y in r) this[y] = r[y];
return !1;
}
return !1;
}, "test_match"),
next: /* @__PURE__ */ l(function() {
if (this.done) return this.EOF;
this._input || (this.done = !0);
var n, o, h, c;
this._more || (this.yytext = "", this.match = "");
for (var r = this._currentRules(), y = 0; y < r.length; y++)
if (h = this._input.match(this.rules[r[y]]), h && (!o || h[0].length > o[0].length)) {
if (o = h, c = y, this.options.backtrack_lexer) {
if (n = this.test_match(h, r[y]), n !== !1) return n;
if (this._backtrack) {
o = !1;
continue;
} else return !1;
} else if (!this.options.flex) break;
}
return o ? (n = this.test_match(o, r[c]), n !== !1 ? n : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text.
` + this.showPosition(), {
text: "",
token: null,
line: this.yylineno
});
}, "next"),
lex: /* @__PURE__ */ l(function() {
var o = this.next();
return o || this.lex();
}, "lex"),
begin: /* @__PURE__ */ l(function(o) {
this.conditionStack.push(o);
}, "begin"),
popState: /* @__PURE__ */ l(function() {
return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
}, "popState"),
_currentRules: /* @__PURE__ */ l(function() {
return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
}, "_currentRules"),
topState: /* @__PURE__ */ l(function(o) {
return o = this.conditionStack.length - 1 - Math.abs(o || 0), o >= 0 ? this.conditionStack[o] : "INITIAL";
}, "topState"),
pushState: /* @__PURE__ */ l(function(o) {
this.begin(o);
}, "pushState"),
stateStackSize: /* @__PURE__ */ l(function() {
return this.conditionStack.length;
}, "stateStackSize"),
options: { "case-insensitive": !0 },
performAction: /* @__PURE__ */ l(function(o, h, c, r) {
switch (c) {
case 0:
return this.begin("acc_title"), 24;
case 1:
return this.popState(), "acc_title_value";
case 2:
return this.begin("acc_descr"), 26;
case 3:
return this.popState(), "acc_descr_value";
case 4:
this.begin("acc_descr_multiline");
break;
case 5:
this.popState();
break;
case 6:
return "acc_descr_multiline_value";
case 7:
return 33;
case 8:
return 34;
case 9:
return 35;
case 10:
return 36;
case 11:
return 10;
case 12:
break;
case 13:
return 8;
case 14:
return 50;
case 15:
return 73;
case 16:
return 4;
case 17:
return this.begin("block"), 17;
case 18:
return 49;
case 19:
return 49;
case 20:
return 42;
case 21:
return 15;
case 22:
return 13;
case 23:
break;
case 24:
return 62;
case 25:
return 58;
case 26:
return 58;
case 27:
this.begin("block_bq");
break;
case 28:
return 58;
case 29:
this.popState();
break;
case 30:
return 63;
case 31:
break;
case 32:
return this.popState(), 19;
case 33:
return h.yytext[0];
case 34:
return 20;
case 35:
return 21;
case 36:
return this.begin("style"), 44;
case 37:
return this.popState(), 10;
case 38:
break;
case 39:
return 13;
case 40:
return 42;
case 41:
return 49;
case 42:
return this.begin("style"), 37;
case 43:
return 43;
case 44:
return 66;
case 45:
return 68;
case 46:
return 68;
case 47:
return 68;
case 48:
return 66;
case 49:
return 66;
case 50:
return 67;
case 51:
return 67;
case 52:
return 67;
case 53:
return 67;
case 54:
return 67;
case 55:
return 68;
case 56:
return 67;
case 57:
return 68;
case 58:
return 69;
case 59:
return 69;
case 60:
return 51;
case 61:
return 69;
case 62:
return 69;
case 63:
return 69;
case 64:
return 52;
case 65:
return 48;
case 66:
return 69;
case 67:
return 66;
case 68:
return 67;
case 69:
return 68;
case 70:
return 70;
case 71:
return 71;
case 72:
return 72;
case 73:
return 72;
case 74:
return 71;
case 75:
return 71;
case 76:
return 71;
case 77:
return 41;
case 78:
return 47;
case 79:
return 40;
case 80:
return h.yytext[0];
case 81:
return 6;
}
}, "anonymous"),
rules: [
/^(?:accTitle\s*:\s*)/i,
/^(?:(?!\n||)*[^\n]*)/i,
/^(?:accDescr\s*:\s*)/i,
/^(?:(?!\n||)*[^\n]*)/i,
/^(?:accDescr\s*\{\s*)/i,
/^(?:[\}])/i,
/^(?:[^\}]*)/i,
/^(?:.*direction\s+TB[^\n]*)/i,
/^(?:.*direction\s+BT[^\n]*)/i,
/^(?:.*direction\s+RL[^\n]*)/i,
/^(?:.*direction\s+LR[^\n]*)/i,
/^(?:[\n]+)/i,
/^(?:\s+)/i,
/^(?:[\s]+)/i,
/^(?:"[^"%\r\n\v\b\\]+")/i,
/^(?:"[^"]*")/i,
/^(?:erDiagram\b)/i,
/^(?:\{)/i,
/^(?:#)/i,
/^(?:#)/i,
/^(?:,)/i,
/^(?::::)/i,
/^(?::)/i,
/^(?:\s+)/i,
/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,
/^(?:([^\s]*)[~].*[~]([^\s]*))/i,
/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\.,\u00C0-\uFFFF\*]*))/i,
/^(?:[`])/i,
/^(?:[^`]+)/i,
/^(?:[`])/i,
/^(?:"[^"]*")/i,
/^(?:[\n]+)/i,
/^(?:\})/i,
/^(?:.)/i,
/^(?:\[)/i,
/^(?:\])/i,
/^(?:style\b)/i,
/^(?:[\n]+)/i,
/^(?:\s+)/i,
/^(?::)/i,
/^(?:,)/i,
/^(?:#)/i,
/^(?:classDef\b)/i,
/^(?:class\b)/i,
/^(?:one or zero\b)/i,
/^(?:one or more\b)/i,
/^(?:one or many\b)/i,
/^(?:1\+)/i,
/^(?:\|o\b)/i,
/^(?:zero or one\b)/i,
/^(?:zero or more\b)/i,
/^(?:zero or many\b)/i,
/^(?:0\+)/i,
/^(?:\}o\b)/i,
/^(?:many\(0\))/i,
/^(?:many\(1\))/i,
/^(?:many\b)/i,
/^(?:\}\|)/i,
/^(?:one\b)/i,
/^(?:only one\b)/i,
/^(?:[0-9]+\.[0-9]+)/i,
/^(?:1(?=\s+[A-Za-z_"']))/i,
/^(?:1(?=\s+[0-9]))/i,
/^(?:1(?=(--|\.\.|\.-|-\.)))/i,
/^(?:1\b)/i,
/^(?:[0-9]+)/i,
/^(?:\|\|)/i,
/^(?:o\|)/i,
/^(?:o\{)/i,
/^(?:\|\{)/i,
/^(?:u(?=[\.\-\|]))/i,
/^(?:\.\.)/i,
/^(?:--)/i,
/^(?:to\b)/i,
/^(?:optionally to\b)/i,
/^(?:\.-)/i,
/^(?:-\.)/i,
/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,
/^(?:;)/i,
/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,
/^(?:.)/i,
/^(?:$)/i
],
conditions: {
style: {
rules: [
37,
38,
39,
40,
41,
77,
78
],
inclusive: !1
},
acc_descr_multiline: {
rules: [5, 6],
inclusive: !1
},
acc_descr: {
rules: [3],
inclusive: !1
},
acc_title: {
rules: [1],
inclusive: !1
},
block_bq: {
rules: [28, 29],
inclusive: !1
},
block: {
rules: [
23,
24,
25,
26,
27,
30,
31,
32,
33
],
inclusive: !1
},
INITIAL: {
rules: [
0,
2,
4,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
34,
35,
36,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
79,
80,
81
],
inclusive: !0
}
}
};
})();
function $() {
this.yy = {};
}
return l($, "Parser"), $.prototype = ut, ut.Parser = $, new $();
})();
gt.parser = gt;
var te = gt, ee = class {
constructor() {
this.entities = /* @__PURE__ */ new Map(), this.relationships = [], this.classes = /* @__PURE__ */ new Map(), this.direction = "TB", this.Cardinality = {
ZERO_OR_ONE: "ZERO_OR_ONE",
ZERO_OR_MORE: "ZERO_OR_MORE",
ONE_OR_MORE: "ONE_OR_MORE",
ONLY_ONE: "ONLY_ONE",
MD_PARENT: "MD_PARENT"
}, this.Identification = {
NON_IDENTIFYING: "NON_IDENTIFYING",
IDENTIFYING: "IDENTIFYING"
}, this.setAccTitle = zt, this.getAccTitle = jt, this.setAccDescription = Yt, this.getAccDescription = Ut, this.setDiagramTitle = Pt, this.getDiagramTitle = Zt, this.getConfig = /* @__PURE__ */ l(() => it().er, "getConfig"), this.clear(), this.addEntity = this.addEntity.bind(this), this.addAttributes = this.addAttributes.bind(this), this.addRelationship = this.addRelationship.bind(this), this.setDirection = this.setDirection.bind(this), this.addCssStyles = this.addCssStyles.bind(this), this.addClass = this.addClass.bind(this), this.setClass = this.setClass.bind(this), this.setAccTitle = this.setAccTitle.bind(this), this.setAccDescription = this.setAccDescription.bind(this);
}
static {
l(this, "ErDB");
}
addEntity(e, i = "") {
return this.entities.has(e) ? !this.entities.get(e)?.alias && i && (this.entities.get(e).alias = i, w.info(`Add alias '${i}' to entity '${e}'`)) : (this.entities.set(e, {
id: `entity-${e}-${this.entities.size}`,
label: e,
attributes: [],
alias: i,
shape: "erBox",
look: it().look ?? "default",
cssClasses: "default",
cssStyles: [],
labelType: "markdown"
}), w.info("Added new entity :", e)), this.entities.get(e);
}
getEntity(e) {
return this.entities.get(e);
}
getEntities() {
return this.entities;
}
getClasses() {
return this.classes;
}
addAttributes(e, i) {
const u = this.addEntity(e);
let a;
for (a = i.length - 1; a >= 0; a--)
i[a].keys || (i[a].keys = []), i[a].comment || (i[a].comment = ""), u.attributes.push(i[a]), w.debug("Added attribute ", i[a].name);
}
addRelationship(e, i, u, a) {
const d = this.entities.get(e), p = this.entities.get(u);
if (!d || !p) return;
const _ = {
entityA: d.id,
roleA: i,
entityB: p.id,
relSpec: a
};
this.relationships.push(_), w.debug("Added new relationship :", _);
}
getRelationships() {
return this.relationships;
}
getDirection() {
return this.direction;
}
setDirection(e) {
this.direction = e;
}
getCompiledStyles(e) {
let i = [];
for (const u of e) {
const a = this.classes.get(u);
a?.styles && (i = [...i, ...a.styles ?? []].map((d) => d.trim())), a?.textStyles && (i = [...i, ...a.textStyles ?? []].map((d) => d.trim()));
}
return i;
}
addCssStyles(e, i) {
for (const u of e) {
const a = this.entities.get(u);
if (!i || !a) return;
for (const d of i) a.cssStyles.push(d);
}
}
addClass(e, i) {
e.forEach((u) => {
let a = this.classes.get(u);
a === void 0 && (a = {
id: u,
styles: [],
textStyles: []
}, this.classes.set(u, a)), i && i.forEach(function(d) {
if (/color/.exec(d)) {
const p = d.replace("fill", "bgFill");
a.textStyles.push(p);
}
a.styles.push(d);
});
});
}
setClass(e, i) {
for (const u of e) {
const a = this.entities.get(u);
if (a) for (const d of i) a.cssClasses += " " + d;
}
}
clear() {
this.entities = /* @__PURE__ */ new Map(), this.classes = /* @__PURE__ */ new Map(), this.relationships = [], Kt();
}
getData() {
const e = [], i = [], u = it();
let a = 0;
for (const p of this.entities.keys()) {
const _ = this.entities.get(p);
_ && (_.cssCompiledStyles = this.getCompiledStyles(_.cssClasses.split(" ")), _.colorIndex = a++, e.push(_));
}
let d = 0;
for (const p of this.relationships) {
const _ = {
id: Ht(p.entityA, p.entityB, {
prefix: "id",
counter: d++
}),
type: "normal",
curve: "basis",
start: p.entityA,
end: p.entityB,
label: p.roleA,
labelpos: "c",
thickness: "normal",
classes: "relationshipLine",
arrowTypeStart: p.relSpec.cardB.toLowerCase(),
arrowTypeEnd: p.relSpec.cardA.toLowerCase(),
pattern: p.relSpec.relType == "IDENTIFYING" ? "solid" : "dashed",
look: u.look,
labelType: "markdown"
};
i.push(_);
}
return {
nodes: e,
edges: i,
other: {},
config: u,
direction: "TB"
};
}
}, Dt = {};
Bt(Dt, { draw: () => se });
var se = /* @__PURE__ */ l(async function(e, i, u, a) {
w.info("REF0:"), w.info("Drawing er diagram (unified)", i);
const { securityLevel: d, er: p, layout: _ } = it(), f = a.db.getData(), E = Xt(i, d);
f.type = a.type, f.layoutAlgorithm = $t(_), f.config.flowchart.nodeSpacing = p?.nodeSpacing || 140, f.config.flowchart.rankSpacing = p?.rankSpacing || 80, f.direction = a.db.getDirection();
const { config: j } = f, { look: W } = j;
W === "neo" ? f.markers = [
"only_one_neo",
"zero_or_one_neo",
"one_or_more_neo",
"zero_or_more_neo"
] : f.markers = [
"only_one",
"zero_or_one",
"one_or_more",
"zero_or_more"
], f.diagramId = i, await Jt(f, E), f.layoutAlgorithm === "elk" && E.select(".edges").lower();
const T = E.selectAll('[id*="-background"]');
Array.from(T).length > 0 && T.each(function() {
const V = Ft(this), C = V.attr("id").replace("-background", ""), O = E.select(`#${CSS.escape(C)}`);
if (!O.empty()) {
const I = O.attr("transform");
V.attr("transform", I);
}
});
const H = 8;
Qt.insertTitle(E, "erDiagramTitleText", p?.titleTopMargin ?? 25, a.db.getDiagramTitle()), qt(E, H, "erDiagram", p?.useMaxWidth ?? !0);
}, "draw"), vt = /* @__PURE__ */ l((e, i) => {
const u = Wt, a = u(e, "r"), d = u(e, "g"), p = u(e, "b");
return Gt(a, d, p, i);
}, "fade"), rt = /* @__PURE__ */ new Set(["redux-color", "redux-dark-color"]), ie = /* @__PURE__ */ l((e) => {
const { theme: i, look: u, bkgColorArray: a, borderColorArray: d } = e;
if (!rt.has(i)) return "";
const p = a?.length > 0;
let _ = "";
for (let f = 0; f < e.THEME_COLOR_LIMIT; f++) _ += `
[data-look="${u}"][data-color-id="color-${f}"].node path {
stroke: ${d[f]};
${p ? `fill: ${a[f]};` : ""}
}
[data-look="${u}"][data-color-id="color-${f}"].node rect {
stroke: ${d[f]};
${p ? `fill: ${a[f]};` : ""}
}
`;
return _;
}, "genColor"), me = {
parser: te,
get db() {
return new ee();
},
renderer: Dt,
styles: /* @__PURE__ */ l((e) => {
const { look: i, theme: u, erEdgeLabelBackground: a, strokeWidth: d } = e;
return `
${ie(e)}
.entityBox {
fill: ${e.mainBkg};
stroke: ${e.nodeBorder};
}
.relationshipLabelBox {
fill: ${e.tertiaryColor};
opacity: 0.7;
background-color: ${e.tertiaryColor};
rect {
opacity: 0.5;
}
}
.labelBkg {
background-color: ${rt.has(u) && a ? a : vt(e.tertiaryColor, 0.5)};
}
.edgeLabel {
background-color: ${rt.has(u) && a ? a : e.edgeLabelBackground};
}
.edgeLabel .label rect {
fill: ${rt.has(u) && a ? a : e.edgeLabelBackground};
}
.edgeLabel .label text {
fill: ${e.textColor};
}
.edgeLabel .label {
fill: ${e.nodeBorder};
font-size: 14px;
}
.label {
font-family: ${e.fontFamily};
color: ${e.nodeTextColor || e.textColor};
}
.edge-pattern-dashed {
stroke-dasharray: 8,8;
}
.node rect,
.node circle,
.node ellipse,
.node polygon
{
fill: ${e.mainBkg};
stroke: ${e.nodeBorder};
stroke-width: ${i === "neo" ? d : "1px"};
}
.relationshipLine {
stroke: ${e.lineColor};
stroke-width: ${i === "neo" ? d : "1px"};
fill: none;
}
.marker {
fill: none !important;
stroke: ${e.lineColor} !important;
stroke-width: 1;
}
[data-look=neo].labelBkg {
background-color: ${vt(e.tertiaryColor, 0.5)};
}
`;
}, "getStyles")
};
export {
me as diagram
};