UNPKG

react-sigma

Version:

Lightweight but powerful library for drawing network graphs built on top of SigmaJS

1 lines 19.8 kB
var Sigma=function(e){var t={};function r(s){if(t[s])return t[s].exports;var n=t[s]={i:s,l:!1,exports:{}};return e[s].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(s,n,function(t){return e[t]}.bind(null,n));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=189)}({189:function(e,t,r){r(190),e.exports=r(191)},190:function(module,exports,__webpack_require__){(function(){(function(undefined){"use strict";if("undefined"==typeof sigma)throw new Error("sigma is not declared");sigma.utils.pkg("sigma.layouts");var _root=this,webWorkers="Worker"in _root,eventEmitter={};function Supervisor(e,t){_root.URL=_root.URL||_root.webkitURL,t=t||{},this.sigInst=e,this.graph=this.sigInst.graph,this.ppn=10,this.ppe=3,this.config={},this.worker=null,this.shouldUseWorker=null,this.workerUrl=null,this.runOnBackground=null,this.easing=null,this.randomize=null,this.configure(t),this.started=!1,this.running=!1,this.initWorker()}sigma.classes.dispatcher.extend(eventEmitter),Supervisor.prototype.makeBlob=function(e){var t;try{t=new Blob([e],{type:"application/javascript"})}catch(r){_root.BlobBuilder=_root.BlobBuilder||_root.WebKitBlobBuilder||_root.MozBlobBuilder,(t=new BlobBuilder).append(e),t=t.getBlob()}return t},Supervisor.prototype.graphToByteArrays=function(){var e,t,r,s=this.graph.nodes(),n=this.graph.edges(),i=s.length*this.ppn,o=n.length*this.ppe,a={};for(this.nodesByteArray=new Float32Array(i),this.edgesByteArray=new Float32Array(o),e=t=0,r=s.length;e<r;e++)a[s[e].id]=t,this.nodesByteArray[t]=this.randomize(s[e].x),this.nodesByteArray[t+1]=this.randomize(s[e].y),this.nodesByteArray[t+2]=0,this.nodesByteArray[t+3]=0,this.nodesByteArray[t+4]=0,this.nodesByteArray[t+5]=0,this.nodesByteArray[t+6]=1+this.graph.degree(s[e].id),this.nodesByteArray[t+7]=1,this.nodesByteArray[t+8]=s[e].size,this.nodesByteArray[t+9]=s[e].fixed||0,t+=this.ppn;for(e=t=0,r=n.length;e<r;e++)this.edgesByteArray[t]=a[n[e].source],this.edgesByteArray[t+1]=a[n[e].target],this.edgesByteArray[t+2]=n[e].weight||0,t+=this.ppe},Supervisor.prototype.applyLayoutChanges=function(e){for(var t=this.graph.nodes(),r=0,s=0,n=this.nodesByteArray.length;s<n;s+=this.ppn)t[r].fixed||(e?(t[r].fa2_x=this.nodesByteArray[s],t[r].fa2_y=this.nodesByteArray[s+1]):(t[r].x=this.nodesByteArray[s],t[r].y=this.nodesByteArray[s+1])),r++},Supervisor.prototype.sendByteArrayToWorker=function(e){var t={action:e||"loop",nodes:this.nodesByteArray.buffer},r=[this.nodesByteArray.buffer];"start"===e&&(t.config=this.config||{},t.edges=this.edgesByteArray.buffer,r.push(this.edgesByteArray.buffer)),this.shouldUseWorker?this.worker.postMessage(t,r):_root.postMessage(t,"*")},Supervisor.prototype.start=function(){this.running||(this.running=!0,this.started?this.sendByteArrayToWorker():(this.sendByteArrayToWorker("start"),this.started=!0,eventEmitter.dispatchEvent("start")))},Supervisor.prototype.stop=function(){this.running&&(this.running=!1,eventEmitter.dispatchEvent("stop"))},Supervisor.prototype.initWorker=function(){var _this=this,workerFn=sigma.layouts.getForceLinkWorker();if(this.shouldUseWorker){if(this.workerUrl)this.worker=new Worker(this.workerUrl);else{var blob=this.makeBlob(workerFn);this.worker=new Worker(URL.createObjectURL(blob))}this.worker.postMessage=this.worker.webkitPostMessage||this.worker.postMessage}else eval(workerFn);this.msgName=this.worker?"message":"newCoords",this.listener=function(e){_this.nodesByteArray=new Float32Array(e.data.nodes),_this.running&&(_this.applyLayoutChanges(_this.runOnBackground),_this.sendByteArrayToWorker(),_this.runOnBackground||_this.sigInst.refresh({skipIndexation:!0})),e.data.converged&&(_this.running=!1),_this.running||(_this.killWorker(),_this.runOnBackground&&_this.easing?(_this.applyLayoutChanges(!0),eventEmitter.dispatchEvent("interpolate"),_this.graph.nodes().filter((function(e){return e.fixed})).forEach((function(e){e.fa2_x=e.x,e.fa2_y=e.y})),sigma.plugins.animate(_this.sigInst,{x:"fa2_x",y:"fa2_y"},{easing:_this.easing,onComplete:function(){_this.sigInst.refresh(),eventEmitter.dispatchEvent("stop")}})):(_this.applyLayoutChanges(!1),_this.sigInst.refresh(),eventEmitter.dispatchEvent("stop")))},(this.worker||document).addEventListener(this.msgName,this.listener),this.graphToByteArrays(),_this.sigInst.bind("kill",(function(){sigma.layouts.killForceLink()}))},Supervisor.prototype.killWorker=function(){this.worker?this.worker.terminate():(_root.postMessage({action:"kill"},"*"),document.removeEventListener(this.msgName,this.listener))},Supervisor.prototype.configure=function(e){switch(this.config=e,this.shouldUseWorker=!1!==e.worker&&webWorkers,this.workerUrl=e.workerUrl,this.runOnBackground=!!e.background,this.easing=e.easing,e.randomize){case"globally":this.randomize=function(t){return Math.random()*(e.randomizeFactor||1)};break;case"locally":this.randomize=function(t){return t+Math.random()*(e.randomizeFactor||1)};break;default:this.randomize=function(e){return e}}if(this.started){var t={action:"config",config:this.config};this.shouldUseWorker?this.worker.postMessage(t):_root.postMessage(t,"*")}};var supervisor=null;sigma.layouts.startForceLink=function(e,t){return supervisor?supervisor.running||(supervisor.killWorker(),supervisor.initWorker(),supervisor.started=!1):supervisor=new Supervisor(e,t),t&&supervisor.configure(t),supervisor.start(),eventEmitter},sigma.layouts.stopForceLink=function(){if(supervisor)return supervisor.stop(),supervisor},sigma.layouts.killForceLink=function(){supervisor&&(supervisor.stop(),supervisor.killWorker(),supervisor=null,eventEmitter={},sigma.classes.dispatcher.extend(eventEmitter))},sigma.layouts.configForceLink=function(e,t){return supervisor?supervisor.running||(supervisor.killWorker(),supervisor.initWorker(),supervisor.started=!1):supervisor=new Supervisor(e,t),supervisor.configure(t),eventEmitter},sigma.layouts.isForceLinkRunning=function(){return!!supervisor&&supervisor.running}}).call(this)}).call(window)},191:function(module,exports){(function(){(function(undefined){"use strict";if("undefined"==typeof sigma)throw new Error("sigma is not declared");sigma.utils.pkg("sigma.layouts");var _root=this,inWebWorker=!("document"in _root),Worker=function(e){var t,r,s,n={ppn:10,ppe:3,ppr:9,maxForce:10,iterations:0,converged:!1,settings:{linLogMode:!1,outboundAttractionDistribution:!1,adjustSizes:!1,edgeWeightInfluence:0,scalingRatio:1,strongGravityMode:!1,gravity:1,slowDown:1,barnesHutOptimize:!1,barnesHutTheta:.5,startingIterations:1,iterationsPerRender:1,maxIterations:1e3,avgDistanceThreshold:.01,autoStop:!1,alignNodeSiblings:!1,nodeSiblingsScale:1,nodeSiblingsAngleMin:0,minNodeDistance:0}};var i,o={x:0,y:1,dx:2,dy:3,old_dx:4,old_dy:5,mass:6,convergence:7,size:8,fixed:9},a={source:0,target:1,weight:2},d={node:0,centerX:1,centerY:2,size:3,nextSibling:4,firstChild:5,mass:6,massCenterX:7,massCenterY:8};function h(e,t){if(e%n.ppn!=0)throw new Error('Invalid argument in np: "i" is not correct ('+e+").");if(e!==parseInt(e))throw new TypeError('Invalid argument in np: "i" is not an integer.');if(t in o)return e+o[t];throw new Error("ForceLink.Worker - Inexistant node property given ("+t+").")}function g(e,t){if(e%n.ppe!=0)throw new Error('Invalid argument in ep: "i" is not correct ('+e+").");if(e!==parseInt(e))throw new TypeError('Invalid argument in ep: "i" is not an integer.');if(t in a)return e+a[t];throw new Error("ForceLink.Worker - Inexistant edge property given ("+t+").")}function l(e,t){if(e%n.ppr!=0)throw new Error('Invalid argument in rp: "i" is not correct ('+e+").");if(e!==parseInt(e))throw new TypeError('Invalid argument in rp: "i" is not an integer.');if(t in d)return e+d[t];throw new Error("ForceLink.Worker - Inexistant region property given ("+t+").")}function u(e){n.settings=function(){var e,t,r={};for(e=arguments.length-1;e>=0;e--)for(t in arguments[e])r[t]=arguments[e][t];return r}(e,n.settings)}function c(){var e,i,o,a,d,u,c,p,y,f,m,x,v,k,b,w,_,M=n.settings.minNodeDistance;for(o=0;o<n.nodesLength;o+=n.ppn)t[h(o,"old_dx")]=t[h(o,"dx")],t[h(o,"old_dy")]=t[h(o,"dy")],t[h(o,"dx")]=0,t[h(o,"dy")]=0;if(n.settings.outboundAttractionDistribution){for(y=0,o=0;o<n.nodesLength;o+=n.ppn)y+=t[h(o,"mass")];y/=n.nodesLength}if(n.settings.barnesHutOptimize){var C,S,B=1/0,A=-1/0,E=1/0,L=-1/0;for(s=[],o=0;o<n.nodesLength;o+=n.ppn)B=Math.min(B,t[h(o,"x")]),A=Math.max(A,t[h(o,"x")]),E=Math.min(E,t[h(o,"y")]),L=Math.max(L,t[h(o,"y")]);for(s[l(0,"node")]=-1,s[l(0,"centerX")]=(B+A)/2,s[l(0,"centerY")]=(E+L)/2,s[l(0,"size")]=Math.max(A-B,L-E),s[l(0,"nextSibling")]=-1,s[l(0,"firstChild")]=-1,s[l(0,"mass")]=0,s[l(0,"massCenterX")]=0,s[l(0,"massCenterY")]=0,e=1,o=0;o<n.nodesLength;o+=n.ppn)for(i=0;;)if(s[l(i,"firstChild")]>=0)C=t[h(o,"x")]<s[l(i,"centerX")]?t[h(o,"y")]<s[l(i,"centerY")]?s[l(i,"firstChild")]:s[l(i,"firstChild")]+n.ppr:t[h(o,"y")]<s[l(i,"centerY")]?s[l(i,"firstChild")]+2*n.ppr:s[l(i,"firstChild")]+3*n.ppr,s[l(i,"massCenterX")]=(s[l(i,"massCenterX")]*s[l(i,"mass")]+t[h(o,"x")]*t[h(o,"mass")])/(s[l(i,"mass")]+t[h(o,"mass")]),s[l(i,"massCenterY")]=(s[l(i,"massCenterY")]*s[l(i,"mass")]+t[h(o,"y")]*t[h(o,"mass")])/(s[l(i,"mass")]+t[h(o,"mass")]),s[l(i,"mass")]+=t[h(o,"mass")],i=C;else{if(s[l(i,"node")]<0){s[l(i,"node")]=o;break}if(s[l(i,"firstChild")]=e*n.ppr,c=s[l(i,"size")]/2,p=s[l(i,"firstChild")],s[l(p,"node")]=-1,s[l(p,"centerX")]=s[l(i,"centerX")]-c,s[l(p,"centerY")]=s[l(i,"centerY")]-c,s[l(p,"size")]=c,s[l(p,"nextSibling")]=p+n.ppr,s[l(p,"firstChild")]=-1,s[l(p,"mass")]=0,s[l(p,"massCenterX")]=0,s[l(p,"massCenterY")]=0,p+=n.ppr,s[l(p,"node")]=-1,s[l(p,"centerX")]=s[l(i,"centerX")]-c,s[l(p,"centerY")]=s[l(i,"centerY")]+c,s[l(p,"size")]=c,s[l(p,"nextSibling")]=p+n.ppr,s[l(p,"firstChild")]=-1,s[l(p,"mass")]=0,s[l(p,"massCenterX")]=0,s[l(p,"massCenterY")]=0,p+=n.ppr,s[l(p,"node")]=-1,s[l(p,"centerX")]=s[l(i,"centerX")]+c,s[l(p,"centerY")]=s[l(i,"centerY")]-c,s[l(p,"size")]=c,s[l(p,"nextSibling")]=p+n.ppr,s[l(p,"firstChild")]=-1,s[l(p,"mass")]=0,s[l(p,"massCenterX")]=0,s[l(p,"massCenterY")]=0,p+=n.ppr,s[l(p,"node")]=-1,s[l(p,"centerX")]=s[l(i,"centerX")]+c,s[l(p,"centerY")]=s[l(i,"centerY")]+c,s[l(p,"size")]=c,s[l(p,"nextSibling")]=s[l(i,"nextSibling")],s[l(p,"firstChild")]=-1,s[l(p,"mass")]=0,s[l(p,"massCenterX")]=0,s[l(p,"massCenterY")]=0,e+=4,C=t[h(s[l(i,"node")],"x")]<s[l(i,"centerX")]?t[h(s[l(i,"node")],"y")]<s[l(i,"centerY")]?s[l(i,"firstChild")]:s[l(i,"firstChild")]+n.ppr:t[h(s[l(i,"node")],"y")]<s[l(i,"centerY")]?s[l(i,"firstChild")]+2*n.ppr:s[l(i,"firstChild")]+3*n.ppr,s[l(i,"mass")]=t[h(s[l(i,"node")],"mass")],s[l(i,"massCenterX")]=t[h(s[l(i,"node")],"x")],s[l(i,"massCenterY")]=t[h(s[l(i,"node")],"y")],s[l(C,"node")]=s[l(i,"node")],s[l(i,"node")]=-1,C!==(S=t[h(o,"x")]<s[l(i,"centerX")]?t[h(o,"y")]<s[l(i,"centerY")]?s[l(i,"firstChild")]:s[l(i,"firstChild")]+n.ppr:t[h(o,"y")]<s[l(i,"centerY")]?s[l(i,"firstChild")]+2*n.ppr:s[l(i,"firstChild")]+3*n.ppr)){s[l(S,"node")]=o;break}i=C}}if(n.settings.barnesHutOptimize)for(f=n.settings.scalingRatio,o=0;o<n.nodesLength;o+=n.ppn)for(i=0;;)if(s[l(i,"firstChild")]>=0){if(w=Math.sqrt((t[h(o,"x")]-s[l(i,"massCenterX")])*(t[h(o,"x")]-s[l(i,"massCenterX")])+(t[h(o,"y")]-s[l(i,"massCenterY")])*(t[h(o,"y")]-s[l(i,"massCenterY")])),2*s[l(i,"size")]/w<n.settings.barnesHutTheta){if(m=t[h(o,"x")]-s[l(i,"massCenterX")],x=t[h(o,"y")]-s[l(i,"massCenterY")],n.settings.adjustSizes?w>0?(_=f*t[h(o,"mass")]*s[l(i,"mass")]/w/w,t[h(o,"dx")]+=m*_,t[h(o,"dy")]+=x*_):w<0&&(_=-f*t[h(o,"mass")]*s[l(i,"mass")]/w,t[h(o,"dx")]+=m*_,t[h(o,"dy")]+=x*_):w>0&&(_=f*t[h(o,"mass")]*s[l(i,"mass")]/w/w,t[h(o,"dx")]+=m*_,t[h(o,"dy")]+=x*_),s[l(i,"nextSibling")]<0)break;i=s[l(i,"nextSibling")];continue}i=s[l(i,"firstChild")]}else{if(s[l(i,"node")]>=0&&s[l(i,"node")]!==o&&(m=t[h(o,"x")]-t[h(s[l(i,"node")],"x")],x=t[h(o,"y")]-t[h(s[l(i,"node")],"y")],w=Math.sqrt(m*m+x*x),n.settings.adjustSizes?w>0?(_=f*t[h(o,"mass")]*t[h(s[l(i,"node")],"mass")]/w/w,t[h(o,"dx")]+=m*_,t[h(o,"dy")]+=x*_):w<0&&(_=-f*t[h(o,"mass")]*t[h(s[l(i,"node")],"mass")]/w,t[h(o,"dx")]+=m*_,t[h(o,"dy")]+=x*_):w>0&&(_=f*t[h(o,"mass")]*t[h(s[l(i,"node")],"mass")]/w/w,t[h(o,"dx")]+=m*_,t[h(o,"dy")]+=x*_)),s[l(i,"nextSibling")]<0)break;i=s[l(i,"nextSibling")]}else for(f=n.settings.scalingRatio,a=0;a<n.nodesLength;a+=n.ppn)for(d=0;d<a;d+=n.ppn)m=t[h(a,"x")]-t[h(d,"x")],x=t[h(a,"y")]-t[h(d,"y")],n.settings.adjustSizes?(w=Math.sqrt(m*m+x*x)-t[h(a,"size")]-t[h(d,"size")])>0?(_=f*t[h(a,"mass")]*t[h(d,"mass")]/w/w,t[h(a,"dx")]+=m*_,t[h(a,"dy")]+=x*_,t[h(d,"dx")]+=m*_,t[h(d,"dy")]+=x*_):w<0&&(_=100*f*t[h(a,"mass")]*t[h(d,"mass")],t[h(a,"dx")]+=m*_,t[h(a,"dy")]+=x*_,t[h(d,"dx")]-=m*_,t[h(d,"dy")]-=x*_):(w=Math.sqrt(m*m+x*x))>0&&(_=f*t[h(a,"mass")]*t[h(d,"mass")]/w/w,t[h(a,"dx")]+=m*_,t[h(a,"dy")]+=x*_,t[h(d,"dx")]-=m*_,t[h(d,"dy")]-=x*_);for(p=n.settings.gravity/n.settings.scalingRatio,f=n.settings.scalingRatio,o=0;o<n.nodesLength;o+=n.ppn)_=0,m=t[h(o,"x")],x=t[h(o,"y")],w=Math.sqrt(m*m+x*x),n.settings.strongGravityMode?w>0&&(_=f*t[h(o,"mass")]*p):w>0&&(_=f*t[h(o,"mass")]*p/w),t[h(o,"dx")]-=m*_,t[h(o,"dy")]-=x*_;for(f=1*(n.settings.outboundAttractionDistribution?y:1),u=0;u<n.edgesLength;u+=n.ppe)a=r[g(u,"source")],d=r[g(u,"target")],c=r[g(u,"weight")],b=Math.pow(c,n.settings.edgeWeightInfluence),m=t[h(a,"x")]-t[h(d,"x")],x=t[h(a,"y")]-t[h(d,"y")],n.settings.adjustSizes?(w=Math.sqrt(m*m+x*x-t[h(a,"size")]-t[h(d,"size")])-M,n.settings.linLogMode?n.settings.outboundAttractionDistribution?w>0&&(_=-f*b*Math.log(1+w)/w/t[h(a,"mass")]):w>0&&(_=-f*b*Math.log(1+w)/w):n.settings.outboundAttractionDistribution?w>0&&(_=-f*b/t[h(a,"mass")]):w>0&&(_=-f*b)):(w=Math.sqrt(m*m+x*x)-M,n.settings.linLogMode?n.settings.outboundAttractionDistribution?w>0&&(_=-f*b*Math.log(1+w)/w/t[h(a,"mass")]):w>0&&(_=-f*b*Math.log(1+w)/w):n.settings.outboundAttractionDistribution?(w=1,_=-f*b/t[h(a,"mass")]):(w=1,_=-f*b)),w>0&&(t[h(a,"dx")]+=m*_,t[h(a,"dy")]+=x*_,t[h(d,"dx")]-=m*_,t[h(d,"dy")]-=x*_);var W,I,z,F,Y=0;if(n.settings.adjustSizes)for(o=0;o<n.nodesLength;o+=n.ppn)t[h(o,"fixed")]||((W=Math.sqrt(t[h(o,"dx")]*t[h(o,"dx")]+t[h(o,"dy")]*t[h(o,"dy")]))>n.maxForce&&(t[h(o,"dx")]=t[h(o,"dx")]*n.maxForce/W,t[h(o,"dy")]=t[h(o,"dy")]*n.maxForce/W),I=t[h(o,"mass")]*Math.sqrt((t[h(o,"old_dx")]-t[h(o,"dx")])*(t[h(o,"old_dx")]-t[h(o,"dx")])+(t[h(o,"old_dy")]-t[h(o,"dy")])*(t[h(o,"old_dy")]-t[h(o,"dy")])),z=Math.sqrt((t[h(o,"old_dx")]+t[h(o,"dx")])*(t[h(o,"old_dx")]+t[h(o,"dx")])+(t[h(o,"old_dy")]+t[h(o,"dy")])*(t[h(o,"old_dy")]+t[h(o,"dy")]))/2,F=.1*Math.log(1+z)/(1+Math.sqrt(I)),v=t[h(o,"x")],k=t[h(o,"y")],t[h(o,"x")]=t[h(o,"x")]+t[h(o,"dx")]*(F/n.settings.slowDown),t[h(o,"y")]=t[h(o,"y")]+t[h(o,"dy")]*(F/n.settings.slowDown),m=t[h(o,"x")],x=t[h(o,"y")],Y+=w=Math.sqrt((m-v)*(m-v)+(x-k)*(x-k)));else for(o=0;o<n.nodesLength;o+=n.ppn)t[h(o,"fixed")]||(I=t[h(o,"mass")]*Math.sqrt((t[h(o,"old_dx")]-t[h(o,"dx")])*(t[h(o,"old_dx")]-t[h(o,"dx")])+(t[h(o,"old_dy")]-t[h(o,"dy")])*(t[h(o,"old_dy")]-t[h(o,"dy")])),z=Math.sqrt((t[h(o,"old_dx")]+t[h(o,"dx")])*(t[h(o,"old_dx")]+t[h(o,"dx")])+(t[h(o,"old_dy")]+t[h(o,"dy")])*(t[h(o,"old_dy")]+t[h(o,"dy")]))/2,F=t[h(o,"convergence")]*Math.log(1+z)/(1+Math.sqrt(I)),t[h(o,"convergence")]=Math.min(1,Math.sqrt(F*(t[h(o,"dx")]*t[h(o,"dx")]+t[h(o,"dy")]*t[h(o,"dy")])/(1+Math.sqrt(I)))),v=t[h(o,"x")],k=t[h(o,"y")],t[h(o,"x")]=t[h(o,"x")]+t[h(o,"dx")]*(F/n.settings.slowDown),t[h(o,"y")]=t[h(o,"y")]+t[h(o,"dy")]*(F/n.settings.slowDown),m=t[h(o,"x")],x=t[h(o,"y")],Y+=w=Math.sqrt((m-v)*(m-v)+(x-k)*(x-k)));if(n.iterations++,n.settings.autoStop&&(n.converged=n.iterations>n.settings.maxIterations||Y/n.nodesLength<n.settings.avgDistanceThreshold,n.converged&&n.settings.alignNodeSiblings)){var X,O,q={},j={};for(u=0;u<n.edgesLength;u+=n.ppe)(a=r[g(u,"source")])!==(d=r[g(u,"target")])&&(q[a]=q[a]||{},q[d]=q[d]||{},q[a][d]=!0,q[d][a]=!0);Object.keys(q).forEach((function(e){e=~~e,2==(O=Object.keys(q[e])).length&&((X=O[0]+";"+O[1])in j?j[X].push(e):(X=O[1]+";"+O[0],j[X]||(j[X]=[~~O[1],~~O[0]]),j[X].push(e)))}));var P,D,R,T,U,N,$,H,G,K,J,Q,V,Z,ee=n.settings.nodeSiblingsAngleMin;Object.keys(j).forEach((function(e){if(D=j[e].shift(),R=j[e].shift(),1!=(P=j[e].filter((function(e){return!t[h(e,"fixed")]}))).length){var r,s,i,o,a,d,g,l,u,c,p,y;if(N=t[h(D,"x")],$=t[h(D,"y")],H=t[h(R,"x")],G=t[h(R,"y")],T=Object.keys(q[D]).length,U=Object.keys(q[R]).length,J=function(e,t,r,s,n){return{x:e+(r-e)*n,y:t+(s-t)*n}}(N,$,H,G,(.75-(s=.25))*(T/(T+U)-(r=0))/(1-r)+s),Q={xi:-((d=G)-(o=$)),yi:(a=H)-(i=N),xi_prime:d-o,yi_prime:-(a-i)},g=N,l=$,u=H,c=G,K=Math.sqrt((u-g)*(u-g)+(c-l)*(c-l)),y=K,V={x:((p=Q).xi_prime-p.xi)/y,y:(p.yi_prime-p.yi)/y},Z=function(e){return Math.acos(e.x/Math.sqrt(e.x*e.x+e.y*e.y))}(V),2*ee>Math.PI)throw new Error("ForceLink.Worker - Invalid parameter: angleMin must be smaller than 2 PI.");ee>0&&(Z<ee||Z>Math.PI-ee&&Z<=Math.PI?V={x:2*Math.cos(Math.PI-ee),y:2*Math.sin(Math.PI-ee)}:(Z>2*Math.PI-ee||Z>=Math.PI&&Z<Math.PI+ee)&&(V={x:2*Math.cos(ee),y:2*Math.sin(ee)}));var f=0,m=1,x=1;P.length%2==1&&(x=0,f=1);for(var v=0;v<P.length;v++)t[h(P[v],"x")]=J.x+m*V.x*x*(f||v>=2?n.settings.nodeSiblingsScale:2*n.settings.nodeSiblingsScale/3),t[h(P[v],"y")]=J.y+m*V.y*x*(f||v>=2?n.settings.nodeSiblingsScale:2*n.settings.nodeSiblingsScale/3),m=-m,x+=(v+f)%2}}))}}function p(e){for(var t=0;t<e;t++)c();i()}i="undefined"!=typeof window&&window.document?function(){var e;n.autoStop&&!n.converged||(document.createEvent?(e=document.createEvent("Event")).initEvent("newCoords",!0,!1):(e=document.createEventObject()).eventType="newCoords",e.eventName="newCoords",e.data={nodes:t.buffer,converged:n.converged},requestAnimationFrame((function(){document.dispatchEvent(e)})))}:function(){n.autoStop&&!n.converged||self.postMessage({nodes:t.buffer,converged:n.converged},[t.buffer])};var y=function(e){switch(e.data.action){case"start":i=new Float32Array(e.data.nodes),o=new Float32Array(e.data.edges),a=(a=e.data.config)||{},t=i,r=o,n.nodesLength=t.length,n.edgesLength=r.length,u(a),p(n.settings.startingIterations);break;case"loop":t=new Float32Array(e.data.nodes),p(n.settings.iterationsPerRender);break;case"config":u(e.data.config);break;case"kill":!function(e){var t;for(t in e)"hasOwnProperty"in e&&!e.hasOwnProperty(t)||delete e[t]}(n),t=null,r=null,s=null,self.removeEventListener("message",y)}var i,o,a};self.addEventListener("message",y)};function crush(e){var t,r,s,n=["x","y","dx","dy","old_dx","old_dy","mass","convergence","size","fixed"],i=["source","target","weight"],o=["node","centerX","centerY","size","nextSibling","firstChild","mass","massCenterX","massCenterY"];for(r=0,s=o.length;r<s;r++)t=new RegExp("rp\\(([^,]*), '"+o[r]+"'\\)","g"),e=e.replace(t,0===r?"$1":"$1 + "+r);for(r=0,s=n.length;r<s;r++)t=new RegExp("np\\(([^,]*), '"+n[r]+"'\\)","g"),e=e.replace(t,0===r?"$1":"$1 + "+r);for(r=0,s=i.length;r<s;r++)t=new RegExp("ep\\(([^,]*), '"+i[r]+"'\\)","g"),e=e.replace(t,0===r?"$1":"$1 + "+r);return e}function getWorkerFn(){return";("+(crush?crush(Worker.toString()):Worker.toString())+").call(this);"}if(inWebWorker)eval(getWorkerFn());else{if("undefined"==typeof sigma)throw new Error("sigma is not declared");sigma.layouts.getForceLinkWorker=getWorkerFn}}).call(this)}).call(window)}});