UNPKG

earthjs

Version:

D3 Earth JS using SVG, Canvas & THREE js, build with some plugins.

2 lines 20.8 kB
// https://github.com/topojson/topojson Version 3.0.0. Copyright 2017 Mike Bostock. (function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(r.topojson=r.topojson||{})})(this,function(r){"use strict";function n(r,n){var e=n.id,o=n.bbox,a=null==n.properties?{}:n.properties,i=t(r,n);return null==e&&null==o?{type:"Feature",properties:a,geometry:i}:null==o?{type:"Feature",id:e,properties:a,geometry:i}:{type:"Feature",id:e,bbox:o,properties:a,geometry:i}}function t(r,n){function t(r,n){n.length&&n.pop();for(var t=f[r<0?~r:r],e=0,o=t.length;e<o;++e)n.push(c(t[e],e));r<0&&j(n,o)}function e(r){return c(r)}function o(r){for(var n=[],e=0,o=r.length;e<o;++e)t(r[e],n);return n.length<2&&n.push(n[0]),n}function a(r){for(var n=o(r);n.length<4;)n.push(n[0]);return n}function i(r){return r.map(a)}function u(r){var n,t=r.type;switch(t){case"GeometryCollection":return{type:t,geometries:r.geometries.map(u)};case"Point":n=e(r.coordinates);break;case"MultiPoint":n=r.coordinates.map(e);break;case"LineString":n=o(r.arcs);break;case"MultiLineString":n=r.arcs.map(o);break;case"Polygon":n=i(r.arcs);break;case"MultiPolygon":n=r.arcs.map(i);break;default:return null}return{type:t,coordinates:n}}var c=C(r.transform),f=r.arcs;return u(n)}function e(r,n,t){var e,a,i;if(arguments.length>1)e=o(r,n,t);else for(a=0,e=new Array(i=r.arcs.length);a<i;++a)e[a]=a;return{type:"MultiLineString",arcs:_(r,e)}}function o(r,n,t){function e(r){var n=r<0?~r:r;(l[n]||(l[n]=[])).push({i:r,g:c})}function o(r){r.forEach(e)}function a(r){r.forEach(o)}function i(r){r.forEach(a)}function u(r){switch(c=r,r.type){case"GeometryCollection":r.geometries.forEach(u);break;case"LineString":o(r.arcs);break;case"MultiLineString":case"Polygon":a(r.arcs);break;case"MultiPolygon":i(r.arcs)}}var c,f=[],l=[];return u(n),l.forEach(null==t?function(r){f.push(r[0].i)}:function(r){t(r[0].g,r[r.length-1].g)&&f.push(r[0].i)}),f}function a(r){for(var n,t=-1,e=r.length,o=r[e-1],a=0;++t<e;)n=o,o=r[t],a+=n[0]*o[1]-n[1]*o[0];return Math.abs(a)}function i(r,n){function e(r){switch(r.type){case"GeometryCollection":r.geometries.forEach(e);break;case"Polygon":o(r.arcs);break;case"MultiPolygon":r.arcs.forEach(o)}}function o(r){r.forEach(function(n){n.forEach(function(n){(u[n=n<0?~n:n]||(u[n]=[])).push(r)})}),c.push(r)}function i(n){return a(t(r,{type:"Polygon",arcs:[n]}).coordinates[0])}var u={},c=[],f=[];return n.forEach(e),c.forEach(function(r){if(!r._){var n=[],t=[r];for(r._=1,f.push(n);r=t.pop();)n.push(r),r.forEach(function(r){r.forEach(function(r){u[r<0?~r:r].forEach(function(r){r._||(r._=1,t.push(r))})})})}}),c.forEach(function(r){delete r._}),{type:"MultiPolygon",arcs:f.map(function(n){var t,e=[];if(n.forEach(function(r){r.forEach(function(r){r.forEach(function(r){u[r<0?~r:r].length<2&&e.push(r)})})}),e=_(r,e),(t=e.length)>1)for(var o,a,c=1,f=i(e[0]);c<t;++c)(o=i(e[c]))>f&&(a=e[0],e[0]=e[c],e[c]=a,f=o);return e})}}function u(r,n,t,e){c(r,n,t),c(r,n,n+e),c(r,n+e,t)}function c(r,n,t){for(var e,o=n+(t---n>>1);n<o;++n,--t)e=r[n],r[n]=r[t],r[t]=e}function f(r){return null==r?{type:null}:("FeatureCollection"===r.type?l:"Feature"===r.type?s:h)(r)}function l(r){var n={type:"GeometryCollection",geometries:r.features.map(s)};return null!=r.bbox&&(n.bbox=r.bbox),n}function s(r){var n,t=h(r.geometry);null!=r.id&&(t.id=r.id),null!=r.bbox&&(t.bbox=r.bbox);for(n in r.properties){t.properties=r.properties;break}return t}function h(r){if(null==r)return{type:null};var n="GeometryCollection"===r.type?{type:"GeometryCollection",geometries:r.geometries.map(h)}:"Point"===r.type||"MultiPoint"===r.type?{type:r.type,coordinates:r.coordinates}:{type:r.type,arcs:r.coordinates};return null!=r.bbox&&(n.bbox=r.bbox),n}function p(r){var n,t=r[0],e=r[1];return e<t&&(n=t,t=e,e=n),t+31*e}function g(r,n){var t,e=r[0],o=r[1],a=n[0],i=n[1];return o<e&&(t=e,e=o,o=t),i<a&&(t=a,a=i,i=t),e===a&&o===i}function y(){return!0}function v(r){return r}function b(r){return null!=r.type}function m(r){var n=r[0],t=r[1],e=r[2];return Math.abs((n[0]-e[0])*(t[1]-n[1])-(n[0]-t[0])*(e[1]-n[1]))/2}function d(r){for(var n,t=-1,e=r.length,o=r[e-1],a=0;++t<e;)n=o,o=r[t],a+=n[0]*o[1]-n[1]*o[0];return Math.abs(a)/2}function M(r,n){return r[1][2]-n[1][2]}function E(r){return[r[0],r[1],0]}function x(r,n){if(t=r.length){if((n=+n)<=0||t<2)return r[0];if(n>=1)return r[t-1];var t,e=(t-1)*n,o=Math.floor(e),a=r[o];return a+(r[o+1]-a)*(e-o)}}function P(r,n){return n-r}function w(r,n){for(var t,e,o,a=0,i=r.length,u=0,c=r[n?a++:i-1],f=c[0]*pr,l=c[1]*pr/2+hr,s=yr(l),h=vr(l);a<i;++a){c=r[a],t=f,f=c[0]*pr,l=c[1]*pr/2+hr,e=s,s=yr(l),o=h,h=vr(l);var p=f-t,g=p>=0?1:-1,y=g*p,v=o*h,b=e*s+v*yr(y),m=v*g*vr(y);u+=gr(m,b)}return u}function k(r,n){var t=w(r,!0);return n&&(t*=-1),2*(t<0?sr+t:t)}function A(r){var n=w(r,!1);return 2*(n<0?sr+n:n)}var L=function(r){return r},C=function(r){if(null==r)return L;var n,t,e=r.scale[0],o=r.scale[1],a=r.translate[0],i=r.translate[1];return function(r,u){u||(n=t=0);var c=2,f=r.length,l=new Array(f);for(l[0]=(n+=r[0])*e+a,l[1]=(t+=r[1])*o+i;c<f;)l[c]=r[c],++c;return l}},S=function(r){function n(r){r=o(r),r[0]<a&&(a=r[0]),r[0]>u&&(u=r[0]),r[1]<i&&(i=r[1]),r[1]>c&&(c=r[1])}function t(r){switch(r.type){case"GeometryCollection":r.geometries.forEach(t);break;case"Point":n(r.coordinates);break;case"MultiPoint":r.coordinates.forEach(n)}}var e,o=C(r.transform),a=1/0,i=a,u=-a,c=-a;r.arcs.forEach(function(r){for(var n,t=-1,e=r.length;++t<e;)n=o(r[t],t),n[0]<a&&(a=n[0]),n[0]>u&&(u=n[0]),n[1]<i&&(i=n[1]),n[1]>c&&(c=n[1])});for(e in r.objects)t(r.objects[e]);return[a,i,u,c]},j=function(r,n){for(var t,e=r.length,o=e-n;o<--e;)t=r[o],r[o++]=r[e],r[e]=t},G=function(r,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return n(r,t)})}:n(r,t)},_=function(r,n){function t(n){var t,e=r.arcs[n<0?~n:n],o=e[0];return r.transform?(t=[0,0],e.forEach(function(r){t[0]+=r[0],t[1]+=r[1]})):t=e[e.length-1],n<0?[t,o]:[o,t]}function e(r,n){for(var t in r){var e=r[t];delete n[e.start],delete e.start,delete e.end,e.forEach(function(r){o[r<0?~r:r]=1}),u.push(e)}}var o={},a={},i={},u=[],c=-1;return n.forEach(function(t,e){var o,a=r.arcs[t<0?~t:t];a.length<3&&!a[1][0]&&!a[1][1]&&(o=n[++c],n[c]=t,n[e]=o)}),n.forEach(function(r){var n,e,o=t(r),u=o[0],c=o[1];if(n=i[u])if(delete i[n.end],n.push(r),n.end=c,e=a[c]){delete a[e.start];var f=e===n?n:n.concat(e);a[f.start=n.start]=i[f.end=e.end]=f}else a[n.start]=i[n.end]=n;else if(n=a[c])if(delete a[n.start],n.unshift(r),n.start=u,e=i[u]){delete i[e.end];var l=e===n?n:e.concat(n);a[l.start=e.start]=i[l.end=n.end]=l}else a[n.start]=i[n.end]=n;else n=[r],a[n.start=u]=i[n.end=c]=n}),e(i,a),e(a,i),n.forEach(function(r){o[r<0?~r:r]||u.push([r])}),u},I=function(r){return t(r,e.apply(this,arguments))},F=function(r){return t(r,i.apply(this,arguments))},T=function(r,n){for(var t=0,e=r.length;t<e;){var o=t+e>>>1;r[o]<n?t=o+1:e=o}return t},N=function(r){function n(r,n){r.forEach(function(r){r<0&&(r=~r);var t=o[r];t?t.push(n):o[r]=[n]})}function t(r,t){r.forEach(function(r){n(r,t)})}function e(r,n){"GeometryCollection"===r.type?r.geometries.forEach(function(r){e(r,n)}):r.type in i&&i[r.type](r.arcs,n)}var o={},a=r.map(function(){return[]}),i={LineString:n,MultiLineString:t,Polygon:t,MultiPolygon:function(r,n){r.forEach(function(r){t(r,n)})}};r.forEach(e);for(var u in o)for(var c=o[u],f=c.length,l=0;l<f;++l)for(var s=l+1;s<f;++s){var h,p=c[l],g=c[s];(h=a[p])[u=T(h,g)]!==g&&h.splice(u,0,g),(h=a[g])[u=T(h,p)]!==p&&h.splice(u,0,p)}return a},O=function(r){if(null==r)return L;var n,t,e=r.scale[0],o=r.scale[1],a=r.translate[0],i=r.translate[1];return function(r,u){u||(n=t=0);var c=2,f=r.length,l=new Array(f),s=Math.round((r[0]-a)/e),h=Math.round((r[1]-i)/o);for(l[0]=s-n,n=s,l[1]=h-t,t=h;c<f;)l[c]=r[c],++c;return l}},q=function(r,n){function t(r){return h(r)}function e(r){var n;switch(r.type){case"GeometryCollection":n={type:"GeometryCollection",geometries:r.geometries.map(e)};break;case"Point":n={type:"Point",coordinates:t(r.coordinates)};break;case"MultiPoint":n={type:"MultiPoint",coordinates:r.coordinates.map(t)};break;default:return r}return null!=r.id&&(n.id=r.id),null!=r.bbox&&(n.bbox=r.bbox),null!=r.properties&&(n.properties=r.properties),n}function o(r){var n,t=0,e=1,o=r.length,a=new Array(o);for(a[0]=h(r[0],0);++t<o;)((n=h(r[t],t))[0]||n[1])&&(a[e++]=n);return 1===e&&(a[e++]=[0,0]),a.length=e,a}if(r.transform)throw new Error("already quantized");if(n&&n.scale)l=r.bbox;else{if(!((a=Math.floor(n))>=2))throw new Error("n must be ≥2");l=r.bbox||S(r);var a,i=l[0],u=l[1],c=l[2],f=l[3];n={scale:[c-i?(c-i)/(a-1):1,f-u?(f-u)/(a-1):1],translate:[i,u]}}var l,s,h=O(n),p=r.objects,g={};for(s in p)g[s]=e(p[s]);return{type:"Topology",bbox:l,transform:n,objects:g,arcs:r.arcs.map(o)}},U=function(r){function n(r){null!=r&&f.hasOwnProperty(r.type)&&f[r.type](r)}function t(r){var n=r[0],t=r[1];n<a&&(a=n),n>u&&(u=n),t<i&&(i=t),t>c&&(c=t)}function e(r){r.forEach(t)}function o(r){r.forEach(e)}var a=1/0,i=1/0,u=-1/0,c=-1/0,f={GeometryCollection:function(r){r.geometries.forEach(n)},Point:function(r){t(r.coordinates)},MultiPoint:function(r){r.coordinates.forEach(t)},LineString:function(r){e(r.arcs)},MultiLineString:function(r){r.arcs.forEach(e)},Polygon:function(r){r.arcs.forEach(e)},MultiPolygon:function(r){r.arcs.forEach(o)}};for(var l in r)n(r[l]);return u>=a&&c>=i?[a,i,u,c]:void 0},z=function(r,n,t,e,o){function a(e){for(var a=n(e)&f,i=c[a],u=0;i!=o;){if(t(i,e))return!0;if(++u>=r)throw new Error("full hashset");i=c[a=a+1&f]}return c[a]=e,!0}function i(e){for(var a=n(e)&f,i=c[a],u=0;i!=o;){if(t(i,e))return!0;if(++u>=r)break;i=c[a=a+1&f]}return!1}function u(){for(var r=[],n=0,t=c.length;n<t;++n){var e=c[n];e!=o&&r.push(e)}return r}3===arguments.length&&(e=Array,o=null);for(var c=new e(r=1<<Math.max(4,Math.ceil(Math.log(r)/Math.LN2))),f=r-1,l=0;l<r;++l)c[l]=o;return{add:a,has:i,values:u}},R=function(r,n,t,e,o,a){function i(e,a){for(var i=n(e)&h,u=l[i],c=0;u!=o;){if(t(u,e))return s[i]=a;if(++c>=r)throw new Error("full hashmap");u=l[i=i+1&h]}return l[i]=e,s[i]=a,a}function u(e,a){for(var i=n(e)&h,u=l[i],c=0;u!=o;){if(t(u,e))return s[i];if(++c>=r)throw new Error("full hashmap");u=l[i=i+1&h]}return l[i]=e,s[i]=a,a}function c(e,a){for(var i=n(e)&h,u=l[i],c=0;u!=o;){if(t(u,e))return s[i];if(++c>=r)break;u=l[i=i+1&h]}return a}function f(){for(var r=[],n=0,t=l.length;n<t;++n){var e=l[n];e!=o&&r.push(e)}return r}3===arguments.length&&(e=a=Array,o=null);for(var l=new e(r=1<<Math.max(4,Math.ceil(Math.log(r)/Math.LN2))),s=new a(r),h=r-1,p=0;p<r;++p)l[p]=o;return{set:i,maybeSet:u,get:c,keys:f}},V=function(r,n){return r[0]===n[0]&&r[1]===n[1]},W=new ArrayBuffer(16),B=new Float64Array(W),D=new Uint32Array(W),H=function(r){B[0]=r[0],B[1]=r[1];var n=D[0]^D[1];return 2147483647&(n=n<<5^n>>7^D[2]^D[3])},J=function(r){function n(r,n,t,e){if(p[t]!==r){p[t]=r;var o=g[t];if(o>=0){var a=y[t];o===n&&a===e||o===e&&a===n||(++b,v[t]=1)}else g[t]=n,y[t]=e}}function t(r){return H(f[r])}function e(r,n){return V(f[r],f[n])}var o,a,i,u,c,f=r.coordinates,l=r.lines,s=r.rings,h=function(){for(var r=R(1.4*f.length,t,e,Int32Array,-1,Int32Array),n=new Int32Array(f.length),o=0,a=f.length;o<a;++o)n[o]=r.maybeSet(o,o);return n}(),p=new Int32Array(f.length),g=new Int32Array(f.length),y=new Int32Array(f.length),v=new Int8Array(f.length),b=0;for(o=0,a=f.length;o<a;++o)p[o]=g[o]=y[o]=-1;for(o=0,a=l.length;o<a;++o){var m=l[o],d=m[0],M=m[1];for(u=h[d],c=h[++d],++b,v[u]=1;++d<=M;)n(o,i=u,u=c,c=h[d]);++b,v[c]=1}for(o=0,a=f.length;o<a;++o)p[o]=-1;for(o=0,a=s.length;o<a;++o){var E=s[o],x=E[0]+1,P=E[1];for(i=h[P-1],u=h[x-1],c=h[x],n(o,i,u,c);++x<=P;)n(o,i=u,u=c,c=h[x])}p=g=y=null;var w,k=z(1.4*b,H,V);for(o=0,a=f.length;o<a;++o)v[w=h[o]]&&k.add(f[w]);return k},K=function(r){var n,t,e,o=J(r),a=r.coordinates,i=r.lines,c=r.rings;for(t=0,e=i.length;t<e;++t)for(var f=i[t],l=f[0],s=f[1];++l<s;)o.has(a[l])&&(n={0:l,1:f[1]},f[1]=l,f=f.next=n);for(t=0,e=c.length;t<e;++t)for(var h=c[t],p=h[0],g=p,y=h[1],v=o.has(a[p]);++g<y;)o.has(a[g])&&(v?(n={0:g,1:h[1]},h[1]=g,h=h.next=n):(u(a,p,y,y-g),a[y]=a[p],v=!0,g=p));return r},Q=function(r){function n(r){var n,o,a,i,u,c,f,l;if(a=y.get(n=s[r[0]]))for(f=0,l=a.length;f<l;++f)if(i=a[f],t(i,r))return r[0]=i[0],void(r[1]=i[1]);if(u=y.get(o=s[r[1]]))for(f=0,l=u.length;f<l;++f)if(c=u[f],e(c,r))return r[1]=c[0],void(r[0]=c[1]);a?a.push(r):y.set(n,[r]),u?u.push(r):y.set(o,[r]),v.push(r)}function t(r,n){var t=r[0],e=n[0],o=r[1];if(t-o!=e-n[1])return!1;for(;t<=o;++t,++e)if(!V(s[t],s[e]))return!1;return!0}function e(r,n){var t=r[0],e=n[0],o=r[1],a=n[1];if(t-o!=e-a)return!1;for(;t<=o;++t,--a)if(!V(s[t],s[a]))return!1;return!0}function o(r,n){var t=r[0],e=n[0],o=r[1],a=n[1],u=o-t;if(u!==a-e)return!1;for(var c=i(r),f=i(n),l=0;l<u;++l)if(!V(s[t+(l+c)%u],s[e+(l+f)%u]))return!1;return!0}function a(r,n){var t=r[0],e=n[0],o=r[1],a=n[1],u=o-t;if(u!==a-e)return!1;for(var c=i(r),f=u-i(n),l=0;l<u;++l)if(!V(s[t+(l+c)%u],s[a-(l+f)%u]))return!1;return!0}function i(r){for(var n=r[0],t=r[1],e=n,o=e,a=s[e];++e<t;){var i=s[e];(i[0]<a[0]||i[0]===a[0]&&i[1]<a[1])&&(o=e,a=i)}return o-n}var u,c,f,l,s=r.coordinates,h=r.lines,p=r.rings,g=h.length+p.length;for(delete r.lines,delete r.rings,f=0,l=h.length;f<l;++f)for(u=h[f];u=u.next;)++g;for(f=0,l=p.length;f<l;++f)for(c=p[f];c=c.next;)++g;var y=R(2*g*1.4,H,V),v=r.arcs=[];for(f=0,l=h.length;f<l;++f){u=h[f];do{n(u)}while(u=u.next)}for(f=0,l=p.length;f<l;++f)if(c=p[f],c.next)do{n(c)}while(c=c.next);else(function(r){var n,t,e,u,c;if(t=y.get(n=s[r[0]]))for(u=0,c=t.length;u<c;++u){if(e=t[u],o(e,r))return r[0]=e[0],void(r[1]=e[1]);if(a(e,r))return r[0]=e[1],void(r[1]=e[0])}if(t=y.get(n=s[r[0]+i(r)]))for(u=0,c=t.length;u<c;++u){if(e=t[u],o(e,r))return r[0]=e[0],void(r[1]=e[1]);if(a(e,r))return r[0]=e[1],void(r[1]=e[0])}t?t.push(r):y.set(n,[r]),v.push(r)})(c);return r},X=function(r){for(var n=-1,t=r.length;++n<t;){for(var e,o,a=r[n],i=0,u=1,c=a.length,f=a[0],l=f[0],s=f[1];++i<c;)f=a[i],e=f[0],o=f[1],e===l&&o===s||(a[u++]=[e-l,o-s],l=e,s=o);1===u&&(a[u++]=[0,0]),a.length=u}return r},Y=function(r){function n(r){r&&f.hasOwnProperty(r.type)&&f[r.type](r)}function t(r){for(var n=0,t=r.length;n<t;++n)c[++a]=r[n];var e={0:a-t+1,1:a};return i.push(e),e}function e(r){for(var n=0,t=r.length;n<t;++n)c[++a]=r[n];var e={0:a-t+1,1:a};return u.push(e),e}function o(r){return r.map(e)}var a=-1,i=[],u=[],c=[],f={GeometryCollection:function(r){r.geometries.forEach(n)},LineString:function(r){r.arcs=t(r.arcs)},MultiLineString:function(r){r.arcs=r.arcs.map(t)},Polygon:function(r){r.arcs=r.arcs.map(e)},MultiPolygon:function(r){r.arcs=r.arcs.map(o)}};for(var l in r)n(r[l]);return{type:"Topology",coordinates:c,lines:i,rings:u,objects:r}},Z=function(r){var n,t={};for(n in r)t[n]=f(r[n]);return t},$=function(r,n,t){function e(r){return[Math.round((r[0]-f)*p),Math.round((r[1]-l)*g)]}function o(r,n){for(var t,e,o,a,i,u=-1,c=0,s=r.length,h=new Array(s);++u<s;)t=r[u],a=Math.round((t[0]-f)*p),i=Math.round((t[1]-l)*g),a===e&&i===o||(h[c++]=[e=a,o=i]);for(h.length=c;c<n;)c=h.push([h[0][0],h[0][1]]);return h}function a(r){return o(r,2)}function i(r){return o(r,4)}function u(r){return r.map(i)}function c(r){null!=r&&y.hasOwnProperty(r.type)&&y[r.type](r)}var f=n[0],l=n[1],s=n[2],h=n[3],p=s-f?(t-1)/(s-f):1,g=h-l?(t-1)/(h-l):1,y={GeometryCollection:function(r){r.geometries.forEach(c)},Point:function(r){r.coordinates=e(r.coordinates)},MultiPoint:function(r){r.coordinates=r.coordinates.map(e)},LineString:function(r){r.arcs=a(r.arcs)},MultiLineString:function(r){r.arcs=r.arcs.map(a)},Polygon:function(r){r.arcs=u(r.arcs)},MultiPolygon:function(r){r.arcs=r.arcs.map(u)}};for(var v in r)c(r[v]);return{scale:[1/p,1/g],translate:[f,l]}},rr=function(r,n){function t(r){r&&l.hasOwnProperty(r.type)&&l[r.type](r)}function e(r){var n=[];do{var t=f.get(r);n.push(r[0]<r[1]?t:~t)}while(r=r.next);return n}function o(r){return r.map(e)}var a=U(r=Z(r)),i=n>0&&a&&$(r,a,n),u=Q(K(Y(r))),c=u.coordinates,f=R(1.4*u.arcs.length,p,g);r=u.objects,u.bbox=a,u.arcs=u.arcs.map(function(r,n){return f.set(r,n),c.slice(r[0],r[1]+1)}),delete u.coordinates,c=null;var l={GeometryCollection:function(r){r.geometries.forEach(t)},LineString:function(r){r.arcs=e(r.arcs)},MultiLineString:function(r){r.arcs=r.arcs.map(e)},Polygon:function(r){r.arcs=r.arcs.map(e)},MultiPolygon:function(r){r.arcs=r.arcs.map(o)}};for(var s in r)t(r[s]);return i&&(u.transform=i,u.arcs=X(u.arcs)),u},nr=function(r){function n(r){var t;switch(r.type){case"GeometryCollection":t={type:"GeometryCollection",geometries:r.geometries.map(n)};break;case"LineString":t={type:"LineString",arcs:e(r.arcs)};break;case"MultiLineString":t={type:"MultiLineString",arcs:r.arcs.map(e)};break;case"Polygon":t={type:"Polygon",arcs:r.arcs.map(e)};break;case"MultiPolygon":t={type:"MultiPolygon",arcs:r.arcs.map(o)};break;default:return r}return null!=r.id&&(t.id=r.id),null!=r.bbox&&(t.bbox=r.bbox),null!=r.properties&&(t.properties=r.properties),t}function t(r){var n,t=r<0&&(r=~r,!0);return null==(n=s[r])&&(s[r]=n=++l,f[n]=c[r]),t?~n:n}function e(r){return r.map(t)}function o(r){return r.map(e)}var a,i=r.objects,u={},c=r.arcs,f=[],l=-1,s=new Array(c.length);for(a in i)u[a]=n(i[a]);return{type:"Topology",bbox:r.bbox,transform:r.transform,objects:u,arcs:f}},tr=function(r,n){function t(r){var n,o;switch(r.type){case"Polygon":o=e(r.arcs),n=o?{type:"Polygon",arcs:o}:{type:null};break;case"MultiPolygon":o=r.arcs.map(e).filter(v),n=o.length?{type:"MultiPolygon",arcs:o}:{type:null};break;case"GeometryCollection":o=r.geometries.map(t).filter(b),n=o.length?{type:"GeometryCollection",geometries:o}:{type:null};break;default:return r}return null!=r.id&&(n.id=r.id),null!=r.bbox&&(n.bbox=r.bbox),null!=r.properties&&(n.properties=r.properties),n}function e(r){return r.length&&o(r[0])?[r[0]].concat(r.slice(1).filter(a)):null}function o(r){return n(r,!1)}function a(r){return n(r,!0)}var i,u=r.objects,c={};null==n&&(n=y);for(i in u)c[i]=t(u[i]);return nr({type:"Topology",bbox:r.bbox,transform:r.transform,objects:c,arcs:r.arcs})},er=function(r){function n(r){switch(r.type){case"GeometryCollection":r.geometries.forEach(n);break;case"Polygon":t(r.arcs);break;case"MultiPolygon":r.arcs.forEach(t)}}function t(r){for(var n=0,t=r.length;n<t;++n,++a)for(var e=r[n],i=0,u=e.length;i<u;++i){var c=e[i];c<0&&(c=~c);var f=o[c];o[c]=f>=0&&f!==a?-1:a}}var e,o={},a=0;for(e in r.objects)n(r.objects[e]);return function(r){for(var n,t=0,e=r.length;t<e;++t)if(n=r[t],o[n<0?~n:n]<0)return!0;return!1}},or=function(r,n,t){return n=null==n?Number.MIN_VALUE:+n,null==t&&(t=d),function(e,o){return t(G(r,{type:"Polygon",arcs:[e]}).geometry.coordinates[0],o)>=n}},ar=function(r,n,t){var e=er(r),o=or(r,n,t);return function(r,n){return e(r,n)||o(r,n)}},ir=function(){function r(r,n){for(;n>0;){var t=(n+1>>1)-1,o=e[t];if(M(r,o)>=0)break;e[o._=n]=o,e[r._=n=t]=r}}function n(r,n){for(;;){var t=n+1<<1,a=t-1,i=n,u=e[i];if(a<o&&M(e[a],u)<0&&(u=e[i=a]),t<o&&M(e[t],u)<0&&(u=e[i=t]),i===n)break;e[u._=n]=u,e[r._=n=i]=r}}var t={},e=[],o=0;return t.push=function(n){return r(e[n._=o]=n,o++),o},t.pop=function(){if(!(o<=0)){var r,t=e[0];return--o>0&&(r=e[o],n(e[r._=0]=r,0)),t}},t.remove=function(t){var a,i=t._;if(e[i]===t)return i!==--o&&(a=e[o],(M(a,t)<0?r:n)(e[a._=i]=a,i)),i},t},ur=function(r,n){function t(r){o.remove(r),r[1][2]=n(r),o.push(r)}var e=r.transform?C(r.transform):E,o=ir();null==n&&(n=m);var a=r.arcs.map(function(r){var a,i,u,c=[],f=0;for(r=r.map(e),i=1,u=r.length-1;i<u;++i)a=[r[i-1],r[i],r[i+1]],a[1][2]=n(a),c.push(a),o.push(a);for(r[0][2]=r[u][2]=1/0,i=0,u=c.length;i<u;++i)a=c[i],a.previous=c[i-1],a.next=c[i+1];for(;a=o.pop();){var l=a.previous,s=a.next;a[1][2]<f?a[1][2]=f:f=a[1][2],l&&(l.next=s,l[2]=a[2],t(l)),s&&(s.previous=l,s[0]=a[0],t(s))}return r});return{type:"Topology",bbox:r.bbox,objects:r.objects,arcs:a}},cr=function(r,n){var t=[];return r.arcs.forEach(function(r){r.forEach(function(r){isFinite(r[2])&&t.push(r[2])})}),t.length&&x(t.sort(P),n)},fr=function(r,n){n=null==n?Number.MIN_VALUE:+n;var t=r.arcs.map(function(r){for(var t,e=-1,o=0,a=r.length,i=new Array(a);++e<a;)(t=r[e])[2]>=n&&(i[o++]=[t[0],t[1]]);return i.length=o,i});return{type:"Topology",transform:r.transform,bbox:r.bbox,objects:r.objects,arcs:t}},lr=Math.PI,sr=2*lr,hr=lr/4,pr=lr/180,gr=Math.atan2,yr=Math.cos,vr=Math.sin;r.bbox=S,r.feature=G,r.mesh=I,r.meshArcs=e,r.merge=F,r.mergeArcs=i,r.neighbors=N,r.quantize=q,r.transform=C,r.untransform=O,r.topology=rr,r.filter=tr,r.filterAttached=er,r.filterAttachedWeight=ar,r.filterWeight=or,r.planarRingArea=d,r.planarTriangleArea=m,r.presimplify=ur,r.quantile=cr,r.simplify=fr,r.sphericalRingArea=k,r.sphericalTriangleArea=A,Object.defineProperty(r,"__esModule",{value:!0})});