summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/requirementDiagram-2a3b1d9b.js.map
blob: 5ec29bad4b155a3827999aec67218481220f927b (plain)
1
{"version":3,"file":"requirementDiagram-2a3b1d9b.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":["o","parser","lexer","commonClear","configApi.getConfig","conf","graphlib.Graph","requirements","elements","dagreLayout"],"mappings":"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E,GAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,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,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,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,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAA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"}