{
  "version": 3,
  "sources": ["../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/arrows.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/label/add-label.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/create-clusters.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/create-nodes.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/position-clusters.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/position-nodes.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/shapes.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.10/node_modules/dagre-d3-es/src/dagre-js/render.js", "../../../src/diagrams/flowchart/flowChartShapes.js", "../../../src/diagrams/flowchart/flowRenderer.js", "../../../src/diagrams/flowchart/flowDiagram.ts"],
  "sourcesContent": ["import * as util from './util.js';\n\nexport { arrows, setArrows };\n\nvar arrows = {\n  normal,\n  vee,\n  undirected,\n};\n\nfunction setArrows(value) {\n  arrows = value;\n}\n\nfunction normal(parent, id, edge, type) {\n  var marker = parent\n    .append('marker')\n    .attr('id', id)\n    .attr('viewBox', '0 0 10 10')\n    .attr('refX', 9)\n    .attr('refY', 5)\n    .attr('markerUnits', 'strokeWidth')\n    .attr('markerWidth', 8)\n    .attr('markerHeight', 6)\n    .attr('orient', 'auto');\n\n  var path = marker\n    .append('path')\n    .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n    .style('stroke-width', 1)\n    .style('stroke-dasharray', '1,0');\n  util.applyStyle(path, edge[type + 'Style']);\n  if (edge[type + 'Class']) {\n    path.attr('class', edge[type + 'Class']);\n  }\n}\n\nfunction vee(parent, id, edge, type) {\n  var marker = parent\n    .append('marker')\n    .attr('id', id)\n    .attr('viewBox', '0 0 10 10')\n    .attr('refX', 9)\n    .attr('refY', 5)\n    .attr('markerUnits', 'strokeWidth')\n    .attr('markerWidth', 8)\n    .attr('markerHeight', 6)\n    .attr('orient', 'auto');\n\n  var path = marker\n    .append('path')\n    .attr('d', 'M 0 0 L 10 5 L 0 10 L 4 5 z')\n    .style('stroke-width', 1)\n    .style('stroke-dasharray', '1,0');\n  util.applyStyle(path, edge[type + 'Style']);\n  if (edge[type + 'Class']) {\n    path.attr('class', edge[type + 'Class']);\n  }\n}\n\nfunction undirected(parent, id, edge, type) {\n  var marker = parent\n    .append('marker')\n    .attr('id', id)\n    .attr('viewBox', '0 0 10 10')\n    .attr('refX', 9)\n    .attr('refY', 5)\n    .attr('markerUnits', 'strokeWidth')\n    .attr('markerWidth', 8)\n    .attr('markerHeight', 6)\n    .attr('orient', 'auto');\n\n  var path = marker\n    .append('path')\n    .attr('d', 'M 0 5 L 10 5')\n    .style('stroke-width', 1)\n    .style('stroke-dasharray', '1,0');\n  util.applyStyle(path, edge[type + 'Style']);\n  if (edge[type + 'Class']) {\n    path.attr('class', edge[type + 'Class']);\n  }\n}\n", "import * as util from '../util.js';\n\nexport { addSVGLabel };\n\nfunction addSVGLabel(root, node) {\n  var domNode = root;\n\n  domNode.node().appendChild(node.label);\n\n  util.applyStyle(domNode, node.labelStyle);\n\n  return domNode;\n}\n", "import * as util from '../util.js';\n\nexport { addTextLabel };\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n  var domNode = root.append('text');\n\n  var lines = processEscapeSequences(node.label).split('\\n');\n  for (var i = 0; i < lines.length; i++) {\n    domNode\n      .append('tspan')\n      .attr('xml:space', 'preserve')\n      .attr('dy', '1em')\n      .attr('x', '1')\n      .text(lines[i]);\n  }\n\n  util.applyStyle(domNode, node.labelStyle);\n\n  return domNode;\n}\n\nfunction processEscapeSequences(text) {\n  var newText = '';\n  var escaped = false;\n  var ch;\n  for (var i = 0; i < text.length; ++i) {\n    ch = text[i];\n    if (escaped) {\n      switch (ch) {\n        case 'n':\n          newText += '\\n';\n          break;\n        default:\n          newText += ch;\n      }\n      escaped = false;\n    } else if (ch === '\\\\') {\n      escaped = true;\n    } else {\n      newText += ch;\n    }\n  }\n  return newText;\n}\n", "import { addHtmlLabel } from './add-html-label.js';\nimport { addSVGLabel } from './add-svg-label.js';\nimport { addTextLabel } from './add-text-label.js';\n\nexport { addLabel };\n\nfunction addLabel(root, node, location) {\n  var label = node.label;\n  var labelSvg = root.append('g');\n\n  // Allow the label to be a string, a function that returns a DOM element, or\n  // a DOM element itself.\n  if (node.labelType === 'svg') {\n    addSVGLabel(labelSvg, node);\n  } else if (typeof label !== 'string' || node.labelType === 'html') {\n    addHtmlLabel(labelSvg, node);\n  } else {\n    addTextLabel(labelSvg, node);\n  }\n\n  var labelBBox = labelSvg.node().getBBox();\n  var y;\n  switch (location) {\n    case 'top':\n      y = -node.height / 2;\n      break;\n    case 'bottom':\n      y = node.height / 2 - labelBBox.height;\n      break;\n    default:\n      y = -labelBBox.height / 2;\n  }\n  labelSvg.attr('transform', 'translate(' + -labelBBox.width / 2 + ',' + y + ')');\n\n  return labelSvg;\n}\n", "import * as d3 from 'd3';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createClusters, setCreateClusters };\n\nvar createClusters = function (selection, g) {\n  var clusters = g.nodes().filter(function (v) {\n    return util.isSubgraph(g, v);\n  });\n  var svgClusters = selection.selectAll('g.cluster').data(clusters, function (v) {\n    return v;\n  });\n\n  util.applyTransition(svgClusters.exit(), g).style('opacity', 0).remove();\n\n  var enterSelection = svgClusters\n    .enter()\n    .append('g')\n    .attr('class', 'cluster')\n    .attr('id', function (v) {\n      var node = g.node(v);\n      return node.id;\n    })\n    .style('opacity', 0)\n    .each(function (v) {\n      var node = g.node(v);\n      var thisGroup = d3.select(this);\n      d3.select(this).append('rect');\n      var labelGroup = thisGroup.append('g').attr('class', 'label');\n      addLabel(labelGroup, node, node.clusterLabelPos);\n    });\n\n  svgClusters = svgClusters.merge(enterSelection);\n\n  svgClusters = util.applyTransition(svgClusters, g).style('opacity', 1);\n\n  svgClusters.selectAll('rect').each(function (c) {\n    var node = g.node(c);\n    var domCluster = d3.select(this);\n    util.applyStyle(domCluster, node.style);\n  });\n\n  return svgClusters;\n};\n\nfunction setCreateClusters(value) {\n  createClusters = value;\n}\n", "import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createEdgeLabels, setCreateEdgeLabels };\n\nlet createEdgeLabels = function (selection, g) {\n  var svgEdgeLabels = selection\n    .selectAll('g.edgeLabel')\n    .data(g.edges(), function (e) {\n      return util.edgeToId(e);\n    })\n    .classed('update', true);\n\n  svgEdgeLabels.exit().remove();\n  svgEdgeLabels.enter().append('g').classed('edgeLabel', true).style('opacity', 0);\n\n  svgEdgeLabels = selection.selectAll('g.edgeLabel');\n\n  svgEdgeLabels.each(function (e) {\n    var root = d3.select(this);\n    root.select('.label').remove();\n    var edge = g.edge(e);\n    var label = addLabel(root, g.edge(e), 0).classed('label', true);\n    var bbox = label.node().getBBox();\n\n    if (edge.labelId) {\n      label.attr('id', edge.labelId);\n    }\n    if (!_.has(edge, 'width')) {\n      edge.width = bbox.width;\n    }\n    if (!_.has(edge, 'height')) {\n      edge.height = bbox.height;\n    }\n  });\n\n  var exitSelection;\n\n  if (svgEdgeLabels.exit) {\n    exitSelection = svgEdgeLabels.exit();\n  } else {\n    exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n  }\n\n  util.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n  return svgEdgeLabels;\n};\n\nfunction setCreateEdgeLabels(value) {\n  createEdgeLabels = value;\n}\n", "export { intersectNode };\n\nfunction intersectNode(node, point) {\n  return node.intersect(point);\n}\n", "import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { intersectNode } from './intersect/intersect-node.js';\nimport * as util from './util.js';\n\nexport { createEdgePaths, setCreateEdgePaths };\n\nvar createEdgePaths = function (selection, g, arrows) {\n  var previousPaths = selection\n    .selectAll('g.edgePath')\n    .data(g.edges(), function (e) {\n      return util.edgeToId(e);\n    })\n    .classed('update', true);\n\n  var newPaths = enter(previousPaths, g);\n  exit(previousPaths, g);\n\n  var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n  util.applyTransition(svgPaths, g).style('opacity', 1);\n\n  // Save DOM element in the path group, and set ID and class\n  svgPaths.each(function (e) {\n    var domEdge = d3.select(this);\n    var edge = g.edge(e);\n    edge.elem = this;\n\n    if (edge.id) {\n      domEdge.attr('id', edge.id);\n    }\n\n    util.applyClass(\n      domEdge,\n      edge['class'],\n      (domEdge.classed('update') ? 'update ' : '') + 'edgePath'\n    );\n  });\n\n  svgPaths.selectAll('path.path').each(function (e) {\n    var edge = g.edge(e);\n    edge.arrowheadId = _.uniqueId('arrowhead');\n\n    var domEdge = d3\n      .select(this)\n      .attr('marker-end', function () {\n        return 'url(' + makeFragmentRef(location.href, edge.arrowheadId) + ')';\n      })\n      .style('fill', 'none');\n\n    util.applyTransition(domEdge, g).attr('d', function (e) {\n      return calcPoints(g, e);\n    });\n\n    util.applyStyle(domEdge, edge.style);\n  });\n\n  svgPaths.selectAll('defs *').remove();\n  svgPaths.selectAll('defs').each(function (e) {\n    var edge = g.edge(e);\n    var arrowhead = arrows[edge.arrowhead];\n    arrowhead(d3.select(this), edge.arrowheadId, edge, 'arrowhead');\n  });\n\n  return svgPaths;\n};\n\nfunction setCreateEdgePaths(value) {\n  createEdgePaths = value;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n  var baseUrl = url.split('#')[0];\n  return baseUrl + '#' + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n  var edge = g.edge(e);\n  var tail = g.node(e.v);\n  var head = g.node(e.w);\n  var points = edge.points.slice(1, edge.points.length - 1);\n  points.unshift(intersectNode(tail, points[0]));\n  points.push(intersectNode(head, points[points.length - 1]));\n\n  return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n  // @ts-expect-error\n  var line = (d3.line || d3.svg.line)()\n    .x(function (d) {\n      return d.x;\n    })\n    .y(function (d) {\n      return d.y;\n    });\n\n  (line.curve || line.interpolate)(edge.curve);\n\n  return line(points);\n}\n\nfunction getCoords(elem) {\n  var bbox = elem.getBBox();\n  var matrix = elem.ownerSVGElement\n    .getScreenCTM()\n    .inverse()\n    .multiply(elem.getScreenCTM())\n    .translate(bbox.width / 2, bbox.height / 2);\n  return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n  var svgPathsEnter = svgPaths.enter().append('g').attr('class', 'edgePath').style('opacity', 0);\n  svgPathsEnter\n    .append('path')\n    .attr('class', 'path')\n    .attr('d', function (e) {\n      var edge = g.edge(e);\n      var sourceElem = g.node(e.v).elem;\n      var points = _.range(edge.points.length).map(function () {\n        return getCoords(sourceElem);\n      });\n      return createLine(edge, points);\n    });\n  svgPathsEnter.append('defs');\n  return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n  var svgPathExit = svgPaths.exit();\n  util.applyTransition(svgPathExit, g).style('opacity', 0).remove();\n}\n", "import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createNodes, setCreateNodes };\n\nvar createNodes = function (selection, g, shapes) {\n  var simpleNodes = g.nodes().filter(function (v) {\n    return !util.isSubgraph(g, v);\n  });\n  var svgNodes = selection\n    .selectAll('g.node')\n    .data(simpleNodes, function (v) {\n      return v;\n    })\n    .classed('update', true);\n\n  svgNodes.exit().remove();\n\n  svgNodes.enter().append('g').attr('class', 'node').style('opacity', 0);\n\n  svgNodes = selection.selectAll('g.node');\n\n  svgNodes.each(function (v) {\n    var node = g.node(v);\n    var thisGroup = d3.select(this);\n    util.applyClass(\n      thisGroup,\n      node['class'],\n      (thisGroup.classed('update') ? 'update ' : '') + 'node'\n    );\n\n    thisGroup.select('g.label').remove();\n    var labelGroup = thisGroup.append('g').attr('class', 'label');\n    var labelDom = addLabel(labelGroup, node);\n    var shape = shapes[node.shape];\n    var bbox = _.pick(labelDom.node().getBBox(), 'width', 'height');\n\n    node.elem = this;\n\n    if (node.id) {\n      thisGroup.attr('id', node.id);\n    }\n    if (node.labelId) {\n      labelGroup.attr('id', node.labelId);\n    }\n\n    if (_.has(node, 'width')) {\n      bbox.width = node.width;\n    }\n    if (_.has(node, 'height')) {\n      bbox.height = node.height;\n    }\n\n    bbox.width += node.paddingLeft + node.paddingRight;\n    bbox.height += node.paddingTop + node.paddingBottom;\n    labelGroup.attr(\n      'transform',\n      'translate(' +\n        (node.paddingLeft - node.paddingRight) / 2 +\n        ',' +\n        (node.paddingTop - node.paddingBottom) / 2 +\n        ')'\n    );\n\n    var root = d3.select(this);\n    root.select('.label-container').remove();\n    var shapeSvg = shape(root, bbox, node).classed('label-container', true);\n    util.applyStyle(shapeSvg, node.style);\n\n    var shapeBBox = shapeSvg.node().getBBox();\n    node.width = shapeBBox.width;\n    node.height = shapeBBox.height;\n  });\n\n  var exitSelection;\n\n  if (svgNodes.exit) {\n    exitSelection = svgNodes.exit();\n  } else {\n    exitSelection = svgNodes.selectAll(null); // empty selection\n  }\n\n  util.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n  return svgNodes;\n};\n\nfunction setCreateNodes(value) {\n  createNodes = value;\n}\n", "import * as d3 from 'd3';\nimport * as util from './util.js';\n\nexport { positionClusters };\n\nfunction positionClusters(selection, g) {\n  var created = selection.filter(function () {\n    return !d3.select(this).classed('update');\n  });\n\n  function translate(v) {\n    var node = g.node(v);\n    return 'translate(' + node.x + ',' + node.y + ')';\n  }\n\n  created.attr('transform', translate);\n\n  util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n\n  util\n    .applyTransition(created.selectAll('rect'), g)\n    .attr('width', function (v) {\n      return g.node(v).width;\n    })\n    .attr('height', function (v) {\n      return g.node(v).height;\n    })\n    .attr('x', function (v) {\n      var node = g.node(v);\n      return -node.width / 2;\n    })\n    .attr('y', function (v) {\n      var node = g.node(v);\n      return -node.height / 2;\n    });\n}\n", "import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { positionEdgeLabels };\n\nfunction positionEdgeLabels(selection, g) {\n  var created = selection.filter(function () {\n    return !d3.select(this).classed('update');\n  });\n\n  function translate(e) {\n    var edge = g.edge(e);\n    return _.has(edge, 'x') ? 'translate(' + edge.x + ',' + edge.y + ')' : '';\n  }\n\n  created.attr('transform', translate);\n\n  util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n", "import * as d3 from 'd3';\nimport * as util from './util.js';\n\nexport { positionNodes };\n\nfunction positionNodes(selection, g) {\n  var created = selection.filter(function () {\n    return !d3.select(this).classed('update');\n  });\n\n  function translate(v) {\n    var node = g.node(v);\n    return 'translate(' + node.x + ',' + node.y + ')';\n  }\n\n  created.attr('transform', translate);\n\n  util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n", "export { intersectEllipse };\n\nfunction intersectEllipse(node, rx, ry, point) {\n  // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n  var cx = node.x;\n  var cy = node.y;\n\n  var px = cx - point.x;\n  var py = cy - point.y;\n\n  var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n  var dx = Math.abs((rx * ry * px) / det);\n  if (point.x < cx) {\n    dx = -dx;\n  }\n  var dy = Math.abs((rx * ry * py) / det);\n  if (point.y < cy) {\n    dy = -dy;\n  }\n\n  return { x: cx + dx, y: cy + dy };\n}\n", "import { intersectEllipse } from './intersect-ellipse.js';\n\nexport { intersectCircle };\n\nfunction intersectCircle(node, rx, point) {\n  return intersectEllipse(node, rx, rx, point);\n}\n", "export { intersectLine };\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n  // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n  // p7 and p473.\n\n  var a1, a2, b1, b2, c1, c2;\n  var r1, r2, r3, r4;\n  var denom, offset, num;\n  var x, y;\n\n  // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n  // b1 y + c1 = 0.\n  a1 = p2.y - p1.y;\n  b1 = p1.x - p2.x;\n  c1 = p2.x * p1.y - p1.x * p2.y;\n\n  // Compute r3 and r4.\n  r3 = a1 * q1.x + b1 * q1.y + c1;\n  r4 = a1 * q2.x + b1 * q2.y + c1;\n\n  // Check signs of r3 and r4. If both point 3 and point 4 lie on\n  // same side of line 1, the line segments do not intersect.\n  if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n    return /*DONT_INTERSECT*/;\n  }\n\n  // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n  a2 = q2.y - q1.y;\n  b2 = q1.x - q2.x;\n  c2 = q2.x * q1.y - q1.x * q2.y;\n\n  // Compute r1 and r2\n  r1 = a2 * p1.x + b2 * p1.y + c2;\n  r2 = a2 * p2.x + b2 * p2.y + c2;\n\n  // Check signs of r1 and r2. If both point 1 and point 2 lie\n  // on same side of second line segment, the line segments do\n  // not intersect.\n  if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n    return /*DONT_INTERSECT*/;\n  }\n\n  // Line segments intersect: compute intersection point.\n  denom = a1 * b2 - a2 * b1;\n  if (denom === 0) {\n    return /*COLLINEAR*/;\n  }\n\n  offset = Math.abs(denom / 2);\n\n  // The denom/2 is to get rounding instead of truncating. It\n  // is added or subtracted to the numerator, depending upon the\n  // sign of the numerator.\n  num = b1 * c2 - b2 * c1;\n  x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n  num = a2 * c1 - a1 * c2;\n  y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n  return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n  return r1 * r2 > 0;\n}\n", "import { intersectLine } from './intersect-line.js';\n\nexport { intersectPolygon };\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n  var x1 = node.x;\n  var y1 = node.y;\n\n  var intersections = [];\n\n  var minX = Number.POSITIVE_INFINITY;\n  var minY = Number.POSITIVE_INFINITY;\n  polyPoints.forEach(function (entry) {\n    minX = Math.min(minX, entry.x);\n    minY = Math.min(minY, entry.y);\n  });\n\n  var left = x1 - node.width / 2 - minX;\n  var top = y1 - node.height / 2 - minY;\n\n  for (var i = 0; i < polyPoints.length; i++) {\n    var p1 = polyPoints[i];\n    var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n    var intersect = intersectLine(\n      node,\n      point,\n      { x: left + p1.x, y: top + p1.y },\n      { x: left + p2.x, y: top + p2.y }\n    );\n    if (intersect) {\n      intersections.push(intersect);\n    }\n  }\n\n  if (!intersections.length) {\n    console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n    return node;\n  }\n\n  if (intersections.length > 1) {\n    // More intersections, find the one nearest to edge end point\n    intersections.sort(function (p, q) {\n      var pdx = p.x - point.x;\n      var pdy = p.y - point.y;\n      var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n      var qdx = q.x - point.x;\n      var qdy = q.y - point.y;\n      var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n      return distp < distq ? -1 : distp === distq ? 0 : 1;\n    });\n  }\n  return intersections[0];\n}\n", "export { intersectRect };\n\nfunction intersectRect(node, point) {\n  var x = node.x;\n  var y = node.y;\n\n  // Rectangle intersection algorithm from:\n  // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n  var dx = point.x - x;\n  var dy = point.y - y;\n  var w = node.width / 2;\n  var h = node.height / 2;\n\n  var sx, sy;\n  if (Math.abs(dy) * w > Math.abs(dx) * h) {\n    // Intersection is top or bottom of rect.\n    if (dy < 0) {\n      h = -h;\n    }\n    sx = dy === 0 ? 0 : (h * dx) / dy;\n    sy = h;\n  } else {\n    // Intersection is left or right of rect.\n    if (dx < 0) {\n      w = -w;\n    }\n    sx = w;\n    sy = dx === 0 ? 0 : (w * dy) / dx;\n  }\n\n  return { x: x + sx, y: y + sy };\n}\n", "import { intersectCircle } from './intersect/intersect-circle.js';\nimport { intersectEllipse } from './intersect/intersect-ellipse.js';\nimport { intersectPolygon } from './intersect/intersect-polygon.js';\nimport { intersectRect } from './intersect/intersect-rect.js';\n\nexport { shapes, setShapes };\n\nvar shapes = {\n  rect,\n  ellipse,\n  circle,\n  diamond,\n};\n\nfunction setShapes(value) {\n  shapes = value;\n}\n\nfunction rect(parent, bbox, node) {\n  var shapeSvg = parent\n    .insert('rect', ':first-child')\n    .attr('rx', node.rx)\n    .attr('ry', node.ry)\n    .attr('x', -bbox.width / 2)\n    .attr('y', -bbox.height / 2)\n    .attr('width', bbox.width)\n    .attr('height', bbox.height);\n\n  node.intersect = function (point) {\n    return intersectRect(node, point);\n  };\n\n  return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n  var rx = bbox.width / 2;\n  var ry = bbox.height / 2;\n  var shapeSvg = parent\n    .insert('ellipse', ':first-child')\n    .attr('x', -bbox.width / 2)\n    .attr('y', -bbox.height / 2)\n    .attr('rx', rx)\n    .attr('ry', ry);\n\n  node.intersect = function (point) {\n    return intersectEllipse(node, rx, ry, point);\n  };\n\n  return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n  var r = Math.max(bbox.width, bbox.height) / 2;\n  var shapeSvg = parent\n    .insert('circle', ':first-child')\n    .attr('x', -bbox.width / 2)\n    .attr('y', -bbox.height / 2)\n    .attr('r', r);\n\n  node.intersect = function (point) {\n    return intersectCircle(node, r, point);\n  };\n\n  return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n  var w = (bbox.width * Math.SQRT2) / 2;\n  var h = (bbox.height * Math.SQRT2) / 2;\n  var points = [\n    { x: 0, y: -h },\n    { x: -w, y: 0 },\n    { x: 0, y: h },\n    { x: w, y: 0 },\n  ];\n  var shapeSvg = parent.insert('polygon', ':first-child').attr(\n    'points',\n    points\n      .map(function (p) {\n        return p.x + ',' + p.y;\n      })\n      .join(' ')\n  );\n\n  node.intersect = function (p) {\n    return intersectPolygon(node, points, p);\n  };\n\n  return shapeSvg;\n}\n", "import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { layout } from '../dagre/index.js';\nimport { arrows, setArrows } from './arrows.js';\nimport { createClusters, setCreateClusters } from './create-clusters.js';\nimport { createEdgeLabels, setCreateEdgeLabels } from './create-edge-labels.js';\nimport { createEdgePaths, setCreateEdgePaths } from './create-edge-paths.js';\nimport { createNodes, setCreateNodes } from './create-nodes.js';\nimport { positionClusters } from './position-clusters.js';\nimport { positionEdgeLabels } from './position-edge-labels.js';\nimport { positionNodes } from './position-nodes.js';\nimport { shapes, setShapes } from './shapes.js';\n\nexport { render };\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n  var fn = function (svg, g) {\n    preProcessGraph(g);\n\n    var outputGroup = createOrSelectGroup(svg, 'output');\n    var clustersGroup = createOrSelectGroup(outputGroup, 'clusters');\n    var edgePathsGroup = createOrSelectGroup(outputGroup, 'edgePaths');\n    var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, 'edgeLabels'), g);\n    var nodes = createNodes(createOrSelectGroup(outputGroup, 'nodes'), g, shapes);\n\n    layout(g);\n\n    positionNodes(nodes, g);\n    positionEdgeLabels(edgeLabels, g);\n    createEdgePaths(edgePathsGroup, g, arrows);\n\n    var clusters = createClusters(clustersGroup, g);\n    positionClusters(clusters, g);\n\n    postProcessGraph(g);\n  };\n\n  fn.createNodes = function (value) {\n    if (!arguments.length) return createNodes;\n    setCreateNodes(value);\n    return fn;\n  };\n\n  fn.createClusters = function (value) {\n    if (!arguments.length) return createClusters;\n    setCreateClusters(value);\n    return fn;\n  };\n\n  fn.createEdgeLabels = function (value) {\n    if (!arguments.length) return createEdgeLabels;\n    setCreateEdgeLabels(value);\n    return fn;\n  };\n\n  fn.createEdgePaths = function (value) {\n    if (!arguments.length) return createEdgePaths;\n    setCreateEdgePaths(value);\n    return fn;\n  };\n\n  fn.shapes = function (value) {\n    if (!arguments.length) return shapes;\n    setShapes(value);\n    return fn;\n  };\n\n  fn.arrows = function (value) {\n    if (!arguments.length) return arrows;\n    setArrows(value);\n    return fn;\n  };\n\n  return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n  paddingLeft: 10,\n  paddingRight: 10,\n  paddingTop: 10,\n  paddingBottom: 10,\n  rx: 0,\n  ry: 0,\n  shape: 'rect',\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n  arrowhead: 'normal',\n  curve: d3.curveLinear,\n};\n\nfunction preProcessGraph(g) {\n  g.nodes().forEach(function (v) {\n    var node = g.node(v);\n    if (!_.has(node, 'label') && !g.children(v).length) {\n      node.label = v;\n    }\n\n    if (_.has(node, 'paddingX')) {\n      _.defaults(node, {\n        paddingLeft: node.paddingX,\n        paddingRight: node.paddingX,\n      });\n    }\n\n    if (_.has(node, 'paddingY')) {\n      _.defaults(node, {\n        paddingTop: node.paddingY,\n        paddingBottom: node.paddingY,\n      });\n    }\n\n    if (_.has(node, 'padding')) {\n      _.defaults(node, {\n        paddingLeft: node.padding,\n        paddingRight: node.padding,\n        paddingTop: node.padding,\n        paddingBottom: node.padding,\n      });\n    }\n\n    _.defaults(node, NODE_DEFAULT_ATTRS);\n\n    _.each(['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'], function (k) {\n      node[k] = Number(node[k]);\n    });\n\n    // Save dimensions for restore during post-processing\n    if (_.has(node, 'width')) {\n      node._prevWidth = node.width;\n    }\n    if (_.has(node, 'height')) {\n      node._prevHeight = node.height;\n    }\n  });\n\n  g.edges().forEach(function (e) {\n    var edge = g.edge(e);\n    if (!_.has(edge, 'label')) {\n      edge.label = '';\n    }\n    _.defaults(edge, EDGE_DEFAULT_ATTRS);\n  });\n}\n\nfunction postProcessGraph(g) {\n  _.each(g.nodes(), function (v) {\n    var node = g.node(v);\n\n    // Restore original dimensions\n    if (_.has(node, '_prevWidth')) {\n      node.width = node._prevWidth;\n    } else {\n      delete node.width;\n    }\n\n    if (_.has(node, '_prevHeight')) {\n      node.height = node._prevHeight;\n    } else {\n      delete node.height;\n    }\n\n    delete node._prevWidth;\n    delete node._prevHeight;\n  });\n}\n\nfunction createOrSelectGroup(root, name) {\n  var selection = root.select('g.' + name);\n  if (selection.empty()) {\n    selection = root.append('g').attr('class', name);\n  }\n  return selection;\n}\n", "import { intersectPolygon } from 'dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js';\nimport { intersectRect } from 'dagre-d3-es/src/dagre-js/intersect/intersect-rect.js';\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction question(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const s = (w + h) * 0.9;\n  const points = [\n    { x: s / 2, y: 0 },\n    { x: s, y: -s / 2 },\n    { x: s / 2, y: -s },\n    { x: 0, y: -s / 2 },\n  ];\n  const shapeSvg = insertPolygonShape(parent, s, s, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction hexagon(parent, bbox, node) {\n  const f = 4;\n  const h = bbox.height;\n  const m = h / f;\n  const w = bbox.width + 2 * m;\n  const points = [\n    { x: m, y: 0 },\n    { x: w - m, y: 0 },\n    { x: w, y: -h / 2 },\n    { x: w - m, y: -h },\n    { x: m, y: -h },\n    { x: 0, y: -h / 2 },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction rect_left_inv_arrow(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: -h / 2, y: 0 },\n    { x: w, y: 0 },\n    { x: w, y: -h },\n    { x: -h / 2, y: -h },\n    { x: 0, y: -h / 2 },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction lean_right(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: (-2 * h) / 6, y: 0 },\n    { x: w - h / 6, y: 0 },\n    { x: w + (2 * h) / 6, y: -h },\n    { x: h / 6, y: -h },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction lean_left(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: (2 * h) / 6, y: 0 },\n    { x: w + h / 6, y: 0 },\n    { x: w - (2 * h) / 6, y: -h },\n    { x: -h / 6, y: -h },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction trapezoid(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: (-2 * h) / 6, y: 0 },\n    { x: w + (2 * h) / 6, y: 0 },\n    { x: w - h / 6, y: -h },\n    { x: h / 6, y: -h },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction inv_trapezoid(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: h / 6, y: 0 },\n    { x: w - h / 6, y: 0 },\n    { x: w + (2 * h) / 6, y: -h },\n    { x: (-2 * h) / 6, y: -h },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction rect_right_inv_arrow(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: 0, y: 0 },\n    { x: w + h / 2, y: 0 },\n    { x: w, y: -h / 2 },\n    { x: w + h / 2, y: -h },\n    { x: 0, y: -h },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction stadium(parent, bbox, node) {\n  const h = bbox.height;\n  const w = bbox.width + h / 4;\n\n  const shapeSvg = parent\n    .insert('rect', ':first-child')\n    .attr('rx', h / 2)\n    .attr('ry', h / 2)\n    .attr('x', -w / 2)\n    .attr('y', -h / 2)\n    .attr('width', w)\n    .attr('height', h);\n\n  node.intersect = function (point) {\n    return intersectRect(node, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction subroutine(parent, bbox, node) {\n  const w = bbox.width;\n  const h = bbox.height;\n  const points = [\n    { x: 0, y: 0 },\n    { x: w, y: 0 },\n    { x: w, y: -h },\n    { x: 0, y: -h },\n    { x: 0, y: 0 },\n    { x: -8, y: 0 },\n    { x: w + 8, y: 0 },\n    { x: w + 8, y: -h },\n    { x: -8, y: -h },\n    { x: -8, y: 0 },\n  ];\n  const shapeSvg = insertPolygonShape(parent, w, h, points);\n  node.intersect = function (point) {\n    return intersectPolygon(node, points, point);\n  };\n  return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction cylinder(parent, bbox, node) {\n  const w = bbox.width;\n  const rx = w / 2;\n  const ry = rx / (2.5 + w / 50);\n  const h = bbox.height + ry;\n\n  const shape =\n    'M 0,' +\n    ry +\n    ' a ' +\n    rx +\n    ',' +\n    ry +\n    ' 0,0,0 ' +\n    w +\n    ' 0 a ' +\n    rx +\n    ',' +\n    ry +\n    ' 0,0,0 ' +\n    -w +\n    ' 0 l 0,' +\n    h +\n    ' a ' +\n    rx +\n    ',' +\n    ry +\n    ' 0,0,0 ' +\n    w +\n    ' 0 l 0,' +\n    -h;\n\n  const shapeSvg = parent\n    .attr('label-offset-y', ry)\n    .insert('path', ':first-child')\n    .attr('d', shape)\n    .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n  node.intersect = function (point) {\n    const pos = intersectRect(node, point);\n    const x = pos.x - node.x;\n\n    if (\n      rx != 0 &&\n      (Math.abs(x) < node.width / 2 ||\n        (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n    ) {\n      // ellipsis equation: x*x / a*a + y*y / b*b = 1\n      // solve for y to get adjusted value for pos.y\n      let y = ry * ry * (1 - (x * x) / (rx * rx));\n      if (y != 0) {\n        y = Math.sqrt(y);\n      }\n      y = ry - y;\n      if (point.y - node.y > 0) {\n        y = -y;\n      }\n\n      pos.y += y;\n    }\n\n    return pos;\n  };\n\n  return shapeSvg;\n}\n\n/** @param render */\nexport function addToRender(render) {\n  render.shapes().question = question;\n  render.shapes().hexagon = hexagon;\n  render.shapes().stadium = stadium;\n  render.shapes().subroutine = subroutine;\n  render.shapes().cylinder = cylinder;\n\n  // Add custom shape for box with inverted arrow on left side\n  render.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n\n  // Add custom shape for box with inverted arrow on left side\n  render.shapes().lean_right = lean_right;\n\n  // Add custom shape for box with inverted arrow on left side\n  render.shapes().lean_left = lean_left;\n\n  // Add custom shape for box with inverted arrow on left side\n  render.shapes().trapezoid = trapezoid;\n\n  // Add custom shape for box with inverted arrow on left side\n  render.shapes().inv_trapezoid = inv_trapezoid;\n\n  // Add custom shape for box with inverted arrow on right side\n  render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\n\n/** @param addShape */\nexport function addToRenderV2(addShape) {\n  addShape({ question });\n  addShape({ hexagon });\n  addShape({ stadium });\n  addShape({ subroutine });\n  addShape({ cylinder });\n\n  // Add custom shape for box with inverted arrow on left side\n  addShape({ rect_left_inv_arrow });\n\n  // Add custom shape for box with inverted arrow on left side\n  addShape({ lean_right });\n\n  // Add custom shape for box with inverted arrow on left side\n  addShape({ lean_left });\n\n  // Add custom shape for box with inverted arrow on left side\n  addShape({ trapezoid });\n\n  // Add custom shape for box with inverted arrow on left side\n  addShape({ inv_trapezoid });\n\n  // Add custom shape for box with inverted arrow on right side\n  addShape({ rect_right_inv_arrow });\n}\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nfunction insertPolygonShape(parent, w, h, points) {\n  return parent\n    .insert('polygon', ':first-child')\n    .attr(\n      'points',\n      points\n        .map(function (d) {\n          return d.x + ',' + d.y;\n        })\n        .join(' ')\n    )\n    .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport default {\n  addToRender,\n  addToRenderV2,\n};\n", "import * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { select, curveLinear, selectAll } from 'd3';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { render as Render } from 'dagre-d3-es';\nimport { applyStyle } from 'dagre-d3-es/src/dagre-js/util.js';\nimport { addHtmlLabel } from 'dagre-d3-es/src/dagre-js/label/add-html-label.js';\nimport { log } from '../../logger.js';\nimport common, { evaluate, renderKatex } from '../common/common.js';\nimport { interpolateToCurve, getStylesFromArray, getEdgeId } from '../../utils.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport flowChartShapes from './flowChartShapes.js';\nimport { replaceIconSubstring } from '../../rendering-util/createText.js';\n\nconst conf = {};\nexport const setConf = function (cnf) {\n  const keys = Object.keys(cnf);\n  for (const key of keys) {\n    conf[key] = cnf[key];\n  }\n};\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n *\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n * @param svgId\n * @param root\n * @param _doc\n * @param diagObj\n */\nexport const addVertices = async function (vert, g, svgId, root, _doc, diagObj) {\n  const svg = !root ? select(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n  const doc = !_doc ? document : _doc;\n  const keys = Object.keys(vert);\n\n  // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n  for (const id of keys) {\n    const vertex = vert[id];\n\n    /**\n     * Variable for storing the classes for the vertex\n     *\n     * @type {string}\n     */\n    let classStr = 'default';\n    if (vertex.classes.length > 0) {\n      classStr = vertex.classes.join(' ');\n    }\n\n    const styles = getStylesFromArray(vertex.styles);\n\n    // Use vertex id as text in the box if no text is provided by the graph definition\n    let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n    // We create a SVG label, either by delegating to addHtmlLabel or manually\n    let vertexNode;\n    if (evaluate(getConfig().flowchart.htmlLabels)) {\n      // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n      const replacedVertexText = replaceIconSubstring(vertexText);\n      const node = {\n        label: await renderKatex(replacedVertexText, getConfig()),\n      };\n      vertexNode = addHtmlLabel(svg, node).node();\n      vertexNode.parentNode.removeChild(vertexNode);\n    } else {\n      const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n      svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n      const rows = vertexText.split(common.lineBreakRegex);\n\n      for (const row of rows) {\n        const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n        tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n        tspan.setAttribute('dy', '1em');\n        tspan.setAttribute('x', '1');\n        tspan.textContent = row;\n        svgLabel.appendChild(tspan);\n      }\n      vertexNode = svgLabel;\n    }\n\n    let radius = 0;\n    let _shape = '';\n    // Set the shape based parameters\n    switch (vertex.type) {\n      case 'round':\n        radius = 5;\n        _shape = 'rect';\n        break;\n      case 'square':\n        _shape = 'rect';\n        break;\n      case 'diamond':\n        _shape = 'question';\n        break;\n      case 'hexagon':\n        _shape = 'hexagon';\n        break;\n      case 'odd':\n        _shape = 'rect_left_inv_arrow';\n        break;\n      case 'lean_right':\n        _shape = 'lean_right';\n        break;\n      case 'lean_left':\n        _shape = 'lean_left';\n        break;\n      case 'trapezoid':\n        _shape = 'trapezoid';\n        break;\n      case 'inv_trapezoid':\n        _shape = 'inv_trapezoid';\n        break;\n      case 'odd_right':\n        _shape = 'rect_left_inv_arrow';\n        break;\n      case 'circle':\n        _shape = 'circle';\n        break;\n      case 'ellipse':\n        _shape = 'ellipse';\n        break;\n      case 'stadium':\n        _shape = 'stadium';\n        break;\n      case 'subroutine':\n        _shape = 'subroutine';\n        break;\n      case 'cylinder':\n        _shape = 'cylinder';\n        break;\n      case 'group':\n        _shape = 'rect';\n        break;\n      default:\n        _shape = 'rect';\n    }\n    // Add the node\n    log.warn('Adding node', vertex.id, vertex.domId);\n    g.setNode(diagObj.db.lookUpDomId(vertex.id), {\n      labelType: 'svg',\n      labelStyle: styles.labelStyle,\n      shape: _shape,\n      label: vertexNode,\n      rx: radius,\n      ry: radius,\n      class: classStr,\n      style: styles.style,\n      id: diagObj.db.lookUpDomId(vertex.id),\n    });\n  }\n};\n\n/**\n * Add edges to graph based on parsed graph definition\n *\n * @param {object} edges The edges to add to the graph\n * @param {object} g The graph object\n * @param diagObj\n */\nexport const addEdges = async function (edges, g, diagObj) {\n  let cnt = 0;\n\n  let defaultStyle;\n  let defaultLabelStyle;\n\n  if (edges.defaultStyle !== undefined) {\n    const defaultStyles = getStylesFromArray(edges.defaultStyle);\n    defaultStyle = defaultStyles.style;\n    defaultLabelStyle = defaultStyles.labelStyle;\n  }\n\n  for (const edge of edges) {\n    cnt++;\n\n    // Identify Link\n    const linkId = getEdgeId(edge.start, edge.end, {\n      counter: cnt,\n      prefix: 'L',\n    });\n    const linkNameStart = 'LS-' + edge.start;\n    const linkNameEnd = 'LE-' + edge.end;\n\n    const edgeData = {};\n\n    // Set link type for rendering\n    if (edge.type === 'arrow_open') {\n      edgeData.arrowhead = 'none';\n    } else {\n      edgeData.arrowhead = 'normal';\n    }\n\n    let style = '';\n    let labelStyle = '';\n\n    if (edge.style !== undefined) {\n      const styles = getStylesFromArray(edge.style);\n      style = styles.style;\n      labelStyle = styles.labelStyle;\n    } else {\n      switch (edge.stroke) {\n        case 'normal':\n          style = 'fill:none';\n          if (defaultStyle !== undefined) {\n            style = defaultStyle;\n          }\n          if (defaultLabelStyle !== undefined) {\n            labelStyle = defaultLabelStyle;\n          }\n          break;\n        case 'dotted':\n          style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n          break;\n        case 'thick':\n          style = ' stroke-width: 3.5px;fill:none';\n          break;\n      }\n    }\n\n    edgeData.style = style;\n    edgeData.labelStyle = labelStyle;\n\n    if (edge.interpolate !== undefined) {\n      edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n    } else if (edges.defaultInterpolate !== undefined) {\n      edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n    } else {\n      edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n    }\n\n    if (edge.text === undefined) {\n      if (edge.style !== undefined) {\n        edgeData.arrowheadStyle = 'fill: #333';\n      }\n    } else {\n      edgeData.arrowheadStyle = 'fill: #333';\n      edgeData.labelpos = 'c';\n\n      if (evaluate(getConfig().flowchart.htmlLabels)) {\n        edgeData.labelType = 'html';\n        edgeData.label = `<span id=\"L-${linkId}\" class=\"edgeLabel L-${linkNameStart}' L-${linkNameEnd}\" style=\"${\n          edgeData.labelStyle\n        }\">${await renderKatex(replaceIconSubstring(edge.text), getConfig())}</span>`;\n      } else {\n        edgeData.labelType = 'text';\n        edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n        if (edge.style === undefined) {\n          edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n        }\n\n        edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n      }\n    }\n\n    edgeData.id = linkId;\n    edgeData.class = linkNameStart + ' ' + linkNameEnd;\n    edgeData.minlen = edge.length || 1;\n\n    // Add the edge to the graph\n    g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n  }\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n *\n * @param text\n * @param diagObj\n * @returns {Map<string, import('../../diagram-api/types.js').DiagramStyleClassDef>} ClassDef styles\n */\nexport const getClasses = function (text, diagObj) {\n  log.info('Extracting classes');\n  return diagObj.db.getClasses();\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param text\n * @param id\n * @param _version\n * @param diagObj\n */\nexport const draw = async function (text, id, _version, diagObj) {\n  log.info('Drawing flowchart');\n  const { securityLevel, flowchart: conf } = getConfig();\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  const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n  // Fetch the default direction, use TD if none was found\n  let dir = diagObj.db.getDirection();\n  if (dir === undefined) {\n    dir = 'TD';\n  }\n  const nodeSpacing = conf.nodeSpacing || 50;\n  const rankSpacing = conf.rankSpacing || 50;\n\n  // Create the input mermaid.graph\n  const g = new graphlib.Graph({\n    multigraph: true,\n    compound: true,\n  })\n    .setGraph({\n      rankdir: dir,\n      nodesep: nodeSpacing,\n      ranksep: rankSpacing,\n      marginx: 8,\n      marginy: 8,\n    })\n    .setDefaultEdgeLabel(function () {\n      return {};\n    });\n\n  let subG;\n  const subGraphs = diagObj.db.getSubGraphs();\n  for (let i = subGraphs.length - 1; i >= 0; i--) {\n    subG = subGraphs[i];\n    diagObj.db.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n  }\n\n  // Fetch the vertices/nodes and edges/links from the parsed graph definition\n  const vert = diagObj.db.getVertices();\n  log.warn('Get vertices', vert);\n\n  const edges = diagObj.db.getEdges();\n\n  let i = 0;\n  for (i = subGraphs.length - 1; i >= 0; i--) {\n    subG = subGraphs[i];\n\n    selectAll('cluster').append('text');\n\n    for (let j = 0; j < subG.nodes.length; j++) {\n      log.warn(\n        'Setting subgraph',\n        subG.nodes[j],\n        diagObj.db.lookUpDomId(subG.nodes[j]),\n        diagObj.db.lookUpDomId(subG.id)\n      );\n      g.setParent(diagObj.db.lookUpDomId(subG.nodes[j]), diagObj.db.lookUpDomId(subG.id));\n    }\n  }\n  await addVertices(vert, g, id, root, doc, diagObj);\n  await addEdges(edges, g, diagObj);\n\n  // Create the renderer\n  const render = new Render();\n\n  // Add custom shapes\n  flowChartShapes.addToRender(render);\n\n  // Add our custom arrow - an empty arrowhead\n  render.arrows().none = function normal(parent, id, edge, type) {\n    const marker = parent\n      .append('marker')\n      .attr('id', id)\n      .attr('viewBox', '0 0 10 10')\n      .attr('refX', 9)\n      .attr('refY', 5)\n      .attr('markerUnits', 'strokeWidth')\n      .attr('markerWidth', 8)\n      .attr('markerHeight', 6)\n      .attr('orient', 'auto');\n\n    const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n    applyStyle(path, edge[type + 'Style']);\n  };\n\n  // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n  render.arrows().normal = function normal(parent, id) {\n    const marker = parent\n      .append('marker')\n      .attr('id', id)\n      .attr('viewBox', '0 0 10 10')\n      .attr('refX', 9)\n      .attr('refY', 5)\n      .attr('markerUnits', 'strokeWidth')\n      .attr('markerWidth', 8)\n      .attr('markerHeight', 6)\n      .attr('orient', 'auto');\n\n    marker\n      .append('path')\n      .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n      .attr('class', 'arrowheadPath')\n      .style('stroke-width', 1)\n      .style('stroke-dasharray', '1,0');\n  };\n\n  // Set up an SVG group so that we can translate the final graph.\n  const svg = root.select(`[id=\"${id}\"]`);\n\n  // Run the renderer. This is what draws the final graph.\n  const element = root.select('#' + id + ' g');\n  render(element, g);\n\n  element.selectAll('g.node').attr('title', function () {\n    return diagObj.db.getTooltip(this.id);\n  });\n\n  // Index nodes\n  diagObj.db.indexNodes('subGraph' + i);\n\n  // reposition labels\n  for (i = 0; i < subGraphs.length; i++) {\n    subG = subGraphs[i];\n    if (subG.title !== 'undefined') {\n      const clusterRects = doc.querySelectorAll(\n        '#' + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"] rect'\n      );\n      const clusterEl = doc.querySelectorAll(\n        '#' + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"]'\n      );\n\n      const xPos = clusterRects[0].x.baseVal.value;\n      const yPos = clusterRects[0].y.baseVal.value;\n      const _width = clusterRects[0].width.baseVal.value;\n      const cluster = select(clusterEl[0]);\n      const te = cluster.select('.label');\n      te.attr('transform', `translate(${xPos + _width / 2}, ${yPos + 14})`);\n      te.attr('id', id + 'Text');\n\n      for (let j = 0; j < subG.classes.length; j++) {\n        clusterEl[0].classList.add(subG.classes[j]);\n      }\n    }\n  }\n\n  // Add label rects for non html labels\n  if (!conf.htmlLabels) {\n    const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n    for (const label of labels) {\n      // Get dimensions of label\n      const dim = label.getBBox();\n\n      const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n      rect.setAttribute('rx', 0);\n      rect.setAttribute('ry', 0);\n      rect.setAttribute('width', dim.width);\n      rect.setAttribute('height', dim.height);\n      // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n      label.insertBefore(rect, label.firstChild);\n    }\n  }\n  setupGraphViewbox(g, svg, conf.diagramPadding, conf.useMaxWidth);\n\n  // If node has a link, wrap it in an anchor SVG object.\n  const keys = [...vert.keys()];\n  keys.forEach(function (key) {\n    const vertex = vert.get(key);\n\n    if (vertex.link) {\n      const node = root.select('#' + id + ' [id=\"' + diagObj.db.lookUpDomId(key) + '\"]');\n      if (node) {\n        const link = doc.createElementNS('http://www.w3.org/2000/svg', 'a');\n        link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n        link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n        link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n        if (securityLevel === 'sandbox') {\n          link.setAttributeNS('http://www.w3.org/2000/svg', 'target', '_top');\n        } else if (vertex.linkTarget) {\n          link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);\n        }\n\n        const linkNode = node.insert(function () {\n          return link;\n        }, ':first-child');\n\n        const shape = node.select('.label-container');\n        if (shape) {\n          linkNode.append(function () {\n            return shape.node();\n          });\n        }\n\n        const label = node.select('.label');\n        if (label) {\n          linkNode.append(function () {\n            return label.node();\n          });\n        }\n      }\n    }\n  });\n};\n\nexport default {\n  setConf,\n  addVertices,\n  addEdges,\n  getClasses,\n  draw,\n};\n", "// @ts-ignore: JISON doesn't support types\nimport flowParser from './parser/flow.jison';\nimport flowDb from './flowDb.js';\nimport flowRenderer from './flowRenderer.js';\nimport flowRendererV2 from './flowRenderer-v2.js';\nimport flowStyles from './styles.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\nexport const diagram = {\n  parser: flowParser,\n  db: flowDb,\n  renderer: flowRendererV2,\n  styles: flowStyles,\n  init: (cnf: MermaidConfig) => {\n    if (!cnf.flowchart) {\n      cnf.flowchart = {};\n    }\n    // TODO, broken as of 2022-09-14 (13809b50251845475e6dca65cc395761be38fbd2)\n    cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n    flowRenderer.setConf(cnf.flowchart);\n    flowDb.clear();\n    flowDb.setGen('gen-1');\n  },\n};\n"],
  "mappings": "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",
  "names": ["arrows", "normal", "vee", "undirected", "setArrows", "value", "__name", "parent", "id", "edge", "type", "marker", "path", "applyStyle", "addSVGLabel", "root", "node", "domNode", "applyStyle", "__name", "addTextLabel", "root", "node", "domNode", "lines", "processEscapeSequences", "i", "applyStyle", "__name", "text", "newText", "escaped", "ch", "addLabel", "root", "node", "location", "label", "labelSvg", "addSVGLabel", "addHtmlLabel", "addTextLabel", "labelBBox", "y", "__name", "createClusters", "__name", "selection", "g", "clusters", "v", "isSubgraph", "svgClusters", "applyTransition", "enterSelection", "node", "thisGroup", "select_default", "labelGroup", "addLabel", "c", "domCluster", "applyStyle", "setCreateClusters", "value", "createEdgeLabels", "__name", "selection", "g", "svgEdgeLabels", "e", "edgeToId", "root", "select_default", "edge", "label", "addLabel", "bbox", "has_default", "exitSelection", "applyTransition", "setCreateEdgeLabels", "value", "intersectNode", "node", "point", "__name", "createEdgePaths", "__name", "selection", "g", "arrows", "previousPaths", "e", "edgeToId", "newPaths", "enter", "exit", "svgPaths", "applyTransition", "domEdge", "select_default", "edge", "applyClass", "uniqueId_default", "makeFragmentRef", "calcPoints", "applyStyle", "arrowhead", "setCreateEdgePaths", "value", "url", "fragmentId", "baseUrl", "tail", "head", "points", "intersectNode", "createLine", "line", "line_default", "svg", "d", "getCoords", "elem", "bbox", "matrix", "svgPathsEnter", "sourceElem", "range_default", "svgPathExit", "createNodes", "__name", "selection", "g", "shapes", "simpleNodes", "v", "isSubgraph", "svgNodes", "node", "thisGroup", "select_default", "applyClass", "labelGroup", "labelDom", "addLabel", "shape", "bbox", "pick_default", "has_default", "root", "shapeSvg", "applyStyle", "shapeBBox", "exitSelection", "applyTransition", "setCreateNodes", "value", "positionClusters", "selection", "g", "created", "select_default", "translate", "v", "node", "__name", "applyTransition", "positionEdgeLabels", "selection", "g", "created", "select_default", "translate", "e", "edge", "has_default", "__name", "applyTransition", "positionNodes", "selection", "g", "created", "select_default", "translate", "v", "node", "__name", "applyTransition", "intersectEllipse", "node", "rx", "ry", "point", "cx", "cy", "px", "py", "det", "dx", "dy", "__name", "intersectCircle", "node", "rx", "point", "intersectEllipse", "__name", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "num", "x", "y", "sameSign", "__name", "intersectPolygon", "node", "polyPoints", "point", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "p1", "p2", "intersect", "intersectLine", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "__name", "intersectRect", "node", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "__name", "shapes", "rect", "ellipse", "circle", "diamond", "setShapes", "value", "__name", "parent", "bbox", "node", "shapeSvg", "point", "intersectRect", "rx", "ry", "intersectEllipse", "r", "intersectCircle", "w", "h", "points", "p", "intersectPolygon", "render", "fn", "__name", "svg", "g", "preProcessGraph", "outputGroup", "createOrSelectGroup", "clustersGroup", "edgePathsGroup", "edgeLabels", "createEdgeLabels", "nodes", "createNodes", "shapes", "layout", "positionNodes", "positionEdgeLabels", "createEdgePaths", "arrows", "clusters", "createClusters", "positionClusters", "postProcessGraph", "value", "setCreateNodes", "setCreateClusters", "setCreateEdgeLabels", "setCreateEdgePaths", "setShapes", "setArrows", "NODE_DEFAULT_ATTRS", "EDGE_DEFAULT_ATTRS", "linear_default", "v", "node", "has_default", "defaults_default", "forEach_default", "k", "edge", "root", "name", "selection", "question", "parent", "bbox", "node", "w", "h", "points", "shapeSvg", "insertPolygonShape", "point", "intersectPolygon", "__name", "hexagon", "m", "rect_left_inv_arrow", "lean_right", "lean_left", "trapezoid", "inv_trapezoid", "rect_right_inv_arrow", "stadium", "intersectRect", "subroutine", "cylinder", "rx", "ry", "shape", "pos", "x", "y", "addToRender", "render", "addToRenderV2", "addShape", "d", "flowChartShapes_default", "conf", "setConf", "__name", "cnf", "keys", "key", "addVertices", "vert", "g", "svgId", "root", "_doc", "diagObj", "svg", "select_default", "doc", "id", "vertex", "classStr", "styles", "getStylesFromArray", "vertexText", "vertexNode", "evaluate", "getConfig", "replacedVertexText", "replaceIconSubstring", "node", "renderKatex", "addHtmlLabel", "svgLabel", "rows", "common_default", "row", "tspan", "radius", "_shape", "log", "addEdges", "edges", "cnt", "defaultStyle", "defaultLabelStyle", "defaultStyles", "edge", "linkId", "getEdgeId", "linkNameStart", "linkNameEnd", "edgeData", "style", "labelStyle", "interpolateToCurve", "linear_default", "getClasses", "text", "draw", "_version", "securityLevel", "sandboxElement", "dir", "nodeSpacing", "rankSpacing", "Graph", "subG", "subGraphs", "i", "selectAll_default", "j", "render", "flowChartShapes_default", "parent", "type", "path", "applyStyle", "element", "clusterRects", "clusterEl", "xPos", "yPos", "_width", "te", "labels", "label", "dim", "rect", "setupGraphViewbox", "link", "linkNode", "shape", "flowRenderer_default", "diagram", "flow_default", "flowDb_default", "flowRenderer_v2_default", "styles_default", "__name", "cnf", "flowRenderer_default"]
}
