UNPKG

topogram

Version:

Create continuous area cartograms with TopoJSON and D3

1 lines 24.1 kB
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.topogram=n.topogram||{})}(this,function(n){"use strict";function t(n,t){return n<t?-1:n>t?1:n>=t?0:NaN}function r(n){return function(r,i){return t(n(r),i)}}function i(n){for(var t,r,i,e=n.length,o=-1,u=0;++o<e;)u+=n[o].length;for(r=new Array(u);--e>=0;)for(i=n[e],t=i.length;--t>=0;)r[--u]=i[t];return r}function e(n,t){var r,i=0,e=n.length,o=-1;if(null==t)for(;++o<e;)(r=+n[o])&&(i+=r);else for(;++o<e;)(r=+t(n[o],o,n))&&(i+=r);return i}function o(){return new u}function u(){this.reset()}function a(n,t,r){var i=n.s=t+r,e=i-t,o=i-e;n.t=t-o+(r-e)}function f(n){return n>1?0:n<-1?Hn:Math.acos(n)}function l(n){return n>1?Jn:n<-1?-Jn:Math.asin(n)}function c(){}function s(n,t){n&&et.hasOwnProperty(n.type)&&et[n.type](n,t)}function p(n,t,r){var i,e=-1,o=n.length-r;for(t.lineStart();++e<o;)i=n[e],t.point(i[0],i[1],i[2]);t.lineEnd()}function h(n,t){var r=-1,i=n.length;for(t.polygonStart();++r<i;)p(n[r],t,1);t.polygonEnd()}function v(n,t){n&&it.hasOwnProperty(n.type)?it[n.type](n,t):s(n,t)}function g(n){return[Yn(n[1],n[0]),l(n[2])]}function d(n){var t=n[0],r=n[1],i=$n(r);return[i*$n(t),i*nt(t),nt(r)]}function y(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function m(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function S(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function E(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function M(n){var t=rt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function x(n,t){return(t-=n)<0?t+360:t}function _(n,t){function r(r,i){return r=n(r,i),t(r[0],r[1])}return n.invert&&t.invert&&(r.invert=function(r,i){return(r=t.invert(r,i))&&n.invert(r[0],r[1])}),r}function b(n,t){return[n>Hn?n-Qn:n<-Hn?n+Qn:n,t]}function N(n,t,r){return(n%=Qn)?t||r?_(P(n),j(t,r)):P(n):t||r?j(t,r):b}function w(n){return function(t,r){return t+=n,[t>Hn?t-Qn:t<-Hn?t+Qn:t,r]}}function P(n){var t=w(n);return t.invert=w(-n),t}function j(n,t){function r(n,t){var r=$n(t),a=$n(n)*r,f=nt(n)*r,c=nt(t),s=c*i+a*e;return[Yn(f*o-s*u,a*i-c*e),l(s*o+f*u)]}var i=$n(n),e=nt(n),o=$n(t),u=nt(t);return r.invert=function(n,t){var r=$n(t),a=$n(n)*r,f=nt(n)*r,c=nt(t),s=c*o-f*u;return[Yn(f*o+c*u,a*i+s*e),l(s*i-a*e)]},r}function k(n,t,r,i,e,o){if(r){var u=$n(t),a=nt(t),f=i*r;null==e?(e=t+i*Qn,o=t-f/2):(e=A(u,e),o=A(u,o),(i>0?e<o:e>o)&&(e+=i*Qn));for(var l,c=e;i>0?c>o:c<o;c-=f)l=g([u,-a*$n(c),-a*nt(c)]),n.point(l[0],l[1])}}function A(n,t){t=d(t),t[0]-=n,M(t);var r=f(-t[1]);return((-t[2]<0?-r:r)+Qn-Dn)%Qn}function q(){var n,t=[];return{point:function(t,r){n.push([t,r])},lineStart:function(){t.push(n=[])},lineEnd:c,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],n=null,r}}}function F(n,t,r,i,e,o){var u,a=n[0],f=n[1],l=t[0],c=t[1],s=0,p=1,h=l-a,v=c-f;if(u=r-a,h||!(u>0)){if(u/=h,h<0){if(u<s)return;u<p&&(p=u)}else if(h>0){if(u>p)return;u>s&&(s=u)}if(u=e-a,h||!(u<0)){if(u/=h,h<0){if(u>p)return;u>s&&(s=u)}else if(h>0){if(u<s)return;u<p&&(p=u)}if(u=i-f,v||!(u>0)){if(u/=v,v<0){if(u<s)return;u<p&&(p=u)}else if(v>0){if(u>p)return;u>s&&(s=u)}if(u=o-f,v||!(u<0)){if(u/=v,v<0){if(u>p)return;u>s&&(s=u)}else if(v>0){if(u<s)return;u<p&&(p=u)}return s>0&&(n[0]=a+s*h,n[1]=f+s*v),p<1&&(t[0]=a+p*h,t[1]=f+p*v),!0}}}}}function O(n,t){return Wn(n[0]-t[0])<Dn&&Wn(n[1]-t[1])<Dn}function z(n,t,r,i){this.x=n,this.z=t,this.o=r,this.e=i,this.v=!1,this.n=this.p=null}function C(n,t,r,i,e){var o,u,a=[],f=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,r,i=n[0],u=n[t];if(O(i,u)){for(e.lineStart(),o=0;o<t;++o)e.point((i=n[o])[0],i[1]);return void e.lineEnd()}a.push(r=new z(i,n,null,!0)),f.push(r.o=new z(i,null,r,!1)),a.push(r=new z(u,n,null,!1)),f.push(r.o=new z(u,null,r,!0))}}),a.length){for(f.sort(t),L(a),L(f),o=0,u=f.length;o<u;++o)f[o].e=r=!r;for(var l,c,s=a[0];;){for(var p=s,h=!0;p.v;)if((p=p.n)===s)return;l=p.z,e.lineStart();do{if(p.v=p.o.v=!0,p.e){if(h)for(o=0,u=l.length;o<u;++o)e.point((c=l[o])[0],c[1]);else i(p.x,p.n.x,1,e);p=p.n}else{if(h)for(l=p.p.z,o=l.length-1;o>=0;--o)e.point((c=l[o])[0],c[1]);else i(p.x,p.p.x,-1,e);p=p.p}p=p.o,l=p.z,h=!h}while(!p.v);e.lineEnd()}}}function L(n){if(t=n.length){for(var t,r,i=0,e=n[0];++i<t;)e.n=r=n[i],r.p=e,e=r;e.n=r=n[0],r.p=e}}function R(n,t,r,e){function o(i,o){return n<=i&&i<=r&&t<=o&&o<=e}function u(i,o,u,f){var c=0,s=0;if(null==i||(c=a(i,u))!==(s=a(o,u))||l(i,o)<0^u>0)do{f.point(0===c||3===c?n:r,c>1?e:t)}while((c=(c+u+4)%4)!==s);else f.point(o[0],o[1])}function a(i,e){return Wn(i[0]-n)<Dn?e>0?0:3:Wn(i[0]-r)<Dn?e>0?2:1:Wn(i[1]-t)<Dn?e>0?1:0:e>0?3:2}function f(n,t){return l(n.x,t.x)}function l(n,t){var r=a(n,1),i=a(t,1);return r!==i?r-i:0===r?t[1]-n[1]:1===r?n[0]-t[0]:2===r?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n,t){o(n,t)&&P.point(n,t)}function c(){for(var t=0,r=0,i=y.length;r<i;++r)for(var o,u,a=y[r],f=1,l=a.length,c=a[0],s=c[0],p=c[1];f<l;++f)o=s,u=p,c=a[f],s=c[0],p=c[1],u<=e?p>e&&(s-o)*(e-u)>(p-u)*(n-o)&&++t:p<=e&&(s-o)*(e-u)<(p-u)*(n-o)&&--t;return t}function s(){P=j,d=[],y=[],w=!0}function p(){var n=c(),t=w&&n,r=(d=i(d)).length;(t||r)&&(a.polygonStart(),t&&(a.lineStart(),u(null,null,1,a),a.lineEnd()),r&&C(d,f,n,u,a),a.polygonEnd()),P=a,d=y=m=null}function h(){k.point=g,y&&y.push(m=[]),N=!0,b=!1,x=_=NaN}function v(){d&&(g(S,E),M&&b&&j.rejoin(),d.push(j.result())),k.point=l,b&&P.lineEnd()}function g(i,u){var a=o(i,u);if(y&&m.push([i,u]),N)S=i,E=u,M=a,N=!1,a&&(P.lineStart(),P.point(i,u));else if(a&&b)P.point(i,u);else{var f=[x=Math.max(vt,Math.min(ht,x)),_=Math.max(vt,Math.min(ht,_))],l=[i=Math.max(vt,Math.min(ht,i)),u=Math.max(vt,Math.min(ht,u))];F(f,l,n,t,r,e)?(b||(P.lineStart(),P.point(f[0],f[1])),P.point(l[0],l[1]),a||P.lineEnd(),w=!1):a&&(P.lineStart(),P.point(i,u),w=!1)}x=i,_=u,b=a}var d,y,m,S,E,M,x,_,b,N,w,P=a,j=q(),k={point:l,lineStart:h,lineEnd:v,polygonStart:s,polygonEnd:p};return k}}function G(n,t){var r=t[0],i=t[1],e=[nt(r),-$n(r),0],o=0,u=0;gt.reset();for(var a=0,f=n.length;a<f;++a)if(s=(c=n[a]).length)for(var c,s,p=c[s-1],h=p[0],v=p[1]/2+Kn,g=nt(v),y=$n(v),S=0;S<s;++S,h=x,g=b,y=N,p=E){var E=c[S],x=E[0],_=E[1]/2+Kn,b=nt(_),N=$n(_),w=x-h,P=w>=0?1:-1,j=P*w,k=j>Hn,A=g*b;if(gt.add(Yn(A*P*nt(j),y*N+A*$n(j))),o+=k?w+P*Qn:w,k^h>=r^x>=r){var q=m(d(p),d(E));M(q);var F=m(e,q);M(F);var O=(k^w>=0?-1:1)*l(F[2]);(i>O||i===O&&(q[0]||q[1]))&&(u+=k^w>=0?1:-1)}}return(o<-Dn||o<Dn&&gt<-Dn)^1&u}function I(n){return n}function T(){mt.point=Z}function Z(n,t){mt.point=B,ot=at=n,ut=ft=t}function B(n,t){yt.add(ft*n-at*t),at=n,ft=t}function D(){B(ot,ut)}function H(n,t){n<St&&(St=n),n>Mt&&(Mt=n),t<Et&&(Et=t),t>xt&&(xt=t)}function J(n,t){bt+=n,Nt+=t,++wt}function K(){Ot.point=Q}function Q(n,t){Ot.point=U,J(st=n,pt=t)}function U(n,t){var r=n-st,i=t-pt,e=rt(r*r+i*i);Pt+=e*(st+n)/2,jt+=e*(pt+t)/2,kt+=e,J(st=n,pt=t)}function V(){Ot.point=J}function W(){Ot.point=Y}function X(){$(lt,ct)}function Y(n,t){Ot.point=$,J(lt=st=n,ct=pt=t)}function $(n,t){var r=n-st,i=t-pt,e=rt(r*r+i*i);Pt+=e*(st+n)/2,jt+=e*(pt+t)/2,kt+=e,e=pt*n-st*t,At+=e*(st+n),qt+=e*(pt+t),Ft+=3*e,J(st=n,pt=t)}function nn(n){this._context=n}function tn(n,t){Tt.point=rn,Ct=Rt=n,Lt=Gt=t}function rn(n,t){Rt-=n,Gt-=t,It.add(rt(Rt*Rt+Gt*Gt)),Rt=n,Gt=t}function en(){this._string=[]}function on(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function un(n,t){function r(n){return n&&("function"==typeof o&&e.pointRadius(+o.apply(this,arguments)),v(n,i(e))),e.result()}var i,e,o=4.5;return r.area=function(n){return v(n,i(mt)),mt.result()},r.measure=function(n){return v(n,i(Tt)),Tt.result()},r.bounds=function(n){return v(n,i(_t)),_t.result()},r.centroid=function(n){return v(n,i(Ot)),Ot.result()},r.projection=function(t){return arguments.length?(i=null==t?(n=null,I):(n=t).stream,r):n},r.context=function(n){return arguments.length?(e=null==n?(t=null,new en):new nn(t=n),"function"!=typeof o&&e.pointRadius(o),r):t},r.pointRadius=function(n){return arguments.length?(o="function"==typeof n?n:(e.pointRadius(+n),+n),r):o},r.projection(n).context(t)}function an(n,t,r,e){return function(o,u){function a(t,r){var i=o(t,r);n(t=i[0],r=i[1])&&u.point(t,r)}function f(n,t){var r=o(n,t);y.point(r[0],r[1])}function l(){x.point=f,y.lineStart()}function c(){x.point=a,y.lineEnd()}function s(n,t){d.push([n,t]);var r=o(n,t);E.point(r[0],r[1])}function p(){E.lineStart(),d=[]}function h(){s(d[0][0],d[0][1]),E.lineEnd();var n,t,r,i,e=E.clean(),o=S.result(),a=o.length;if(d.pop(),v.push(d),d=null,a)if(1&e){if(r=o[0],(t=r.length-1)>0){for(M||(u.polygonStart(),M=!0),u.lineStart(),n=0;n<t;++n)u.point((i=r[n])[0],i[1]);u.lineEnd()}}else a>1&&2&e&&o.push(o.pop().concat(o.shift())),g.push(o.filter(fn))}var v,g,d,y=t(u),m=o.invert(e[0],e[1]),S=q(),E=t(S),M=!1,x={point:a,lineStart:l,lineEnd:c,polygonStart:function(){x.point=s,x.lineStart=p,x.lineEnd=h,g=[],v=[]},polygonEnd:function(){x.point=a,x.lineStart=l,x.lineEnd=c,g=i(g);var n=G(v,m);g.length?(M||(u.polygonStart(),M=!0),C(g,ln,n,r,u)):n&&(M||(u.polygonStart(),M=!0),u.lineStart(),r(null,null,1,u),u.lineEnd()),M&&(u.polygonEnd(),M=!1),g=v=null},sphere:function(){u.polygonStart(),u.lineStart(),r(null,null,1,u),u.lineEnd(),u.polygonEnd()}};return x}}function fn(n){return n.length>1}function ln(n,t){return((n=n.x)[0]<0?n[1]-Jn-Dn:Jn-n[1])-((t=t.x)[0]<0?t[1]-Jn-Dn:Jn-t[1])}function cn(n){var t,r=NaN,i=NaN,e=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(o,u){var a=o>0?Hn:-Hn,f=Wn(o-r);Wn(f-Hn)<Dn?(n.point(r,i=(i+u)/2>0?Jn:-Jn),n.point(e,i),n.lineEnd(),n.lineStart(),n.point(a,i),n.point(o,i),t=0):e!==a&&f>=Hn&&(Wn(r-e)<Dn&&(r-=e*Dn),Wn(o-a)<Dn&&(o-=a*Dn),i=sn(r,i,o,u),n.point(e,i),n.lineEnd(),n.lineStart(),n.point(a,i),t=0),n.point(r=o,i=u),e=a},lineEnd:function(){n.lineEnd(),r=i=NaN},clean:function(){return 2-t}}}function sn(n,t,r,i){var e,o,u=nt(n-r);return Wn(u)>Dn?Xn((nt(t)*(o=$n(i))*nt(r)-nt(i)*(e=$n(t))*nt(n))/(e*o*u)):(t+i)/2}function pn(n,t,r,i){var e;if(null==n)e=r*Jn,i.point(-Hn,e),i.point(0,e),i.point(Hn,e),i.point(Hn,0),i.point(Hn,-e),i.point(0,-e),i.point(-Hn,-e),i.point(-Hn,0),i.point(-Hn,e);else if(Wn(n[0]-t[0])>Dn){var o=n[0]<t[0]?Hn:-Hn;e=r*o/2,i.point(-o,e),i.point(0,e),i.point(o,e)}else i.point(t[0],t[1])}function hn(n,t){function r(r,i,e,o){k(o,n,t,e,r,i)}function i(n,t){return $n(n)*$n(t)>a}function e(n){var t,r,e,a,c;return{lineStart:function(){a=e=!1,c=1},point:function(s,p){var h,v=[s,p],g=i(s,p),d=f?g?0:u(s,p):g?u(s+(s<0?Hn:-Hn),p):0;if(!t&&(a=e=g)&&n.lineStart(),g!==e&&(h=o(t,v),(O(t,h)||O(v,h))&&(v[0]+=Dn,v[1]+=Dn,g=i(v[0],v[1]))),g!==e)c=0,g?(n.lineStart(),h=o(v,t),n.point(h[0],h[1])):(h=o(t,v),n.point(h[0],h[1]),n.lineEnd()),t=h;else if(l&&t&&f^g){var y;d&r||!(y=o(v,t,!0))||(c=0,f?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!g||t&&O(t,v)||n.point(v[0],v[1]),t=v,e=g,r=d},lineEnd:function(){e&&n.lineEnd(),t=null},clean:function(){return c|(a&&e)<<1}}}function o(n,t,r){var i=d(n),e=d(t),o=[1,0,0],u=m(i,e),f=y(u,u),l=u[0],c=f-l*l;if(!c)return!r&&n;var s=a*f/c,p=-a*l/c,h=m(o,u),v=E(o,s);S(v,E(u,p));var M=h,x=y(v,M),_=y(M,M),b=x*x-_*(y(v,v)-1);if(!(b<0)){var N=rt(b),w=E(M,(-x-N)/_);if(S(w,v),w=g(w),!r)return w;var P,j=n[0],k=t[0],A=n[1],q=t[1];k<j&&(P=j,j=k,k=P);var F=k-j,O=Wn(F-Hn)<Dn,z=O||F<Dn;if(!O&&q<A&&(P=A,A=q,q=P),z?O?A+q>0^w[1]<(Wn(w[0]-j)<Dn?A:q):A<=w[1]&&w[1]<=q:F>Hn^(j<=w[0]&&w[0]<=k)){var C=E(M,(-x+N)/_);return S(C,v),[w,g(C)]}}}function u(t,r){var i=f?n:Hn-n,e=0;return t<-i?e|=1:t>i&&(e|=2),r<-i?e|=4:r>i&&(e|=8),e}var a=$n(n),f=a>0,l=Wn(a)>Dn;return an(i,e,r,f?[0,-n]:[-Hn,n-Hn])}function vn(n){return function(t){var r=new gn;for(var i in n)r[i]=n[i];return r.stream=t,r}}function gn(){}function dn(n,t,r){var i=t[1][0]-t[0][0],e=t[1][1]-t[0][1],o=n.clipExtent&&n.clipExtent();n.scale(150).translate([0,0]),null!=o&&n.clipExtent(null),v(r,n.stream(_t));var u=_t.result(),a=Math.min(i/(u[1][0]-u[0][0]),e/(u[1][1]-u[0][1])),f=+t[0][0]+(i-a*(u[1][0]+u[0][0]))/2,l=+t[0][1]+(e-a*(u[1][1]+u[0][1]))/2;return null!=o&&n.clipExtent(o),n.scale(150*a).translate([f,l])}function yn(n,t,r){return dn(n,[[0,0],t],r)}function mn(n,t){return+t?En(n,t):Sn(n)}function Sn(n){return vn({point:function(t,r){t=n(t,r),this.stream.point(t[0],t[1])}})}function En(n,t){function r(i,e,o,u,a,f,c,s,p,h,v,g,d,y){var m=c-i,S=s-e,E=m*m+S*S;if(E>4*t&&d--){var M=u+h,x=a+v,_=f+g,b=rt(M*M+x*x+_*_),N=l(_/=b),w=Wn(Wn(_)-1)<Dn||Wn(o-p)<Dn?(o+p)/2:Yn(x,M),P=n(w,N),j=P[0],k=P[1],A=j-i,q=k-e,F=S*A-m*q;(F*F/E>t||Wn((m*A+S*q)/E-.5)>.3||u*h+a*v+f*g<Dt)&&(r(i,e,o,u,a,f,j,k,w,M/=b,x/=b,_,d,y),y.point(j,k),r(j,k,w,M,x,_,c,s,p,h,v,g,d,y))}}return function(t){function i(r,i){r=n(r,i),t.point(r[0],r[1])}function e(){m=NaN,_.point=o,t.lineStart()}function o(i,e){var o=d([i,e]),u=n(i,e);r(m,S,y,E,M,x,m=u[0],S=u[1],y=i,E=o[0],M=o[1],x=o[2],Bt,t),t.point(m,S)}function u(){_.point=i,t.lineEnd()}function a(){e(),_.point=f,_.lineEnd=l}function f(n,t){o(c=n,t),s=m,p=S,h=E,v=M,g=x,_.point=o}function l(){r(m,S,y,E,M,x,s,p,c,h,v,g,Bt,t),_.lineEnd=u,u()}var c,s,p,h,v,g,y,m,S,E,M,x,_={point:i,lineStart:e,lineEnd:u,polygonStart:function(){t.polygonStart(),_.lineStart=a},polygonEnd:function(){t.polygonEnd(),_.lineStart=e}};return _}}function Mn(n){function t(n){return n=c(n[0]*Vn,n[1]*Vn),[n[0]*d+a,f-n[1]*d]}function r(n){return(n=c.invert((n[0]-a)/d,(f-n[1])/d))&&[n[0]*Un,n[1]*Un]}function i(n,t){return n=u(n,t),[n[0]*d+a,f-n[1]*d]}function e(){c=_(l=N(M,x,b),u);var n=u(S,E);return a=y-n[0]*d,f=m+n[1]*d,o()}function o(){return v=g=null,t}var u,a,f,l,c,s,p,h,v,g,d=150,y=480,m=250,S=0,E=0,M=0,x=0,b=0,w=null,P=Zt,j=null,k=I,A=.5,q=mn(i,A);return t.stream=function(n){return v&&g===n?v:v=Ht(P(l,q(k(g=n))))},t.clipAngle=function(n){return arguments.length?(P=+n?hn(w=n*Vn,6*Vn):(w=null,Zt),o()):w*Un},t.clipExtent=function(n){return arguments.length?(k=null==n?(j=s=p=h=null,I):R(j=+n[0][0],s=+n[0][1],p=+n[1][0],h=+n[1][1]),o()):null==j?null:[[j,s],[p,h]]},t.scale=function(n){return arguments.length?(d=+n,e()):d},t.translate=function(n){return arguments.length?(y=+n[0],m=+n[1],e()):[y,m]},t.center=function(n){return arguments.length?(S=n[0]%360*Vn,E=n[1]%360*Vn,e()):[S*Un,E*Un]},t.rotate=function(n){return arguments.length?(M=n[0]%360*Vn,x=n[1]%360*Vn,b=n.length>2?n[2]%360*Vn:0,e()):[M*Un,x*Un,b*Un]},t.precision=function(n){return arguments.length?(q=mn(i,A=n*n),o()):rt(A)},t.fitExtent=function(n,r){return dn(t,n,r)},t.fitSize=function(n,r){return yn(t,n,r)},function(){return u=n.apply(this,arguments),t.invert=u.invert&&r,e()}}function xn(n){var t=0,r=Hn/3,i=Mn(n),e=i(t,r);return e.parallels=function(n){return arguments.length?i(t=n[0]*Vn,r=n[1]*Vn):[t*Un,r*Un]},e}function _n(n){function t(n,t){return[n*r,nt(t)/r]}var r=$n(n);return t.invert=function(n,t){return[n/r,l(t*r)]},t}function bn(n,t){function r(n,t){var r=rt(o-2*e*nt(t))/e;return[r*nt(n*=e),u-r*$n(n)]}var i=nt(n),e=(i+nt(t))/2;if(Wn(e)<Dn)return _n(n);var o=1+i*(2*e-i),u=rt(o)/e;return r.invert=function(n,t){var r=u-t;return[Yn(n,Wn(r))/e*tt(r),l((o-(n*n+r*r)*e*e)/(2*e))]},r}function Nn(){return xn(bn).scale(155.424).center([0,33.6442])}function wn(){return Nn().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Pn(n){return n}function jn(n){if(null==n)return Pn;var t,r,i=n.scale[0],e=n.scale[1],o=n.translate[0],u=n.translate[1];return function(n,a){a||(t=r=0);var f=2,l=n.length,c=new Array(l);for(c[0]=(t+=n[0])*i+o,c[1]=(r+=n[1])*e+u;f<l;)c[f]=n[f],++f;return c}}function kn(n,t){for(var r,i=n.length,e=i-t;e<--i;)r=n[e],n[e++]=n[i],n[i]=r}function An(n,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return qn(n,t)})}:qn(n,t)}function qn(n,t){var r=t.id,i=t.bbox,e=null==t.properties?{}:t.properties,o=Fn(n,t);return null==r&&null==i?{type:"Feature",properties:e,geometry:o}:null==i?{type:"Feature",id:r,properties:e,geometry:o}:{type:"Feature",id:r,bbox:i,properties:e,geometry:o}}function Fn(n,t){function r(n,t){t.length&&t.pop();for(var r=l[n<0?~n:n],i=0,e=r.length;i<e;++i)t.push(f(r[i],i));n<0&&kn(t,e)}function i(n){return f(n)}function e(n){for(var t=[],i=0,e=n.length;i<e;++i)r(n[i],t);return t.length<2&&t.push(t[0]),t}function o(n){for(var t=e(n);t.length<4;)t.push(t[0]);return t}function u(n){return n.map(o)}function a(n){var t,r=n.type;switch(r){case"GeometryCollection":return{type:r,geometries:n.geometries.map(a)};case"Point":t=i(n.coordinates);break;case"MultiPoint":t=n.coordinates.map(i);break;case"LineString":t=e(n.arcs);break;case"MultiLineString":t=n.arcs.map(e);break;case"Polygon":t=u(n.arcs);break;case"MultiPolygon":t=n.arcs.map(u);break;default:return null}return{type:r,coordinates:t}}var f=jn(n.transform),l=n.arcs;return a(t)}function On(){function n(n,o){n=i(n);for(var a,f,v,g,d,y=h(n.transform),m=n.arcs.length,S=0,E=new Array(m);S<m;){for(a=0,f=0,v=n.arcs[S].length,g=0,d=new Array(v);g<v;)n.arcs[S][g][0]=a+=n.arcs[S][g][0],n.arcs[S][g][1]=f+=n.arcs[S][g][1],d[g]=null===c?y(n.arcs[S][g]):c(y(n.arcs[S][g])),g++;E[S++]=d}var M=un().projection(null),x=u(E,{type:"GeometryCollection",geometries:o}).geometries.map(function(t){return{type:"Feature",id:t.id,properties:s.call(null,t,n),geometry:t}}),_=x.map(p),b=e(_);if(l<=0)return x;for(var N=0;N++<l;){for(var v,g,w,w,P,j,k,A,q,F,O,z,C,L,R,G=x.map(M.area),I=e(G),T=0,Z=0,B=x.map(function(n,t){var r=Math.abs(G[t]),i=+_[t],e=I*i/b,o=Math.sqrt(r/Math.PI),u=Math.sqrt(e/Math.PI)-o,a=Math.max(r,e)/Math.min(r,e);return T+=a,Z++,{id:n.id,area:r,centroid:M.centroid(n),value:i,desired:e,radius:o,mass:u,sizeError:a}}),D=T/Z,H=1/(1+D),m=E.length,S=0;S<m;){for(v=E[S].length,g=0;g<v;){for(w=[0,0],P=B.length,j=0;j<P;)k=B[j].centroid,A=B[j].mass,q=B[j].radius,F=q*q,O=E[S][g][0]-k[0],z=E[S][g][1]-k[1],C=O*O+z*z,L=Math.sqrt(C),R=L>q?A*q/L:A*(C/F)*(4-3*L/q),w[0]+=R*t(z,O),w[1]+=R*r(z,O),j++;E[S][g][0]+=w[0]*H,E[S][g][1]+=w[1]*H,g++}S++}if(D<=1)break}return{features:x,arcs:E}}function t(n,t){if(0===t)return 0;var r=n/t;return t>0?1/Math.sqrt(1+r*r):-1/Math.sqrt(1+r*r)}function r(n,t){if(0===t)return 1;var r=n/t;return t>0?r/Math.sqrt(1+r*r):-r/Math.sqrt(1+r*r)}function i(n){return n instanceof Array?n.map(i):"string"==typeof n||"number"==typeof n?n:o(n)}function o(n){var t={};for(var r in n)t[r]=i(n[r]);return t}function u(n,t){function r(t,r){r.length&&r.pop();for(var i=n[t<0?~t:t],e=0,o=i.length;e<o;++e)r.push(i[e]);t<0&&a(r,o)}function i(n){for(var t=[],i=0,e=n.length;i<e;++i)r(n[i],t);return t}function e(n){return n.map(i)}function o(n){return n=Object.create(n),n.coordinates=u[n.type](n.arcs),n}var u={LineString:i,MultiLineString:e,Polygon:e,MultiPolygon:function(n){return n.map(e)}};return"GeometryCollection"===t.type?(t=Object.create(t),t.geometries=t.geometries.map(o),t):o(t)}function a(n,t){for(var r,i=n.length,e=i-t;e<--i;)r=n[e],n[e++]=n[i],n[i]=r}function f(n){return function(){return n}}var l=8,c=wn(),s=function(n){return{}},p=function(n){return 1};n.path=un().projection(null),n.iterations=function(t){return arguments.length?(l=t,n):l},n.value=function(t){return arguments.length?(p="function"==typeof t?t:f(t),n):p},n.projection=function(t){return arguments.length?(c=t,n):c},n.feature=function(n,t){return{type:"Feature",id:t.id,properties:s.call(null,t,n),geometry:{type:t.type,coordinates:An(n,t).geometry.coordinates}}},n.features=function(t,r){return r.map(function(r){return n.feature(t,r)})},n.properties=function(t){return arguments.length?(s="function"==typeof t?t:f(t),n):s};var h=n.transformer=function(n){function t(n){return[n[0]*r+e,n[1]*i+o]}var r=n.scale[0],i=n.scale[1],e=n.translate[0],o=n.translate[1];return t.invert=function(n){return[(n[0]-e)/r,(n[1]-o)/i]},t};return n}!function(n){1===n.length&&(n=r(n))}(t);u.prototype={constructor:u,reset:function(){this.s=this.t=0},add:function(n){a(Bn,n,this.t),a(this,Bn.s,this.s),this.s?this.t+=Bn.t:this.s=Bn.t},valueOf:function(){return this.s}};var zn,Cn,Ln,Rn,Gn,In,Tn,Zn,Bn=new u,Dn=1e-6,Hn=Math.PI,Jn=Hn/2,Kn=Hn/4,Qn=2*Hn,Un=180/Hn,Vn=Hn/180,Wn=Math.abs,Xn=Math.atan,Yn=Math.atan2,$n=Math.cos,nt=Math.sin,tt=Math.sign||function(n){return n>0?1:n<0?-1:0},rt=Math.sqrt,it={Feature:function(n,t){s(n.geometry,t)},FeatureCollection:function(n,t){for(var r=n.features,i=-1,e=r.length;++i<e;)s(r[i].geometry,t)}},et={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var r=n.coordinates,i=-1,e=r.length;++i<e;)n=r[i],t.point(n[0],n[1],n[2])},LineString:function(n,t){p(n.coordinates,t,0)},MultiLineString:function(n,t){for(var r=n.coordinates,i=-1,e=r.length;++i<e;)p(r[i],t,0)},Polygon:function(n,t){h(n.coordinates,t)},MultiPolygon:function(n,t){for(var r=n.coordinates,i=-1,e=r.length;++i<e;)h(r[i],t)},GeometryCollection:function(n,t){for(var r=n.geometries,i=-1,e=r.length;++i<e;)s(r[i],t)}};o(),o(),o();b.invert=b;var ot,ut,at,ft,lt,ct,st,pt,ht=1e9,vt=-ht,gt=o(),dt=(o(),o()),yt=o(),mt={point:c,lineStart:c,lineEnd:c,polygonStart:function(){mt.lineStart=T,mt.lineEnd=D},polygonEnd:function(){mt.lineStart=mt.lineEnd=mt.point=c,dt.add(Wn(yt)),yt.reset()},result:function(){var n=dt/2;return dt.reset(),n}},St=1/0,Et=St,Mt=-St,xt=Mt,_t={point:H,lineStart:c,lineEnd:c,polygonStart:c,polygonEnd:c,result:function(){var n=[[St,Et],[Mt,xt]];return Mt=xt=-(Et=St=1/0),n}},bt=0,Nt=0,wt=0,Pt=0,jt=0,kt=0,At=0,qt=0,Ft=0,Ot={point:J,lineStart:K,lineEnd:V,polygonStart:function(){Ot.lineStart=W,Ot.lineEnd=X},polygonEnd:function(){Ot.point=J,Ot.lineStart=K,Ot.lineEnd=V},result:function(){var n=Ft?[At/Ft,qt/Ft]:kt?[Pt/kt,jt/kt]:wt?[bt/wt,Nt/wt]:[NaN,NaN];return bt=Nt=wt=Pt=jt=kt=At=qt=Ft=0,n}};nn.prototype={_radius:4.5,pointRadius:function(n){return this._radius=n,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(n,t){switch(this._point){case 0:this._context.moveTo(n,t),this._point=1;break;case 1:this._context.lineTo(n,t);break;default:this._context.moveTo(n+this._radius,t),this._context.arc(n,t,this._radius,0,Qn)}},result:c};var zt,Ct,Lt,Rt,Gt,It=o(),Tt={point:c,lineStart:function(){Tt.point=tn},lineEnd:function(){zt&&rn(Ct,Lt),Tt.point=c},polygonStart:function(){zt=!0},polygonEnd:function(){zt=null},result:function(){var n=+It;return It.reset(),n}};en.prototype={_circle:on(4.5),pointRadius:function(n){return this._circle=on(n),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(n,t){switch(this._point){case 0:this._string.push("M",n,",",t),this._point=1;break;case 1:this._string.push("L",n,",",t);break;default:this._string.push("M",n,",",t,this._circle)}},result:function(){if(this._string.length){var n=this._string.join("");return this._string=[],n}}};var Zt=an(function(){return!0},cn,pn,[-Hn,-Jn]);gn.prototype={constructor:gn,point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Bt=16,Dt=$n(30*Vn),Ht=vn({point:function(n,t){this.stream.point(n*Vn,t*Vn)}});"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,function(n,t){t={exports:{}},n(t,t.exports),t.exports}(function(n,t){!function(t,r,i){n.exports=function(){function n(n,t,r){return n instanceof Array?(n.push(r),n[n.length-1]):n instanceof Object?(n[t]=r,n[t]):void 0}return function(t){var r=t instanceof Array?[]:{};return function t(r,i){for(var e in r){var o=r[e];if(o instanceof Array){var u=[],a=n(i,e,u);t(o,a)}else if(o instanceof Object&&"function"!=typeof o){var u={},a=n(i,e,u);t(o,a)}else{var u=o;n(i,e,u)}}}(t,r),r}}()}()});n.cartogram=On,Object.defineProperty(n,"__esModule",{value:!0})});