{"version":3,"file":"mindmap-definition-c8a05b8a.js","sources":["../src/diagrams/mindmap/parser/mindmap.jison","../src/diagrams/mindmap/mindmapDb.js","../src/diagrams/mindmap/svgDraw.js","../src/diagrams/mindmap/mindmapRenderer.js","../src/diagrams/mindmap/styles.js","../src/diagrams/mindmap/mindmap-definition.ts"],"sourcesContent":["/** mermaid\n * https://knsv.github.io/mermaid\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n%lex\n\n%options case-insensitive\n\n%{\n\t// Pre-lexer code can go here\n%}\n%x NODE\n%x NSTR\n%x ICON\n%x CLASS\n\n%%\n\n\\s*\\%\\%.* {yy.getLogger().trace('Found comment',yytext);}\n// \\%\\%[^\\n]*\\n /* skip comments */\n\"mindmap\"\t\t return 'MINDMAP';\n\":::\" { this.begin('CLASS'); }\n.+\t\t\t { this.popState();return 'CLASS'; }\n\\n\t\t\t\t { this.popState();}\n// [\\s]*\"::icon(\" { this.begin('ICON'); }\n\"::icon(\" { yy.getLogger().trace('Begin icon');this.begin('ICON'); }\n[\\s]+[\\n] {yy.getLogger().trace('SPACELINE');return 'SPACELINE' /* skip all whitespace */ ;}\n[\\n]+ return 'NL';\n[^\\)]+\t\t\t { return 'ICON'; }\n\\)\t\t\t\t {yy.getLogger().trace('end icon');this.popState();}\n\"-)\" { yy.getLogger().trace('Exploding node'); this.begin('NODE');return 'NODE_DSTART'; }\n\"(-\" { yy.getLogger().trace('Cloud'); this.begin('NODE');return 'NODE_DSTART'; }\n\"))\" { yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 'NODE_DSTART'; }\n\")\" { yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 'NODE_DSTART'; }\n\"((\" { this.begin('NODE');return 'NODE_DSTART'; }\n\"{{\" { this.begin('NODE');return 'NODE_DSTART'; }\n\"(\" { this.begin('NODE');return 'NODE_DSTART'; }\n\"[\" { this.begin('NODE');return 'NODE_DSTART'; }\n[\\s]+ return 'SPACELIST' /* skip all whitespace */ ;\n// !(-\\() return 'NODE_ID';\n[^\\(\\[\\n\\-\\)\\{\\}]+ return 'NODE_ID';\n<> return 'EOF';\n[\"] { yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");}\n[^\"]+ { yy.getLogger().trace('description:', yytext); return \"NODE_DESCR\";}\n[\"] {this.popState();}\n[\\)]\\) {this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";}\n[\\)] {this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";}\n[\\]] {this.popState();yy.getLogger().trace('node end ...',yytext);return \"NODE_DEND\";}\n\"}}\" {this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";}\n\"(-\" {this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";}\n\"-)\" {this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";}\n\"((\" {this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";}\n\"(\" {this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";}\n[^\\)\\]\\(\\}]+ { yy.getLogger().trace('Long description:', yytext); return 'NODE_DESCR';}\n.+(?!\\(\\() { yy.getLogger().trace('Long description:', yytext); return 'NODE_DESCR';}\n// [\\[] return 'NODE_START';\n// .+ return 'TXT' ;\n\n/lex\n\n%start start\n\n%% /* language grammar */\n\nstart\n// %{\t: info document 'EOF' { return yy; } }\n\t: mindMap\n |\tspaceLines mindMap\n ;\n\nspaceLines\n : SPACELINE\n | spaceLines SPACELINE\n | spaceLines NL\n ;\n\nmindMap\n : MINDMAP document { return yy; }\n | MINDMAP NL document { return yy; }\n ;\n\nstop\n : NL {yy.getLogger().trace('Stop NL ');}\n | EOF {yy.getLogger().trace('Stop EOF ');}\n | SPACELINE\n | stop NL {yy.getLogger().trace('Stop NL2 ');}\n | stop EOF {yy.getLogger().trace('Stop EOF2 ');}\n ;\ndocument\n\t: document statement stop\n\t| statement stop\n\t;\n\nstatement\n\t: SPACELIST node { yy.getLogger().info('Node: ',$2.id);yy.addNode($1.length, $2.id, $2.descr, $2.type); }\n\t| SPACELIST ICON { yy.getLogger().trace('Icon: ',$2);yy.decorateNode({icon: $2}); }\n\t| SPACELIST CLASS { yy.decorateNode({class: $2}); }\n | SPACELINE { yy.getLogger().trace('SPACELIST');}\n\t| node\t\t\t\t\t { yy.getLogger().trace('Node: ',$1.id);yy.addNode(0, $1.id, $1.descr, $1.type); }\n\t| ICON { yy.decorateNode({icon: $1}); }\n\t| CLASS { yy.decorateNode({class: $1}); }\n | SPACELIST\n\t;\n\n\n\nnode\n :nodeWithId\n |nodeWithoutId\n ;\n\nnodeWithoutId\n : NODE_DSTART NODE_DESCR NODE_DEND\n\t { yy.getLogger().trace(\"node found ..\", $1); $$ = { id: $2, descr: $2, type: yy.getType($1, $3) }; }\n ;\n\nnodeWithId\n\t: NODE_ID { $$ = { id: $1, descr: $1, type: yy.nodeType.DEFAULT }; }\n\t| NODE_ID NODE_DSTART NODE_DESCR NODE_DEND\n\t { yy.getLogger().trace(\"node found ..\", $1); $$ = { id: $1, descr: $3, type: yy.getType($2, $4) }; }\n\t;\n%%\n","import { getConfig } from '../../config';\nimport { sanitizeText as _sanitizeText } from '../../diagrams/common/common';\nimport { log } from '../../logger';\n\nexport const sanitizeText = (text) => _sanitizeText(text, getConfig());\n\nlet nodes = [];\nlet cnt = 0;\nlet elements = {};\nexport const clear = () => {\n nodes = [];\n cnt = 0;\n elements = {};\n};\n\nconst getParent = function (level) {\n for (let i = nodes.length - 1; i >= 0; i--) {\n if (nodes[i].level < level) {\n return nodes[i];\n }\n }\n // No parent found\n return null;\n};\n\nexport const getMindmap = () => {\n return nodes.length > 0 ? nodes[0] : null;\n};\nexport const addNode = (level, id, descr, type) => {\n log.info('addNode', level, id, descr, type);\n const conf = getConfig();\n const node = {\n id: cnt++,\n nodeId: sanitizeText(id),\n level,\n descr: sanitizeText(descr),\n type,\n children: [],\n width: getConfig().mindmap.maxNodeWidth,\n };\n switch (node.type) {\n case nodeType.ROUNDED_RECT:\n node.padding = 2 * conf.mindmap.padding;\n break;\n case nodeType.RECT:\n node.padding = 2 * conf.mindmap.padding;\n break;\n case nodeType.HEXAGON:\n node.padding = 2 * conf.mindmap.padding;\n break;\n default:\n node.padding = conf.mindmap.padding;\n }\n const parent = getParent(level);\n if (parent) {\n parent.children.push(node);\n // Keep all nodes in the list\n nodes.push(node);\n } else {\n if (nodes.length === 0) {\n // First node, the root\n nodes.push(node);\n } else {\n // Syntax error ... there can only bee one root\n let error = new Error(\n 'There can be only one root. No parent could be found for (\"' + node.descr + '\")'\n );\n error.hash = {\n text: 'branch ' + name,\n token: 'branch ' + name,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"'],\n };\n throw error;\n }\n }\n};\n\nexport const 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};\n\nexport const getType = (startStr, endStr) => {\n log.debug('In get type', startStr, endStr);\n switch (startStr) {\n case '[':\n return nodeType.RECT;\n case '(':\n return endStr === ')' ? nodeType.ROUNDED_RECT : nodeType.CLOUD;\n case '((':\n return nodeType.CIRCLE;\n case ')':\n return nodeType.CLOUD;\n case '))':\n return nodeType.BANG;\n case '{{':\n return nodeType.HEXAGON;\n default:\n return nodeType.DEFAULT;\n }\n};\n\nexport const setElementForId = (id, element) => {\n elements[id] = element;\n};\n\nexport const decorateNode = (decoration) => {\n const node = nodes[nodes.length - 1];\n if (decoration && decoration.icon) {\n node.icon = sanitizeText(decoration.icon);\n }\n if (decoration && decoration.class) {\n node.class = sanitizeText(decoration.class);\n }\n};\n\nexport const type2Str = (type) => {\n switch (type) {\n case nodeType.DEFAULT:\n return 'no-border';\n case nodeType.RECT:\n return 'rect';\n case nodeType.ROUNDED_RECT:\n return 'rounded-rect';\n case nodeType.CIRCLE:\n return 'circle';\n case nodeType.CLOUD:\n return 'cloud';\n case nodeType.BANG:\n return 'bang';\n case nodeType.HEXAGON:\n return 'hexgon';\n default:\n return 'no-border';\n }\n};\n\nexport let parseError;\nexport const setErrorHandler = (handler) => {\n parseError = handler;\n};\n\n// Expose logger to grammar\nexport const getLogger = () => log;\n\nexport const getNodeById = (id) => nodes[id];\nexport const getElementById = (id) => elements[id];\n","import { select } from 'd3';\nimport * as db from './mindmapDb';\nconst MAX_SECTIONS = 12;\n\n/**\n * @param {string} text The text to be wrapped\n * @param {number} width The max width of the text\n */\nfunction wrap(text, width) {\n text.each(function () {\n var text = select(this),\n words = text\n .text()\n .split(/(\\s+|
)/)\n .reverse(),\n word,\n line = [],\n lineHeight = 1.1, // ems\n y = text.attr('y'),\n dy = parseFloat(text.attr('dy')),\n tspan = text\n .text(null)\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .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\n tspan = text\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineHeight + 'em')\n .text(word);\n }\n }\n });\n}\n\nconst defaultBkg = function (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};\nconst rectBkg = function (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};\nconst cloudBkg = function (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};\nconst bangBkg = function (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};\nconst circleBkg = function (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\n/**\n *\n * @param parent\n * @param w\n * @param h\n * @param points\n * @param node\n */\nfunction insertPolygonShape(parent, w, h, points, node) {\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 = function (elem, node) {\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 = [\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 const shapeSvg = insertPolygonShape(elem, w, h, points, node);\n};\n\nconst roundedRectBkg = function (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 {object} elem The D3 dom element in which the node is to be added\n * @param {object} node The node to be added\n * @param fullSection\n * @param {object} conf The configuration object\n * @returns {number} The height nodes dom element\n */\nexport const drawNode = function (elem, node, fullSection, conf) {\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 txt = textElem\n .append('text')\n .text(node.descr)\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize.replace ? conf.fontSize.replace('px', '') : 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 textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n }\n\n switch (node.type) {\n case db.nodeType.DEFAULT:\n defaultBkg(bkgElem, node, section, conf);\n break;\n case db.nodeType.ROUNDED_RECT:\n roundedRectBkg(bkgElem, node, section, conf);\n break;\n case db.nodeType.RECT:\n rectBkg(bkgElem, node, section, conf);\n break;\n case db.nodeType.CIRCLE:\n bkgElem.attr('transform', 'translate(' + node.width / 2 + ', ' + +node.height / 2 + ')');\n circleBkg(bkgElem, node, section, conf);\n break;\n case db.nodeType.CLOUD:\n cloudBkg(bkgElem, node, section, conf);\n break;\n case db.nodeType.BANG:\n bangBkg(bkgElem, node, section, conf);\n break;\n case db.nodeType.HEXAGON:\n hexagonBkg(bkgElem, node, section, conf);\n break;\n }\n\n // Position the node to its coordinate\n // if (typeof node.x !== 'undefined' && typeof node.y !== 'undefined') {\n // nodeElem.attr('transform', 'translate(' + node.x + ',' + node.y + ')');\n // }\n db.setElementForId(node.id, nodeElem);\n return node.height;\n};\n\nexport const drawEdge = function drawEdge(edgesElem, mindmap, parent, depth, fullSection) {\n const section = fullSection % (MAX_SECTIONS - 1);\n const sx = parent.x + parent.width / 2;\n const sy = parent.y + parent.height / 2;\n const ex = mindmap.x + mindmap.width / 2;\n const ey = mindmap.y + mindmap.height / 2;\n const mx = ex > sx ? sx + Math.abs(sx - ex) / 2 : sx - Math.abs(sx - ex) / 2;\n const my = ey > sy ? sy + Math.abs(sy - ey) / 2 : sy - Math.abs(sy - ey) / 2;\n const qx = ex > sx ? Math.abs(sx - mx) / 2 + sx : -Math.abs(sx - mx) / 2 + sx;\n const qy = ey > sy ? Math.abs(sy - my) / 2 + sy : -Math.abs(sy - my) / 2 + sy;\n\n edgesElem\n .append('path')\n .attr(\n 'd',\n parent.direction === 'TB' || parent.direction === 'BT'\n ? `M${sx},${sy} Q${sx},${qy} ${mx},${my} T${ex},${ey}`\n : `M${sx},${sy} Q${qx},${sy} ${mx},${my} T${ex},${ey}`\n )\n .attr('class', 'edge section-edge-' + section + ' edge-depth-' + depth);\n};\n\nexport const positionNode = function (node) {\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\nexport default { drawNode, positionNode, drawEdge };\n","/** Created by knut on 14-12-11. */\nimport { select } from 'd3';\nimport { log } from '../../logger';\nimport { getConfig } from '../../config';\nimport { setupGraphViewbox } from '../../setupGraphViewbox';\nimport svgDraw from './svgDraw';\nimport cytoscape from 'cytoscape/dist/cytoscape.umd.js';\nimport coseBilkent from 'cytoscape-cose-bilkent';\nimport * as db from './mindmapDb';\n\n// Inject the layout algorithm into cytoscape\ncytoscape.use(coseBilkent);\n\n/**\n * @param {any} svg The svg element to draw the diagram onto\n * @param {object} mindmap The mindmap data and hierarchy\n * @param section\n * @param {object} conf The configuration object\n */\nfunction drawNodes(svg, mindmap, section, conf) {\n svgDraw.drawNode(svg, mindmap, section, conf);\n if (mindmap.children) {\n mindmap.children.forEach((child, index) => {\n drawNodes(svg, child, section < 0 ? index : section, conf);\n });\n }\n}\n\n/**\n * @param edgesEl\n * @param cy\n */\nfunction drawEdges(edgesEl, cy) {\n cy.edges().map((edge, id) => {\n const data = edge.data();\n if (edge[0]._private.bodyBounds) {\n const bounds = edge[0]._private.rscratch;\n log.trace('Edge: ', id, data);\n edgesEl\n .insert('path')\n .attr(\n 'd',\n `M ${bounds.startX},${bounds.startY} L ${bounds.midX},${bounds.midY} L${bounds.endX},${bounds.endY} `\n )\n .attr('class', 'edge section-edge-' + data.section + ' edge-depth-' + data.depth);\n }\n });\n}\n\n/**\n * @param mindmap The mindmap data and hierarchy\n * @param cy\n * @param conf The configuration object\n * @param level\n */\nfunction addNodes(mindmap, cy, conf, level) {\n cy.add({\n group: 'nodes',\n data: {\n id: mindmap.id,\n labelText: mindmap.descr,\n height: mindmap.height,\n width: mindmap.width,\n level: level,\n nodeId: mindmap.id,\n padding: mindmap.padding,\n type: mindmap.type,\n },\n position: {\n x: mindmap.x,\n y: mindmap.y,\n },\n });\n if (mindmap.children) {\n mindmap.children.forEach((child) => {\n addNodes(child, cy, conf, level + 1);\n cy.add({\n group: 'edges',\n data: {\n id: `${mindmap.id}_${child.id}`,\n source: mindmap.id,\n target: child.id,\n depth: level,\n section: child.section,\n },\n });\n });\n }\n}\n\n/**\n * @param node\n * @param conf\n * @param cy\n */\nfunction layoutMindmap(node, conf) {\n return new Promise((resolve) => {\n // Add temporary render element\n const renderEl = select('body').append('div').attr('id', 'cy').attr('style', 'display:none');\n const cy = cytoscape({\n container: document.getElementById('cy'), // container to render in\n style: [\n {\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n },\n },\n ],\n });\n // Remove element after layout\n renderEl.remove();\n addNodes(node, cy, conf, 0);\n\n // Make cytoscape care about the dimensions of the nodes\n cy.nodes().forEach(function (n) {\n n.layoutDimensions = () => {\n const data = n.data();\n return { w: data.width, h: data.height };\n };\n });\n\n cy.layout({\n name: 'cose-bilkent',\n quality: 'proof',\n // headless: true,\n styleEnabled: false,\n animate: false,\n }).run();\n cy.ready((e) => {\n log.info('Ready', e);\n resolve(cy);\n });\n });\n}\n/**\n * @param node\n * @param cy\n * @param positionedMindmap\n * @param conf\n */\nfunction positionNodes(cy) {\n cy.nodes().map((node, id) => {\n const data = node.data();\n data.x = node.position().x;\n data.y = node.position().y;\n svgDraw.positionNode(data);\n const el = db.getElementById(data.nodeId);\n log.info('Id:', id, 'Position: (', node.position().x, ', ', node.position().y, ')', data);\n el.attr(\n 'transform',\n `translate(${node.position().x - data.width / 2}, ${node.position().y - data.height / 2})`\n );\n el.attr('attr', `apa-${id})`);\n });\n}\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n * @param {any} version\n * @param diagObj\n */\n\nexport const draw = async (text, id, version, diagObj) => {\n const conf = getConfig();\n\n // This is done only for throwing the error if the text is not valid.\n diagObj.db.clear();\n // Parse the graph definition\n diagObj.parser.parse(text);\n\n log.debug('Renering info diagram\\n' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n // Parse the graph definition\n\n const svg = root.select('#' + id);\n\n svg.append('g');\n const mm = diagObj.db.getMindmap();\n\n // Draw the graph and start with drawing the nodes without proper position\n // this gives us the size of the nodes and we can set the positions later\n\n const edgesElem = svg.append('g');\n edgesElem.attr('class', 'mindmap-edges');\n const nodesElem = svg.append('g');\n nodesElem.attr('class', 'mindmap-nodes');\n drawNodes(nodesElem, mm, -1, conf);\n\n // Next step is to layout the mindmap, giving each node a position\n\n const cy = await layoutMindmap(mm, conf);\n\n // // After this we can draw, first the edges and the then nodes with the correct position\n drawEdges(edgesElem, cy, conf);\n positionNodes(cy, conf);\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(undefined, svg, conf.mindmap.padding, conf.mindmap.useMaxWidth);\n};\n\nexport default {\n draw,\n};\n","import { darken, lighten, isDark } from 'khroma';\n\nconst genSections = (options) => {\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 = '' + (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 .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 `;\n }\n return sections;\n};\n\nconst getStyles = (options) =>\n `\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 .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n`;\nexport default getStyles;\n","// @ts-ignore: TODO Fix ts errors\nimport mindmapParser from './parser/mindmap';\nimport * as mindmapDb from './mindmapDb';\nimport mindmapRenderer from './mindmapRenderer';\nimport mindmapStyles from './styles';\n\nexport const diagram = {\n db: mindmapDb,\n renderer: mindmapRenderer,\n parser: mindmapParser,\n styles: mindmapStyles,\n};\n"],"names":["o","parser","parseError","lexer","_sanitizeText","text","db.type2Str","db.nodeType","db.setElementForId","drawEdge","db.getElementById"],"mappings":"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,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,KAAI,GAAE,KAAI,IAAG,IAAG,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,KAAI,GAAE,KAAI,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,GAAE,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC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"}