import { c as he, X as se, h as H, i as ye, l as S, C as Ee, z as we, j as De, o as ve } from './index-0e3b96e2.js'; import { c as Ne } from './clone-def30bb2.js'; import { i as ke, c as Ie, b as Oe, d as Te, a as ge, p as ze } from './edges-066a5561-0489abec.js'; import { G as Ce } from './graph-39d39682.js'; import { o as Ae } from './ordinal-ba9b4969.js'; import { s as Re } from './Tableau10-1b767f5e.js'; import { c as Be } from './channel-80f48b39.js'; import './index-9c042f98.js'; import './_plugin-vue_export-helper-c27b6911.js'; import './createText-ca0c5216-c3320e7a.js'; import './line-0981dc5a.js'; import './array-9f3ba611.js'; import './path-53f90ab3.js'; import './init-77b53fdd.js'; var le, oe, ee = (function () { var e = function (D, o, s, i) { for (s = s || {}, i = D.length; i--; s[D[i]] = o); return s; }, a = [1, 7], d = [1, 13], c = [1, 14], n = [1, 15], g = [1, 19], l = [1, 16], f = [1, 17], b = [1, 18], p = [8, 30], x = [8, 21, 28, 29, 30, 31, 32, 40, 44, 47], y = [1, 23], T = [1, 24], v = [8, 15, 16, 21, 28, 29, 30, 31, 32, 40, 44, 47], N = [8, 15, 16, 21, 27, 28, 29, 30, 31, 32, 40, 44, 47], E = [1, 49], L = { trace: function () {}, yy: {}, symbols_: { error: 2, spaceLines: 3, SPACELINE: 4, NL: 5, separator: 6, SPACE: 7, EOF: 8, start: 9, BLOCK_DIAGRAM_KEY: 10, document: 11, stop: 12, statement: 13, link: 14, LINK: 15, START_LINK: 16, LINK_LABEL: 17, STR: 18, nodeStatement: 19, columnsStatement: 20, SPACE_BLOCK: 21, blockStatement: 22, classDefStatement: 23, cssClassStatement: 24, styleStatement: 25, node: 26, SIZE: 27, COLUMNS: 28, 'id-block': 29, end: 30, block: 31, NODE_ID: 32, nodeShapeNLabel: 33, dirList: 34, DIR: 35, NODE_DSTART: 36, NODE_DEND: 37, BLOCK_ARROW_START: 38, BLOCK_ARROW_END: 39, classDef: 40, CLASSDEF_ID: 41, CLASSDEF_STYLEOPTS: 42, DEFAULT: 43, class: 44, CLASSENTITY_IDS: 45, STYLECLASS: 46, style: 47, STYLE_ENTITY_IDS: 48, STYLE_DEFINITION_DATA: 49, $accept: 0, $end: 1, }, terminals_: { 2: 'error', 4: 'SPACELINE', 5: 'NL', 7: 'SPACE', 8: 'EOF', 10: 'BLOCK_DIAGRAM_KEY', 15: 'LINK', 16: 'START_LINK', 17: 'LINK_LABEL', 18: 'STR', 21: 'SPACE_BLOCK', 27: 'SIZE', 28: 'COLUMNS', 29: 'id-block', 30: 'end', 31: 'block', 32: 'NODE_ID', 35: 'DIR', 36: 'NODE_DSTART', 37: 'NODE_DEND', 38: 'BLOCK_ARROW_START', 39: 'BLOCK_ARROW_END', 40: 'classDef', 41: 'CLASSDEF_ID', 42: 'CLASSDEF_STYLEOPTS', 43: 'DEFAULT', 44: 'class', 45: 'CLASSENTITY_IDS', 46: 'STYLECLASS', 47: 'style', 48: 'STYLE_ENTITY_IDS', 49: 'STYLE_DEFINITION_DATA', }, productions_: [ 0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [34, 1], [34, 2], [33, 3], [33, 4], [23, 3], [23, 3], [24, 3], [25, 3], ], performAction: function (o, s, i, u, h, t, m) { var r = t.length - 1; switch (h) { case 4: u.getLogger().debug('Rule: separator (NL) '); break; case 5: u.getLogger().debug('Rule: separator (Space) '); break; case 6: u.getLogger().debug('Rule: separator (EOF) '); break; case 7: u.getLogger().debug('Rule: hierarchy: ', t[r - 1]), u.setHierarchy(t[r - 1]); break; case 8: u.getLogger().debug('Stop NL '); break; case 9: u.getLogger().debug('Stop EOF '); break; case 10: u.getLogger().debug('Stop NL2 '); break; case 11: u.getLogger().debug('Stop EOF2 '); break; case 12: u.getLogger().debug('Rule: statement: ', t[r]), typeof t[r].length == 'number' ? (this.$ = t[r]) : (this.$ = [t[r]]); break; case 13: u.getLogger().debug('Rule: statement #2: ', t[r - 1]), (this.$ = [t[r - 1]].concat(t[r])); break; case 14: u.getLogger().debug('Rule: link: ', t[r], o), (this.$ = { edgeTypeStr: t[r], label: '' }); break; case 15: u.getLogger().debug('Rule: LABEL link: ', t[r - 3], t[r - 1], t[r]), (this.$ = { edgeTypeStr: t[r], label: t[r - 1] }); break; case 18: const R = parseInt(t[r]), Y = u.generateId(); this.$ = { id: Y, type: 'space', label: '', width: R, children: [] }; break; case 23: u.getLogger().debug('Rule: (nodeStatement link node) ', t[r - 2], t[r - 1], t[r], ' typestr: ', t[r - 1].edgeTypeStr); const F = u.edgeStrToEdgeData(t[r - 1].edgeTypeStr); this.$ = [ { id: t[r - 2].id, label: t[r - 2].label, type: t[r - 2].type, directions: t[r - 2].directions }, { id: t[r - 2].id + '-' + t[r].id, start: t[r - 2].id, end: t[r].id, label: t[r - 1].label, type: 'edge', directions: t[r].directions, arrowTypeEnd: F, arrowTypeStart: 'arrow_open', }, { id: t[r].id, label: t[r].label, type: u.typeStr2Type(t[r].typeStr), directions: t[r].directions }, ]; break; case 24: u.getLogger().debug('Rule: nodeStatement (abc88 node size) ', t[r - 1], t[r]), (this.$ = { id: t[r - 1].id, label: t[r - 1].label, type: u.typeStr2Type(t[r - 1].typeStr), directions: t[r - 1].directions, widthInColumns: parseInt(t[r], 10), }); break; case 25: u.getLogger().debug('Rule: nodeStatement (node) ', t[r]), (this.$ = { id: t[r].id, label: t[r].label, type: u.typeStr2Type(t[r].typeStr), directions: t[r].directions, widthInColumns: 1 }); break; case 26: u.getLogger().debug('APA123', this ? this : 'na'), u.getLogger().debug('COLUMNS: ', t[r]), (this.$ = { type: 'column-setting', columns: t[r] === 'auto' ? -1 : parseInt(t[r]) }); break; case 27: u.getLogger().debug('Rule: id-block statement : ', t[r - 2], t[r - 1]), u.generateId(), (this.$ = { ...t[r - 2], type: 'composite', children: t[r - 1] }); break; case 28: u.getLogger().debug('Rule: blockStatement : ', t[r - 2], t[r - 1], t[r]); const C = u.generateId(); this.$ = { id: C, type: 'composite', label: '', children: t[r - 1] }; break; case 29: u.getLogger().debug('Rule: node (NODE_ID separator): ', t[r]), (this.$ = { id: t[r] }); break; case 30: u.getLogger().debug('Rule: node (NODE_ID nodeShapeNLabel separator): ', t[r - 1], t[r]), (this.$ = { id: t[r - 1], label: t[r].label, typeStr: t[r].typeStr, directions: t[r].directions }); break; case 31: u.getLogger().debug('Rule: dirList: ', t[r]), (this.$ = [t[r]]); break; case 32: u.getLogger().debug('Rule: dirList: ', t[r - 1], t[r]), (this.$ = [t[r - 1]].concat(t[r])); break; case 33: u.getLogger().debug('Rule: nodeShapeNLabel: ', t[r - 2], t[r - 1], t[r]), (this.$ = { typeStr: t[r - 2] + t[r], label: t[r - 1] }); break; case 34: u.getLogger().debug('Rule: BLOCK_ARROW nodeShapeNLabel: ', t[r - 3], t[r - 2], ' #3:', t[r - 1], t[r]), (this.$ = { typeStr: t[r - 3] + t[r], label: t[r - 2], directions: t[r - 1] }); break; case 35: case 36: this.$ = { type: 'classDef', id: t[r - 1].trim(), css: t[r].trim() }; break; case 37: this.$ = { type: 'applyClass', id: t[r - 1].trim(), styleClass: t[r].trim() }; break; case 38: this.$ = { type: 'applyStyles', id: t[r - 1].trim(), stylesStr: t[r].trim() }; break; } }, table: [ { 9: 1, 10: [1, 2] }, { 1: [3] }, { 11: 3, 13: 4, 19: 5, 20: 6, 21: a, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: d, 29: c, 31: n, 32: g, 40: l, 44: f, 47: b }, { 8: [1, 20] }, e(p, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 21: a, 28: d, 29: c, 31: n, 32: g, 40: l, 44: f, 47: b, }), e(x, [2, 16], { 14: 22, 15: y, 16: T }), e(x, [2, 17]), e(x, [2, 18]), e(x, [2, 19]), e(x, [2, 20]), e(x, [2, 21]), e(x, [2, 22]), e(v, [2, 25], { 27: [1, 25] }), e(x, [2, 26]), { 19: 26, 26: 12, 32: g }, { 11: 27, 13: 4, 19: 5, 20: 6, 21: a, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: d, 29: c, 31: n, 32: g, 40: l, 44: f, 47: b }, { 41: [1, 28], 43: [1, 29] }, { 45: [1, 30] }, { 48: [1, 31] }, e(N, [2, 29], { 33: 32, 36: [1, 33], 38: [1, 34] }), { 1: [2, 7] }, e(p, [2, 13]), { 26: 35, 32: g }, { 32: [2, 14] }, { 17: [1, 36] }, e(v, [2, 24]), { 11: 37, 13: 4, 14: 22, 15: y, 16: T, 19: 5, 20: 6, 21: a, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: d, 29: c, 31: n, 32: g, 40: l, 44: f, 47: b, }, { 30: [1, 38] }, { 42: [1, 39] }, { 42: [1, 40] }, { 46: [1, 41] }, { 49: [1, 42] }, e(N, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, e(v, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, e(x, [2, 28]), e(x, [2, 35]), e(x, [2, 36]), e(x, [2, 37]), e(x, [2, 38]), { 37: [1, 47] }, { 34: 48, 35: E }, { 15: [1, 50] }, e(x, [2, 27]), e(N, [2, 33]), { 39: [1, 51] }, { 34: 52, 35: E, 39: [2, 31] }, { 32: [2, 15] }, e(N, [2, 34]), { 39: [2, 32] }, ], defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] }, parseError: function (o, s) { if (s.recoverable) this.trace(o); else { var i = new Error(o); throw ((i.hash = s), i); } }, parse: function (o) { var s = this, i = [0], u = [], h = [null], t = [], m = this.table, r = '', R = 0, Y = 0, F = 2, C = 1, Le = t.slice.call(arguments, 1), w = Object.create(this.lexer), K = { yy: {} }; for (var Z in this.yy) Object.prototype.hasOwnProperty.call(this.yy, Z) && (K.yy[Z] = this.yy[Z]); w.setInput(o, K.yy), (K.yy.lexer = w), (K.yy.parser = this), typeof w.yylloc > 'u' && (w.yylloc = {}); var J = w.yylloc; t.push(J); var me = w.options && w.options.ranges; typeof K.yy.parseError == 'function' ? (this.parseError = K.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError); function _e() { var P; return ( (P = u.pop() || w.lex() || C), typeof P != 'number' && (P instanceof Array && ((u = P), (P = u.pop())), (P = s.symbols_[P] || P)), P ); } for (var I, M, z, Q, W = {}, X, B, ae, G; ; ) { if ( ((M = i[i.length - 1]), this.defaultActions[M] ? (z = this.defaultActions[M]) : ((I === null || typeof I > 'u') && (I = _e()), (z = m[M] && m[M][I])), typeof z > 'u' || !z.length || !z[0]) ) { var $ = ''; G = []; for (X in m[M]) this.terminals_[X] && X > F && G.push("'" + this.terminals_[X] + "'"); w.showPosition ? ($ = 'Parse error on line ' + (R + 1) + `: ` + w.showPosition() + ` Expecting ` + G.join(', ') + ", got '" + (this.terminals_[I] || I) + "'") : ($ = 'Parse error on line ' + (R + 1) + ': Unexpected ' + (I == C ? 'end of input' : "'" + (this.terminals_[I] || I) + "'")), this.parseError($, { text: w.match, token: this.terminals_[I] || I, line: w.yylineno, loc: J, expected: G }); } if (z[0] instanceof Array && z.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + M + ', token: ' + I); switch (z[0]) { case 1: i.push(I), h.push(w.yytext), t.push(w.yylloc), i.push(z[1]), (I = null), (Y = w.yyleng), (r = w.yytext), (R = w.yylineno), (J = w.yylloc); break; case 2: if ( ((B = this.productions_[z[1]][1]), (W.$ = h[h.length - B]), (W._$ = { first_line: t[t.length - (B || 1)].first_line, last_line: t[t.length - 1].last_line, first_column: t[t.length - (B || 1)].first_column, last_column: t[t.length - 1].last_column, }), me && (W._$.range = [t[t.length - (B || 1)].range[0], t[t.length - 1].range[1]]), (Q = this.performAction.apply(W, [r, Y, R, K.yy, z[1], h, t].concat(Le))), typeof Q < 'u') ) return Q; B && ((i = i.slice(0, -1 * B * 2)), (h = h.slice(0, -1 * B)), (t = t.slice(0, -1 * B))), i.push(this.productions_[z[1]][0]), h.push(W.$), t.push(W._$), (ae = m[i[i.length - 2]][i[i.length - 1]]), i.push(ae); break; case 3: return !0; } } return !0; }, }, A = (function () { var D = { EOF: 1, parseError: function (s, i) { if (this.yy.parser) this.yy.parser.parseError(s, i); else throw new Error(s); }, setInput: function (o, s) { return ( (this.yy = s || this.yy || {}), (this._input = o), (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 ); }, input: function () { var o = this._input[0]; (this.yytext += o), this.yyleng++, this.offset++, (this.match += o), (this.matched += o); var s = o.match(/(?:\r\n?|\n).*/g); return ( s ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), o ); }, unput: function (o) { var s = o.length, i = o.split(/(?:\r\n?|\n)/g); (this._input = o + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - s)), (this.offset -= s); var u = 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)), i.length - 1 && (this.yylineno -= i.length - 1); var h = 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: i ? (i.length === u.length ? this.yylloc.first_column : 0) + u[u.length - i.length].length - i[0].length : this.yylloc.first_column - s, }), this.options.ranges && (this.yylloc.range = [h[0], h[0] + this.yyleng - s]), (this.yyleng = this.yytext.length), this ); }, more: function () { return (this._more = !0), this; }, reject: 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; }, less: function (o) { this.unput(this.match.slice(o)); }, pastInput: function () { var o = this.matched.substr(0, this.matched.length - this.match.length); return (o.length > 20 ? '...' : '') + o.substr(-20).replace(/\n/g, ''); }, upcomingInput: function () { var o = this.match; return o.length < 20 && (o += this._input.substr(0, 20 - o.length)), (o.substr(0, 20) + (o.length > 20 ? '...' : '')).replace(/\n/g, ''); }, showPosition: function () { var o = this.pastInput(), s = new Array(o.length + 1).join('-'); return ( o + this.upcomingInput() + ` ` + s + '^' ); }, test_match: function (o, s) { var i, u, h; if ( (this.options.backtrack_lexer && ((h = { 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 && (h.yylloc.range = this.yylloc.range.slice(0))), (u = o[0].match(/(?:\r\n?|\n).*/g)), u && (this.yylineno += u.length), (this.yylloc = { first_line: this.yylloc.last_line, last_line: this.yylineno + 1, first_column: this.yylloc.last_column, last_column: u ? u[u.length - 1].length - u[u.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + o[0].length, }), (this.yytext += o[0]), (this.match += o[0]), (this.matches = o), (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(o[0].length)), (this.matched += o[0]), (i = this.performAction.call(this, this.yy, this, s, this.conditionStack[this.conditionStack.length - 1])), this.done && this._input && (this.done = !1), i) ) return i; if (this._backtrack) { for (var t in h) this[t] = h[t]; return !1; } return !1; }, next: function () { if (this.done) return this.EOF; this._input || (this.done = !0); var o, s, i, u; this._more || ((this.yytext = ''), (this.match = '')); for (var h = this._currentRules(), t = 0; t < h.length; t++) if (((i = this._input.match(this.rules[h[t]])), i && (!s || i[0].length > s[0].length))) { if (((s = i), (u = t), this.options.backtrack_lexer)) { if (((o = this.test_match(i, h[t])), o !== !1)) return o; if (this._backtrack) { s = !1; continue; } else return !1; } else if (!this.options.flex) break; } return s ? ((o = this.test_match(s, h[u])), o !== !1 ? o : !1) : this._input === '' ? this.EOF : this.parseError( 'Lexical error on line ' + (this.yylineno + 1) + `. Unrecognized text. ` + this.showPosition(), { text: '', token: null, line: this.yylineno } ); }, lex: function () { var s = this.next(); return s || this.lex(); }, begin: function (s) { this.conditionStack.push(s); }, popState: function () { var s = this.conditionStack.length - 1; return s > 0 ? this.conditionStack.pop() : this.conditionStack[0]; }, _currentRules: function () { return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; }, topState: function (s) { return (s = this.conditionStack.length - 1 - Math.abs(s || 0)), s >= 0 ? this.conditionStack[s] : 'INITIAL'; }, pushState: function (s) { this.begin(s); }, stateStackSize: function () { return this.conditionStack.length; }, options: {}, performAction: function (s, i, u, h) { switch (u) { case 0: return 10; case 1: return s.getLogger().debug('Found space-block'), 31; case 2: return s.getLogger().debug('Found nl-block'), 31; case 3: return s.getLogger().debug('Found space-block'), 29; case 4: s.getLogger().debug('.', i.yytext); break; case 5: s.getLogger().debug('_', i.yytext); break; case 6: return 5; case 7: return (i.yytext = -1), 28; case 8: return (i.yytext = i.yytext.replace(/columns\s+/, '')), s.getLogger().debug('COLUMNS (LEX)', i.yytext), 28; case 9: this.pushState('md_string'); break; case 10: return 'MD_STR'; case 11: this.popState(); break; case 12: this.pushState('string'); break; case 13: s.getLogger().debug('LEX: POPPING STR:', i.yytext), this.popState(); break; case 14: return s.getLogger().debug('LEX: STR end:', i.yytext), 'STR'; case 15: return (i.yytext = i.yytext.replace(/space\:/, '')), s.getLogger().debug('SPACE NUM (LEX)', i.yytext), 21; case 16: return (i.yytext = '1'), s.getLogger().debug('COLUMNS (LEX)', i.yytext), 21; case 17: return 43; case 18: return 'LINKSTYLE'; case 19: return 'INTERPOLATE'; case 20: return this.pushState('CLASSDEF'), 40; case 21: return this.popState(), this.pushState('CLASSDEFID'), 'DEFAULT_CLASSDEF_ID'; case 22: return this.popState(), this.pushState('CLASSDEFID'), 41; case 23: return this.popState(), 42; case 24: return this.pushState('CLASS'), 44; case 25: return this.popState(), this.pushState('CLASS_STYLE'), 45; case 26: return this.popState(), 46; case 27: return this.pushState('STYLE_STMNT'), 47; case 28: return this.popState(), this.pushState('STYLE_DEFINITION'), 48; case 29: return this.popState(), 49; case 30: return this.pushState('acc_title'), 'acc_title'; case 31: return this.popState(), 'acc_title_value'; case 32: return this.pushState('acc_descr'), 'acc_descr'; case 33: return this.popState(), 'acc_descr_value'; case 34: this.pushState('acc_descr_multiline'); break; case 35: this.popState(); break; case 36: return 'acc_descr_multiline_value'; case 37: return 30; case 38: return this.popState(), s.getLogger().debug('Lex: (('), 'NODE_DEND'; case 39: return this.popState(), s.getLogger().debug('Lex: (('), 'NODE_DEND'; case 40: return this.popState(), s.getLogger().debug('Lex: ))'), 'NODE_DEND'; case 41: return this.popState(), s.getLogger().debug('Lex: (('), 'NODE_DEND'; case 42: return this.popState(), s.getLogger().debug('Lex: (('), 'NODE_DEND'; case 43: return this.popState(), s.getLogger().debug('Lex: (-'), 'NODE_DEND'; case 44: return this.popState(), s.getLogger().debug('Lex: -)'), 'NODE_DEND'; case 45: return this.popState(), s.getLogger().debug('Lex: (('), 'NODE_DEND'; case 46: return this.popState(), s.getLogger().debug('Lex: ]]'), 'NODE_DEND'; case 47: return this.popState(), s.getLogger().debug('Lex: ('), 'NODE_DEND'; case 48: return this.popState(), s.getLogger().debug('Lex: ])'), 'NODE_DEND'; case 49: return this.popState(), s.getLogger().debug('Lex: /]'), 'NODE_DEND'; case 50: return this.popState(), s.getLogger().debug('Lex: /]'), 'NODE_DEND'; case 51: return this.popState(), s.getLogger().debug('Lex: )]'), 'NODE_DEND'; case 52: return this.popState(), s.getLogger().debug('Lex: )'), 'NODE_DEND'; case 53: return this.popState(), s.getLogger().debug('Lex: ]>'), 'NODE_DEND'; case 54: return this.popState(), s.getLogger().debug('Lex: ]'), 'NODE_DEND'; case 55: return s.getLogger().debug('Lexa: -)'), this.pushState('NODE'), 36; case 56: return s.getLogger().debug('Lexa: (-'), this.pushState('NODE'), 36; case 57: return s.getLogger().debug('Lexa: ))'), this.pushState('NODE'), 36; case 58: return s.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36; case 59: return s.getLogger().debug('Lex: ((('), this.pushState('NODE'), 36; case 60: return s.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36; case 61: return s.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36; case 62: return s.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36; case 63: return s.getLogger().debug('Lexc: >'), this.pushState('NODE'), 36; case 64: return s.getLogger().debug('Lexa: (['), this.pushState('NODE'), 36; case 65: return s.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36; case 66: return this.pushState('NODE'), 36; case 67: return this.pushState('NODE'), 36; case 68: return this.pushState('NODE'), 36; case 69: return this.pushState('NODE'), 36; case 70: return this.pushState('NODE'), 36; case 71: return this.pushState('NODE'), 36; case 72: return this.pushState('NODE'), 36; case 73: return s.getLogger().debug('Lexa: ['), this.pushState('NODE'), 36; case 74: return this.pushState('BLOCK_ARROW'), s.getLogger().debug('LEX ARR START'), 38; case 75: return s.getLogger().debug('Lex: NODE_ID', i.yytext), 32; case 76: return s.getLogger().debug('Lex: EOF', i.yytext), 8; case 77: this.pushState('md_string'); break; case 78: this.pushState('md_string'); break; case 79: return 'NODE_DESCR'; case 80: this.popState(); break; case 81: s.getLogger().debug('Lex: Starting string'), this.pushState('string'); break; case 82: s.getLogger().debug('LEX ARR: Starting string'), this.pushState('string'); break; case 83: return s.getLogger().debug('LEX: NODE_DESCR:', i.yytext), 'NODE_DESCR'; case 84: s.getLogger().debug('LEX POPPING'), this.popState(); break; case 85: s.getLogger().debug('Lex: =>BAE'), this.pushState('ARROW_DIR'); break; case 86: return (i.yytext = i.yytext.replace(/^,\s*/, '')), s.getLogger().debug('Lex (right): dir:', i.yytext), 'DIR'; case 87: return (i.yytext = i.yytext.replace(/^,\s*/, '')), s.getLogger().debug('Lex (left):', i.yytext), 'DIR'; case 88: return (i.yytext = i.yytext.replace(/^,\s*/, '')), s.getLogger().debug('Lex (x):', i.yytext), 'DIR'; case 89: return (i.yytext = i.yytext.replace(/^,\s*/, '')), s.getLogger().debug('Lex (y):', i.yytext), 'DIR'; case 90: return (i.yytext = i.yytext.replace(/^,\s*/, '')), s.getLogger().debug('Lex (up):', i.yytext), 'DIR'; case 91: return (i.yytext = i.yytext.replace(/^,\s*/, '')), s.getLogger().debug('Lex (down):', i.yytext), 'DIR'; case 92: return (i.yytext = ']>'), s.getLogger().debug('Lex (ARROW_DIR end):', i.yytext), this.popState(), this.popState(), 'BLOCK_ARROW_END'; case 93: return s.getLogger().debug('Lex: LINK', '#' + i.yytext + '#'), 15; case 94: return s.getLogger().debug('Lex: LINK', i.yytext), 15; case 95: return s.getLogger().debug('Lex: LINK', i.yytext), 15; case 96: return s.getLogger().debug('Lex: LINK', i.yytext), 15; case 97: return s.getLogger().debug('Lex: START_LINK', i.yytext), this.pushState('LLABEL'), 16; case 98: return s.getLogger().debug('Lex: START_LINK', i.yytext), this.pushState('LLABEL'), 16; case 99: return s.getLogger().debug('Lex: START_LINK', i.yytext), this.pushState('LLABEL'), 16; case 100: this.pushState('md_string'); break; case 101: return s.getLogger().debug('Lex: Starting string'), this.pushState('string'), 'LINK_LABEL'; case 102: return this.popState(), s.getLogger().debug('Lex: LINK', '#' + i.yytext + '#'), 15; case 103: return this.popState(), s.getLogger().debug('Lex: LINK', i.yytext), 15; case 104: return this.popState(), s.getLogger().debug('Lex: LINK', i.yytext), 15; case 105: return s.getLogger().debug('Lex: COLON', i.yytext), (i.yytext = i.yytext.slice(1)), 27; } }, rules: [ /^(?:block-beta\b)/, /^(?:block\s+)/, /^(?:block\n+)/, /^(?:block:)/, /^(?:[\s]+)/, /^(?:[\n]+)/, /^(?:((\u000D\u000A)|(\u000A)))/, /^(?:columns\s+auto\b)/, /^(?:columns\s+[\d]+)/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:space[:]\d+)/, /^(?:space\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\s+)/, /^(?:DEFAULT\s+)/, /^(?:\w+\s+)/, /^(?:[^\n]*)/, /^(?:class\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:style\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:end\b\s*)/, /^(?:\(\(\()/, /^(?:\)\)\))/, /^(?:[\)]\))/, /^(?:\}\})/, /^(?:\})/, /^(?:\(-)/, /^(?:-\))/, /^(?:\(\()/, /^(?:\]\])/, /^(?:\()/, /^(?:\]\))/, /^(?:\\\])/, /^(?:\/\])/, /^(?:\)\])/, /^(?:[\)])/, /^(?:\]>)/, /^(?:[\]])/, /^(?:-\))/, /^(?:\(-)/, /^(?:\)\))/, /^(?:\))/, /^(?:\(\(\()/, /^(?:\(\()/, /^(?:\{\{)/, /^(?:\{)/, /^(?:>)/, /^(?:\(\[)/, /^(?:\()/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\[\\)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:\[)/, /^(?:<\[)/, /^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/, /^(?:$)/, /^(?:["][`])/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:\]>\s*\()/, /^(?:,?\s*right\s*)/, /^(?:,?\s*left\s*)/, /^(?:,?\s*x\s*)/, /^(?:,?\s*y\s*)/, /^(?:,?\s*up\s*)/, /^(?:,?\s*down\s*)/, /^(?:\)\s*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*~~[\~]+\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:["][`])/, /^(?:["])/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?::\d+)/, ], conditions: { STYLE_DEFINITION: { rules: [29], inclusive: !1 }, STYLE_STMNT: { rules: [28], inclusive: !1 }, CLASSDEFID: { rules: [23], inclusive: !1 }, CLASSDEF: { rules: [21, 22], inclusive: !1 }, CLASS_STYLE: { rules: [26], inclusive: !1 }, CLASS: { rules: [25], inclusive: !1 }, LLABEL: { rules: [100, 101, 102, 103, 104], inclusive: !1 }, ARROW_DIR: { rules: [86, 87, 88, 89, 90, 91, 92], inclusive: !1 }, BLOCK_ARROW: { rules: [77, 82, 85], inclusive: !1 }, NODE: { rules: [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 78, 81], inclusive: !1 }, md_string: { rules: [10, 11, 79, 80], inclusive: !1 }, space: { rules: [], inclusive: !1 }, string: { rules: [13, 14, 83, 84], inclusive: !1 }, acc_descr_multiline: { rules: [35, 36], inclusive: !1 }, acc_descr: { rules: [33], inclusive: !1 }, acc_title: { rules: [31], inclusive: !1 }, INITIAL: { rules: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 24, 27, 30, 32, 34, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 93, 94, 95, 96, 97, 98, 99, 105, ], inclusive: !0, }, }, }; return D; })(); L.lexer = A; function k() { this.yy = {}; } return (k.prototype = L), (L.Parser = k), new k(); })(); ee.parser = ee; const Pe = ee; let O = {}, ie = [], j = {}; const ce = 'color', ue = 'fill', Fe = 'bgFill', pe = ',', Ke = he(); let V = {}; const Me = (e) => De.sanitizeText(e, Ke), Ye = function (e, a = '') { V[e] === void 0 && (V[e] = { id: e, styles: [], textStyles: [] }); const d = V[e]; a != null && a.split(pe).forEach((c) => { const n = c.replace(/([^;]*);/, '$1').trim(); if (c.match(ce)) { const l = n.replace(ue, Fe).replace(ce, ue); d.textStyles.push(l); } d.styles.push(n); }); }, We = function (e, a = '') { const d = O[e]; a != null && (d.styles = a.split(pe)); }, je = function (e, a) { e.split(',').forEach(function (d) { let c = O[d]; if (c === void 0) { const n = d.trim(); (O[n] = { id: n, type: 'na', children: [] }), (c = O[n]); } c.classes || (c.classes = []), c.classes.push(a); }); }, fe = (e, a) => { const d = e.flat(), c = []; for (const n of d) { if ((n.label && (n.label = Me(n.label)), n.type === 'classDef')) { Ye(n.id, n.css); continue; } if (n.type === 'applyClass') { je(n.id, (n == null ? void 0 : n.styleClass) || ''); continue; } if (n.type === 'applyStyles') { n != null && n.stylesStr && We(n.id, n == null ? void 0 : n.stylesStr); continue; } if (n.type === 'column-setting') a.columns = n.columns || -1; else if (n.type === 'edge') j[n.id] ? j[n.id]++ : (j[n.id] = 1), (n.id = j[n.id] + '-' + n.id), ie.push(n); else { n.label || (n.type === 'composite' ? (n.label = '') : (n.label = n.id)); const g = !O[n.id]; if ( (g ? (O[n.id] = n) : (n.type !== 'na' && (O[n.id].type = n.type), n.label !== n.id && (O[n.id].label = n.label)), n.children && fe(n.children, n), n.type === 'space') ) { const l = n.width || 1; for (let f = 0; f < l; f++) { const b = Ne(n); (b.id = b.id + '-' + f), (O[b.id] = b), c.push(b); } } else g && c.push(n); } } a.children = c; }; let re = [], U = { id: 'root', type: 'composite', children: [], columns: -1 }; const Ve = () => { S.debug('Clear called'), Ee(), (U = { id: 'root', type: 'composite', children: [], columns: -1 }), (O = { root: U }), (re = []), (V = {}), (ie = []), (j = {}); }; function Ue(e) { switch ((S.debug('typeStr2Type', e), e)) { case '[]': return 'square'; case '()': return S.debug('we have a round'), 'round'; case '(())': return 'circle'; case '>]': return 'rect_left_inv_arrow'; case '{}': return 'diamond'; case '{{}}': return 'hexagon'; case '([])': return 'stadium'; case '[[]]': return 'subroutine'; case '[()]': return 'cylinder'; case '((()))': return 'doublecircle'; case '[//]': return 'lean_right'; case '[\\\\]': return 'lean_left'; case '[/\\]': return 'trapezoid'; case '[\\/]': return 'inv_trapezoid'; case '<[]>': return 'block_arrow'; default: return 'na'; } } function Xe(e) { switch ((S.debug('typeStr2Type', e), e)) { case '==': return 'thick'; default: return 'normal'; } } function Ge(e) { switch (e.trim()) { case '--x': return 'arrow_cross'; case '--o': return 'arrow_circle'; default: return 'arrow_point'; } } let de = 0; const He = () => (de++, 'id-' + Math.random().toString(36).substr(2, 12) + '-' + de), qe = (e) => { (U.children = e), fe(e, U), (re = U.children); }, Ze = (e) => { const a = O[e]; return a ? (a.columns ? a.columns : a.children ? a.children.length : -1) : -1; }, Je = () => [...Object.values(O)], Qe = () => re || [], $e = () => ie, et = (e) => O[e], tt = (e) => { O[e.id] = e; }, st = () => console, it = function () { return V; }, rt = { getConfig: () => se().block, typeStr2Type: Ue, edgeTypeStr2Type: Xe, edgeStrToEdgeData: Ge, getLogger: st, getBlocksFlat: Je, getBlocks: Qe, getEdges: $e, setHierarchy: qe, getBlock: et, setBlock: tt, getColumns: Ze, getClasses: it, clear: Ve, generateId: He, }, nt = rt, q = (e, a) => { const d = Be, c = d(e, 'r'), n = d(e, 'g'), g = d(e, 'b'); return we(c, n, g, a); }, at = (e) => `.label { font-family: ${e.fontFamily}; color: ${e.nodeTextColor || e.textColor}; } .cluster-label text { fill: ${e.titleColor}; } .cluster-label span,p { color: ${e.titleColor}; } .label text,span,p { fill: ${e.nodeTextColor || e.textColor}; color: ${e.nodeTextColor || e.textColor}; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: 1px; } .flowchart-label text { text-anchor: middle; } // .flowchart-label .text-outer-tspan { // text-anchor: middle; // } // .flowchart-label .text-inner-tspan { // text-anchor: start; // } .node .label { text-align: center; } .node.clickable { cursor: pointer; } .arrowheadPath { fill: ${e.arrowheadColor}; } .edgePath .path { stroke: ${e.lineColor}; stroke-width: 2.0px; } .flowchart-link { stroke: ${e.lineColor}; fill: none; } .edgeLabel { background-color: ${e.edgeLabelBackground}; rect { opacity: 0.5; background-color: ${e.edgeLabelBackground}; fill: ${e.edgeLabelBackground}; } text-align: center; } /* For html labels only */ .labelBkg { background-color: ${q(e.edgeLabelBackground, 0.5)}; // background-color: } .node .cluster { // fill: ${q(e.mainBkg, 0.5)}; fill: ${q(e.clusterBkg, 0.5)}; stroke: ${q(e.clusterBorder, 0.2)}; box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; stroke-width: 1px; } .cluster text { fill: ${e.titleColor}; } .cluster span,p { color: ${e.titleColor}; } /* .cluster div { color: ${e.titleColor}; } */ div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: ${e.fontFamily}; font-size: 12px; background: ${e.tertiaryColor}; border: 1px solid ${e.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } .flowchartTitleText { text-anchor: middle; font-size: 18px; fill: ${e.textColor}; } `, lt = at; function be(e, a, d = !1) { var c, n, g; const l = e; let f = 'default'; (((c = l == null ? void 0 : l.classes) == null ? void 0 : c.length) || 0) > 0 && (f = ((l == null ? void 0 : l.classes) || []).join(' ')), (f = f + ' flowchart-label'); let b = 0, p = '', x; switch (l.type) { case 'round': (b = 5), (p = 'rect'); break; case 'composite': (b = 0), (p = 'composite'), (x = 0); break; case 'square': p = 'rect'; break; case 'diamond': p = 'question'; break; case 'hexagon': p = 'hexagon'; break; case 'block_arrow': p = 'block_arrow'; break; case 'odd': p = 'rect_left_inv_arrow'; break; case 'lean_right': p = 'lean_right'; break; case 'lean_left': p = 'lean_left'; break; case 'trapezoid': p = 'trapezoid'; break; case 'inv_trapezoid': p = 'inv_trapezoid'; break; case 'rect_left_inv_arrow': p = 'rect_left_inv_arrow'; break; case 'circle': p = 'circle'; break; case 'ellipse': p = 'ellipse'; break; case 'stadium': p = 'stadium'; break; case 'subroutine': p = 'subroutine'; break; case 'cylinder': p = 'cylinder'; break; case 'group': p = 'rect'; break; case 'doublecircle': p = 'doublecircle'; break; default: p = 'rect'; } const y = ve((l == null ? void 0 : l.styles) || []), T = l.label, v = l.size || { width: 0, height: 0, x: 0, y: 0 }; return { labelStyle: y.labelStyle, shape: p, labelText: T, rx: b, ry: b, class: f, style: y.style, id: l.id, directions: l.directions, width: v.width, height: v.height, x: v.x, y: v.y, positioned: d, intersect: void 0, type: l.type, padding: x ?? (((g = (n = se()) == null ? void 0 : n.block) == null ? void 0 : g.padding) || 0), }; } async function ot(e, a, d) { const c = be(a, d, !1); if (c.type === 'group') return; const n = await ge(e, c), g = n.node().getBBox(), l = d.getBlock(c.id); (l.size = { width: g.width, height: g.height, x: 0, y: 0, node: n }), d.setBlock(l), n.remove(); } async function ct(e, a, d) { const c = be(a, d, !0); d.getBlock(c.id).type !== 'space' && (await ge(e, c), (a.intersect = c == null ? void 0 : c.intersect), ze(c)); } async function ne(e, a, d, c) { for (const n of a) await c(e, n, d), n.children && (await ne(e, n.children, d, c)); } async function ut(e, a, d) { await ne(e, a, d, ot); } async function dt(e, a, d) { await ne(e, a, d, ct); } async function ht(e, a, d, c, n) { const g = new Ce({ multigraph: !0, compound: !0 }); g.setGraph({ rankdir: 'TB', nodesep: 10, ranksep: 10, marginx: 8, marginy: 8 }); for (const l of d) l.size && g.setNode(l.id, { width: l.size.width, height: l.size.height, intersect: l.intersect }); for (const l of a) if (l.start && l.end) { const f = c.getBlock(l.start), b = c.getBlock(l.end); if (f != null && f.size && b != null && b.size) { const p = f.size, x = b.size, y = [ { x: p.x, y: p.y }, { x: p.x + (x.x - p.x) / 2, y: p.y + (x.y - p.y) / 2 }, { x: x.x, y: x.y }, ]; await Ie( e, { v: l.start, w: l.end, name: l.id }, { ...l, arrowTypeEnd: l.arrowTypeEnd, arrowTypeStart: l.arrowTypeStart, points: y, classes: 'edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1', }, void 0, 'block', g, n ), l.label && (await Oe(e, { ...l, label: l.label, labelStyle: 'stroke: #333; stroke-width: 1.5px;fill:none;', arrowTypeEnd: l.arrowTypeEnd, arrowTypeStart: l.arrowTypeStart, points: y, classes: 'edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1', }), await Te({ ...l, x: y[1].x, y: y[1].y }, { originalPath: y })); } } } const _ = ((oe = (le = he()) == null ? void 0 : le.block) == null ? void 0 : oe.padding) || 8; function gt(e, a) { if (e === 0 || !Number.isInteger(e)) throw new Error('Columns must be an integer !== 0.'); if (a < 0 || !Number.isInteger(a)) throw new Error('Position must be a non-negative integer.' + a); if (e < 0) return { px: a, py: 0 }; if (e === 1) return { px: 0, py: a }; const d = a % e, c = Math.floor(a / e); return { px: d, py: c }; } const pt = (e) => { let a = 0, d = 0; for (const c of e.children) { const { width: n, height: g, x: l, y: f } = c.size || { width: 0, height: 0, x: 0, y: 0 }; S.debug('getMaxChildSize abc95 child:', c.id, 'width:', n, 'height:', g, 'x:', l, 'y:', f, c.type), c.type !== 'space' && (n > a && (a = n / (e.widthInColumns || 1)), g > d && (d = g)); } return { width: a, height: d }; }; function te(e, a, d = 0, c = 0) { var n, g, l, f, b, p, x, y, T, v, N; S.debug( 'setBlockSizes abc95 (start)', e.id, (n = e == null ? void 0 : e.size) == null ? void 0 : n.x, 'block width =', e == null ? void 0 : e.size, 'sieblingWidth', d ), ((g = e == null ? void 0 : e.size) != null && g.width) || (e.size = { width: d, height: c, x: 0, y: 0 }); let E = 0, L = 0; if (((l = e.children) == null ? void 0 : l.length) > 0) { for (const h of e.children) te(h, a); const A = pt(e); (E = A.width), (L = A.height), S.debug('setBlockSizes abc95 maxWidth of', e.id, ':s children is ', E, L); for (const h of e.children) h.size && (S.debug(`abc95 Setting size of children of ${e.id} id=${h.id} ${E} ${L} ${h.size}`), (h.size.width = E * (h.widthInColumns || 1) + _ * ((h.widthInColumns || 1) - 1)), (h.size.height = L), (h.size.x = 0), (h.size.y = 0), S.debug(`abc95 updating size of ${e.id} children child:${h.id} maxWidth:${E} maxHeight:${L}`)); for (const h of e.children) te(h, a, E, L); const k = e.columns || -1; let D = 0; for (const h of e.children) D += h.widthInColumns || 1; let o = e.children.length; k > 0 && k < D && (o = k), e.widthInColumns; const s = Math.ceil(D / o); let i = o * (E + _) + _, u = s * (L + _) + _; if (i < d) { S.debug(`Detected to small siebling: abc95 ${e.id} sieblingWidth ${d} sieblingHeight ${c} width ${i}`), (i = d), (u = c); const h = (d - o * _ - _) / o, t = (c - s * _ - _) / s; S.debug('Size indata abc88', e.id, 'childWidth', h, 'maxWidth', E), S.debug('Size indata abc88', e.id, 'childHeight', t, 'maxHeight', L), S.debug('Size indata abc88 xSize', o, 'padding', _); for (const m of e.children) m.size && ((m.size.width = h), (m.size.height = t), (m.size.x = 0), (m.size.y = 0)); } if ( (S.debug( `abc95 (finale calc) ${e.id} xSize ${o} ySize ${s} columns ${k}${e.children.length} width=${Math.max( i, ((f = e.size) == null ? void 0 : f.width) || 0 )}` ), i < (((b = e == null ? void 0 : e.size) == null ? void 0 : b.width) || 0)) ) { i = ((p = e == null ? void 0 : e.size) == null ? void 0 : p.width) || 0; const h = k > 0 ? Math.min(e.children.length, k) : e.children.length; if (h > 0) { const t = (i - h * _ - _) / h; S.debug('abc95 (growing to fit) width', e.id, i, (x = e.size) == null ? void 0 : x.width, t); for (const m of e.children) m.size && (m.size.width = t); } } e.size = { width: i, height: u, x: 0, y: 0 }; } S.debug( 'setBlockSizes abc94 (done)', e.id, (y = e == null ? void 0 : e.size) == null ? void 0 : y.x, (T = e == null ? void 0 : e.size) == null ? void 0 : T.width, (v = e == null ? void 0 : e.size) == null ? void 0 : v.y, (N = e == null ? void 0 : e.size) == null ? void 0 : N.height ); } function xe(e, a) { var d, c, n, g, l, f, b, p, x, y, T, v, N, E, L, A, k; S.debug( `abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${(d = e == null ? void 0 : e.size) == null ? void 0 : d.x} y: ${ (c = e == null ? void 0 : e.size) == null ? void 0 : c.y } width: ${(n = e == null ? void 0 : e.size) == null ? void 0 : n.width}` ); const D = e.columns || -1; if ((S.debug('layoutBlocks columns abc95', e.id, '=>', D, e), e.children && e.children.length > 0)) { const o = ((l = (g = e == null ? void 0 : e.children[0]) == null ? void 0 : g.size) == null ? void 0 : l.width) || 0, s = e.children.length * o + (e.children.length - 1) * _; S.debug('widthOfChildren 88', s, 'posX'); let i = 0; S.debug('abc91 block?.size?.x', e.id, (f = e == null ? void 0 : e.size) == null ? void 0 : f.x); let u = (b = e == null ? void 0 : e.size) != null && b.x ? ((p = e == null ? void 0 : e.size) == null ? void 0 : p.x) + (-((x = e == null ? void 0 : e.size) == null ? void 0 : x.width) / 2 || 0) : -_, h = 0; for (const t of e.children) { const m = e; if (!t.size) continue; const { width: r, height: R } = t.size, { px: Y, py: F } = gt(D, i); if ( (F != h && ((h = F), (u = (y = e == null ? void 0 : e.size) != null && y.x ? ((T = e == null ? void 0 : e.size) == null ? void 0 : T.x) + (-((v = e == null ? void 0 : e.size) == null ? void 0 : v.width) / 2 || 0) : -_), S.debug('New row in layout for block', e.id, ' and child ', t.id, h)), S.debug( `abc89 layout blocks (child) id: ${t.id} Pos: ${i} (px, py) ${Y},${F} (${(N = m == null ? void 0 : m.size) == null ? void 0 : N.x},${ (E = m == null ? void 0 : m.size) == null ? void 0 : E.y }) parent: ${m.id} width: ${r}${_}` ), m.size) ) { const C = r / 2; (t.size.x = u + _ + C), S.debug( `abc91 layout blocks (calc) px, pyid:${t.id} startingPos=X${u} new startingPosX${ t.size.x } ${C} padding=${_} width=${r} halfWidth=${C} => x:${t.size.x} y:${t.size.y} ${t.widthInColumns} (width * (child?.w || 1)) / 2 ${ (r * ((t == null ? void 0 : t.widthInColumns) || 1)) / 2 }` ), (u = t.size.x + C), (t.size.y = m.size.y - m.size.height / 2 + F * (R + _) + R / 2 + _), S.debug( `abc88 layout blocks (calc) px, pyid:${t.id}startingPosX${u}${_}${C}=>x:${t.size.x}y:${t.size.y}${ t.widthInColumns }(width * (child?.w || 1)) / 2${(r * ((t == null ? void 0 : t.widthInColumns) || 1)) / 2}` ); } t.children && xe(t), (i += (t == null ? void 0 : t.widthInColumns) || 1), S.debug('abc88 columnsPos', t, i); } } S.debug( `layout blocks (<==layoutBlocks) ${e.id} x: ${(L = e == null ? void 0 : e.size) == null ? void 0 : L.x} y: ${ (A = e == null ? void 0 : e.size) == null ? void 0 : A.y } width: ${(k = e == null ? void 0 : e.size) == null ? void 0 : k.width}` ); } function Se(e, { minX: a, minY: d, maxX: c, maxY: n } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) { if (e.size && e.id !== 'root') { const { x: g, y: l, width: f, height: b } = e.size; g - f / 2 < a && (a = g - f / 2), l - b / 2 < d && (d = l - b / 2), g + f / 2 > c && (c = g + f / 2), l + b / 2 > n && (n = l + b / 2); } if (e.children) for (const g of e.children) ({ minX: a, minY: d, maxX: c, maxY: n } = Se(g, { minX: a, minY: d, maxX: c, maxY: n })); return { minX: a, minY: d, maxX: c, maxY: n }; } function ft(e) { const a = e.getBlock('root'); if (!a) return; te(a, e, 0, 0), xe(a), S.debug('getBlocks', JSON.stringify(a, null, 2)); const { minX: d, minY: c, maxX: n, maxY: g } = Se(a), l = g - c, f = n - d; return { x: d, y: c, width: f, height: l }; } const bt = function (e, a) { return a.db.getClasses(); }, xt = async function (e, a, d, c) { const { securityLevel: n, block: g } = se(), l = c.db; let f; n === 'sandbox' && (f = H('#i' + a)); const b = n === 'sandbox' ? H(f.nodes()[0].contentDocument.body) : H('body'), p = n === 'sandbox' ? b.select(`[id="${a}"]`) : H(`[id="${a}"]`); ke(p, ['point', 'circle', 'cross'], c.type, a); const y = l.getBlocks(), T = l.getBlocksFlat(), v = l.getEdges(), N = p.insert('g').attr('class', 'block'); await ut(N, y, l); const E = ft(l); if ((await dt(N, y, l), await ht(N, v, T, l, a), E)) { const L = E, A = Math.max(1, Math.round(0.125 * (L.width / L.height))), k = L.height + A + 10, D = L.width + 10, { useMaxWidth: o } = g; ye(p, k, D, !!o), S.debug('Here Bounds', E, L), p.attr('viewBox', `${L.x - 5} ${L.y - 5} ${L.width + 10} ${L.height + 10}`); } Ae(Re); }, St = { draw: xt, getClasses: bt }, Ct = { parser: Pe, db: nt, renderer: St, styles: lt }; export { Ct as diagram };