summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/mindmap-definition-c8a05b8a.js.map
blob: a32eb18ca08926c458aacc862703cf90d38c151f (plain)
1
{"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<CLASS>.+\t\t\t     { this.popState();return 'CLASS'; }\n<CLASS>\\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<ICON>[^\\)]+\t\t\t { return 'ICON'; }\n<ICON>\\)\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<<EOF>>            return 'EOF';\n<NODE>[\"]          { yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");}\n<NSTR>[^\"]+        { yy.getLogger().trace('description:', yytext); return \"NODE_DESCR\";}\n<NSTR>[\"]          {this.popState();}\n<NODE>[\\)]\\)         {this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";}\n<NODE>[\\)]         {this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";}\n<NODE>[\\]]         {this.popState();yy.getLogger().trace('node end ...',yytext);return \"NODE_DEND\";}\n<NODE>\"}}\"         {this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";}\n<NODE>\"(-\"         {this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";}\n<NODE>\"-)\"         {this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";}\n<NODE>\"((\"         {this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";}\n<NODE>\"(\"          {this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";}\n<NODE>[^\\)\\]\\(\\}]+     { yy.getLogger().trace('Long description:', yytext);   return 'NODE_DESCR';}\n<NODE>.+(?!\\(\\()     { 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+|<br>)/)\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 === '<br>') {\n        line.pop();\n        tspan.text(line.join(' ').trim());\n        if (word === '<br>') {\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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"}