UNPKG

react-sigma

Version:

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

1 lines 5.34 kB
var Sigma=function(n){var i={};function t(e){if(i[e])return i[e].exports;var o=i[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=n,t.c=i,t.d=function(n,i,e){t.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:e})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,i){if(1&i&&(n=t(n)),8&i)return n;if(4&i&&"object"==typeof n&&n&&n.__esModule)return n;var e=Object.create(null);if(t.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:n}),2&i&&"string"!=typeof n)for(var o in n)t.d(e,o,function(i){return n[i]}.bind(null,o));return e},t.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(i,"a",i),i},t.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},t.p="",t(t.s=372)}({372:function(n,i){(function(){(function(n){"use strict";if("undefined"==typeof sigma)throw new Error("sigma is not declared");sigma.utils.pkg("sigma.layout.noverlap");var i={speed:3,scaleNodes:1.2,nodeMargin:5,gridSize:20,permittedExpansion:1.1,rendererIndex:0,maxIterations:500},t={},e={};function o(){var n=this;this.init=function(n,t){if(t=t||{},this.sigInst=n,this.config=sigma.utils.extend(t,i),this.easing=t.easing,this.duration=t.duration,t.nodes&&(this.nodes=t.nodes,delete t.nodes),!sigma.plugins||void 0===sigma.plugins.animate)throw new Error("sigma.plugins.animate is not declared");this.running=!1},this.atomicGo=function(){if(!this.running||this.iterCount<1)return!1;var i,t,e,o,s,r,d,a,g,f,c,u,l,h,p,_,m,x,y,M,v,z=this.nodes||this.sigInst.graph.nodes(),I=z.length,S=1/0,E=-1/0,N=1/0,b=-1/0;for(this.iterCount--,this.running=!1,i=0;i<I;i++)(t=z[i]).dn.dx=0,t.dn.dy=0,S=Math.min(S,t.dn_x-(t.dn_size*n.config.scaleNodes+n.config.nodeMargin)),E=Math.max(E,t.dn_x+(t.dn_size*n.config.scaleNodes+n.config.nodeMargin)),N=Math.min(N,t.dn_y-(t.dn_size*n.config.scaleNodes+n.config.nodeMargin)),b=Math.max(b,t.dn_y+(t.dn_size*n.config.scaleNodes+n.config.nodeMargin));for(o=E-S,s=b-N,d=(N+b)/2,S=(r=(S+E)/2)-n.config.permittedExpansion*o/2,E=r+n.config.permittedExpansion*o/2,N=d-n.config.permittedExpansion*s/2,b=d+n.config.permittedExpansion*s/2,a={},g=0;g<n.config.gridSize;g++)for(a[g]={},f=0;f<n.config.gridSize;f++)a[g][f]=[];for(i=0;i<I;i++)for(x=(t=z[i]).dn_x-(t.dn_size*n.config.scaleNodes+n.config.nodeMargin),y=t.dn_x+(t.dn_size*n.config.scaleNodes+n.config.nodeMargin),M=t.dn_y-(t.dn_size*n.config.scaleNodes+n.config.nodeMargin),v=t.dn_y+(t.dn_size*n.config.scaleNodes+n.config.nodeMargin),c=Math.floor(n.config.gridSize*(x-S)/(E-S)),u=Math.floor(n.config.gridSize*(y-S)/(E-S)),l=Math.floor(n.config.gridSize*(M-N)/(b-N)),h=Math.floor(n.config.gridSize*(v-N)/(b-N)),f=c;f<=u;f++)for(g=l;g<=h;g++)a[g][f].push(t.id);for(p={},g=0;g<n.config.gridSize;g++)for(f=0;f<n.config.gridSize;f++)a[g][f].forEach((function(i){for(p[i]||(p[i]=[]),_=Math.max(0,g-1);_<=Math.min(g+1,n.config.gridSize-1);_++)for(m=Math.max(0,f-1);m<=Math.min(f+1,n.config.gridSize-1);m++)a[_][m].forEach((function(n){n!==i&&-1===p[i].indexOf(n)&&p[i].push(n)}))}));for(i=0;i<I;i++)e=z[i],p[e.id].forEach((function(i){var t=n.sigInst.graph.nodes(i),r=t.dn_x-e.dn_x,d=t.dn_y-e.dn_y,a=Math.sqrt(r*r+d*d);a<e.dn_size*n.config.scaleNodes+n.config.nodeMargin+(t.dn_size*n.config.scaleNodes+n.config.nodeMargin)&&(n.running=!0,a>0?(t.dn.dx+=r/a*(1+e.dn_size),t.dn.dy+=d/a*(1+e.dn_size)):(t.dn.dx+=.01*o*(.5-Math.random()),t.dn.dy+=.01*s*(.5-Math.random())))}));for(i=0;i<I;i++)(t=z[i]).fixed||(t.dn_x=t.dn_x+.1*t.dn.dx*n.config.speed,t.dn_y=t.dn_y+.1*t.dn.dy*n.config.speed);return this.running&&this.iterCount<1&&(this.running=!1),this.running},this.go=function(){for(this.iterCount=this.config.maxIterations;this.running;)this.atomicGo();this.stop()},this.start=function(){if(!this.running){var i=this.sigInst.graph.nodes(),t=this.sigInst.renderers[n.config.rendererIndex].options.prefix;this.running=!0;for(var o=0;o<i.length;o++)i[o].dn_x=i[o][t+"x"],i[o].dn_y=i[o][t+"y"],i[o].dn_size=i[o][t+"size"],i[o].dn={dx:0,dy:0};e[n.sigInst.id].dispatchEvent("start"),this.go()}},this.stop=function(){var i=this.sigInst.graph.nodes();if(this.running=!1,this.easing)e[n.sigInst.id].dispatchEvent("interpolate"),sigma.plugins.animate(n.sigInst,{x:"dn_x",y:"dn_y"},{easing:n.easing,onComplete:function(){n.sigInst.refresh();for(var t=0;t<i.length;t++)i[t].dn=null,i[t].dn_x=null,i[t].dn_y=null;e[n.sigInst.id].dispatchEvent("stop")},duration:n.duration});else{for(var t=0;t<i.length;t++)i[t].x=i[t].dn_x,i[t].y=i[t].dn_y;this.sigInst.refresh();for(t=0;t<i.length;t++)i[t].dn=null,i[t].dn_x=null,i[t].dn_y=null;e[n.sigInst.id].dispatchEvent("stop")}},this.kill=function(){this.sigInst=null,this.config=null,this.easing=null}}sigma.prototype.configNoverlap=function(n){var i=this;if(!n)throw new Error('Missing argument: "config"');return t[i.id]||(t[i.id]=new o,e[i.id]={},sigma.classes.dispatcher.extend(e[i.id]),i.bind("kill",(function(){t[i.id].kill(),t[i.id]=null,e[i.id]=null}))),t[i.id].init(i,n),e[i.id]},sigma.prototype.startNoverlap=function(n){return n&&this.configNoverlap(this,n),t[this.id].start(),e[this.id]},sigma.prototype.isNoverlapRunning=function(){return!!t[this.id]&&t[this.id].running}}).call(this)}).call(window)}});