UNPKG

protomaps-leaflet

Version:

Vector tile rendering and labeling for [Leaflet](https://github.com/Leaflet/Leaflet).

9 lines 49.3 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var bt=Object.defineProperty;var S=Math.pow;var u=(s,e)=>bt(s,"name",{value:e,configurable:!0});var O=(s,e,t)=>new Promise((r,n)=>{var i=a=>{try{l(t.next(a))}catch(c){n(c)}},o=a=>{try{l(t.throw(a))}catch(c){n(c)}},l=a=>a.done?r(a.value):Promise.resolve(a.value).then(i,o);l((t=t.apply(s,e)).next())});var _pointgeometry = require('@mapbox/point-geometry'); var _pointgeometry2 = _interopRequireDefault(_pointgeometry);var _basemaps = require('@protomaps/basemaps');var _color2k = require('color2k');var de=class de{constructor(e,t){this.str=e!=null?e:t,this.perFeature=typeof this.str=="function"&&this.str.length===2}get(e,t){return typeof this.str=="function"?this.str(e,t):this.str}};u(de,"StringAttr");var M=de,he=class he{constructor(e,t=1){this.value=e!=null?e:t,this.perFeature=typeof this.value=="function"&&this.value.length===2}get(e,t){return typeof this.value=="function"?this.value(e,t):this.value}};u(he,"NumberAttr");var v=he,be=class be{constructor(e){var t;this.labelProps=(t=e==null?void 0:e.labelProps)!=null?t:["name"],this.textTransform=e==null?void 0:e.textTransform}get(e,t){let r,n;typeof this.labelProps=="function"?n=this.labelProps(e,t):n=this.labelProps;for(let o of n)if(Object.prototype.hasOwnProperty.call(t.props,o)&&typeof t.props[o]=="string"){r=t.props[o];break}let i;return typeof this.textTransform=="function"?i=this.textTransform(e,t):i=this.textTransform,r&&i==="uppercase"?r=r.toUpperCase():r&&i==="lowercase"?r=r.toLowerCase():r&&i==="capitalize"&&(r=r.toLowerCase().split(" ").map(a=>a[0].toUpperCase()+a.slice(1)).join(" ")),r}};u(be,"TextAttr");var N=be,pe=class pe{constructor(e){var t,r;e!=null&&e.font?this.font=e.font:(this.family=(t=e==null?void 0:e.fontFamily)!=null?t:"sans-serif",this.size=(r=e==null?void 0:e.fontSize)!=null?r:12,this.weight=e==null?void 0:e.fontWeight,this.style=e==null?void 0:e.fontStyle)}get(e,t){if(this.font)return typeof this.font=="function"?this.font(e,t):this.font;let r="";this.style&&(typeof this.style=="function"?r=`${this.style(e,t)} `:r=`${this.style} `);let n="";this.weight&&(typeof this.weight=="function"?n=`${this.weight(e,t)} `:n=`${this.weight} `);let i;typeof this.size=="function"?i=this.size(e,t):i=this.size;let o;return typeof this.family=="function"?o=this.family(e,t):o=this.family,`${r}${n}${i}px ${o}`}};u(pe,"FontAttr");var E=pe,xe=class xe{constructor(e,t=[]){this.value=e!=null?e:t,this.perFeature=typeof this.value=="function"&&this.value.length===2}get(e,t){return typeof this.value=="function"?this.value(e,t):this.value}};u(xe,"ArrayAttr");var K=xe;var pt=u((s,e,t)=>{let r=[],n,i,o,l=0,a=0,c=0,m=0,d=0,f=0,b=0,x=0,g=0,w=0,k=0,p=0;if(s.length<2)return[];if(s.length===2)return c=Math.sqrt(S(s[1].x-s[0].x,2)+S(s[1].y-s[0].y,2)),[{length:c,beginIndex:0,beginDistance:0,endIndex:2,endDistance:c}];for(m=Math.sqrt(S(s[1].x-s[0].x,2)+S(s[1].y-s[0].y,2)),l=1,a=s.length-1;l<a;l++)n=s[l-1],i=s[l],o=s[l+1],f=i.x-n.x,b=i.y-n.y,x=o.x-i.x,g=o.y-i.y,d=Math.sqrt(x*x+g*g),c+=m,w=Math.acos((f*x+b*g)/(m*d)),(w>e||c-p>t)&&(r.push({length:c-p,beginDistance:p,beginIndex:k,endIndex:l+1,endDistance:c}),k=l,p=c),m=d;return l-k>0&&r.push({length:c-p+d,beginIndex:k,beginDistance:p,endIndex:l+1,endDistance:c+d}),r},"linelabel");function Ue(s,e,t,r){let n=[];for(let i of s){let o=pt(i,Math.PI/45,e);for(let l of o)if(l.length>=e+r){let a=new (0, _pointgeometry2.default)(i[l.beginIndex].x,i[l.beginIndex].y),c=i[l.endIndex-1],m=new (0, _pointgeometry2.default)((c.x-a.x)/l.length,(c.y-a.y)/l.length);for(let d=r;d<l.length-e;d+=t)n.push({start:a.add(m.mult(d)),end:a.add(m.mult(d+e))})}}return n}u(Ue,"simpleLabel");function Ge(s,e,t,r){let n=e.x-s.x,i=e.y-s.y,o=Math.sqrt(S(e.x-s.x,2)+S(e.y-s.y,2)),l=[];for(let a=0;a<t+r;a+=2*r){let c=a*1/o;l.push({x:s.x+c*n,y:s.y+c*i})}return l}u(Ge,"lineCells");function ge(s,e){if(s.length<=e)return[s];let t=e-1,r=s.lastIndexOf(" ",t),n=s.indexOf(" ",t);if(r===-1&&n===-1)return[s];let i,o;return n===-1||r>=0&&t-r<n-t?(i=s.substring(0,r),o=s.substring(r+1,s.length)):(i=s.substring(0,n),o=s.substring(n+1,s.length)),[i,...ge(o,e)]}u(ge,"linebreak");var xt="\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DB5\u4E00-\u9FEA\uF900-\uFA6D\uFA70-\uFAD9\u2000",er=new RegExp(`^[${xt}]+$`);var _vectortile = require('@mapbox/vector-tile');var _pbf2 = require('pbf'); var _pbf3 = _interopRequireDefault(_pbf2);var _pmtiles = require('pmtiles');var we=(r=>(r[r.Point=1]="Point",r[r.Line=2]="Line",r[r.Polygon=3]="Polygon",r))(we||{});function B(s){return`${s.x}:${s.y}:${s.z}`}u(B,"toIndex");var zt=u((s,e,t)=>{s.pos=e;let r=s.readVarint()+s.pos,n=1,i=0,o=0,l=0,a=1/0,c=-1/0,m=1/0,d=-1/0,f=[],b=[];for(;s.pos<r;){if(i<=0){let x=s.readVarint();n=x&7,i=x>>3}if(i--,n===1||n===2)o+=s.readSVarint()*t,l+=s.readSVarint()*t,o<a&&(a=o),o>c&&(c=o),l<m&&(m=l),l>d&&(d=l),n===1&&(b.length>0&&f.push(b),b=[]),b.push(new (0, _pointgeometry2.default)(o,l));else if(n===7)b&&b.push(b[0].clone());else throw new Error(`unknown command ${n}`)}return b&&f.push(b),{geom:f,bbox:{minX:a,minY:m,maxX:c,maxY:d}}},"loadGeomAndBbox");function rt(s,e){let t=new (0, _vectortile.VectorTile)(new (0, _pbf3.default)(s)),r=new Map;for(let[n,i]of Object.entries(t.layers)){let o=[],l=i;for(let a=0;a<l.length;a++){let c=zt(l.feature(a)._pbf,l.feature(a)._geometry,e/l.extent),m=0;for(let d of c.geom)m+=d.length;o.push({id:l.feature(a).id,geomType:l.feature(a).type,geom:c.geom,numVertices:m,bbox:c.bbox,props:l.feature(a).properties})}r.set(n,o)}return r}u(rt,"parseTile");var ze=class ze{constructor(e,t){typeof e=="string"?this.p=new (0, _pmtiles.PMTiles)(e):this.p=e,this.zoomaborts=[],this.shouldCancelZooms=t}get(e,t){return O(this,null,function*(){this.shouldCancelZooms&&(this.zoomaborts=this.zoomaborts.filter(o=>o.z!==e.z?(o.controller.abort(),!1):!0));let r=new AbortController;this.zoomaborts.push({z:e.z,controller:r});let n=r.signal,i=yield this.p.getZxy(e.z,e.x,e.y,n);return i?rt(i.data,t):new Map})}};u(ze,"PmtilesSource");var H=ze,ke=class ke{constructor(e,t){this.url=e,this.zoomaborts=[],this.shouldCancelZooms=t}get(e,t){return O(this,null,function*(){this.shouldCancelZooms&&(this.zoomaborts=this.zoomaborts.filter(o=>o.z!==e.z?(o.controller.abort(),!1):!0));let r=this.url.replace("{z}",e.z.toString()).replace("{x}",e.x.toString()).replace("{y}",e.y.toString()),n=new AbortController;this.zoomaborts.push({z:e.z,controller:n});let i=n.signal;return new Promise((o,l)=>{fetch(r,{signal:i}).then(a=>a.arrayBuffer()).then(a=>{let c=rt(a,t);o(c)}).catch(a=>{l(a)})})})}};u(ke,"ZxySource");var Q=ke,ye=6378137,Qe=85.0511287798,U=ye*Math.PI,kt=u(s=>{let e=Math.PI/180,t=Math.max(Math.min(Qe,s[0]),-Qe),r=Math.sin(t*e);return new (0, _pointgeometry2.default)(ye*s[1]*e,ye*Math.log((1+r)/(1-r))/2)},"project");function et(s){return s*s}u(et,"sqr");function G(s,e){return et(s.x-e.x)+et(s.y-e.y)}u(G,"dist2");function Pt(s,e,t){let r=G(e,t);if(r===0)return G(s,e);let n=((s.x-e.x)*(t.x-e.x)+(s.y-e.y)*(t.y-e.y))/r;return n=Math.max(0,Math.min(1,n)),G(s,new (0, _pointgeometry2.default)(e.x+n*(t.x-e.x),e.y+n*(t.y-e.y)))}u(Pt,"distToSegmentSquared");function tt(s,e){let t=!1;for(let r=0,n=e.length-1;r<e.length;n=r++){let i=e[r].x,o=e[r].y,l=e[n].x,a=e[n].y;o>s.y!=a>s.y&&s.x<(l-i)*(s.y-o)/(a-o)+i&&(t=!t)}return t}u(tt,"isInRing");function vt(s){let e=0;for(let t=0;t<s.length;t++){let r=(t+1)%s.length;e+=s[t].x*s[r].y,e-=s[r].x*s[t].y}return e<0}u(vt,"isCcw");function Lt(s,e){let t=!1;for(let r of e)if(vt(r))tt(s,r)&&(t=!1);else{if(t)return!0;tt(s,r)&&(t=!0)}return t}u(Lt,"pointInPolygon");function Tt(s,e){let t=1/0;for(let r of e){let n=Math.sqrt(G(s,r[0]));n<t&&(t=n)}return t}u(Tt,"pointMinDistToPoints");function Ct(s,e){let t=1/0;for(let r of e)for(let n=0;n<r.length-1;n++){let i=Math.sqrt(Pt(s,r[n],r[n+1]));i<t&&(t=i)}return t}u(Ct,"pointMinDistToLines");var Pe=class Pe{constructor(e,t){this.source=e,this.cache=new Map,this.inflight=new Map,this.tileSize=t}get(e){return O(this,null,function*(){let t=B(e);return new Promise((r,n)=>{let i=this.cache.get(t);if(i)i.used=performance.now(),r(i.data);else{let o=this.inflight.get(t);o?o.push({resolve:r,reject:n}):(this.inflight.set(t,[]),this.source.get(e,this.tileSize).then(l=>{this.cache.set(t,{used:performance.now(),data:l});let a=this.inflight.get(t);if(a)for(let c of a)c.resolve(l);if(this.inflight.delete(t),r(l),this.cache.size>=64){let c=1/0,m;this.cache.forEach((d,f)=>{d.used<c&&(c=d.used,m=f)}),m&&this.cache.delete(m)}}).catch(l=>{let a=this.inflight.get(t);if(a)for(let c of a)c.reject(l);this.inflight.delete(t),n(l)}))}})})}queryFeatures(e,t,r,n){let i=kt([t,e]),o=new (0, _pointgeometry2.default)((i.x+U)/(U*2),1-(i.y+U)/(U*2));o.x>1&&(o.x=o.x-Math.floor(o.x));let l=o.mult(1<<r),a=Math.floor(l.x),c=Math.floor(l.y),m=B({z:r,x:a,y:c}),d=[],f=this.cache.get(m);if(f){let b=new (0, _pointgeometry2.default)((l.x-a)*this.tileSize,(l.y-c)*this.tileSize);for(let[x,g]of f.data.entries())for(let w of g)w.geomType===1?Tt(b,w.geom)<n&&d.push({feature:w,layerName:x}):w.geomType===2?Ct(b,w.geom)<n&&d.push({feature:w,layerName:x}):Lt(b,w.geom)&&d.push({feature:w,layerName:x})}return d}};u(Pe,"TileCache");var ee=Pe;var St=(r=>(r[r.Left=1]="Left",r[r.Center=2]="Center",r[r.Right=3]="Right",r))(St||{}),At= exports.TextPlacements =(a=>(a[a.N=1]="N",a[a.Ne=2]="Ne",a[a.E=3]="E",a[a.Se=4]="Se",a[a.S=5]="S",a[a.Sw=6]="Sw",a[a.W=7]="W",a[a.Nw=8]="Nw",a))(At||{}),yr= exports.createPattern =u((s,e,t)=>{let r=document.createElement("canvas"),n=r.getContext("2d");return r.width=s,r.height=e,n!==null&&t(r,n),r},"createPattern"),Ce=class Ce{constructor(e){var t;this.pattern=e.pattern,this.fill=new M(e.fill,"black"),this.opacity=new v(e.opacity,1),this.stroke=new M(e.stroke,"black"),this.width=new v(e.width,0),this.perFeature=(t=this.fill.perFeature||this.opacity.perFeature||this.stroke.perFeature||this.width.perFeature||e.perFeature)!=null?t:!1,this.doStroke=!1}before(e,t){if(!this.perFeature){e.globalAlpha=this.opacity.get(t),e.fillStyle=this.fill.get(t),e.strokeStyle=this.stroke.get(t);let r=this.width.get(t);r>0&&(this.doStroke=!0),e.lineWidth=r}if(this.pattern){let r=e.createPattern(this.pattern,"repeat");r&&(e.fillStyle=r)}}draw(e,t,r,n){let i=!1;if(this.perFeature){e.globalAlpha=this.opacity.get(r,n),e.fillStyle=this.fill.get(r,n);let l=this.width.get(r,n);l&&(i=!0,e.strokeStyle=this.stroke.get(r,n),e.lineWidth=l)}let o=u(()=>{e.fill(),(i||this.doStroke)&&e.stroke()},"drawPath");e.beginPath();for(let l of t)for(let a=0;a<l.length;a++){let c=l[a];a===0?e.moveTo(c.x,c.y):e.lineTo(c.x,c.y)}o()}};u(Ce,"PolygonSymbolizer");var T=Ce;function wr(s,e){return t=>{let r=t-s;return r>=0&&r<e.length?e[r]:0}}u(wr,"arr");function Dt(s,e){let t=0;for(;e[t+1][0]<s;)t++;return t}u(Dt,"getStopIndex");function Ot(s,e,t){return s*(t-e)+e}u(Ot,"interpolate");function Mt(s,e,t,r){let n=r[e+1][0]-r[e][0],i=s-r[e][0];return n===0?0:t===1?i/n:(S(t,i)-1)/(S(t,n)-1)}u(Mt,"computeInterpolationFactor");function Y(s,e){return t=>{if(e.length<1)return 0;if(t<=e[0][0])return e[0][1];if(t>=e[e.length-1][0])return e[e.length-1][1];let r=Dt(t,e),n=Mt(t,r,s,e);return Ot(n,e[r][1],e[r+1][1])}}u(Y,"exp");function zr(s,e){return t=>{if(e.length<1)return 0;let r=s;for(let n=0;n<e.length;n++)t>=e[n][0]&&(r=e[n][1]);return r}}u(zr,"step");function Te(s){return Y(1,s)}u(Te,"linear");var Se=class Se{constructor(e){var t;this.color=new M(e.color,"black"),this.width=new v(e.width),this.opacity=new v(e.opacity),this.dash=e.dash?new K(e.dash):null,this.dashColor=new M(e.dashColor,"black"),this.dashWidth=new v(e.dashWidth,1),this.lineCap=new M(e.lineCap,"butt"),this.lineJoin=new M(e.lineJoin,"miter"),this.skip=!1,this.perFeature=!!((t=this.dash)!=null&&t.perFeature||this.color.perFeature||this.opacity.perFeature||this.width.perFeature||this.lineCap.perFeature||this.lineJoin.perFeature||e.perFeature)}before(e,t){this.perFeature||(e.strokeStyle=this.color.get(t),e.lineWidth=this.width.get(t),e.globalAlpha=this.opacity.get(t),e.lineCap=this.lineCap.get(t),e.lineJoin=this.lineJoin.get(t))}draw(e,t,r,n){if(this.skip)return;let i=u(()=>{this.perFeature&&(e.globalAlpha=this.opacity.get(r,n),e.lineCap=this.lineCap.get(r,n),e.lineJoin=this.lineJoin.get(r,n)),this.dash?(e.save(),this.perFeature?(e.lineWidth=this.dashWidth.get(r,n),e.strokeStyle=this.dashColor.get(r,n),e.setLineDash(this.dash.get(r,n))):e.setLineDash(this.dash.get(r)),e.stroke(),e.restore()):(e.save(),this.perFeature&&(e.lineWidth=this.width.get(r,n),e.strokeStyle=this.color.get(r,n)),e.stroke(),e.restore())},"strokePath");e.beginPath();for(let o of t)for(let l=0;l<o.length;l++){let a=o[l];l===0?e.moveTo(a.x,a.y):e.lineTo(a.x,a.y)}i()}};u(Se,"LineSymbolizer");var R=Se,Ae=class Ae{constructor(e){this.name=e.name,this.sheet=e.sheet,this.dpr=window.devicePixelRatio}place(e,t,r){let n=t[0],i=new (0, _pointgeometry2.default)(t[0][0].x,t[0][0].y),o=this.sheet.get(this.name),l=o.w/this.dpr,a=o.h/this.dpr,c={minX:i.x-l/2,minY:i.y-a/2,maxX:i.x+l/2,maxY:i.y+a/2};return[{anchor:i,bboxes:[c],draw:u(d=>{d.globalAlpha=1,d.drawImage(this.sheet.canvas,o.x,o.y,o.w,o.h,-o.w/2/this.dpr,-o.h/2/this.dpr,o.w/2,o.h/2)},"draw")}]}};u(Ae,"IconSymbolizer");var nt=Ae,De=class De{constructor(e){this.radius=new v(e.radius,3),this.fill=new M(e.fill,"black"),this.stroke=new M(e.stroke,"white"),this.width=new v(e.width,0),this.opacity=new v(e.opacity)}draw(e,t,r,n){e.globalAlpha=this.opacity.get(r,n);let i=this.radius.get(r,n),o=this.width.get(r,n);o>0&&(e.strokeStyle=this.stroke.get(r,n),e.lineWidth=o,e.beginPath(),e.arc(t[0][0].x,t[0][0].y,i+o/2,0,2*Math.PI),e.stroke()),e.fillStyle=this.fill.get(r,n),e.beginPath(),e.arc(t[0][0].x,t[0][0].y,i,0,2*Math.PI),e.fill()}place(e,t,r){let n=t[0],i=new (0, _pointgeometry2.default)(t[0][0].x,t[0][0].y),o=this.radius.get(e.zoom,r),l={minX:i.x-o,minY:i.y-o,maxX:i.x+o,maxY:i.y+o};return[{anchor:i,bboxes:[l],draw:u(c=>{this.draw(c,[[new (0, _pointgeometry2.default)(0,0)]],e.zoom,r)},"draw")}]}};u(De,"CircleSymbolizer");var te=De,Oe=class Oe{constructor(e){this.font=new E(e),this.text=new N(e),this.fill=new M(e.fill,"black"),this.background=new M(e.background,"white"),this.padding=new v(e.padding,0)}place(e,t,r){let n=this.text.get(e.zoom,r);if(!n)return;let i=this.font.get(e.zoom,r);e.scratch.font=i;let o=e.scratch.measureText(n),l=o.width,a=o.actualBoundingBoxAscent,c=o.actualBoundingBoxDescent,m=t[0],d=new (0, _pointgeometry2.default)(t[0][0].x,t[0][0].y),f=this.padding.get(e.zoom,r),b={minX:d.x-l/2-f,minY:d.y-a-f,maxX:d.x+l/2+f,maxY:d.y+c+f};return[{anchor:d,bboxes:[b],draw:u(g=>{g.globalAlpha=1,g.fillStyle=this.background.get(e.zoom,r),g.fillRect(-l/2-f,-a-f,l+2*f,a+c+2*f),g.fillStyle=this.fill.get(e.zoom,r),g.font=i,g.fillText(n,-l/2,0)},"draw")}]}};u(Oe,"ShieldSymbolizer");var it=Oe,Me=class Me{constructor(e){this.list=e}place(e,t,r){let n=this.list[0].place(e,t,r);if(!n)return;let i=n[0],o=i.anchor,l=i.bboxes[0],a=l.maxY-l.minY,c=[{draw:i.draw,translate:{x:0,y:0}}],m=[[new (0, _pointgeometry2.default)(t[0][0].x,t[0][0].y+a)]];for(let f=1;f<this.list.length;f++)n=this.list[f].place(e,m,r),n&&(i=n[0],l=at(l,i.bboxes[0]),c.push({draw:i.draw,translate:{x:0,y:a}}));return[{anchor:o,bboxes:[l],draw:u(f=>{for(let b of c)f.save(),f.translate(b.translate.x,b.translate.y),b.draw(f),f.restore()},"draw")}]}};u(Me,"FlexSymbolizer");var st=Me,at=u((s,e)=>({minX:Math.min(s.minX,e.minX),minY:Math.min(s.minY,e.minY),maxX:Math.max(s.maxX,e.maxX),maxY:Math.max(s.maxY,e.maxY)}),"mergeBbox"),Re=class Re{constructor(e){this.list=e}place(e,t,r){let n=this.list[0];if(!n)return;let i=n.place(e,t,r);if(!i)return;let o=i[0],l=o.anchor,a=o.bboxes[0],c=[o.draw];for(let d=1;d<this.list.length;d++){if(i=this.list[d].place(e,t,r),!i)return;o=i[0],a=at(a,o.bboxes[0]),c.push(o.draw)}return[{anchor:l,bboxes:[a],draw:u(d=>{for(let f of c)f(d)},"draw")}]}};u(Re,"GroupSymbolizer");var re=Re,Fe=class Fe{constructor(e){this.symbolizer=e}place(e,t,r){let n=t[0][0],i=this.symbolizer.place(e,[[new (0, _pointgeometry2.default)(0,0)]],r);if(!i||i.length===0)return;let o=i[0],l=o.bboxes[0],a=l.maxX-l.minX,c=l.maxY-l.minY,m={minX:n.x-a/2,maxX:n.x+a/2,minY:n.y-c/2,maxY:n.y+c/2};return[{anchor:n,bboxes:[m],draw:u(f=>{f.translate(-a/2,c/2-l.maxY),o.draw(f,{justify:2})},"draw")}]}};u(Fe,"CenteredSymbolizer");var ve=Fe,Xe=class Xe{constructor(e,t){this.padding=new v(e,0),this.symbolizer=t}place(e,t,r){let n=this.symbolizer.place(e,t,r);if(!n||n.length===0)return;let i=this.padding.get(e.zoom,r);for(let o of n)for(let l of o.bboxes)l.minX-=i,l.minY-=i,l.maxX+=i,l.maxY+=i;return n}};u(Xe,"Padding");var ot=Xe,Ye=class Ye{constructor(e){this.font=new E(e),this.text=new N(e),this.fill=new M(e.fill,"black"),this.stroke=new M(e.stroke,"black"),this.width=new v(e.width,0),this.lineHeight=new v(e.lineHeight,1),this.letterSpacing=new v(e.letterSpacing,0),this.maxLineCodeUnits=new v(e.maxLineChars,15),this.justify=e.justify}place(e,t,r){let n=this.text.get(e.zoom,r);if(!n)return;let i=this.font.get(e.zoom,r);e.scratch.font=i;let o=this.letterSpacing.get(e.zoom,r),l=ge(n,this.maxLineCodeUnits.get(e.zoom,r)),a="",c=0;for(let p of l)p.length>c&&(c=p.length,a=p);let m=e.scratch.measureText(a),d=m.width+o*(c-1),f=m.actualBoundingBoxAscent,b=m.actualBoundingBoxDescent,x=(f+b)*this.lineHeight.get(e.zoom,r),g=new (0, _pointgeometry2.default)(t[0][0].x,t[0][0].y),w={minX:g.x,minY:g.y-f,maxX:g.x+d,maxY:g.y+b+(l.length-1)*x};return[{anchor:g,bboxes:[w],draw:u((p,y)=>{p.globalAlpha=1,p.font=i,p.fillStyle=this.fill.get(e.zoom,r);let D=this.width.get(e.zoom,r),h=0;for(let C of l){let P=0;if(this.justify===2||y&&y.justify===2?P=(d-p.measureText(C).width)/2:(this.justify===3||y&&y.justify===3)&&(P=d-p.measureText(C).width),D)if(p.lineWidth=D*2,p.strokeStyle=this.stroke.get(e.zoom,r),o>0){let z=P;for(let A of C)p.strokeText(A,z,h),z+=p.measureText(A).width+o}else p.strokeText(C,P,h);if(o>0){let z=P;for(let A of C)p.fillText(A,z,h),z+=p.measureText(A).width+o}else p.fillText(C,P,h);h+=x}},"draw")}]}};u(Ye,"TextSymbolizer");var ne=Ye,Ie=class Ie{constructor(e){this.centered=new ve(new ne(e))}place(e,t,r){return this.centered.place(e,t,r)}};u(Ie,"CenteredTextSymbolizer");var j=Ie,Be=class Be{constructor(e,t){var r,n,i;this.symbolizer=e,this.offsetX=new v(t.offsetX,0),this.offsetY=new v(t.offsetY,0),this.justify=(r=t.justify)!=null?r:void 0,this.placements=(n=t.placements)!=null?n:[2,6,8,4,1,3,5,7],this.ddValues=(i=t.ddValues)!=null?i:()=>({})}place(e,t,r){if(r.geomType!==1)return;let n=t[0][0],i=this.symbolizer.place(e,[[new (0, _pointgeometry2.default)(0,0)]],r);if(!i||i.length===0)return;let o=i[0],l=o.bboxes[0],a=this.offsetX,c=this.offsetY,m=this.justify,d=this.placements,{offsetX:f,offsetY:b,justify:x,placements:g}=this.ddValues(e.zoom,r)||{};f&&(a=new v(f,0)),b&&(c=new v(b,0)),x&&(m=x),g&&(d=g);let w=a.get(e.zoom,r),k=c.get(e.zoom,r),p=u((P,z)=>({minX:P.x+z.x+l.minX,minY:P.y+z.y+l.minY,maxX:P.x+z.x+l.maxX,maxY:P.y+z.y+l.maxY}),"getBbox"),y=new (0, _pointgeometry2.default)(w,k),D,h=u(P=>{P.translate(y.x,y.y),o.draw(P,{justify:D})},"draw"),C=u((P,z)=>{let A=p(P,z);if(!e.index.bboxCollides(A,e.order))return[{anchor:n,bboxes:[A],draw:h}]},"placeLabelInPoint");for(let P of d){let z=this.computeXaxisOffset(w,l,P),A=this.computeYaxisOffset(k,l,P);return D=this.computeJustify(m,P),y=new (0, _pointgeometry2.default)(z,A),C(n,y)}}computeXaxisOffset(e,t,r){let n=t.maxX,i=n/2;return[1,5].includes(r)?e-i:[8,7,6].includes(r)?e-n:e}computeYaxisOffset(e,t,r){let n=Math.abs(t.minY),i=t.maxY,o=(t.minY+t.maxY)/2;return[3,7].includes(r)?e-o:[8,2,1].includes(r)?e-i:[6,4,5].includes(r)?e+n:e}computeJustify(e,t){return e||([1,5].includes(t)?2:[2,3,4].includes(t)?1:3)}};u(Be,"OffsetSymbolizer");var Le=Be,je=class je{constructor(e){this.symbolizer=new Le(new ne(e),e)}place(e,t,r){return this.symbolizer.place(e,t,r)}};u(je,"OffsetTextSymbolizer");var ie=je,Rt= exports.LineLabelPlacement =(r=>(r[r.Above=1]="Above",r[r.Center=2]="Center",r[r.Below=3]="Below",r))(Rt||{}),_e=class _e{constructor(e){var t;this.font=new E(e),this.text=new N(e),this.fill=new M(e.fill,"black"),this.stroke=new M(e.stroke,"black"),this.width=new v(e.width,0),this.offset=new v(e.offset,0),this.position=(t=e.position)!=null?t:1,this.maxLabelCodeUnits=new v(e.maxLabelChars,40),this.repeatDistance=new v(e.repeatDistance,250)}place(e,t,r){let n=this.text.get(e.zoom,r);if(!n||n.length>this.maxLabelCodeUnits.get(e.zoom,r))return;let i=20,o=r.bbox;if(o.maxY-o.minY<i&&o.maxX-o.minX<i)return;let l=this.font.get(e.zoom,r);e.scratch.font=l;let a=e.scratch.measureText(n),c=a.width,m=a.actualBoundingBoxAscent+a.actualBoundingBoxDescent,d=this.repeatDistance.get(e.zoom,r);e.overzoom>4&&(d*=1<<e.overzoom-4);let f=m*2,b=Ue(t,c,d,f);if(b.length===0)return;let x=[];for(let g of b){let w=g.end.x-g.start.x,k=g.end.y-g.start.y,y=Ge(g.start,g.end,c,f/2).map(h=>({minX:h.x-f/2,minY:h.y-f/2,maxX:h.x+f/2,maxY:h.y+f/2})),D=u(h=>{h.globalAlpha=1,h.rotate(Math.atan2(k,w)),w<0&&(h.scale(-1,-1),h.translate(-c,0));let C=0;this.position===3?C+=m:this.position===2&&(C+=m/2),h.translate(0,C-this.offset.get(e.zoom,r)),h.font=l;let P=this.width.get(e.zoom,r);P&&(h.lineWidth=P,h.strokeStyle=this.stroke.get(e.zoom,r),h.strokeText(n,0,0)),h.fillStyle=this.fill.get(e.zoom,r),h.fillText(n,0,0)},"draw");x.push({anchor:g.start,bboxes:y,draw:D,deduplicationKey:n,deduplicationDistance:d})}return x}};u(_e,"LineLabelSymbolizer");var $=_e;var F=u((s,e)=>{let t=s[e];return typeof t=="string"?t:""},"getString"),lt=u((s,e)=>{let t=s[e];return typeof t=="number"?t:0},"getNumber"),se= exports.paintRules =u(s=>[{dataLayer:"earth",symbolizer:new T({fill:s.earth})},...s.landcover?[{dataLayer:"landcover",symbolizer:new T({fill:u((e,t)=>{let r=s.landcover;if(!r||!t)return"";let n=F(t.props,"kind");return n==="grassland"?r.grassland:n==="barren"?r.barren:n==="urban_area"?r.urban_area:n==="farmland"?r.farmland:n==="glacier"?r.glacier:n==="scrub"?r.scrub:r.forest},"fill"),opacity:u((e,t)=>e===8?.5:1,"opacity")})}]:[],{dataLayer:"landuse",symbolizer:new T({fill:u((e,t)=>_color2k.mix.call(void 0, s.park_a,s.park_b,Math.min(Math.max(e/12,12),0)),"fill")}),filter:u((e,t)=>{let r=F(t.props,"kind");return["allotments","village_green","playground"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.park_b,opacity:u((e,t)=>e<8?0:e===8?.5:1,"opacity")}),filter:u((e,t)=>{let r=F(t.props,"kind");return["national_park","park","cemetery","protected_area","nature_reserve","forest","golf_course"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.hospital}),filter:u((e,t)=>t.props.kind==="hospital","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.industrial}),filter:u((e,t)=>t.props.kind==="industrial","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.school}),filter:u((e,t)=>{let r=F(t.props,"kind");return["school","university","college"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.beach}),filter:u((e,t)=>t.props.kind==="beach","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.zoo}),filter:u((e,t)=>t.props.kind==="zoo","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.zoo}),filter:u((e,t)=>{let r=F(t.props,"kind");return["military","naval_base","airfield"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:u((e,t)=>_color2k.mix.call(void 0, s.wood_a,s.wood_b,Math.min(Math.max(e/12,12),0)),"fill"),opacity:u((e,t)=>e<8?0:e===8?.5:1,"opacity")}),filter:u((e,t)=>{let r=F(t.props,"kind");return["wood","nature_reserve","forest"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:u((e,t)=>_color2k.mix.call(void 0, s.scrub_a,s.scrub_b,Math.min(Math.max(e/12,12),0)),"fill")}),filter:u((e,t)=>{let r=F(t.props,"kind");return["scrub","grassland","grass"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.scrub_b}),filter:u((e,t)=>{let r=F(t.props,"kind");return["scrub","grassland","grass"].includes(r)},"filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.glacier}),filter:u((e,t)=>t.props.kind==="glacier","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.sand,opacity:u((e,t)=>e<8?0:e===8?.5:1,"opacity")}),filter:u((e,t)=>t.props.kind==="sand","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.aerodrome}),filter:u((e,t)=>t.props.kind==="aerodrome","filter")},{dataLayer:"water",symbolizer:new T({fill:s.water}),filter:u((e,t)=>t.geomType===3,"filter")},{dataLayer:"roads",symbolizer:new R({color:s.runway,width:u((e,t)=>Y(1.6,[[11,0],[13,4],[19,30]])(e),"width")}),filter:u((e,t)=>t.props.kind_detail==="runway","filter")},{dataLayer:"roads",symbolizer:new R({color:s.runway,width:u((e,t)=>Y(1.6,[[14,0],[14.5,1],[16,6]])(e),"width")}),filter:u((e,t)=>t.props.kind_detail==="taxiway","filter")},{dataLayer:"roads",symbolizer:new R({color:s.pier,width:u((e,t)=>Y(1.6,[[13,0],[13.5,0,5],[21,16]])(e),"width")}),filter:u((e,t)=>t.props.kind==="path"&&t.props.kind_detail==="pier","filter")},{dataLayer:"water",minzoom:14,symbolizer:new R({color:s.water,width:u((e,t)=>Y(1.6,[[9,0],[9.5,1],[18,12]])(e),"width")}),filter:u((e,t)=>t.geomType===2&&t.props.kind==="river","filter")},{dataLayer:"water",minzoom:14,symbolizer:new R({color:s.water,width:.5}),filter:u((e,t)=>t.geomType===2&&t.props.kind==="stream","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.pedestrian}),filter:u((e,t)=>t.props.kind==="pedestrian","filter")},{dataLayer:"landuse",symbolizer:new T({fill:s.pier}),filter:u((e,t)=>t.props.kind==="pier","filter")},{dataLayer:"buildings",symbolizer:new T({fill:s.buildings,opacity:.5})},{dataLayer:"roads",symbolizer:new R({color:s.major,width:u((e,t)=>Y(1.6,[[14,0],[20,7]])(e),"width")}),filter:u((e,t)=>{let r=F(t.props,"kind");return["other","path"].includes(r)},"filter")},{dataLayer:"roads",symbolizer:new R({color:s.major,width:u((e,t)=>Y(1.6,[[13,0],[18,8]])(e),"width")}),filter:u((e,t)=>t.props.kind==="minor_road","filter")},{dataLayer:"roads",symbolizer:new R({color:s.major,width:u((e,t)=>Y(1.6,[[6,0],[12,1.6],[15,3],[18,13]])(e),"width")}),filter:u((e,t)=>t.props.kind==="major_road","filter")},{dataLayer:"roads",symbolizer:new R({color:s.major,width:u((e,t)=>Y(1.6,[[3,0],[6,1.1],[12,1.6],[15,5],[18,15]])(e),"width")}),filter:u((e,t)=>t.props.kind==="highway","filter")},{dataLayer:"boundaries",symbolizer:new R({color:s.boundaries,width:1}),filter:u((e,t)=>{let r=t.props.kind_detail;return typeof r=="number"&&r<=2},"filter")},{dataLayer:"roads",symbolizer:new R({dash:[.3,.75],color:s.railway,dashWidth:u((e,t)=>Y(1.6,[[4,0],[7,.15],[19,9]])(e),"dashWidth"),opacity:.5}),filter:u((e,t)=>t.props.kind==="rail","filter")},{dataLayer:"boundaries",symbolizer:new R({color:s.boundaries,width:.5}),filter:u((e,t)=>{let r=t.props.kind_detail;return typeof r=="number"&&r>2},"filter")}],"paintRules"),oe= exports.labelRules =u((s,e)=>{let t=[`name:${e}`,"name"];return[{dataLayer:"roads",symbolizer:new $({labelProps:t,fill:s.roads_label_minor,font:"400 12px sans-serif",width:2,stroke:s.roads_label_minor_halo}),minzoom:16,filter:u((r,n)=>{let i=F(n.props,"kind");return["minor_road","other","path"].includes(i)},"filter")},{dataLayer:"roads",symbolizer:new $({labelProps:t,fill:s.roads_label_major,font:"400 12px sans-serif",width:2,stroke:s.roads_label_major_halo}),minzoom:12,filter:u((r,n)=>{let i=F(n.props,"kind");return["highway","major_road"].includes(i)},"filter")},{dataLayer:"roads",symbolizer:new $({labelProps:t,fill:s.roads_label_major,font:"400 12px sans-serif",width:2,stroke:s.roads_label_major_halo}),minzoom:12,filter:u((r,n)=>{let i=F(n.props,"kind");return["highway","major_road"].includes(i)},"filter")},{dataLayer:"water",symbolizer:new j({labelProps:t,fill:s.ocean_label,lineHeight:1.5,letterSpacing:1,font:u((r,n)=>`400 ${Te([[3,10],[10,12]])(r)}px sans-serif`,"font"),textTransform:"uppercase"}),filter:u((r,n)=>{let i=F(n.props,"kind");return n.geomType===1&&["ocean","bay","strait","fjord"].includes(i)},"filter")},{dataLayer:"water",symbolizer:new j({labelProps:t,fill:s.ocean_label,lineHeight:1.5,letterSpacing:1,font:u((r,n)=>`400 ${Te([[3,10],[6,12],[10,12]])(r)}px sans-serif`,"font")}),filter:u((r,n)=>{let i=F(n.props,"kind");return n.geomType===1&&["sea","lake","water"].includes(i)},"filter")},{dataLayer:"places",symbolizer:new j({labelProps:u((r,n)=>r<6?[`ref:${e}`,"ref"]:t,"labelProps"),fill:s.state_label,stroke:s.state_label_halo,width:1,lineHeight:1.5,font:u((r,n)=>"400 12px sans-serif","font"),textTransform:"uppercase"}),filter:u((r,n)=>n.props.kind==="region","filter")},{dataLayer:"places",symbolizer:new j({labelProps:t,fill:s.country_label,lineHeight:1.5,font:u((r,n)=>(r<6,"600 12px sans-serif"),"font"),textTransform:"uppercase"}),filter:u((r,n)=>n.props.kind==="country","filter")},{dataLayer:"places",minzoom:9,symbolizer:new j({labelProps:t,fill:s.city_label,lineHeight:1.5,font:u((r,n)=>{if(!n)return"400 12px sans-serif";let i=n.props.min_zoom,o=400;i&&i<=5&&(o=600);let l=12,a=n.props.population_rank;return a&&a>9&&(l=16),`${o} ${l}px sans-serif`},"font")}),sort:u((r,n)=>{let i=lt(r,"min_zoom"),o=lt(n,"min_zoom");return i-o},"sort"),filter:u((r,n)=>n.props.kind==="locality","filter")},{dataLayer:"places",maxzoom:8,symbolizer:new re([new te({radius:2,fill:s.city_label,stroke:s.city_label_halo,width:1.5}),new ie({labelProps:t,fill:s.city_label,stroke:s.city_label_halo,width:1,offsetX:6,offsetY:4.5,font:u((r,n)=>"400 12px sans-serif","font")})]),filter:u((r,n)=>n.props.kind==="locality","filter")}]},"labelRules");var _rbush = require('rbush'); var _rbush2 = _interopRequireDefault(_rbush);var le=u((s,e,t)=>{let r=[];for(let n of s){let i=[];for(let o of n)i.push(o.clone().mult(e).add(t));r.push(i)}return r},"transformGeom"),ae= exports.wrap =u((s,e)=>{let t=1<<e;return s<0?t+s:s>=t?s%t:s},"wrap"),$e=class $e{constructor(e,t,r){this.tileCache=e,this.maxDataLevel=t,this.levelDiff=r}dataTilesForBounds(e,t){let r=S(2,e)/S(2,Math.ceil(e)),n=[],i=1,o=this.tileCache.tileSize;if(e<this.levelDiff)i=1/(1<<this.levelDiff-e)*r,n.push({dataTile:{z:0,x:0,y:0},origin:new (0, _pointgeometry2.default)(0,0),scale:i,dim:o*i});else if(e<=this.levelDiff+this.maxDataLevel){let l=1<<this.levelDiff,a=256*r,c=Math.ceil(e)-this.levelDiff,m=Math.floor(t.minX/l/a),d=Math.floor(t.minY/l/a),f=Math.floor(t.maxX/l/a),b=Math.floor(t.maxY/l/a);for(let x=m;x<=f;x++)for(let g=d;g<=b;g++){let w=new (0, _pointgeometry2.default)(x*l*a,g*l*a);n.push({dataTile:{z:c,x:ae(x,c),y:ae(g,c)},origin:w,scale:r,dim:o*r})}}else{let l=1<<this.levelDiff;i=(1<<Math.ceil(e)-this.maxDataLevel-this.levelDiff)*r;let a=Math.floor(t.minX/l/256/i),c=Math.floor(t.minY/l/256/i),m=Math.floor(t.maxX/l/256/i),d=Math.floor(t.maxY/l/256/i);for(let f=a;f<=m;f++)for(let b=c;b<=d;b++){let x=new (0, _pointgeometry2.default)(f*l*256*i,b*l*256*i);n.push({dataTile:{z:this.maxDataLevel,x:ae(f,this.maxDataLevel),y:ae(b,this.maxDataLevel)},origin:x,scale:i,dim:o*i})}}return n}dataTileForDisplayTile(e){let t,r=1,n=this.tileCache.tileSize,i;if(e.z<this.levelDiff)t={z:0,x:0,y:0},r=1/(1<<this.levelDiff-e.z),i=new (0, _pointgeometry2.default)(0,0),n=n*r;else if(e.z<=this.levelDiff+this.maxDataLevel){let o=1<<this.levelDiff;t={z:e.z-this.levelDiff,x:Math.floor(e.x/o),y:Math.floor(e.y/o)},i=new (0, _pointgeometry2.default)(t.x*o*256,t.y*o*256)}else{r=1<<e.z-this.maxDataLevel-this.levelDiff;let o=1<<this.levelDiff;t={z:this.maxDataLevel,x:Math.floor(e.x/o/r),y:Math.floor(e.y/o/r)},i=new (0, _pointgeometry2.default)(t.x*o*r*256,t.y*o*r*256),n=n*r}return{dataTile:t,scale:r,origin:i,dim:n}}getBbox(e,t){return O(this,null,function*(){let r=this.dataTilesForBounds(e,t);return(yield Promise.all(r.map(i=>this.tileCache.get(i.dataTile)))).map((i,o)=>{let l=r[o];return{data:i,z:e,dataTile:l.dataTile,scale:l.scale,dim:l.dim,origin:l.origin}})})}getDisplayTile(e){return O(this,null,function*(){let t=this.dataTileForDisplayTile(e);return{data:yield this.tileCache.get(t.dataTile),z:e.z,dataTile:t.dataTile,scale:t.scale,origin:t.origin,dim:t.dim}})}queryFeatures(e,t,r,n){let i=Math.round(r),o=Math.min(i-this.levelDiff,this.maxDataLevel),l=n/(1<<i-o);return this.tileCache.queryFeatures(e,t,o,l)}};u($e,"View");var Ee=$e,ue= exports.sourcesToViews =u(s=>{let e=u(r=>{let n=r.levelDiff===void 0?1:r.levelDiff,i=r.maxDataZoom||15,o;if(typeof r.url=="string")new URL(r.url,"http://example.com").pathname.endsWith(".pmtiles")?o=new H(r.url,!0):o=new Q(r.url,!0);else if(r.url)o=new H(r.url,!0);else throw new Error(`Invalid source ${r.url}`);let l=new ee(o,256*1<<n);return new Ee(l,i,n)},"sourceToViews"),t=new Map;if(s.sources)for(let r in s.sources)t.set(r,e(s.sources[r]));else t.set("",e(s));return t},"sourcesToViews");var Yt=u((s,e,t)=>{let n=e/256,i=Math.floor(t.minX/256),o=Math.floor(t.minY/256),l=Math.floor(t.maxX/256),a=Math.floor(t.maxY/256),c=Math.log2(n),m=[];for(let d=i;d<=l;d++){let f=d%(1<<s);for(let b=o;b<=a;b++)m.push({display:B({z:s,x:f,y:b}),key:B({z:s-c,x:Math.floor(f/n),y:Math.floor(b/n)})})}return m},"covering"),We=class We{constructor(e,t){this.tree=new _rbush2.default,this.current=new Map,this.dim=e,this.maxLabeledTiles=t}hasPrefix(e){for(let t of this.current.keys())if(t.startsWith(e))return!0;return!1}has(e){return this.current.has(e)}size(){return this.current.size}keys(){return this.current.keys()}searchBbox(e,t){let r=new Set;for(let n of this.tree.search(e))n.indexedLabel.order<=t&&r.add(n.indexedLabel);return r}searchLabel(e,t){let r=new Set;for(let n of e.bboxes)for(let i of this.tree.search(n))i.indexedLabel.order<=t&&r.add(i.indexedLabel);return r}bboxCollides(e,t){for(let r of this.tree.search(e))if(r.indexedLabel.order<=t)return!0;return!1}labelCollides(e,t){for(let r of e.bboxes)for(let n of this.tree.search(r))if(n.indexedLabel.order<=t)return!0;return!1}deduplicationCollides(e){if(!e.deduplicationKey||!e.deduplicationDistance)return!1;let t=e.deduplicationDistance,r={minX:e.anchor.x-t,minY:e.anchor.y-t,maxX:e.anchor.x+t,maxY:e.anchor.y+t};for(let n of this.tree.search(r))if(n.indexedLabel.deduplicationKey===e.deduplicationKey&&n.indexedLabel.anchor.dist(e.anchor)<t)return!0;return!1}makeEntry(e){this.current.get(e)&&console.log("consistency error 1");let t=new Set;this.current.set(e,t)}insert(e,t,r){let n={anchor:e.anchor,bboxes:e.bboxes,draw:e.draw,order:t,tileKey:r,deduplicationKey:e.deduplicationKey,deduplicationDistance:e.deduplicationDistance},i=this.current.get(r);if(!i){let a=new Set;this.current.set(r,a),i=a}i.add(n);let o=!1,l=!1;for(let a of e.bboxes)this.tree.insert({minX:a.minX,minY:a.minY,maxX:a.maxX,maxY:a.maxY,indexedLabel:n}),a.minX<0&&(o=!0),a.maxX>this.dim&&(l=!0);if(o||l){let a=o?this.dim:-this.dim,c=[];for(let f of e.bboxes)c.push({minX:f.minX+a,minY:f.minY,maxX:f.maxX+a,maxY:f.maxY});let m={anchor:new (0, _pointgeometry2.default)(e.anchor.x+a,e.anchor.y),bboxes:c,draw:e.draw,order:t,tileKey:r},d=this.current.get(r);d&&d.add(m);for(let f of c)this.tree.insert({minX:f.minX,minY:f.minY,maxX:f.maxX,maxY:f.maxY,indexedLabel:m})}}pruneOrNoop(e){let t=e.split(":"),r,n=0,i=0;for(let o of this.current.keys()){let l=o.split(":");if(l[3]===t[3]){i++;let a=Math.sqrt(S(+l[0]-+t[0],2)+S(+l[1]-+t[1],2));a>n&&(n=a,r=o)}r&&i>this.maxLabeledTiles&&this.pruneKey(r)}}pruneKey(e){let t=this.current.get(e);if(!t)return;let r=[];for(let n of this.tree.all())t.has(n.indexedLabel)&&r.push(n);for(let n of r)this.tree.remove(n);this.current.delete(e)}removeLabel(e){let t=[];for(let n of this.tree.all())e===n.indexedLabel&&t.push(n);for(let n of t)this.tree.remove(n);let r=this.current.get(e.tileKey);r&&r.delete(e)}};u(We,"Index");var Je=We,He=class He{constructor(e,t,r,n,i){this.index=new Je(256*1<<e,n),this.z=e,this.scratch=t,this.labelRules=r,this.callback=i}layout(e){let t=performance.now(),r=new Set;for(let[i,o]of e)for(let l of o){let a=`${B(l.dataTile)}:${i}`;this.index.has(a)||(this.index.makeEntry(a),r.add(a))}let n=new Set;for(let[i,o]of this.labelRules.entries()){if(o.visible===!1||o.minzoom&&this.z<o.minzoom||o.maxzoom&&this.z>o.maxzoom)continue;let l=o.dataSource||"",a=e.get(l);if(a)for(let c of a){let m=`${B(c.dataTile)}:${l}`;if(!r.has(m))continue;let d=c.data.get(o.dataLayer);if(d===void 0)continue;let f=d;o.sort&&f.sort((x,g)=>o.sort?o.sort(x.props,g.props):0);let b={index:this.index,zoom:this.z,scratch:this.scratch,order:i,overzoom:this.z-c.dataTile.z};for(let x of f){if(o.filter&&!o.filter(this.z,x))continue;let g=le(x.geom,c.scale,c.origin),w=o.symbolizer.place(b,g,x);if(w)for(let k of w){let p=!1;if(!(k.deduplicationKey&&this.index.deduplicationCollides(k))){if(this.index.labelCollides(k,1/0)){if(!this.index.labelCollides(k,i)){let y=this.index.searchLabel(k,1/0);for(let D of y){this.index.removeLabel(D);for(let h of D.bboxes)this.findInvalidatedTiles(n,c.dim,h,m)}this.index.insert(k,i,m),p=!0}}else this.index.insert(k,i,m),p=!0;if(p)for(let y of k.bboxes)(y.maxX>c.origin.x+c.dim||y.minX<c.origin.x||y.minY<c.origin.y||y.maxY>c.origin.y+c.dim)&&this.findInvalidatedTiles(n,c.dim,y,m)}}}}}for(let i of r)this.index.pruneOrNoop(i);return n.size>0&&this.callback&&this.callback(n),performance.now()-t}findInvalidatedTiles(e,t,r,n){let i=Yt(this.z,t,r);for(let o of i)o.key!==n&&this.index.hasPrefix(o.key)&&e.add(o.display)}add(e){let t=!0;for(let[n,i]of e)for(let o of i)this.index.has(`${B(o.dataTile)}:${n}`)||(t=!1);return t?0:this.layout(e)}};u(He,"Labeler");var V=He,Ve=class Ve{constructor(e,t,r,n){this.labelers=new Map,this.scratch=e,this.labelRules=t,this.maxLabeledTiles=r,this.callback=n}add(e,t){let r=this.labelers.get(e);return r||(r=new V(e,this.scratch,this.labelRules,this.maxLabeledTiles,this.callback),this.labelers.set(e,r)),r.add(t)}getIndex(e){let t=this.labelers.get(e);if(t)return t.index}};u(Ve,"Labelers");var Z=Ve;function ce(s,e,t,r,n,i,o,l,a){let c=performance.now();s.save(),s.miterLimit=2;for(let m of n){if(m.minzoom&&e<m.minzoom||m.maxzoom&&e>m.maxzoom)continue;let d=t.get(m.dataSource||"");if(d)for(let f of d){let b=f.data.get(m.dataLayer);if(b===void 0)continue;m.symbolizer.before&&m.symbolizer.before(s,f.z);let x=f.origin,g=f.dim,w=f.scale;if(s.save(),l){s.beginPath();let k=Math.max(x.x-o.x,i.minX-o.x),p=Math.max(x.y-o.y,i.minY-o.y),y=Math.min(x.x-o.x+g,i.maxX-o.x),D=Math.min(x.y-o.y+g,i.maxY-o.y);s.rect(k,p,y-k,D-p),s.clip()}s.translate(x.x-o.x,x.y-o.y);for(let k of b){let p=k.geom,y=k.bbox;y.maxX*w+x.x<i.minX||y.minX*w+x.x>i.maxX||y.minY*w+x.y>i.maxY||y.maxY*w+x.y<i.minY||m.filter&&!m.filter(f.z,k)||(w!==1&&(p=le(p,w,new (0, _pointgeometry2.default)(0,0))),m.symbolizer.draw(s,p,f.z,k))}s.restore()}}if(l&&(s.beginPath(),s.rect(i.minX-o.x,i.minY-o.y,i.maxX-i.minX,i.maxY-i.minY),s.clip()),r){let m=r.searchBbox(i,1/0);for(let d of m)if(s.save(),s.translate(d.anchor.x-o.x,d.anchor.y-o.y),d.draw(s),s.restore(),a){s.lineWidth=.5,s.strokeStyle=a,s.fillStyle=a,s.globalAlpha=1,s.fillRect(d.anchor.x-o.x-2,d.anchor.y-o.y-2,4,4);for(let f of d.bboxes)s.strokeRect(f.minX-o.x,f.minY-o.y,f.maxX-f.minX,f.maxY-f.minY)}}return s.restore(),performance.now()-c}u(ce,"paint");var q=6378137,ut=85.0511287798,X=q*Math.PI,ft=u(s=>{let e=Math.PI/180,t=Math.max(Math.min(ut,s.y),-ut),r=Math.sin(t*e);return new (0, _pointgeometry2.default)(q*s.x*e,q*Math.log((1+r)/(1-r))/2)},"project"),jt=u(s=>{let e=180/Math.PI;return{lat:(2*Math.atan(Math.exp(s.y/q))-Math.PI/2)*e,lng:s.x*e/q}},"unproject"),_t=u((s,e)=>t=>{let r=ft(t);return new (0, _pointgeometry2.default)((r.x+X)/(X*2),1-(r.y+X)/(X*2)).mult(S(2,e)*256).sub(s)},"instancedProject"),Nt=u((s,e)=>t=>{let r=new (0, _pointgeometry2.default)(t.x,t.y).add(s).div(S(2,e)*256),n=new (0, _pointgeometry2.default)(r.x*(X*2)-X,(1-r.y)*(X*2)-X);return jt(n)},"instancedUnproject"),ct= exports.getZoom =u((s,e)=>{let t=e*(360/s);return Math.log2(t/256)},"getZoom"),Ze=class Ze{constructor(e){if(e.flavor){let t=_basemaps.namedFlavor.call(void 0, e.flavor);this.paintRules=se(t),this.labelRules=oe(t,e.lang||"en"),this.backgroundColor=t.background}else this.paintRules=e.paintRules||[],this.labelRules=e.labelRules||[],this.backgroundColor=e.backgroundColor;this.views=ue(e),this.debug=e.debug||""}drawContext(e,t,r,n,i){return O(this,null,function*(){let o=ft(n),a=new (0, _pointgeometry2.default)((o.x+X)/(X*2),1-(o.y+X)/(X*2)).clone().mult(S(2,i)*256).sub(new (0, _pointgeometry2.default)(t/2,r/2)),c={minX:a.x,minY:a.y,maxX:a.x+t,maxY:a.y+r},m=[];for(let[p,y]of this.views){let D=y.getBbox(i,c);m.push({key:p,promise:D})}let d=yield Promise.all(m.map(p=>p.promise.then(y=>({status:"fulfilled",value:y,key:p.key}),y=>({status:"rejected",value:[],reason:y,key:p.key})))),f=new Map;for(let p of d)p.status==="fulfilled"&&f.set(p.key,p.value);let b=performance.now(),x=new V(i,e,this.labelRules,16,void 0),g=x.add(f);this.backgroundColor&&(e.save(),e.fillStyle=this.backgroundColor,e.fillRect(0,0,t,r),e.restore());let w=this.paintRules,k=ce(e,i,f,x.index,w,c,a,!0,this.debug);if(this.debug){e.save(),e.translate(-a.x,-a.y),e.strokeStyle=this.debug,e.fillStyle=this.debug,e.font="12px sans-serif";let p=0;for(let[y,D]of f){for(let h of D){e.strokeRect(h.origin.x,h.origin.y,h.dim,h.dim);let C=h.dataTile;e.fillText(`${y+(y?" ":"")+C.z} ${C.x} ${C.y}`,h.origin.x+4,h.origin.y+14*(1+p))}p++}e.restore()}return{elapsed:performance.now()-b,project:_t(a,i),unproject:Nt(a,i)}})}drawCanvas(i,o,l){return O(this,arguments,function*(e,t,r,n={}){let a=window.devicePixelRatio,c=e.clientWidth,m=e.clientHeight;e.width===c*a&&e.height===m*a||(e.width=c*a,e.height=m*a),n.lang&&(e.lang=n.lang);let d=e.getContext("2d");if(!d){console.error("Failed to initialize canvas2d context.");return}return d.setTransform(a,0,0,a,0,0),this.drawContext(d,c,m,t,r)})}drawContextBounds(e,t,r,n,i){return O(this,null,function*(){let o=r.x-t.x,l=new (0, _pointgeometry2.default)((t.x+r.x)/2,(t.y+r.y)/2);return this.drawContext(e,n,i,l,ct(o,n))})}drawCanvasBounds(o,l,a,c){return O(this,arguments,function*(e,t,r,n,i={}){let m=r.x-t.x,d=new (0, _pointgeometry2.default)((t.x+r.x)/2,(t.y+r.y)/2);return this.drawCanvas(e,d,ct(m,n),i)})}};u(Ze,"Static");var mt=Ze;var Jt=u(s=>new Promise(e=>{setTimeout(()=>{e()},s)}),"timer"),Wt=u(s=>s.then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e})),"reflect"),Pn= exports.leafletLayer =u((s={})=>{let t=class t extends L.GridLayer{constructor(n={}){var o;if(n.noWrap&&!n.bounds&&(n.bounds=[[-90,-180],[90,180]]),n.attribution==null&&(n.attribution='<a href="https://protomaps.com">Protomaps</a> \xA9 <a href="https://openstreetmap.org/copyright">OpenStreetMap</a>'),super(n),n.flavor){let l=_basemaps.namedFlavor.call(void 0, n.flavor);this.paintRules=se(l),this.labelRules=oe(l,n.lang||"en"),this.backgroundColor=l.background}else this.paintRules=n.paintRules||[],this.labelRules=n.labelRules||[],this.backgroundColor=n.backgroundColor;this.devicePixelRatio=(o=n.devicePixelRatio)!=null?o:window.devicePixelRatio,this.lastRequestedZ=void 0,this.tasks=n.tasks||[],this.views=ue(n),this.debug=n.debug;let i=document.createElement("canvas").getContext("2d");this.scratch=i,this.onTilesInvalidated=l=>{for(let a of l)this.rerenderTile(a)},this.labelers=new Z(this.scratch,this.labelRules,16,this.onTilesInvalidated),this.tileSize=256*this.devicePixelRatio,this.tileDelay=n.tileDelay||3,this.lang=n.lang}renderTile(n,i,o,l=()=>{}){return O(this,null,function*(){this.lastRequestedZ=n.z;let a=[];for(let[z,A]of this.views){let me=A.getDisplayTile(n);a.push({key:z,promise:me})}let c=yield Promise.all(a.map(z=>z.promise.then(A=>({status:"fulfilled",value:A,key:z.key}),A=>({status:"rejected",reason:A,key:z.key})))),m=new Map;for(let z of c)z.status==="fulfilled"?m.set(z.key,[z.value]):z.reason.name==="AbortError"||console.error(z.reason);if(i.key!==o||this.lastRequestedZ!==n.z||(yield Promise.all(this.tasks.map(Wt)),i.key!==o)||this.lastRequestedZ!==n.z)return;let d=this.labelers.add(n.z,m);if(i.key!==o||this.lastRequestedZ!==n.z)return;let f=this.labelers.getIndex(n.z);if(!this._map)return;let b=this._map.getCenter().wrap(),x=this._getTiledPixelBounds(b),w=this._pxBoundsToTileRange(x).getCenter(),k=n.distanceTo(w)*this.tileDelay;if(yield Jt(k),i.key!==o||this.lastRequestedZ!==n.z)return;let p=16,y={minX:256*n.x-p,minY:256*n.y-p,maxX:256*(n.x+1)+p,maxY:256*(n.y+1)+p},D=new (0, _pointgeometry2.default)(256*n.x,256*n.y);i.width=this.tileSize,i.height=this.tileSize;let h=i.getContext("2d");if(!h){console.error("Failed to get Canvas context");return}h.setTransform(this.tileSize/256,0,0,this.tileSize/256,0,0),h.clearRect(0,0,256,256),this.backgroundColor&&(h.save(),h.fillStyle=this.backgroundColor,h.fillRect(0,0,256,256),h.restore());let C=0,P=this.paintRules;if(C=ce(h,n.z,m,this.xray?null:f,P,y,D,!1,this.debug),this.debug){h.save(),h.fillStyle=this.debug,h.font="600 12px sans-serif",h.fillText(`${n.z} ${n.x} ${n.y}`,4,14),h.font="12px sans-serif";let z=28;for(let[A,me]of m){let fe=me[0].dataTile;h.fillText(`${A+(A?" ":"")+fe.z} ${fe.x} ${fe.y}`,4,z),z+=14}h.font="600 10px sans-serif",C>8&&(h.fillText(`${C.toFixed()} ms paint`,4,z),z+=14),d>8&&h.fillText(`${d.toFixed()} ms layout`,4,z),h.strokeStyle=this.debug,h.lineWidth=.5,h.beginPath(),h.moveTo(0,0),h.lineTo(0,256),h.stroke(),h.lineWidth=.5,h.beginPath(),h.moveTo(0,0),h.lineTo(256,0),h.stroke(),h.restore()}l()})}rerenderTile(n){for(let i in this._tiles){let o=this._wrapCoords(this._keyToTileCoords(i));n===this._tileCoordsToKey(o)&&this.renderTile(o,this._tiles[i].el,n)}}queryTileFeaturesDebug(n,i,o=16){let l=new Map;for(let[a,c]of this.views)l.set(a,c.queryFeatures(n,i,this._map.getZoom(),o));return l}clearLayout(){this.labelers=new Z(this.scratch,this.labelRules,16,this.onTilesInvalidated)}rerenderTiles(){for(let n in this._tiles){let i=this._wrapCoords(this._keyToTileCoords(n)),o=this._tileCoordsToKey(i);this.renderTile(i,this._tiles[n].el,o)}}createTile(n,i){let o=L.DomUtil.create("canvas","leaflet-tile");o.lang=this.lang;let l=this._tileCoordsToKey(n);return o.key=l,this.renderTile(n,o,l,()=>{i(void 0,o)}),o}_removeTile(n){let i=this._tiles[n];i&&(i.el.removed=!0,i.el.key=void 0,L.DomUtil.removeClass(i.el,"leaflet-tile-loaded"),i.el.width=i.el.height=0,L.DomUtil.remove(i.el),delete this._tiles[n],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(n)}))}};u(t,"LeafletLayer");let e=t;return new e(s)},"leafletLayer");var _potpack = require('potpack'); var _potpack2 = _interopRequireDefault(_potpack);var Cn=u((s,e,t)=>{let r=new FontFace(s,`url(${e})`,{weight:t});return document.fonts.add(r),r.load()},"Font"),dt=u(s=>O(void 0,null,function*(){return new Promise((e,t)=>{let r=new Image;r.onload=()=>e(r),r.onerror=()=>t("Invalid SVG"),r.src=s})}),"mkimg"),Vt=` <svg width="20px" height="20px" viewBox="0 0 50 50" version="1.1" xmlns="http://www.w3.org/2000/svg"> <rect width="50" height="50" fill="#cccccc"/> <g transform="translate(5,5)"> <path fill="none" stroke="#666666" stroke-width="7" d="m11,12a8.5,8 0 1,1 17,0q0,4-4,6t-4.5,4.5-.4,4v.2m0,3v7"/> </g> </svg> `,qe=class qe{constructor(e){this.src=e,this.canvas=document.createElement("canvas"),this.mapping=new Map,this.missingBox={x:0,y:0,w:0,h:0}}load(){return O(this,null,function*(){let e=this.src,t=window.devicePixelRatio;e.endsWith(".html")&&(e=yield(yield fetch(e)).text());let r=new window.DOMParser().parseFromString(e,"text/html"),n=Array.from(r.body.children),i=yield dt(`data:image/svg+xml;base64,${btoa(Vt)}`),o=[{w:i.width*t,h:i.height*t,img:i,id:""}],l=new XMLSerializer;for(let m of n){let f=`data:image/svg+xml;base64,${btoa(l.serializeToString(m))}`,b=yield dt(f);o.push({w:b.width*t,h:b.height*t,img:b,id:m.id})}let a=_potpack2.default.call(void 0, o);this.canvas.width=a.w,this.canvas.height=a.h;let c=this.canvas.getContext("2d");if(c)for(let m of o)m.x!==void 0&&m.y!==void 0&&(c.drawImage(m.img,m.x,m.y,m.w,m.h),m.id?this.mapping.set(m.id,{x:m.x,y:m.y,w:m.w,h:m.h}):this.missingBox={x:m.x,y:m.y,w:m.w,h:m.h});return this})}get(e){let t=this.mapping.get(e);return t||(t=this.missingBox),t}};u(qe,"Sheet");var ht=qe;exports.CenteredSymbolizer = ve; exports.CenteredTextSymbolizer = j; exports.CircleSymbolizer = te; exports.FlexSymbolizer = st; exports.Font = Cn; exports.GeomType = we; exports.GroupSymbolizer = re; exports.IconSymbolizer = nt; exports.Index = Je; exports.Justify = St; exports.Labeler = V; exports.Labelers = Z; exports.LineLabelPlacement = Rt; exports.LineLabelSymbolizer = $; exports.LineSymbolizer = R; exports.OffsetSymbolizer = Le; exports.OffsetTextSymbolizer = ie; exports.Padding = ot; exports.PmtilesSource = H; exports.PolygonSymbolizer = T; exports.Sheet = ht; exports.ShieldSymbolizer = it; exports.Static = mt; exports.TextPlacements = At; exports.TextSymbolizer = ne; exports.TileCache = ee; exports.View = Ee; exports.ZxySource = Q; exports.arr = wr; exports.covering = Yt; exports.createPattern = yr; exports.exp = Y; exports.getZoom = ct; exports.isCcw = vt; exports.isInRing = tt; exports.labelRules = oe; exports.leafletLayer = Pn; exports.linear = Te; exports.paint = ce; exports.paintRules = se; exports.pointInPolygon = Lt; exports.pointMinDistToLines = Ct; exports.pointMinDistToPoints = Tt; exports.sourcesToViews = ue; exports.step = zr; exports.toIndex = B; exports.transformGeom = le; exports.wrap = ae; //# sourceMappingURL=index.cjs.map