1 line
18 KiB
JavaScript
1 line
18 KiB
JavaScript
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("d3-selection"),require("d3-transition")):"function"==typeof define&&define.amd?define(["exports","d3-selection","d3-transition"],r):r(t.venn={},t.d3,t.d3)}(this,function(t,r,n){"use strict";var e=1e-10;function a(t,r){var n,a=function(t){for(var r=[],n=0;n<t.length;++n)for(var e=n+1;e<t.length;++e)for(var a=o(t[n],t[e]),i=0;i<a.length;++i){var s=a[i];s.parentIndex=[n,e],r.push(s)}return r}(t),u=a.filter(function(r){return function(t,r){for(var n=0;n<r.length;++n)if(s(t,r[n])>r[n].radius+e)return!1;return!0}(r,t)}),l=0,h=0,x=[];if(u.length>1){var c=f(u);for(n=0;n<u.length;++n){var g=u[n];g.angle=Math.atan2(g.x-c.x,g.y-c.y)}u.sort(function(t,r){return r.angle-t.angle});var v=u[u.length-1];for(n=0;n<u.length;++n){var p=u[n];h+=(v.x+p.x)*(p.y-v.y);for(var d={x:(p.x+v.x)/2,y:(p.y+v.y)/2},y=null,m=0;m<p.parentIndex.length;++m)if(v.parentIndex.indexOf(p.parentIndex[m])>-1){var M=t[p.parentIndex[m]],z=Math.atan2(p.x-M.x,p.y-M.y),b=Math.atan2(v.x-M.x,v.y-M.y),w=b-z;w<0&&(w+=2*Math.PI);var I=b-w/2,R=s(d,{x:M.x+M.radius*Math.sin(I),y:M.y+M.radius*Math.cos(I)});R>2*M.radius&&(R=2*M.radius),(null===y||y.width>R)&&(y={circle:M,width:R,p1:p,p2:v})}null!==y&&(x.push(y),l+=i(y.circle.radius,y.width),v=p)}}else{var P=t[0];for(n=1;n<t.length;++n)t[n].radius<P.radius&&(P=t[n]);var A=!1;for(n=0;n<t.length;++n)if(s(t[n],P)>Math.abs(P.radius-t[n].radius)){A=!0;break}A?l=h=0:(l=P.radius*P.radius*Math.PI,x.push({circle:P,p1:{x:P.x,y:P.y+P.radius},p2:{x:P.x-e,y:P.y+P.radius},width:2*P.radius}))}return h/=2,r&&(r.area=l+h,r.arcArea=l,r.polygonArea=h,r.arcs=x,r.innerPoints=u,r.intersectionPoints=a),l+h}function i(t,r){return t*t*Math.acos(1-r/t)-(t-r)*Math.sqrt(r*(2*t-r))}function s(t,r){return Math.sqrt((t.x-r.x)*(t.x-r.x)+(t.y-r.y)*(t.y-r.y))}function u(t,r,n){if(n>=t+r)return 0;if(n<=Math.abs(t-r))return Math.PI*Math.min(t,r)*Math.min(t,r);var e=r-(n*n-t*t+r*r)/(2*n);return i(t,t-(n*n-r*r+t*t)/(2*n))+i(r,e)}function o(t,r){var n=s(t,r),e=t.radius,a=r.radius;if(n>=e+a||n<=Math.abs(e-a))return[];var i=(e*e-a*a+n*n)/(2*n),u=Math.sqrt(e*e-i*i),o=t.x+i*(r.x-t.x)/n,f=t.y+i*(r.y-t.y)/n,l=-(r.y-t.y)*(u/n),h=-(r.x-t.x)*(u/n);return[{x:o+l,y:f-h},{x:o-l,y:f+h}]}function f(t){for(var r={x:0,y:0},n=0;n<t.length;++n)r.x+=t[n].x,r.y+=t[n].y;return r.x/=t.length,r.y/=t.length,r}function l(t){for(var r=new Array(t),n=0;n<t;++n)r[n]=0;return r}function h(t,r){return l(t).map(function(){return l(r)})}function x(t,r){for(var n=0,e=0;e<t.length;++e)n+=t[e]*r[e];return n}function c(t){return Math.sqrt(x(t,t))}function g(t,r,n){for(var e=0;e<r.length;++e)t[e]=r[e]*n}function v(t,r,n,e,a){for(var i=0;i<t.length;++i)t[i]=r*n[i]+e*a[i]}function p(t,r,n){var e,a=(n=n||{}).maxIterations||200*r.length,i=n.nonZeroDelta||1.05,s=n.zeroDelta||.001,u=n.minErrorDelta||1e-6,o=n.minErrorDelta||1e-5,f=void 0!==n.rho?n.rho:1,l=void 0!==n.chi?n.chi:2,h=void 0!==n.psi?n.psi:-.5,x=void 0!==n.sigma?n.sigma:.5,c=r.length,g=new Array(c+1);g[0]=r,g[0].fx=t(r),g[0].id=0;for(var p=0;p<c;++p){var d=r.slice();d[p]=d[p]?d[p]*i:s,g[p+1]=d,g[p+1].fx=t(d),g[p+1].id=p+1}function y(t){for(var r=0;r<t.length;r++)g[c][r]=t[r];g[c].fx=t.fx}for(var m=function(t,r){return t.fx-r.fx},M=r.slice(),z=r.slice(),b=r.slice(),w=r.slice(),I=0;I<a;++I){if(g.sort(m),n.history){var R=g.map(function(t){var r=t.slice();return r.fx=t.fx,r.id=t.id,r});R.sort(function(t,r){return t.id-r.id}),n.history.push({x:g[0].slice(),fx:g[0].fx,simplex:R})}for(e=0,p=0;p<c;++p)e=Math.max(e,Math.abs(g[0][p]-g[1][p]));if(Math.abs(g[0].fx-g[c].fx)<u&&e<o)break;for(p=0;p<c;++p){M[p]=0;for(var P=0;P<c;++P)M[p]+=g[P][p];M[p]/=c}var A=g[c];if(v(z,1+f,M,-f,A),z.fx=t(z),z.fx<g[0].fx)v(w,1+l,M,-l,A),w.fx=t(w),w.fx<z.fx?y(w):y(z);else if(z.fx>=g[c-1].fx){var F=!1;if(z.fx>A.fx?(v(b,1+h,M,-h,A),b.fx=t(b),b.fx<A.fx?y(b):F=!0):(v(b,1-h*f,M,h*f,A),b.fx=t(b),b.fx<z.fx?y(b):F=!0),F){if(x>=1)break;for(p=1;p<g.length;++p)v(g[p],1-x,g[0],x,g[p]),g[p].fx=t(g[p])}}else y(z)}return g.sort(m),{fx:g[0].fx,x:g[0]}}function d(t,r,n,e,a,i,s){var u=n.fx,o=x(n.fxprime,r),f=u,l=u,h=o,c=0;function g(l,c,g){for(var p=0;p<16;++p)if(a=(l+c)/2,v(e.x,1,n.x,a,r),f=e.fx=t(e.x,e.fxprime),h=x(e.fxprime,r),f>u+i*a*o||f>=g)c=a;else{if(Math.abs(h)<=-s*o)return a;h*(c-l)>=0&&(c=l),l=a,g=f}return 0}a=a||1,i=i||1e-6,s=s||.1;for(var p=0;p<10;++p){if(v(e.x,1,n.x,a,r),f=e.fx=t(e.x,e.fxprime),h=x(e.fxprime,r),f>u+i*a*o||p&&f>=l)return g(c,a,l);if(Math.abs(h)<=-s*o)return a;if(h>=0)return g(a,c,f);l=f,c=a,a*=2}return a}function y(t,r,n){var e,a,i,s={x:r.slice(),fx:0,fxprime:r.slice()},u={x:r.slice(),fx:0,fxprime:r.slice()},o=r.slice(),f=1;i=(n=n||{}).maxIterations||20*r.length,s.fx=t(s.x,s.fxprime),g(e=s.fxprime.slice(),s.fxprime,-1);for(var l=0;l<i;++l){if(f=d(t,e,s,u,f),n.history&&n.history.push({x:s.x.slice(),fx:s.fx,fxprime:s.fxprime.slice(),alpha:f}),f){v(o,1,u.fxprime,-1,s.fxprime);var h=x(s.fxprime,s.fxprime);v(e,Math.max(0,x(o,u.fxprime)/h),e,-1,u.fxprime),a=s,s=u,u=a}else g(e,s.fxprime,-1);if(c(s.fxprime)<=1e-5)break}return n.history&&n.history.push({x:s.x.slice(),fx:s.fx,fxprime:s.fxprime.slice(),alpha:f}),s}function m(t,r){(r=r||{}).maxIterations=r.maxIterations||500;var n,e=r.initialLayout||b,a=r.lossFunction||I,i=e(t=function(t){t=t.slice();var r,n,e,a,i=[],s={};for(r=0;r<t.length;++r){var u=t[r];1==u.sets.length?i.push(u.sets[0]):2==u.sets.length&&(e=u.sets[0],a=u.sets[1],s[[e,a]]=!0,s[[a,e]]=!0)}for(i.sort(function(t,r){return t>r}),r=0;r<i.length;++r)for(e=i[r],n=r+1;n<i.length;++n)a=i[n],[e,a]in s||t.push({sets:[e,a],size:0});return t}(t),r),s=[],u=[];for(n in i)i.hasOwnProperty(n)&&(s.push(i[n].x),s.push(i[n].y),u.push(n));for(var o=p(function(r){for(var n={},e=0;e<u.length;++e){var s=u[e];n[s]={x:r[2*e],y:r[2*e+1],radius:i[s].radius}}return a(n,t)},s,r).x,f=0;f<u.length;++f)n=u[f],i[n].x=o[2*f],i[n].y=o[2*f+1];return i}var M=1e-10;function z(t,r,n){return Math.min(t,r)*Math.min(t,r)*Math.PI<=n+M?Math.abs(t-r):function(t,r,n,e){var a=(e=e||{}).maxIterations||100,i=e.tolerance||1e-10,s=t(r),u=t(n),o=n-r;if(s*u>0)throw"Initial bisect points must have opposite signs";if(0===s)return r;if(0===u)return n;for(var f=0;f<a;++f){var l=r+(o/=2),h=t(l);if(h*s>=0&&(r=l),Math.abs(o)<i||0===h)return l}return r+o}(function(e){return u(t,r,e)-n},0,t+r)}function b(t,r){var n=w(t,r),e=r.lossFunction||I;if(t.length>=8){var a=function(t,r){var n,e=(r=r||{}).restarts||10,a=[],i={};for(n=0;n<t.length;++n){var s=t[n];1==s.sets.length&&(i[s.sets[0]]=a.length,a.push(s))}var u=(v=t,p=a,d=i,m=h(p.length,p.length),M=h(p.length,p.length),v.filter(function(t){return 2==t.sets.length}).map(function(t){var r=d[t.sets[0]],n=d[t.sets[1]],e=z(Math.sqrt(p[r].size/Math.PI),Math.sqrt(p[n].size/Math.PI),t.size);m[r][n]=m[n][r]=e;var a=0;t.size+1e-10>=Math.min(p[r].size,p[n].size)?a=1:t.size<=1e-10&&(a=-1),M[r][n]=M[n][r]=a}),{distances:m,constraints:M}),o=u.distances,f=u.constraints,x=c(o.map(c))/o.length;var v,p,d,m,M;o=o.map(function(t){return t.map(function(t){return t/x})});var b,w,I=function(t,r){return function(t,r,n,e){var a,i=0;for(a=0;a<r.length;++a)r[a]=0;for(a=0;a<n.length;++a)for(var s=t[2*a],u=t[2*a+1],o=a+1;o<n.length;++o){var f=t[2*o],l=t[2*o+1],h=n[a][o],x=e[a][o],c=(f-s)*(f-s)+(l-u)*(l-u),g=Math.sqrt(c),v=c-h*h;x>0&&g<=h||x<0&&g>=h||(i+=2*v*v,r[2*a]+=4*v*(s-f),r[2*a+1]+=4*v*(u-l),r[2*o]+=4*v*(f-s),r[2*o+1]+=4*v*(l-u))}return i}(t,r,o,f)};for(n=0;n<e;++n){var R=l(2*o.length).map(Math.random);w=y(I,R,r),(!b||w.fx<b.fx)&&(b=w)}var P=b.x,A={};for(n=0;n<a.length;++n){var F=a[n];A[F.sets[0]]={x:P[2*n]*x,y:P[2*n+1]*x,radius:Math.sqrt(F.size/Math.PI)}}if(r.history)for(n=0;n<r.history.length;++n)g(r.history[n].x,x);return A}(t,r);e(a,t)+1e-8<e(n,t)&&(n=a)}return n}function w(t,r){for(var n,e=r&&r.lossFunction?r.lossFunction:I,a={},i={},s=0;s<t.length;++s){var u=t[s];1==u.sets.length&&(n=u.sets[0],a[n]={x:1e10,y:1e10,rowid:a.length,size:u.size,radius:Math.sqrt(u.size/Math.PI)},i[n]=[])}for(t=t.filter(function(t){return 2==t.sets.length}),s=0;s<t.length;++s){var f=t[s],l=f.hasOwnProperty("weight")?f.weight:1,h=f.sets[0],x=f.sets[1];f.size+M>=Math.min(a[h].size,a[x].size)&&(l=0),i[h].push({set:x,size:f.size,weight:l}),i[x].push({set:h,size:f.size,weight:l})}var c=[];for(n in i)if(i.hasOwnProperty(n)){var g=0;for(s=0;s<i[n].length;++s)g+=i[n][s].size*i[n][s].weight;c.push({set:n,size:g})}function v(t,r){return r.size-t.size}c.sort(v);var p={};function d(t){return t.set in p}function y(t,r){a[r].x=t.x,a[r].y=t.y,p[r]=!0}for(y({x:0,y:0},c[0].set),s=1;s<c.length;++s){var m=c[s].set,b=i[m].filter(d);if(n=a[m],b.sort(v),0===b.length)throw"ERROR: missing pairwise overlap information";for(var w=[],R=0;R<b.length;++R){var P=a[b[R].set],A=z(n.radius,P.radius,b[R].size);w.push({x:P.x+A,y:P.y}),w.push({x:P.x-A,y:P.y}),w.push({y:P.y+A,x:P.x}),w.push({y:P.y-A,x:P.x});for(var F=R+1;F<b.length;++F)for(var O=a[b[F].set],q=z(n.radius,O.radius,b[F].size),j=o({x:P.x,y:P.y,radius:A},{x:O.x,y:O.y,radius:q}),k=0;k<j.length;++k)w.push(j[k])}var C=1e50,D=w[0];for(R=0;R<w.length;++R){a[m].x=w[R].x,a[m].y=w[R].y;var E=e(a,t);E<C&&(C=E,D=w[R])}y(D,m)}return a}function I(t,r){var n=0;for(var e=0;e<r.length;++e){var i,o=r[e];if(1!=o.sets.length){if(2==o.sets.length){var f=t[o.sets[0]],l=t[o.sets[1]];i=u(f.radius,l.radius,s(f,l))}else i=a(o.sets.map(function(r){return t[r]}));n+=(o.hasOwnProperty("weight")?o.weight:1)*(i-o.size)*(i-o.size)}}return n}function R(t,r,n){var e;if(null===n?t.sort(function(t,r){return r.radius-t.radius}):t.sort(n),t.length>0){var a=t[0].x,i=t[0].y;for(e=0;e<t.length;++e)t[e].x-=a,t[e].y-=i}2==t.length&&(s(t[0],t[1])<Math.abs(t[1].radius-t[0].radius)&&(t[1].x=t[0].x+t[0].radius-t[1].radius-1e-10,t[1].y=t[0].y));if(t.length>1){var u,o,f=Math.atan2(t[1].x,t[1].y)-r,l=Math.cos(f),h=Math.sin(f);for(e=0;e<t.length;++e)u=t[e].x,o=t[e].y,t[e].x=l*u-h*o,t[e].y=h*u+l*o}if(t.length>2){for(var x=Math.atan2(t[2].x,t[2].y)-r;x<0;)x+=2*Math.PI;for(;x>2*Math.PI;)x-=2*Math.PI;if(x>Math.PI){var c=t[1].y/(1e-10+t[1].x);for(e=0;e<t.length;++e){var g=(t[e].x+c*t[e].y)/(1+c*c);t[e].x=2*g-t[e].x,t[e].y=2*g*c-t[e].y}}}}function P(t){function r(t){return t.parent!==t&&(t.parent=r(t.parent)),t.parent}t.map(function(t){t.parent=t});for(var n=0;n<t.length;++n)for(var e=n+1;e<t.length;++e){var a=t[n].radius+t[e].radius;s(t[n],t[e])+1e-10<a&&(i=t[e],u=t[n],o=void 0,void 0,o=r(i),f=r(u),o.parent=f)}var i,u,o,f,l,h={};for(n=0;n<t.length;++n)(l=r(t[n]).parent.setid)in h||(h[l]=[]),h[l].push(t[n]);t.map(function(t){delete t.parent});var x=[];for(l in h)h.hasOwnProperty(l)&&x.push(h[l]);return x}function A(t){var r=function(r){return{max:Math.max.apply(null,t.map(function(t){return t[r]+t.radius})),min:Math.min.apply(null,t.map(function(t){return t[r]-t.radius}))}};return{xRange:r("x"),yRange:r("y")}}function F(t,r,n){null===r&&(r=Math.PI/2);var e,a,i=[];for(a in t)if(t.hasOwnProperty(a)){var s=t[a];i.push({x:s.x,y:s.y,radius:s.radius,setid:a})}var u=P(i);for(e=0;e<u.length;++e){R(u[e],r,n);var o=A(u[e]);u[e].size=(o.xRange.max-o.xRange.min)*(o.yRange.max-o.yRange.min),u[e].bounds=o}u.sort(function(t,r){return r.size-t.size});var f=(i=u[0]).bounds,l=(f.xRange.max-f.xRange.min)/50;function h(t,r,n){if(t){var e,a,s,u=t.bounds;r?e=f.xRange.max-u.xRange.min+l:(e=f.xRange.max-u.xRange.max,(s=(u.xRange.max-u.xRange.min)/2-(f.xRange.max-f.xRange.min)/2)<0&&(e+=s)),n?a=f.yRange.max-u.yRange.min+l:(a=f.yRange.max-u.yRange.max,(s=(u.yRange.max-u.yRange.min)/2-(f.yRange.max-f.yRange.min)/2)<0&&(a+=s));for(var o=0;o<t.length;++o)t[o].x+=e,t[o].y+=a,i.push(t[o])}}for(var x=1;x<u.length;)h(u[x],!0,!1),h(u[x+1],!1,!0),h(u[x+2],!0,!0),x+=3,f=A(i);var c={};for(e=0;e<i.length;++e)c[i[e].setid]=i[e];return c}function O(t,r,n,e){var a=[],i=[];for(var s in t)t.hasOwnProperty(s)&&(i.push(s),a.push(t[s]));r-=2*e,n-=2*e;var u=A(a),o=u.xRange,f=u.yRange;if(o.max==o.min||f.max==f.min)return console.log("not scaling solution: zero size detected"),t;for(var l=r/(o.max-o.min),h=n/(f.max-f.min),x=Math.min(h,l),c=(r-(o.max-o.min)*x)/2,g=(n-(f.max-f.min)*x)/2,v={},p=0;p<a.length;++p){var d=a[p];v[i[p]]={radius:x*d.radius,x:e+c+(d.x-o.min)*x,y:e+g+(d.y-f.min)*x}}return v}function q(t,n){return function(){for(var e,a=r.select(this),i=a.datum(),s=t[i.sets[0]].radius||50,u=n(i)||"",o=u.split(/\s+/).reverse(),f=(u.length+o.length)/3,l=o.pop(),h=[l],x=0,c=a.text(null).append("tspan").text(l);l=o.pop();)h.push(l),e=h.join(" "),c.text(e),e.length>f&&c.node().getComputedTextLength()>s&&(h.pop(),c.text(h.join(" ")),h=[l],c=a.append("tspan").text(l),x++);var g=.35-1.1*x/2,v=a.attr("x"),p=a.attr("y");a.selectAll("tspan").attr("x",v).attr("y",p).attr("dy",function(t,r){return g+1.1*r+"em"})}}function j(t,r,n){var e,a,i=r[0].radius-s(r[0],t);for(e=1;e<r.length;++e)(a=r[e].radius-s(r[e],t))<=i&&(i=a);for(e=0;e<n.length;++e)(a=s(n[e],t)-n[e].radius)<=i&&(i=a);return i}function k(t,r){var n,e=[];for(n=0;n<t.length;++n){var i=t[n];e.push({x:i.x,y:i.y}),e.push({x:i.x+i.radius/2,y:i.y}),e.push({x:i.x-i.radius/2,y:i.y}),e.push({x:i.x,y:i.y+i.radius/2}),e.push({x:i.x,y:i.y-i.radius/2})}var u=e[0],o=j(e[0],t,r);for(n=1;n<e.length;++n){var l=j(e[n],t,r);l>=o&&(u=e[n],o=l)}var h=p(function(n){return-1*j({x:n[0],y:n[1]},t,r)},[u.x,u.y],{maxIterations:500,minErrorDelta:1e-10}).x,x={x:h[0],y:h[1]},c=!0;for(n=0;n<t.length;++n)if(s(x,t[n])>t[n].radius){c=!1;break}for(n=0;n<r.length;++n)if(s(x,r[n])<r[n].radius){c=!1;break}if(!c)if(1==t.length)x={x:t[0].x,y:t[0].y};else{var g={};a(t,g),x=0===g.arcs.length?{x:0,y:-1e3,disjoint:!0}:1==g.arcs.length?{x:g.arcs[0].circle.x,y:g.arcs[0].circle.y}:r.length?k(t,[]):f(g.arcs.map(function(t){return t.p1}))}return x}function C(t){var r={},n=[];for(var e in t)n.push(e),r[e]=[];for(var a=0;a<n.length;a++)for(var i=t[n[a]],u=a+1;u<n.length;++u){var o=t[n[u]],f=s(i,o);f+o.radius<=i.radius+1e-10?r[n[u]].push(n[a]):f+i.radius<=o.radius+1e-10&&r[n[a]].push(n[u])}return r}function D(t,r){for(var n={},e=C(t),a=0;a<r.length;++a){for(var i=r[a].sets,s={},u={},o=0;o<i.length;++o){s[i[o]]=!0;for(var f=e[i[o]],l=0;l<f.length;++l)u[f[l]]=!0}var h=[],x=[];for(var c in t)c in s?h.push(t[c]):c in u||x.push(t[c]);var g=k(h,x);n[i]=g,g.disjoint&&r[a].size>0&&console.log("WARNING: area "+i+" not represented on screen")}return n}function E(t,r,n){var e=[];return e.push("\nM",t,r),e.push("\nm",-n,0),e.push("\na",n,n,0,1,0,2*n,0),e.push("\na",n,n,0,1,0,2*-n,0),e.join(" ")}function T(t){var r=t.split(" ");return{x:parseFloat(r[1]),y:parseFloat(r[2]),radius:-parseFloat(r[4])}}function L(t){var r={};a(t,r);var n=r.arcs;if(0===n.length)return"M 0 0";if(1==n.length){var e=n[0].circle;return E(e.x,e.y,e.radius)}for(var i=["\nM",n[0].p2.x,n[0].p2.y],s=0;s<n.length;++s){var u=n[s],o=u.circle.radius,f=u.width>o;i.push("\nA",o,o,0,f?1:0,1,u.p1.x,u.p1.y)}return i.join(" ")}t.intersectionArea=a,t.circleCircleIntersection=o,t.circleOverlap=u,t.circleArea=i,t.distance=s,t.venn=m,t.greedyLayout=w,t.scaleSolution=O,t.normalizeSolution=F,t.bestInitialLayout=b,t.lossFunction=I,t.disjointCluster=P,t.distanceFromIntersectArea=z,t.VennDiagram=function(){var t=600,n=350,e=15,a=1e3,i=Math.PI/2,s=!0,u=!0,o=!0,f=null,l=null,h={},x=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],c=0,g=function(t){if(t in h)return h[t];var r=h[t]=x[c];return(c+=1)>=x.length&&(c=0),r},v=m,p=I;function d(h){var x=h.datum(),c={};x.forEach(function(t){0==t.size&&1==t.sets.length&&(c[t.sets[0]]=1)});var d={},y={};if((x=x.filter(function(t){return!t.sets.some(function(t){return t in c})})).length>0){var m=v(x,{lossFunction:p});s&&(m=F(m,i,l)),d=O(m,t,n,e),y=D(d,x)}var M={};function z(t){return t.sets in M?M[t.sets]:1==t.sets.length?""+t.sets[0]:void 0}x.forEach(function(t){t.label&&(M[t.sets]=t.label)}),h.selectAll("svg").data([d]).enter().append("svg");var b=h.select("svg").attr("width",t).attr("height",n),w={},I=!1;b.selectAll(".venn-area path").each(function(t){var n=r.select(this).attr("d");1==t.sets.length&&n&&(I=!0,w[t.sets[0]]=T(n))});var R=function(r){return function(e){return L(r.sets.map(function(r){var a=w[r],i=d[r];return a||(a={x:t/2,y:n/2,radius:1}),i||(i={x:t/2,y:n/2,radius:1}),{x:a.x*(1-e)+i.x*e,y:a.y*(1-e)+i.y*e,radius:a.radius*(1-e)+i.radius*e}}))}},P=b.selectAll(".venn-area").data(x,function(t){return t.sets}),A=P.enter().append("g").attr("class",function(t){return"venn-area venn-"+(1==t.sets.length?"circle":"intersection")}).attr("data-venn-sets",function(t){return t.sets.join("_")}),j=A.append("path"),k=A.append("text").attr("class","label").text(function(t){return z(t)}).attr("text-anchor","middle").attr("dy",".35em").attr("x",t/2).attr("y",n/2);o&&(j.style("fill-opacity","0").filter(function(t){return 1==t.sets.length}).style("fill",function(t){return g(t.sets)}).style("fill-opacity",".25"),k.style("fill",function(t){return 1==t.sets.length?g(t.sets):"#444"}));var C=h;I?(C=h.transition("venn").duration(a)).selectAll("path").attrTween("d",R):C.selectAll("path").attr("d",function(t){return L(t.sets.map(function(t){return d[t]}))});var E=C.selectAll("text").filter(function(t){return t.sets in y}).text(function(t){return z(t)}).attr("x",function(t){return Math.floor(y[t.sets].x)}).attr("y",function(t){return Math.floor(y[t.sets].y)});u&&(I?"on"in E?E.on("end",q(d,z)):E.each("end",q(d,z)):E.each(q(d,z)));var S=P.exit().transition("venn").duration(a).remove();S.selectAll("path").attrTween("d",R);var _=S.selectAll("text").attr("x",t/2).attr("y",n/2);return null!==f&&(k.style("font-size","0px"),E.style("font-size",f),_.style("font-size","0px")),{circles:d,textCentres:y,nodes:P,enter:A,update:C,exit:S}}return d.wrap=function(t){return arguments.length?(u=t,d):u},d.width=function(r){return arguments.length?(t=r,d):t},d.height=function(t){return arguments.length?(n=t,d):n},d.padding=function(t){return arguments.length?(e=t,d):e},d.colours=function(t){return arguments.length?(g=t,d):g},d.fontSize=function(t){return arguments.length?(f=t,d):f},d.duration=function(t){return arguments.length?(a=t,d):a},d.layoutFunction=function(t){return arguments.length?(v=t,d):v},d.normalize=function(t){return arguments.length?(s=t,d):s},d.styled=function(t){return arguments.length?(o=t,d):o},d.orientation=function(t){return arguments.length?(i=t,d):i},d.orientationOrder=function(t){return arguments.length?(l=t,d):l},d.lossFunction=function(t){return arguments.length?(p=t,d):p},d},t.wrapText=q,t.computeTextCentres=D,t.computeTextCentre=k,t.sortAreas=function(t,r){for(var n=C(t.selectAll("svg").datum()),e={},a=0;a<r.sets.length;++a){var i=r.sets[a];for(var s in n)for(var u=n[s],o=0;o<u.length;++o)if(u[o]==i){e[s]=!0;break}}function f(t){for(var r=0;r<t.length;++r)if(!(t[r]in e))return!1;return!0}t.selectAll("g").sort(function(t,n){return t.sets.length!=n.sets.length?t.sets.length-n.sets.length:t==r?f(n.sets)?-1:1:n==r?f(t.sets)?1:-1:n.size-t.size})},t.circlePath=E,t.circleFromPath=T,t.intersectionAreaPath=L,Object.defineProperty(t,"__esModule",{value:!0})}); |