{"version":3,"file":"timeline-definition-274a7ee6.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((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n((?:(?!\\}\\%\\%).|\\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(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n[\\}] { this.popState(); }\n[^\\}]* 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<> 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(//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(//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+|
)/)\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\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 {\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 = {\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 = {\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 = {\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,\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,\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 = {\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":["parser","o","v","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer","sharedState","k","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","ch","lines","oldLines","n","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","currentSection","currentTaskId","sections","tasks","rawTasks","getCommonDb","commonDb","parseDirective","statement","context","type","_parseDirective","this","clear","commonDb.clear","addSection","txt","getSections","getTasks","allItemsProcessed","compileTasks","maxDepth","iterationCount","addTask","period","length","event","rawTask","addEvent","task","addTaskOrg","descr","newTask","compileTask","pos","allProcessed","timelineDb","MAX_SECTIONS","drawRect","elem","rectData","rectElem","drawFace","element","faceData","circleElement","face","smile","arc","d3arc","sad","ambivalent","drawCircle","circleData","drawText","textData","nText","textElem","span","drawLabel","txtObject","genPoints","x","y","width","height","cut","polygon","drawSection","section","conf","g","rect","getNoteRect","_drawTextCandidateFunc","taskCount","drawTask","center","maxHeight","drawBackgroundRect","bounds","getTextObj","byText","content","textAttrs","colour","text","_setTextAttrs","byTspan","taskFontSize","taskFontFamily","dy","byFo","body","toText","fromTextAttrsDict","key","initGraphics","graphics","wrap","select","words","word","line","lineHeight","tspan","j","drawNode","node","fullSection","nodeElem","bkgElem","bbox","fontSize","defaultBkg","getVirtualNodeHeight","svgDraw","draw","id","version","diagObj","getConfig","LEFT_MARGIN","_b","_a","log","securityLevel","sandboxElement","svg","title","maxSectionHeight","maxTaskHeight","depthY","sectionBeginY","masterX","masterY","sectionNumber","hasSections","sectionNode","sectionHeight","maxEventCount","maxEventLineLength","taskNode","taskHeight","maxEventLineLengthTemp","eventNode","tasksForSection","sectionNodeWrapper","drawTasks","box","setupGraphViewbox","_c","_d","diagram","sectionColor","isWithoutSections","taskWrapper","lineWrapper","lineLength","drawEvents","events","maxEventHeight","eventBeginY","eventWrapper","eventHeight","renderer","genSections","options","isDark","lighten","darken","sw","getStyles","styles","db"],"mappings":"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"}