-
Notifications
You must be signed in to change notification settings - Fork 5
/
d3-graphviz.js.map
1 lines (1 loc) · 153 KB
/
d3-graphviz.js.map
1
{"version":3,"file":"d3-graphviz.js","sources":["../src/element.js","../src/utils.js","../src/zoom.js","../src/tweening.js","../src/data.js","../src/render.js","../src/svg.js","../src/dot.js","../src/renderDot.js","../src/transition.js","../src/options.js","../src/width.js","../src/height.js","../src/scale.js","../src/fit.js","../src/attributer.js","../src/engine.js","../src/images.js","../src/keyMode.js","../src/fade.js","../src/tweenPaths.js","../src/tweenShapes.js","../src/convertEqualSidedPolygons.js","../src/tweenPrecision.js","../src/growEnteringEdges.js","../src/on.js","../src/onerror.js","../src/logEvents.js","../src/geometry.js","../src/drawEdge.js","../src/drawNode.js","../src/workerCode.js","../src/graphviz.js","../src/selection/graphviz.js","../src/selection/selectWithoutDataPropagation.js","../src/selection/index.js"],"sourcesContent":["import * as d3 from \"d3-selection\";\n\nexport function extractElementData(element) {\n\n var datum = {};\n var tag = element.node().nodeName;\n datum.tag = tag;\n if (tag == '#text') {\n datum.text = element.text();\n } else if (tag == '#comment') {\n datum.comment = element.text();\n }\n datum.attributes = {};\n var attributes = element.node().attributes;\n if (attributes) {\n for (var i = 0; i < attributes.length; i++) {\n var attribute = attributes[i];\n var name = attribute.name;\n var value = attribute.value;\n datum.attributes[name] = value;\n }\n }\n var transform = element.node().transform;\n if (transform && transform.baseVal.numberOfItems != 0) {\n var matrix = transform.baseVal.consolidate().matrix;\n datum.translation = {x: matrix.e, y: matrix.f};\n datum.scale = matrix.a;\n }\n if (tag == 'ellipse') {\n datum.center = {\n x: datum.attributes.cx,\n y: datum.attributes.cy,\n };\n }\n if (tag == 'polygon') {\n var points = element.attr('points').split(' ');\n var x = points.map(function(p) {return p.split(',')[0]});\n var y = points.map(function(p) {return p.split(',')[1]});\n var xmin = Math.min.apply(null, x);\n var xmax = Math.max.apply(null, x);\n var ymin = Math.min.apply(null, y);\n var ymax = Math.max.apply(null, y);\n var bbox = {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin,\n };\n datum.bbox = bbox;\n datum.center = {\n x: (xmin + xmax) / 2,\n y: (ymin + ymax) / 2,\n };\n }\n if (tag == 'path') {\n var d = element.attr('d');\n var points = d.split(/[A-Z ]/);\n points.shift();\n var x = points.map(function(p) {return +p.split(',')[0]});\n var y = points.map(function(p) {return +p.split(',')[1]});\n var xmin = Math.min.apply(null, x);\n var xmax = Math.max.apply(null, x);\n var ymin = Math.min.apply(null, y);\n var ymax = Math.max.apply(null, y);\n var bbox = {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin,\n };\n datum.bbox = bbox;\n datum.center = {\n x: (xmin + xmax) / 2,\n y: (ymin + ymax) / 2,\n };\n datum.totalLength = element.node().getTotalLength();\n }\n if (tag == 'text') {\n datum.center = {\n x: element.attr('x'),\n y: element.attr('y'),\n };\n }\n if (tag == '#text') {\n datum.text = element.text();\n } else if (tag == '#comment') {\n datum.comment = element.text();\n }\n return datum\n}\n\nexport function extractAllElementsData(element) {\n\n var datum = extractElementData(element);\n datum.children = [];\n var children = d3.selectAll(element.node().childNodes);\n children.each(function () {\n var childData = extractAllElementsData(d3.select(this));\n childData.parent = datum;\n datum.children.push(childData);\n });\n return datum;\n}\n\nexport function createElement(data) {\n\n if (data.tag == '#text') {\n return document.createTextNode(\"\");\n } else if (data.tag == '#comment') {\n return document.createComment(data.comment);\n } else {\n return document.createElementNS('http://www.w3.org/2000/svg', data.tag);\n }\n}\n\nexport function createElementWithAttributes(data) {\n\n var elementNode = createElement(data);\n var element = d3.select(elementNode);\n var attributes = data.attributes;\n for (var attributeName of Object.keys(attributes)) {\n var attributeValue = attributes[attributeName];\n element.attr(attributeName, attributeValue);\n }\n return elementNode;\n}\n\nexport function replaceElement(element, data) {\n var parent = d3.select(element.node().parentNode);\n var newElementNode = createElementWithAttributes(data);\n var newElement = parent.insert(function () {\n return newElementNode;\n }, function () {\n return element.node();\n });\n element.remove();\n return newElement;\n}\n\nexport function insertElementData(element, datum) {\n element.datum(datum);\n element.data([datum], function (d) {\n return d.key;\n });\n}\n\nexport function insertAllElementsData(element, datum) {\n insertElementData(element, datum);\n var children = d3.selectAll(element.node().childNodes);\n children.each(function (d, i) {\n insertAllElementsData(d3.select(this), datum.children[i]);\n });\n}\n\nfunction insertChildren(element, index) {\n var children = element.selectAll(function () {\n return element.node().childNodes;\n });\n\n children = children\n .data(function (d) {\n return d.children;\n }, function (d) {\n return d.tag + '-' + index;\n });\n var childrenEnter = children\n .enter()\n .append(function(d) {\n return createElement(d);\n });\n\n var childrenExit = children\n .exit();\n childrenExit = childrenExit\n .remove()\n children = childrenEnter\n .merge(children);\n var childTagIndexes = {};\n children.each(function(childData) {\n var childTag = childData.tag;\n if (childTagIndexes[childTag] == null) {\n childTagIndexes[childTag] = 0;\n }\n var childIndex = childTagIndexes[childTag]++;\n attributeElement.call(this, childData, childIndex);\n });\n}\n\nexport function attributeElement(data, index=0) {\n var element = d3.select(this);\n var tag = data.tag;\n var attributes = data.attributes;\n var currentAttributes = element.node().attributes;\n if (currentAttributes) {\n for (var i = 0; i < currentAttributes.length; i++) {\n var currentAttribute = currentAttributes[i];\n var name = currentAttribute.name;\n if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {\n var namespaceURIParts = currentAttribute.namespaceURI.split('/');\n var namespace = namespaceURIParts[namespaceURIParts.length - 1];\n name = namespace + ':' + name;\n }\n if (!(name in attributes)) {\n attributes[name] = null;\n }\n }\n }\n for (var attributeName of Object.keys(attributes)) {\n element\n .attr(attributeName, attributes[attributeName]);\n }\n if (data.text) {\n element\n .text(data.text);\n }\n insertChildren(element, index);\n}\n","export function shallowCopyObject(obj) {\n return Object.assign({}, obj);\n}\n\nexport function roundTo2Decimals(x) {\n return Math.round(x * 100.0) / 100.0\n}\n","import * as d3 from \"d3-selection\";\nimport {zoom, zoomTransform, zoomIdentity} from \"d3-zoom\";\nimport {interpolate} from \"d3-interpolate\";\n\nexport default function(enable) {\n\n this._options.zoom = enable;\n\n if (this._options.zoom && !this._zoomBehavior) {\n createZoomBehavior.call(this);\n }\n\n return this;\n}\n\nexport function createZoomBehavior() {\n\n function zoomed() {\n var g = d3.select(svg.node().querySelector(\"g\"));\n g.attr('transform', d3.event.transform);\n }\n\n var root = this._selection;\n var svg = d3.select(root.node().querySelector(\"svg\"));\n if (svg.size() == 0) {\n return this;\n }\n this._zoomSelection = svg;\n var zoomBehavior = zoom()\n .scaleExtent(this._options.zoomScaleExtent)\n .translateExtent(this._options.zoomTranslateExtent)\n .interpolate(interpolate)\n .on(\"zoom\", zoomed);\n this._zoomBehavior = zoomBehavior;\n var g = d3.select(svg.node().querySelector(\"g\"));\n svg.call(zoomBehavior);\n if (!this._active) {\n translateZoomBehaviorTransform.call(this, g);\n }\n this._originalTransform = zoomTransform(svg.node());\n\n return this;\n};\n\nexport function getTranslatedZoomTransform(selection) {\n\n // Get the current zoom transform for the top level svg and\n // translate it uniformly with the given selection, using the\n // difference between the translation specified in the selection's\n // data and it's saved previous translation. The selection is\n // normally the top level g element of the graph.\n var oldTranslation = this._translation;\n var oldScale = this._scale;\n var newTranslation = selection.datum().translation;\n var newScale = selection.datum().scale;\n var t = zoomTransform(this._zoomSelection.node());\n if (oldTranslation) {\n t = t.scale(1 / oldScale);\n t = t.translate(-oldTranslation.x, -oldTranslation.y);\n }\n t = t.translate(newTranslation.x, newTranslation.y);\n t = t.scale(newScale);\n return t;\n}\n\nexport function translateZoomBehaviorTransform(selection) {\n\n // Translate the current zoom transform for the top level svg\n // uniformly with the given selection, using the difference\n // between the translation specified in the selection's data and\n // it's saved previous translation. The selection is normally the\n // top level g element of the graph.\n this._zoomBehavior.transform(this._zoomSelection, getTranslatedZoomTransform.call(this, selection));\n\n // Save the selections's new translation and scale.\n this._translation = selection.datum().translation;\n this._scale = selection.datum().scale;\n\n // Set the original zoom transform to the translation and scale specified in\n // the selection's data.\n this._originalTransform = zoomIdentity.translate(selection.datum().translation.x, selection.datum().translation.y).scale(selection.datum().scale);\n}\n\nexport function resetZoom(transition) {\n\n // Reset the zoom transform to the original zoom transform.\n var selection = this._zoomSelection;\n if (transition) {\n selection = selection\n .transition(transition);\n }\n selection\n .call(this._zoomBehavior.transform, this._originalTransform);\n\n return this;\n}\n\nexport function zoomScaleExtent(extent) {\n\n this._options.zoomScaleExtent = extent;\n\n return this;\n}\n\nexport function zoomTranslateExtent(extent) {\n\n this._options.zoomTranslateExtent = extent;\n\n return this;\n}\n\nexport function zoomBehavior() {\n return this._zoomBehavior || null;\n}\n\nexport function zoomSelection() {\n return this._zoomSelection || null;\n}\n","import {interpolate} from \"d3-interpolate\";\n\nexport function pathTween(points, d1) {\n return function() {\n const pointInterpolators = points.map(function(p) {\n return interpolate([p[0][0], p[0][1]], [p[1][0], p[1][1]]);\n });\n return function(t) {\n return t < 1 ? \"M\" + pointInterpolators.map(function(p) { return p(t); }).join(\"L\") : d1;\n };\n };\n}\n\nexport function pathTweenPoints(node, d1, precision, precisionIsRelative) {\n const path0 = node;\n const path1 = path0.cloneNode();\n const n0 = path0.getTotalLength();\n const n1 = (path1.setAttribute(\"d\", d1), path1).getTotalLength();\n\n // Uniform sampling of distance based on specified precision.\n const distances = [0];\n let i = 0;\n const dt = precisionIsRelative ? precision : precision / Math.max(n0, n1);\n while ((i += dt) < 1) {\n distances.push(i);\n }\n distances.push(1);\n\n // Compute point-interpolators at each distance.\n const points = distances.map(function(t) {\n const p0 = path0.getPointAtLength(t * n0);\n const p1 = path1.getPointAtLength(t * n1);\n return ([[p0.x, p0.y], [p1.x, p1.y]]);\n });\n return points;\n}\n","export default function() {\n return this._data || null;\n}\n\nexport function isEdgeElementParent(datum) {\n return (datum.attributes.class == 'edge' || (\n datum.tag == 'a' &&\n datum.parent.tag == 'g' &&\n datum.parent.parent.attributes.class == 'edge'\n ));\n}\n\nexport function isEdgeElement(datum) {\n return datum.parent && isEdgeElementParent(datum.parent);\n}\n\nexport function getEdgeGroup(datum) {\n if (datum.parent.attributes.class == 'edge') {\n return datum.parent;\n } else { // datum.parent.tag == 'g' && datum.parent.parent.tag == 'g' && datum.parent.parent.parent.attributes.class == 'edge'\n return datum.parent.parent.parent;\n }\n}\n\nexport function getEdgeTitle(datum) {\n return getEdgeGroup(datum).children.find(function (e) {\n return e.tag == 'title';\n });\n}\n","import * as d3 from \"d3-selection\";\nimport {transition} from \"d3-transition\";\nimport {timeout} from \"d3-timer\";\nimport {interpolateTransformSvg} from \"d3-interpolate\";\nimport {zoomTransform} from \"d3-zoom\";\nimport {createElement, extractElementData, replaceElement} from \"./element\";\nimport {shallowCopyObject} from \"./utils\";\nimport {createZoomBehavior, getTranslatedZoomTransform, translateZoomBehaviorTransform} from \"./zoom\";\nimport {pathTween} from \"./tweening\";\nimport {isEdgeElement} from \"./data\";\nimport {isEdgeElementParent} from \"./data\";\n\nexport default function(callback) {\n\n if (this._busy) {\n this._queue.push(this.render.bind(this, callback));\n return this;\n }\n this._dispatch.call('renderStart', this);\n\n if (this._transitionFactory) {\n timeout(function () { // Decouple from time spent. See https://github.com/d3/d3-timer/issues/27\n this._transition = transition(this._transitionFactory());\n _render.call(this, callback);\n }.bind(this), 0);\n } else {\n _render.call(this, callback);\n }\n return this;\n}\n\nfunction _render(callback) {\n\n var transitionInstance = this._transition;\n var fade = this._options.fade && transitionInstance != null;\n var tweenPaths = this._options.tweenPaths;\n var tweenShapes = this._options.tweenShapes;\n var convertEqualSidedPolygons = this._options.convertEqualSidedPolygons;\n var growEnteringEdges = this._options.growEnteringEdges && transitionInstance != null;\n var attributer = this._attributer;\n var graphvizInstance = this;\n\n function insertChildren(element) {\n var children = element.selectAll(function () {\n return element.node().childNodes;\n });\n\n children = children\n .data(function (d) {\n return d.children;\n }, function (d) {\n return d.key;\n });\n var childrenEnter = children\n .enter()\n .append(function(d) {\n var element = createElement(d);\n if (d.tag == '#text' && fade) {\n element.nodeValue = d.text;\n }\n return element;\n });\n\n if (fade || (growEnteringEdges && isEdgeElementParent(element.datum()))) {\n var childElementsEnter = childrenEnter\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .each(function (d) {\n var childEnter = d3.select(this);\n for (var attributeName of Object.keys(d.attributes)) {\n var attributeValue = d.attributes[attributeName];\n childEnter\n .attr(attributeName, attributeValue);\n }\n });\n childElementsEnter\n .filter(function(d) {\n return d.tag == 'svg' || d.tag == 'g' ? null : this;\n })\n .style(\"opacity\", 0.0);\n }\n var childrenExit = children\n .exit();\n if (attributer) {\n childrenExit.each(attributer);\n }\n if (transitionInstance) {\n childrenExit = childrenExit\n .transition(transitionInstance);\n if (fade) {\n childrenExit\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .style(\"opacity\", 0.0);\n }\n }\n childrenExit = childrenExit\n .remove()\n children = childrenEnter\n .merge(children);\n children.each(attributeElement);\n }\n\n function attributeElement(data) {\n var element = d3.select(this);\n if (data.tag == \"svg\") {\n var options = graphvizInstance._options;\n if (options.width != null || options.height != null) {\n var width = options.width;\n var height = options.height;\n if (width == null) {\n width = data.attributes.width.replace('pt', '') * 4 / 3;\n } else {\n element\n .attr(\"width\", width);\n data.attributes.width = width;\n }\n if (height == null) {\n height = data.attributes.height.replace('pt', '') * 4 / 3;\n } else {\n element\n .attr(\"height\", height);\n data.attributes.height = height;\n }\n if (!options.fit) {\n element\n .attr(\"viewBox\", `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`);\n data.attributes.viewBox = `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`;\n }\n }\n if (options.scale != 1 && (options.fit || (options.width == null && options.height == null))) {\n width = data.attributes.viewBox.split(' ')[2];\n height = data.attributes.viewBox.split(' ')[3];\n element\n .attr(\"viewBox\", `0 0 ${width / options.scale} ${height / options.scale}`);\n data.attributes.viewBox = `0 0 ${width / options.scale} ${height / options.scale}`;\n }\n }\n if (attributer) {\n element.each(attributer);\n }\n var tag = data.tag;\n var attributes = data.attributes;\n var currentAttributes = element.node().attributes;\n if (currentAttributes) {\n for (var i = 0; i < currentAttributes.length; i++) {\n var currentAttribute = currentAttributes[i];\n var name = currentAttribute.name;\n if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {\n var namespaceURIParts = currentAttribute.namespaceURI.split('/');\n var namespace = namespaceURIParts[namespaceURIParts.length - 1];\n name = namespace + ':' + name;\n }\n if (!(name in attributes)) {\n attributes[name] = null;\n }\n }\n }\n var convertShape = false;\n var convertPrevShape = false;\n if (tweenShapes && transitionInstance) {\n if ((this.nodeName == 'polygon' || this.nodeName == 'ellipse') && data.alternativeOld) {\n convertPrevShape = true;\n }\n if ((tag == 'polygon' || tag == 'ellipse') && data.alternativeNew) {\n convertShape = true;\n }\n if (this.nodeName == 'polygon' && tag == 'polygon' && data.alternativeOld) {\n var prevData = extractElementData(element);\n var prevPoints = prevData.attributes.points;\n if (!convertEqualSidedPolygons) {\n var nPrevPoints = prevPoints.split(' ').length;\n var points = data.attributes.points;\n var nPoints = points.split(' ').length;\n if (nPoints == nPrevPoints) {\n convertShape = false;\n convertPrevShape = false;\n }\n }\n }\n if (convertPrevShape) {\n var prevPathData = data.alternativeOld;\n var pathElement = replaceElement(element, prevPathData);\n pathElement.data([data], function () {\n return data.key;\n });\n element = pathElement;\n }\n if (convertShape) {\n var newPathData = data.alternativeNew;\n tag = 'path';\n attributes = newPathData.attributes;\n }\n }\n var elementTransition = element;\n if (transitionInstance) {\n elementTransition = elementTransition\n .transition(transitionInstance);\n if (fade) {\n elementTransition\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .style(\"opacity\", 1.0);\n }\n elementTransition\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .on(\"end\", function() {\n d3.select(this)\n .attr('style', null);\n });\n }\n var growThisPath = growEnteringEdges && tag == 'path' && data.offset;\n if (growThisPath) {\n var totalLength = data.totalLength;\n element\n .attr(\"stroke-dasharray\", totalLength + \" \" + totalLength)\n .attr(\"stroke-dashoffset\", totalLength)\n .attr('transform', 'translate(' + data.offset.x + ',' + data.offset.y + ')');\n attributes[\"stroke-dashoffset\"] = 0;\n attributes['transform'] = 'translate(0,0)';\n elementTransition\n .attr(\"stroke-dashoffset\", attributes[\"stroke-dashoffset\"])\n .attr('transform', attributes['transform'])\n .on(\"start\", function() {\n d3.select(this)\n .style('opacity', null);\n })\n .on(\"end\", function() {\n d3.select(this)\n .attr('stroke-dashoffset', null)\n .attr('stroke-dasharray', null)\n .attr('transform', null);\n });\n }\n var moveThisPolygon = growEnteringEdges && tag == 'polygon' && isEdgeElement(data) && data.offset && data.parent.children[3].tag == 'path';\n if (moveThisPolygon) {\n var edgePath = d3.select(element.node().parentNode.querySelector(\"path\"));\n var p0 = edgePath.node().getPointAtLength(0);\n var p1 = edgePath.node().getPointAtLength(data.totalLength);\n var p2 = edgePath.node().getPointAtLength(data.totalLength - 1);\n var angle1 = Math.atan2(p1.y - p2.y, p1.x - p2.x) * 180 / Math.PI;\n var x = p0.x - p1.x + data.offset.x;\n var y = p0.y - p1.y + data.offset.y;\n element\n .attr('transform', 'translate(' + x + ',' + y + ')');\n elementTransition\n .attrTween(\"transform\", function () {\n return function (t) {\n var p = edgePath.node().getPointAtLength(data.totalLength * t);\n var p2 = edgePath.node().getPointAtLength(data.totalLength * t + 1);\n var angle = Math.atan2(p2.y - p.y, p2.x - p.x) * 180 / Math.PI - angle1;\n x = p.x - p1.x + data.offset.x * (1 - t);\n y = p.y - p1.y + data.offset.y * (1 - t);\n return 'translate(' + x + ',' + y + ') rotate(' + angle + ' ' + p1.x + ' ' + p1.y + ')';\n }\n })\n .on(\"start\", function() {\n d3.select(this)\n .style('opacity', null);\n })\n .on(\"end\", function() {\n d3.select(this).attr('transform', null);\n });\n }\n var tweenThisPath = tweenPaths && transitionInstance && tag == 'path' && element.attr('d') != null;\n for (var attributeName of Object.keys(attributes)) {\n var attributeValue = attributes[attributeName];\n if (tweenThisPath && attributeName == 'd') {\n var points = (data.alternativeOld || data).points;\n if (points) {\n elementTransition\n .attrTween(\"d\", pathTween(points, attributeValue));\n }\n } else {\n if (attributeName == 'transform' && data.translation) {\n if (transitionInstance) {\n var onEnd = elementTransition.on(\"end\");\n elementTransition\n .on(\"start\", function () {\n if (graphvizInstance._zoomBehavior) {\n // Update the transform to transition to, just before the transition starts\n // in order to catch changes between the transition scheduling to its start.\n elementTransition\n .tween(\"attr.transform\", function() {\n var node = this;\n return function(t) {\n node.setAttribute(\"transform\", interpolateTransformSvg(zoomTransform(graphvizInstance._zoomSelection.node()).toString(), getTranslatedZoomTransform.call(graphvizInstance, element).toString())(t));\n };\n });\n }\n })\n .on(\"end\", function () {\n onEnd.call(this);\n // Update the zoom transform to the new translated transform\n if (graphvizInstance._zoomBehavior) {\n translateZoomBehaviorTransform.call(graphvizInstance, element);\n }\n })\n } else {\n if (graphvizInstance._zoomBehavior) {\n // Update the transform attribute to set with the current pan translation\n attributeValue = getTranslatedZoomTransform.call(graphvizInstance, element).toString();\n }\n }\n }\n elementTransition\n .attr(attributeName, attributeValue);\n }\n }\n if (convertShape) {\n elementTransition\n .on(\"end\", function (d, i, nodes) {\n pathElement = d3.select(this);\n var newElement = replaceElement(pathElement, d);\n newElement.data([d], function () {\n return d.key;\n });\n })\n }\n if (data.text) {\n elementTransition\n .text(data.text);\n }\n insertChildren(element);\n }\n\n var root = this._selection;\n\n if (transitionInstance != null) {\n // Ensure original SVG shape elements are restored after transition before rendering new graph\n var jobs = this._jobs;\n if (graphvizInstance._active) {\n jobs.push(null);\n return this;\n } else {\n root\n .transition(transitionInstance)\n .transition()\n .duration(0)\n .on(\"end\" , function () {\n graphvizInstance._active = false;\n if (jobs.length != 0) {\n jobs.shift();\n graphvizInstance.render();\n }\n });\n this._active = true;\n }\n }\n\n if (transitionInstance != null) {\n root\n .transition(transitionInstance)\n .on(\"start\" , function () {\n graphvizInstance._dispatch.call('transitionStart', graphvizInstance);\n })\n .on(\"end\" , function () {\n graphvizInstance._dispatch.call('transitionEnd', graphvizInstance);\n })\n .transition()\n .duration(0)\n .on(\"start\" , function () {\n graphvizInstance._dispatch.call('restoreEnd', graphvizInstance);\n graphvizInstance._dispatch.call('end', graphvizInstance);\n if (callback) {\n callback.call(graphvizInstance);\n }\n });\n }\n\n var data = this._data;\n\n var svg = root\n .selectAll(\"svg\")\n .data([data], function (d) {return d.key});\n svg = svg\n .enter()\n .append(\"svg\")\n .merge(svg);\n\n attributeElement.call(svg.node(), data);\n\n\n if (this._options.zoom && !this._zoomBehavior) {\n createZoomBehavior.call(this);\n }\n\n graphvizInstance._dispatch.call('renderEnd', graphvizInstance);\n\n if (transitionInstance == null) {\n this._dispatch.call('end', this);\n if (callback) {\n callback.call(this);\n }\n }\n\n return this;\n};\n","import {shallowCopyObject} from \"./utils\";\nimport {roundTo2Decimals} from \"./utils\";\n\nexport function convertToPathData(originalData, guideData) {\n if (originalData.tag == 'polygon') {\n var newData = shallowCopyObject(originalData);\n newData.tag = 'path';\n var originalAttributes = originalData.attributes;\n var newAttributes = shallowCopyObject(originalAttributes);\n var newPointsString = originalAttributes.points;\n if (guideData.tag == 'polygon') {\n var bbox = originalData.bbox;\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n var pointsString = originalAttributes.points;\n var pointStrings = pointsString.split(' ');\n var normPoints = pointStrings.map(function(p) {var xy = p.split(','); return [xy[0] - bbox.cx, xy[1] - bbox.cy]});\n var x0 = normPoints[normPoints.length - 1][0];\n var y0 = normPoints[normPoints.length - 1][1];\n for (var i = 0; i < normPoints.length; i++, x0 = x1, y0 = y1) {\n var x1 = normPoints[i][0];\n var y1 = normPoints[i][1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dy == 0) {\n continue;\n } else {\n var x2 = x0 - y0 * dx / dy;\n }\n if (0 <= x2 && x2 < Infinity && ((x0 <= x2 && x2 <= x1) || (x1 <= x2 && x2 <= x0))) {\n break;\n }\n }\n var newPointStrings = [[bbox.cx + x2, bbox.cy + 0].join(',')];\n newPointStrings = newPointStrings.concat(pointStrings.slice(i));\n newPointStrings = newPointStrings.concat(pointStrings.slice(0, i));\n newPointsString = newPointStrings.join(' ');\n }\n newAttributes['d'] = 'M' + newPointsString + 'z';\n delete newAttributes.points;\n newData.attributes = newAttributes;\n } else /* if (originalData.tag == 'ellipse') */ {\n var newData = shallowCopyObject(originalData);\n newData.tag = 'path';\n var originalAttributes = originalData.attributes;\n var newAttributes = shallowCopyObject(originalAttributes);\n var cx = originalAttributes.cx;\n var cy = originalAttributes.cy;\n var rx = originalAttributes.rx;\n var ry = originalAttributes.ry;\n if (guideData.tag == 'polygon') {\n var bbox = guideData.bbox;\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n var p = guideData.attributes.points.split(' ')[0].split(',');\n var sx = p[0];\n var sy = p[1];\n var dx = sx - bbox.cx;\n var dy = sy - bbox.cy;\n var l = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n var cosA = dx / l;\n var sinA = -dy / l;\n } else { // if (guideData.tag == 'path') {\n // FIXME: add support for getting start position from path\n var cosA = 1;\n var sinA = 0;\n }\n var x1 = rx * cosA;\n var y1 = -ry * sinA;\n var x2 = rx * (-cosA);\n var y2 = -ry * (-sinA);\n var dx = x2 - x1;\n var dy = y2 - y1;\n newAttributes['d'] = 'M ' + cx + ' ' + cy + ' m ' + x1 + ',' + y1 + ' a ' + rx + ',' + ry + ' 0 1,0 ' + dx + ',' + dy + ' a ' + rx + ',' + ry + ' 0 1,0 ' + -dx + ',' + -dy + 'z';\n delete newAttributes.cx;\n delete newAttributes.cy;\n delete newAttributes.rx;\n delete newAttributes.ry;\n newData.attributes = newAttributes;\n }\n return newData;\n}\n\nexport function translatePointsAttribute(pointsString, x, y) {\n var pointStrings = pointsString.split(' ');\n var points = pointStrings.map(function(p) {return p.split(',')});\n var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});\n var pointStrings = points.map(function(p) {return p.join(',')});\n var pointsString = pointStrings.join(' ');\n return pointsString;\n}\n\nexport function translateDAttribute(d, x, y) {\n var pointStrings = d.split(/[A-Z ]/);\n pointStrings.shift();\n var commands = d.split(/[^[A-Z ]+/);\n var points = pointStrings.map(function(p) {return p.split(',')});\n var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});\n var pointStrings = points.map(function(p) {return p.join(',')});\n d = commands.reduce(function(arr, v, i) {\n return arr.concat(v, pointStrings[i]);\n }, []).join('');\n return d;\n}\n","import { graphviz } from \"@hpcc-js/wasm\";\nimport { graphvizSync } from \"@hpcc-js/wasm\";\nimport * as d3 from \"d3-selection\";\nimport {extractAllElementsData, extractElementData, createElementWithAttributes} from \"./element\";\nimport {convertToPathData} from \"./svg\";\nimport {pathTweenPoints} from \"./tweening\";\nimport {isEdgeElement} from \"./data\";\nimport {getEdgeTitle} from \"./data\";\n\n\nexport function initViz() {\n\n // force JIT compilation of Viz.js\n try {\n graphviz.layout(\"\", \"svg\", \"dot\").then(() => {\n graphvizSync().then((graphviz1) => {\n this.layoutSync = graphviz1.layout.bind(graphviz1);\n if (this._worker == null) {\n this._dispatch.call(\"initEnd\", this);\n }\n if (this._afterInit) {\n this._afterInit();\n }\n });\n });\n } catch(error) {\n }\n if (this._worker != null) {\n var vizURL = this._vizURL;\n var graphvizInstance = this;\n this._worker.onmessage = function(event) {\n var callback = graphvizInstance._workerCallbacks.shift();\n switch (event.data.type) {\n case \"init\":\n graphvizInstance._dispatch.call(\"initEnd\", this);\n break;\n case \"done\":\n return layoutDone.call(graphvizInstance, event.data.svg, callback);\n case \"error\":\n if (graphvizInstance._onerror) {\n graphvizInstance._onerror(event.data.error);\n } else {\n throw event.data.error\n }\n break;\n }\n };\n if (!vizURL.match(/^https?:\\/\\/|^\\/\\//i)) {\n // Local URL. Prepend with local domain to be usable in web worker\n vizURL = (new window.URL(vizURL, document.location.href)).href;\n }\n postMessage.call(this, {dot: \"\", engine: 'dot', vizURL: vizURL});\n }\n}\n\nfunction postMessage(message, callback) {\n this._workerCallbacks.push(callback);\n this._worker.postMessage(message);\n}\n\nexport default function(src, callback) {\n\n var graphvizInstance = this;\n var worker = this._worker;\n var engine = this._options.engine;\n var images = this._images;\n\n this._dispatch.call(\"start\", this);\n this._busy = true;\n this._dispatch.call(\"layoutStart\", this);\n var vizOptions = {\n images: images,\n };\n if (this._worker) {\n postMessage.call(this, {\n dot: src,\n engine: engine,\n options: vizOptions,\n }, callback);\n } else {\n if (this.layoutSync == null) {\n this._afterInit = this.dot.bind(this, src, callback);\n return this;\n }\n try {\n var svgDoc = this.layoutSync(src, \"svg\", engine, vizOptions);\n }\n catch(error) {\n if (graphvizInstance._onerror) {\n graphvizInstance._onerror(error.message);\n return this;\n } else {\n throw error.message\n }\n }\n layoutDone.call(this, svgDoc, callback);\n }\n\n return this;\n};\n\nfunction layoutDone(svgDoc, callback) {\n var keyMode = this._options.keyMode;\n var tweenPaths = this._options.tweenPaths;\n var tweenShapes = this._options.tweenShapes;\n if (typeof this._options.tweenPrecision == 'string' && this._options.tweenPrecision.includes('%')) {\n var tweenPrecision = +this._options.tweenPrecision.split('%')[0] / 100;\n var tweenPrecisionIsRelative = this._options.tweenPrecision.includes('%');\n } else {\n var tweenPrecision = this._options.tweenPrecision;\n var tweenPrecisionIsRelative = false;\n }\n var growEnteringEdges = this._options.growEnteringEdges;\n var dictionary = {};\n var prevDictionary = this._dictionary || {};\n var nodeDictionary = {};\n var prevNodeDictionary = this._nodeDictionary || {};\n\n function setKey(datum, index) {\n var tag = datum.tag;\n if (keyMode == 'index') {\n datum.key = index;\n } else if (tag[0] != '#') {\n if (keyMode == 'id') {\n datum.key = datum.attributes.id;\n } else if (keyMode == 'title') {\n var title = datum.children.find(function (childData) {\n return childData.tag == 'title';\n });\n if (title) {\n if (title.children.length > 0) {\n datum.key = title.children[0].text;\n } else {\n datum.key = '';\n }\n }\n }\n }\n if (datum.key == null) {\n if (tweenShapes) {\n if (tag == 'ellipse' || tag == 'polygon') {\n tag = 'path';\n }\n }\n datum.key = tag + '-' + index;\n }\n }\n\n function setId(datum, parentData) {\n var id = (parentData ? parentData.id + '.' : '') + datum.key;\n datum.id = id;\n }\n\n function addToDictionary(datum) {\n dictionary[datum.id] = datum;\n }\n\n function calculateAlternativeShapeData(datum, prevDatum) {\n if (tweenShapes && datum.id in prevDictionary) {\n if ((prevDatum.tag == 'polygon' || prevDatum.tag == 'ellipse' || prevDatum.tag == 'path') && (prevDatum.tag != datum.tag || datum.tag == 'polygon')) {\n if (prevDatum.tag != 'path') {\n datum.alternativeOld = convertToPathData(prevDatum, datum);\n }\n if (datum.tag != 'path') {\n datum.alternativeNew = convertToPathData(datum, prevDatum);\n }\n }\n }\n }\n\n function calculatePathTweenPoints(datum, prevDatum) {\n if (tweenPaths && prevDatum && (prevDatum.tag == 'path' || (datum.alternativeOld && datum.alternativeOld.tag == 'path'))) {\n var attribute_d = (datum.alternativeNew || datum).attributes.d;\n if (datum.alternativeOld) {\n var oldNode = createElementWithAttributes(datum.alternativeOld);\n } else {\n var oldNode = createElementWithAttributes(prevDatum);\n }\n (datum.alternativeOld || (datum.alternativeOld = {})).points = pathTweenPoints(oldNode, attribute_d, tweenPrecision, tweenPrecisionIsRelative);\n }\n }\n\n function postProcessDataPass1Local(datum, index=0, parentData) {\n setKey(datum, index);\n setId(datum, parentData);\n var id = datum.id;\n var prevDatum = prevDictionary[id];\n addToDictionary(datum);\n calculateAlternativeShapeData(datum, prevDatum);\n calculatePathTweenPoints(datum, prevDatum);\n var childTagIndexes = {};\n datum.children.forEach(function (childData) {\n var childTag = childData.tag;\n if (childTag == 'ellipse' || childTag == 'polygon') {\n childTag = 'path';\n }\n if (childTagIndexes[childTag] == null) {\n childTagIndexes[childTag] = 0;\n }\n var childIndex = childTagIndexes[childTag]++;\n postProcessDataPass1Local(childData, childIndex, datum);\n });\n }\n\n function addToNodeDictionary(datum) {\n var tag = datum.tag;\n if (growEnteringEdges && datum.parent) {\n if (datum.parent.attributes.class == 'node') {\n if (tag == 'title') {\n if (datum.children.length > 0) {\n var child = datum.children[0];\n var nodeId = child.text;\n } else {\n var nodeId = '';\n }\n nodeDictionary[nodeId] = datum.parent;\n }\n }\n }\n }\n\n function extractGrowingEdgesData(datum) {\n var id = datum.id;\n var tag = datum.tag;\n var prevDatum = prevDictionary[id];\n if (growEnteringEdges && !prevDatum && datum.parent) {\n if (isEdgeElement(datum)) {\n if (tag == 'path' || tag == 'polygon') {\n if (tag == 'polygon') {\n var path = datum.parent.children.find(function (e) {\n return e.tag == 'path';\n });\n if (path) {\n datum.totalLength = path.totalLength;\n }\n }\n var title = getEdgeTitle(datum);\n var child = title.children[0];\n var nodeIds = child.text.split('->');\n if (nodeIds.length != 2) {\n nodeIds = child.text.split('--');\n }\n var startNodeId = nodeIds[0];\n var startNode = nodeDictionary[startNodeId];\n var prevStartNode = prevNodeDictionary[startNodeId];\n if (prevStartNode) {\n var i = startNode.children.findIndex(function (element, index) {\n return element.tag == 'g';\n });\n if (i >= 0) {\n var j = startNode.children[i].children.findIndex(function (element, index) {\n return element.tag == 'a';\n });\n startNode = startNode.children[i].children[j];\n }\n var i = prevStartNode.children.findIndex(function (element, index) {\n return element.tag == 'g';\n });\n if (i >= 0) {\n var j = prevStartNode.children[i].children.findIndex(function (element, index) {\n return element.tag == 'a';\n });\n prevStartNode = prevStartNode.children[i].children[j];\n }\n var startShapes = startNode.children;\n for (var i = 0; i < startShapes.length; i++) {\n if (startShapes[i].tag == 'polygon' || startShapes[i].tag == 'ellipse' || startShapes[i].tag == 'path' || startShapes[i].tag == 'text') {\n var startShape = startShapes[i];\n break;\n }\n }\n var prevStartShapes = prevStartNode.children;\n for (var i = 0; i < prevStartShapes.length; i++) {\n if (prevStartShapes[i].tag == 'polygon' || prevStartShapes[i].tag == 'ellipse' || prevStartShapes[i].tag == 'path' || prevStartShapes[i].tag == 'text') {\n var prevStartShape = prevStartShapes[i];\n break;\n }\n }\n if (prevStartShape && startShape) {\n datum.offset = {\n x: prevStartShape.center.x - startShape.center.x,\n y: prevStartShape.center.y - startShape.center.y,\n }\n } else {\n datum.offset = {x: 0, y: 0};\n }\n }\n }\n }\n }\n }\n\n function postProcessDataPass2Global(datum) {\n addToNodeDictionary(datum);\n extractGrowingEdgesData(datum);\n datum.children.forEach(function (childData) {\n postProcessDataPass2Global(childData);\n });\n }\n\n this._dispatch.call(\"layoutEnd\", this);\n\n var newDoc = d3.select(document.createDocumentFragment())\n .append('div');\n\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n\n newDoc\n .append(function() {\n return doc.documentElement;\n });\n\n var newSvg = newDoc\n .select('svg');\n\n var data = extractAllElementsData(newSvg);\n this._dispatch.call('dataExtractEnd', this);\n postProcessDataPass1Local(data);\n this._dispatch.call('dataProcessPass1End', this);\n postProcessDataPass2Global(data);\n this._dispatch.call('dataProcessPass2End', this);\n this._data = data;\n this._dictionary = dictionary;\n this._nodeDictionary = nodeDictionary;\n\n this._extractData = function (element, childIndex, parentData) {\n var data = extractAllElementsData(element);\n postProcessDataPass1Local(data, childIndex, parentData);\n postProcessDataPass2Global(data);\n return data;\n }\n this._busy = false;\n this._dispatch.call('dataProcessEnd', this);\n if (callback) {\n callback.call(this);\n }\n if (this._queue.length > 0) {\n var job = this._queue.shift();\n job.call(this);\n }\n}\n","export default function(src, callback) {\n\n var graphvizInstance = this;\n\n this\n .dot(src, render);\n\n function render() {\n graphvizInstance\n .render(callback);\n }\n\n return this;\n};\n","import {transition} from \"d3-transition\";\nimport {active as d3_active} from \"d3-transition\";\n\nexport default function(name) {\n\n if (name instanceof Function) {\n this._transitionFactory = name;\n } else {\n this._transition = transition(name);\n }\n\n return this;\n};\n\nexport function active(name) {\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n if (svg.size() != 0) {\n return d3_active(svg.node(), name);\n } else {\n return null;\n }\n};\n","export default function(options) {\n\n if (typeof options == 'undefined') {\n return Object.assign({}, this._options);\n } else {\n for (var option of Object.keys(options)) {\n this._options[option] = options[option];\n }\n return this;\n }\n};\n","export default function(width) {\n\n this._options.width = width;\n\n return this;\n};\n","export default function(height) {\n\n this._options.height = height;\n\n return this;\n};\n","export default function(scale) {\n\n this._options.scale = scale;\n\n return this;\n};\n","export default function(fit) {\n\n this._options.fit = fit;\n\n return this;\n};\n","export default function(callback) {\n\n this._attributer = callback;\n\n return this;\n};\n","export default function(engine) {\n\n this._options.engine = engine;\n\n return this;\n};\n","export default function(path, width, height) {\n\n this._images.push({path:path, width: width, height:height})\n\n return this;\n};\n","export default function(keyMode) {\n\n if (!this._keyModes.has(keyMode)) {\n throw Error('Illegal keyMode: ' + keyMode);\n }\n if (keyMode != this._options.keyMode && this._data != null) {\n throw Error('Too late to change keyMode');\n }\n this._options.keyMode = keyMode;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.fade = enable\n\n return this;\n};\n","export default function(enable) {\n\n this._options.tweenPaths = enable;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.tweenShapes = enable;\n if (enable) {\n this._options.tweenPaths = true;\n }\n\n return this;\n};\n","export default function(enable) {\n\n this._options.convertEqualSidedPolygons = enable;\n\n return this;\n};\n","export default function(precision) {\n\n this._options.tweenPrecision = precision;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.growEnteringEdges = enable;\n\n return this;\n};\n","export default function(typenames, callback) {\n\n this._dispatch.on(typenames, callback);\n\n return this;\n};\n","export default function(callback) {\n\n this._onerror = callback\n\n return this;\n};\n","import {format} from \"d3-format\";\n\nexport default function(enable) {\n\n var t0 = Date.now();\n var times = {};\n var eventTypes = this._eventTypes;\n var maxEventTypeLength = Math.max(...(eventTypes.map(eventType => eventType.length)));\n for (let i in eventTypes) {\n let eventType = eventTypes[i];\n times[eventType] = [];\n var graphvizInstance = this;\n var expectedDelay;\n var expectedDuration;\n this\n .on(eventType + '.log', enable ? function () {\n var t = Date.now();\n var seqNo = times[eventType].length;\n times[eventType].push(t);\n var string = '';\n string += 'Event ';\n string += format(' >2')(i) + ' ';\n string += eventType + ' '.repeat(maxEventTypeLength - eventType.length);\n string += format(' >5')(t - t0) + ' ';\n if (eventType != 'initEnd') {\n string += format(' >5')(t - times['start'][seqNo]);\n }\n if (eventType == 'dataProcessEnd') {\n string += ' prepare ' + format(' >5')((t - times['layoutEnd'][seqNo]));\n }\n if (eventType == 'renderEnd' && graphvizInstance._transition) {\n string += ' transition start margin ' + format(' >5')(graphvizInstance._transition.delay() - (t - times['renderStart'][seqNo]));\n expectedDelay = graphvizInstance._transition.delay();\n expectedDuration = graphvizInstance._transition.duration();\n }\n if (eventType == 'transitionStart') {\n var actualDelay = (t - times['renderStart'][seqNo])\n string += ' transition delay ' + format(' >5')(t - times['renderStart'][seqNo]);\n string += ' expected ' + format(' >5')(expectedDelay);\n string += ' diff ' + format(' >5')(actualDelay - expectedDelay);\n }\n if (eventType == 'transitionEnd') {\n var actualDuration = t - times['transitionStart'][seqNo]\n string += ' transition duration ' + format(' >5')(actualDuration);\n string += ' expected ' + format(' >5')(expectedDuration);\n string += ' diff ' + format(' >5')(actualDuration - expectedDuration);\n }\n console.log(string);\n t0 = t;\n } : null);\n }\n return this;\n}\n","export function rotate(x, y, cosA, sinA) {\n // (x + j * y) * (cosA + j * sinA) = x * cosA - y * sinA + j * (x * sinA + y * cosA)\n y = -y;\n sinA = -sinA;\n [x, y] = [x * cosA - y * sinA, x * sinA + y * cosA];\n y = -y;\n return [x, y];\n}\n","import * as d3 from \"d3-selection\";\nimport {path as d3_path} from \"d3-path\";\nimport {rotate} from \"./geometry\";\nimport {extractAllElementsData} from \"./element\";\nimport {attributeElement} from \"./element\";\nimport {insertAllElementsData} from \"./element\";\n\nexport function drawEdge(x1, y1, x2, y2, attributes, options={}) {\n attributes = Object.assign({}, attributes);\n if (attributes.style && attributes.style.includes('invis')) {\n var newEdge = d3.select(null);\n } else {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var newEdge0 = createEdge.call(this, attributes);\n var edgeData = extractAllElementsData(newEdge0);\n var newEdge = graph0.append('g')\n .data([edgeData]);\n attributeElement.call(newEdge.node(), edgeData);\n _updateEdge.call(this, newEdge, x1, y1, x2, y2, attributes, options);\n }\n this._drawnEdge = {\n g: newEdge,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n attributes: attributes,\n };\n\n return this;\n}\n\nexport function updateDrawnEdge(x1, y1, x2, y2, attributes={}, options={}) {\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n var edge = this._drawnEdge.g\n attributes = Object.assign(this._drawnEdge.attributes, attributes);\n this._drawnEdge.x1 = x1;\n this._drawnEdge.y1 = y1;\n this._drawnEdge.x2 = x2;\n this._drawnEdge.y2 = y2;\n if (edge.empty() && !(attributes.style && attributes.style.includes('invis'))) {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var edge = graph0.append('g');\n this._drawnEdge.g = edge;\n }\n if (!edge.empty()) {\n _updateEdge.call(this, edge, x1, y1, x2, y2, attributes, options);\n }\n\n return this;\n}\n\nfunction _updateEdge(edge, x1, y1, x2, y2, attributes, options) {\n\n var newEdge = createEdge.call(this, attributes);\n var edgeData = extractAllElementsData(newEdge);\n edge.data([edgeData]);\n attributeElement.call(edge.node(), edgeData);\n _moveEdge(edge, x1, y1, x2, y2, attributes, options);\n}\n\nfunction _moveEdge(edge, x1, y1, x2, y2, attributes, options) {\n\n var shortening = options.shortening || 0;\n var arrowHeadLength = 10;\n var arrowHeadWidth = 7;\n var margin = 0.1;\n\n var arrowHeadPoints = [\n [0, -arrowHeadWidth / 2],\n [arrowHeadLength, 0],\n [0, arrowHeadWidth / 2],\n [0, -arrowHeadWidth / 2],\n ];\n\n var dx = x2 - x1;\n var dy = y2 - y1;\n var length = Math.sqrt(dx * dx + dy * dy);\n if (length == 0) {\n var cosA = 1;\n var sinA = 0;\n } else {\n var cosA = dx / length;\n var sinA = dy / length;\n }\n x2 = x1 + (length - shortening - arrowHeadLength - margin) * cosA;\n y2 = y1 + (length - shortening - arrowHeadLength - margin) * sinA;\n\n if (attributes.URL || attributes.tooltip) {\n var a = edge.selectWithoutDataPropagation(\"g\").selectWithoutDataPropagation(\"a\");\n var line = a.selectWithoutDataPropagation(\"path\");\n var arrowHead = a.selectWithoutDataPropagation(\"polygon\");\n } else {\n var line = edge.selectWithoutDataPropagation(\"path\");\n var arrowHead = edge.selectWithoutDataPropagation(\"polygon\");\n }\n\n var path1 = d3_path();\n path1.moveTo(x1, y1);\n path1.lineTo(x2, y2);\n\n line\n .attr(\"d\", path1);\n\n x2 = x1 + (length - shortening - arrowHeadLength) * cosA;\n y2 = y1 + (length - shortening - arrowHeadLength) * sinA;\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n arrowHeadPoints[i] = rotate(point[0], point[1], cosA, sinA);\n }\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n arrowHeadPoints[i] = [x2 + point[0], y2 + point[1]];\n }\n var allPoints = [];\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n allPoints.push(point.join(','));\n }\n var pointsAttr = allPoints.join(' ');\n\n arrowHead\n .attr(\"points\", pointsAttr);\n\n return this;\n}\n\nexport function moveDrawnEdgeEndPoint(x2, y2, options={}) {\n\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n var edge = this._drawnEdge.g;\n var x1 = this._drawnEdge.x1;\n var y1 = this._drawnEdge.y1;\n var attributes = this._drawnEdge.attributes;\n\n this._drawnEdge.x2 = x2;\n this._drawnEdge.y2 = y2;\n _moveEdge(edge, x1, y1, x2, y2, attributes, options);\n\n return this\n}\n\nexport function removeDrawnEdge() {\n\n if (!this._drawnEdge) {\n return this;\n }\n\n var edge = this._drawnEdge.g;\n\n edge.remove();\n\n this._drawnEdge = null;\n\n return this\n}\n\nexport function insertDrawnEdge(name) {\n\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n\n var edge = this._drawnEdge.g;\n if (edge.empty()) {\n return this;\n }\n var attributes = this._drawnEdge.attributes;\n\n var title = edge.selectWithoutDataPropagation(\"title\");\n title\n .text(name);\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var graph0Datum = graph0.datum();\n var edgeData = this._extractData(edge, graph0Datum.children.length, graph0.datum());\n graph0Datum.children.push(edgeData);\n\n insertAllElementsData(edge, edgeData);\n\n this._drawnEdge = null;\n\n return this\n\n}\n\nexport function drawnEdgeSelection() {\n\n if (this._drawnEdge) {\n return this._drawnEdge.g;\n } else {\n return d3.select(null);\n }\n\n}\n\n\nfunction createEdge(attributes) {\n var attributesString = ''\n for (var name of Object.keys(attributes)) {\n if (attributes[name] != null) {\n attributesString += ' \"' + name + '\"=\"' + attributes[name] + '\"';\n }\n }\n var dotSrc = 'digraph {a -> b [' + attributesString + ']}';\n var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n var newDoc = d3.select(document.createDocumentFragment())\n .append(function() {\n return doc.documentElement;\n });\n var edge = newDoc.select('.edge');\n\n return edge;\n}\n","import * as d3 from \"d3-selection\";\nimport {rotate} from \"./geometry\";\nimport {extractAllElementsData} from \"./element\";\nimport {translatePointsAttribute} from \"./svg\";\nimport {translateDAttribute} from \"./svg\";\nimport {insertAllElementsData} from \"./element\";\nimport {attributeElement} from \"./element\";\nimport {roundTo2Decimals} from \"./utils\";\n\nexport function drawNode(x, y, nodeId, attributes={}, options={}) {\n attributes = Object.assign({}, attributes);\n if (attributes.style && attributes.style.includes('invis')) {\n var newNode = d3.select(null);\n } else {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var newNode0 = createNode.call(this, nodeId, attributes);\n var nodeData = extractAllElementsData(newNode0);\n var newNode = graph0.append('g')\n .data([nodeData]);\n attributeElement.call(newNode.node(), nodeData);\n _updateNode.call(this, newNode, x, y, nodeId, attributes, options);\n }\n this._drawnNode = {\n g: newNode,\n nodeId: nodeId,\n x: x,\n y: y,\n attributes: attributes,\n };\n\n return this;\n}\n\nexport function updateDrawnNode(x, y, nodeId, attributes={}, options={}) {\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n\n var node = this._drawnNode.g\n if (nodeId == null) {\n nodeId = this._drawnNode.nodeId;\n }\n attributes = Object.assign(this._drawnNode.attributes, attributes);\n this._drawnNode.nodeId = nodeId;\n this._drawnNode.x = x;\n this._drawnNode.y = y;\n if (node.empty() && !(attributes.style && attributes.style.includes('invis'))) {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var node = graph0.append('g');\n this._drawnNode.g = node;\n }\n if (!node.empty()) {\n _updateNode.call(this, node, x, y, nodeId, attributes, options);\n }\n\n return this;\n}\n\nfunction _updateNode(node, x, y, nodeId, attributes, options) {\n\n var newNode = createNode.call(this, nodeId, attributes);\n var nodeData = extractAllElementsData(newNode);\n node.data([nodeData]);\n attributeElement.call(node.node(), nodeData);\n _moveNode(node, x, y, attributes, options);\n\n return this;\n}\n\nfunction _moveNode(node, x, y, attributes, options) {\n if (attributes.URL || attributes.tooltip) {\n var subParent = node.selectWithoutDataPropagation(\"g\").selectWithoutDataPropagation(\"a\");\n } else {\n var subParent = node;\n }\n var svgElements = subParent.selectAll('ellipse,polygon,path,polyline');\n var text = node.selectWithoutDataPropagation(\"text\");\n\n if (svgElements.size() != 0) {\n var bbox = svgElements.node().getBBox();\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n } else if (text.size() != 0) {\n bbox = {\n x: +text.attr('x'),\n y: +text.attr('y'),\n width: 0,\n height: 0,\n cx: +text.attr('x'),\n cy: +text.attr('y'),\n }\n }\n svgElements.each(function(data, index) {\n var svgElement = d3.select(this);\n if (svgElement.attr(\"cx\")) {\n svgElement\n .attr(\"cx\", roundTo2Decimals(x))\n .attr(\"cy\", roundTo2Decimals(y));\n } else if (svgElement.attr(\"points\")) {\n var pointsString = svgElement.attr('points').trim();\n svgElement\n .attr(\"points\", translatePointsAttribute(pointsString, x - bbox.cx, y - bbox.cy));\n } else {\n var d = svgElement.attr('d');\n svgElement\n .attr(\"d\", translateDAttribute(d, x - bbox.cx, y - bbox.cy));\n }\n });\n\n if (text.size() != 0) {\n text\n .attr(\"x\", roundTo2Decimals(+text.attr(\"x\") + x - bbox.cx))\n .attr(\"y\", roundTo2Decimals(+text.attr(\"y\") + y - bbox.cy));\n }\n return this;\n}\n\nexport function moveDrawnNode(x, y, options={}) {\n\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n var node = this._drawnNode.g;\n var attributes = this._drawnNode.attributes;\n\n this._drawnNode.x = x;\n this._drawnNode.y = y;\n\n if (!node.empty()) {\n _moveNode(node, x, y, attributes, options);\n }\n\n return this\n}\n\nexport function removeDrawnNode() {\n\n if (!this._drawnNode) {\n return this;\n }\n\n var node = this._drawnNode.g;\n\n if (!node.empty()) {\n node.remove();\n }\n\n this._drawnNode = null;\n\n return this\n}\n\nexport function insertDrawnNode(nodeId) {\n\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n\n if (nodeId == null) {\n nodeId = this._drawnNode.nodeId;\n }\n var node = this._drawnNode.g;\n if (node.empty()) {\n return this;\n }\n var attributes = this._drawnNode.attributes;\n\n var title = node.selectWithoutDataPropagation(\"title\");\n title\n .text(nodeId);\n if (attributes.URL || attributes.tooltip) {\n var ga = node.selectWithoutDataPropagation(\"g\");\n var a = ga.selectWithoutDataPropagation(\"a\");\n var svgElement = a.selectWithoutDataPropagation('ellipse,polygon,path,polyline');\n var text = a.selectWithoutDataPropagation('text');\n } else {\n var svgElement = node.selectWithoutDataPropagation('ellipse,polygon,path,polyline');\n var text = node.selectWithoutDataPropagation('text');\n }\n text\n .text(attributes.label || nodeId);\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var graph0Datum = graph0.datum();\n var nodeData = this._extractData(node, graph0Datum.children.length, graph0.datum());\n graph0Datum.children.push(nodeData);\n\n insertAllElementsData(node, nodeData);\n\n this._drawnNode = null;\n\n return this\n\n}\n\nexport function drawnNodeSelection() {\n\n if (this._drawnNode) {\n return this._drawnNode.g;\n } else {\n return d3.select(null);\n }\n\n}\n\nfunction createNode(nodeId, attributes) {\n var attributesString = ''\n for (var name of Object.keys(attributes)) {\n if (attributes[name] != null) {\n attributesString += ' \"' + name + '\"=\"' + attributes[name] + '\"';\n }\n }\n var dotSrc = 'graph {\"' + nodeId + '\" [' + attributesString + ']}';\n var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n var newDoc = d3.select(document.createDocumentFragment())\n .append(function() {\n return doc.documentElement;\n });\n var node = newDoc.select('.node');\n\n return node;\n}\n","/* This file is excluded from coverage because the intrumented code\n * translates \"self\" which gives a reference error.\n */\n\n/* istanbul ignore next */\n\nexport function workerCode() {\n self.document = {}; // Workaround for \"ReferenceError: document is not defined\" in hpccWasm\n var hpccWasm;\n\n self.onmessage = function(event) {\n if (event.data.vizURL) {\n importScripts(event.data.vizURL);\n hpccWasm = self[\"@hpcc-js/wasm\"];\n hpccWasm.wasmFolder(event.data.vizURL.match(/.*\\//));\n // This is an alternative workaround where wasmFolder() is not needed\n // document = {currentScript: {src: event.data.vizURL}};\n }\n hpccWasm.graphviz.layout(event.data.dot, \"svg\", event.data.engine, event.data.options).then((svg) => {\n if (svg) {\n self.postMessage({\n type: \"done\",\n svg: svg,\n });\n } else if (event.data.vizURL) {\n self.postMessage({\n type: \"init\",\n });\n } else {\n self.postMessage({\n type: \"skip\",\n });\n }\n }).catch(error => {\n self.postMessage({\n type: \"error\",\n error: error.message,\n });\n });\n }\n}\n","import * as d3 from \"d3-selection\";\nimport {dispatch} from \"d3-dispatch\";\nimport render from \"./render\";\nimport dot from \"./dot\";\nimport data from \"./data\";\nimport {initViz} from \"./dot\";\nimport renderDot from \"./renderDot\";\nimport transition from \"./transition\";\nimport {active} from \"./transition\";\nimport options from \"./options\";\nimport width from \"./width\";\nimport height from \"./height\";\nimport scale from \"./scale\";\nimport fit from \"./fit\";\nimport attributer from \"./attributer\";\nimport engine from \"./engine\";\nimport images from \"./images\";\nimport keyMode from \"./keyMode\";\nimport fade from \"./fade\";\nimport tweenPaths from \"./tweenPaths\";\nimport tweenShapes from \"./tweenShapes\";\nimport convertEqualSidedPolygons from \"./convertEqualSidedPolygons\";\nimport tweenPrecision from \"./tweenPrecision\";\nimport growEnteringEdges from \"./growEnteringEdges\";\nimport zoom from \"./zoom\";\nimport {resetZoom} from \"./zoom\";\nimport {zoomBehavior} from \"./zoom\";\nimport {zoomSelection} from \"./zoom\";\nimport {zoomScaleExtent} from \"./zoom\";\nimport {zoomTranslateExtent} from \"./zoom\";\nimport on from \"./on\";\nimport onerror from \"./onerror\";\nimport logEvents from \"./logEvents\";\nimport {drawEdge} from \"./drawEdge\";\nimport {updateDrawnEdge} from \"./drawEdge\";\nimport {moveDrawnEdgeEndPoint} from \"./drawEdge\";\nimport {insertDrawnEdge} from \"./drawEdge\";\nimport {removeDrawnEdge} from \"./drawEdge\";\nimport {drawnEdgeSelection} from \"./drawEdge\";\nimport {drawNode} from \"./drawNode\";\nimport {updateDrawnNode} from \"./drawNode\";\nimport {moveDrawnNode} from \"./drawNode\";\nimport {insertDrawnNode} from \"./drawNode\";\nimport {removeDrawnNode} from \"./drawNode\";\nimport {drawnNodeSelection} from \"./drawNode\";\nimport {workerCode} from \"./workerCode\";\n\nexport function Graphviz(selection, options) {\n this._options = {\n useWorker: true,\n engine: 'dot',\n keyMode: 'title',\n fade: true,\n tweenPaths: true,\n tweenShapes: true,\n convertEqualSidedPolygons: true,\n tweenPrecision: 1,\n growEnteringEdges: true,\n zoom: true,\n zoomScaleExtent: [0.1, 10],\n zoomTranslateExtent: [[-Infinity, -Infinity], [+Infinity, +Infinity]],\n width: null,\n height: null,\n scale: 1,\n fit: false,\n };\n if (options instanceof Object) {\n for (var option of Object.keys(options)) {\n this._options[option] = options[option];\n }\n } else if (typeof options == 'boolean') {\n this._options.useWorker = options;\n }\n var useWorker = this._options.useWorker;\n if (typeof Worker == 'undefined') {\n useWorker = false;\n }\n if (useWorker) {\n var scripts = d3.selectAll('script');\n var vizScript = scripts.filter(function() {\n return d3.select(this).attr('type') == 'javascript/worker' || (d3.select(this).attr('src') && d3.select(this).attr('src').match(/.*\\/@hpcc-js\\/wasm/));\n });\n if (vizScript.size() == 0) {\n console.warn('No script tag of type \"javascript/worker\" was found and \"useWorker\" is true. Not using web worker.');\n useWorker = false;\n } else {\n this._vizURL = vizScript.attr('src');\n if (!this._vizURL) {\n console.warn('No \"src\" attribute of was found on the \"javascript/worker\" script tag and \"useWorker\" is true. Not using web worker.');\n useWorker = false;\n }\n }\n }\n if (useWorker) {\n var blob = new Blob(['(' + workerCode.toString() + ')()']);\n var blobURL = window.URL.createObjectURL(blob);\n this._worker = new Worker(blobURL);\n this._workerCallbacks = [];\n }\n this._selection = selection;\n this._active = false;\n this._busy = false;\n this._jobs = [];\n this._queue = [];\n this._keyModes = new Set([\n 'title',\n 'id',\n 'tag-index',\n 'index'\n ]);\n this._images = [];\n this._translation = undefined;\n this._scale = undefined;\n this._eventTypes = [\n 'initEnd',\n 'start',\n 'layoutStart',\n 'layoutEnd',\n 'dataExtractEnd',\n 'dataProcessPass1End',\n 'dataProcessPass2End',\n 'dataProcessEnd',\n 'renderStart',\n 'renderEnd',\n 'transitionStart',\n 'transitionEnd',\n 'restoreEnd',\n 'end'\n ];\n this._dispatch = dispatch(...this._eventTypes);\n initViz.call(this);\n selection.node().__graphviz__ = this;\n}\n\nexport default function graphviz(selector, options) {\n var g = d3.select(selector).graphviz(options);\n return g;\n}\n\nGraphviz.prototype = graphviz.prototype = {\n constructor: Graphviz,\n engine: engine,\n addImage: images,\n keyMode: keyMode,\n fade: fade,\n tweenPaths: tweenPaths,\n tweenShapes: tweenShapes,\n convertEqualSidedPolygons: convertEqualSidedPolygons,\n tweenPrecision: tweenPrecision,\n growEnteringEdges: growEnteringEdges,\n zoom: zoom,\n resetZoom: resetZoom,\n zoomBehavior: zoomBehavior,\n zoomSelection: zoomSelection,\n zoomScaleExtent: zoomScaleExtent,\n zoomTranslateExtent: zoomTranslateExtent,\n render: render,\n dot: dot,\n data: data,\n renderDot: renderDot,\n transition: transition,\n active: active,\n options: options,\n width: width,\n height: height,\n scale: scale,\n fit: fit,\n attributer: attributer,\n on: on,\n onerror: onerror,\n logEvents: logEvents,\n drawEdge: drawEdge,\n updateDrawnEdge: updateDrawnEdge,\n moveDrawnEdgeEndPoint,\n insertDrawnEdge,\n removeDrawnEdge, removeDrawnEdge,\n drawnEdgeSelection, drawnEdgeSelection,\n drawNode: drawNode,\n updateDrawnNode: updateDrawnNode,\n moveDrawnNode: moveDrawnNode,\n insertDrawnNode,\n removeDrawnNode, removeDrawnNode,\n drawnNodeSelection, drawnNodeSelection,\n};\n","import {Graphviz} from \"../graphviz\";\nimport {timeout} from \"d3-timer\";\n\nexport default function(options) {\n\n var g = this.node().__graphviz__;\n if (g) {\n g.options(options);\n // Ensure a possible new initEnd event handler is attached before calling it\n timeout(function () {\n g._dispatch.call(\"initEnd\", this);\n }.bind(this), 0);\n } else {\n g = new Graphviz(this, options);\n }\n return g;\n}\n","import * as d3 from \"d3-selection\";\n\nexport default function(name) {\n\n return d3.select(this.size() > 0 ? this.node().querySelector(name) : null);\n}\n","import {selection} from \"d3-selection\";\nimport selection_graphviz from \"./graphviz\";\nimport selection_selectWithoutDataPropagation from \"./selectWithoutDataPropagation\";\n\nselection.prototype.graphviz = selection_graphviz;\nselection.prototype.selectWithoutDataPropagation = selection_selectWithoutDataPropagation;\n"],"names":["extractElementData","element","datum","tag","node","nodeName","text","comment","attributes","i","length","attribute","name","value","transform","baseVal","numberOfItems","matrix","consolidate","translation","x","e","y","f","scale","a","center","cx","cy","points","attr","split","map","p","xmin","Math","min","apply","xmax","max","ymin","ymax","bbox","width","height","d","shift","totalLength","getTotalLength","extractAllElementsData","children","d3","childNodes","each","childData","parent","push","createElement","data","document","createTextNode","createComment","createElementNS","createElementWithAttributes","elementNode","Object","keys","attributeName","attributeValue","replaceElement","parentNode","newElementNode","newElement","insert","remove","insertElementData","key","insertAllElementsData","insertChildren","index","selectAll","childrenEnter","enter","append","childrenExit","exit","merge","childTagIndexes","childTag","childIndex","attributeElement","call","currentAttributes","currentAttribute","namespaceURI","namespaceURIParts","namespace","shallowCopyObject","obj","assign","roundTo2Decimals","round","enable","_options","zoom","_zoomBehavior","createZoomBehavior","zoomed","g","svg","querySelector","root","_selection","size","_zoomSelection","zoomBehavior","scaleExtent","zoomScaleExtent","translateExtent","zoomTranslateExtent","interpolate","on","_active","translateZoomBehaviorTransform","_originalTransform","zoomTransform","getTranslatedZoomTransform","selection","oldTranslation","_translation","oldScale","_scale","newTranslation","newScale","t","translate","zoomIdentity","resetZoom","transition","extent","zoomSelection","pathTween","d1","pointInterpolators","join","pathTweenPoints","precision","precisionIsRelative","path0","path1","cloneNode","n0","n1","setAttribute","distances","dt","p0","getPointAtLength","p1","_data","isEdgeElementParent","isEdgeElement","getEdgeGroup","getEdgeTitle","find","callback","_busy","_queue","render","bind","_dispatch","_transitionFactory","timeout","_transition","_render","transitionInstance","fade","tweenPaths","tweenShapes","convertEqualSidedPolygons","growEnteringEdges","attributer","_attributer","graphvizInstance","nodeValue","childElementsEnter","filter","childEnter","style","options","replace","fit","viewBox","convertShape","convertPrevShape","alternativeOld","alternativeNew","prevData","prevPoints","nPrevPoints","nPoints","prevPathData","pathElement","newPathData","elementTransition","growThisPath","offset","moveThisPolygon","edgePath","p2","angle1","atan2","PI","attrTween","angle","tweenThisPath","onEnd","tween","interpolateTransformSvg","toString","nodes","jobs","_jobs","duration","convertToPathData","originalData","guideData","newData","originalAttributes","newAttributes","newPointsString","pointsString","pointStrings","normPoints","xy","x0","y0","x1","y1","dx","dy","x2","Infinity","newPointStrings","concat","slice","rx","ry","sx","sy","l","sqrt","pow","cosA","sinA","y2","translatePointsAttribute","translateDAttribute","commands","reduce","arr","v","initViz","graphviz","layout","then","graphvizSync","graphviz1","layoutSync","_worker","_afterInit","error","vizURL","_vizURL","onmessage","event","_workerCallbacks","type","layoutDone","_onerror","match","window","URL","location","href","postMessage","dot","engine","message","src","worker","images","_images","vizOptions","svgDoc","keyMode","tweenPrecision","includes","tweenPrecisionIsRelative","dictionary","prevDictionary","_dictionary","nodeDictionary","prevNodeDictionary","_nodeDictionary","setKey","id","title","setId","parentData","addToDictionary","calculateAlternativeShapeData","prevDatum","calculatePathTweenPoints","attribute_d","oldNode","postProcessDataPass1Local","forEach","addToNodeDictionary","child","nodeId","extractGrowingEdgesData","path","nodeIds","startNodeId","startNode","prevStartNode","findIndex","j","startShapes","startShape","prevStartShapes","prevStartShape","postProcessDataPass2Global","newDoc","createDocumentFragment","parser","DOMParser","doc","parseFromString","documentElement","newSvg","select","_extractData","job","Function","active","selectWithoutDataPropagation","d3_active","option","_keyModes","has","Error","typenames","t0","Date","now","times","eventTypes","_eventTypes","maxEventTypeLength","eventType","seqNo","string","format","repeat","delay","expectedDelay","expectedDuration","actualDelay","actualDuration","console","log","rotate","drawEdge","newEdge","graph0","newEdge0","createEdge","edgeData","_updateEdge","_drawnEdge","updateDrawnEdge","edge","empty","_moveEdge","shortening","arrowHeadLength","arrowHeadWidth","margin","arrowHeadPoints","tooltip","line","arrowHead","d3_path","moveTo","lineTo","point","allPoints","pointsAttr","moveDrawnEdgeEndPoint","removeDrawnEdge","insertDrawnEdge","graph0Datum","drawnEdgeSelection","attributesString","dotSrc","drawNode","newNode","newNode0","createNode","nodeData","_updateNode","_drawnNode","updateDrawnNode","_moveNode","subParent","svgElements","getBBox","svgElement","trim","moveDrawnNode","removeDrawnNode","insertDrawnNode","ga","label","drawnNodeSelection","workerCode","self","hpccWasm","importScripts","wasmFolder","Graphviz","useWorker","Worker","scripts","vizScript","warn","blob","Blob","blobURL","createObjectURL","Set","undefined","dispatch","__graphviz__","selector","prototype","constructor","addImage","renderDot","onerror","logEvents","selection_graphviz","selection_selectWithoutDataPropagation"],"mappings":"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"}