{"version":3,"file":"requirementDiagram-ab239e83.js","sources":["../src/diagrams/requirement/parser/requirementDiagram.jison","../src/diagrams/requirement/requirementDb.js","../src/diagrams/requirement/styles.js","../src/diagrams/requirement/requirementMarkers.js","../src/diagrams/requirement/requirementRenderer.js","../src/diagrams/requirement/requirementDiagram.ts"],"sourcesContent":["/** mermaid\n * https://knsv.github.io/mermaid\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n%lex\n%options case-insensitive\n\n%x string\n%x token\n%x unqString\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\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\"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(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip all whitespace */\n\\#[^\\n]* /* skip comments */\n\\%%[^\\n]* /* skip comments */\n<> return 'EOF';\n\n\"requirementDiagram\" return 'RD';\n\n\"{\" return 'STRUCT_START';\n\"}\" return 'STRUCT_STOP';\n\":\" return 'COLONSEP';\n\n\"id\" return 'ID';\n\"text\" return 'TEXT';\n\"risk\" return 'RISK';\n\"verifyMethod\" return 'VERIFYMTHD';\n\n\"requirement\" return 'REQUIREMENT';\n\"functionalRequirement\" return 'FUNCTIONAL_REQUIREMENT';\n\"interfaceRequirement\" return 'INTERFACE_REQUIREMENT';\n\"performanceRequirement\" return 'PERFORMANCE_REQUIREMENT';\n\"physicalRequirement\" return 'PHYSICAL_REQUIREMENT';\n\"designConstraint\" return 'DESIGN_CONSTRAINT';\n\n\"low\" return 'LOW_RISK';\n\"medium\" return 'MED_RISK';\n\"high\" return 'HIGH_RISK';\n\n\"analysis\" return 'VERIFY_ANALYSIS';\n\"demonstration\" return 'VERIFY_DEMONSTRATION';\n\"inspection\" return 'VERIFY_INSPECTION';\n\"test\" return 'VERIFY_TEST';\n\n\"element\" return 'ELEMENT';\n\n\"contains\" return 'CONTAINS';\n\"copies\" return 'COPIES';\n\"derives\" return 'DERIVES';\n\"satisfies\" return 'SATISFIES';\n\"verifies\" return 'VERIFIES';\n\"refines\" return 'REFINES';\n\"traces\" return 'TRACES';\n\n\"type\" return 'TYPE';\n\"docref\" return 'DOCREF';\n\n\"<-\" return 'END_ARROW_L';\n\"->\" {return 'END_ARROW_R';}\n\"-\" {return 'LINE';}\n\n[\"] { this.begin(\"string\"); }\n[\"] { this.popState(); }\n[^\"]* { return \"qString\"; }\n\n[\\w][^\\r\\n\\{\\<\\>\\-\\=]* { yytext = yytext.trim(); return 'unqString';}\n\n/lex\n\n%start start\n\n%% /* language grammar */\n\nstart\n : directive NEWLINE start\n | directive start\n | RD NEWLINE diagram EOF;\n\ndirective\n : openDirective typeDirective closeDirective\n | openDirective typeDirective ':' argDirective closeDirective\n | acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }\n | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }\n | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); }\n ;\nopenDirective\n : open_directive { yy.parseDirective('%%{', 'open_directive'); };\n\ntypeDirective\n : type_directive { yy.parseDirective($1, 'type_directive'); };\n\nargDirective\n : arg_directive { $1 = $1.trim().replace(/'/g, '\"'); yy.parseDirective($1, 'arg_directive'); };\n\ncloseDirective\n : close_directive { yy.parseDirective('}%%', 'close_directive', 'pie'); };\n\ndiagram\n : /* empty */ { $$ = [] }\n | requirementDef diagram\n | elementDef diagram\n | relationshipDef diagram\n | directive diagram\n | NEWLINE diagram;\n\nrequirementDef\n : requirementType requirementName STRUCT_START NEWLINE requirementBody\n { yy.addRequirement($2, $1) };\n\nrequirementBody\n : ID COLONSEP id NEWLINE requirementBody\n { yy.setNewReqId($3); }\n | TEXT COLONSEP text NEWLINE requirementBody\n { yy.setNewReqText($3); }\n | RISK COLONSEP riskLevel NEWLINE requirementBody\n { yy.setNewReqRisk($3); }\n | VERIFYMTHD COLONSEP verifyType NEWLINE requirementBody\n { yy.setNewReqVerifyMethod($3); }\n | NEWLINE requirementBody\n | STRUCT_STOP;\n\nrequirementType\n : REQUIREMENT\n { $$=yy.RequirementType.REQUIREMENT;}\n | FUNCTIONAL_REQUIREMENT\n { $$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;}\n | INTERFACE_REQUIREMENT\n { $$=yy.RequirementType.INTERFACE_REQUIREMENT;}\n | PERFORMANCE_REQUIREMENT\n { $$=yy.RequirementType.PERFORMANCE_REQUIREMENT;}\n | PHYSICAL_REQUIREMENT\n { $$=yy.RequirementType.PHYSICAL_REQUIREMENT;}\n | DESIGN_CONSTRAINT\n { $$=yy.RequirementType.DESIGN_CONSTRAINT;};\n\nriskLevel\n : LOW_RISK { $$=yy.RiskLevel.LOW_RISK;}\n | MED_RISK { $$=yy.RiskLevel.MED_RISK;}\n | HIGH_RISK { $$=yy.RiskLevel.HIGH_RISK;};\n\nverifyType\n : VERIFY_ANALYSIS\n { $$=yy.VerifyType.VERIFY_ANALYSIS;}\n | VERIFY_DEMONSTRATION\n { $$=yy.VerifyType.VERIFY_DEMONSTRATION;}\n | VERIFY_INSPECTION\n { $$=yy.VerifyType.VERIFY_INSPECTION;}\n | VERIFY_TEST\n { $$=yy.VerifyType.VERIFY_TEST;};\n\nelementDef\n : ELEMENT elementName STRUCT_START NEWLINE elementBody\n { yy.addElement($2) };\n\nelementBody\n : TYPE COLONSEP type NEWLINE elementBody\n { yy.setNewElementType($3); }\n | DOCREF COLONSEP ref NEWLINE elementBody\n { yy.setNewElementDocRef($3); }\n | NEWLINE elementBody\n | STRUCT_STOP;\n\nrelationshipDef\n : id END_ARROW_L relationship LINE id\n { yy.addRelationship($3, $5, $1) }\n | id LINE relationship END_ARROW_R id\n { yy.addRelationship($3, $1, $5) };\n\nrelationship\n : CONTAINS\n { $$=yy.Relationships.CONTAINS;}\n | COPIES\n { $$=yy.Relationships.COPIES;}\n | DERIVES\n { $$=yy.Relationships.DERIVES;}\n | SATISFIES\n { $$=yy.Relationships.SATISFIES;}\n | VERIFIES\n { $$=yy.Relationships.VERIFIES;}\n | REFINES\n { $$=yy.Relationships.REFINES;}\n | TRACES\n { $$=yy.Relationships.TRACES;};\n\n\nrequirementName: unqString | qString;\nid : unqString | qString;\ntext : unqString | qString;\nelementName : unqString | qString;\ntype : unqString | qString;\nref : unqString | qString;\n\n%%\n","import * as configApi from '../../config';\nimport { log } from '../../logger';\nimport mermaidAPI from '../../mermaidAPI';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet relations = [];\nlet latestRequirement = {};\nlet requirements = {};\nlet latestElement = {};\nlet elements = {};\n\nconst RequirementType = {\n REQUIREMENT: 'Requirement',\n FUNCTIONAL_REQUIREMENT: 'Functional Requirement',\n INTERFACE_REQUIREMENT: 'Interface Requirement',\n PERFORMANCE_REQUIREMENT: 'Performance Requirement',\n PHYSICAL_REQUIREMENT: 'Physical Requirement',\n DESIGN_CONSTRAINT: 'Design Constraint',\n};\n\nconst RiskLevel = {\n LOW_RISK: 'Low',\n MED_RISK: 'Medium',\n HIGH_RISK: 'High',\n};\n\nconst VerifyType = {\n VERIFY_ANALYSIS: 'Analysis',\n VERIFY_DEMONSTRATION: 'Demonstration',\n VERIFY_INSPECTION: 'Inspection',\n VERIFY_TEST: 'Test',\n};\n\nconst Relationships = {\n CONTAINS: 'contains',\n COPIES: 'copies',\n DERIVES: 'derives',\n SATISFIES: 'satisfies',\n VERIFIES: 'verifies',\n REFINES: 'refines',\n TRACES: 'traces',\n};\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst addRequirement = (name, type) => {\n if (requirements[name] === undefined) {\n requirements[name] = {\n name,\n type,\n\n id: latestRequirement.id,\n text: latestRequirement.text,\n risk: latestRequirement.risk,\n verifyMethod: latestRequirement.verifyMethod,\n };\n }\n latestRequirement = {};\n\n return requirements[name];\n};\n\nconst getRequirements = () => requirements;\n\nconst setNewReqId = (id) => {\n if (latestRequirement !== undefined) {\n latestRequirement.id = id;\n }\n};\n\nconst setNewReqText = (text) => {\n if (latestRequirement !== undefined) {\n latestRequirement.text = text;\n }\n};\n\nconst setNewReqRisk = (risk) => {\n if (latestRequirement !== undefined) {\n latestRequirement.risk = risk;\n }\n};\n\nconst setNewReqVerifyMethod = (verifyMethod) => {\n if (latestRequirement !== undefined) {\n latestRequirement.verifyMethod = verifyMethod;\n }\n};\n\nconst addElement = (name) => {\n if (elements[name] === undefined) {\n elements[name] = {\n name,\n\n type: latestElement.type,\n docRef: latestElement.docRef,\n };\n log.info('Added new requirement: ', name);\n }\n latestElement = {};\n\n return elements[name];\n};\n\nconst getElements = () => elements;\n\nconst setNewElementType = (type) => {\n if (latestElement !== undefined) {\n latestElement.type = type;\n }\n};\n\nconst setNewElementDocRef = (docRef) => {\n if (latestElement !== undefined) {\n latestElement.docRef = docRef;\n }\n};\n\nconst addRelationship = (type, src, dst) => {\n relations.push({\n type,\n src,\n dst,\n });\n};\n\nconst getRelationships = () => relations;\n\nconst clear = () => {\n relations = [];\n latestRequirement = {};\n requirements = {};\n latestElement = {};\n elements = {};\n commonClear();\n};\n\nexport default {\n RequirementType,\n RiskLevel,\n VerifyType,\n Relationships,\n\n parseDirective,\n getConfig: () => configApi.getConfig().req,\n\n addRequirement,\n getRequirements,\n setNewReqId,\n setNewReqText,\n setNewReqRisk,\n setNewReqVerifyMethod,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n\n addElement,\n getElements,\n setNewElementType,\n setNewElementDocRef,\n\n addRelationship,\n getRelationships,\n\n clear,\n};\n","const getStyles = (options) => `\n\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\n\n marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 100%;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 100%;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n\n`;\n// fill', conf.rect_fill)\nexport default getStyles;\n","const ReqMarkers = {\n CONTAINS: 'contains',\n ARROW: 'arrow',\n};\n\nconst insertLineEndings = (parentNode, conf) => {\n let containsNode = parentNode\n .append('defs')\n .append('marker')\n .attr('id', ReqMarkers.CONTAINS + '_line_ending')\n .attr('refX', 0)\n .attr('refY', conf.line_height / 2)\n .attr('markerWidth', conf.line_height)\n .attr('markerHeight', conf.line_height)\n .attr('orient', 'auto')\n .append('g');\n\n containsNode\n .append('circle')\n .attr('cx', conf.line_height / 2)\n .attr('cy', conf.line_height / 2)\n .attr('r', conf.line_height / 2)\n // .attr('stroke', conf.rect_border_color)\n // .attr('stroke-width', 1)\n .attr('fill', 'none');\n\n containsNode\n .append('line')\n .attr('x1', 0)\n .attr('x2', conf.line_height)\n .attr('y1', conf.line_height / 2)\n .attr('y2', conf.line_height / 2)\n // .attr('stroke', conf.rect_border_color)\n .attr('stroke-width', 1);\n\n containsNode\n .append('line')\n .attr('y1', 0)\n .attr('y2', conf.line_height)\n .attr('x1', conf.line_height / 2)\n .attr('x2', conf.line_height / 2)\n // .attr('stroke', conf.rect_border_color)\n .attr('stroke-width', 1);\n\n parentNode\n .append('defs')\n .append('marker')\n .attr('id', ReqMarkers.ARROW + '_line_ending')\n .attr('refX', conf.line_height)\n .attr('refY', 0.5 * conf.line_height)\n .attr('markerWidth', conf.line_height)\n .attr('markerHeight', conf.line_height)\n .attr('orient', 'auto')\n .append('path')\n .attr(\n 'd',\n `M0,0\n L${conf.line_height},${conf.line_height / 2}\n M${conf.line_height},${conf.line_height / 2}\n L0,${conf.line_height}`\n )\n .attr('stroke-width', 1);\n // .attr('stroke', conf.rect_border_color);\n};\n\nexport default {\n ReqMarkers,\n insertLineEndings,\n};\n","import { line, select } from 'd3';\nimport { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger';\nimport { configureSvgSize } from '../../setupGraphViewbox';\nimport common from '../common/common';\nimport markers from './requirementMarkers';\nimport { getConfig } from '../../config';\n\nlet conf = {};\nlet relCnt = 0;\n\nconst newRectNode = (parentNode, id) => {\n return parentNode\n .insert('rect', '#' + id)\n .attr('class', 'req reqBox')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', conf.rect_min_width + 'px')\n .attr('height', conf.rect_min_height + 'px');\n};\n\nconst newTitleNode = (parentNode, id, txts) => {\n let x = conf.rect_min_width / 2;\n\n let title = parentNode\n .append('text')\n .attr('class', 'req reqLabel reqTitle')\n .attr('id', id)\n .attr('x', x)\n .attr('y', conf.rect_padding)\n .attr('dominant-baseline', 'hanging');\n // .attr(\n // 'style',\n // 'font-family: ' + configApi.getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n // )\n let i = 0;\n txts.forEach((textStr) => {\n if (i == 0) {\n title\n .append('tspan')\n .attr('text-anchor', 'middle')\n .attr('x', conf.rect_min_width / 2)\n .attr('dy', 0)\n .text(textStr);\n } else {\n title\n .append('tspan')\n .attr('text-anchor', 'middle')\n .attr('x', conf.rect_min_width / 2)\n .attr('dy', conf.line_height * 0.75)\n .text(textStr);\n }\n i++;\n });\n\n let yPadding = 1.5 * conf.rect_padding;\n let linePadding = i * conf.line_height * 0.75;\n let totalY = yPadding + linePadding;\n\n parentNode\n .append('line')\n .attr('class', 'req-title-line')\n .attr('x1', '0')\n .attr('x2', conf.rect_min_width)\n .attr('y1', totalY)\n .attr('y2', totalY);\n\n return {\n titleNode: title,\n y: totalY,\n };\n};\n\nconst newBodyNode = (parentNode, id, txts, yStart) => {\n let body = parentNode\n .append('text')\n .attr('class', 'req reqLabel')\n .attr('id', id)\n .attr('x', conf.rect_padding)\n .attr('y', yStart)\n .attr('dominant-baseline', 'hanging');\n // .attr(\n // 'style',\n // 'font-family: ' + configApi.getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n // );\n\n let currentRow = 0;\n const charLimit = 30;\n let wrappedTxts = [];\n txts.forEach((textStr) => {\n let currentTextLen = textStr.length;\n while (currentTextLen > charLimit && currentRow < 3) {\n let firstPart = textStr.substring(0, charLimit);\n textStr = textStr.substring(charLimit, textStr.length);\n currentTextLen = textStr.length;\n wrappedTxts[wrappedTxts.length] = firstPart;\n currentRow++;\n }\n if (currentRow == 3) {\n let lastStr = wrappedTxts[wrappedTxts.length - 1];\n wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + '...';\n } else {\n wrappedTxts[wrappedTxts.length] = textStr;\n }\n currentRow = 0;\n });\n\n wrappedTxts.forEach((textStr) => {\n body.append('tspan').attr('x', conf.rect_padding).attr('dy', conf.line_height).text(textStr);\n });\n\n return body;\n};\n\nconst addEdgeLabel = (parentNode, svgPath, conf, txt) => {\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n relCnt++;\n\n const labelNode = parentNode\n .append('text')\n .attr('class', 'req relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n // .attr('style', 'font-family: ' + conf.fontFamily + '; font-size: ' + conf.fontSize + 'px')\n .text(txt);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n parentNode\n .insert('rect', '#' + labelId)\n .attr('class', 'req reqLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n};\n\nconst drawRelationshipFromLayout = function (svg, rel, g, insert, diagObj) {\n // Find the edge relating to this relationship\n const edge = g.edge(elementString(rel.src), elementString(rel.dst));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n });\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('fill', 'none');\n\n if (rel.type == diagObj.db.Relationships.CONTAINS) {\n svgPath.attr(\n 'marker-start',\n 'url(' + common.getUrl(conf.arrowMarkerAbsolute) + '#' + rel.type + '_line_ending' + ')'\n );\n } else {\n svgPath.attr('stroke-dasharray', '10,7');\n svgPath.attr(\n 'marker-end',\n 'url(' +\n common.getUrl(conf.arrowMarkerAbsolute) +\n '#' +\n markers.ReqMarkers.ARROW +\n '_line_ending' +\n ')'\n );\n }\n\n addEdgeLabel(svg, svgPath, conf, `<<${rel.type}>>`);\n\n return;\n};\n\nexport const drawReqs = (reqs, graph, svgNode) => {\n Object.keys(reqs).forEach((reqName) => {\n let req = reqs[reqName];\n reqName = elementString(reqName);\n log.info('Added new requirement: ', reqName);\n\n const groupNode = svgNode.append('g').attr('id', reqName);\n const textId = 'req-' + reqName;\n const rectNode = newRectNode(groupNode, textId);\n\n let nodes = [];\n\n let titleNodeInfo = newTitleNode(groupNode, reqName + '_title', [\n `<<${req.type}>>`,\n `${req.name}`,\n ]);\n\n nodes.push(titleNodeInfo.titleNode);\n\n let bodyNode = newBodyNode(\n groupNode,\n reqName + '_body',\n [\n `Id: ${req.id}`,\n `Text: ${req.text}`,\n `Risk: ${req.risk}`,\n `Verification: ${req.verifyMethod}`,\n ],\n titleNodeInfo.y\n );\n\n nodes.push(bodyNode);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(reqName, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: reqName,\n });\n });\n};\n\nexport const drawElements = (els, graph, svgNode) => {\n Object.keys(els).forEach((elName) => {\n let el = els[elName];\n const id = elementString(elName);\n\n const groupNode = svgNode.append('g').attr('id', id);\n const textId = 'element-' + id;\n const rectNode = newRectNode(groupNode, textId);\n\n let nodes = [];\n\n let titleNodeInfo = newTitleNode(groupNode, textId + '_title', [`<>`, `${elName}`]);\n\n nodes.push(titleNodeInfo.titleNode);\n\n let bodyNode = newBodyNode(\n groupNode,\n textId + '_body',\n [`Type: ${el.type || 'Not Specified'}`, `Doc Ref: ${el.docRef || 'None'}`],\n titleNodeInfo.y\n );\n\n nodes.push(bodyNode);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id,\n });\n });\n};\n\nconst addRelationships = (relationships, g) => {\n relationships.forEach(function (r) {\n let src = elementString(r.src);\n let dst = elementString(r.dst);\n g.setEdge(src, dst, { relationship: r });\n });\n return relationships;\n};\n\nconst adjustEntities = function (svgNode, graph) {\n graph.nodes().forEach(function (v) {\n if (v !== undefined && graph.node(v) !== undefined) {\n svgNode.select('#' + v);\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst elementString = (str) => {\n return str.replace(/\\s/g, '').replace(/\\./g, '_');\n};\n\nexport const draw = (text, id, _version, diagObj) => {\n conf = getConfig().requirement;\n diagObj.db.clear();\n diagObj.parser.parse(text);\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 ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n const svg = root.select(`[id='${id}']`);\n markers.insertLineEndings(svg, conf);\n\n const g = new graphlib.Graph({\n multigraph: false,\n compound: false,\n directed: true,\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n let requirements = diagObj.db.getRequirements();\n let elements = diagObj.db.getElements();\n let relationships = diagObj.db.getRelationships();\n\n drawReqs(requirements, g, svg);\n drawElements(elements, g, svg);\n addRelationships(relationships, g);\n dagreLayout(g);\n adjustEntities(svg, g);\n\n relationships.forEach(function (rel) {\n drawRelationshipFromLayout(svg, rel, g, id, diagObj);\n });\n\n const padding = conf.rect_padding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\n\nexport default {\n draw,\n};\n","import { DiagramDefinition } from '../../diagram-api/types';\n// @ts-ignore: TODO Fix ts errors\nimport parser from './parser/requirementDiagram';\nimport db from './requirementDb';\nimport styles from './styles';\nimport renderer from './requirementRenderer';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n};\n"],"names":["parser","o","k","v","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer","sharedState","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","relations","latestRequirement","requirements","latestElement","elements","RequirementType","RiskLevel","VerifyType","Relationships","parseDirective","statement","context","type","mermaidAPI","addRequirement","name","getRequirements","setNewReqId","id","setNewReqText","text","setNewReqRisk","risk","setNewReqVerifyMethod","verifyMethod","addElement","log","getElements","setNewElementType","setNewElementDocRef","docRef","addRelationship","src","dst","getRelationships","clear","commonClear","db","configApi.getConfig","setAccTitle","getAccTitle","setAccDescription","getAccDescription","getStyles","options","styles","ReqMarkers","insertLineEndings","parentNode","conf","containsNode","markers","relCnt","newRectNode","newTitleNode","txts","x","title","textStr","yPadding","linePadding","totalY","newBodyNode","yStart","body","currentRow","charLimit","wrappedTxts","currentTextLen","firstPart","lastStr","addEdgeLabel","svgPath","txt","labelPoint","labelId","labelBBox","drawRelationshipFromLayout","svg","rel","g","insert","diagObj","edge","elementString","lineFunction","line","d","common","drawReqs","reqs","graph","svgNode","reqName","req","groupNode","textId","rectNode","titleNodeInfo","rectBBox","drawElements","els","elName","el","addRelationships","relationships","adjustEntities","draw","_version","getConfig","securityLevel","sandboxElement","select","graphlib.Graph","dagreLayout","padding","svgBounds","width","height","configureSvgSize","renderer","diagram"],"mappings":"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"}