summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/timeline-definition-24ebf147.js.map
blob: 292c16d0625c2f764c235bfddfae8743876638a4 (plain)
1
{"version":3,"file":"timeline-definition-24ebf147.js","sources":["../src/diagrams/timeline/parser/timeline.jison","../src/diagrams/timeline/timelineDb.js","../src/diagrams/timeline/svgDraw.js","../src/diagrams/timeline/timelineRenderer.ts","../src/diagrams/timeline/styles.js","../src/diagrams/timeline/timeline-definition.ts"],"sourcesContent":["/** mermaid\n *  https://mermaidjs.github.io/\n *  (c) 2023 Knut Sveidqvist\n *  MIT license.\n */\n%lex\n%options case-insensitive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n// Directive states\n%x open_directive type_directive arg_directive\n\n\n%%\n\n\\%\\%\\{                                                          { this.begin('open_directive'); return 'open_directive'; }\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*)                          { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\"                                             { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\%                            { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*)                            return 'arg_directive';\n\\%%(?!\\{)[^\\n]*                                                 /* skip comments */\n[^\\}]\\%\\%[^\\n]*                                                 /* skip comments */\n[\\n]+                   return 'NEWLINE';\n\\s+                     /* skip whitespace */\n\\#[^\\n]*                /* skip comments */\n\n\"timeline\"               return 'timeline';\n\"title\"\\s[^#\\n;]+       return 'title';\naccTitle\\s*\":\"\\s*                                               { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]*                                    { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s*                                               { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]*                                    { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s*                                { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}]                       { this.popState(); }\n<acc_descr_multiline>[^\\}]*                     return \"acc_descr_multiline_value\";\n\"section\"\\s[^#:\\n;]+    return 'section';\n\n// event starting with \"==>\" keyword\n\":\"\\s[^#:\\n;]+        return 'event';\n[^#:\\n;]+               return 'period';\n\n\n<<EOF>>                 return 'EOF';\n.                       return 'INVALID';\n\n/lex\n\n%left '^'\n\n%start start\n\n%% /* language grammar */\n\nstart\n\t: timeline document 'EOF' { return $2; }\n\t| directive start\n\t;\n\ndocument\n\t: /* empty */ { $$ = [] }\n\t| document line {$1.push($2);$$ = $1}\n\t;\n\nline\n\t: SPACE statement { $$ = $2 }\n\t| statement { $$ = $1 }\n\t| NEWLINE { $$=[];}\n\t| EOF { $$=[];}\n\t;\n\ndirective\n  : openDirective typeDirective closeDirective 'NEWLINE'\n  | openDirective typeDirective ':' argDirective closeDirective 'NEWLINE'\n  ;\n\nstatement\n  : title {yy.getCommonDb().setDiagramTitle($1.substr(6));$$=$1.substr(6);}\n  | acc_title acc_title_value  { $$=$2.trim();yy.getCommonDb().setAccTitle($$); }\n  | acc_descr acc_descr_value  { $$=$2.trim();yy.getCommonDb().setAccDescription($$); }\n  | acc_descr_multiline_value { $$=$1.trim();yy.getCommonDb().setAccDescription($$); }\n  | section {yy.addSection($1.substr(8));$$=$1.substr(8);}\n  | period_statement\n  | event_statement\n  | directive\n  ;\nperiod_statement\n  : period {yy.addTask($1,0,'');$$=$1;}\n;\nevent_statement\n  : event {yy.addEvent($1.substr(2));$$=$1;}\n;\n\n\nopenDirective\n  : open_directive { yy.parseDirective('%%{', 'open_directive'); }\n  ;\n\ntypeDirective\n  : type_directive { yy.parseDirective($1, 'type_directive'); }\n  ;\n\nargDirective\n  : arg_directive { $1 = $1.trim().replace(/'/g, '\"'); yy.parseDirective($1, 'arg_directive'); }\n  ;\n\ncloseDirective\n  : close_directive { yy.parseDirective('}%%', 'close_directive', 'timeline'); }\n  ;\n\n%%\n","import { parseDirective as _parseDirective } from '../../directiveUtils';\nimport * as commonDb from '../../commonDb';\nlet currentSection = '';\nlet currentTaskId = 0;\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const getCommonDb = () => commonDb;\n\nexport const parseDirective = (statement, context, type) => {\n  _parseDirective(this, statement, context, type);\n};\n\nexport const clear = function () {\n  sections.length = 0;\n  tasks.length = 0;\n  currentSection = '';\n  rawTasks.length = 0;\n  commonDb.clear();\n};\n\nexport const addSection = function (txt) {\n  currentSection = txt;\n  sections.push(txt);\n};\n\nexport const getSections = function () {\n  return sections;\n};\n\nexport const getTasks = function () {\n  let allItemsProcessed = compileTasks();\n  const maxDepth = 100;\n  let iterationCount = 0;\n  while (!allItemsProcessed && iterationCount < maxDepth) {\n    allItemsProcessed = compileTasks();\n    iterationCount++;\n  }\n\n  tasks.push(...rawTasks);\n\n  return tasks;\n};\n\nexport const addTask = function (period, length, event) {\n  const rawTask = {\n    id: currentTaskId++,\n    section: currentSection,\n    type: currentSection,\n    task: period,\n    score: length ? length : 0,\n    //if event is defined, then add it the events array\n    events: event ? [event] : [],\n  };\n  rawTasks.push(rawTask);\n};\n\nexport const addEvent = function (event) {\n  // fetch current task with currnetTaskId\n  const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n  //add event to the events array\n  currentTask.events.push(event);\n};\n\nexport const addTaskOrg = function (descr) {\n  const newTask = {\n    section: currentSection,\n    type: currentSection,\n    description: descr,\n    task: descr,\n    classes: [],\n  };\n  tasks.push(newTask);\n};\n\n/**\n * Compiles the raw tasks into a list of tasks with events\n * @returns {boolean} true if all items are processed\n * @private\n * @memberof timelineDb\n */\nconst compileTasks = function () {\n  const compileTask = function (pos) {\n    return rawTasks[pos].processed;\n  };\n\n  let allProcessed = true;\n  for (const [i, rawTask] of rawTasks.entries()) {\n    compileTask(i);\n\n    allProcessed = allProcessed && rawTask.processed;\n  }\n  return allProcessed;\n};\n\nexport default {\n  clear,\n  getCommonDb,\n  addSection,\n  getSections,\n  getTasks,\n  addTask,\n  addTaskOrg,\n  addEvent,\n  parseDirective,\n};\n","import { arc as d3arc, select } from 'd3';\nconst MAX_SECTIONS = 12;\n\nexport const drawRect = function (elem, rectData) {\n  const rectElem = elem.append('rect');\n  rectElem.attr('x', rectData.x);\n  rectElem.attr('y', rectData.y);\n  rectElem.attr('fill', rectData.fill);\n  rectElem.attr('stroke', rectData.stroke);\n  rectElem.attr('width', rectData.width);\n  rectElem.attr('height', rectData.height);\n  rectElem.attr('rx', rectData.rx);\n  rectElem.attr('ry', rectData.ry);\n\n  if (rectData.class !== undefined) {\n    rectElem.attr('class', rectData.class);\n  }\n\n  return rectElem;\n};\n\nexport const drawFace = function (element, faceData) {\n  const radius = 15;\n  const circleElement = element\n    .append('circle')\n    .attr('cx', faceData.cx)\n    .attr('cy', faceData.cy)\n    .attr('class', 'face')\n    .attr('r', radius)\n    .attr('stroke-width', 2)\n    .attr('overflow', 'visible');\n\n  const face = element.append('g');\n\n  //left eye\n  face\n    .append('circle')\n    .attr('cx', faceData.cx - radius / 3)\n    .attr('cy', faceData.cy - radius / 3)\n    .attr('r', 1.5)\n    .attr('stroke-width', 2)\n    .attr('fill', '#666')\n    .attr('stroke', '#666');\n\n  //right eye\n  face\n    .append('circle')\n    .attr('cx', faceData.cx + radius / 3)\n    .attr('cy', faceData.cy - radius / 3)\n    .attr('r', 1.5)\n    .attr('stroke-width', 2)\n    .attr('fill', '#666')\n    .attr('stroke', '#666');\n\n  /** @param {any} face */\n  function smile(face) {\n    const arc = d3arc()\n      .startAngle(Math.PI / 2)\n      .endAngle(3 * (Math.PI / 2))\n      .innerRadius(radius / 2)\n      .outerRadius(radius / 2.2);\n    //mouth\n    face\n      .append('path')\n      .attr('class', 'mouth')\n      .attr('d', arc)\n      .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n  }\n\n  /** @param {any} face */\n  function sad(face) {\n    const arc = d3arc()\n      .startAngle((3 * Math.PI) / 2)\n      .endAngle(5 * (Math.PI / 2))\n      .innerRadius(radius / 2)\n      .outerRadius(radius / 2.2);\n    //mouth\n    face\n      .append('path')\n      .attr('class', 'mouth')\n      .attr('d', arc)\n      .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n  }\n\n  /** @param {any} face */\n  function ambivalent(face) {\n    face\n      .append('line')\n      .attr('class', 'mouth')\n      .attr('stroke', 2)\n      .attr('x1', faceData.cx - 5)\n      .attr('y1', faceData.cy + 7)\n      .attr('x2', faceData.cx + 5)\n      .attr('y2', faceData.cy + 7)\n      .attr('class', 'mouth')\n      .attr('stroke-width', '1px')\n      .attr('stroke', '#666');\n  }\n\n  if (faceData.score > 3) {\n    smile(face);\n  } else if (faceData.score < 3) {\n    sad(face);\n  } else {\n    ambivalent(face);\n  }\n\n  return circleElement;\n};\n\nexport const drawCircle = function (element, circleData) {\n  const circleElement = element.append('circle');\n  circleElement.attr('cx', circleData.cx);\n  circleElement.attr('cy', circleData.cy);\n  circleElement.attr('class', 'actor-' + circleData.pos);\n  circleElement.attr('fill', circleData.fill);\n  circleElement.attr('stroke', circleData.stroke);\n  circleElement.attr('r', circleData.r);\n\n  if (circleElement.class !== undefined) {\n    circleElement.attr('class', circleElement.class);\n  }\n\n  if (circleData.title !== undefined) {\n    circleElement.append('title').text(circleData.title);\n  }\n\n  return circleElement;\n};\n\nexport const drawText = function (elem, textData) {\n  // Remove and ignore br:s\n  const nText = textData.text.replace(/<br\\s*\\/?>/gi, ' ');\n\n  const textElem = elem.append('text');\n  textElem.attr('x', textData.x);\n  textElem.attr('y', textData.y);\n  textElem.attr('class', 'legend');\n\n  textElem.style('text-anchor', textData.anchor);\n\n  if (textData.class !== undefined) {\n    textElem.attr('class', textData.class);\n  }\n\n  const span = textElem.append('tspan');\n  span.attr('x', textData.x + textData.textMargin * 2);\n  span.text(nText);\n\n  return textElem;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n  /**\n   * @param {any} x\n   * @param {any} y\n   * @param {any} width\n   * @param {any} height\n   * @param {any} cut\n   */\n  function genPoints(x, y, width, height, cut) {\n    return (\n      x +\n      ',' +\n      y +\n      ' ' +\n      (x + width) +\n      ',' +\n      y +\n      ' ' +\n      (x + width) +\n      ',' +\n      (y + height - cut) +\n      ' ' +\n      (x + width - cut * 1.2) +\n      ',' +\n      (y + height) +\n      ' ' +\n      x +\n      ',' +\n      (y + height)\n    );\n  }\n  const polygon = elem.append('polygon');\n  polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n  polygon.attr('class', 'labelBox');\n\n  txtObject.y = txtObject.y + txtObject.labelMargin;\n  txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n  drawText(elem, txtObject);\n};\n\nexport const drawSection = function (elem, section, conf) {\n  const g = elem.append('g');\n\n  const rect = getNoteRect();\n  rect.x = section.x;\n  rect.y = section.y;\n  rect.fill = section.fill;\n  rect.width = conf.width;\n  rect.height = conf.height;\n  rect.class = 'journey-section section-type-' + section.num;\n  rect.rx = 3;\n  rect.ry = 3;\n  drawRect(g, rect);\n\n  _drawTextCandidateFunc(conf)(\n    section.text,\n    g,\n    rect.x,\n    rect.y,\n    rect.width,\n    rect.height,\n    { class: 'journey-section section-type-' + section.num },\n    conf,\n    section.colour\n  );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem The HTML element\n * @param {any} task The task to render\n * @param {any} conf The global configuration\n */\nexport const drawTask = function (elem, task, conf) {\n  const center = task.x + conf.width / 2;\n  const g = elem.append('g');\n  taskCount++;\n  const maxHeight = 300 + 5 * 30;\n  g.append('line')\n    .attr('id', 'task' + taskCount)\n    .attr('x1', center)\n    .attr('y1', task.y)\n    .attr('x2', center)\n    .attr('y2', maxHeight)\n    .attr('class', 'task-line')\n    .attr('stroke-width', '1px')\n    .attr('stroke-dasharray', '4 2')\n    .attr('stroke', '#666');\n\n  drawFace(g, {\n    cx: center,\n    cy: 300 + (5 - task.score) * 30,\n    score: task.score,\n  });\n\n  const rect = getNoteRect();\n  rect.x = task.x;\n  rect.y = task.y;\n  rect.fill = task.fill;\n  rect.width = conf.width;\n  rect.height = conf.height;\n  rect.class = 'task task-type-' + task.num;\n  rect.rx = 3;\n  rect.ry = 3;\n  drawRect(g, rect);\n\n  let xPos = task.x + 14;\n  // task.people.forEach((person) => {\n  //   const colour = task.actors[person].color;\n\n  //   const circle = {\n  //     cx: xPos,\n  //     cy: task.y,\n  //     r: 7,\n  //     fill: colour,\n  //     stroke: '#000',\n  //     title: person,\n  //     pos: task.actors[person].position,\n  //   };\n\n  //   drawCircle(g, circle);\n  //   xPos += 10;\n  // });\n\n  _drawTextCandidateFunc(conf)(\n    task.task,\n    g,\n    rect.x,\n    rect.y,\n    rect.width,\n    rect.height,\n    { class: 'task' },\n    conf,\n    task.colour\n  );\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem The html element\n * @param {any} bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n  const rectElem = drawRect(elem, {\n    x: bounds.startx,\n    y: bounds.starty,\n    width: bounds.stopx - bounds.startx,\n    height: bounds.stopy - bounds.starty,\n    fill: bounds.fill,\n    class: 'rect',\n  });\n  rectElem.lower();\n};\n\nexport const getTextObj = function () {\n  return {\n    x: 0,\n    y: 0,\n    fill: undefined,\n    'text-anchor': 'start',\n    width: 100,\n    height: 100,\n    textMargin: 0,\n    rx: 0,\n    ry: 0,\n  };\n};\n\nexport const getNoteRect = function () {\n  return {\n    x: 0,\n    y: 0,\n    width: 100,\n    anchor: 'start',\n    height: 100,\n    rx: 0,\n    ry: 0,\n  };\n};\n\nconst _drawTextCandidateFunc = (function () {\n  /**\n   * @param {any} content\n   * @param {any} g\n   * @param {any} x\n   * @param {any} y\n   * @param {any} width\n   * @param {any} height\n   * @param {any} textAttrs\n   * @param {any} colour\n   */\n  function byText(content, g, x, y, width, height, textAttrs, colour) {\n    const text = g\n      .append('text')\n      .attr('x', x + width / 2)\n      .attr('y', y + height / 2 + 5)\n      .style('font-color', colour)\n      .style('text-anchor', 'middle')\n      .text(content);\n    _setTextAttrs(text, textAttrs);\n  }\n\n  /**\n   * @param {any} content\n   * @param {any} g\n   * @param {any} x\n   * @param {any} y\n   * @param {any} width\n   * @param {any} height\n   * @param {any} textAttrs\n   * @param {any} conf\n   * @param {any} colour\n   */\n  function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n    const { taskFontSize, taskFontFamily } = conf;\n\n    const lines = content.split(/<br\\s*\\/?>/gi);\n    for (let i = 0; i < lines.length; i++) {\n      const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n      const text = g\n        .append('text')\n        .attr('x', x + width / 2)\n        .attr('y', y)\n        .attr('fill', colour)\n        .style('text-anchor', 'middle')\n        .style('font-size', taskFontSize)\n        .style('font-family', taskFontFamily);\n      text\n        .append('tspan')\n        .attr('x', x + width / 2)\n        .attr('dy', dy)\n        .text(lines[i]);\n\n      text\n        .attr('y', y + height / 2.0)\n        .attr('dominant-baseline', 'central')\n        .attr('alignment-baseline', 'central');\n\n      _setTextAttrs(text, textAttrs);\n    }\n  }\n\n  /**\n   * @param {any} content\n   * @param {any} g\n   * @param {any} x\n   * @param {any} y\n   * @param {any} width\n   * @param {any} height\n   * @param {any} textAttrs\n   * @param {any} conf\n   */\n  function byFo(content, g, x, y, width, height, textAttrs, conf) {\n    const body = g.append('switch');\n    const f = body\n      .append('foreignObject')\n      .attr('x', x)\n      .attr('y', y)\n      .attr('width', width)\n      .attr('height', height)\n      .attr('position', 'fixed');\n\n    const text = f\n      .append('xhtml:div')\n      .style('display', 'table')\n      .style('height', '100%')\n      .style('width', '100%');\n\n    text\n      .append('div')\n      .attr('class', 'label')\n      .style('display', 'table-cell')\n      .style('text-align', 'center')\n      .style('vertical-align', 'middle')\n      .text(content);\n\n    byTspan(content, body, x, y, width, height, textAttrs, conf);\n    _setTextAttrs(text, textAttrs);\n  }\n\n  /**\n   * @param {any} toText\n   * @param {any} fromTextAttrsDict\n   */\n  function _setTextAttrs(toText, fromTextAttrsDict) {\n    for (const key in fromTextAttrsDict) {\n      if (key in fromTextAttrsDict) {\n        // noinspection JSUnfilteredForInLoop\n        toText.attr(key, fromTextAttrsDict[key]);\n      }\n    }\n  }\n\n  return function (conf) {\n    return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n  };\n})();\n\nconst initGraphics = function (graphics) {\n  graphics\n    .append('defs')\n    .append('marker')\n    .attr('id', 'arrowhead')\n    .attr('refX', 5)\n    .attr('refY', 2)\n    .attr('markerWidth', 6)\n    .attr('markerHeight', 4)\n    .attr('orient', 'auto')\n    .append('path')\n    .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\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\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  nodeElem.attr(\n    'class',\n    (node.class ? node.class + ' ' : '') + 'timeline-node ' + ('section-' + section)\n  );\n  const bkgElem = nodeElem.append('g');\n\n  // Create the wrapped text element\n  const textElem = nodeElem.append('g');\n\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 =\n    conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace('px', '') : conf.fontSize;\n  node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n  node.height = Math.max(node.height, node.maxHeight);\n  node.width = node.width + 2 * node.padding;\n\n  textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n\n  // Create the background element\n  defaultBkg(bkgElem, node, section, conf);\n\n  return node;\n};\n\nexport const getVirtualNodeHeight = function (elem, node, conf) {\n  const textElem = elem.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 =\n    conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace('px', '') : conf.fontSize;\n  textElem.remove();\n  return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\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-' + 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\nexport default {\n  drawRect,\n  drawCircle,\n  drawSection,\n  drawText,\n  drawLabel,\n  drawTask,\n  drawBackgroundRect,\n  getTextObj,\n  getNoteRect,\n  initGraphics,\n  drawNode,\n  getVirtualNodeHeight,\n};\n","// @ts-ignore - db not typed yet\nimport { select, Selection } from 'd3';\nimport svgDraw from './svgDraw';\nimport { log } from '../../logger';\nimport { getConfig } from '../../config';\nimport { setupGraphViewbox } from '../../setupGraphViewbox';\nimport { Diagram } from '../../Diagram';\nimport { MermaidConfig } from '../../config.type';\n\ninterface Block<TDesc, TSection> {\n  number: number;\n  descr: TDesc;\n  section: TSection;\n  width: number;\n  padding: number;\n  maxHeight: number;\n}\n\ninterface TimelineTask {\n  id: number;\n  section: string;\n  type: string;\n  task: string;\n  score: number;\n  events: string[];\n}\nexport const draw = function (text: string, id: string, version: string, diagObj: Diagram) {\n  //1. Fetch the configuration\n  const conf = getConfig();\n  // @ts-expect-error - wrong config?\n  const LEFT_MARGIN = conf.leftMargin ?? 50;\n\n  //2. Clear the diagram db before parsing\n  diagObj.db.clear?.();\n\n  //3. Parse the diagram text\n  diagObj.parser.parse(text + '\\n');\n\n  log.debug('timeline', diagObj.db);\n\n  const securityLevel = conf.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      ? // @ts-ignore d3 types are wrong\n        select(sandboxElement.nodes()[0].contentDocument.body)\n      : select('body');\n\n  // @ts-ignore d3 types are wrong\n  const svg = root.select('#' + id);\n\n  svg.append('g');\n\n  //4. Fetch the diagram data\n  // @ts-expect-error - db not typed yet\n  const tasks: TimelineTask[] = diagObj.db.getTasks();\n  // @ts-expect-error - db not typed yet\n  const title = diagObj.db.getCommonDb().getDiagramTitle();\n  log.debug('task', tasks);\n\n  //5. Initialize the diagram\n  svgDraw.initGraphics(svg);\n\n  // fetch Sections\n  // @ts-expect-error - db not typed yet\n  const sections: string[] = diagObj.db.getSections();\n  log.debug('sections', sections);\n\n  let maxSectionHeight = 0;\n  let maxTaskHeight = 0;\n  //let sectionBeginX = 0;\n  let depthY = 0;\n  let sectionBeginY = 0;\n  let masterX = 50 + LEFT_MARGIN;\n  //sectionBeginX = masterX;\n  let masterY = 50;\n  sectionBeginY = 50;\n  //draw sections\n  let sectionNumber = 0;\n  let hasSections = true;\n\n  //Calculate the max height of the sections\n  sections.forEach(function (section: string) {\n    const sectionNode: Block<string, number> = {\n      number: sectionNumber,\n      descr: section,\n      section: sectionNumber,\n      width: 150,\n      padding: 20,\n      maxHeight: maxSectionHeight,\n    };\n    const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n    log.debug('sectionHeight before draw', sectionHeight);\n    maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n  });\n\n  //tasks length and maxEventCount\n  let maxEventCount = 0;\n  let maxEventLineLength = 0;\n  log.debug('tasks.length', tasks.length);\n  //calculate max task height\n  // for loop till tasks.length\n\n  for (const [i, task] of tasks.entries()) {\n    const taskNode: Block<TimelineTask, string> = {\n      number: i,\n      descr: task,\n      section: task.section,\n      width: 150,\n      padding: 20,\n      maxHeight: maxTaskHeight,\n    };\n    const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n    log.debug('taskHeight before draw', taskHeight);\n    maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n\n    //calculate maxEventCount\n    maxEventCount = Math.max(maxEventCount, task.events.length);\n    //calculate maxEventLineLength\n    let maxEventLineLengthTemp = 0;\n    for (let j = 0; j < task.events.length; j++) {\n      const event = task.events[j];\n      const eventNode = {\n        descr: event,\n        section: task.section,\n        number: task.section,\n        width: 150,\n        padding: 20,\n        maxHeight: 50,\n      };\n      maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n    }\n    maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n  }\n\n  log.debug('maxSectionHeight before draw', maxSectionHeight);\n  log.debug('maxTaskHeight before draw', maxTaskHeight);\n\n  if (sections && sections.length > 0) {\n    sections.forEach((section) => {\n      //filter task where tasks.section == section\n      const tasksForSection = tasks.filter((task) => task.section === section);\n\n      const sectionNode: Block<string, number> = {\n        number: sectionNumber,\n        descr: section,\n        section: sectionNumber,\n        width: 200 * Math.max(tasksForSection.length, 1) - 50,\n        padding: 20,\n        maxHeight: maxSectionHeight,\n      };\n      log.debug('sectionNode', sectionNode);\n      const sectionNodeWrapper = svg.append('g');\n      const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n      log.debug('sectionNode output', node);\n\n      sectionNodeWrapper.attr('transform', `translate(${masterX}, ${sectionBeginY})`);\n\n      masterY += maxSectionHeight + 50;\n\n      //draw tasks for this section\n      if (tasksForSection.length > 0) {\n        drawTasks(\n          svg,\n          tasksForSection,\n          sectionNumber,\n          masterX,\n          masterY,\n          maxTaskHeight,\n          conf,\n          maxEventCount,\n          maxEventLineLength,\n          maxSectionHeight,\n          false\n        );\n      }\n      // todo replace with total width of section and its tasks\n      masterX += 200 * Math.max(tasksForSection.length, 1);\n\n      masterY = sectionBeginY;\n      sectionNumber++;\n    });\n  } else {\n    //draw tasks\n    hasSections = false;\n    drawTasks(\n      svg,\n      tasks,\n      sectionNumber,\n      masterX,\n      masterY,\n      maxTaskHeight,\n      conf,\n      maxEventCount,\n      maxEventLineLength,\n      maxSectionHeight,\n      true\n    );\n  }\n\n  // Get BBox of the diagram\n  const box = svg.node().getBBox();\n  log.debug('bounds', box);\n\n  if (title) {\n    svg\n      .append('text')\n      .text(title)\n      .attr('x', box.width / 2 - LEFT_MARGIN)\n      .attr('font-size', '4ex')\n      .attr('font-weight', 'bold')\n      .attr('y', 20);\n  }\n  //5. Draw the diagram\n  depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n\n  const lineWrapper = svg.append('g').attr('class', 'lineWrapper');\n  // Draw activity line\n  lineWrapper\n    .append('line')\n    .attr('x1', LEFT_MARGIN)\n    .attr('y1', depthY) // One section head + one task + margins\n    .attr('x2', box.width + 3 * LEFT_MARGIN) // Subtract stroke width so arrow point is retained\n    .attr('y2', depthY)\n    .attr('stroke-width', 4)\n    .attr('stroke', 'black')\n    .attr('marker-end', 'url(#arrowhead)');\n\n  // Setup the view box and size of the svg element\n  setupGraphViewbox(\n    undefined,\n    svg,\n    conf.timeline?.padding ?? 50,\n    conf.timeline?.useMaxWidth ?? false\n  );\n\n  // addSVGAccessibilityFields(diagObj.db, diagram, id);\n};\n\nexport const drawTasks = function (\n  diagram: Selection<SVGElement, unknown, null, undefined>,\n  tasks: TimelineTask[],\n  sectionColor: number,\n  masterX: number,\n  masterY: number,\n  maxTaskHeight: number,\n  conf: MermaidConfig,\n  maxEventCount: number,\n  maxEventLineLength: number,\n  maxSectionHeight: number,\n  isWithoutSections: boolean\n) {\n  // Draw the tasks\n  for (const task of tasks) {\n    // create node from task\n    const taskNode = {\n      descr: task.task,\n      section: sectionColor,\n      number: sectionColor,\n      width: 150,\n      padding: 20,\n      maxHeight: maxTaskHeight,\n    };\n\n    log.debug('taskNode', taskNode);\n    // create task wrapper\n\n    const taskWrapper = diagram.append('g').attr('class', 'taskWrapper');\n    const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n    const taskHeight = node.height;\n    //log task height\n    log.debug('taskHeight after draw', taskHeight);\n    taskWrapper.attr('transform', `translate(${masterX}, ${masterY})`);\n\n    // update max task height\n    maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n\n    // if task has events, draw them\n    if (task.events) {\n      // draw a line between the task and the events\n      const lineWrapper = diagram.append('g').attr('class', 'lineWrapper');\n      let lineLength = maxTaskHeight;\n      //add margin to task\n      masterY += 100;\n      lineLength =\n        lineLength + drawEvents(diagram, task.events, sectionColor, masterX, masterY, conf);\n      masterY -= 100;\n\n      lineWrapper\n        .append('line')\n        .attr('x1', masterX + 190 / 2)\n        .attr('y1', masterY + maxTaskHeight) // One section head + one task + margins\n        .attr('x2', masterX + 190 / 2) // Subtract stroke width so arrow point is retained\n        .attr(\n          'y2',\n          masterY +\n            maxTaskHeight +\n            (isWithoutSections ? maxTaskHeight : maxSectionHeight) +\n            maxEventLineLength +\n            120\n        )\n        .attr('stroke-width', 2)\n        .attr('stroke', 'black')\n        .attr('marker-end', 'url(#arrowhead)')\n        .attr('stroke-dasharray', '5,5');\n    }\n\n    masterX = masterX + 200;\n    if (isWithoutSections && !conf.timeline?.disableMulticolor) {\n      sectionColor++;\n    }\n  }\n\n  // reset Y coordinate for next section\n  masterY = masterY - 10;\n};\n\nexport const drawEvents = function (\n  diagram: Selection<SVGElement, unknown, null, undefined>,\n  events: string[],\n  sectionColor: number,\n  masterX: number,\n  masterY: number,\n  conf: MermaidConfig\n) {\n  let maxEventHeight = 0;\n  const eventBeginY = masterY;\n  masterY = masterY + 100;\n  // Draw the events\n  for (const event of events) {\n    // create node from event\n    const eventNode: Block<string, number> = {\n      descr: event,\n      section: sectionColor,\n      number: sectionColor,\n      width: 150,\n      padding: 20,\n      maxHeight: 50,\n    };\n\n    //log task node\n    log.debug('eventNode', eventNode);\n    // create event wrapper\n    const eventWrapper = diagram.append('g').attr('class', 'eventWrapper');\n    const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n    const eventHeight = node.height;\n    maxEventHeight = maxEventHeight + eventHeight;\n    eventWrapper.attr('transform', `translate(${masterX}, ${masterY})`);\n    masterY = masterY + 10 + eventHeight;\n  }\n  // set masterY back to eventBeginY\n  masterY = eventBeginY;\n  return maxEventHeight;\n};\n\nexport default {\n  setConf: () => {\n    // no-op\n  },\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    } path  {\n      fill: ${options['cScale' + i]};\n    }\n    .section-${i - 1} text {\n     fill: ${options['cScaleLabel' + i]};\n    }\n    .node-icon-${i - 1} {\n      font-size: 40px;\n      color: ${options['cScaleLabel' + i]};\n    }\n    .section-edge-${i - 1}{\n      stroke: ${options['cScale' + i]};\n    }\n    .edge-depth-${i - 1}{\n      stroke-width: ${sw};\n    }\n    .section-${i - 1} line {\n      stroke: ${options['cScaleInv' + i]} ;\n      stroke-width: 3;\n    }\n\n    .lineWrapper line{\n      stroke: ${options['cScaleLabel' + i]} ;\n    }\n\n    .disabled, .disabled circle, .disabled text {\n      fill: lightgray;\n    }\n    .disabled text {\n      fill: #efefef;\n    }\n    `;\n  }\n  return 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  {\n    fill: ${options.git0};\n  }\n  .section-root text {\n    fill: ${options.gitBranchLabel0};\n  }\n  .icon-container {\n    height:100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n  .edge {\n    fill: none;\n  }\n  .eventWrapper  {\n   filter: brightness(120%);\n  }\n`;\nexport default getStyles;\n","// @ts-ignore: TODO Fix ts errors\nimport parser from './parser/timeline.jison';\nimport * as db from './timelineDb';\nimport renderer from './timelineRenderer';\nimport styles from './styles';\n\nexport const diagram = {\n  db,\n  renderer,\n  parser,\n  styles,\n};\n"],"names":["o","parser","lexer","_parseDirective","this","commonDb.clear","face","arc","d3arc","text","tasks","sections","diagram"],"mappings":"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AAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,GAAE,EAAE,CAAC,IAAG,EAAE,GAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,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,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,CAAC;AAAA,IACntB,gBAAgB,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,GA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"}