summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/requirementDiagram-ab239e83.js.map
blob: 23ee73c128f90cd2fb32501f8a7a9d4a2b29dc0b (plain)
1
{"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<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\"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(\\r?\\n)+                               return 'NEWLINE';\n\\s+                                    /* skip all whitespace */\n\\#[^\\n]*                               /* skip comments */\n\\%%[^\\n]*                              /* skip comments */\n<<EOF>>                               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<string>[\"]         { this.popState(); }\n<string>[^\"]*       { 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', [`<<Element>>`, `${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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"}