%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps/text/js/ |
Current File : /www/varak.net/nextcloud.varak.net/apps/text/js/flowDiagram-66a62f08-BJsFIDtu.chunk.mjs.map |
{"version":3,"file":"flowDiagram-66a62f08-BJsFIDtu.chunk.mjs","sources":["../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/xml.js","../node_modules/dagre-d3-es/src/dagre-js/arrows.js","../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js","../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js","../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js","../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js","../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js","../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js","../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js","../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js","../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js","../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js","../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js","../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js","../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js","../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js","../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js","../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js","../node_modules/dagre-d3-es/src/dagre-js/shapes.js","../node_modules/dagre-d3-es/src/dagre-js/render.js","../node_modules/mermaid/dist/flowDiagram-66a62f08.js"],"sourcesContent":["function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","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 { p as parser, f as flowDb } from \"./flowDb-956e92f1.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, curveLinear, selectAll } from \"d3\";\nimport { k as getStylesFromArray, m as evaluate, c as getConfig, r as renderKatex, e as common, l as log, n as interpolateToCurve, o as setupGraphViewbox } from \"./mermaid-b5860b54.js\";\nimport { 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 { 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\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-c10674c1.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"./index-3862675e.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-e0da2a9e.js\";\nimport \"./createText-2e5e7dd3.js\";\nimport \"mdast-util-from-markdown\";\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}\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}\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}\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}\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}\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}\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}\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}\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n const shapeSvg = parent.insert(\"rect\", \":first-child\").attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\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}\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 const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const shapeSvg = parent.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n node.intersect = function(point) {\n const pos = intersectRect(node, point);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\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 pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\nfunction addToRender(render2) {\n render2.shapes().question = question;\n render2.shapes().hexagon = hexagon;\n render2.shapes().stadium = stadium;\n render2.shapes().subroutine = subroutine;\n render2.shapes().cylinder = cylinder;\n render2.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n render2.shapes().lean_right = lean_right;\n render2.shapes().lean_left = lean_left;\n render2.shapes().trapezoid = trapezoid;\n render2.shapes().inv_trapezoid = inv_trapezoid;\n render2.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n addShape({ rect_left_inv_arrow });\n addShape({ lean_right });\n addShape({ lean_left });\n addShape({ trapezoid });\n addShape({ inv_trapezoid });\n addShape({ rect_right_inv_arrow });\n}\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nconst flowChartShapes = {\n addToRender,\n addToRenderV2\n};\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst 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 for (const id of keys) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: await renderKatex(\n vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell:disable-line\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n getConfig()\n )\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 const rows = vertexText.split(common.lineBreakRegex);\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 let radius = 0;\n let _shape = \"\";\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 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};\nconst addEdges = async function(edges, g, diagObj) {\n let cnt = 0;\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n for (const edge of edges) {\n cnt++;\n const linkId = \"L-\" + edge.start + \"-\" + edge.end;\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = {};\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n let style = \"\";\n let labelStyle = \"\";\n if (edge.style !== void 0) {\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 !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\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 edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n edgeData.labelType = \"html\";\n edgeData.label = `<span id=\"L-${linkId}\" class=\"edgeLabel L-${linkNameStart}' L-${linkNameEnd}\" style=\"${edgeData.labelStyle}\">${await renderKatex(\n edge.text.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell:disable-line\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n getConfig()\n )}</span>`;\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n edgeData.id = linkId;\n edgeData.class = linkNameStart + \" \" + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n }\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n diagObj.db.addVertex(subG.id, subG.title, \"group\", void 0, subG.classes);\n }\n const vert = diagObj.db.getVertices();\n log.warn(\"Get vertices\", vert);\n const edges = diagObj.db.getEdges();\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\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 const render$1 = new render();\n flowChartShapes.addToRender(render$1);\n render$1.arrows().none = function normal(parent, id2, edge, type) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\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 render$1.arrows().normal = function normal(parent, id2) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n marker.append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowheadPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n };\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n render$1(element, g);\n element.selectAll(\"g.node\").attr(\"title\", function() {\n return diagObj.db.getTooltip(this.id);\n });\n diagObj.db.indexNodes(\"subGraph\" + i);\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 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 for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\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 label.insertBefore(rect, label.firstChild);\n }\n }\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\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 const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\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};\nconst flowRenderer = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-1\");\n }\n};\nexport {\n diagram\n};\n"],"names":["responseText","response","text","input","init","parser","type","svg","arrows","normal","vee","undirected","setArrows","value","parent","id","edge","marker","path","util.applyStyle","addSVGLabel","root","node","domNode","addTextLabel","lines","processEscapeSequences","i","newText","escaped","ch","addLabel","location","label","labelSvg","addHtmlLabel","labelBBox","y","createClusters","selection","g","clusters","v","util.isSubgraph","svgClusters","util.applyTransition","enterSelection","thisGroup","d3.select","labelGroup","c","domCluster","setCreateClusters","createEdgeLabels","svgEdgeLabels","e","util.edgeToId","bbox","_.has","exitSelection","setCreateEdgeLabels","intersectNode","point","createEdgePaths","previousPaths","newPaths","enter","exit","svgPaths","domEdge","util.applyClass","_.uniqueId","d3\n .select","makeFragmentRef","calcPoints","arrowhead","setCreateEdgePaths","url","fragmentId","baseUrl","tail","head","points","createLine","line","d3.line","d3.svg","d","getCoords","elem","matrix","svgPathsEnter","sourceElem","_.range","svgPathExit","createNodes","shapes","simpleNodes","svgNodes","labelDom","shape","_.pick","shapeSvg","shapeBBox","setCreateNodes","positionClusters","created","translate","util\n .applyTransition","positionEdgeLabels","positionNodes","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","intersect","p","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","w","h","sx","sy","rect","ellipse","circle","diamond","setShapes","r","render","fn","preProcessGraph","outputGroup","createOrSelectGroup","clustersGroup","edgePathsGroup","edgeLabels","nodes","layout","postProcessGraph","NODE_DEFAULT_ATTRS","EDGE_DEFAULT_ATTRS","d3.curveLinear","_.defaults","_.each","k","name","question","s","insertPolygonShape","hexagon","m","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","stadium","subroutine","cylinder","pos","addToRender","render2","addToRenderV2","addShape","flowChartShapes","conf","setConf","cnf","keys","key","addVertices","vert","svgId","_doc","diagObj","select","doc","vertex","classStr","styles","getStylesFromArray","vertexText","vertexNode","evaluate","getConfig","renderKatex","svgLabel","rows","common","row","tspan","radius","_shape","log","addEdges","edges","cnt","defaultStyle","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","style","labelStyle","interpolateToCurve","curveLinear","getClasses","draw","_version","securityLevel","conf2","sandboxElement","dir","nodeSpacing","rankSpacing","graphlib.Graph","subG","subGraphs","i2","selectAll","j","render$1","id2","applyStyle","element","clusterRects","clusterEl","xPos","yPos","_width","te","labels","dim","setupGraphViewbox","link","linkNode","flowRenderer","diagram","flowDb","flowRendererV2","flowStyles"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}