-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathd3-graphviz.min.js
1 lines (1 loc) · 26.1 KB
/
d3-graphviz.min.js
1
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-selection"),require("d3-dispatch"),require("d3-transition"),require("d3-timer"),require("d3-interpolate"),require("d3-zoom"),require("viz.js/viz"),require("d3-format"),require("d3-path")):"function"==typeof define&&define.amd?define(["exports","d3-selection","d3-dispatch","d3-transition","d3-timer","d3-interpolate","d3-zoom","viz.js/viz","d3-format","d3-path"],e):e(t["d3-graphviz"]={},t.d3,t.d3,t.d3,t.d3,t.d3,t.d3,t.Viz,t.d3,t.d3)}(this,function(t,e,n,r,a,i,o,s,l,d){"use strict";function h(t){var e={},n=t.node().nodeName;e.tag=n,"#text"==n?e.text=t.text():"#comment"==n&&(e.comment=t.text()),e.attributes={};var r=t.node().attributes;if(r)for(var a=0;a<r.length;a++){var i=r[a],o=i.name,s=i.value;e.attributes[o]=s}var l=t.node().transform;if(l&&0!=l.baseVal.numberOfItems){var d=l.baseVal.consolidate().matrix;e.translation={x:d.e,y:d.f}}if("ellipse"==n&&(e.center={x:e.attributes.cx,y:e.attributes.cy}),"polygon"==n){var h=t.attr("points").split(" "),c=h.map(function(t){return t.split(",")[0]}),u=h.map(function(t){return t.split(",")[1]}),f=Math.min.apply(null,c),p=Math.max.apply(null,c),g=Math.min.apply(null,u),v=Math.max.apply(null,u),y={x:f,y:g,width:p-f,height:v-g};e.bbox=y,e.center={x:(f+p)/2,y:(g+v)/2}}return"path"==n&&(e.totalLength=t.node().getTotalLength()),"#text"==n?e.text=t.text():"#comment"==n&&(e.comment=t.text()),e}function c(t){var n=h(t);return n.children=[],e.selectAll(t.node().childNodes).each(function(){var t=c(e.select(this));t.parent=n,n.children.push(t)}),n}function u(t){return"#text"==t.tag?document.createTextNode(""):"#comment"==t.tag?document.createComment(t.comment):document.createElementNS("http://www.w3.org/2000/svg",t.tag)}function f(t){var n=u(t),r=e.select(n),a=t.attributes,i=!0,o=!1,s=void 0;try{for(var l,d=Object.keys(a)[Symbol.iterator]();!(i=(l=d.next()).done);i=!0){var h=l.value,c=a[h];r.attr(h,c)}}catch(t){o=!0,s=t}finally{try{!i&&d.return&&d.return()}finally{if(o)throw s}}return n}function p(t,n){var r=e.select(t.node().parentNode),a=f(n),i=r.insert(function(){return a},function(){return t.node()});return t.remove(),i}function g(t){return Object.assign({},t)}s=s&&s.hasOwnProperty("default")?s.default:s;function v(){var t=this._selection,n=e.select(t.node().querySelector("svg"));if(0==n.size())return this;this._zoomSelection=n;var r=o.zoom().scaleExtent([.1,10]).interpolate(i.interpolate).on("zoom",function(){e.select(n.node().querySelector("g")).attr("transform",e.event.transform)});this._zoomBehavior=r;var a=e.select(n.node().querySelector("g"));return n.call(r),this._active||_.call(this,a),this._originalTransform=o.zoomTransform(n.node()),this}function y(t){var e=this._translation,n=t.datum().translation,r=o.zoomTransform(this._zoomSelection.node());return e&&(r=r.translate(-e.x,-e.y)),r=r.translate(n.x,n.y)}function _(t){this._zoomBehavior.transform(this._zoomSelection,y.call(this,t)),this._translation=t.datum().translation,this._originalTransform=o.zoomIdentity.translate(t.datum().translation.x,t.datum().translation.y)}function m(t,e){return function(){var n=t.map(function(t){return i.interpolate([t[0][0],t[0][1]],[t[1][0],t[1][1]])});return function(t){return t<1?"M"+n.map(function(e){return e(t)}).join("L"):e}}}function w(t){return"edge"==t.attributes.class||"a"==t.tag&&"g"==t.parent.tag&&"edge"==t.parent.parent.attributes.class}function x(t){return t.parent&&w(t.parent)}function b(t){var n=this._transition,r=this._fade&&null!=n,a=this._tweenPaths,s=this._tweenShapes,l=this._convertEqualSidedPolygons,d=(this._tweenPrecision,this._growEnteringEdges&&null!=n),c=this._attributer,f=this;function g(t){var v=e.select(this);c&&v.each(c);var b=t.tag,E=t.attributes,P=!1;if(s&&n&&t.alternativeOld){if("polygon"==this.nodeName||"ellipse"==this.nodeName){P=!0;var k=h(v);if("polygon"==this.nodeName&&"polygon"==b){var D=k.attributes.points;if(!l){var N=D.split(" ").length;(J=t.attributes.points).split(" ").length==N&&(P=!1)}}}if(P){var z=t.alternativeOld,L=p(v,z);L.data([t],function(){return t.key});var W=t.alternativeNew;v=L,b="path",E=W.attributes}}var S=v;if(n&&(S=S.transition(n),r&&S.filter(function(t){return"#"==t.tag[0]?null:this}).style("opacity",1),S.filter(function(t){return"#"==t.tag[0]?null:this}).on("end",function(){e.select(this).attr("style",null)})),d&&"path"==b&&t.offset){var M=t.totalLength;v.attr("stroke-dasharray",M+" "+M).attr("stroke-dashoffset",M).attr("transform","translate("+t.offset.x+","+t.offset.y+")"),S.attr("stroke-dashoffset",0).attr("transform","translate(0,0)").on("start",function(){e.select(this).style("opacity",null)}).on("end",function(){e.select(this).attr("stroke-dashoffset",null).attr("stroke-dasharray",null).attr("transform",null)})}if(d&&"polygon"==b&&x(t)&&t.offset){var q=e.select(v.node().parentNode.querySelector("path")),R=q.node().getPointAtLength(0),U=q.node().getPointAtLength(t.totalLength),j=q.node().getPointAtLength(t.totalLength-1),T=180*Math.atan2(U.y-j.y,U.x-j.x)/Math.PI,A=R.x-U.x+t.offset.x,O=R.y-U.y+t.offset.y;v.attr("transform","translate("+A+","+O+")"),S.attrTween("transform",function(){return function(e){var n=q.node().getPointAtLength(t.totalLength*e),r=q.node().getPointAtLength(t.totalLength*e+1),a=180*Math.atan2(r.y-n.y,r.x-n.x)/Math.PI-T;return A=n.x-U.x+t.offset.x*(1-e),O=n.y-U.y+t.offset.y*(1-e),"translate("+A+","+O+") rotate("+a+" "+U.x+" "+U.y+")"}}).on("start",function(){e.select(this).style("opacity",null)}).on("end",function(){e.select(this).attr("transform",null)})}var I=a&&n&&"path"==b&&null!=v.attr("d"),B=!0,F=!1,V=void 0;try{for(var C,Z=Object.keys(E)[Symbol.iterator]();!(B=(C=Z.next()).done);B=!0){var G=C.value,H=E[G];if(I&&"d"==G){var J;(J=(t.alternativeOld||t).points)&&S.attrTween("d",m(J,H))}else{if("transform"==G&&t.translation){var K=S.on("end");S.on("start",function(){f._zoomBehavior&&S.tween("attr.transform",function(){var t=this;return function(e){t.setAttribute("transform",i.interpolateTransformSvg(o.zoomTransform(f._zoomSelection.node()).toString(),y.call(f,v).toString())(e))}})}).on("end",function(){K.call(this),f._zoomBehavior&&_.call(f,v)})}S.attr(G,H)}}}catch(t){F=!0,V=t}finally{try{!B&&Z.return&&Z.return()}finally{if(F)throw V}}P&&S.on("end",function(t,n,r){p(L=e.select(this),t).data([t],function(){return t.key})}),t.text&&S.text(t.text),function(t){var a=t.selectAll(function(){return t.node().childNodes}),i=(a=a.data(function(t){return t.children},function(t){return t.key})).enter().append(function(t){var e=u(t);return"#text"==t.tag&&r&&(e.nodeValue=t.text),e});(r||d&&w(t.datum()))&&i.filter(function(t){return"#"==t.tag[0]?null:this}).each(function(t){var n=e.select(this),r=!0,a=!1,i=void 0;try{for(var o,s=Object.keys(t.attributes)[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value,d=t.attributes[l];n.attr(l,d)}}catch(t){a=!0,i=t}finally{try{!r&&s.return&&s.return()}finally{if(a)throw i}}}).filter(function(t){return"svg"==t.tag||"g"==t.tag?null:this}).style("opacity",0);var o=a.exit();c&&o.each(c),n&&(o=o.transition(n),r&&o.filter(function(t){return"#"==t.tag[0]?null:this}).style("opacity",0)),o=o.remove(),(a=i.merge(a)).each(g)}(v)}var b=this._selection;if(null!=n){var E=this._jobs;if(f._active)return E.push(null),this;b.transition(n).transition().duration(0).on("end",function(){f._active=!1,0!=E.length&&(E.shift(),f.render())}),this._active=!0}null!=n&&b.transition(n).on("start",function(){f._dispatch.call("transitionStart",f)}).on("end",function(){f._dispatch.call("transitionEnd",f)}).transition().duration(0).on("start",function(){f._dispatch.call("restoreEnd",f),f._dispatch.call("end",f),t&&t.call(f)});var P=this._data,k=b.selectAll("svg").data([P],function(t){return t.key});return k=k.enter().append("svg").merge(k),g.call(k.node(),P),this._zoom&&!this._zoomBehavior&&v.call(this),f._dispatch.call("renderEnd",f),null==n&&(this._dispatch.call("end",this),t&&t.call(this)),this}function E(t,e){if("polygon"==t.tag){(c=g(t)).tag="path";var n=g(u=t.attributes),r=u.points;if("polygon"==e.tag){(f=t.bbox).cx=f.x+f.width/2,f.cy=f.y+f.height/2;for(var a=u.points.split(" "),i=a.map(function(t){var e=t.split(",");return[e[0]-f.cx,e[1]-f.cy]}),o=i[i.length-1][0],s=i[i.length-1][1],l=0;l<i.length;l++,o=m,s=w){var d=(m=i[l][0])-o;if(0!=(k=(w=i[l][1])-s))if(0<=(x=o-s*d/k)&&x<1/0&&(o<=x&&x<=m||m<=x&&x<=o))break}var h=[[f.cx+x,f.cy+0].join(",")];r=(h=(h=h.concat(a.slice(l))).concat(a.slice(0,l))).join(" ")}n.d="M"+r+"z",delete n.points,c.attributes=n}else{var c;(c=g(t)).tag="path";n=g(u=t.attributes);var u,f,p=u.cx,v=u.cy,y=u.rx,_=u.ry;(f=e.bbox).cx=f.x+f.width/2,f.cy=f.y+f.height/2;var m,w,x,b=e.attributes.points.split(" ")[0].split(","),E=b[0],P=b[1],k=(d=E-f.cx,P-f.cy),D=Math.sqrt(Math.pow(d,2)+Math.pow(k,2)),N=d/D,z=-k/D;d=(x=y*-N)-(m=y*N),k=-_*-z-(w=-_*z);n.d="M "+p+" "+v+" m "+m+","+w+" a "+y+","+_+" 0 1,0 "+d+","+k+" a "+y+","+_+" 0 1,0 "+-d+","+-k+"z",delete n.cx,delete n.cy,delete n.rx,delete n.ry,c.attributes=n}return c}var P=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},k=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)};function D(t,e,n,r){var a=[t*n-(e=-e)*(r=-r),t*r+e*n];return[t=a[0],e=-(e=a[1])]}var N={id:null,fillcolor:"black",color:"black",penwidth:1,URL:null,tooltip:null};function z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N;for(var n in e)void 0===t[n]&&(t[n]=e[n])}function L(t,e,n,r,a,i,o){var s=i.id,l=i.fillcolor,h=i.color,c=i.penwidth,u=o.shortening||0,f=[[0,-3.5],[10,0],[0,3.5],[0,-3.5]],p=r-e,g=a-n,v=Math.sqrt(p*p+g*g),y=p/v,_=g/v;if(r=e+(v-u-10-.174)*y,a=n+(v-u-10-.174)*_,i.URL||i.tooltip)var m=t.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a"),w=m.selectWithoutDataPropagation("path"),x=m.selectWithoutDataPropagation("polygon");else w=t.selectWithoutDataPropagation("path"),x=t.selectWithoutDataPropagation("polygon");t.attr("id",s);var b=d.path();b.moveTo(e,n),b.lineTo(r,a),w.attr("d",b).attr("fill",l).attr("stroke",h).attr("strokeWidth",c),r=e+(v-u-10)*y,a=n+(v-u-10)*_;for(var E=0;E<f.length;E++){var P=f[E];f[E]=D(P[0],P[1],y,_)}for(E=0;E<f.length;E++){P=f[E];f[E]=[r+P[0],a+P[1]]}var k=[];for(E=0;E<f.length;E++){P=f[E];k.push(P.join(","))}var N=k.join(" ");return x.attr("points",N).attr("fill",l).attr("stroke",h).attr("strokeWidth",c),this}function W(){return this._drawnEdge?(this._drawnEdge.g.remove(),this._drawnEdge=null,this):this}var S,M={id:null,fillcolor:"black",color:"black",penwidth:1,URL:null,tooltip:null,labeljust:"c",fontname:"Times,serif",fontsize:14,fontcolor:"black"},q={ellipse:"ellipse",circle:"ellipse",polygon:"polygon",rect:"polygon",box:"polygon"};function R(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:M;for(var n in e)void 0===t[n]&&(t[n]=e[n])}function U(t,e,n,r,a,i,o,s,l){var d=s.id,h=s.fillcolor,c=s.color,u=s.penwidth;if("l"==s.labeljust)var f="start";else if("r"==s.labeljust)f="end";else f="middle";var p=s.fontname,g=s.fontsize,v=s.fontcolor,y=t.selectWithoutDataPropagation("title");if(s.URL||s.tooltip)var _=t.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a");else _=t;var m=_.selectWithoutDataPropagation(i);return t.attr("id",d),y.text(o),"ellipse"==q[i]?m.attr("cx",e+r/2).attr("cy",n+a/2).attr("rx",r/2).attr("ry",a/2):m.attr("points",e+r+","+n+" "+e+","+n+" "+e+","+(n+a)+" "+(e+r)+","+(n+a)),m.attr("fill",h).attr("stroke",c).attr("strokeWidth",u),_.selectWithoutDataPropagation("text").attr("text-anchor",f).attr("x",e+r/2).attr("y",n+a-g).attr("font-family",p).attr("font-size",g).attr("fill",v).text(o),this}function j(){return this._drawnNode?(this._drawnNode.g.remove(),this._drawnNode=null,this):this}function T(t,r){if("undefined"==typeof Worker&&(r=!1),r){var a=e.selectAll("script").filter(function(){return"javascript/worker"==e.select(this).attr("type")});0==a.size()?(console.warn('No script tag of type "javascript/worker" was found and "useWorker" is true. Not using web worker.'),r=!1):(this._vizURL=a.attr("src"),this._vizURL||(console.warn('No "src" attribute of was found on the "javascript/worker" script tag and "useWorker" is true. Not using web worker.'),r=!1))}if(r){var i=new Blob(['\n onmessage = function(event) {\n if (event.data.vizURL) {\n importScripts(event.data.vizURL);\n }\n try {\n var svg = Viz(event.data.dot, event.data.options);\n }\n catch(error) {\n postMessage({\n type: "error",\n error: error.message,\n });\n return;\n }\n if (svg) {\n postMessage({\n type: "done",\n svg: svg,\n });\n } else {\n postMessage({\n type: "skip",\n });\n }\n }\n ']),o=window.URL.createObjectURL(i);this._worker=new Worker(o)}this._selection=t,this._active=!1,this._busy=!1,this._jobs=[],this._queue=[],this._keyModes=new Set(["title","id","tag-index","index"]),this._engine="dot",this._images=[],this._totalMemory=void 0,this._keyMode="title",this._fade=!0,this._tweenPaths=!0,this._tweenShapes=!0,this._convertEqualSidedPolygons=!0,this._tweenPrecision=1,this._growEnteringEdges=!0,this._translation=void 0,this._zoom=!0,this._eventTypes=["initEnd","start","layoutStart","layoutEnd","dataExtractEnd","dataProcessPass1End","dataProcessPass2End","dataProcessEnd","renderStart","renderEnd","transitionStart","transitionEnd","restoreEnd","end"],this._dispatch=n.dispatch.apply(void 0,k(this._eventTypes)),function(){if(null==this._worker)s(""),this._dispatch.call("initEnd",this);else{var t=this._vizURL,e=this;this._worker.onmessage=function(t){e._dispatch.call("initEnd",this)},t.match(/^https?:\/\/|^\/\//i)||(t=document.location.protocol+"//"+document.location.host+"/"+t),this._worker.postMessage({dot:"",vizURL:t})}}.call(this)}function A(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new T(e.select(t),n)}T.prototype=A.prototype=(P(S={constructor:T,engine:function(t){if(t!=this._engine&&null!=this._data)throw Error("Too late to change engine");return this._engine=t,this},addImage:function(t,e,n){return this._images.push({path:t,width:e,height:n}),this},totalMemory:function(t){return this._totalMemory=t,this},keyMode:function(t){if(!this._keyModes.has(t))throw Error("Illegal keyMode: "+t);if(t!=this._keyMode&&null!=this._data)throw Error("Too late to change keyMode");return this._keyMode=t,this},fade:function(t){return this._fade=t,this},tweenPaths:function(t){return this._tweenPaths=t,this},tweenShapes:function(t){return this._tweenShapes=t,t&&(this._tweenPaths=!0),this},convertEqualSidedPolygons:function(t){return this._convertEqualSidedPolygons=t,this},tweenPrecision:function(t){return this._tweenPrecision=t,this},growEnteringEdges:function(t){return this._growEnteringEdges=t,this},zoom:function(t){return this._zoom=t,this._zoom&&!this._zoomBehavior&&v.call(this),this},resetZoom:function(t){var e=this._zoomSelection;return t&&(e=e.transition(t)),e.call(this._zoomBehavior.transform,this._originalTransform),this},render:function(t){return this._busy?(this._queue.push(this.render.bind(this,t)),this):(this._dispatch.call("renderStart",this),this._transitionFactory?a.timeout(function(){this._transition=r.transition(this._transitionFactory()),b.call(this,t)}.bind(this),0):b.call(this,t),this)},dot:function(t,n){var r=this,a=this._worker,i=this._engine,o=this._images,l=this._totalMemory,d=this._keyMode,h=this._tweenPaths,u=this._tweenShapes,p=this._tweenPrecision,g=this._growEnteringEdges,v={},y=this._dictionary||{},_={},m=this._nodeDictionary||{};function w(t,e){if(h&&e&&("path"==e.tag||t.alternativeOld&&"path"==t.alternativeOld.tag)){var n=(t.alternativeNew||t).attributes.d;if(t.alternativeOld)var r=f(t.alternativeOld);else r=f(e);(t.alternativeOld||(t.alternativeOld={})).points=function(t,e,n){for(var r=t,a=r.cloneNode(),i=r.getTotalLength(),o=(a.setAttribute("d",e),a).getTotalLength(),s=[0],l=0,d=n/Math.max(i,o);(l+=d)<1;)s.push(l);return s.push(1),s.map(function(t){var e=r.getPointAtLength(t*i),n=a.getPointAtLength(t*o);return[[e.x,e.y],[n.x,n.y]]})}(r,n,p)}}function b(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments[2];!function(t,e){var n=t.tag;if("index"==d)t.key=e;else if("#"!=n[0])if("id"==d)t.key=t.attributes.id;else if("title"==d){var r=t.children.find(function(t){return"title"==t.tag});r&&(t.key=r.children[0].text)}null==t.key&&(u&&("ellipse"!=n&&"polygon"!=n||(n="path")),t.key=n+"-"+e)}(t,e),function(t,e){var n=(e?e.id+".":"")+t.key;t.id=n}(t,n);var r=t.id,a=y[r];!function(t){v[t.id]=t}(t),function(t,e){u&&t.id in y&&("polygon"!=e.tag&&"ellipse"!=e.tag||e.tag==t.tag&&"polygon"!=t.tag||(t.alternativeOld=E(e,t),t.alternativeNew=E(t,e)))}(t,a),w(t,a);var i={};t.children.forEach(function(e){var n=e.tag;"ellipse"!=n&&"polygon"!=n||(n="path"),null==i[n]&&(i[n]=0),b(e,i[n]++,t)})}function P(t){!function(t){var e=t.tag;if(g&&t.parent&&"node"==t.parent.attributes.class&&"title"==e){var n=t.children[0].text;_[n]=t.parent}}(t),function(t){var e=t.id,n=t.tag,r=y[e];if(g&&!r&&t.parent&&x(t)&&("path"==n||"polygon"==n)){if("polygon"==n){var a=t.parent.children.find(function(t){return"path"==t.tag});t.totalLength=a.totalLength}var i=function(t){return function(t){return"edge"==t.parent.attributes.class?t.parent:t.parent.parent.parent}(t).children.find(function(t){return"title"==t.tag})}(t).children[0],o=i.text.split("->");2!=o.length&&(o=i.text.split("--"));var s=o[0],l=_[s],d=m[s];if(d){if((u=l.children.findIndex(function(t,e){return"g"==t.tag}))>=0){var h=l.children[u].children.findIndex(function(t,e){return"a"==t.tag});l=l.children[u].children[h]}(u=d.children.findIndex(function(t,e){return"g"==t.tag}))>=0&&(h=d.children[u].children.findIndex(function(t,e){return"a"==t.tag}),d=d.children[u].children[h]);for(var c=l.children,u=0;u<c.length;u++)if("polygon"==c[u].tag||"ellipse"==c[u].tag){var f=c[u];break}var p=d.children;for(u=0;u<p.length;u++)if("polygon"==p[u].tag||"ellipse"==p[u].tag){var v=p[u];break}t.offset={x:v.center.x-f.center.x,y:v.center.y-f.center.y}}}}(t),t.children.forEach(function(t){P(t)})}this._dispatch.call("start",this),this._busy=!0,this._dispatch.call("layoutStart",this);var k={format:"svg",engine:i,images:o,totalMemory:l};if(this._worker)a.postMessage({dot:t,options:k}),a.onmessage=function(t){switch(t.data.type){case"done":return N.call(r,t.data.svg);case"error":if(!r._onerror)throw t.data.error;r._onerror(t.data.error)}};else{try{var D=s(t,k)}catch(t){if(r._onerror)return r._onerror(t.message),this;throw t.message}N.call(this,D)}function N(t){this._dispatch.call("layoutEnd",this);var r=e.select(document.createDocumentFragment()).append("div"),a=(new window.DOMParser).parseFromString(t,"image/svg+xml");r.append(function(){return a.documentElement});var i=c(r.select("svg"));this._dispatch.call("dataExtractEnd",this),b(i),this._dispatch.call("dataProcessPass1End",this),P(i),this._dispatch.call("dataProcessPass2End",this),this._data=i,this._dictionary=v,this._nodeDictionary=_,this._extractData=function(t,e,n){var r=c(t);return b(r,e,n),P(r),r},this._busy=!1,this._dispatch.call("dataProcessEnd",this),n&&n.call(this),this._queue.length>0&&this._queue.shift().call(this)}return this},renderDot:function(t,e){var n=this;return this.dot(t,function(){n.render(e)}),this},transition:function(t){return t instanceof Function?this._transitionFactory=t:this._transition=r.transition(t),this},active:function(t){var e=this._selection.selectWithoutDataPropagation("svg");return 0!=e.size()?r.active(e.node(),t):null},attributer:function(t){return this._attributer=t,this},on:function(t,e){return this._dispatch.on(t,e),this},onerror:function(t){return this._onerror=t,this},logEvents:function(t){var e=this,n=Date.now(),r={},a=this._eventTypes,i=Math.max.apply(Math,k(a.map(function(t){return t.length}))),o=function(o){var s=a[o];r[s]=[],d=e,e.on(s+".log",t?function(){var t=Date.now(),e=r[s].length;r[s].push(t);var a="";if(a+="Event ",a+=l.format(" >2")(o)+" ",a+=s+" ".repeat(i-s.length),a+=l.format(" >5")(t-n)+" ","initEnd"!=s&&(a+=l.format(" >5")(t-r.start[e])),"dataProcessEnd"==s&&(a+=" prepare "+l.format(" >5")(t-r.layoutEnd[e])),"renderEnd"==s&&d._transition&&(a+=" transition start margin "+l.format(" >5")(d._transition.delay()-(t-r.renderStart[e])),h=d._transition.delay(),c=d._transition.duration()),"transitionStart"==s){var u=t-r.renderStart[e];a+=" transition delay "+l.format(" >5")(t-r.renderStart[e]),a+=" expected "+l.format(" >5")(h),a+=" diff "+l.format(" >5")(u-h)}if("transitionEnd"==s){var f=t-r.transitionStart[e];a+=" transition duration "+l.format(" >5")(f),a+=" expected "+l.format(" >5")(c),a+=" diff "+l.format(" >5")(f-c)}console.log(a),n=t}:null)};for(var s in a){var d,h,c;o(s)}return this},drawEdge:function(t,e,n,r,a){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};z(a=a||{});var o=this._selection.selectWithoutDataPropagation("svg").selectWithoutDataPropagation("g").append("g").datum(null).attr("class","edge");if(o.insert("title",":first-child").text(""),a.URL||a.tooltip){var s=o.append("g").append("a");a.URL&&s.attr("href",a.URL),a.tooltip&&s.attr("title",a.tooltip),s.append("path"),s.append("polygon")}else o.append("path"),o.append("polygon");return this._drawnEdge={g:o,x1:t,y1:e,x2:n,y2:r,attributes:a},L(o,t,e,n,r,a,i),this},updateDrawnEdge:function(t,e,n,r,a){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(!this._drawnEdge)throw Error("No edge has been drawn");var o=this._drawnEdge.g;return z(a=a||{},this._drawnEdge.attributes),this._drawnEdge.x1=t,this._drawnEdge.y1=e,this._drawnEdge.x2=n,this._drawnEdge.y2=r,this._drawnEdge.attributes=a,L(o,t,e,n,r,a,i),this},moveDrawnEdgeEndPoint:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this._drawnEdge)throw Error("No edge has been drawn");var r=this._drawnEdge.g,a=this._drawnEdge.x1,i=this._drawnEdge.y1,o=this._drawnEdge.attributes;return this._drawnEdge.x2=t,this._drawnEdge.y2=e,L(r,a,i,t,e,o,n),this},insertDrawnEdge:function(t){if(!this._drawnEdge)throw Error("No edge has been drawn");var e=this._drawnEdge.g,n=this._drawnEdge.attributes,r=e.selectWithoutDataPropagation("title");r.text(t);var a=r.selectAll(function(){return r.node().childNodes});if(n.URL||n.tooltip)var i=e.selectWithoutDataPropagation("g"),o=i.selectWithoutDataPropagation("a"),s=o.selectWithoutDataPropagation("path"),l=o.selectWithoutDataPropagation("polygon");else s=e.selectWithoutDataPropagation("path"),l=e.selectWithoutDataPropagation("polygon");var d=this._selection.selectWithoutDataPropagation("svg").selectWithoutDataPropagation("g"),h=d.datum(),c=this._extractData(e,h.children.length,d.datum()),u=c.children[0],f=u.children[0];if(n.URL||n.tooltip)var p=c.children[1],g=p.children[0],v=g.children[0],y=g.children[1];else v=c.children[1],y=c.children[2];return h.children.push(c),e.datum(c),e.data([c],function(t){return t.key}),r.datum(u),r.data([u],function(t){return[t.key]}),a.datum(f),a.data([f],function(t){return[t.key]}),(n.URL||n.tooltip)&&(i.datum(p),i.data([p],function(t){return[t.key]}),o.datum(g),o.data([g],function(t){return[t.key]})),s.datum(v),s.data([v],function(t){return[t.key]}),l.datum(y),l.data([y],function(t){return[t.key]}),this._drawnEdge=null,this},removeDrawnEdge:W},"removeDrawnEdge",W),P(S,"drawNode",function(t,e,n,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"ellipse",i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",o=arguments[6];arguments.length>7&&void 0!==arguments[7]&&arguments[7];R(o=o||{});var s=this._selection.selectWithoutDataPropagation("svg").selectWithoutDataPropagation("g").append("g").datum(null).attr("class","node");if(s.append("title").text(""),o.URL||o.tooltip){var l=s.append("g").append("a");o.URL&&l.attr("href",o.URL),o.tooltip&&l.attr("title",o.tooltip),l.append(a),l.append("text")}else s.append(a),s.append("text").text("");return this._drawnNode={g:s,nodeId:i,shape:a,x:t,y:e,width:n,height:r,attributes:o},U(s,t,e,n,r,a,i,o),this}),P(S,"updateDrawnNode",function(t,e,n,r,a,i){arguments.length>6&&void 0!==arguments[6]&&arguments[6];if(!this._drawnNode)throw Error("No node has been drawn");var o=this._drawnNode.g;i=i||{},null==a&&(a=this._drawnNode.nodeId),R(i,this._drawnNode.attributes),this._drawnNode.nodeId=a;var s=this._drawnNode.shape;return this._drawnNode.x=t,this._drawnNode.y=e,this._drawnNode.width=n,this._drawnNode.height=r,this._drawnNode.attributes=i,U(o,t,e,n,r,s,a,i),this}),P(S,"insertDrawnNode",function(t){if(!this._drawnNode)throw Error("No node has been drawn");null==t&&(t=this._drawnNode.nodeId);var e=this._drawnNode.g,n=this._drawnNode.attributes,r=this._drawnNode.shape,a=q[r],i=e.selectWithoutDataPropagation("title");i.text(t);var o=i.selectAll(function(){return i.node().childNodes});if(n.URL||n.tooltip)var s=e.selectWithoutDataPropagation("g"),l=s.selectWithoutDataPropagation("a"),d=l.selectWithoutDataPropagation(a),h=l.selectWithoutDataPropagation("text");else d=e.selectWithoutDataPropagation(a),h=e.selectWithoutDataPropagation("text");h.text(t);var c=h.selectAll(function(){return h.node().childNodes}),u=this._selection.selectWithoutDataPropagation("svg").selectWithoutDataPropagation("g"),f=u.datum(),p=this._extractData(e,f.children.length,u.datum()),g=p.children[0],v=g.children[0];if(n.URL||n.tooltip)var y=p.children[1],_=y.children[0],m=_.children[0],w=_.children[1];else m=p.children[1],w=p.children[2];var x=w.children[0];return f.children.push(p),e.datum(p),e.data([p],function(t){return t.key}),i.datum(g),i.data([g],function(t){return[t.key]}),o.datum(v),o.data([v],function(t){return[t.key]}),(n.URL||n.tooltip)&&(s.datum(y),s.data([y],function(t){return[t.key]}),l.datum(_),l.data([_],function(t){return[t.key]})),d.datum(m),d.data([m],function(t){return[t.key]}),h.datum(w),h.data([w],function(t){return[t.key]}),c.datum(x),c.data([x],function(t){return[t.key]}),this}),P(S,"removeDrawnNode",j),P(S,"removeDrawnNode",j),S);e.selection.prototype.graphviz=function(){return new T(this,!(arguments.length>0&&void 0!==arguments[0])||arguments[0])},e.selection.prototype.selectWithoutDataPropagation=function(t){return e.select(this.size()>0?this.node().querySelector(t):null)},t.graphviz=A,Object.defineProperty(t,"__esModule",{value:!0})});