{
  "version": 3,
  "sources": ["../../../src/diagrams/mindmap/parser/mindmap.jison", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js", "../../../src/diagrams/mindmap/svgDraw.ts", "../../../src/diagrams/mindmap/mindmapDb.ts", "../../../src/diagrams/mindmap/mindmapRenderer.ts", "../../../src/diagrams/mindmap/styles.ts", "../../../src/diagrams/mindmap/mindmap-definition.ts"],
  "sourcesContent": ["/* parser generated by jison 0.4.18 */\n/*\n  Returns a Parser object of the following structure:\n\n  Parser: {\n    yy: {}\n  }\n\n  Parser.prototype: {\n    yy: {},\n    trace: function(),\n    symbols_: {associative list: name ==> number},\n    terminals_: {associative list: number ==> name},\n    productions_: [...],\n    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n    table: [...],\n    defaultActions: {...},\n    parseError: function(str, hash),\n    parse: function(input),\n\n    lexer: {\n        EOF: 1,\n        parseError: function(str, hash),\n        setInput: function(input),\n        input: function(),\n        unput: function(str),\n        more: function(),\n        less: function(n),\n        pastInput: function(),\n        upcomingInput: function(),\n        showPosition: function(),\n        test_match: function(regex_match_array, rule_index),\n        next: function(),\n        lex: function(),\n        begin: function(condition),\n        popState: function(),\n        _currentRules: function(),\n        topState: function(),\n        pushState: function(condition),\n\n        options: {\n            ranges: boolean           (optional: true ==> token location info will include a .range[] member)\n            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n        },\n\n        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n        rules: [...],\n        conditions: {associative list: name ==> set},\n    }\n  }\n\n\n  token location info (@$, _$, etc.): {\n    first_line: n,\n    last_line: n,\n    first_column: n,\n    last_column: n,\n    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)\n  }\n\n\n  the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n    text:        (matched text)\n    token:       (the produced terminal token, if any)\n    line:        (yylineno)\n  }\n  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n    loc:         (yylloc)\n    expected:    (string describing the set of expected tokens)\n    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n  }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,13],$V2=[1,12],$V3=[1,15],$V4=[1,16],$V5=[1,20],$V6=[1,19],$V7=[6,7,8],$V8=[1,26],$V9=[1,24],$Va=[1,25],$Vb=[6,7,11],$Vc=[1,6,13,15,16,19,22],$Vd=[1,33],$Ve=[1,34],$Vf=[1,6,7,11,13,15,16,19,22];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mindMap\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"MINDMAP\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"node\":14,\"ICON\":15,\"CLASS\":16,\"nodeWithId\":17,\"nodeWithoutId\":18,\"NODE_DSTART\":19,\"NODE_DESCR\":20,\"NODE_DEND\":21,\"NODE_ID\":22,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"MINDMAP\",11:\"EOF\",13:\"SPACELIST\",15:\"ICON\",16:\"CLASS\",19:\"NODE_DSTART\",20:\"NODE_DESCR\",21:\"NODE_DEND\",22:\"NODE_ID\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6: case 7:\n return yy; \nbreak;\ncase 8:\nyy.getLogger().trace('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().trace('Stop EOF ');\nbreak;\ncase 11:\nyy.getLogger().trace('Stop NL2 ');\nbreak;\ncase 12:\nyy.getLogger().trace('Stop EOF2 ');\nbreak;\ncase 15:\n yy.getLogger().info('Node: ',$$[$0].id);yy.addNode($$[$0-1].length, $$[$0].id, $$[$0].descr, $$[$0].type);  \nbreak;\ncase 16:\n yy.getLogger().trace('Icon: ',$$[$0]);yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 17: case 21:\n yy.decorateNode({class: $$[$0]}); \nbreak;\ncase 18:\n yy.getLogger().trace('SPACELIST');\nbreak;\ncase 19:\n yy.getLogger().trace('Node: ',$$[$0].id);yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type);  \nbreak;\ncase 20:\n yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 25:\n yy.getLogger().trace(\"node found ..\", $$[$0-2]); this.$ = { id: $$[$0-1], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 26:\n this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT }; \nbreak;\ncase 27:\n yy.getLogger().trace(\"node found ..\", $$[$0-3]); this.$ = { id: $$[$0-3], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},o($V7,[2,3]),{1:[2,2]},o($V7,[2,4]),o($V7,[2,5]),{1:[2,6],6:$V1,12:21,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},{6:$V1,9:22,12:11,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},{6:$V8,7:$V9,10:23,11:$Va},o($Vb,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:$V5,22:$V6}),o($Vb,[2,18]),o($Vb,[2,19]),o($Vb,[2,20]),o($Vb,[2,21]),o($Vb,[2,23]),o($Vb,[2,24]),o($Vb,[2,26],{19:[1,30]}),{20:[1,31]},{6:$V8,7:$V9,10:32,11:$Va},{1:[2,7],6:$V1,12:21,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},o($Vc,[2,14],{7:$Vd,11:$Ve}),o($Vf,[2,8]),o($Vf,[2,9]),o($Vf,[2,10]),o($Vb,[2,15]),o($Vb,[2,16]),o($Vb,[2,17]),{20:[1,35]},{21:[1,36]},o($Vc,[2,13],{7:$Vd,11:$Ve}),o($Vf,[2,11]),o($Vf,[2,12]),{21:[1,37]},o($Vb,[2,25]),o($Vb,[2,27])],\ndefaultActions: {2:[2,1],6:[2,2]},\nparseError: 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},\nparse: function parse(input) {\n    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n    var args = lstack.slice.call(arguments, 1);\n    var lexer = 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    lexer.setInput(input, sharedState.yy);\n    sharedState.yy.lexer = lexer;\n    sharedState.yy.parser = this;\n    if (typeof lexer.yylloc == 'undefined') {\n        lexer.yylloc = {};\n    }\n    var yyloc = lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = lexer.options && lexer.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 popStack(n) {\n        stack.length = stack.length - 2 * n;\n        vstack.length = vstack.length - n;\n        lstack.length = lstack.length - n;\n    }\n            function lex() {\n            var token;\n            token = tstack.pop() || lexer.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, preErrorSymbol, state, action, a, 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 (lexer.showPosition) {\n                errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.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: lexer.match,\n                token: this.terminals_[symbol] || symbol,\n                line: lexer.yylineno,\n                loc: yyloc,\n                expected: 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(lexer.yytext);\n            lstack.push(lexer.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            if (!preErrorSymbol) {\n                yyleng = lexer.yyleng;\n                yytext = lexer.yytext;\n                yylineno = lexer.yylineno;\n                yyloc = lexer.yylloc;\n                if (recovering > 0) {\n                    recovering--;\n                }\n            } else {\n                symbol = preErrorSymbol;\n                preErrorSymbol = null;\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/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError: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\n// resets the lexer, sets new input\nsetInput: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\n// consumes and returns one char from the input\ninput: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\n        this._input = this._input.slice(1);\n        return ch;\n    },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n        var len = ch.length;\n        var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n        this._input = ch + this._input;\n        this.yytext = this.yytext.substr(0, this.yytext.length - len);\n        //this.yyleng -= 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\n        if (lines.length - 1) {\n            this.yylineno -= lines.length - 1;\n        }\n        var r = this.yylloc.range;\n\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 ?\n                (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n                 + oldLines[oldLines.length - lines.length].length - lines[0].length :\n              this.yylloc.first_column - len\n        };\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\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n        this._more = true;\n        return this;\n    },\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.\nreject: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        }\n        return this;\n    },\n\n// retain first n characters of the match\nless:function (n) {\n        this.unput(this.match.slice(n));\n    },\n\n// displays already matched input, i.e. for error messages\npastInput: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\n// displays upcoming input, i.e. for error messages\nupcomingInput: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\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n        var pre = this.pastInput();\n        var c = new Array(pre.length + 1).join(\"-\");\n        return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n    },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n        var token,\n            lines,\n            backup;\n\n        if (this.options.backtrack_lexer) {\n            // save context\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\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 ?\n                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n                         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            // recover context\n            for (var k in backup) {\n                this[k] = backup[k];\n            }\n            return false; // rule action called reject() implying the next rule should be tested instead.\n        }\n        return false;\n    },\n\n// return next match in input\nnext:function () {\n        if (this.done) {\n            return this.EOF;\n        }\n        if (!this._input) {\n            this.done = true;\n        }\n\n        var token,\n            match,\n            tempMatch,\n            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; // rule action called reject() implying a rule MISmatch.\n                    } else {\n                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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\n// return next match that has a token\nlex:function lex () {\n        var r = this.next();\n        if (r) {\n            return r;\n        } else {\n            return this.lex();\n        }\n    },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n        this.conditionStack.push(condition);\n    },\n\n// pop the previously active lexer condition state off the condition stack\npopState: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\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\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState: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\n// alias for begin(condition)\npushState:function pushState (condition) {\n        this.begin(condition);\n    },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n        return this.conditionStack.length;\n    },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:yy.getLogger().trace('Found comment',yy_.yytext); return 6;\nbreak;\ncase 1:return 8;\nbreak;\ncase 2: this.begin('CLASS'); \nbreak;\ncase 3: this.popState();return 16; \nbreak;\ncase 4: this.popState();\nbreak;\ncase 5: yy.getLogger().trace('Begin icon');this.begin('ICON'); \nbreak;\ncase 6:yy.getLogger().trace('SPACELINE');return 6                 /* skip all whitespace */    ;\nbreak;\ncase 7:return 7;\nbreak;\ncase 8: return 15; \nbreak;\ncase 9:yy.getLogger().trace('end icon');this.popState();\nbreak;\ncase 10: yy.getLogger().trace('Exploding node'); this.begin('NODE');return 19; \nbreak;\ncase 11: yy.getLogger().trace('Cloud'); this.begin('NODE');return 19; \nbreak;\ncase 12: yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 19; \nbreak;\ncase 13: yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 19; \nbreak;\ncase 14: this.begin('NODE');return 19; \nbreak;\ncase 15: this.begin('NODE');return 19; \nbreak;\ncase 16: this.begin('NODE');return 19; \nbreak;\ncase 17: this.begin('NODE');return 19; \nbreak;\ncase 18:return 13                 /* skip all whitespace */    ;\nbreak;\ncase 19:return 22;\nbreak;\ncase 20:return 11;\nbreak;\ncase 21: this.begin(\"NSTR2\");\nbreak;\ncase 22: return \"NODE_DESCR\";\nbreak;\ncase 23: this.popState();\nbreak;\ncase 24: yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");\nbreak;\ncase 25: yy.getLogger().trace('description:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";\nbreak;\ncase 28:this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";\nbreak;\ncase 29:this.popState();yy.getLogger().trace('node end ...',yy_.yytext);return \"NODE_DEND\";\nbreak;\ncase 30:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 31:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 32:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 33:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 34:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 35: yy.getLogger().trace('Long description:', yy_.yytext);   return 20;\nbreak;\ncase 36: yy.getLogger().trace('Long description:', yy_.yytext);   return 20;\nbreak;\n}\n},\nrules: [/^(?:\\s*%%.*)/i,/^(?:mindmap\\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\\n)/i,/^(?:::icon\\()/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[^\\)]+)/i,/^(?:\\))/i,/^(?:-\\))/i,/^(?:\\(-)/i,/^(?:\\)\\))/i,/^(?:\\))/i,/^(?:\\(\\()/i,/^(?:\\{\\{)/i,/^(?:\\()/i,/^(?:\\[)/i,/^(?:[\\s]+)/i,/^(?:[^\\(\\[\\n\\)\\{\\}]+)/i,/^(?:$)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[^\"]+)/i,/^(?:[\"])/i,/^(?:[\\)]\\))/i,/^(?:[\\)])/i,/^(?:[\\]])/i,/^(?:\\}\\})/i,/^(?:\\(-)/i,/^(?:-\\))/i,/^(?:\\(\\()/i,/^(?:\\()/i,/^(?:[^\\)\\]\\(\\}]+)/i,/^(?:.+(?!\\(\\())/i],\nconditions: {\"CLASS\":{\"rules\":[3,4],\"inclusive\":false},\"ICON\":{\"rules\":[8,9],\"inclusive\":false},\"NSTR2\":{\"rules\":[22,23],\"inclusive\":false},\"NSTR\":{\"rules\":[25,26],\"inclusive\":false},\"NODE\":{\"rules\":[21,24,27,28,29,30,31,32,33,34,35,36],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n  this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})(); \n\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n", "import { createText } from '../../rendering-util/createText.js';\nimport type { FilledMindMapNode } from './mindmapTypes.js';\nimport type { Point, D3Element } from '../../types.js';\nimport { parseFontSize } from '../../utils.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { MindmapDB } from './mindmapDb.js';\n\nexport const MAX_SECTIONS = 12;\n\ntype ShapeFunction = (\n  db: MindmapDB,\n  elem: D3Element,\n  node: FilledMindMapNode,\n  section?: number\n) => void;\n\nconst defaultBkg: ShapeFunction = function (db, elem, node, section) {\n  const rd = 5;\n  elem\n    .append('path')\n    .attr('id', 'node-' + node.id)\n    .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n    .attr(\n      'd',\n      `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${\n        node.width - 2 * rd\n      } q5,0 5,5 v${node.height - rd} H0 Z`\n    );\n\n  elem\n    .append('line')\n    .attr('class', 'node-line-' + section)\n    .attr('x1', 0)\n    .attr('y1', node.height)\n    .attr('x2', node.width)\n    .attr('y2', node.height);\n};\n\nconst rectBkg: ShapeFunction = function (db, elem, node) {\n  elem\n    .append('rect')\n    .attr('id', 'node-' + node.id)\n    .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n    .attr('height', node.height)\n    .attr('width', node.width);\n};\n\nconst cloudBkg: ShapeFunction = function (db, elem, node) {\n  const w = node.width;\n  const h = node.height;\n  const r1 = 0.15 * w;\n  const r2 = 0.25 * w;\n  const r3 = 0.35 * w;\n  const r4 = 0.2 * w;\n  elem\n    .append('path')\n    .attr('id', 'node-' + node.id)\n    .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n    .attr(\n      'd',\n      `M0 0 a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n      a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n      a${r2},${r2} 1 0,1 ${w * 0.35},${1 * w * 0.2}\n\n      a${r1},${r1} 1 0,1 ${w * 0.15},${1 * h * 0.35}\n      a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${1 * h * 0.65}\n\n      a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n      a${r3},${r3} 1 0,1 ${-1 * w * 0.5},${0}\n      a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n      a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n      a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n\n    H0 V0 Z`\n    );\n};\n\nconst bangBkg: ShapeFunction = function (db, elem, node) {\n  const w = node.width;\n  const h = node.height;\n  const r = 0.15 * w;\n  elem\n    .append('path')\n    .attr('id', 'node-' + node.id)\n    .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n    .attr(\n      'd',\n      `M0 0 a${r},${r} 1 0,0 ${w * 0.25},${-1 * h * 0.1}\n      a${r},${r} 1 0,0 ${w * 0.25},${0}\n      a${r},${r} 1 0,0 ${w * 0.25},${0}\n      a${r},${r} 1 0,0 ${w * 0.25},${1 * h * 0.1}\n\n      a${r},${r} 1 0,0 ${w * 0.15},${1 * h * 0.33}\n      a${r * 0.8},${r * 0.8} 1 0,0 ${0},${1 * h * 0.34}\n      a${r},${r} 1 0,0 ${-1 * w * 0.15},${1 * h * 0.33}\n\n      a${r},${r} 1 0,0 ${-1 * w * 0.25},${h * 0.15}\n      a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n      a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n      a${r},${r} 1 0,0 ${-1 * w * 0.25},${-1 * h * 0.15}\n\n      a${r},${r} 1 0,0 ${-1 * w * 0.1},${-1 * h * 0.33}\n      a${r * 0.8},${r * 0.8} 1 0,0 ${0},${-1 * h * 0.34}\n      a${r},${r} 1 0,0 ${w * 0.1},${-1 * h * 0.33}\n\n    H0 V0 Z`\n    );\n};\n\nconst circleBkg: ShapeFunction = function (db, elem, node) {\n  elem\n    .append('circle')\n    .attr('id', 'node-' + node.id)\n    .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n    .attr('r', node.width / 2);\n};\n\nfunction insertPolygonShape(\n  parent: D3Element,\n  w: number,\n  h: number,\n  points: Point[],\n  node: FilledMindMapNode\n) {\n  return parent\n    .insert('polygon', ':first-child')\n    .attr(\n      'points',\n      points\n        .map(function (d) {\n          return d.x + ',' + d.y;\n        })\n        .join(' ')\n    )\n    .attr('transform', 'translate(' + (node.width - w) / 2 + ', ' + h + ')');\n}\n\nconst hexagonBkg: ShapeFunction = function (\n  _db: MindmapDB,\n  elem: D3Element,\n  node: FilledMindMapNode\n) {\n  const h = node.height;\n  const f = 4;\n  const m = h / f;\n  const w = node.width - node.padding + 2 * m;\n  const points: Point[] = [\n    { x: m, y: 0 },\n    { x: w - m, y: 0 },\n    { x: w, y: -h / 2 },\n    { x: w - m, y: -h },\n    { x: m, y: -h },\n    { x: 0, y: -h / 2 },\n  ];\n  insertPolygonShape(elem, w, h, points, node);\n};\n\nconst roundedRectBkg: ShapeFunction = function (db, elem, node) {\n  elem\n    .append('rect')\n    .attr('id', 'node-' + node.id)\n    .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n    .attr('height', node.height)\n    .attr('rx', node.padding)\n    .attr('ry', node.padding)\n    .attr('width', node.width);\n};\n\n/**\n * @param db - The database\n * @param elem - The D3 dom element in which the node is to be added\n * @param node - The node to be added\n * @param fullSection - ?\n * @param conf - The configuration object\n * @returns The height nodes dom element\n */\nexport const drawNode = async function (\n  db: MindmapDB,\n  elem: D3Element,\n  node: FilledMindMapNode,\n  fullSection: number,\n  conf: MermaidConfig\n): Promise<number> {\n  const htmlLabels = conf.htmlLabels;\n  const section = fullSection % (MAX_SECTIONS - 1);\n  const nodeElem = elem.append('g');\n  node.section = section;\n  let sectionClass = 'section-' + section;\n  if (section < 0) {\n    sectionClass += ' section-root';\n  }\n  nodeElem.attr('class', (node.class ? node.class + ' ' : '') + 'mindmap-node ' + sectionClass);\n  const bkgElem = nodeElem.append('g');\n\n  // Create the wrapped text element\n  const textElem = nodeElem.append('g');\n  const description = node.descr.replace(/(<br\\/*>)/g, '\\n');\n  await createText(\n    textElem,\n    description,\n    {\n      useHtmlLabels: htmlLabels,\n      width: node.width,\n      classes: 'mindmap-node-label',\n    },\n    conf\n  );\n\n  if (!htmlLabels) {\n    textElem\n      .attr('dy', '1em')\n      .attr('alignment-baseline', 'middle')\n      .attr('dominant-baseline', 'middle')\n      .attr('text-anchor', 'middle');\n  }\n  const bbox = textElem.node().getBBox();\n  const [fontSize] = parseFontSize(conf.fontSize);\n  node.height = bbox.height + fontSize! * 1.1 * 0.5 + node.padding;\n  node.width = bbox.width + 2 * node.padding;\n  if (node.icon) {\n    if (node.type === db.nodeType.CIRCLE) {\n      node.height += 50;\n      node.width += 50;\n      const icon = nodeElem\n        .append('foreignObject')\n        .attr('height', '50px')\n        .attr('width', node.width)\n        .attr('style', 'text-align: center;');\n      icon\n        .append('div')\n        .attr('class', 'icon-container')\n        .append('i')\n        .attr('class', 'node-icon-' + section + ' ' + node.icon);\n      textElem.attr(\n        'transform',\n        'translate(' + node.width / 2 + ', ' + (node.height / 2 - 1.5 * node.padding) + ')'\n      );\n    } else {\n      node.width += 50;\n      const orgHeight = node.height;\n      node.height = Math.max(orgHeight, 60);\n      const heightDiff = Math.abs(node.height - orgHeight);\n      const icon = nodeElem\n        .append('foreignObject')\n        .attr('width', '60px')\n        .attr('height', node.height)\n        .attr('style', 'text-align: center;margin-top:' + heightDiff / 2 + 'px;');\n\n      icon\n        .append('div')\n        .attr('class', 'icon-container')\n        .append('i')\n        .attr('class', 'node-icon-' + section + ' ' + node.icon);\n      textElem.attr(\n        'transform',\n        'translate(' + (25 + node.width / 2) + ', ' + (heightDiff / 2 + node.padding / 2) + ')'\n      );\n    }\n  } else {\n    if (!htmlLabels) {\n      const dx = node.width / 2;\n      const dy = node.padding / 2;\n      textElem.attr('transform', 'translate(' + dx + ', ' + dy + ')');\n      // textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n    } else {\n      const dx = (node.width - bbox.width) / 2;\n      const dy = (node.height - bbox.height) / 2;\n      textElem.attr('transform', 'translate(' + dx + ', ' + dy + ')');\n    }\n  }\n\n  switch (node.type) {\n    case db.nodeType.DEFAULT:\n      defaultBkg(db, bkgElem, node, section);\n      break;\n    case db.nodeType.ROUNDED_RECT:\n      roundedRectBkg(db, bkgElem, node, section);\n      break;\n    case db.nodeType.RECT:\n      rectBkg(db, bkgElem, node, section);\n      break;\n    case db.nodeType.CIRCLE:\n      bkgElem.attr('transform', 'translate(' + node.width / 2 + ', ' + +node.height / 2 + ')');\n      circleBkg(db, bkgElem, node, section);\n      break;\n    case db.nodeType.CLOUD:\n      cloudBkg(db, bkgElem, node, section);\n      break;\n    case db.nodeType.BANG:\n      bangBkg(db, bkgElem, node, section);\n      break;\n    case db.nodeType.HEXAGON:\n      hexagonBkg(db, bkgElem, node, section);\n      break;\n  }\n\n  db.setElementForId(node.id, nodeElem);\n  return node.height;\n};\n\nexport const positionNode = function (db: MindmapDB, node: FilledMindMapNode) {\n  const nodeElem = db.getElementById(node.id);\n\n  const x = node.x || 0;\n  const y = node.y || 0;\n  // Position the node to its coordinate\n  nodeElem.attr('transform', 'translate(' + x + ',' + y + ')');\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { v4 } from 'uuid';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport type { MindmapNode } from './mindmapTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { LayoutData, Node, Edge } from '../../rendering-util/types.js';\nimport { getUserDefinedConfig } from '../../config.js';\nimport { MAX_SECTIONS } from './svgDraw.js';\n\n// Extend Node type for mindmap-specific properties\nexport type MindmapLayoutNode = Node & {\n  level: number;\n  nodeId: string;\n  type: number;\n  section?: number;\n};\n\n// Extend Edge type for mindmap-specific properties\nexport type MindmapLayoutEdge = Edge & {\n  depth: number;\n  section?: number;\n};\n\nconst nodeType = {\n  DEFAULT: 0,\n  NO_BORDER: 0,\n  ROUNDED_RECT: 1,\n  RECT: 2,\n  CIRCLE: 3,\n  CLOUD: 4,\n  BANG: 5,\n  HEXAGON: 6,\n} as const;\n\nexport class MindmapDB {\n  private nodes: MindmapNode[] = [];\n  private count = 0;\n  private elements: Record<number, D3Element> = {};\n  private baseLevel?: number;\n  public readonly nodeType: typeof nodeType;\n\n  constructor() {\n    this.getLogger = this.getLogger.bind(this);\n    this.nodeType = nodeType;\n    this.clear();\n    this.getType = this.getType.bind(this);\n    this.getElementById = this.getElementById.bind(this);\n    this.getParent = this.getParent.bind(this);\n    this.getMindmap = this.getMindmap.bind(this);\n    this.addNode = this.addNode.bind(this);\n    this.decorateNode = this.decorateNode.bind(this);\n  }\n  public clear() {\n    this.nodes = [];\n    this.count = 0;\n    this.elements = {};\n    this.baseLevel = undefined;\n  }\n\n  public getParent(level: number): MindmapNode | null {\n    for (let i = this.nodes.length - 1; i >= 0; i--) {\n      if (this.nodes[i].level < level) {\n        return this.nodes[i];\n      }\n    }\n    return null;\n  }\n\n  public getMindmap(): MindmapNode | null {\n    return this.nodes.length > 0 ? this.nodes[0] : null;\n  }\n\n  public addNode(level: number, id: string, descr: string, type: number): void {\n    log.info('addNode', level, id, descr, type);\n\n    let isRoot = false;\n\n    if (this.nodes.length === 0) {\n      this.baseLevel = level;\n      level = 0;\n      isRoot = true;\n    } else if (this.baseLevel !== undefined) {\n      level = level - this.baseLevel;\n      isRoot = false;\n    }\n\n    const conf = getConfig();\n    let padding = conf.mindmap?.padding ?? defaultConfig.mindmap.padding;\n\n    switch (type) {\n      case this.nodeType.ROUNDED_RECT:\n      case this.nodeType.RECT:\n      case this.nodeType.HEXAGON:\n        padding *= 2;\n        break;\n    }\n\n    const node: MindmapNode = {\n      id: this.count++,\n      nodeId: sanitizeText(id, conf),\n      level,\n      descr: sanitizeText(descr, conf),\n      type,\n      children: [],\n      width: conf.mindmap?.maxNodeWidth ?? defaultConfig.mindmap.maxNodeWidth,\n      padding,\n      isRoot,\n    };\n\n    const parent = this.getParent(level);\n    if (parent) {\n      parent.children.push(node);\n      this.nodes.push(node);\n    } else {\n      if (isRoot) {\n        this.nodes.push(node);\n      } else {\n        throw new Error(\n          `There can be only one root. No parent could be found for (\"${node.descr}\")`\n        );\n      }\n    }\n  }\n\n  public getType(startStr: string, endStr: string) {\n    log.debug('In get type', startStr, endStr);\n    switch (startStr) {\n      case '[':\n        return this.nodeType.RECT;\n      case '(':\n        return endStr === ')' ? this.nodeType.ROUNDED_RECT : this.nodeType.CLOUD;\n      case '((':\n        return this.nodeType.CIRCLE;\n      case ')':\n        return this.nodeType.CLOUD;\n      case '))':\n        return this.nodeType.BANG;\n      case '{{':\n        return this.nodeType.HEXAGON;\n      default:\n        return this.nodeType.DEFAULT;\n    }\n  }\n\n  public setElementForId(id: number, element: D3Element): void {\n    this.elements[id] = element;\n  }\n  public getElementById(id: number) {\n    return this.elements[id];\n  }\n\n  public decorateNode(decoration?: { class?: string; icon?: string }): void {\n    if (!decoration) {\n      return;\n    }\n\n    const config = getConfig();\n    const node = this.nodes[this.nodes.length - 1];\n    if (decoration.icon) {\n      node.icon = sanitizeText(decoration.icon, config);\n    }\n    if (decoration.class) {\n      node.class = sanitizeText(decoration.class, config);\n    }\n  }\n\n  type2Str(type: number): string {\n    switch (type) {\n      case this.nodeType.DEFAULT:\n        return 'no-border';\n      case this.nodeType.RECT:\n        return 'rect';\n      case this.nodeType.ROUNDED_RECT:\n        return 'rounded-rect';\n      case this.nodeType.CIRCLE:\n        return 'circle';\n      case this.nodeType.CLOUD:\n        return 'cloud';\n      case this.nodeType.BANG:\n        return 'bang';\n      case this.nodeType.HEXAGON:\n        return 'hexgon'; // cspell: disable-line\n      default:\n        return 'no-border';\n    }\n  }\n\n  /**\n   * Assign section numbers to nodes based on their position relative to root\n   * @param node - The mindmap node to process\n   * @param sectionNumber - The section number to assign (undefined for root)\n   */\n  public assignSections(node: MindmapNode, sectionNumber?: number): void {\n    // For root node, section should be undefined (not -1)\n    if (node.level === 0) {\n      node.section = undefined;\n    } else {\n      // For non-root nodes, assign the section number\n      node.section = sectionNumber;\n    }\n    // For root node's children, assign section numbers based on their index\n    // For other nodes, inherit parent's section number\n    if (node.children) {\n      for (const [index, child] of node.children.entries()) {\n        const childSectionNumber = node.level === 0 ? index % (MAX_SECTIONS - 1) : sectionNumber;\n        this.assignSections(child, childSectionNumber);\n      }\n    }\n  }\n\n  /**\n   * Convert mindmap tree structure to flat array of nodes\n   * @param node - The mindmap node to process\n   * @param processedNodes - Array to collect processed nodes\n   */\n  public flattenNodes(node: MindmapNode, processedNodes: MindmapLayoutNode[]): void {\n    const conf = getConfig();\n    // Build CSS classes for the node\n    const cssClasses = ['mindmap-node'];\n\n    if (node.isRoot === true) {\n      // Root node gets special classes\n      cssClasses.push('section-root', 'section--1');\n    } else if (node.section !== undefined) {\n      // Child nodes get section class based on their section number\n      cssClasses.push(`section-${node.section}`);\n    }\n\n    // Add any custom classes from the node\n    if (node.class) {\n      cssClasses.push(node.class);\n    }\n\n    const classes = cssClasses.join(' ');\n\n    // Map mindmap node type to valid shape name\n    const getShapeFromType = (type: number) => {\n      const theme = conf.theme?.toLowerCase() ?? '';\n      const isReduxTheme = theme.includes('redux');\n      switch (type) {\n        case nodeType.CIRCLE:\n          return 'mindmapCircle';\n        case nodeType.RECT:\n          return 'rect';\n        case nodeType.ROUNDED_RECT:\n          return 'rounded';\n        case nodeType.CLOUD:\n          return 'cloud';\n        case nodeType.BANG:\n          return 'bang';\n        case nodeType.HEXAGON:\n          return 'hexagon';\n        case nodeType.DEFAULT:\n          return isReduxTheme ? 'rounded' : 'defaultMindmapNode';\n        case nodeType.NO_BORDER:\n        default:\n          return 'rect';\n      }\n    };\n\n    const processedNode: MindmapLayoutNode = {\n      id: node.id.toString(),\n      domId: 'node_' + node.id.toString(),\n      label: node.descr,\n      labelType: 'markdown',\n      isGroup: false,\n      shape: getShapeFromType(node.type),\n      width: node.width,\n      height: node.height ?? 0,\n      padding: node.padding,\n      cssClasses: classes,\n      cssStyles: [],\n      look: conf.look,\n      icon: node.icon,\n      x: node.x,\n      y: node.y,\n      // Mindmap-specific properties\n      level: node.level,\n      nodeId: node.nodeId,\n      type: node.type,\n      section: node.section,\n    };\n\n    processedNodes.push(processedNode);\n\n    // Recursively process children\n    if (node.children) {\n      for (const child of node.children) {\n        this.flattenNodes(child, processedNodes);\n      }\n    }\n  }\n\n  /**\n   * Generate edges from parent-child relationships in mindmap tree\n   * @param node - The mindmap node to process\n   * @param edges - Array to collect edges\n   */\n  public generateEdges(node: MindmapNode, edges: MindmapLayoutEdge[]): void {\n    if (!node.children) {\n      return;\n    }\n    const conf = getConfig();\n    for (const child of node.children) {\n      // Build CSS classes for the edge\n      let edgeClasses = 'edge';\n\n      // Add section-specific classes based on the child's section\n      if (child.section !== undefined) {\n        edgeClasses += ` section-edge-${child.section}`;\n      }\n\n      // Add depth class based on the parent's level + 1 (depth of the edge)\n      const edgeDepth = node.level + 1;\n      edgeClasses += ` edge-depth-${edgeDepth}`;\n\n      const edge: MindmapLayoutEdge = {\n        id: `edge_${node.id}_${child.id}`,\n        start: node.id.toString(),\n        end: child.id.toString(),\n        type: 'normal',\n        curve: 'basis',\n        thickness: 'normal',\n        look: conf.look,\n        classes: edgeClasses,\n        // Store mindmap-specific data\n        depth: node.level,\n        section: child.section,\n      };\n\n      edges.push(edge);\n\n      // Recursively process child edges\n      this.generateEdges(child, edges);\n    }\n  }\n\n  /**\n   * Get structured data for layout algorithms\n   * Following the pattern established by ER diagrams\n   * @returns Structured data containing nodes, edges, and config\n   */\n  public getData(): LayoutData {\n    const mindmapRoot = this.getMindmap();\n    const config = getConfig();\n\n    const userDefinedConfig = getUserDefinedConfig();\n    const hasUserDefinedLayout = userDefinedConfig.layout !== undefined;\n\n    const finalConfig = config;\n    if (!hasUserDefinedLayout) {\n      finalConfig.layout = 'cose-bilkent';\n    }\n\n    if (!mindmapRoot) {\n      return {\n        nodes: [],\n        edges: [],\n        config: finalConfig,\n      };\n    }\n    log.debug('getData: mindmapRoot', mindmapRoot, config);\n\n    // Assign section numbers to all nodes based on their position relative to root\n    this.assignSections(mindmapRoot);\n\n    // Convert tree structure to flat arrays\n    const processedNodes: MindmapLayoutNode[] = [];\n    const processedEdges: MindmapLayoutEdge[] = [];\n\n    this.flattenNodes(mindmapRoot, processedNodes);\n    this.generateEdges(mindmapRoot, processedEdges);\n\n    log.debug(\n      `getData: processed ${processedNodes.length} nodes and ${processedEdges.length} edges`\n    );\n\n    // Create shapes map for ELK compatibility\n    const shapes = new Map<string, any>();\n    for (const node of processedNodes) {\n      shapes.set(node.id, {\n        shape: node.shape,\n        width: node.width,\n        height: node.height,\n        padding: node.padding,\n      });\n    }\n\n    return {\n      nodes: processedNodes,\n      edges: processedEdges,\n      config: finalConfig,\n      // Store the root node for mindmap-specific layout algorithms\n      rootNode: mindmapRoot,\n      // Properties required by dagre layout algorithm\n      markers: ['point'], // Mindmaps don't use markers\n      direction: 'TB', // Top-to-bottom direction for mindmaps\n      nodeSpacing: 50, // Default spacing between nodes\n      rankSpacing: 50, // Default spacing between ranks\n      // Add shapes for ELK compatibility\n      shapes: Object.fromEntries(shapes),\n      // Additional properties that layout algorithms might expect\n      type: 'mindmap',\n      diagramId: 'mindmap-' + v4(),\n    };\n  }\n\n  // Expose logger to grammar\n  public getLogger() {\n    return log;\n  }\n}\n", "import type { DrawDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport type { FilledMindMapNode } from './mindmapTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { MindmapDB } from './mindmapDb.js';\nimport { getConfig } from '../../config.js';\n\n/**\n * Update the layout data with actual node dimensions after drawing\n */\nfunction _updateNodeDimensions(data4Layout: LayoutData, mindmapRoot: FilledMindMapNode) {\n  const updateNode = (node: FilledMindMapNode) => {\n    // Find the corresponding node in the layout data\n    const layoutNode = data4Layout.nodes.find((n) => n.id === node.id.toString());\n    if (layoutNode) {\n      // Update with the actual dimensions calculated by drawNode\n      layoutNode.width = node.width;\n      layoutNode.height = node.height;\n      log.debug('Updated node dimensions:', node.id, 'width:', node.width, 'height:', node.height);\n    }\n\n    // Recursively update children\n    node.children?.forEach(updateNode);\n  };\n\n  updateNode(mindmapRoot);\n}\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj) => {\n  log.debug('Rendering mindmap diagram\\n' + text);\n\n  // Draw the nodes first to get their dimensions, then update the layout data\n  const db = diagObj.db as MindmapDB;\n\n  // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n  // into the Layout data format\n  const data4Layout = db.getData();\n\n  // Create the root SVG - the element is the div containing the SVG element\n  const svg = getDiagramElement(id, data4Layout.config.securityLevel);\n\n  data4Layout.type = diagObj.type;\n  data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(data4Layout.config.layout, {\n    fallback: 'cose-bilkent',\n  });\n\n  data4Layout.diagramId = id;\n\n  const mm = db.getMindmap();\n  if (!mm) {\n    return;\n  }\n\n  data4Layout.nodes.forEach((node) => {\n    if (node.shape === 'rounded') {\n      node.radius = 15;\n      node.taper = 15;\n      node.stroke = 'none';\n      node.width = 0;\n      node.padding = 15;\n    } else if (node.shape === 'circle') {\n      node.padding = 10;\n    } else if (node.shape === 'rect') {\n      node.width = 0;\n      node.padding = 10;\n    } else if (node.shape === 'hexagon') {\n      node.width = 0;\n      node.height = 0;\n    }\n  });\n\n  // Use the unified rendering system\n  await render(data4Layout, svg);\n\n  // For mindmap, the linearGradient used by the neo theme must live inside <defs>\n  // so browsers treat it as a valid SVG paint server (url(#id-gradient) references).\n  // render.ts appends it to the SVG root for other diagram types; mindmap adds its\n  // own properly-scoped <defs> entry here to avoid relying on that placement.\n  const { themeVariables } = getConfig();\n  const { useGradient, gradientStart, gradientStop } = themeVariables;\n  if (useGradient && gradientStart && gradientStop) {\n    const svgId = svg.attr('id');\n    const gradient = svg\n      .append('defs')\n      .append('linearGradient')\n      .attr('id', `${svgId}-gradient`)\n      .attr('gradientUnits', 'objectBoundingBox')\n      .attr('x1', '0%')\n      .attr('y1', '0%')\n      .attr('x2', '100%')\n      .attr('y2', '0%');\n\n    gradient\n      .append('stop')\n      .attr('offset', '0%')\n      .attr('stop-color', gradientStart)\n      .attr('stop-opacity', 1);\n    gradient\n      .append('stop')\n      .attr('offset', '100%')\n      .attr('stop-color', gradientStop)\n      .attr('stop-opacity', 1);\n  }\n\n  // Setup the view box and size of the svg element using config from data4Layout\n  setupViewPortForSVG(\n    svg,\n    data4Layout.config.mindmap?.padding ?? defaultConfig.mindmap.padding,\n    'mindmapDiagram',\n    data4Layout.config.mindmap?.useMaxWidth ?? defaultConfig.mindmap.useMaxWidth\n  );\n};\n\nexport default {\n  draw,\n};\n", "// @ts-expect-error Incorrect khroma types\nimport { darken, lighten, isDark } from 'khroma';\nimport type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst genSections: DiagramStylesProvider = (options) => {\n  const { theme, look } = options;\n\n  let sections = '';\n\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\n  for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n    const sw = '' + (look === 'neo' ? Math.max(10 - (i - 1) * 2, 2) : 17 - 3 * i);\n    sections += `\n    .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n      i - 1\n    } polygon, .section-${i - 1} path  {\n      fill: ${options['cScale' + i]};\n    }\n    .section-${i - 1} text {\n     fill: ${options['cScaleLabel' + i]};\n    }\n     .section-${i - 1} span {\n     color: ${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    .disabled, .disabled circle, .disabled text {\n      fill: lightgray;\n    }\n    .disabled text {\n      fill: #efefef;\n    }\n    [data-look=\"neo\"].mindmap-node.section-${i - 1} rect, [data-look=\"neo\"].mindmap-node.section-${i - 1} path, [data-look=\"neo\"].mindmap-node.section-${i - 1} circle, [data-look=\"neo\"].mindmap-node.section-${i - 1} polygon {\n      fill: ${theme === 'redux' || theme === 'redux-dark' || theme === 'neutral' ? options.mainBkg : options['cScale' + i]};\n      stroke: ${theme === 'redux' || theme === 'redux-dark' ? options.nodeBorder : options['cScale' + i]};\n      stroke-width: ${options.strokeWidth ?? 2}px;\n    }\n    [data-look=\"neo\"].section-edge-${i - 1}{\n      stroke: ${theme?.includes('redux') || theme === 'neo-dark' ? options.nodeBorder : options['cScale' + i]};\n    }\n    [data-look=\"neo\"].mindmap-node.section-${i - 1} text {\n     fill: ${theme === 'redux' || theme === 'redux-dark' ? options.nodeBorder : options['cScaleLabel' + (theme === 'neutral' ? 1 : i)]};\n    }\n    `;\n  }\n  return sections;\n};\n\nconst genGradient = (THEME_COLOR_LIMIT: number, svgId: string, mainBkg: string) => {\n  let sections = '';\n  for (let i = 0; i < THEME_COLOR_LIMIT; i++) {\n    sections += `\n    [data-look=\"neo\"].mindmap-node.section-${i - 1} rect, [data-look=\"neo\"].mindmap-node.section-${i - 1} path, [data-look=\"neo\"].mindmap-node.section-${i - 1} circle, [data-look=\"neo\"].mindmap-node.section-${i - 1} polygon {\n      stroke: url(${svgId}-gradient);\n      fill: ${mainBkg};\n    }\n    .section-${i - 1} line {\n      stroke-width: 0;\n    }`;\n  }\n  return sections;\n};\n\n// TODO: These options seem incorrect.\nconst getStyles: DiagramStylesProvider = (options) => {\n  const { theme } = options;\n  // svgId is passed inside options by the caller in packages/mermaid/src/styles.ts\n  // as `themes[type]({ ...options, svgId })`. The second parameter is never populated.\n  const svgId: string | undefined = options.svgId;\n  const scopedDropShadow = options.dropShadow\n    ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`)\n    : 'none';\n  return `\n  .edge {\n    stroke-width: 3;\n  }\n  ${genSections(options)}\n  .section-root rect, .section-root path, .section-root circle, .section-root polygon  {\n    fill: ${options.git0};\n  }\n  .section-root text {\n    fill: ${options.gitBranchLabel0};\n  }\n  .section-root span {\n    color: ${theme?.includes('redux') ? options.nodeBorder : 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  .mindmap-node-label {\n    dy: 1em;\n    alignment-baseline: middle;\n    text-anchor: middle;\n    dominant-baseline: middle;\n    text-align: center;\n  }\n  [data-look=\"neo\"].mindmap-node  {\n    filter: ${scopedDropShadow};\n  }\n  [data-look=\"neo\"].mindmap-node.section-root rect, [data-look=\"neo\"].mindmap-node.section-root path, [data-look=\"neo\"].mindmap-node.section-root circle, [data-look=\"neo\"].mindmap-node.section-root polygon  {\n    fill: ${theme?.includes('redux') ? options.mainBkg : options.git0};\n  }\n  [data-look=\"neo\"].mindmap-node.section-root .text-inner-tspan {\n    fill:  ${theme?.includes('redux') ? options.nodeBorder : options['cScaleLabel' + (theme === 'neutral' ? 1 : 0)]};\n  }\n  ${options.useGradient && svgId && options.mainBkg ? genGradient(options.THEME_COLOR_LIMIT, svgId, options.mainBkg) : ''}\n`;\n};\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/mindmap.jison';\nimport { MindmapDB } from './mindmapDb.js';\nimport renderer from './mindmapRenderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n  get db() {\n    return new MindmapDB();\n  },\n  renderer,\n  parser,\n  styles,\n};\n"],
  "mappings": "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",
  "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "mindmap_default", "parser", "byteToHex", "i", "unsafeStringify", "arr", "offset", "__name", "getRandomValues", "rnds8", "rng", "__name", "randomUUID", "native_default", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "unsafeStringify", "__name", "v4_default", "MAX_SECTIONS", "nodeType", "MindmapDB", "__name", "level", "i", "id", "descr", "type", "log", "isRoot", "conf", "getConfig", "padding", "defaultConfig_default", "node", "sanitizeText", "parent", "startStr", "endStr", "element", "decoration", "config", "sectionNumber", "index", "child", "childSectionNumber", "MAX_SECTIONS", "processedNodes", "cssClasses", "classes", "getShapeFromType", "isReduxTheme", "processedNode", "edges", "edgeClasses", "edgeDepth", "edge", "mindmapRoot", "hasUserDefinedLayout", "getUserDefinedConfig", "finalConfig", "processedEdges", "shapes", "v4_default", "draw", "__name", "text", "id", "_version", "diagObj", "log", "db", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "node", "render", "themeVariables", "getConfig", "useGradient", "gradientStart", "gradientStop", "svgId", "gradient", "setupViewPortForSVG", "defaultConfig_default", "mindmapRenderer_default", "genSections", "__name", "options", "theme", "look", "sections", "is_dark_default", "lighten_default", "darken_default", "sw", "genGradient", "THEME_COLOR_LIMIT", "svgId", "mainBkg", "getStyles", "scopedDropShadow", "styles_default", "diagram", "MindmapDB", "mindmapRenderer_default", "mindmap_default", "styles_default"]
}
