UNPKG

react-sigma

Version:

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

1 lines 26 kB
var Sigma=function(t){var e={};function i(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)i.d(r,o,function(e){return t[e]}.bind(null,o));return r},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=142)}({142:function(t,e,i){"use strict";i.r(e);i(143),i(144),i(145),i(146),i(147),i(148),i(149)},143:function(t,e){(function(){(function(t){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.webgl=function(t,e,i,r){if("object"!=typeof r)throw"sigma.renderers.webgl: Wrong arguments.";if(!(r.container instanceof HTMLElement))throw"Container not found.";var o,a,s,n;for(sigma.classes.dispatcher.extend(this),this.jobs={},Object.defineProperty(this,"conradId",{value:sigma.utils.id()}),this.graph=t,this.camera=e,this.contexts={},this.domElements={},this.options=r,this.container=this.options.container,this.settings="object"==typeof r.settings&&r.settings?i.embedObjects(r.settings):i,this.options.prefix=this.camera.readPrefix,Object.defineProperty(this,"nodePrograms",{value:{}}),Object.defineProperty(this,"edgePrograms",{value:{}}),Object.defineProperty(this,"nodeFloatArrays",{value:{}}),Object.defineProperty(this,"edgeFloatArrays",{value:{}}),Object.defineProperty(this,"edgeIndicesArrays",{value:{}}),this.settings(r,"batchEdgesDrawing")?(this.initDOM("canvas","edges",!0),this.initDOM("canvas","nodes",!0)):(this.initDOM("canvas","scene",!0),this.contexts.nodes=this.contexts.scene,this.contexts.edges=this.contexts.scene),this.initDOM("canvas","labels"),this.initDOM("canvas","mouse"),this.contexts.hover=this.contexts.mouse,this.captors=[],o=0,a=(s=this.options.captors||[sigma.captors.mouse,sigma.captors.touch]).length;o<a;o++)n="function"==typeof s[o]?s[o]:sigma.captors[s[o]],this.captors.push(new n(this.domElements.mouse,this.camera,this.settings));sigma.misc.bindEvents.call(this,this.camera.prefix),sigma.misc.drawHovers.call(this,this.camera.prefix),this.resize()},sigma.renderers.webgl.prototype.process=function(){var t,e,i,r,o,a,s=this.graph,n=sigma.utils.extend(n,this.options),l=this.settings(n,"defaultEdgeType"),c=this.settings(n,"defaultNodeType");for(r in this.nodeFloatArrays)delete this.nodeFloatArrays[r];for(r in this.edgeFloatArrays)delete this.edgeFloatArrays[r];for(r in this.edgeIndicesArrays)delete this.edgeIndicesArrays[r];for(e=0,i=(t=s.edges()).length;e<i;e++)r=(o=t[e].type||l)&&sigma.webgl.edges[o]?o:"def",this.edgeFloatArrays[r]||(this.edgeFloatArrays[r]={edges:[]}),this.edgeFloatArrays[r].edges.push(t[e]);for(e=0,i=(t=s.nodes()).length;e<i;e++)r=(o=t[e].type||c)&&sigma.webgl.nodes[o]?o:"def",this.nodeFloatArrays[r]||(this.nodeFloatArrays[r]={nodes:[]}),this.nodeFloatArrays[r].nodes.push(t[e]);for(r in this.edgeFloatArrays){for(a=sigma.webgl.edges[r],t=this.edgeFloatArrays[r].edges,this.edgeFloatArrays[r].array=new Float32Array(t.length*a.POINTS*a.ATTRIBUTES),e=0,i=t.length;e<i;e++)t[e].hidden||s.nodes(t[e].source).hidden||s.nodes(t[e].target).hidden||a.addEdge(t[e],s.nodes(t[e].source),s.nodes(t[e].target),this.edgeFloatArrays[r].array,e*a.POINTS*a.ATTRIBUTES,n.prefix,this.settings);"function"==typeof a.computeIndices&&(this.edgeIndicesArrays[r]=a.computeIndices(this.edgeFloatArrays[r].array))}for(r in this.nodeFloatArrays)for(a=sigma.webgl.nodes[r],t=this.nodeFloatArrays[r].nodes,this.nodeFloatArrays[r].array=new Float32Array(t.length*a.POINTS*a.ATTRIBUTES),e=0,i=t.length;e<i;e++)this.nodeFloatArrays[r].array||(this.nodeFloatArrays[r].array=new Float32Array(t.length*a.POINTS*a.ATTRIBUTES)),t[e].hidden||a.addNode(t[e],this.nodeFloatArrays[r].array,e*a.POINTS*a.ATTRIBUTES,n.prefix,this.settings);return this},sigma.renderers.webgl.prototype.render=function(e){var i,r,o,a,s,n,l=this,c=(this.graph,this.contexts.nodes),g=this.contexts.edges,d=this.camera.getMatrix(),u=sigma.utils.extend(e,this.options),h=this.settings(u,"drawLabels"),m=this.settings(u,"drawEdges"),f=this.settings(u,"drawNodes");for(a in this.resize(!1),this.settings(u,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(m=!1),this.clear(),d=sigma.utils.matrices.multiply(d,sigma.utils.matrices.translation(this.width/2,this.height/2)),this.jobs)conrad.hasJob(a)&&conrad.killJob(a);if(m)if(this.settings(u,"batchEdgesDrawing"))(function(){var t,e,i,r,o,a,s,n,l,c;i="edges_"+this.conradId,c=this.settings(u,"webglEdgesBatchSize"),(t=Object.keys(this.edgeFloatArrays)).length&&(e=0,l=sigma.webgl.edges[t[e]],o=this.edgeFloatArrays[t[e]].array,n=this.edgeIndicesArrays[t[e]],s=0,a=Math.min(s+c*l.POINTS,o.length/l.ATTRIBUTES),r=function(){return this.edgePrograms[t[e]]||(this.edgePrograms[t[e]]=l.initProgram(g)),s<a&&(g.useProgram(this.edgePrograms[t[e]]),l.render(g,this.edgePrograms[t[e]],o,{settings:this.settings,matrix:d,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(u,"webglOversamplingRatio"),start:s,count:a-s,indicesData:n})),a>=o.length/l.ATTRIBUTES&&e===t.length-1?(delete this.jobs[i],!1):(a>=o.length/l.ATTRIBUTES?(e++,o=this.edgeFloatArrays[t[e]].array,l=sigma.webgl.edges[t[e]],s=0,a=Math.min(s+c*l.POINTS,o.length/l.ATTRIBUTES)):(s=a,a=Math.min(s+c*l.POINTS,o.length/l.ATTRIBUTES)),!0)},this.jobs[i]=r,conrad.addJob(i,r.bind(this)))}).call(this);else for(a in this.edgeFloatArrays)n=sigma.webgl.edges[a],this.edgePrograms[a]||(this.edgePrograms[a]=n.initProgram(g)),this.edgeFloatArrays[a]&&(g.useProgram(this.edgePrograms[a]),n.render(g,this.edgePrograms[a],this.edgeFloatArrays[a].array,{settings:this.settings,matrix:d,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(u,"webglOversamplingRatio"),indicesData:this.edgeIndicesArrays[a]}));if(f)for(a in c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA),c.enable(c.BLEND),this.nodeFloatArrays)n=sigma.webgl.nodes[a],this.nodePrograms[a]||(this.nodePrograms[a]=n.initProgram(c)),this.nodeFloatArrays[a]&&(c.useProgram(this.nodePrograms[a]),n.render(c,this.nodePrograms[a],this.nodeFloatArrays[a].array,{settings:this.settings,matrix:d,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(u,"webglOversamplingRatio")}));if(i=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),this.camera.applyView(t,t,{nodes:i,edges:[],width:this.width,height:this.height}),h)for(s=function(t){return l.settings({prefix:l.camera.prefix},t)},r=0,o=i.length;r<o;r++)i[r].hidden||(sigma.canvas.labels[i[r].type||this.settings(u,"defaultNodeType")]||sigma.canvas.labels.def)(i[r],this.contexts.labels,s);return this.dispatchEvent("render"),this},sigma.renderers.webgl.prototype.initDOM=function(t,e,i){var r=document.createElement(t),o=this;r.style.position="absolute",r.setAttribute("class","sigma-"+e),this.domElements[e]=r,this.container.appendChild(r),"canvas"===t.toLowerCase()&&(this.contexts[e]=r.getContext(i?"experimental-webgl":"2d",{preserveDrawingBuffer:!0}),i&&(r.addEventListener("webglcontextlost",(function(t){t.preventDefault()}),!1),r.addEventListener("webglcontextrestored",(function(t){o.render()}),!1)))},sigma.renderers.webgl.prototype.resize=function(e,i){var r,o=this.width,a=this.height,s=sigma.utils.getPixelRatio();if(e!==t&&i!==t?(this.width=e,this.height=i):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,e=this.width,i=this.height),o!==this.width||a!==this.height)for(r in this.domElements)this.domElements[r].style.width=e+"px",this.domElements[r].style.height=i+"px","canvas"===this.domElements[r].tagName.toLowerCase()&&(this.contexts[r]&&this.contexts[r].scale?(this.domElements[r].setAttribute("width",e*s+"px"),this.domElements[r].setAttribute("height",i*s+"px"),1!==s&&this.contexts[r].scale(s,s)):(this.domElements[r].setAttribute("width",e*this.settings("webglOversamplingRatio")+"px"),this.domElements[r].setAttribute("height",i*this.settings("webglOversamplingRatio")+"px")));for(r in this.contexts)this.contexts[r]&&this.contexts[r].viewport&&this.contexts[r].viewport(0,0,this.width*this.settings("webglOversamplingRatio"),this.height*this.settings("webglOversamplingRatio"));return this},sigma.renderers.webgl.prototype.clear=function(){return this.contexts.labels.clearRect(0,0,this.width,this.height),this.contexts.nodes.clear(this.contexts.nodes.COLOR_BUFFER_BIT),this.contexts.edges.clear(this.contexts.edges.COLOR_BUFFER_BIT),this},sigma.renderers.webgl.prototype.kill=function(){for(var t,e;e=this.captors.pop();)e.kill();for(t in delete this.captors,this.domElements)this.domElements[t].parentNode.removeChild(this.domElements[t]),delete this.domElements[t],delete this.contexts[t];delete this.domElements,delete this.contexts},sigma.utils.pkg("sigma.webgl.nodes"),sigma.utils.pkg("sigma.webgl.edges"),sigma.utils.pkg("sigma.canvas.labels")}).call(this)}).call(window)},144:function(t,e){(function(){!function(t){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.renderers");var e,i=!!t.WebGLRenderingContext;if(i){e=document.createElement("canvas");try{i=!(!e.getContext("webgl")&&!e.getContext("experimental-webgl"))}catch(t){i=!1}}sigma.renderers.def=i?sigma.renderers.webgl:sigma.renderers.canvas}(this)}).call(window)},145:function(t,e){(function(){!function(){"use strict";sigma.utils.pkg("sigma.webgl.nodes"),sigma.webgl.nodes.def={POINTS:3,ATTRIBUTES:5,addNode:function(t,e,i,r,o){var a=sigma.utils.floatColor(t.color||o("defaultNodeColor"));e[i++]=t[r+"x"],e[i++]=t[r+"y"],e[i++]=t[r+"size"],e[i++]=a,e[i++]=0,e[i++]=t[r+"x"],e[i++]=t[r+"y"],e[i++]=t[r+"size"],e[i++]=a,e[i++]=2*Math.PI/3,e[i++]=t[r+"x"],e[i++]=t[r+"y"],e[i++]=t[r+"size"],e[i++]=a,e[i++]=4*Math.PI/3},render:function(t,e,i,r){var o,a=t.getAttribLocation(e,"a_position"),s=t.getAttribLocation(e,"a_size"),n=t.getAttribLocation(e,"a_color"),l=t.getAttribLocation(e,"a_angle"),c=t.getUniformLocation(e,"u_resolution"),g=t.getUniformLocation(e,"u_matrix"),d=t.getUniformLocation(e,"u_ratio"),u=t.getUniformLocation(e,"u_scale");o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,i,t.DYNAMIC_DRAW),t.uniform2f(c,r.width,r.height),t.uniform1f(d,1/Math.pow(r.ratio,r.settings("nodesPowRatio"))),t.uniform1f(u,r.scalingRatio),t.uniformMatrix3fv(g,!1,r.matrix),t.enableVertexAttribArray(a),t.enableVertexAttribArray(s),t.enableVertexAttribArray(n),t.enableVertexAttribArray(l),t.vertexAttribPointer(a,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(s,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),t.vertexAttribPointer(n,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,12),t.vertexAttribPointer(l,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),t.drawArrays(t.TRIANGLES,r.start||0,r.count||i.length/this.ATTRIBUTES)},initProgram:function(t){var e,i;return e=sigma.utils.loadShader(t,["attribute vec2 a_position;","attribute float a_size;","attribute float a_color;","attribute float a_angle;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","varying vec4 color;","varying vec2 center;","varying float radius;","void main() {","radius = a_size * u_ratio;","vec2 position = (u_matrix * vec3(a_position, 1)).xy;","center = position * u_scale;","center = vec2(center.x, u_scale * u_resolution.y - center.y);","position = position +","2.0 * radius * vec2(cos(a_angle), sin(a_angle));","position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);","radius = radius * u_scale;","gl_Position = vec4(position, 0, 1);","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),t.VERTEX_SHADER),i=sigma.utils.loadShader(t,["precision mediump float;","varying vec4 color;","varying vec2 center;","varying float radius;","void main(void) {","vec4 color0 = vec4(0.0, 0.0, 0.0, 0.0);","vec2 m = gl_FragCoord.xy - center;","float diff = radius - sqrt(m.x * m.x + m.y * m.y);","if (diff > 0.0)","gl_FragColor = color;","else","gl_FragColor = color0;","}"].join("\n"),t.FRAGMENT_SHADER),sigma.utils.loadProgram(t,[e,i])}}}()}).call(window)},146:function(t,e){(function(){!function(){"use strict";sigma.utils.pkg("sigma.webgl.nodes"),sigma.webgl.nodes.fast={POINTS:1,ATTRIBUTES:4,addNode:function(t,e,i,r,o){e[i++]=t[r+"x"],e[i++]=t[r+"y"],e[i++]=t[r+"size"],e[i++]=sigma.utils.floatColor(t.color||o("defaultNodeColor"))},render:function(t,e,i,r){var o,a=t.getAttribLocation(e,"a_position"),s=t.getAttribLocation(e,"a_size"),n=t.getAttribLocation(e,"a_color"),l=t.getUniformLocation(e,"u_resolution"),c=t.getUniformLocation(e,"u_matrix"),g=t.getUniformLocation(e,"u_ratio"),d=t.getUniformLocation(e,"u_scale");o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,i,t.DYNAMIC_DRAW),t.uniform2f(l,r.width,r.height),t.uniform1f(g,1/Math.pow(r.ratio,r.settings("nodesPowRatio"))),t.uniform1f(d,r.scalingRatio),t.uniformMatrix3fv(c,!1,r.matrix),t.enableVertexAttribArray(a),t.enableVertexAttribArray(s),t.enableVertexAttribArray(n),t.vertexAttribPointer(a,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(s,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),t.vertexAttribPointer(n,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,12),t.drawArrays(t.POINTS,r.start||0,r.count||i.length/this.ATTRIBUTES)},initProgram:function(t){var e,i;return e=sigma.utils.loadShader(t,["attribute vec2 a_position;","attribute float a_size;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","varying vec4 color;","void main() {","gl_Position = vec4(","((u_matrix * vec3(a_position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","gl_PointSize = a_size * u_ratio * u_scale * 2.0;","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),t.VERTEX_SHADER),i=sigma.utils.loadShader(t,["precision mediump float;","varying vec4 color;","void main(void) {","float border = 0.01;","float radius = 0.5;","vec4 color0 = vec4(0.0, 0.0, 0.0, 0.0);","vec2 m = gl_PointCoord - vec2(0.5, 0.5);","float dist = radius - sqrt(m.x * m.x + m.y * m.y);","float t = 0.0;","if (dist > border)","t = 1.0;","else if (dist > 0.0)","t = dist / border;","gl_FragColor = mix(color0, color, t);","}"].join("\n"),t.FRAGMENT_SHADER),sigma.utils.loadProgram(t,[e,i])}}}()}).call(window)},147:function(t,e){(function(){!function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.def={POINTS:6,ATTRIBUTES:7,addEdge:function(t,e,i,r,o,a,s){var n=(t[a+"size"]||1)/2,l=e[a+"x"],c=e[a+"y"],g=i[a+"x"],d=i[a+"y"],u=t.color;if(!u)switch(s("edgeColor")){case"source":u=e.color||s("defaultNodeColor");break;case"target":u=i.color||s("defaultNodeColor");break;default:u=s("defaultEdgeColor")}u=sigma.utils.floatColor(u),r[o++]=l,r[o++]=c,r[o++]=g,r[o++]=d,r[o++]=n,r[o++]=0,r[o++]=u,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=1,r[o++]=u,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=0,r[o++]=u,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=0,r[o++]=u,r[o++]=l,r[o++]=c,r[o++]=g,r[o++]=d,r[o++]=n,r[o++]=1,r[o++]=u,r[o++]=l,r[o++]=c,r[o++]=g,r[o++]=d,r[o++]=n,r[o++]=0,r[o++]=u},render:function(t,e,i,r){var o,a=t.getAttribLocation(e,"a_color"),s=t.getAttribLocation(e,"a_position1"),n=t.getAttribLocation(e,"a_position2"),l=t.getAttribLocation(e,"a_thickness"),c=t.getAttribLocation(e,"a_minus"),g=t.getUniformLocation(e,"u_resolution"),d=t.getUniformLocation(e,"u_matrix"),u=t.getUniformLocation(e,"u_matrixHalfPi"),h=t.getUniformLocation(e,"u_matrixHalfPiMinus"),m=t.getUniformLocation(e,"u_ratio"),f=t.getUniformLocation(e,"u_scale");o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW),t.uniform2f(g,r.width,r.height),t.uniform1f(m,r.ratio/Math.pow(r.ratio,r.settings("edgesPowRatio"))),t.uniform1f(f,r.scalingRatio),t.uniformMatrix3fv(d,!1,r.matrix),t.uniformMatrix2fv(u,!1,sigma.utils.matrices.rotation(Math.PI/2,!0)),t.uniformMatrix2fv(h,!1,sigma.utils.matrices.rotation(-Math.PI/2,!0)),t.enableVertexAttribArray(a),t.enableVertexAttribArray(s),t.enableVertexAttribArray(n),t.enableVertexAttribArray(l),t.enableVertexAttribArray(c),t.vertexAttribPointer(s,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(n,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),t.vertexAttribPointer(l,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),t.vertexAttribPointer(c,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,20),t.vertexAttribPointer(a,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,24),t.drawArrays(t.TRIANGLES,r.start||0,r.count||i.length/this.ATTRIBUTES)},initProgram:function(t){var e,i;return e=sigma.utils.loadShader(t,["attribute vec2 a_position1;","attribute vec2 a_position2;","attribute float a_thickness;","attribute float a_minus;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","uniform mat2 u_matrixHalfPi;","uniform mat2 u_matrixHalfPiMinus;","varying vec4 color;","void main() {","vec2 position = a_thickness * u_ratio *","normalize(a_position2 - a_position1);","mat2 matrix = a_minus * u_matrixHalfPiMinus +","(1.0 - a_minus) * u_matrixHalfPi;","position = matrix * position + a_position1;","gl_Position = vec4(","((u_matrix * vec3(position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),t.VERTEX_SHADER),i=sigma.utils.loadShader(t,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),t.FRAGMENT_SHADER),sigma.utils.loadProgram(t,[e,i])}}}()}).call(window)},148:function(t,e){(function(){!function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.fast={POINTS:2,ATTRIBUTES:3,addEdge:function(t,e,i,r,o,a,s){t[a+"size"];var n=e[a+"x"],l=e[a+"y"],c=i[a+"x"],g=i[a+"y"],d=t.color;if(!d)switch(s("edgeColor")){case"source":d=e.color||s("defaultNodeColor");break;case"target":d=i.color||s("defaultNodeColor");break;default:d=s("defaultEdgeColor")}d=sigma.utils.floatColor(d),r[o++]=n,r[o++]=l,r[o++]=d,r[o++]=c,r[o++]=g,r[o++]=d},render:function(t,e,i,r){var o,a=t.getAttribLocation(e,"a_color"),s=t.getAttribLocation(e,"a_position"),n=t.getUniformLocation(e,"u_resolution"),l=t.getUniformLocation(e,"u_matrix");o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,i,t.DYNAMIC_DRAW),t.uniform2f(n,r.width,r.height),t.uniformMatrix3fv(l,!1,r.matrix),t.enableVertexAttribArray(s),t.enableVertexAttribArray(a),t.vertexAttribPointer(s,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(a,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),t.lineWidth(3),t.drawArrays(t.LINES,r.start||0,r.count||i.length/this.ATTRIBUTES)},initProgram:function(t){var e,i;return e=sigma.utils.loadShader(t,["attribute vec2 a_position;","attribute float a_color;","uniform vec2 u_resolution;","uniform mat3 u_matrix;","varying vec4 color;","void main() {","gl_Position = vec4(","((u_matrix * vec3(a_position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),t.VERTEX_SHADER),i=sigma.utils.loadShader(t,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),t.FRAGMENT_SHADER),sigma.utils.loadProgram(t,[e,i])}}}()}).call(window)},149:function(t,e){(function(){!function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.arrow={POINTS:9,ATTRIBUTES:11,addEdge:function(t,e,i,r,o,a,s){var n=(t[a+"size"]||1)/2,l=e[a+"x"],c=e[a+"y"],g=i[a+"x"],d=i[a+"y"],u=i[a+"size"],h=t.color;if(!h)switch(s("edgeColor")){case"source":h=e.color||s("defaultNodeColor");break;case"target":h=i.color||s("defaultNodeColor");break;default:h=s("defaultEdgeColor")}h=sigma.utils.floatColor(h),r[o++]=l,r[o++]=c,r[o++]=g,r[o++]=d,r[o++]=n,r[o++]=u,r[o++]=0,r[o++]=0,r[o++]=0,r[o++]=0,r[o++]=h,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=u,r[o++]=1,r[o++]=1,r[o++]=0,r[o++]=0,r[o++]=h,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=u,r[o++]=1,r[o++]=0,r[o++]=0,r[o++]=0,r[o++]=h,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=u,r[o++]=1,r[o++]=0,r[o++]=0,r[o++]=0,r[o++]=h,r[o++]=l,r[o++]=c,r[o++]=g,r[o++]=d,r[o++]=n,r[o++]=u,r[o++]=0,r[o++]=1,r[o++]=0,r[o++]=0,r[o++]=h,r[o++]=l,r[o++]=c,r[o++]=g,r[o++]=d,r[o++]=n,r[o++]=u,r[o++]=0,r[o++]=0,r[o++]=0,r[o++]=0,r[o++]=h,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=u,r[o++]=1,r[o++]=0,r[o++]=1,r[o++]=-1,r[o++]=h,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=u,r[o++]=1,r[o++]=0,r[o++]=1,r[o++]=0,r[o++]=h,r[o++]=g,r[o++]=d,r[o++]=l,r[o++]=c,r[o++]=n,r[o++]=u,r[o++]=1,r[o++]=0,r[o++]=1,r[o++]=1,r[o++]=h},render:function(t,e,i,r){var o,a=t.getAttribLocation(e,"a_pos1"),s=t.getAttribLocation(e,"a_pos2"),n=t.getAttribLocation(e,"a_thickness"),l=t.getAttribLocation(e,"a_tSize"),c=t.getAttribLocation(e,"a_delay"),g=t.getAttribLocation(e,"a_minus"),d=t.getAttribLocation(e,"a_head"),u=t.getAttribLocation(e,"a_headPosition"),h=t.getAttribLocation(e,"a_color"),m=t.getUniformLocation(e,"u_resolution"),f=t.getUniformLocation(e,"u_matrix"),A=t.getUniformLocation(e,"u_matrixHalfPi"),_=t.getUniformLocation(e,"u_matrixHalfPiMinus"),E=t.getUniformLocation(e,"u_ratio"),T=t.getUniformLocation(e,"u_nodeRatio"),b=t.getUniformLocation(e,"u_arrowHead"),y=t.getUniformLocation(e,"u_scale");o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW),t.uniform2f(m,r.width,r.height),t.uniform1f(E,r.ratio/Math.pow(r.ratio,r.settings("edgesPowRatio"))),t.uniform1f(T,Math.pow(r.ratio,r.settings("nodesPowRatio"))/r.ratio),t.uniform1f(b,5),t.uniform1f(y,r.scalingRatio),t.uniformMatrix3fv(f,!1,r.matrix),t.uniformMatrix2fv(A,!1,sigma.utils.matrices.rotation(Math.PI/2,!0)),t.uniformMatrix2fv(_,!1,sigma.utils.matrices.rotation(-Math.PI/2,!0)),t.enableVertexAttribArray(a),t.enableVertexAttribArray(s),t.enableVertexAttribArray(n),t.enableVertexAttribArray(l),t.enableVertexAttribArray(c),t.enableVertexAttribArray(g),t.enableVertexAttribArray(d),t.enableVertexAttribArray(u),t.enableVertexAttribArray(h),t.vertexAttribPointer(a,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(s,2,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),t.vertexAttribPointer(n,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),t.vertexAttribPointer(l,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,20),t.vertexAttribPointer(c,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,24),t.vertexAttribPointer(g,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,28),t.vertexAttribPointer(d,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,32),t.vertexAttribPointer(u,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,36),t.vertexAttribPointer(h,1,t.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,40),t.drawArrays(t.TRIANGLES,r.start||0,r.count||i.length/this.ATTRIBUTES)},initProgram:function(t){var e,i;return e=sigma.utils.loadShader(t,["attribute vec2 a_pos1;","attribute vec2 a_pos2;","attribute float a_thickness;","attribute float a_tSize;","attribute float a_delay;","attribute float a_minus;","attribute float a_head;","attribute float a_headPosition;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_nodeRatio;","uniform float u_arrowHead;","uniform float u_scale;","uniform mat3 u_matrix;","uniform mat2 u_matrixHalfPi;","uniform mat2 u_matrixHalfPiMinus;","varying vec4 color;","void main() {","vec2 pos = normalize(a_pos2 - a_pos1);","mat2 matrix = (1.0 - a_head) *","(","a_minus * u_matrixHalfPiMinus +","(1.0 - a_minus) * u_matrixHalfPi",") + a_head * (","a_headPosition * u_matrixHalfPiMinus * 0.6 +","(a_headPosition * a_headPosition - 1.0) * mat2(1.0)",");","pos = a_pos1 + (","(1.0 - a_head) * a_thickness * u_ratio * matrix * pos +","a_head * u_arrowHead * a_thickness * u_ratio * matrix * pos +","a_delay * pos * (","a_tSize / u_nodeRatio +","u_arrowHead * a_thickness * u_ratio",")",");","gl_Position = vec4(","((u_matrix * vec3(pos, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),t.VERTEX_SHADER),i=sigma.utils.loadShader(t,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),t.FRAGMENT_SHADER),sigma.utils.loadProgram(t,[e,i])}}}()}).call(window)}});