@loaders.gl/mvt 4.2.0-alpha.4 → 4.2.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/dist.dev.js +274 -252
  2. package/dist/dist.min.js +14 -0
  3. package/dist/helpers/binary-util-functions.d.ts +1 -1
  4. package/dist/helpers/binary-util-functions.d.ts.map +1 -1
  5. package/dist/helpers/binary-util-functions.js +99 -61
  6. package/dist/helpers/mapbox-util-functions.d.ts +2 -2
  7. package/dist/helpers/mapbox-util-functions.d.ts.map +1 -1
  8. package/dist/helpers/mapbox-util-functions.js +67 -33
  9. package/dist/index.cjs +37 -61
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +8 -8
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -1
  14. package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts +1 -1
  15. package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts.map +1 -1
  16. package/dist/lib/binary-vector-tile/vector-tile-feature.js +135 -118
  17. package/dist/lib/binary-vector-tile/vector-tile-layer.d.ts +1 -1
  18. package/dist/lib/binary-vector-tile/vector-tile-layer.d.ts.map +1 -1
  19. package/dist/lib/binary-vector-tile/vector-tile-layer.js +77 -38
  20. package/dist/lib/binary-vector-tile/vector-tile.d.ts +1 -1
  21. package/dist/lib/binary-vector-tile/vector-tile.d.ts.map +1 -1
  22. package/dist/lib/binary-vector-tile/vector-tile.js +17 -12
  23. package/dist/lib/geojson-tiler/clip.d.ts +1 -1
  24. package/dist/lib/geojson-tiler/clip.d.ts.map +1 -1
  25. package/dist/lib/geojson-tiler/clip.js +177 -142
  26. package/dist/lib/geojson-tiler/convert.d.ts +1 -1
  27. package/dist/lib/geojson-tiler/convert.d.ts.map +1 -1
  28. package/dist/lib/geojson-tiler/convert.js +116 -100
  29. package/dist/lib/geojson-tiler/feature.d.ts +1 -1
  30. package/dist/lib/geojson-tiler/feature.d.ts.map +1 -1
  31. package/dist/lib/geojson-tiler/feature.js +38 -29
  32. package/dist/lib/geojson-tiler/geojson-tiler.d.ts +1 -1
  33. package/dist/lib/geojson-tiler/geojson-tiler.d.ts.map +1 -1
  34. package/dist/lib/geojson-tiler/geojson-tiler.js +197 -159
  35. package/dist/lib/geojson-tiler/simplify.js +60 -40
  36. package/dist/lib/geojson-tiler/tile.js +108 -88
  37. package/dist/lib/geojson-tiler/transform.d.ts +1 -1
  38. package/dist/lib/geojson-tiler/transform.d.ts.map +1 -1
  39. package/dist/lib/geojson-tiler/transform.js +35 -26
  40. package/dist/lib/geojson-tiler/wrap.d.ts +1 -1
  41. package/dist/lib/geojson-tiler/wrap.d.ts.map +1 -1
  42. package/dist/lib/geojson-tiler/wrap.js +71 -53
  43. package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts +1 -1
  44. package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts.map +1 -1
  45. package/dist/lib/mapbox-vector-tile/vector-tile-feature.js +156 -151
  46. package/dist/lib/mapbox-vector-tile/vector-tile-layer.d.ts +1 -1
  47. package/dist/lib/mapbox-vector-tile/vector-tile-layer.d.ts.map +1 -1
  48. package/dist/lib/mapbox-vector-tile/vector-tile-layer.js +75 -38
  49. package/dist/lib/mapbox-vector-tile/vector-tile.d.ts +1 -1
  50. package/dist/lib/mapbox-vector-tile/vector-tile.d.ts.map +1 -1
  51. package/dist/lib/mapbox-vector-tile/vector-tile.js +17 -12
  52. package/dist/lib/parse-mvt.d.ts +1 -1
  53. package/dist/lib/parse-mvt.d.ts.map +1 -1
  54. package/dist/lib/parse-mvt.js +142 -115
  55. package/dist/lib/parse-tilejson.js +234 -176
  56. package/dist/lib/types.js +0 -1
  57. package/dist/mvt-loader.d.ts +1 -1
  58. package/dist/mvt-loader.d.ts.map +1 -1
  59. package/dist/mvt-loader.js +41 -21
  60. package/dist/mvt-source.js +148 -139
  61. package/dist/tilejson-loader.d.ts +1 -1
  62. package/dist/tilejson-loader.d.ts.map +1 -1
  63. package/dist/tilejson-loader.js +31 -30
  64. package/dist/workers/mvt-worker.js +0 -1
  65. package/package.json +12 -8
  66. package/dist/helpers/binary-util-functions.js.map +0 -1
  67. package/dist/helpers/mapbox-util-functions.js.map +0 -1
  68. package/dist/index.js.map +0 -1
  69. package/dist/lib/binary-vector-tile/LICENSE.txt +0 -31
  70. package/dist/lib/binary-vector-tile/vector-tile-feature.js.map +0 -1
  71. package/dist/lib/binary-vector-tile/vector-tile-layer.js.map +0 -1
  72. package/dist/lib/binary-vector-tile/vector-tile.js.map +0 -1
  73. package/dist/lib/geojson-tiler/LICENSE +0 -19
  74. package/dist/lib/geojson-tiler/clip.js.map +0 -1
  75. package/dist/lib/geojson-tiler/convert.js.map +0 -1
  76. package/dist/lib/geojson-tiler/feature.js.map +0 -1
  77. package/dist/lib/geojson-tiler/geojson-tiler.js.map +0 -1
  78. package/dist/lib/geojson-tiler/simplify.js.map +0 -1
  79. package/dist/lib/geojson-tiler/tile.js.map +0 -1
  80. package/dist/lib/geojson-tiler/transform.js.map +0 -1
  81. package/dist/lib/geojson-tiler/wrap.js.map +0 -1
  82. package/dist/lib/mapbox-vector-tile/LICENSE.txt +0 -31
  83. package/dist/lib/mapbox-vector-tile/vector-tile-feature.js.map +0 -1
  84. package/dist/lib/mapbox-vector-tile/vector-tile-layer.js.map +0 -1
  85. package/dist/lib/mapbox-vector-tile/vector-tile.js.map +0 -1
  86. package/dist/lib/parse-mvt.js.map +0 -1
  87. package/dist/lib/parse-tilejson.js.map +0 -1
  88. package/dist/lib/types.js.map +0 -1
  89. package/dist/mvt-loader.js.map +0 -1
  90. package/dist/mvt-source.js.map +0 -1
  91. package/dist/tilejson-loader.js.map +0 -1
  92. package/dist/workers/mvt-worker.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if (typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if (typeof define === 'function' && define.amd) define([], factory);
5
+ else if (typeof exports === 'object') exports['loaders'] = factory();
6
+ else root['loaders'] = factory();})(globalThis, function () {
7
+ "use strict";var __exports__=(()=>{var nn=Object.create;var lt=Object.defineProperty;var rn=Object.getOwnPropertyDescriptor;var on=Object.getOwnPropertyNames;var sn=Object.getPrototypeOf,an=Object.prototype.hasOwnProperty;var St=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ln=(t,e)=>{for(var n in e)lt(t,n,{get:e[n],enumerable:!0})},at=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of on(e))!an.call(t,r)&&r!==n&&lt(t,r,{get:()=>e[r],enumerable:!(i=rn(e,r))||i.enumerable});return t},ft=(t,e,n)=>(at(t,e,"default"),n&&at(n,e,"default")),ie=(t,e,n)=>(n=t!=null?nn(sn(t)):{},at(e||!t||!t.__esModule?lt(n,"default",{value:t,enumerable:!0}):n,t)),fn=t=>at(lt({},"__esModule",{value:!0}),t);var oe=St((yr,re)=>{re.exports=globalThis.loaders});var he=St(Ct=>{Ct.read=function(t,e,n,i,r){var o,s,a=r*8-i-1,l=(1<<a)-1,f=l>>1,c=-7,u=n?r-1:0,p=n?-1:1,h=t[e+u];for(u+=p,o=h&(1<<-c)-1,h>>=-c,c+=a;c>0;o=o*256+t[e+u],u+=p,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=s*256+t[e+u],u+=p,c-=8);if(o===0)o=1-f;else{if(o===l)return s?NaN:(h?-1:1)*(1/0);s=s+Math.pow(2,i),o=o-f}return(h?-1:1)*s*Math.pow(2,o-i)};Ct.write=function(t,e,n,i,r,o){var s,a,l,f=o*8-r-1,c=(1<<f)-1,u=c>>1,p=r===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:o-1,d=i?1:-1,x=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+u>=1?e+=p/l:e+=p*Math.pow(2,1-u),e*l>=2&&(s++,l/=2),s+u>=c?(a=0,s=c):s+u>=1?(a=(e*l-1)*Math.pow(2,r),s=s+u):(a=e*Math.pow(2,u-1)*Math.pow(2,r),s=0));r>=8;t[n+h]=a&255,h+=d,a/=256,r-=8);for(s=s<<r|a,f+=r;f>0;t[n+h]=s&255,h+=d,s/=256,f-=8);t[n+h-d]|=x*128}});var ye=St((po,xe)=>{"use strict";xe.exports=y;var pt=he();function y(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}y.Varint=0;y.Fixed64=1;y.Bytes=2;y.Fixed32=5;var bt=(1<<16)*(1<<16),pe=1/bt,Un=12,me=typeof TextDecoder>"u"?null:new TextDecoder("utf8");y.prototype={destroy:function(){this.buf=null},readFields:function(t,e,n){for(n=n||this.length;this.pos<n;){var i=this.readVarint(),r=i>>3,o=this.pos;this.type=i&7,t(r,e,this),this.pos===o&&this.skip(i)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=dt(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=ge(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=dt(this.buf,this.pos)+dt(this.buf,this.pos+4)*bt;return this.pos+=8,t},readSFixed64:function(){var t=dt(this.buf,this.pos)+ge(this.buf,this.pos+4)*bt;return this.pos+=8,t},readFloat:function(){var t=pt.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=pt.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e=this.buf,n,i;return i=e[this.pos++],n=i&127,i<128||(i=e[this.pos++],n|=(i&127)<<7,i<128)||(i=e[this.pos++],n|=(i&127)<<14,i<128)||(i=e[this.pos++],n|=(i&127)<<21,i<128)?n:(i=e[this.pos],n|=(i&15)<<28,Gn(n,t,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2===1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=Un&&me?ti(this.buf,e,t):qn(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==y.Bytes)return t.push(this.readVarint(e));var n=D(this);for(t=t||[];this.pos<n;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==y.Bytes)return t.push(this.readSVarint());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==y.Bytes)return t.push(this.readBoolean());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==y.Bytes)return t.push(this.readFloat());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==y.Bytes)return t.push(this.readDouble());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==y.Bytes)return t.push(this.readFixed32());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==y.Bytes)return t.push(this.readSFixed32());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==y.Bytes)return t.push(this.readFixed64());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==y.Bytes)return t.push(this.readSFixed64());var e=D(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=t&7;if(e===y.Varint)for(;this.buf[this.pos++]>127;);else if(e===y.Bytes)this.pos=this.readVarint()+this.pos;else if(e===y.Fixed32)this.pos+=4;else if(e===y.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+e)},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var n=new Uint8Array(e);n.set(this.buf),this.buf=n,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),j(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),j(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),j(this.buf,t&-1,this.pos),j(this.buf,Math.floor(t*pe),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),j(this.buf,t&-1,this.pos),j(this.buf,Math.floor(t*pe),this.pos+4),this.pos+=8},writeVarint:function(t){if(t=+t||0,t>268435455||t<0){Rn(t,this);return}this.realloc(4),this.buf[this.pos++]=t&127|(t>127?128:0),!(t<=127)&&(this.buf[this.pos++]=(t>>>=7)&127|(t>127?128:0),!(t<=127)&&(this.buf[this.pos++]=(t>>>=7)&127|(t>127?128:0),!(t<=127)&&(this.buf[this.pos++]=t>>>7&127)))},writeSVarint:function(t){this.writeVarint(t<0?-t*2-1:t*2)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(t.length*4),this.pos++;var e=this.pos;this.pos=ei(this.buf,t,this.pos);var n=this.pos-e;n>=128&&de(e,n,this),this.pos=e-1,this.writeVarint(n),this.pos+=n},writeFloat:function(t){this.realloc(4),pt.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),pt.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var n=0;n<e;n++)this.buf[this.pos++]=t[n]},writeRawMessage:function(t,e){this.pos++;var n=this.pos;t(e,this);var i=this.pos-n;i>=128&&de(n,i,this),this.pos=n-1,this.writeVarint(i),this.pos+=i},writeMessage:function(t,e,n){this.writeTag(t,y.Bytes),this.writeRawMessage(e,n)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,zn,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Jn,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Xn,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Wn,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Yn,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,$n,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Hn,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Kn,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Qn,e)},writeBytesField:function(t,e){this.writeTag(t,y.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,y.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,y.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,y.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,y.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,y.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,y.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,y.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,y.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,y.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Gn(t,e,n){var i=n.buf,r,o;if(o=i[n.pos++],r=(o&112)>>4,o<128||(o=i[n.pos++],r|=(o&127)<<3,o<128)||(o=i[n.pos++],r|=(o&127)<<10,o<128)||(o=i[n.pos++],r|=(o&127)<<17,o<128)||(o=i[n.pos++],r|=(o&127)<<24,o<128)||(o=i[n.pos++],r|=(o&1)<<31,o<128))return R(t,r,e);throw new Error("Expected varint not more than 10 bytes")}function D(t){return t.type===y.Bytes?t.readVarint()+t.pos:t.pos+1}function R(t,e,n){return n?e*4294967296+(t>>>0):(e>>>0)*4294967296+(t>>>0)}function Rn(t,e){var n,i;if(t>=0?(n=t%4294967296|0,i=t/4294967296|0):(n=~(-t%4294967296),i=~(-t/4294967296),n^4294967295?n=n+1|0:(n=0,i=i+1|0)),t>=18446744073709552e3||t<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),jn(n,i,e),Zn(i,e)}function jn(t,e,n){n.buf[n.pos++]=t&127|128,t>>>=7,n.buf[n.pos++]=t&127|128,t>>>=7,n.buf[n.pos++]=t&127|128,t>>>=7,n.buf[n.pos++]=t&127|128,t>>>=7,n.buf[n.pos]=t&127}function Zn(t,e){var n=(t&7)<<4;e.buf[e.pos++]|=n|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=t&127|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=t&127|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=t&127|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=t&127|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=t&127)))))}function de(t,e,n){var i=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(Math.LN2*7));n.realloc(i);for(var r=n.pos-1;r>=t;r--)n.buf[r+i]=n.buf[r]}function zn(t,e){for(var n=0;n<t.length;n++)e.writeVarint(t[n])}function Jn(t,e){for(var n=0;n<t.length;n++)e.writeSVarint(t[n])}function Wn(t,e){for(var n=0;n<t.length;n++)e.writeFloat(t[n])}function Yn(t,e){for(var n=0;n<t.length;n++)e.writeDouble(t[n])}function Xn(t,e){for(var n=0;n<t.length;n++)e.writeBoolean(t[n])}function $n(t,e){for(var n=0;n<t.length;n++)e.writeFixed32(t[n])}function Hn(t,e){for(var n=0;n<t.length;n++)e.writeSFixed32(t[n])}function Kn(t,e){for(var n=0;n<t.length;n++)e.writeFixed64(t[n])}function Qn(t,e){for(var n=0;n<t.length;n++)e.writeSFixed64(t[n])}function dt(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+t[e+3]*16777216}function j(t,e,n){t[n]=e,t[n+1]=e>>>8,t[n+2]=e>>>16,t[n+3]=e>>>24}function ge(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function qn(t,e,n){for(var i="",r=e;r<n;){var o=t[r],s=null,a=o>239?4:o>223?3:o>191?2:1;if(r+a>n)break;var l,f,c;a===1?o<128&&(s=o):a===2?(l=t[r+1],(l&192)===128&&(s=(o&31)<<6|l&63,s<=127&&(s=null))):a===3?(l=t[r+1],f=t[r+2],(l&192)===128&&(f&192)===128&&(s=(o&15)<<12|(l&63)<<6|f&63,(s<=2047||s>=55296&&s<=57343)&&(s=null))):a===4&&(l=t[r+1],f=t[r+2],c=t[r+3],(l&192)===128&&(f&192)===128&&(c&192)===128&&(s=(o&15)<<18|(l&63)<<12|(f&63)<<6|c&63,(s<=65535||s>=1114112)&&(s=null))),s===null?(s=65533,a=1):s>65535&&(s-=65536,i+=String.fromCharCode(s>>>10&1023|55296),s=56320|s&1023),i+=String.fromCharCode(s),r+=a}return i}function ti(t,e,n){return me.decode(t.subarray(e,n))}function ei(t,e,n){for(var i=0,r,o;i<e.length;i++){if(r=e.charCodeAt(i),r>55295&&r<57344)if(o)if(r<56320){t[n++]=239,t[n++]=191,t[n++]=189,o=r;continue}else r=o-55296<<10|r-56320|65536,o=null;else{r>56319||i+1===e.length?(t[n++]=239,t[n++]=191,t[n++]=189):o=r;continue}else o&&(t[n++]=239,t[n++]=191,t[n++]=189,o=null);r<128?t[n++]=r:(r<2048?t[n++]=r>>6|192:(r<65536?t[n++]=r>>12|224:(t[n++]=r>>18|240,t[n++]=r>>12&63|128),t[n++]=r>>6&63|128),t[n++]=r&63|128)}return n}});var st={};ln(st,{GeoJSONTiler:()=>Tt,MVTLoader:()=>xt,MVTSource:()=>Pt,MVTWorkerLoader:()=>Rt,TileJSONLoader:()=>Z});ft(st,ie(oe(),1));function L(t){return L=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},L(t)}function Mt(t,e){if(L(t)!=="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var i=n.call(t,e||"default");if(L(i)!=="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Vt(t){var e=Mt(t,"string");return L(e)==="symbol"?e:String(e)}function _(t,e,n){return e=Vt(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var J={x:0,y:1,z:2};function b(t,e={}){let{start:n=0,end:i=t.length,plane:r="xy"}=e,o=e.size||2,s=0,a=J[r[0]],l=J[r[1]];for(let f=n,c=i-o;f<i;f+=o)s+=(t[f+a]-t[c+a])*(t[f+l]+t[c+l]),c=f;return s/2}function Bt(t,e,n=2,i,r="xy"){let o=e&&e.length,s=o?e[0]*n:t.length,a=ae(t,0,s,n,!0,i&&i[0],r),l=[];if(!a||a.next===a.prev)return l;let f,c,u,p,h,d,x;if(o&&(a=mn(t,e,a,n,i,r)),t.length>80*n){p=c=t[0],h=u=t[1];for(let w=n;w<s;w+=n)d=t[w],x=t[w+1],d<p&&(p=d),x<h&&(h=x),d>c&&(c=d),x>u&&(u=x);f=Math.max(c-p,u-h),f=f!==0?32767/f:0}return W(a,l,n,p,h,f,0),l}function ae(t,e,n,i,r,o,s){let a,l;o===void 0&&(o=b(t,{start:e,end:n,size:i,plane:s}));let f=J[s[0]],c=J[s[1]];if(r===o<0)for(a=e;a<n;a+=i)l=se(a,t[a+f],t[a+c],l);else for(a=n-i;a>=e;a-=i)l=se(a,t[a+f],t[a+c],l);return l&&ht(l,l.next)&&(X(l),l=l.next),l}function O(t,e){if(!t)return t;e||(e=t);let n=t,i;do if(i=!1,!n.steiner&&(ht(n,n.next)||P(n.prev,n,n.next)===0)){if(X(n),n=e=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==e);return e}function W(t,e,n,i,r,o,s){if(!t)return;!s&&o&&Fn(t,i,r,o);let a=t,l,f;for(;t.prev!==t.next;){if(l=t.prev,f=t.next,o?pn(t,i,r,o):hn(t)){e.push(l.i/n|0),e.push(t.i/n|0),e.push(f.i/n|0),X(t),t=f.next,a=f.next;continue}if(t=f,t===a){s?s===1?(t=dn(O(t),e,n),W(t,e,n,i,r,o,2)):s===2&&gn(t,e,n,i,r,o):W(O(t),e,n,i,r,o,1);break}}}function hn(t){let e=t.prev,n=t,i=t.next;if(P(e,n,i)>=0)return!1;let r=e.x,o=n.x,s=i.x,a=e.y,l=n.y,f=i.y,c=r<o?r<s?r:s:o<s?o:s,u=a<l?a<f?a:f:l<f?l:f,p=r>o?r>s?r:s:o>s?o:s,h=a>l?a>f?a:f:l>f?l:f,d=i.next;for(;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=u&&d.y<=h&&G(r,a,o,l,s,f,d.x,d.y)&&P(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function pn(t,e,n,i){let r=t.prev,o=t,s=t.next;if(P(r,o,s)>=0)return!1;let a=r.x,l=o.x,f=s.x,c=r.y,u=o.y,p=s.y,h=a<l?a<f?a:f:l<f?l:f,d=c<u?c<p?c:p:u<p?u:p,x=a>l?a>f?a:f:l>f?l:f,w=c>u?c>p?c:p:u>p?u:p,I=_t(h,d,e,n,i),M=_t(x,w,e,n,i),g=t.prevZ,m=t.nextZ;for(;g&&g.z>=I&&m&&m.z<=M;){if(g.x>=h&&g.x<=x&&g.y>=d&&g.y<=w&&g!==r&&g!==s&&G(a,c,l,u,f,p,g.x,g.y)&&P(g.prev,g,g.next)>=0||(g=g.prevZ,m.x>=h&&m.x<=x&&m.y>=d&&m.y<=w&&m!==r&&m!==s&&G(a,c,l,u,f,p,m.x,m.y)&&P(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;g&&g.z>=I;){if(g.x>=h&&g.x<=x&&g.y>=d&&g.y<=w&&g!==r&&g!==s&&G(a,c,l,u,f,p,g.x,g.y)&&P(g.prev,g,g.next)>=0)return!1;g=g.prevZ}for(;m&&m.z<=M;){if(m.x>=h&&m.x<=x&&m.y>=d&&m.y<=w&&m!==r&&m!==s&&G(a,c,l,u,f,p,m.x,m.y)&&P(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function dn(t,e,n){let i=t;do{let r=i.prev,o=i.next.next;!ht(r,o)&&le(r,i,i.next,o)&&Y(r,o)&&Y(o,r)&&(e.push(r.i/n|0),e.push(i.i/n|0),e.push(o.i/n|0),X(i),X(i.next),i=t=o),i=i.next}while(i!==t);return O(i)}function gn(t,e,n,i,r,o){let s=t;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&Tn(s,a)){let l=fe(s,a);s=O(s,s.next),l=O(l,l.next),W(s,e,n,i,r,o,0),W(l,e,n,i,r,o,0);return}a=a.next}s=s.next}while(s!==t)}function mn(t,e,n,i,r,o){let s=[],a,l,f,c,u;for(a=0,l=e.length;a<l;a++)f=e[a]*i,c=a<l-1?e[a+1]*i:t.length,u=ae(t,f,c,i,!1,r&&r[a+1],o),u===u.next&&(u.steiner=!0),s.push(vn(u));for(s.sort(xn),a=0;a<s.length;a++)n=yn(s[a],n);return n}function xn(t,e){return t.x-e.x}function yn(t,e){let n=wn(t,e);if(!n)return e;let i=fe(n,t);return O(i,i.next),O(n,n.next)}function wn(t,e){let n=e,i=t.x,r=t.y,o=-1/0,s;do{if(r<=n.y&&r>=n.next.y&&n.next.y!==n.y){let p=n.x+(r-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(p<=i&&p>o&&(o=p,s=n.x<n.next.x?n:n.next,p===i))return s}n=n.next}while(n!==e);if(!s)return null;let a=s,l=s.x,f=s.y,c=1/0,u;n=s;do i>=n.x&&n.x>=l&&i!==n.x&&G(r<f?i:o,r,l,f,r<f?o:i,r,n.x,n.y)&&(u=Math.abs(r-n.y)/(i-n.x),Y(n,t)&&(u<c||u===c&&(n.x>s.x||n.x===s.x&&Pn(s,n)))&&(s=n,c=u)),n=n.next;while(n!==a);return s}function Pn(t,e){return P(t.prev,t,e.prev)<0&&P(e.next,t,t.next)<0}function Fn(t,e,n,i){let r=t;do r.z===0&&(r.z=_t(r.x,r.y,e,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,In(r)}function In(t){let e,n,i=1,r,o,s,a,l,f;do{for(o=t,t=null,f=null,r=0;o;){for(r++,a=o,s=0,n=0;n<i&&(s++,a=a.nextZ,!!a);n++);for(l=i;s>0||l>0&&a;)s!==0&&(l===0||!a||o.z<=a.z)?(e=o,o=o.nextZ,s--):(e=a,a=a.nextZ,l--),f?f.nextZ=e:t=e,e.prevZ=f,f=e;o=a}f.nextZ=null,i*=2}while(r>1);return t}function _t(t,e,n,i,r){return t=(t-n)*r|0,e=(e-i)*r|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t|e<<1}function vn(t){let e=t,n=t;do(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next;while(e!==t);return n}function G(t,e,n,i,r,o,s,a){return(r-s)*(e-a)>=(t-s)*(o-a)&&(t-s)*(i-a)>=(n-s)*(e-a)&&(n-s)*(o-a)>=(r-s)*(i-a)}function Tn(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!Sn(t,e)&&(Y(t,e)&&Y(e,t)&&Mn(t,e)&&(P(t.prev,t,e.prev)||P(t,e.prev,e))||ht(t,e)&&P(t.prev,t,t.next)>0&&P(e.prev,e,e.next)>0)}function P(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function ht(t,e){return t.x===e.x&&t.y===e.y}function le(t,e,n,i){let r=ut(P(t,e,n)),o=ut(P(t,e,i)),s=ut(P(n,i,t)),a=ut(P(n,i,e));return!!(r!==o&&s!==a||r===0&&ct(t,n,e)||o===0&&ct(t,i,e)||s===0&&ct(n,t,i)||a===0&&ct(n,e,i))}function ct(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function ut(t){return t>0?1:t<0?-1:0}function Sn(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&le(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}function Y(t,e){return P(t.prev,t,t.next)<0?P(t,e,t.next)>=0&&P(t,t.prev,e)>=0:P(t,e,t.prev)<0||P(t,t.next,e)<0}function Mn(t,e){let n=t,i=!1,r=(t.x+e.x)/2,o=(t.y+e.y)/2;do n.y>o!=n.next.y>o&&n.next.y!==n.y&&r<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==t);return i}function fe(t,e){let n=new $(t.i,t.x,t.y),i=new $(e.i,e.x,e.y),r=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=r,r.prev=n,i.next=n,n.prev=i,o.next=i,i.prev=o,i}function se(t,e,n,i){let r=new $(t,e,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function X(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}var $=class{constructor(e,n,i){_(this,"i",void 0),_(this,"x",void 0),_(this,"y",void 0),_(this,"prev",null),_(this,"next",null),_(this,"z",0),_(this,"prevZ",null),_(this,"nextZ",null),_(this,"steiner",!1),this.i=e,this.x=n,this.y=i}};function Dt(t,e,n){let i=En(t),r=Object.keys(i).filter(o=>i[o]!==Array);return Dn(t,{propArrayTypes:i,...e},{numericPropKeys:n&&n.numericPropKeys||r,PositionDataType:n?n.PositionDataType:Float32Array,triangulate:n?n.triangulate:!0})}function En(t){let e={};for(let n of t)if(n.properties)for(let i in n.properties){let r=n.properties[i];e[i]=kn(r,e[i])}return e}function Dn(t,e,n){let{pointPositionsCount:i,pointFeaturesCount:r,linePositionsCount:o,linePathsCount:s,lineFeaturesCount:a,polygonPositionsCount:l,polygonObjectsCount:f,polygonRingsCount:c,polygonFeaturesCount:u,propArrayTypes:p,coordLength:h}=e,{numericPropKeys:d=[],PositionDataType:x=Float32Array,triangulate:w=!0}=n,I=t[0]&&"id"in t[0],M=t.length>65535?Uint32Array:Uint16Array,g={type:"Point",positions:new x(i*h),globalFeatureIds:new M(i),featureIds:r>65535?new Uint32Array(i):new Uint16Array(i),numericProps:{},properties:[],fields:[]},m={type:"LineString",pathIndices:o>65535?new Uint32Array(s+1):new Uint16Array(s+1),positions:new x(o*h),globalFeatureIds:new M(o),featureIds:a>65535?new Uint32Array(o):new Uint16Array(o),numericProps:{},properties:[],fields:[]},v={type:"Polygon",polygonIndices:l>65535?new Uint32Array(f+1):new Uint16Array(f+1),primitivePolygonIndices:l>65535?new Uint32Array(c+1):new Uint16Array(c+1),positions:new x(l*h),globalFeatureIds:new M(l),featureIds:u>65535?new Uint32Array(l):new Uint16Array(l),numericProps:{},properties:[],fields:[]};w&&(v.triangles=[]);for(let T of[g,m,v])for(let S of d){let V=p[S];T.numericProps[S]=new V(T.positions.length/h)}m.pathIndices[s]=o,v.polygonIndices[f]=l,v.primitivePolygonIndices[c]=l;let F={pointPosition:0,pointFeature:0,linePosition:0,linePath:0,lineFeature:0,polygonPosition:0,polygonObject:0,polygonRing:0,polygonFeature:0,feature:0};for(let T of t){let S=T.geometry,V=T.properties||{};switch(S.type){case"Point":Ln(S,g,F,h,V),g.properties.push(Et(V,d)),I&&g.fields.push({id:T.id}),F.pointFeature++;break;case"LineString":Cn(S,m,F,h,V),m.properties.push(Et(V,d)),I&&m.fields.push({id:T.id}),F.lineFeature++;break;case"Polygon":bn(S,v,F,h,V),v.properties.push(Et(V,d)),I&&v.fields.push({id:T.id}),F.polygonFeature++;break;default:throw new Error("Invalid geometry type")}F.feature++}return Nn(g,m,v,h)}function Ln(t,e,n,i,r){e.positions.set(t.data,n.pointPosition*i);let o=t.data.length/i;Lt(e,r,n.pointPosition,o),e.globalFeatureIds.fill(n.feature,n.pointPosition,n.pointPosition+o),e.featureIds.fill(n.pointFeature,n.pointPosition,n.pointPosition+o),n.pointPosition+=o}function Cn(t,e,n,i,r){e.positions.set(t.data,n.linePosition*i);let o=t.data.length/i;Lt(e,r,n.linePosition,o),e.globalFeatureIds.fill(n.feature,n.linePosition,n.linePosition+o),e.featureIds.fill(n.lineFeature,n.linePosition,n.linePosition+o);for(let s=0,a=t.indices.length;s<a;++s){let l=t.indices[s],f=s===a-1?t.data.length:t.indices[s+1];e.pathIndices[n.linePath++]=n.linePosition,n.linePosition+=(f-l)/i}}function bn(t,e,n,i,r){e.positions.set(t.data,n.polygonPosition*i);let o=t.data.length/i;Lt(e,r,n.polygonPosition,o),e.globalFeatureIds.fill(n.feature,n.polygonPosition,n.polygonPosition+o),e.featureIds.fill(n.polygonFeature,n.polygonPosition,n.polygonPosition+o);for(let s=0,a=t.indices.length;s<a;++s){let l=n.polygonPosition;e.polygonIndices[n.polygonObject++]=l;let f=t.areas[s],c=t.indices[s],u=t.indices[s+1];for(let h=0,d=c.length;h<d;++h){let x=c[h],w=h===d-1?u===void 0?t.data.length:u[0]:c[h+1];e.primitivePolygonIndices[n.polygonRing++]=n.polygonPosition,n.polygonPosition+=(w-x)/i}let p=n.polygonPosition;On(e,f,c,{startPosition:l,endPosition:p,coordLength:i})}}function On(t,e,n,{startPosition:i,endPosition:r,coordLength:o}){if(!t.triangles)return;let s=i*o,a=r*o,l=t.positions.subarray(s,a),f=n[0],c=n.slice(1).map(p=>(p-f)/o),u=Bt(l,c,o,e);for(let p=0,h=u.length;p<h;++p)t.triangles.push(i+u[p])}function At(t,e){let n={};for(let i in t)n[i]={value:t[i],size:e};return n}function Nn(t,e,n,i){let r={shape:"binary-feature-collection",points:{...t,positions:{value:t.positions,size:i},globalFeatureIds:{value:t.globalFeatureIds,size:1},featureIds:{value:t.featureIds,size:1},numericProps:At(t.numericProps,1)},lines:{...e,positions:{value:e.positions,size:i},pathIndices:{value:e.pathIndices,size:1},globalFeatureIds:{value:e.globalFeatureIds,size:1},featureIds:{value:e.featureIds,size:1},numericProps:At(e.numericProps,1)},polygons:{...n,positions:{value:n.positions,size:i},polygonIndices:{value:n.polygonIndices,size:1},primitivePolygonIndices:{value:n.primitivePolygonIndices,size:1},globalFeatureIds:{value:n.globalFeatureIds,size:1},featureIds:{value:n.featureIds,size:1},numericProps:At(n.numericProps,1)}};return r.polygons&&n.triangles&&(r.polygons.triangles={value:new Uint32Array(n.triangles),size:1}),r}function Lt(t,e,n,i){for(let r in t.numericProps)if(r in e){let o=e[r];t.numericProps[r].fill(o,n,n+i)}}function Et(t,e){let n={};for(let i in t)e.includes(i)||(n[i]=t[i]);return n}function kn(t,e){return e===Array||!Number.isFinite(t)?Array:e===Float64Array||Math.fround(t)!==t?Float64Array:Float32Array}var Gt=ie(ye(),1);function we(t){let e=t.length;if(e<=1)return[t];let n=[],i,r;for(let o=0;o<e;o++){let s=ni(t[o]);s!==0&&(r===void 0&&(r=s<0),r===s<0?(i&&n.push(i),i=[t[o]]):i&&i.push(t[o]))}return i&&n.push(i),n}function ni(t){let e=0;for(let n=0,i=t.length-1,r,o;n<t.length;i=n++)r=t[n],o=t[i],e+=(o[0]-r[0])*(r[1]+o[1]);return e}function Pe(t,e,n){e&&n&&(t===1?e.id=n.readVarint():t===2?ii(n,e):t===3?e.type=n.readVarint():t===4&&(e._geometry=n.pos))}function ii(t,e){let n=t.readVarint()+t.pos;for(;t.pos<n;){let i=e._keys[t.readVarint()],r=e._values[t.readVarint()];e.properties[i]=r}}var N=class{static get types(){return["Unknown","Point","LineString","Polygon"]}constructor(e,n,i,r,o){this.properties={},this.extent=i,this.type=0,this.id=null,this._pbf=e,this._geometry=-1,this._keys=r,this._values=o,e.readFields(Pe,this,n)}loadGeometry(){let e=this._pbf;e.pos=this._geometry;let n=e.readVarint()+e.pos,i=1,r=0,o=0,s=0,a=[],l;for(;e.pos<n;){if(r<=0){let f=e.readVarint();i=f&7,r=f>>3}if(r--,i===1||i===2)o+=e.readSVarint(),s+=e.readSVarint(),i===1&&(l&&a.push(l),l=[]),l&&l.push([o,s]);else if(i===7)l&&l.push(l[0].slice());else throw new Error(`unknown command ${i}`)}return l&&a.push(l),a}bbox(){let e=this._pbf;e.pos=this._geometry;let n=e.readVarint()+e.pos,i=1,r=0,o=0,s=0,a=1/0,l=-1/0,f=1/0,c=-1/0;for(;e.pos<n;){if(r<=0){let u=e.readVarint();i=u&7,r=u>>3}if(r--,i===1||i===2)o+=e.readSVarint(),s+=e.readSVarint(),o<a&&(a=o),o>l&&(l=o),s<f&&(f=s),s>c&&(c=s);else if(i!==7)throw new Error(`unknown command ${i}`)}return[a,f,l,c]}_toGeoJSON(e){let n=this.loadGeometry(),i=N.types[this.type],r,o;switch(this.type){case 1:let a=[];for(r=0;r<n.length;r++)a[r]=n[r][0];n=a,e(n,this);break;case 2:for(r=0;r<n.length;r++)e(n[r],this);break;case 3:for(n=we(n),r=0;r<n.length;r++)for(o=0;o<n[r].length;o++)e(n[r][o],this);break}n.length===1?n=n[0]:i=`Multi${i}`;let s={type:"Feature",geometry:{type:i,coordinates:n},properties:this.properties};return this.id!==null&&(s.id=this.id),s}toGeoJSON(e){if(typeof e=="function")return this._toGeoJSON(e);let{x:n,y:i,z:r}=e,o=this.extent*Math.pow(2,r),s=this.extent*n,a=this.extent*i;function l(f){for(let c=0;c<f.length;c++){let u=f[c];u[0]=(u[0]+s)*360/o-180;let p=180-(u[1]+a)*360/o;u[1]=360/Math.PI*Math.atan(Math.exp(p*Math.PI/180))-90}}return this._toGeoJSON(l)}};var H=class{constructor(e,n){this.version=1,this.name="",this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(ri,this,n),this.length=this._features.length}feature(e){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];let n=this._pbf.readVarint()+this._pbf.pos;return new N(this._pbf,n,this.extent,this._keys,this._values)}};function ri(t,e,n){e&&n&&(t===15?e.version=n.readVarint():t===1?e.name=n.readString():t===5?e.extent=n.readVarint():t===2?e._features.push(n.pos):t===3?e._keys.push(n.readString()):t===4&&e._values.push(oi(n)))}function oi(t){let e=null,n=t.readVarint()+t.pos;for(;t.pos<n;){let i=t.readVarint()>>3;e=i===1?t.readString():i===2?t.readFloat():i===3?t.readDouble():i===4?t.readVarint64():i===5?t.readVarint():i===6?t.readSVarint():i===7?t.readBoolean():null}return e}var K=class{constructor(e,n){this.layers=e.readFields(si,{},n)}};function si(t,e,n){if(t===3&&n){let i=new H(n,n.readVarint()+n.pos);i.length&&e&&(e[i.name]=i)}}function Fe(t){let e=t.indices.length,n="Polygon";if(e<=1)return{type:n,data:t.data,areas:[[b(t.data)]],indices:[t.indices]};let i=[],r=[],o=[],s=[],a,l=0;for(let f,c=0,u;c<e;c++){u=t.indices[c]-l,f=t.indices[c+1]-l||t.data.length;let p=t.data.slice(u,f),h=b(p);if(h===0){let d=t.data.slice(0,u),x=t.data.slice(f);t.data=d.concat(x),l+=f-u;continue}a===void 0&&(a=h<0),a===h<0?(s.length&&(i.push(o),r.push(s)),s=[u],o=[h]):(o.push(h),s.push(u))}return o&&i.push(o),s.length&&r.push(s),{type:n,areas:i,indices:r,data:t.data}}function Ie(t,e,n,i){for(let r=0,o=t.length;r<o;r+=2){t[r]=(t[r]+e)*360/i-180;let s=180-(t[r+1]+n)*360/i;t[r+1]=360/Math.PI*Math.atan(Math.exp(s*Math.PI/180))-90}}function ve(t,e,n){e&&n&&(t===1?e.id=n.readVarint():t===2?ai(n,e):t===3?e.type=n.readVarint():t===4&&(e._geometry=n.pos))}function ai(t,e){let n=t.readVarint()+t.pos;for(;t.pos<n;){let i=e._keys[t.readVarint()],r=e._values[t.readVarint()];e.properties[i]=r}}var Te,k,Ot,gt,Nt,kt,Q;var q=class{constructor(e,n,i,r,o,s){this.properties={},this.extent=i,this.type=0,this.id=null,this._pbf=e,this._geometry=-1,this._keys=r,this._values=o,this._geometryInfo=s,e.readFields(ve,this,n)}loadGeometry(){let e=this._pbf;e.pos=this._geometry,Te=e.readVarint()+e.pos,k=1,gt=0,Nt=0,kt=0,Q=0;let n=[],i=[];for(;e.pos<Te;)if(gt<=0&&(Ot=e.readVarint(),k=Ot&7,gt=Ot>>3),gt--,k===1||k===2)Nt+=e.readSVarint(),kt+=e.readSVarint(),k===1&&n.push(Q),i.push(Nt,kt),Q+=2;else if(k===7){if(Q>0){let r=n[n.length-1];i.push(i[r],i[r+1]),Q+=2}}else throw new Error(`unknown command ${k}`);return{data:i,indices:n}}_toBinaryCoordinates(e){let n=this.loadGeometry(),i;e(n.data,this);let r=2;switch(this.type){case 1:this._geometryInfo.pointFeaturesCount++,this._geometryInfo.pointPositionsCount+=n.indices.length,i={type:"Point",...n};break;case 2:this._geometryInfo.lineFeaturesCount++,this._geometryInfo.linePathsCount+=n.indices.length,this._geometryInfo.linePositionsCount+=n.data.length/r,i={type:"LineString",...n};break;case 3:i=Fe(n),this._geometryInfo.polygonFeaturesCount++,this._geometryInfo.polygonObjectsCount+=i.indices.length;for(let s of i.indices)this._geometryInfo.polygonRingsCount+=s.length;this._geometryInfo.polygonPositionsCount+=i.data.length/r;break;default:throw new Error(`Invalid geometry type: ${this.type}`)}let o={type:"Feature",geometry:i,properties:this.properties};return this.id!==null&&(o.id=this.id),o}toBinaryCoordinates(e){if(typeof e=="function")return this._toBinaryCoordinates(e);let{x:n,y:i,z:r}=e,o=this.extent*Math.pow(2,r),s=this.extent*n,a=this.extent*i;return this._toBinaryCoordinates(l=>Ie(l,s,a,o))}};var tt=class{constructor(e,n){this.version=1,this.name="",this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(li,this,n),this.length=this._features.length}feature(e,n){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];let i=this._pbf.readVarint()+this._pbf.pos;return new q(this._pbf,i,this.extent,this._keys,this._values,n)}};function li(t,e,n){e&&n&&(t===15?e.version=n.readVarint():t===1?e.name=n.readString():t===5?e.extent=n.readVarint():t===2?e._features.push(n.pos):t===3?e._keys.push(n.readString()):t===4&&e._values.push(fi(n)))}function fi(t){let e=null,n=t.readVarint()+t.pos;for(;t.pos<n;){let i=t.readVarint()>>3;e=i===1?t.readString():i===2?t.readFloat():i===3?t.readDouble():i===4?t.readVarint64():i===5?t.readVarint():i===6?t.readSVarint():i===7?t.readBoolean():null}return e}var et=class{constructor(e,n){this.layers=e.readFields(ci,{},n)}};function ci(t,e,n){if(t===3&&n){let i=new tt(n,n.readVarint()+n.pos);i.length&&e&&(e[i.name]=i)}}function mt(t,e){let n=hi(e),i=e?.gis?.format||e?.mvt?.shape||e?.shape;switch(i){case"columnar-table":return{shape:"columnar-table",data:Ut(t,n)};case"geojson-table":return{shape:"geojson-table",type:"FeatureCollection",features:Se(t,n)};case"geojson":return Se(t,n);case"binary-geometry":return Ut(t,n);case"binary":return Ut(t,n);default:throw new Error(i||"undefined shape")}}function Ut(t,e){let[n,i]=ui(t,e),r=Dt(n,i);return r.byteLength=t.byteLength,r}function ui(t,e){let n=[],i={coordLength:2,pointPositionsCount:0,pointFeaturesCount:0,linePositionsCount:0,linePathsCount:0,lineFeaturesCount:0,polygonPositionsCount:0,polygonObjectsCount:0,polygonRingsCount:0,polygonFeaturesCount:0};if(t.byteLength<=0)return[n,i];let r=new et(new Gt.default(t));return(e&&Array.isArray(e.layers)?e.layers:Object.keys(r.layers)).forEach(s=>{let a=r.layers[s];if(a)for(let l=0;l<a.length;l++){let f=a.feature(l,i),c=di(f,e,s);n.push(c)}}),[n,i]}function Se(t,e){if(t.byteLength<=0)return[];let n=[],i=new K(new Gt.default(t));return(Array.isArray(e.layers)?e.layers:Object.keys(i.layers)).forEach(o=>{let s=i.layers[o];if(s)for(let a=0;a<s.length;a++){let l=s.feature(a),f=pi(l,e,o);n.push(f)}}),n}function hi(t){if(!t?.mvt)throw new Error("mvt options required");let e=t.mvt?.coordinates==="wgs84",{tileIndex:n}=t.mvt,i=n&&Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z);if(e&&!i)throw new Error("MVT Loader: WGS84 coordinates need tileIndex property");return t.mvt}function pi(t,e,n){let i=t.toGeoJSON(e.coordinates==="wgs84"?e.tileIndex:gi);return e.layerProperty&&(i.properties[e.layerProperty]=n),i}function di(t,e,n){let i=t.toBinaryCoordinates(e.coordinates==="wgs84"?e.tileIndex:mi);return e.layerProperty&&i.properties&&(i.properties[e.layerProperty]=n),i}function gi(t,e){let{extent:n}=e;for(let i=0;i<t.length;i++){let r=t[i];r[0]/=n,r[1]/=n}}function mi(t,e){let{extent:n}=e;for(let i=0,r=t.length;i<r;++i)t[i]/=n}var xi="4.2.0-alpha.4",Rt={name:"Mapbox Vector Tile",id:"mvt",module:"mvt",version:xi,extensions:["mvt","pbf"],mimeTypes:["application/vnd.mapbox-vector-tile","application/x-protobuf"],worker:!0,category:"geometry",options:{mvt:{shape:"geojson",coordinates:"local",layerProperty:"layerName",layers:void 0,tileIndex:null}}},xt={...Rt,parse:async(t,e)=>mt(t,e),parseSync:mt,binary:!0};var Be=t=>t!==null&&typeof t=="object";function jt(t,e){if(!t||!Be(t))return null;let n={name:t.name||"",description:t.description||""};if(typeof t.generator=="string"&&(n.generator=t.generator),typeof t.generator_options=="string"&&(n.generatorOptions=t.generator_options),n.boundingBox=Me(t.bounds)||Me(t.antimeridian_adjusted_bounds),n.center=vi(t.center),n.maxZoom=Ve(t.maxzoom),n.minZoom=Ve(t.minzoom),typeof t?.json=="string")try{n.metaJson=JSON.parse(t.json)}catch(a){console.warn("Failed to parse tilejson.json field",a)}let i=t.tilestats||n.metaJson?.tilestats,r=Pi(i,e),o=yi(t.vector_layers),s=Ii(o,r);return n={...n,layers:s},n.maxZoom===null&&s.length>0&&(n.maxZoom=s[0].maxZoom||null),n.minZoom===null&&s.length>0&&(n.minZoom=s[0].minZoom||null),n}function yi(t){return Array.isArray(t)?t.map(e=>wi(e)):[]}function wi(t){let e=Object.entries(t.fields||[]).map(([i,r])=>({name:i,...Le(String(r))})),n={...t};return delete n.fields,{name:t.id||"",...n,fields:e}}function Pi(t,e){return Be(t)&&Array.isArray(t.layers)?t.layers.map(n=>Fi(n,e)):[]}function Fi(t,e){let n=[],i={},r=t.attributes||[];for(let o of r){let s=o.attribute;if(typeof s=="string")if(s.split("|").length>1){let a=s.split("|")[0];i[a]=i[a]||[],i[a].push(o),console.warn("ignoring tilestats indexed field",a)}else n[s]||n.push(Si(o,e))}return{name:t.layer||"",dominantGeometry:t.geometry,fields:n}}function Ii(t,e){return t.map(n=>{let i=e.find(s=>s.name===n.name),r=i?.fields||[],o={...n};return delete o.fields,{...o,...i,fields:r}})}function Me(t){let e=De(t);if(Array.isArray(e)&&e.length===4&&[e[0],e[2]].every(Ee)&&[e[1],e[3]].every(Ae))return[[e[0],e[1]],[e[2],e[3]]]}function vi(t){let e=De(t);return Array.isArray(e)&&e.length===3&&Ee(e[0])&&Ae(e[1])&&Ti(e[2])?e:null}function Ve(t){let e=typeof t=="string"?parseFloat(t):typeof t=="number"?t:null;return e===null||isNaN(e)?null:e}function Ae(t){return Number.isFinite(t)&&t<=90&&t>=-90}function Ee(t){return Number.isFinite(t)&&t<=180&&t>=-180}function Ti(t){return Number.isFinite(t)&&t>=0&&t<=22}function De(t){return typeof t=="string"?t.split(",").map(parseFloat):Array.isArray(t)?t:null}var _e={number:{type:"float32"},numeric:{type:"float32"},string:{type:"utf8"},vachar:{type:"utf8"},float:{type:"float32"},int:{type:"int32"},int4:{type:"int32"},boolean:{type:"boolean"},bool:{type:"boolean"}};function Si(t={},e){let n=Le(t.type),i={name:t.attribute,...n};return typeof t.min=="number"&&(i.min=t.min),typeof t.max=="number"&&(i.max=t.max),typeof t.count=="number"&&(i.uniqueValueCount=t.count),t.values&&(i.values=t.values),i.values&&typeof e.maxValues=="number"&&(i.values=i.values?.slice(0,e.maxValues)),i}function Le(t){let e=t.toLowerCase();return!e||_e[e],_e[e]||{type:"string"}}var Mi="4.2.0-alpha.4",Z={name:"TileJSON",id:"tilejson",module:"pmtiles",version:Mi,worker:!0,extensions:["json"],mimeTypes:["application/json"],text:!0,options:{tilejson:{maxValues:void 0}},parse:async(t,e)=>{let n=new TextDecoder().decode(t),i=JSON.parse(n),r={...Z.options.tilejson,...e?.tilejson};return jt(i,r)},parseTextSync:(t,e)=>{let n=JSON.parse(t),i={...Z.options.tilejson,...e?.tilejson};return jt(n,i)}};function nt(t,e){if(!t)throw new Error(e||"loader assertion failed.")}var A={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Vi=A.self||A.window||A.global||{},_i=A.window||A.self||A.global||{},Bi=A.global||A.self||A.window||{},Ai=A.document||{};var Zt=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var Ce=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Ei=Ce&&parseFloat(Ce[1])||0;var Di="",be={};function zt(t){for(let e in be)if(t.startsWith(e)){let n=be[e];t=t.replace(e,n)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t=`${Di}${t}`),t}var it=class{constructor(e){this._needsRefresh=!0,this.props={...e},this.loadOptions={...e.loadOptions},this.fetch=Li(this.loadOptions)}setProps(e){this.props=Object.assign(this.props,e),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(e=!0){let n=this._needsRefresh;return e&&(this._needsRefresh=!1),n}};function Li(t){let e=t?.fetch;if(e&&typeof e=="function")return(i,r)=>e(i,r);let n=t?.fetch;return n&&typeof n!="function"?i=>fetch(i,n):i=>fetch(i)}var Oe="4.2.0-alpha.4";var Ci=globalThis.loaders?.parseImageNode,Jt=typeof Image<"u",Wt=typeof ImageBitmap<"u",bi=Boolean(Ci),Yt=Zt?!0:bi;function Ne(t){switch(t){case"auto":return Wt||Jt||Yt;case"imagebitmap":return Wt;case"image":return Jt;case"data":return Yt;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}function ke(){if(Wt)return"imagebitmap";if(Jt)return"image";if(Yt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function Oi(t){let e=Ni(t);if(!e)throw new Error("Not an image");return e}function Ue(t){switch(Oi(t)){case"data":return t;case"image":case"imagebitmap":let e=document.createElement("canvas"),n=e.getContext("2d");if(!n)throw new Error("getImageData");return e.width=t.width,e.height=t.height,n.drawImage(t,0,0),n.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}function Ni(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&t instanceof Image?"image":t&&typeof t=="object"&&t.data&&t.width&&t.height?"data":null}var ki=/^data:image\/svg\+xml/,Ui=/\.svg((\?|#).*)?$/;function yt(t){return t&&(ki.test(t)||Ui.test(t))}function Ge(t,e){if(yt(e)){let i=new TextDecoder().decode(t);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(i=unescape(encodeURIComponent(i)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(i)}`}return Xt(t,e)}function Xt(t,e){if(yt(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function wt(t,e,n){let i=Ge(t,n),r=self.URL||self.webkitURL,o=typeof i!="string"&&r.createObjectURL(i);try{return await Gi(o||i,e)}finally{o&&r.revokeObjectURL(o)}}async function Gi(t,e){let n=new Image;return n.src=t,e.image&&e.image.decode&&n.decode?(await n.decode(),n):await new Promise((i,r)=>{try{n.onload=()=>i(n),n.onerror=o=>{let s=o instanceof Error?o.message:"error";r(new Error(s))}}catch(o){r(o)}})}var Ri={},Re=!0;async function je(t,e,n){let i;yt(n)?i=await wt(t,e,n):i=Xt(t,n);let r=e&&e.imagebitmap;return await ji(i,r)}async function ji(t,e=null){if((Zi(e)||!Re)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(n){console.warn(n),Re=!1}return await createImageBitmap(t)}function Zi(t){for(let e in t||Ri)return!1;return!0}function Ze(t){return!Yi(t,"ftyp",4)||!(t[8]&96)?null:zi(t)}function zi(t){switch(Ji(t,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function Ji(t,e,n){return String.fromCharCode(...t.slice(e,n))}function Wi(t){return[...t].map(e=>e.charCodeAt(0))}function Yi(t,e,n=0){let i=Wi(e);for(let r=0;r<i.length;++r)if(i[r]!==t[r+n])return!1;return!0}var E=!1,rt=!0;function U(t){let e=ot(t);return $i(e)||Qi(e)||Hi(e)||Ki(e)||Xi(e)}function Xi(t){let e=new Uint8Array(t instanceof DataView?t.buffer:t),n=Ze(e);return n?{mimeType:n.mimeType,width:0,height:0}:null}function $i(t){let e=ot(t);return e.byteLength>=24&&e.getUint32(0,E)===2303741511?{mimeType:"image/png",width:e.getUint32(16,E),height:e.getUint32(20,E)}:null}function Hi(t){let e=ot(t);return e.byteLength>=10&&e.getUint32(0,E)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,rt),height:e.getUint16(8,rt)}:null}function Ki(t){let e=ot(t);return e.byteLength>=14&&e.getUint16(0,E)===16973&&e.getUint32(2,rt)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,rt),height:e.getUint32(22,rt)}:null}function Qi(t){let e=ot(t);if(!(e.byteLength>=3&&e.getUint16(0,E)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:r}=qi(),o=2;for(;o+9<e.byteLength;){let s=e.getUint16(o,E);if(r.has(s))return{mimeType:"image/jpeg",height:e.getUint16(o+5,E),width:e.getUint16(o+7,E)};if(!i.has(s))return null;o+=2,o+=e.getUint16(o,E)}return null}function qi(){let t=new Set([65499,65476,65484,65501,65534]);for(let n=65504;n<65520;++n)t.add(n);return{tableMarkers:t,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function ot(t){if(t instanceof DataView)return t;if(ArrayBuffer.isView(t))return new DataView(t.buffer);if(t instanceof ArrayBuffer)return new DataView(t);throw new Error("toDataView")}async function ze(t,e){let{mimeType:n}=U(t)||{},i=globalThis.loaders?.parseImageNode;return nt(i),await i(t,n)}async function Je(t,e,n){e=e||{};let r=(e.image||{}).type||"auto",{url:o}=n||{},s=tr(r),a;switch(s){case"imagebitmap":a=await je(t,e,o);break;case"image":a=await wt(t,e,o);break;case"data":a=await ze(t,e);break;default:nt(!1)}return r==="data"&&(a=Ue(a)),a}function tr(t){switch(t){case"auto":case"data":return ke();default:return Ne(t),t}}var er=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],nr=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ir={image:{type:"auto",decode:!0}},$t={id:"image",module:"images",name:"Images",version:Oe,mimeTypes:nr,extensions:er,parse:Je,tests:[t=>Boolean(U(new DataView(t)))],options:ir};var Pt=class extends it{constructor(e){super(e),this.metadataUrl=null,this.schema="tms",this.mimeType=null,this.props=e,this.url=zt(e.url),this.metadataUrl=e.metadataUrl===void 0?`${this.url}/tilejson.json`:e.metadataUrl,this.extension=e.extension||".png",this.data=this.url,this.getTileData=this.getTileData.bind(this),this.metadata=this.getMetadata(),rr(this.url)&&(this.schema="template")}async getMetadata(){if(!this.metadataUrl)return null;let e;try{e=await this.fetch(this.metadataUrl)}catch(r){return console.error(r.message),null}if(!e.ok)return console.error(e.statusText),null;let n=await e.text();return Z.parseTextSync?.(n)||null}getTileMIMEType(){return this.mimeType}async getTile(e){let{x:n,y:i,zoom:r}=e,o=this.getTileURL(n,i,r),s=await this.fetch(o);return s.ok?await s.arrayBuffer():null}async getTileData(e){let{x:n,y:i,z:r}=e.index,o=await this.getTile({x:n,y:i,zoom:r,layers:[]});if(o===null)return null;let s=U(o);switch(this.mimeType=this.mimeType||s?.mimeType||"application/vnd.mapbox-vector-tile",this.mimeType){case"application/vnd.mapbox-vector-tile":return await this._parseVectorTile(o,{x:n,y:i,zoom:r,layers:[]});default:return await this._parseImageTile(o)}}async getImageTile(e){let n=await this.getTile(e);return n?this._parseImageTile(n):null}async _parseImageTile(e){return await $t.parse(e,this.loadOptions)}async getVectorTile(e){let n=await this.getTile(e);return n?this._parseVectorTile(n,e):null}async _parseVectorTile(e,n){let i={shape:"geojson-table",mvt:{coordinates:"wgs84",tileIndex:{x:n.x,y:n.y,z:n.zoom},...this.loadOptions?.mvt},...this.loadOptions};return await xt.parse(e,i)}getMetadataUrl(){return this.metadataUrl}getTileURL(e,n,i){switch(this.schema){case"xyz":return`${this.url}/${e}/${n}/${i}${this.extension}`;case"tms":return`${this.url}/${i}/${e}/${n}${this.extension}`;case"template":return lr(this.url,e,n,i,"0");default:throw new Error(this.schema)}}};function rr(t){return/(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))|(?=.*{x})(?=.*({y}|{-y})(?=.*{z}))/.test(t)}var or=new RegExp("{x}","g"),sr=new RegExp("{y}","g"),ar=new RegExp("{z}","g");function lr(t,e,n,i,r="0"){if(Array.isArray(t)){let s=fr(r)%t.length;t=t[s]}let o=t;return o=o.replace(or,String(e)),o=o.replace(sr,String(n)),o=o.replace(ar,String(i)),Number.isInteger(n)&&Number.isInteger(i)&&(o=o.replace(/\{-y\}/g,String(Math.pow(2,i)-n-1))),o}function fr(t){return Math.abs(t.split("").reduce((e,n)=>(e<<5)-e+n.charCodeAt(0)|0,0))}function Ft(t,e,n,i){let r=i,o=n-e>>1,s=n-e,a,l=t[e],f=t[e+1],c=t[n],u=t[n+1];for(let p=e+3;p<n;p+=3){let h=cr(t[p],t[p+1],l,f,c,u);if(h>r)a=p,r=h;else if(h===r){let d=Math.abs(p-o);d<s&&(a=p,s=d)}}r>i&&(a-e>3&&Ft(t,e,a,i),t[a+2]=r,n-a>3&&Ft(t,a,n,i))}function cr(t,e,n,i,r,o){let s=r-n,a=o-i;if(s!==0||a!==0){let l=((t-n)*s+(e-i)*a)/(s*s+a*a);l>1?(n=r,i=o):l>0&&(n+=s*l,i+=a*l)}return s=t-n,a=e-i,s*s+a*a}function C(t,e,n,i){let r={id:t??null,type:e,geometry:n,tags:i,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(e==="Point"||e==="MultiPoint"||e==="LineString")It(r,n);else if(e==="Polygon")It(r,n[0]);else if(e==="MultiLineString")for(let o of n)It(r,o);else if(e==="MultiPolygon")for(let o of n)It(r,o[0]);return r}function It(t,e){for(let n=0;n<e.length;n+=3)t.minX=Math.min(t.minX,e[n]),t.minY=Math.min(t.minY,e[n+1]),t.maxX=Math.max(t.maxX,e[n]),t.maxY=Math.max(t.maxY,e[n+1])}function Ye(t,e){let n=[];if(t.type==="FeatureCollection")for(let i=0;i<t.features.length;i++)vt(n,t.features[i],e,i);else t.type==="Feature"?vt(n,t,e):vt(n,{geometry:t},e);return n}function vt(t,e,n,i){if(!e.geometry)return;let r=e.geometry.coordinates,o=e.geometry.type,s=Math.pow(n.tolerance/((1<<n.maxZoom)*n.extent),2),a=[],l=e.id;if(n.promoteId?l=e.properties[n.promoteId]:n.generateId&&(l=i||0),o==="Point")We(r,a);else if(o==="MultiPoint")for(let f of r)We(f,a);else if(o==="LineString")Kt(r,a,s,!1);else if(o==="MultiLineString")if(n.lineMetrics){for(let f of r)a=[],Kt(f,a,s,!1),t.push(C(l,"LineString",a,e.properties));return}else Ht(r,a,s,!1);else if(o==="Polygon")Ht(r,a,s,!0);else if(o==="MultiPolygon")for(let f of r){let c=[];Ht(f,c,s,!0),a.push(c)}else if(o==="GeometryCollection"){for(let f of e.geometry.geometries)vt(t,{id:l,geometry:f,properties:e.properties},n,i);return}else throw new Error("Input data is not a valid GeoJSON object.");t.push(C(l,o,a,e.properties))}function We(t,e){e.push(Xe(t[0]),$e(t[1]),0)}function Kt(t,e,n,i){let r,o,s=0;for(let l=0;l<t.length;l++){let f=Xe(t[l][0]),c=$e(t[l][1]);e.push(f,c,0),l>0&&(i?s+=(r*c-f*o)/2:s+=Math.sqrt(Math.pow(f-r,2)+Math.pow(c-o,2))),r=f,o=c}let a=e.length-3;e[2]=1,Ft(e,0,a,n),e[a+2]=1,e.size=Math.abs(s),e.start=0,e.end=e.size}function Ht(t,e,n,i){for(let r=0;r<t.length;r++){let o=[];Kt(t[r],o,n,i),e.push(o)}}function Xe(t){return t/360+.5}function $e(t){let e=Math.sin(t*Math.PI/180),n=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return n<0?0:n>1?1:n}function B(t,e,n,i,r,o,s,a){if(n/=e,i/=e,o>=n&&s<i)return t;if(s<n||o>=i)return null;let l=[];for(let f of t){let c=f.geometry,u=f.type,p=r===0?f.minX:f.minY,h=r===0?f.maxX:f.maxY;if(p>=n&&h<i){l.push(f);continue}else if(h<n||p>=i)continue;let d=[];if(u==="Point"||u==="MultiPoint")ur(c,d,n,i,r);else if(u==="LineString")Ke(c,d,n,i,r,!1,a.lineMetrics);else if(u==="MultiLineString")Qt(c,d,n,i,r,!1);else if(u==="Polygon")Qt(c,d,n,i,r,!0);else if(u==="MultiPolygon")for(let x of c){let w=[];Qt(x,w,n,i,r,!0),w.length&&d.push(w)}if(d.length){if(a.lineMetrics&&u==="LineString"){for(let x of d)l.push(C(f.id,u,x,f.tags));continue}(u==="LineString"||u==="MultiLineString")&&(d.length===1?(u="LineString",d=d[0]):u="MultiLineString"),(u==="Point"||u==="MultiPoint")&&(u=d.length===3?"Point":"MultiPoint"),l.push(C(f.id,u,d,f.tags))}}return l.length?l:null}function ur(t,e,n,i,r){for(let o=0;o<t.length;o+=3){let s=t[o+r];s>=n&&s<=i&&z(e,t[o],t[o+1],t[o+2])}}function Ke(t,e,n,i,r,o,s){let a=He(t),l=r===0?hr:pr,f=t.start,c,u;for(let I=0;I<t.length-3;I+=3){let M=t[I],g=t[I+1],m=t[I+2],v=t[I+3],F=t[I+4],T=r===0?M:g,S=r===0?v:F,V=!1;s&&(c=Math.sqrt(Math.pow(M-v,2)+Math.pow(g-F,2))),T<n?S>n&&(u=l(a,M,g,v,F,n),s&&(a.start=f+c*u)):T>i?S<i&&(u=l(a,M,g,v,F,i),s&&(a.start=f+c*u)):z(a,M,g,m),S<n&&T>=n&&(u=l(a,M,g,v,F,n),V=!0),S>i&&T<=i&&(u=l(a,M,g,v,F,i),V=!0),!o&&V&&(s&&(a.end=f+c*u),e.push(a),a=He(t)),s&&(f+=c)}let p=t.length-3,h=t[p],d=t[p+1],x=t[p+2],w=r===0?h:d;w>=n&&w<=i&&z(a,h,d,x),p=a.length-3,o&&p>=3&&(a[p]!==a[0]||a[p+1]!==a[1])&&z(a,a[0],a[1],a[2]),a.length&&e.push(a)}function He(t){let e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function Qt(t,e,n,i,r,o){for(let s of t)Ke(s,e,n,i,r,o,!1)}function z(t,e,n,i){t.push(e,n,i)}function hr(t,e,n,i,r,o){let s=(o-e)/(i-e);return z(t,o,n+(r-n)*s,1),s}function pr(t,e,n,i,r,o){let s=(o-n)/(r-n);return z(t,e+(i-e)*s,o,1),s}function qe(t,e){let n=e.buffer/e.extent,i=t,r=B(t,1,-1-n,n,0,-1,2,e),o=B(t,1,1-n,2+n,0,-1,2,e);return(r||o)&&(i=B(t,1,-n,1+n,0,-1,2,e)||[],r&&(i=Qe(r,1).concat(i)),o&&(i=i.concat(Qe(o,-1)))),i}function Qe(t,e){let n=[];for(let i=0;i<t.length;i++){let r=t[i],o=r.type,s;if(o==="Point"||o==="MultiPoint"||o==="LineString")s=qt(r.geometry,e);else if(o==="MultiLineString"||o==="Polygon"){s=[];for(let a of r.geometry)s.push(qt(a,e))}else if(o==="MultiPolygon"){s=[];for(let a of r.geometry){let l=[];for(let f of a)l.push(qt(f,e));s.push(l)}}n.push(C(r.id,o,s,r.tags))}return n}function qt(t,e){let n=[];n.size=t.size,t.start!==void 0&&(n.start=t.start,n.end=t.end);for(let i=0;i<t.length;i+=3)n.push(t[i]+e,t[i+1],t[i+2]);return n}function te(t,e){if(t.transformed)return t;let n=1<<t.z,i=t.x,r=t.y;for(let o of t.features){let s=o.geometry,a=o.type;if(o.geometry=[],a===1)for(let l=0;l<s.length;l+=2)o.geometry.push(tn(s[l],s[l+1],e,n,i,r));else for(let l=0;l<s.length;l++){let f=[];for(let c=0;c<s[l].length;c+=2)f.push(tn(s[l][c],s[l][c+1],e,n,i,r));o.geometry.push(f)}}return t.transformed=!0,t}function tn(t,e,n,i,r,o){return[Math.round(n*(t*i-r)),Math.round(n*(e*i-o))]}function en(t,e,n,i,r){let o=e===r.maxZoom?0:r.tolerance/((1<<e)*r.extent),s={features:[],numPoints:0,numSimplified:0,numFeatures:t.length,source:null,x:n,y:i,z:e,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0};for(let a of t)dr(s,a,o,r);return s}function dr(t,e,n,i){let r=e.geometry,o=e.type,s=[];if(t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),o==="Point"||o==="MultiPoint")for(let a=0;a<r.length;a+=3)s.push(r[a],r[a+1]),t.numPoints++,t.numSimplified++;else if(o==="LineString")ee(s,r,t,n,!1,!1);else if(o==="MultiLineString"||o==="Polygon")for(let a=0;a<r.length;a++)ee(s,r[a],t,n,o==="Polygon",a===0);else if(o==="MultiPolygon")for(let a=0;a<r.length;a++){let l=r[a];for(let f=0;f<l.length;f++)ee(s,l[f],t,n,!0,f===0)}if(s.length){let a=e.tags||null;if(o==="LineString"&&i.lineMetrics){a={};for(let f in e.tags)a[f]=e.tags[f];a.mapbox_clip_start=r.start/r.size,a.mapbox_clip_end=r.end/r.size}let l={geometry:s,type:o==="Polygon"||o==="MultiPolygon"?3:o==="LineString"||o==="MultiLineString"?2:1,tags:a};e.id!==null&&(l.id=e.id),t.features.push(l)}}function ee(t,e,n,i,r,o){let s=i*i;if(i>0&&e.size<(r?s:i)){n.numPoints+=e.length/3;return}let a=[];for(let l=0;l<e.length;l+=3)(i===0||e[l+2]>s)&&(n.numSimplified++,a.push(e[l],e[l+1])),n.numPoints++;r&&gr(a,o),t.push(a)}function gr(t,e){let n=0;for(let i=0,r=t.length-2;i<t.length;r=i,i+=2)n+=(t[i]-t[r])*(t[i+1]+t[r+1]);if(n>0===e)for(let i=0,r=t.length;i<r/2;i+=2){let o=t[i],s=t[i+1];t[i]=t[r-2-i],t[i+1]=t[r-1-i],t[r-2-i]=o,t[r-1-i]=s}}var mr={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:void 0,generateId:!1,debug:0},Tt=class{constructor(e,n){this.tiles={},this.tileCoords=[],this.stats={},this.total=0,this.options={...mr,...n},n=this.options;let i=n.debug;if(i&&console.time("preprocess data"),this.options.maxZoom<0||this.options.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(n.promoteId&&this.options.generateId)throw new Error("promoteId and generateId cannot be used together.");let r=Ye(e,n);i&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",n.indexMaxZoom,n.indexMaxPoints),console.time("generate tiles")),r=qe(r,this.options),r.length&&this.splitTile(r,0,0,0),i&&(r.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}getTile(e,n,i){let{extent:r,debug:o}=this.options;if(e<0||e>24)return null;let s=1<<e;n=n+s&s-1;let a=ne(e,n,i);if(this.tiles[a])return te(this.tiles[a],r);o>1&&console.log("drilling down to z%d-%d-%d",e,n,i);let l=e,f=n,c=i,u;for(;!u&&l>0;)l--,f=f>>1,c=c>>1,u=this.tiles[ne(l,f,c)];return!u||!u.source?null:(o>1&&(console.log("found parent tile z%d-%d-%d",l,f,c),console.time("drilling down")),this.splitTile(u.source,l,f,c,e,n,i),o>1&&console.timeEnd("drilling down"),this.tiles[a]?te(this.tiles[a],r):null)}splitTile(e,n,i,r,o,s,a){let l=[e,n,i,r],f=this.options,c=f.debug;for(;l.length;){r=l.pop(),i=l.pop(),n=l.pop(),e=l.pop();let u=1<<n,p=ne(n,i,r),h=this.tiles[p];if(!h&&(c>1&&console.time("creation"),h=this.tiles[p]=en(e,n,i,r,f),this.tileCoords.push({z:n,x:i,y:r}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",n,i,r,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd("creation"));let S=`z${n}`;this.stats[S]=(this.stats[S]||0)+1,this.total++}if(h.source=e,o===void 0){if(n===f.indexMaxZoom||h.numPoints<=f.indexMaxPoints)continue}else{if(n===f.maxZoom||n===o)continue;if(o!==void 0){let S=o-n;if(i!==s>>S||r!==a>>S)continue}}if(h.source=null,e.length===0)continue;c>1&&console.time("clipping");let d=.5*f.buffer/f.extent,x=.5-d,w=.5+d,I=1+d,M=null,g=null,m=null,v=null,F=B(e,u,i-d,i+w,0,h.minX,h.maxX,f),T=B(e,u,i+x,i+I,0,h.minX,h.maxX,f);e=null,F&&(M=B(F,u,r-d,r+w,1,h.minY,h.maxY,f),g=B(F,u,r+x,r+I,1,h.minY,h.maxY,f),F=null),T&&(m=B(T,u,r-d,r+w,1,h.minY,h.maxY,f),v=B(T,u,r+x,r+I,1,h.minY,h.maxY,f),T=null),c>1&&console.timeEnd("clipping"),l.push(M||[],n+1,i*2,r*2),l.push(g||[],n+1,i*2,r*2+1),l.push(m||[],n+1,i*2+1,r*2),l.push(v||[],n+1,i*2+1,r*2+1)}}};function ne(t,e,n){return((1<<t)*n+e)*32+t}return fn(st);})();
8
+ /*! Bundled license information:
9
+
10
+ ieee754/index.js:
11
+ (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
12
+ */
13
+ return __exports__;
14
+ });
@@ -1,6 +1,6 @@
1
1
  import Protobuf from 'pbf';
2
2
  import { FlatIndexedGeometry, FlatPolygon } from '@loaders.gl/schema';
3
- import VectorTileFeature from '../lib/binary-vector-tile/vector-tile-feature';
3
+ import VectorTileFeature from "../lib/binary-vector-tile/vector-tile-feature.js";
4
4
  /**
5
5
  * Classifies an array of rings into polygons with outer rings and holes
6
6
  * The function also detects holes which have zero area and
@@ -1 +1 @@
1
- {"version":3,"file":"binary-util-functions.d.ts","sourceRoot":"","sources":["../../src/helpers/binary-util-functions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpE,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAE9E;;;;;;;;GAQG;AAEH,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,CA4DpE;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAO1F;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAQvE"}
1
+ {"version":3,"file":"binary-util-functions.d.ts","sourceRoot":"","sources":["../../src/helpers/binary-util-functions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpE,OAAO,iBAAiB,yDAAsD;AAE9E;;;;;;;;GAQG;AAEH,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,CA4DpE;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAO1F;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAQvE"}
@@ -1,73 +1,111 @@
1
1
  import { getPolygonSignedArea } from '@math.gl/polygon';
2
+ /**
3
+ * Classifies an array of rings into polygons with outer rings and holes
4
+ * The function also detects holes which have zero area and
5
+ * removes them. In doing so it modifies the input
6
+ * `geom.data` array to remove the unneeded data
7
+ *
8
+ * @param geometry
9
+ * @returns object
10
+ */
11
+ // eslint-disable-next-line max-statements
2
12
  export function classifyRings(geom) {
3
- const len = geom.indices.length;
4
- const type = 'Polygon';
5
- if (len <= 1) {
6
- return {
7
- type,
8
- data: geom.data,
9
- areas: [[getPolygonSignedArea(geom.data)]],
10
- indices: [geom.indices]
11
- };
12
- }
13
- const areas = [];
14
- const polygons = [];
15
- let ringAreas = [];
16
- let polygon = [];
17
- let ccw;
18
- let offset = 0;
19
- for (let endIndex, i = 0, startIndex; i < len; i++) {
20
- startIndex = geom.indices[i] - offset;
21
- endIndex = geom.indices[i + 1] - offset || geom.data.length;
22
- const shape = geom.data.slice(startIndex, endIndex);
23
- const area = getPolygonSignedArea(shape);
24
- if (area === 0) {
25
- const before = geom.data.slice(0, startIndex);
26
- const after = geom.data.slice(endIndex);
27
- geom.data = before.concat(after);
28
- offset += endIndex - startIndex;
29
- continue;
13
+ const len = geom.indices.length;
14
+ const type = 'Polygon';
15
+ if (len <= 1) {
16
+ return {
17
+ type,
18
+ data: geom.data,
19
+ areas: [[getPolygonSignedArea(geom.data)]],
20
+ indices: [geom.indices]
21
+ };
30
22
  }
31
- if (ccw === undefined) ccw = area < 0;
32
- if (ccw === area < 0) {
33
- if (polygon.length) {
23
+ const areas = [];
24
+ const polygons = [];
25
+ let ringAreas = [];
26
+ let polygon = [];
27
+ let ccw;
28
+ let offset = 0;
29
+ for (let endIndex, i = 0, startIndex; i < len; i++) {
30
+ startIndex = geom.indices[i] - offset;
31
+ endIndex = geom.indices[i + 1] - offset || geom.data.length;
32
+ const shape = geom.data.slice(startIndex, endIndex);
33
+ const area = getPolygonSignedArea(shape);
34
+ if (area === 0) {
35
+ // This polygon has no area, so remove it from the shape
36
+ // Remove the section from the data array
37
+ const before = geom.data.slice(0, startIndex);
38
+ const after = geom.data.slice(endIndex);
39
+ geom.data = before.concat(after);
40
+ // Need to offset any remaining indices as we have
41
+ // modified the data buffer
42
+ offset += endIndex - startIndex;
43
+ // Do not add this index to the output and process next shape
44
+ continue; // eslint-disable-line no-continue
45
+ }
46
+ if (ccw === undefined)
47
+ ccw = area < 0;
48
+ if (ccw === area < 0) {
49
+ if (polygon.length) {
50
+ areas.push(ringAreas);
51
+ polygons.push(polygon);
52
+ }
53
+ polygon = [startIndex];
54
+ ringAreas = [area];
55
+ }
56
+ else {
57
+ ringAreas.push(area);
58
+ polygon.push(startIndex);
59
+ }
60
+ }
61
+ if (ringAreas)
34
62
  areas.push(ringAreas);
63
+ if (polygon.length)
35
64
  polygons.push(polygon);
36
- }
37
- polygon = [startIndex];
38
- ringAreas = [area];
39
- } else {
40
- ringAreas.push(area);
41
- polygon.push(startIndex);
42
- }
43
- }
44
- if (ringAreas) areas.push(ringAreas);
45
- if (polygon.length) polygons.push(polygon);
46
- return {
47
- type,
48
- areas,
49
- indices: polygons,
50
- data: geom.data
51
- };
65
+ return { type, areas, indices: polygons, data: geom.data };
52
66
  }
67
+ /**
68
+ *
69
+ * @param data
70
+ * @param x0
71
+ * @param y0
72
+ * @param size
73
+ */
53
74
  export function project(data, x0, y0, size) {
54
- for (let j = 0, jl = data.length; j < jl; j += 2) {
55
- data[j] = (data[j] + x0) * 360 / size - 180;
56
- const y2 = 180 - (data[j + 1] + y0) * 360 / size;
57
- data[j + 1] = 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;
58
- }
75
+ for (let j = 0, jl = data.length; j < jl; j += 2) {
76
+ data[j] = ((data[j] + x0) * 360) / size - 180;
77
+ const y2 = 180 - ((data[j + 1] + y0) * 360) / size;
78
+ data[j + 1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;
79
+ }
59
80
  }
81
+ /**
82
+ * All code below is unchanged from the original Mapbox implemenation
83
+ *
84
+ * @param tag
85
+ * @param feature
86
+ * @param pbf
87
+ */
60
88
  export function readFeature(tag, feature, pbf) {
61
- if (feature && pbf) {
62
- if (tag === 1) feature.id = pbf.readVarint();else if (tag === 2) readTag(pbf, feature);else if (tag === 3) feature.type = pbf.readVarint();else if (tag === 4) feature._geometry = pbf.pos;
63
- }
89
+ if (feature && pbf) {
90
+ if (tag === 1)
91
+ feature.id = pbf.readVarint();
92
+ else if (tag === 2)
93
+ readTag(pbf, feature);
94
+ else if (tag === 3)
95
+ feature.type = pbf.readVarint();
96
+ else if (tag === 4)
97
+ feature._geometry = pbf.pos;
98
+ }
64
99
  }
100
+ /**
101
+ * @param pbf
102
+ * @param feature
103
+ */
65
104
  export function readTag(pbf, feature) {
66
- const end = pbf.readVarint() + pbf.pos;
67
- while (pbf.pos < end) {
68
- const key = feature._keys[pbf.readVarint()];
69
- const value = feature._values[pbf.readVarint()];
70
- feature.properties[key] = value;
71
- }
105
+ const end = pbf.readVarint() + pbf.pos;
106
+ while (pbf.pos < end) {
107
+ const key = feature._keys[pbf.readVarint()];
108
+ const value = feature._values[pbf.readVarint()];
109
+ feature.properties[key] = value;
110
+ }
72
111
  }
73
- //# sourceMappingURL=binary-util-functions.js.map
@@ -1,6 +1,6 @@
1
1
  import Protobuf from 'pbf';
2
- import { MVTMapboxGeometry } from '../lib/types';
3
- import VectorTileFeature from '../lib/mapbox-vector-tile/vector-tile-feature';
2
+ import { MVTMapboxGeometry } from "../lib/types.js";
3
+ import VectorTileFeature from "../lib/mapbox-vector-tile/vector-tile-feature.js";
4
4
  /**
5
5
  * Classifies an array of rings into polygons with outer rings and holes
6
6
  * @param rings
@@ -1 +1 @@
1
- {"version":3,"file":"mapbox-util-functions.d.ts","sourceRoot":"","sources":["../../src/helpers/mapbox-util-functions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,sCAuBrD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAQ1C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAO1F;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAQvE"}
1
+ {"version":3,"file":"mapbox-util-functions.d.ts","sourceRoot":"","sources":["../../src/helpers/mapbox-util-functions.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAC,iBAAiB,EAAC,wBAAqB;AAC/C,OAAO,iBAAiB,yDAAsD;AAE9E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,sCAuBrD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAQ1C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAO1F;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAQvE"}
@@ -1,41 +1,75 @@
1
+ /**
2
+ * Classifies an array of rings into polygons with outer rings and holes
3
+ * @param rings
4
+ * @returns polygons
5
+ */
1
6
  export function classifyRings(rings) {
2
- const len = rings.length;
3
- if (len <= 1) return [rings];
4
- const polygons = [];
5
- let polygon;
6
- let ccw;
7
- for (let i = 0; i < len; i++) {
8
- const area = signedArea(rings[i]);
9
- if (area === 0) continue;
10
- if (ccw === undefined) ccw = area < 0;
11
- if (ccw === area < 0) {
12
- if (polygon) polygons.push(polygon);
13
- polygon = [rings[i]];
14
- } else if (polygon) polygon.push(rings[i]);
15
- }
16
- if (polygon) polygons.push(polygon);
17
- return polygons;
7
+ const len = rings.length;
8
+ if (len <= 1)
9
+ return [rings];
10
+ const polygons = [];
11
+ let polygon;
12
+ let ccw;
13
+ for (let i = 0; i < len; i++) {
14
+ const area = signedArea(rings[i]);
15
+ if (area === 0)
16
+ continue; // eslint-disable-line no-continue
17
+ if (ccw === undefined)
18
+ ccw = area < 0;
19
+ if (ccw === area < 0) {
20
+ if (polygon)
21
+ polygons.push(polygon);
22
+ polygon = [rings[i]];
23
+ }
24
+ else if (polygon)
25
+ polygon.push(rings[i]);
26
+ }
27
+ if (polygon)
28
+ polygons.push(polygon);
29
+ return polygons;
18
30
  }
31
+ /**
32
+ *
33
+ * @param ring
34
+ * @returns sum
35
+ */
19
36
  export function signedArea(ring) {
20
- let sum = 0;
21
- for (let i = 0, j = ring.length - 1, p1, p2; i < ring.length; j = i++) {
22
- p1 = ring[i];
23
- p2 = ring[j];
24
- sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);
25
- }
26
- return sum;
37
+ let sum = 0;
38
+ for (let i = 0, j = ring.length - 1, p1, p2; i < ring.length; j = i++) {
39
+ p1 = ring[i];
40
+ p2 = ring[j];
41
+ sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);
42
+ }
43
+ return sum;
27
44
  }
45
+ /**
46
+ *
47
+ * @param tag
48
+ * @param feature
49
+ * @param pbf
50
+ */
28
51
  export function readFeature(tag, feature, pbf) {
29
- if (feature && pbf) {
30
- if (tag === 1) feature.id = pbf.readVarint();else if (tag === 2) readTag(pbf, feature);else if (tag === 3) feature.type = pbf.readVarint();else if (tag === 4) feature._geometry = pbf.pos;
31
- }
52
+ if (feature && pbf) {
53
+ if (tag === 1)
54
+ feature.id = pbf.readVarint();
55
+ else if (tag === 2)
56
+ readTag(pbf, feature);
57
+ else if (tag === 3)
58
+ feature.type = pbf.readVarint();
59
+ else if (tag === 4)
60
+ feature._geometry = pbf.pos;
61
+ }
32
62
  }
63
+ /**
64
+ *
65
+ * @param pbf
66
+ * @param feature
67
+ */
33
68
  export function readTag(pbf, feature) {
34
- const end = pbf.readVarint() + pbf.pos;
35
- while (pbf.pos < end) {
36
- const key = feature._keys[pbf.readVarint()];
37
- const value = feature._values[pbf.readVarint()];
38
- feature.properties[key] = value;
39
- }
69
+ const end = pbf.readVarint() + pbf.pos;
70
+ while (pbf.pos < end) {
71
+ const key = feature._keys[pbf.readVarint()];
72
+ const value = feature._values[pbf.readVarint()];
73
+ feature.properties[key] = value;
74
+ }
40
75
  }
41
- //# sourceMappingURL=mapbox-util-functions.js.map