webapp.timeline-definition-bf702344.df792284.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of langgraph4j-studio Show documentation
Show all versions of langgraph4j-studio Show documentation
an **embed playground webapp** to run a Langgraph4j workflow in visual way
{"mappings":"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","sources":["","node_modules/mermaid/dist/timeline-definition-bf702344.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n var parcelRequire = $parcel$global[\"parcelRequire0031\"];\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"2b9k8\", function(module, exports) {\n\n$parcel$export(module.exports, \"diagram\", () => $1963d759cfaad1f5$export$6118d022d940d562);\n\nvar $4jcZX = parcelRequire(\"4jcZX\");\n\nvar $2YFJl = parcelRequire(\"2YFJl\");\n\nvar $c94qS = parcelRequire(\"c94qS\");\nvar $75Ue8 = parcelRequire(\"75Ue8\");\nvar $1Ez1E = parcelRequire(\"1Ez1E\");\nparcelRequire(\"eJNXH\");\nparcelRequire(\"gngdn\");\nparcelRequire(\"2ujND\");\nparcelRequire(\"i8Fxz\");\n\n\n\n\nvar $1963d759cfaad1f5$var$parser = function() {\n var o = function(k, v, o2, l) {\n for(o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v);\n return o2;\n }, $V0 = [\n 6,\n 8,\n 10,\n 11,\n 12,\n 14,\n 16,\n 17,\n 20,\n 21\n ], $V1 = [\n 1,\n 9\n ], $V2 = [\n 1,\n 10\n ], $V3 = [\n 1,\n 11\n ], $V4 = [\n 1,\n 12\n ], $V5 = [\n 1,\n 13\n ], $V6 = [\n 1,\n 16\n ], $V7 = [\n 1,\n 17\n ];\n var parser2 = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"start\": 3,\n \"timeline\": 4,\n \"document\": 5,\n \"EOF\": 6,\n \"line\": 7,\n \"SPACE\": 8,\n \"statement\": 9,\n \"NEWLINE\": 10,\n \"title\": 11,\n \"acc_title\": 12,\n \"acc_title_value\": 13,\n \"acc_descr\": 14,\n \"acc_descr_value\": 15,\n \"acc_descr_multiline_value\": 16,\n \"section\": 17,\n \"period_statement\": 18,\n \"event_statement\": 19,\n \"period\": 20,\n \"event\": 21,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 4: \"timeline\",\n 6: \"EOF\",\n 8: \"SPACE\",\n 10: \"NEWLINE\",\n 11: \"title\",\n 12: \"acc_title\",\n 13: \"acc_title_value\",\n 14: \"acc_descr\",\n 15: \"acc_descr_value\",\n 16: \"acc_descr_multiline_value\",\n 17: \"section\",\n 20: \"period\",\n 21: \"event\"\n },\n productions_: [\n 0,\n [\n 3,\n 3\n ],\n [\n 5,\n 0\n ],\n [\n 5,\n 2\n ],\n [\n 7,\n 2\n ],\n [\n 7,\n 1\n ],\n [\n 7,\n 1\n ],\n [\n 7,\n 1\n ],\n [\n 9,\n 1\n ],\n [\n 9,\n 2\n ],\n [\n 9,\n 2\n ],\n [\n 9,\n 1\n ],\n [\n 9,\n 1\n ],\n [\n 9,\n 1\n ],\n [\n 9,\n 1\n ],\n [\n 18,\n 1\n ],\n [\n 19,\n 1\n ]\n ],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch(yystate){\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.getCommonDb().setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 15:\n yy.addTask($$[$0], 0, \"\");\n this.$ = $$[$0];\n break;\n case 16:\n yy.addEvent($$[$0].substr(2));\n this.$ = $$[$0];\n break;\n }\n },\n table: [\n {\n 3: 1,\n 4: [\n 1,\n 2\n ]\n },\n {\n 1: [\n 3\n ]\n },\n o($V0, [\n 2,\n 2\n ], {\n 5: 3\n }),\n {\n 6: [\n 1,\n 4\n ],\n 7: 5,\n 8: [\n 1,\n 6\n ],\n 9: 7,\n 10: [\n 1,\n 8\n ],\n 11: $V1,\n 12: $V2,\n 14: $V3,\n 16: $V4,\n 17: $V5,\n 18: 14,\n 19: 15,\n 20: $V6,\n 21: $V7\n },\n o($V0, [\n 2,\n 7\n ], {\n 1: [\n 2,\n 1\n ]\n }),\n o($V0, [\n 2,\n 3\n ]),\n {\n 9: 18,\n 11: $V1,\n 12: $V2,\n 14: $V3,\n 16: $V4,\n 17: $V5,\n 18: 14,\n 19: 15,\n 20: $V6,\n 21: $V7\n },\n o($V0, [\n 2,\n 5\n ]),\n o($V0, [\n 2,\n 6\n ]),\n o($V0, [\n 2,\n 8\n ]),\n {\n 13: [\n 1,\n 19\n ]\n },\n {\n 15: [\n 1,\n 20\n ]\n },\n o($V0, [\n 2,\n 11\n ]),\n o($V0, [\n 2,\n 12\n ]),\n o($V0, [\n 2,\n 13\n ]),\n o($V0, [\n 2,\n 14\n ]),\n o($V0, [\n 2,\n 15\n ]),\n o($V0, [\n 2,\n 16\n ]),\n o($V0, [\n 2,\n 4\n ]),\n o($V0, [\n 2,\n 9\n ]),\n o($V0, [\n 2,\n 10\n ])\n ],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) this.trace(str);\n else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [\n 0\n ], tstack = [], vstack = [\n null\n ], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = {\n yy: {}\n };\n for(var k in this.yy)if (Object.prototype.hasOwnProperty.call(this.yy, k)) sharedState.yy[k] = this.yy[k];\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") lexer2.yylloc = {};\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") this.parseError = sharedState.yy.parseError;\n else this.parseError = Object.getPrototypeOf(this).parseError;\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while(true){\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) action = this.defaultActions[state];\n else {\n if (symbol === null || typeof symbol == \"undefined\") symbol = lex();\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for(p in table[state])if (this.terminals_[p] && p > TERROR) expected.push(\"'\" + this.terminals_[p] + \"'\");\n if (lexer2.showPosition) errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n else errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n switch(action[0]){\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") return r;\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) this.yy.parser.parseError(str, hash);\n else throw new Error(str);\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\n \"INITIAL\"\n ];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) this.yylloc.range = [\n 0,\n 0\n ];\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else this.yylloc.last_column++;\n if (this.options.ranges) this.yylloc.range[1]++;\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) this.yylineno -= lines.length - 1;\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n 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\n };\n if (this.options.ranges) this.yylloc.range = [\n r[0],\n r[0] + this.yyleng - len\n ];\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // 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.\n reject: function() {\n if (this.options.backtrack_lexer) this._backtrack = true;\n 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).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) next += this._input.substr(0, 20 - next.length);\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) backup.yylloc.range = this.yylloc.range.slice(0);\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) this.yylloc.range = [\n this.offset,\n this.offset += this.yyleng\n ];\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else if (this._backtrack) {\n for(var k in backup)this[k] = backup[k];\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) return this.EOF;\n if (!this._input) this.done = true;\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for(var i = 0; i < rules.length; i++){\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) return token;\n else if (this._backtrack) {\n match = false;\n continue;\n } else return false;\n } else if (!this.options.flex) break;\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) return token;\n return false;\n }\n if (this._input === \"\") return this.EOF;\n else return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) return r;\n else return this.lex();\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) return this.conditionStack.pop();\n else return this.conditionStack[0];\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n else return this.conditions[\"INITIAL\"].rules;\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) return this.conditionStack[n];\n else return \"INITIAL\";\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {\n \"case-insensitive\": true\n },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch($avoiding_name_collisions){\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n case 6:\n return 11;\n case 7:\n this.begin(\"acc_title\");\n return 12;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 17;\n case 15:\n return 21;\n case 16:\n return 20;\n case 17:\n return 6;\n case 18:\n return \"INVALID\";\n }\n },\n rules: [\n /^(?:%(?!\\{)[^\\n]*)/i,\n /^(?:[^\\}]%%[^\\n]*)/i,\n /^(?:[\\n]+)/i,\n /^(?:\\s+)/i,\n /^(?:#[^\\n]*)/i,\n /^(?:timeline\\b)/i,\n /^(?:title\\s[^#\\n;]+)/i,\n /^(?:accTitle\\s*:\\s*)/i,\n /^(?:(?!\\n||)*[^\\n]*)/i,\n /^(?:accDescr\\s*:\\s*)/i,\n /^(?:(?!\\n||)*[^\\n]*)/i,\n /^(?:accDescr\\s*\\{\\s*)/i,\n /^(?:[\\}])/i,\n /^(?:[^\\}]*)/i,\n /^(?:section\\s[^#:\\n;]+)/i,\n /^(?::\\s[^#:\\n;]+)/i,\n /^(?:[^#:\\n;]+)/i,\n /^(?:$)/i,\n /^(?:.)/i\n ],\n conditions: {\n \"acc_descr_multiline\": {\n \"rules\": [\n 12,\n 13\n ],\n \"inclusive\": false\n },\n \"acc_descr\": {\n \"rules\": [\n 10\n ],\n \"inclusive\": false\n },\n \"acc_title\": {\n \"rules\": [\n 8\n ],\n \"inclusive\": false\n },\n \"INITIAL\": {\n \"rules\": [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 9,\n 11,\n 14,\n 15,\n 16,\n 17,\n 18\n ],\n \"inclusive\": true\n }\n }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\n$1963d759cfaad1f5$var$parser.parser = $1963d759cfaad1f5$var$parser;\nconst $1963d759cfaad1f5$var$parser$1 = $1963d759cfaad1f5$var$parser;\nlet $1963d759cfaad1f5$var$currentSection = \"\";\nlet $1963d759cfaad1f5$var$currentTaskId = 0;\nconst $1963d759cfaad1f5$var$sections = [];\nconst $1963d759cfaad1f5$var$tasks = [];\nconst $1963d759cfaad1f5$var$rawTasks = [];\nconst $1963d759cfaad1f5$var$getCommonDb = ()=>(0, $4jcZX.L);\nconst $1963d759cfaad1f5$var$clear = function() {\n $1963d759cfaad1f5$var$sections.length = 0;\n $1963d759cfaad1f5$var$tasks.length = 0;\n $1963d759cfaad1f5$var$currentSection = \"\";\n $1963d759cfaad1f5$var$rawTasks.length = 0;\n (0, $4jcZX.v)();\n};\nconst $1963d759cfaad1f5$var$addSection = function(txt) {\n $1963d759cfaad1f5$var$currentSection = txt;\n $1963d759cfaad1f5$var$sections.push(txt);\n};\nconst $1963d759cfaad1f5$var$getSections = function() {\n return $1963d759cfaad1f5$var$sections;\n};\nconst $1963d759cfaad1f5$var$getTasks = function() {\n let allItemsProcessed = $1963d759cfaad1f5$var$compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while(!allItemsProcessed && iterationCount < maxDepth){\n allItemsProcessed = $1963d759cfaad1f5$var$compileTasks();\n iterationCount++;\n }\n $1963d759cfaad1f5$var$tasks.push(...$1963d759cfaad1f5$var$rawTasks);\n return $1963d759cfaad1f5$var$tasks;\n};\nconst $1963d759cfaad1f5$var$addTask = function(period, length, event) {\n const rawTask = {\n id: $1963d759cfaad1f5$var$currentTaskId++,\n section: $1963d759cfaad1f5$var$currentSection,\n type: $1963d759cfaad1f5$var$currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [\n event\n ] : []\n };\n $1963d759cfaad1f5$var$rawTasks.push(rawTask);\n};\nconst $1963d759cfaad1f5$var$addEvent = function(event) {\n const currentTask = $1963d759cfaad1f5$var$rawTasks.find((task)=>task.id === $1963d759cfaad1f5$var$currentTaskId - 1);\n currentTask.events.push(event);\n};\nconst $1963d759cfaad1f5$var$addTaskOrg = function(descr) {\n const newTask = {\n section: $1963d759cfaad1f5$var$currentSection,\n type: $1963d759cfaad1f5$var$currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n $1963d759cfaad1f5$var$tasks.push(newTask);\n};\nconst $1963d759cfaad1f5$var$compileTasks = function() {\n const compileTask = function(pos) {\n return $1963d759cfaad1f5$var$rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of $1963d759cfaad1f5$var$rawTasks.entries()){\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst $1963d759cfaad1f5$var$timelineDb = {\n clear: $1963d759cfaad1f5$var$clear,\n getCommonDb: $1963d759cfaad1f5$var$getCommonDb,\n addSection: $1963d759cfaad1f5$var$addSection,\n getSections: $1963d759cfaad1f5$var$getSections,\n getTasks: $1963d759cfaad1f5$var$getTasks,\n addTask: $1963d759cfaad1f5$var$addTask,\n addTaskOrg: $1963d759cfaad1f5$var$addTaskOrg,\n addEvent: $1963d759cfaad1f5$var$addEvent\n};\nconst $1963d759cfaad1f5$var$db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addEvent: $1963d759cfaad1f5$var$addEvent,\n addSection: $1963d759cfaad1f5$var$addSection,\n addTask: $1963d759cfaad1f5$var$addTask,\n addTaskOrg: $1963d759cfaad1f5$var$addTaskOrg,\n clear: $1963d759cfaad1f5$var$clear,\n default: $1963d759cfaad1f5$var$timelineDb,\n getCommonDb: $1963d759cfaad1f5$var$getCommonDb,\n getSections: $1963d759cfaad1f5$var$getSections,\n getTasks: $1963d759cfaad1f5$var$getTasks\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nconst $1963d759cfaad1f5$var$MAX_SECTIONS = 12;\nconst $1963d759cfaad1f5$var$drawRect = function(elem, rectData) {\n const rectElem = elem.append(\"rect\");\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.y);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", rectData.width);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (rectData.class !== void 0) rectElem.attr(\"class\", rectData.class);\n return rectElem;\n};\nconst $1963d759cfaad1f5$var$drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = (0, $2YFJl.arc)().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = (0, $2YFJl.arc)().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n if (faceData.score > 3) smile(face);\n else if (faceData.score < 3) sad(face);\n else ambivalent(face);\n return circleElement;\n};\nconst $1963d759cfaad1f5$var$drawCircle = function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) circleElement.attr(\"class\", circleElement.class);\n if (circleData.title !== void 0) circleElement.append(\"title\").text(circleData.title);\n return circleElement;\n};\nconst $1963d759cfaad1f5$var$drawText = function(elem, textData) {\n const nText = textData.text.replace(/
/gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) textElem.attr(\"class\", textData.class);\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nconst $1963d759cfaad1f5$var$drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n $1963d759cfaad1f5$var$drawText(elem, txtObject);\n};\nconst $1963d759cfaad1f5$var$drawSection = function(elem, section, conf) {\n const g = elem.append(\"g\");\n const rect = $1963d759cfaad1f5$var$getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n $1963d759cfaad1f5$var$drawRect(g, rect);\n $1963d759cfaad1f5$var$_drawTextCandidateFunc(conf)(section.text, g, rect.x, rect.y, rect.width, rect.height, {\n class: \"journey-section section-type-\" + section.num\n }, conf, section.colour);\n};\nlet $1963d759cfaad1f5$var$taskCount = -1;\nconst $1963d759cfaad1f5$var$drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append(\"g\");\n $1963d759cfaad1f5$var$taskCount++;\n const maxHeight = 450;\n g.append(\"line\").attr(\"id\", \"task\" + $1963d759cfaad1f5$var$taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n $1963d759cfaad1f5$var$drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = $1963d759cfaad1f5$var$getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n $1963d759cfaad1f5$var$drawRect(g, rect);\n task.x;\n $1963d759cfaad1f5$var$_drawTextCandidateFunc(conf)(task.task, g, rect.x, rect.y, rect.width, rect.height, {\n class: \"task\"\n }, conf, task.colour);\n};\nconst $1963d759cfaad1f5$var$drawBackgroundRect = function(elem, bounds) {\n const rectElem = $1963d759cfaad1f5$var$drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: \"rect\"\n });\n rectElem.lower();\n};\nconst $1963d759cfaad1f5$var$getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n \"text-anchor\": \"start\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\nconst $1963d759cfaad1f5$var$getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n};\nconst $1963d759cfaad1f5$var$_drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize: taskFontSize, taskFontFamily: taskFontFamily } = conf;\n const lines = content.split(/
/gi);\n for(let i = 0; i < lines.length; i++){\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for(const key in fromTextAttrsDict)if (key in fromTextAttrsDict) toText.attr(key, fromTextAttrsDict[key]);\n }\n return function(conf) {\n return conf.textPlacement === \"fo\" ? byFo : conf.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst $1963d759cfaad1f5$var$initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nfunction $1963d759cfaad1f5$var$wrap(text, width) {\n text.each(function() {\n var text2 = (0, $2YFJl.select)(this), words = text2.text().split(/(\\s+|
)/).reverse(), word, line = [], lineHeight = 1.1, y = text2.attr(\"y\"), dy = parseFloat(text2.attr(\"dy\")), tspan = text2.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n for(let j = 0; j < words.length; j++){\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(\" \").trim());\n if (tspan.node().getComputedTextLength() > width || word === \"
\") {\n line.pop();\n tspan.text(line.join(\" \").trim());\n if (word === \"
\") line = [\n \"\"\n ];\n else line = [\n word\n ];\n tspan = text2.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n}\nconst $1963d759cfaad1f5$var$drawNode = function(elem, node, fullSection, conf) {\n const section = fullSection % $1963d759cfaad1f5$var$MAX_SECTIONS - 1;\n const nodeElem = elem.append(\"g\");\n node.section = section;\n nodeElem.attr(\"class\", (node.class ? node.class + \" \" : \"\") + \"timeline-node \" + (\"section-\" + section));\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call($1963d759cfaad1f5$var$wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 0.55 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n textElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + node.padding / 2 + \")\");\n $1963d759cfaad1f5$var$defaultBkg(bkgElem, node, section);\n return node;\n};\nconst $1963d759cfaad1f5$var$getVirtualNodeHeight = function(elem, node, conf) {\n const textElem = elem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call($1963d759cfaad1f5$var$wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 0.55 + node.padding;\n};\nconst $1963d759cfaad1f5$var$defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"d\", `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`);\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst $1963d759cfaad1f5$var$svgDraw = {\n drawRect: $1963d759cfaad1f5$var$drawRect,\n drawCircle: $1963d759cfaad1f5$var$drawCircle,\n drawSection: $1963d759cfaad1f5$var$drawSection,\n drawText: $1963d759cfaad1f5$var$drawText,\n drawLabel: $1963d759cfaad1f5$var$drawLabel,\n drawTask: $1963d759cfaad1f5$var$drawTask,\n drawBackgroundRect: $1963d759cfaad1f5$var$drawBackgroundRect,\n getTextObj: $1963d759cfaad1f5$var$getTextObj,\n getNoteRect: $1963d759cfaad1f5$var$getNoteRect,\n initGraphics: $1963d759cfaad1f5$var$initGraphics,\n drawNode: $1963d759cfaad1f5$var$drawNode,\n getVirtualNodeHeight: $1963d759cfaad1f5$var$getVirtualNodeHeight\n};\nconst $1963d759cfaad1f5$var$draw = function(text, id, version, diagObj) {\n var _a, _b;\n const conf = (0, $4jcZX.c)();\n const LEFT_MARGIN = conf.leftMargin ?? 50;\n (0, $4jcZX.l).debug(\"timeline\", diagObj.db);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") sandboxElement = (0, $2YFJl.select)(\"#i\" + id);\n const root = securityLevel === \"sandbox\" ? (0, $2YFJl.select)(sandboxElement.nodes()[0].contentDocument.body) : (0, $2YFJl.select)(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n (0, $4jcZX.l).debug(\"task\", tasks2);\n $1963d759cfaad1f5$var$svgDraw.initGraphics(svg);\n const sections2 = diagObj.db.getSections();\n (0, $4jcZX.l).debug(\"sections\", sections2);\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n sectionBeginY = 50;\n let sectionNumber = 0;\n let hasSections = true;\n sections2.forEach(function(section) {\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n const sectionHeight = $1963d759cfaad1f5$var$svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n (0, $4jcZX.l).debug(\"sectionHeight before draw\", sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n (0, $4jcZX.l).debug(\"tasks.length\", tasks2.length);\n for (const [i, task] of tasks2.entries()){\n const taskNode = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n const taskHeight = $1963d759cfaad1f5$var$svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n (0, $4jcZX.l).debug(\"taskHeight before draw\", taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n maxEventCount = Math.max(maxEventCount, task.events.length);\n let maxEventLineLengthTemp = 0;\n for(let j = 0; j < task.events.length; j++){\n const event = task.events[j];\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n maxEventLineLengthTemp += $1963d759cfaad1f5$var$svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n (0, $4jcZX.l).debug(\"maxSectionHeight before draw\", maxSectionHeight);\n (0, $4jcZX.l).debug(\"maxTaskHeight before draw\", maxTaskHeight);\n if (sections2 && sections2.length > 0) sections2.forEach((section)=>{\n const tasksForSection = tasks2.filter((task)=>task.section === section);\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n (0, $4jcZX.l).debug(\"sectionNode\", sectionNode);\n const sectionNodeWrapper = svg.append(\"g\");\n const node = $1963d759cfaad1f5$var$svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n (0, $4jcZX.l).debug(\"sectionNode output\", node);\n sectionNodeWrapper.attr(\"transform\", `translate(${masterX}, ${sectionBeginY})`);\n masterY += maxSectionHeight + 50;\n if (tasksForSection.length > 0) $1963d759cfaad1f5$var$drawTasks(svg, tasksForSection, sectionNumber, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, false);\n masterX += 200 * Math.max(tasksForSection.length, 1);\n masterY = sectionBeginY;\n sectionNumber++;\n });\n else {\n hasSections = false;\n $1963d759cfaad1f5$var$drawTasks(svg, tasks2, sectionNumber, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, true);\n }\n const box = svg.node().getBBox();\n (0, $4jcZX.l).debug(\"bounds\", box);\n if (title) svg.append(\"text\").text(title).attr(\"x\", box.width / 2 - LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 20);\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n const lineWrapper = svg.append(\"g\").attr(\"class\", \"lineWrapper\");\n lineWrapper.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", depthY).attr(\"x2\", box.width + 3 * LEFT_MARGIN).attr(\"y2\", depthY).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n (0, $4jcZX.o)(void 0, svg, ((_a = conf.timeline) == null ? void 0 : _a.padding) ?? 50, ((_b = conf.timeline) == null ? void 0 : _b.useMaxWidth) ?? false);\n};\nconst $1963d759cfaad1f5$var$drawTasks = function(diagram2, tasks2, sectionColor, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) {\n var _a;\n for (const task of tasks2){\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n (0, $4jcZX.l).debug(\"taskNode\", taskNode);\n const taskWrapper = diagram2.append(\"g\").attr(\"class\", \"taskWrapper\");\n const node = $1963d759cfaad1f5$var$svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n (0, $4jcZX.l).debug(\"taskHeight after draw\", taskHeight);\n taskWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n if (task.events) {\n const lineWrapper = diagram2.append(\"g\").attr(\"class\", \"lineWrapper\");\n let lineLength = maxTaskHeight;\n masterY += 100;\n lineLength = lineLength + $1963d759cfaad1f5$var$drawEvents(diagram2, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n lineWrapper.append(\"line\").attr(\"x1\", masterX + 95).attr(\"y1\", masterY + maxTaskHeight).attr(\"x2\", masterX + 95).attr(\"y2\", masterY + maxTaskHeight + (isWithoutSections ? maxTaskHeight : maxSectionHeight) + maxEventLineLength + 120).attr(\"stroke-width\", 2).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\").attr(\"stroke-dasharray\", \"5,5\");\n }\n masterX = masterX + 200;\n if (isWithoutSections && !((_a = conf.timeline) == null ? void 0 : _a.disableMulticolor)) sectionColor++;\n }\n masterY = masterY - 10;\n};\nconst $1963d759cfaad1f5$var$drawEvents = function(diagram2, events, sectionColor, masterX, masterY, conf) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n for (const event of events){\n const eventNode = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n (0, $4jcZX.l).debug(\"eventNode\", eventNode);\n const eventWrapper = diagram2.append(\"g\").attr(\"class\", \"eventWrapper\");\n const node = $1963d759cfaad1f5$var$svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n masterY = eventBeginY;\n return maxEventHeight;\n};\nconst $1963d759cfaad1f5$var$renderer = {\n setConf: ()=>{},\n draw: $1963d759cfaad1f5$var$draw\n};\nconst $1963d759cfaad1f5$var$genSections = (options)=>{\n let sections2 = \"\";\n for(let i = 0; i < options.THEME_COLOR_LIMIT; i++){\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if ((0, $75Ue8.default)(options[\"lineColor\" + i])) options[\"lineColor\" + i] = (0, $1Ez1E.default)(options[\"lineColor\" + i], 20);\n else options[\"lineColor\" + i] = (0, $c94qS.default)(options[\"lineColor\" + i], 20);\n }\n for(let i = 0; i < options.THEME_COLOR_LIMIT; i++){\n const sw = \"\" + (17 - 3 * i);\n sections2 += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options[\"cScaleLabel\" + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections2;\n};\nconst $1963d759cfaad1f5$var$getStyles = (options)=>`\n .edge {\n stroke-width: 3;\n }\n ${$1963d759cfaad1f5$var$genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\nconst $1963d759cfaad1f5$var$styles = $1963d759cfaad1f5$var$getStyles;\nconst $1963d759cfaad1f5$export$6118d022d940d562 = {\n db: $1963d759cfaad1f5$var$db,\n renderer: $1963d759cfaad1f5$var$renderer,\n parser: $1963d759cfaad1f5$var$parser$1,\n styles: $1963d759cfaad1f5$var$styles\n};\n\n});\n\n\n//# sourceMappingURL=timeline-definition-bf702344.df792284.js.map\n","import { L as commonDb, v as clear$1, c as getConfig, l as log, o as setupGraphViewbox } from \"./mermaid-6dc72991.js\";\nimport { select, arc } from \"d3\";\nimport { isDark, lighten, darken } from \"khroma\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 16], $V7 = [1, 17];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"timeline\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"title\": 11, \"acc_title\": 12, \"acc_title_value\": 13, \"acc_descr\": 14, \"acc_descr_value\": 15, \"acc_descr_multiline_value\": 16, \"section\": 17, \"period_statement\": 18, \"event_statement\": 19, \"period\": 20, \"event\": 21, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"timeline\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 11: \"title\", 12: \"acc_title\", 13: \"acc_title_value\", 14: \"acc_descr\", 15: \"acc_descr_value\", 16: \"acc_descr_multiline_value\", 17: \"section\", 20: \"period\", 21: \"event\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.getCommonDb().setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 15:\n yy.addTask($$[$0], 0, \"\");\n this.$ = $$[$0];\n break;\n case 16:\n yy.addEvent($$[$0].substr(2));\n this.$ = $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 18, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, o($V0, [2, 11]), o($V0, [2, 12]), o($V0, [2, 13]), o($V0, [2, 14]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 4]), o($V0, [2, 9]), o($V0, [2, 10])],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n 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\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // 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.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n case 6:\n return 11;\n case 7:\n this.begin(\"acc_title\");\n return 12;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 17;\n case 15:\n return 21;\n case 16:\n return 20;\n case 17:\n return 6;\n case 18:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:timeline\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?::\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nlet currentTaskId = 0;\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst getCommonDb = () => commonDb;\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n clear$1();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks.push(...rawTasks);\n return tasks;\n};\nconst addTask = function(period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : []\n };\n rawTasks.push(rawTask);\n};\nconst addEvent = function(event) {\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n currentTask.events.push(event);\n};\nconst addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst timelineDb = {\n clear,\n getCommonDb,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addEvent,\n addSection,\n addTask,\n addTaskOrg,\n clear,\n default: timelineDb,\n getCommonDb,\n getSections,\n getTasks\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst MAX_SECTIONS = 12;\nconst drawRect = function(elem, rectData) {\n const rectElem = elem.append(\"rect\");\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.y);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", rectData.width);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (rectData.class !== void 0) {\n rectElem.attr(\"class\", rectData.class);\n }\n return rectElem;\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = arc().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = arc().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n return circleElement;\n};\nconst drawCircle = function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n const nText = textData.text.replace(/
/gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf) {\n const g = elem.append(\"g\");\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"journey-section section-type-\" + section.num },\n conf,\n section.colour\n );\n};\nlet taskCount = -1;\nconst drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n task.x + 14;\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf,\n task.colour\n );\n};\nconst drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: \"rect\"\n });\n rectElem.lower();\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n \"text-anchor\": \"start\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\nconst getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n const lines = content.split(/
/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf) {\n return conf.textPlacement === \"fo\" ? byFo : conf.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nfunction wrap(text, width) {\n text.each(function() {\n var text2 = select(this), words = text2.text().split(/(\\s+|
)/).reverse(), word, line = [], lineHeight = 1.1, y = text2.attr(\"y\"), dy = parseFloat(text2.attr(\"dy\")), tspan = text2.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(\" \").trim());\n if (tspan.node().getComputedTextLength() > width || word === \"
\") {\n line.pop();\n tspan.text(line.join(\" \").trim());\n if (word === \"
\") {\n line = [\"\"];\n } else {\n line = [word];\n }\n tspan = text2.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n}\nconst drawNode = function(elem, node, fullSection, conf) {\n const section = fullSection % MAX_SECTIONS - 1;\n const nodeElem = elem.append(\"g\");\n node.section = section;\n nodeElem.attr(\n \"class\",\n (node.class ? node.class + \" \" : \"\") + \"timeline-node \" + (\"section-\" + section)\n );\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n textElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + node.padding / 2 + \")\");\n defaultBkg(bkgElem, node, section);\n return node;\n};\nconst getVirtualNodeHeight = function(elem, node, conf) {\n const textElem = elem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\nconst defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight\n};\nconst draw = function(text, id, version, diagObj) {\n var _a, _b;\n const conf = getConfig();\n const LEFT_MARGIN = conf.leftMargin ?? 50;\n log.debug(\"timeline\", diagObj.db);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n log.debug(\"task\", tasks2);\n svgDraw.initGraphics(svg);\n const sections2 = diagObj.db.getSections();\n log.debug(\"sections\", sections2);\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n sectionBeginY = 50;\n let sectionNumber = 0;\n let hasSections = true;\n sections2.forEach(function(section) {\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n log.debug(\"sectionHeight before draw\", sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n log.debug(\"tasks.length\", tasks2.length);\n for (const [i, task] of tasks2.entries()) {\n const taskNode = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n log.debug(\"taskHeight before draw\", taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n maxEventCount = Math.max(maxEventCount, task.events.length);\n let maxEventLineLengthTemp = 0;\n for (let j = 0; j < task.events.length; j++) {\n const event = task.events[j];\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n log.debug(\"maxSectionHeight before draw\", maxSectionHeight);\n log.debug(\"maxTaskHeight before draw\", maxTaskHeight);\n if (sections2 && sections2.length > 0) {\n sections2.forEach((section) => {\n const tasksForSection = tasks2.filter((task) => task.section === section);\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n log.debug(\"sectionNode\", sectionNode);\n const sectionNodeWrapper = svg.append(\"g\");\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n log.debug(\"sectionNode output\", node);\n sectionNodeWrapper.attr(\"transform\", `translate(${masterX}, ${sectionBeginY})`);\n masterY += maxSectionHeight + 50;\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false\n );\n }\n masterX += 200 * Math.max(tasksForSection.length, 1);\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n hasSections = false;\n drawTasks(\n svg,\n tasks2,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true\n );\n }\n const box = svg.node().getBBox();\n log.debug(\"bounds\", box);\n if (title) {\n svg.append(\"text\").text(title).attr(\"x\", box.width / 2 - LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 20);\n }\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n const lineWrapper = svg.append(\"g\").attr(\"class\", \"lineWrapper\");\n lineWrapper.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", depthY).attr(\"x2\", box.width + 3 * LEFT_MARGIN).attr(\"y2\", depthY).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n setupGraphViewbox(\n void 0,\n svg,\n ((_a = conf.timeline) == null ? void 0 : _a.padding) ?? 50,\n ((_b = conf.timeline) == null ? void 0 : _b.useMaxWidth) ?? false\n );\n};\nconst drawTasks = function(diagram2, tasks2, sectionColor, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) {\n var _a;\n for (const task of tasks2) {\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n log.debug(\"taskNode\", taskNode);\n const taskWrapper = diagram2.append(\"g\").attr(\"class\", \"taskWrapper\");\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n log.debug(\"taskHeight after draw\", taskHeight);\n taskWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n if (task.events) {\n const lineWrapper = diagram2.append(\"g\").attr(\"class\", \"lineWrapper\");\n let lineLength = maxTaskHeight;\n masterY += 100;\n lineLength = lineLength + drawEvents(diagram2, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n lineWrapper.append(\"line\").attr(\"x1\", masterX + 190 / 2).attr(\"y1\", masterY + maxTaskHeight).attr(\"x2\", masterX + 190 / 2).attr(\n \"y2\",\n masterY + maxTaskHeight + (isWithoutSections ? maxTaskHeight : maxSectionHeight) + maxEventLineLength + 120\n ).attr(\"stroke-width\", 2).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\").attr(\"stroke-dasharray\", \"5,5\");\n }\n masterX = masterX + 200;\n if (isWithoutSections && !((_a = conf.timeline) == null ? void 0 : _a.disableMulticolor)) {\n sectionColor++;\n }\n }\n masterY = masterY - 10;\n};\nconst drawEvents = function(diagram2, events, sectionColor, masterX, masterY, conf) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n for (const event of events) {\n const eventNode = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n log.debug(\"eventNode\", eventNode);\n const eventWrapper = diagram2.append(\"g\").attr(\"class\", \"eventWrapper\");\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n masterY = eventBeginY;\n return maxEventHeight;\n};\nconst renderer = {\n setConf: () => {\n },\n draw\n};\nconst genSections = (options) => {\n let sections2 = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if (isDark(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = lighten(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = darken(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections2 += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options[\"cScaleLabel\" + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections2;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n db,\n renderer,\n parser: parser$1,\n styles\n};\nexport {\n diagram\n};\n"],"names":["parcelRequire","$parcel$global","globalThis","parcelRegister","register","module","exports","Object","defineProperty","get","$1963d759cfaad1f5$export$6118d022d940d562","set","s","enumerable","configurable","$4jcZX","$2YFJl","$c94qS","$75Ue8","$1Ez1E","$1963d759cfaad1f5$var$parser","o","k","v","o2","l","length","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","parser2","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","push","getCommonDb","setDiagramTitle","substr","trim","setAccTitle","setAccDescription","addSection","addTask","addEvent","table","defaultActions","parseError","str","hash","recoverable","error","Error","parse","input","self","stack","tstack","vstack","lstack","args","slice","call","arguments","lexer2","create","lexer","sharedState","prototype","hasOwnProperty","setInput","parser","yylloc","yyloc","ranges","options","getPrototypeOf","symbol","state","action","r","p","len","newState","expected","yyval","lex","token","pop","Array","errStr","showPosition","join","text","match","line","loc","first_line","last_line","first_column","last_column","range","apply","concat","Parser","EOF","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","split","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","replace","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","i","flex","begin","condition","popState","conditions","topState","Math","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","$1963d759cfaad1f5$var$currentSection","$1963d759cfaad1f5$var$currentTaskId","$1963d759cfaad1f5$var$sections","$1963d759cfaad1f5$var$tasks","$1963d759cfaad1f5$var$rawTasks","$1963d759cfaad1f5$var$getCommonDb","L","$1963d759cfaad1f5$var$clear","$1963d759cfaad1f5$var$addSection","txt","$1963d759cfaad1f5$var$getSections","$1963d759cfaad1f5$var$getTasks","allItemsProcessed","$1963d759cfaad1f5$var$compileTasks","iterationCount","$1963d759cfaad1f5$var$addTask","period","event","rawTask","id","section","type","task","score","events","$1963d759cfaad1f5$var$addEvent","currentTask","find","$1963d759cfaad1f5$var$addTaskOrg","descr","newTask","description","classes","allProcessed","entries","processed","$1963d759cfaad1f5$var$db","freeze","__proto__","addTaskOrg","clear","default","getSections","getTasks","Symbol","toStringTag","value","$1963d759cfaad1f5$var$wrap","width","each","word","text2","select","words","reverse","y","attr","dy","parseFloat","tspan","append","j","node","getComputedTextLength","lineHeight","_setTextAttrs","toText","fromTextAttrsDict","key","$1963d759cfaad1f5$var$defaultBkg","elem","height","$1963d759cfaad1f5$var$svgDraw","initGraphics","graphics","drawNode","fullSection","conf","nodeElem","class","bkgElem","textElem","bbox","getBBox","fontSize","padding","max","maxHeight","getVirtualNodeHeight","remove","$1963d759cfaad1f5$var$drawTasks","diagram2","tasks2","sectionColor","masterX","masterY","maxTaskHeight","maxEventCount","maxEventLineLength","maxSectionHeight","isWithoutSections","_a","taskNode","number","debug","taskWrapper","taskHeight","lineWrapper","$1963d759cfaad1f5$var$drawEvents","timeline","disableMulticolor","maxEventHeight","eventBeginY","eventNode","eventWrapper","eventHeight","$1963d759cfaad1f5$var$genSections","sections2","THEME_COLOR_LIMIT","sw","db","renderer","setConf","draw","version","diagObj","_b","sandboxElement","LEFT_MARGIN","leftMargin","securityLevel","svg","root","nodes","contentDocument","body","title","getDiagramTitle","depthY","sectionBeginY","sectionNumber","hasSections","forEach","sectionNode","sectionHeight","maxEventLineLengthTemp","tasksForSection","filter","sectionNodeWrapper","box","useMaxWidth","styles","git0","gitBranchLabel0"],"version":3,"file":"timeline-definition-bf702344.df792284.js.map"}