mobility-toolbox-js 3.0.0-beta.4 → 3.0.0-beta.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.
- package/mbt.js +111 -111
- package/mbt.js.map +3 -3
- package/mbt.min.js +1 -1
- package/mbt.min.js.map +2 -2
- package/ol/mixins/PropertiesLayerMixin.js +1 -1
- package/package.json +1 -1
package/mbt.min.js
CHANGED
|
@@ -582,7 +582,7 @@ uniform ${D} ${z} u_${G};
|
|
|
582
582
|
`||T===S){o=Math.max(o,g),l.push(g),g=0,v+=w;continue}let F=e[T+1]||h.font,j=sp(F,k);r.push(j),g+=j;let J=h2(F);a.push(J),w=Math.max(w,J)}return{width:o,height:v,widths:r,heights:a,lineWidths:l}}function yv(h,e,r,a,l,o,g,v,w,T,S){h.save(),r!==1&&(h.globalAlpha===void 0?h.globalAlpha=k=>k.globalAlpha*=r:h.globalAlpha*=r),e&&h.transform.apply(h,e),a.contextInstructions?(h.translate(w,T),h.scale(S[0],S[1]),u2(a,h)):S[0]<0||S[1]<0?(h.translate(w,T),h.scale(S[0],S[1]),h.drawImage(a,l,o,g,v,0,0,g,v)):h.drawImage(a,l,o,g,v,w,T,g*S[0],v*S[1]),h.restore()}function u2(h,e){let r=h.contextInstructions;for(let a=0,l=r.length;a<l;a+=2)Array.isArray(r[a+1])?e[r[a]].apply(e,r[a+1]):e[r[a]]=r[a+1]}var Ig=class h extends np{constructor(e){super({opacity:1,rotateWithView:e.rotateWithView!==void 0?e.rotateWithView:!1,rotation:e.rotation!==void 0?e.rotation:0,scale:e.scale!==void 0?e.scale:1,displacement:e.displacement!==void 0?e.displacement:[0,0],declutterMode:e.declutterMode}),this.canvases_,this.hitDetectionCanvas_=null,this.fill_=e.fill!==void 0?e.fill:null,this.origin_=[0,0],this.points_=e.points,this.radius_=e.radius,this.radius2_=e.radius2,this.angle_=e.angle!==void 0?e.angle:0,this.stroke_=e.stroke!==void 0?e.stroke:null,this.size_,this.renderOptions_,this.imageState_=this.fill_&&this.fill_.loading()?Tt.LOADING:Tt.LOADED,this.imageState_===Tt.LOADING&&this.ready().then(()=>this.imageState_=Tt.LOADED),this.render()}clone(){let e=this.getScale(),r=new h({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return r.setOpacity(this.getOpacity()),r}getAnchor(){let e=this.size_,r=this.getDisplacement(),a=this.getScaleArray();return[e[0]/2-r[0]/a[0],e[1]/2+r[1]/a[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(e){this.fill_=e,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(e){let r=this.canvases_[e];if(!r){let a=this.renderOptions_,l=Wi(a.size*e,a.size*e);this.draw_(a,l,e),r=l.canvas,this.canvases_[e]=r}return r}getPixelRatio(e){return e}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius_}getRadius2(){return this.radius2_}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(e){this.stroke_=e,this.render()}listenImageChange(e){}load(){}unlistenImageChange(e){}calculateLineJoinSize_(e,r,a){if(r===0||this.points_===1/0||e!=="bevel"&&e!=="miter")return r;let l=this.radius_,o=this.radius2_===void 0?l:this.radius2_;if(l<o){let ve=l;l=o,o=ve}let g=this.radius2_===void 0?this.points_:this.points_*2,v=2*Math.PI/g,w=o*Math.sin(v),T=Math.sqrt(o*o-w*w),S=l-T,k=Math.sqrt(w*w+S*S),F=k/w;if(e==="miter"&&F<=a)return F*r;let j=r/2/F,J=r/2*(S/k),q=Math.sqrt((l+j)*(l+j)+J*J)-l;if(this.radius2_===void 0||e==="bevel")return q*2;let Z=l*Math.sin(v),ne=Math.sqrt(l*l-Z*Z),me=o-ne,fe=Math.sqrt(Z*Z+me*me)/Z;if(fe<=a){let ve=fe*r/2-o-l;return 2*Math.max(q,ve)}return q*2}createRenderOptions(){let e=Vs,r=Gs,a=0,l=null,o=0,g,v=0;this.stroke_&&(g=Mn(this.stroke_.getColor()??So),v=this.stroke_.getWidth()??Io,l=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset()??0,r=this.stroke_.getLineJoin()??Gs,e=this.stroke_.getLineCap()??Vs,a=this.stroke_.getMiterLimit()??wo);let w=this.calculateLineJoinSize_(r,v,a),T=Math.max(this.radius_,this.radius2_||0),S=Math.ceil(2*T+w);return{strokeStyle:g,strokeWidth:v,size:S,lineCap:e,lineDash:l,lineDashOffset:o,lineJoin:r,miterLimit:a}}render(){this.renderOptions_=this.createRenderOptions();let e=this.renderOptions_.size;this.canvases_={},this.hitDetectionCanvas_=null,this.size_=[e,e]}draw_(e,r,a){if(r.scale(a,a),r.translate(e.size/2,e.size/2),this.createPath_(r),this.fill_){let l=this.fill_.getColor();l===null&&(l=sr),r.fillStyle=Mn(l),r.fill()}e.strokeStyle&&(r.strokeStyle=e.strokeStyle,r.lineWidth=e.strokeWidth,e.lineDash&&(r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset),r.lineCap=e.lineCap,r.lineJoin=e.lineJoin,r.miterLimit=e.miterLimit,r.stroke())}createHitDetectionCanvas_(e){let r;if(this.fill_){let a=this.fill_.getColor(),l=0;typeof a=="string"&&(a=bo(a)),a===null?l=1:Array.isArray(a)&&(l=a.length===4?a[3]:1),l===0&&(r=Wi(e.size,e.size),this.drawHitDetectionCanvas_(e,r))}return r?r.canvas:this.getImage(1)}createPath_(e){let r=this.points_,a=this.radius_;if(r===1/0)e.arc(0,0,a,0,2*Math.PI);else{let l=this.radius2_===void 0?a:this.radius2_;this.radius2_!==void 0&&(r*=2);let o=this.angle_-Math.PI/2,g=2*Math.PI/r;for(let v=0;v<r;v++){let w=o+v*g,T=v%2===0?a:l;e.lineTo(T*Math.cos(w),T*Math.sin(w))}e.closePath()}}drawHitDetectionCanvas_(e,r){r.translate(e.size/2,e.size/2),this.createPath_(r),r.fillStyle=sr,r.fill(),e.strokeStyle&&(r.strokeStyle=e.strokeStyle,r.lineWidth=e.strokeWidth,e.lineDash&&(r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset),r.lineJoin=e.lineJoin,r.miterLimit=e.miterLimit,r.stroke())}ready(){return this.fill_?this.fill_.ready():Promise.resolve()}},ap=Ig;var Eg=class h extends ap{constructor(e){e=e||{radius:5},super({points:1/0,fill:e.fill,radius:e.radius,stroke:e.stroke,scale:e.scale!==void 0?e.scale:1,rotation:e.rotation!==void 0?e.rotation:0,rotateWithView:e.rotateWithView!==void 0?e.rotateWithView:!1,displacement:e.displacement!==void 0?e.displacement:[0,0],declutterMode:e.declutterMode})}clone(){let e=this.getScale(),r=new h({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return r.setOpacity(this.getOpacity()),r}setRadius(e){this.radius_=e,this.render()}},Rn=Eg;var la=class h{constructor(e){e=e||{},this.geometry_=null,this.geometryFunction_=_v,e.geometry!==void 0&&this.setGeometry(e.geometry),this.fill_=e.fill!==void 0?e.fill:null,this.image_=e.image!==void 0?e.image:null,this.renderer_=e.renderer!==void 0?e.renderer:null,this.hitDetectionRenderer_=e.hitDetectionRenderer!==void 0?e.hitDetectionRenderer:null,this.stroke_=e.stroke!==void 0?e.stroke:null,this.text_=e.text!==void 0?e.text:null,this.zIndex_=e.zIndex}clone(){let e=this.getGeometry();return e&&typeof e=="object"&&(e=e.clone()),new h({geometry:e??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(e){this.renderer_=e}setHitDetectionRenderer(e){this.hitDetectionRenderer_=e}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(e){this.fill_=e}getImage(){return this.image_}setImage(e){this.image_=e}getStroke(){return this.stroke_}setStroke(e){this.stroke_=e}getText(){return this.text_}setText(e){this.text_=e}getZIndex(){return this.zIndex_}setGeometry(e){typeof e=="function"?this.geometryFunction_=e:typeof e=="string"?this.geometryFunction_=function(r){return r.get(e)}:e?e!==void 0&&(this.geometryFunction_=function(){return e}):this.geometryFunction_=_v,this.geometry_=e}setZIndex(e){this.zIndex_=e}};function xv(h){let e;if(typeof h=="function")e=h;else{let r;Array.isArray(h)?r=h:(si(typeof h.getZIndex=="function","Expected an `Style` or an array of `Style`"),r=[h]),e=function(){return r}}return e}var Tg=null;function vv(h,e){if(!Tg){let r=new Fr({color:"rgba(255,255,255,0.4)"}),a=new nr({color:"#3399CC",width:1.25});Tg=[new la({image:new Rn({fill:r,stroke:a,radius:5}),fill:r,stroke:a})]}return Tg}function bv(){let h={},e=[255,255,255,1],r=[0,153,255,1],a=3;return h.Polygon=[new la({fill:new Fr({color:[255,255,255,.5]})})],h.MultiPolygon=h.Polygon,h.LineString=[new la({stroke:new nr({color:e,width:a+2})}),new la({stroke:new nr({color:r,width:a})})],h.MultiLineString=h.LineString,h.Circle=h.Polygon.concat(h.LineString),h.Point=[new la({image:new Rn({radius:a*2,fill:new Fr({color:r}),stroke:new nr({color:e,width:a/2})}),zIndex:1/0})],h.MultiPoint=h.Point,h.GeometryCollection=h.Polygon.concat(h.LineString,h.Point),h}function _v(h){return h.getGeometry()}var zr=la;var d2="#333",Mg=class h{constructor(e){e=e||{},this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.scaleArray_=sa(e.scale!==void 0?e.scale:1),this.text_=e.text,this.textAlign_=e.textAlign,this.justify_=e.justify,this.repeat_=e.repeat,this.textBaseline_=e.textBaseline,this.fill_=e.fill!==void 0?e.fill:new Fr({color:d2}),this.maxAngle_=e.maxAngle!==void 0?e.maxAngle:Math.PI/4,this.placement_=e.placement!==void 0?e.placement:"point",this.overflow_=!!e.overflow,this.stroke_=e.stroke!==void 0?e.stroke:null,this.offsetX_=e.offsetX!==void 0?e.offsetX:0,this.offsetY_=e.offsetY!==void 0?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=e.padding===void 0?null:e.padding,this.declutterMode_=e.declutterMode}clone(){let e=this.getScale();return new h({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0,declutterMode:this.getDeclutterMode()})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}getDeclutterMode(){return this.declutterMode_}setOverflow(e){this.overflow_=e}setFont(e){this.font_=e}setMaxAngle(e){this.maxAngle_=e}setOffsetX(e){this.offsetX_=e}setOffsetY(e){this.offsetY_=e}setPlacement(e){this.placement_=e}setRepeat(e){this.repeat_=e}setRotateWithView(e){this.rotateWithView_=e}setFill(e){this.fill_=e}setRotation(e){this.rotation_=e}setScale(e){this.scale_=e,this.scaleArray_=sa(e!==void 0?e:1)}setStroke(e){this.stroke_=e}setText(e){this.text_=e}setTextAlign(e){this.textAlign_=e}setJustify(e){this.justify_=e}setTextBaseline(e){this.textBaseline_=e}setBackgroundFill(e){this.backgroundFill_=e}setBackgroundStroke(e){this.backgroundStroke_=e}setPadding(e){this.padding_=e}},wv=Mg;var Fv=fo(Rg(),1);function Sv(h,e,r,a){return r!==void 0&&a!==void 0?[r/h,a/e]:r!==void 0?r/h:a!==void 0?a/e:1}var kg=class h extends np{constructor(e){e=e||{};let r=e.opacity!==void 0?e.opacity:1,a=e.rotation!==void 0?e.rotation:0,l=e.scale!==void 0?e.scale:1,o=e.rotateWithView!==void 0?e.rotateWithView:!1;super({opacity:r,rotation:a,scale:l,displacement:e.displacement!==void 0?e.displacement:[0,0],rotateWithView:o,declutterMode:e.declutterMode}),this.anchor_=e.anchor!==void 0?e.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=e.anchorOrigin!==void 0?e.anchorOrigin:"top-left",this.anchorXUnits_=e.anchorXUnits!==void 0?e.anchorXUnits:"fraction",this.anchorYUnits_=e.anchorYUnits!==void 0?e.anchorYUnits:"fraction",this.crossOrigin_=e.crossOrigin!==void 0?e.crossOrigin:null;let g=e.img!==void 0?e.img:null,v=e.src;si(!(v!==void 0&&g),"`image` and `src` cannot be provided at the same time"),(v===void 0||v.length===0)&&g&&(v=g.src||Gt(g)),si(v!==void 0&&v.length>0,"A defined and non-empty `src` or `image` must be provided"),si(!((e.width!==void 0||e.height!==void 0)&&e.scale!==void 0),"`width` or `height` cannot be provided together with `scale`");let w;if(e.src!==void 0?w=Tt.IDLE:g!==void 0&&(g instanceof HTMLImageElement?g.complete?w=g.src?Tt.LOADED:Tt.IDLE:w=Tt.LOADING:w=Tt.LOADED),this.color_=e.color!==void 0?bo(e.color):null,this.iconImage_=cc(g,v,this.crossOrigin_,w,this.color_),this.offset_=e.offset!==void 0?e.offset:[0,0],this.offsetOrigin_=e.offsetOrigin!==void 0?e.offsetOrigin:"top-left",this.origin_=null,this.size_=e.size!==void 0?e.size:null,e.width!==void 0||e.height!==void 0){let T,S;if(e.size)[T,S]=e.size;else{let k=this.getImage(1);if(k.width&&k.height)T=k.width,S=k.height;else if(k instanceof HTMLImageElement){this.initialOptions_=e;let F=()=>{if(this.unlistenImageChange(F),!this.initialOptions_)return;let j=this.iconImage_.getSize();this.setScale(Sv(j[0],j[1],e.width,e.height))};this.listenImageChange(F);return}}T!==void 0&&this.setScale(Sv(T,S,e.width,e.height))}}clone(){let e,r,a;return this.initialOptions_?(r=this.initialOptions_.width,a=this.initialOptions_.height):(e=this.getScale(),e=Array.isArray(e)?e.slice():e),new h({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:e,width:r,height:a,size:this.size_!==null?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let e=this.normalizedAnchor_;if(!e){e=this.anchor_;let l=this.getSize();if(this.anchorXUnits_=="fraction"||this.anchorYUnits_=="fraction"){if(!l)return null;e=this.anchor_.slice(),this.anchorXUnits_=="fraction"&&(e[0]*=l[0]),this.anchorYUnits_=="fraction"&&(e[1]*=l[1])}if(this.anchorOrigin_!="top-left"){if(!l)return null;e===this.anchor_&&(e=this.anchor_.slice()),(this.anchorOrigin_=="top-right"||this.anchorOrigin_=="bottom-right")&&(e[0]=-e[0]+l[0]),(this.anchorOrigin_=="bottom-left"||this.anchorOrigin_=="bottom-right")&&(e[1]=-e[1]+l[1])}this.normalizedAnchor_=e}let r=this.getDisplacement(),a=this.getScaleArray();return[e[0]-r[0]/a[0],e[1]+r[1]/a[1]]}setAnchor(e){this.anchor_=e,this.normalizedAnchor_=null}getColor(){return this.color_}getImage(e){return this.iconImage_.getImage(e)}getPixelRatio(e){return this.iconImage_.getPixelRatio(e)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let e=this.offset_;if(this.offsetOrigin_!="top-left"){let r=this.getSize(),a=this.iconImage_.getSize();if(!r||!a)return null;e=e.slice(),(this.offsetOrigin_=="top-right"||this.offsetOrigin_=="bottom-right")&&(e[0]=a[0]-r[0]-e[0]),(this.offsetOrigin_=="bottom-left"||this.offsetOrigin_=="bottom-right")&&(e[1]=a[1]-r[1]-e[1])}return this.origin_=e,this.origin_}getSrc(){return this.iconImage_.getSrc()}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){let e=this.getScaleArray();if(this.size_)return this.size_[0]*e[0];if(this.iconImage_.getImageState()==Tt.LOADED)return this.iconImage_.getSize()[0]*e[0]}getHeight(){let e=this.getScaleArray();if(this.size_)return this.size_[1]*e[1];if(this.iconImage_.getImageState()==Tt.LOADED)return this.iconImage_.getSize()[1]*e[1]}setScale(e){delete this.initialOptions_,super.setScale(e)}listenImageChange(e){this.iconImage_.addEventListener(li.CHANGE,e)}load(){this.iconImage_.load()}unlistenImageChange(e){this.iconImage_.removeEventListener(li.CHANGE,e)}ready(){return this.iconImage_.ready()}},Qh=kg;var uc=0,dc=0,Ri=1<<uc++,ft=1<<uc++,ns=1<<uc++,xr=1<<uc++,js=1<<uc++,Kr=Math.pow(2,uc)-1,Iv={[Ri]:"boolean",[ft]:"number",[ns]:"string",[xr]:"color",[js]:"number[]"},p2=Object.keys(Iv).map(Number).sort(Ds);function Or(h){let e=[];for(let r of p2)f2(h,r)&&e.push(Iv[r]);return e.length===0?"untyped":e.length<3?e.join(" or "):e.slice(0,-1).join(", ")+", or "+e[e.length-1]}function f2(h,e){return(h&e)===e}function Ss(h,e){return!!(h&e)}function lp(h,e){return h===e}var ws=class{constructor(e,r){this.type=e,this.value=r}},Lg=class{constructor(e,r,...a){this.type=e,this.operator=r,this.args=a}};function Dg(){return{variables:new Set,properties:new Set,featureId:!1,geometryType:!1,style:{}}}function m2(h){switch(h){case"string":return ns;case"color":return xr;case"number":return ft;case"boolean":return Ri;case"number[]":return js;default:throw new Error(`Unrecognized type hint: ${h}`)}}function Yt(h,e,r){switch(typeof h){case"boolean":return new ws(Ri,h);case"number":return new ws(ft,h);case"string":{let l=ns;return uv(h)&&(l|=xr),lp(l&r,dc)||(l&=r),new ws(l,h)}default:}if(!Array.isArray(h))throw new Error("Expression must be an array or a primitive value");if(h.length===0)throw new Error("Empty expression");if(typeof h[0]=="string")return T2(h,e,r);for(let l of h)if(typeof l!="number")throw new Error("Expected an array of numbers");let a=js;return(h.length===3||h.length===4)&&(a|=xr),r&&(a&=r),new ws(a,h)}var Fe={Get:"get",Var:"var",Concat:"concat",GeometryType:"geometry-type",Any:"any",All:"all",Not:"!",Resolution:"resolution",Zoom:"zoom",Time:"time",Equal:"==",NotEqual:"!=",GreaterThan:">",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match",Between:"between",Interpolate:"interpolate",Coalesce:"coalesce",Case:"case",In:"in",Number:"number",String:"string",Array:"array",Color:"color",Id:"id",Band:"band",Palette:"palette"},g2={[Fe.Get]:Rt(([h,e])=>e!==void 0?m2(e.value):Kr,Nt(1,2),y2),[Fe.Var]:Rt(([h])=>h.type,Nt(1,1),_2),[Fe.Id]:Rt(ft|ns,eu,x2),[Fe.Concat]:Rt(ns,Nt(2,1/0),qt(Kr)),[Fe.GeometryType]:Rt(ns,eu,v2),[Fe.Resolution]:Rt(ft,eu),[Fe.Zoom]:Rt(ft,eu),[Fe.Time]:Rt(ft,eu),[Fe.Any]:Rt(Ri,Nt(2,1/0),qt(Ri)),[Fe.All]:Rt(Ri,Nt(2,1/0),qt(Ri)),[Fe.Not]:Rt(Ri,Nt(1,1),qt(Ri)),[Fe.Equal]:Rt(Ri,Nt(2,2),qt(Kr),ca),[Fe.NotEqual]:Rt(Ri,Nt(2,2),qt(Kr),ca),[Fe.GreaterThan]:Rt(Ri,Nt(2,2),qt(Kr),ca),[Fe.GreaterThanOrEqualTo]:Rt(Ri,Nt(2,2),qt(Kr),ca),[Fe.LessThan]:Rt(Ri,Nt(2,2),qt(Kr),ca),[Fe.LessThanOrEqualTo]:Rt(Ri,Nt(2,2),qt(Kr),ca),[Fe.Multiply]:Rt(h=>{let e=ft|xr;for(let r=0;r<h.length;r++)e&=h[r].type;return e},Nt(2,1/0),qt(ft|xr),ca),[Fe.Coalesce]:Rt(h=>{let e=Kr;for(let r=1;r<h.length;r+=2)e&=h[r].type;return e&=h[h.length-1].type,e},Nt(2,1/0),qt(Kr),ca),[Fe.Divide]:Rt(ft,Nt(2,2),qt(ft)),[Fe.Add]:Rt(ft,Nt(2,1/0),qt(ft)),[Fe.Subtract]:Rt(ft,Nt(2,2),qt(ft)),[Fe.Clamp]:Rt(ft,Nt(3,3),qt(ft)),[Fe.Mod]:Rt(ft,Nt(2,2),qt(ft)),[Fe.Pow]:Rt(ft,Nt(2,2),qt(ft)),[Fe.Abs]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Floor]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Ceil]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Round]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Sin]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Cos]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Atan]:Rt(ft,Nt(1,2),qt(ft)),[Fe.Sqrt]:Rt(ft,Nt(1,1),qt(ft)),[Fe.Match]:Rt(h=>{let e=Kr;for(let r=2;r<h.length;r+=2)e&=h[r].type;return e&=h[h.length-1].type,e},Nt(4,1/0),Cv,w2),[Fe.Between]:Rt(Ri,Nt(3,3),qt(ft)),[Fe.Interpolate]:Rt(h=>{let e=xr|ft;for(let r=3;r<h.length;r+=2)e&=h[r].type;return e},Nt(6,1/0),Cv,S2),[Fe.Case]:Rt(h=>{let e=Kr;for(let r=1;r<h.length;r+=2)e&=h[r].type;return e&=h[h.length-1].type,e},Nt(3,1/0),b2,C2),[Fe.In]:Rt(Ri,Nt(2,2),I2),[Fe.Number]:Rt(ft,Nt(1,1/0),qt(Kr)),[Fe.String]:Rt(ns,Nt(1,1/0),qt(Kr)),[Fe.Array]:Rt(h=>h.length===3||h.length===4?js|xr:js,Nt(1,1/0),qt(ft)),[Fe.Color]:Rt(xr,Nt(1,4),qt(ft)),[Fe.Band]:Rt(ft,Nt(1,3),qt(ft)),[Fe.Palette]:Rt(xr,Nt(2,2),E2)};function y2(h,e){let r=Yt(h[1],e);if(!(r instanceof ws))throw new Error("Expected a literal argument for get operation");if(typeof r.value!="string")throw new Error("Expected a string argument for get operation");if(e.properties.add(r.value),h.length===3){let a=Yt(h[2],e);return[r,a]}return[r]}function _2(h,e,r,a){let l=h[1];if(typeof l!="string")throw new Error("Expected a string argument for var operation");if(e.variables.add(l),!("variables"in e.style)||e.style.variables[l]===void 0)return[new ws(Kr,l)];let o=e.style.variables[l],g=Yt(o,e);if(g.value=l,a&&!Ss(a,g.type))throw new Error(`The variable ${l} has type ${Or(g.type)} but the following type was expected: ${Or(a)}`);return[g]}function x2(h,e){e.featureId=!0}function v2(h,e){e.geometryType=!0}function eu(h,e){let r=h[0];if(h.length!==1)throw new Error(`Expected no arguments for ${r} operation`);return[]}function Nt(h,e){return function(r,a){let l=r[0],o=r.length-1;if(h===e){if(o!==h){let g=h===1?"":"s";throw new Error(`Expected ${h} argument${g} for ${l}, got ${o}`)}}else if(o<h||o>e){let g=e===1/0?`${h} or more`:`${h} to ${e}`;throw new Error(`Expected ${g} arguments for ${l}, got ${o}`)}}}function qt(h){return function(e,r){let a=e[0],l=e.length-1,o=new Array(l);for(let g=0;g<l;++g){let v=Yt(e[g+1],r);if(!Ss(h,v.type)){let w=Or(h),T=Or(v.type);throw new Error(`Unexpected type for argument ${g} of ${a} operation, got ${w} but expected ${T}`)}v.type&=h,o[g]=v}return o}}function ca(h,e,r){let a=h[0],l=h.length-1,o=Kr;for(let v=0;v<r.length;++v)o&=r[v].type;if(o===dc)throw new Error(`No common type could be found for arguments of ${a} operation`);let g=new Array(l);for(let v=0;v<l;++v)g[v]=Yt(h[v+1],e,o);return g}function b2(h,e){let r=h[0],a=h.length-1;if(a%2===0)throw new Error(`An odd amount of arguments was expected for operation ${r}, got ${JSON.stringify(a)} instead`)}function Cv(h,e){let r=h[0],a=h.length-1;if(a%2===1)throw new Error(`An even amount of arguments was expected for operation ${r}, got ${JSON.stringify(a)} instead`)}function w2(h,e,r,a){let l=h.length-1,g=Yt(h[1],e).type,v=Yt(h[h.length-1],e),w=a!==void 0?a&v.type:v.type,T=new Array(l-2);for(let k=0;k<l-2;k+=2){let F=Yt(h[k+2],e),j=Yt(h[k+3],e);g&=F.type,w&=j.type,T[k]=F,T[k+1]=j}let S=ns|ft|Ri;if(!Ss(S,g))throw new Error(`Expected an input of type ${Or(S)} for the interpolate operation, got ${Or(g)} instead`);if(lp(w,dc))throw new Error("Could not find a common output type for the following match operation: "+JSON.stringify(h));for(let k=0;k<l-2;k+=2){let F=Yt(h[k+2],e,g),j=Yt(h[k+3],e,w);T[k]=F,T[k+1]=j}return[Yt(h[1],e,g),...T,Yt(h[h.length-1],e,w)]}function S2(h,e,r,a){let l=h[1],o;switch(l[0]){case"linear":o=1;break;case"exponential":if(o=l[1],typeof o!="number")throw new Error(`Expected a number base for exponential interpolation, got ${JSON.stringify(o)} instead`);break;default:o=null}if(!o)throw new Error(`Invalid interpolation type: ${JSON.stringify(l)}`);o=Yt(o,e);let g=Yt(h[2],e);if(!Ss(ft,g.type))throw new Error(`Expected an input of type number for the interpolate operation, got ${Or(g.type)} instead`);g=Yt(h[2],e,ft);let v=new Array(h.length-3);for(let w=0;w<v.length;w+=2){let T=Yt(h[w+3],e);if(!Ss(ft,T.type))throw new Error(`Expected all stop input values in the interpolate operation to be of type number, got ${Or(T.type)} at position ${w+2} instead`);let S=Yt(h[w+4],e);if(!Ss(ft|xr,S.type))throw new Error(`Expected all stop output values in the interpolate operation to be a number or color, got ${Or(S.type)} at position ${w+3} instead`);T=Yt(h[w+3],e,ft),S=Yt(h[w+4],e,ft|xr),v[w]=T,v[w+1]=S}return[o,g,...v]}function C2(h,e,r,a){let l=Yt(h[h.length-1],e),o=a!==void 0?a&l.type:l.type,g=new Array(h.length-1);for(let v=0;v<g.length-1;v+=2){let w=Yt(h[v+1],e),T=Yt(h[v+2],e);if(!Ss(Ri,w.type))throw new Error(`Expected all conditions in the case operation to be of type boolean, got ${Or(w.type)} at position ${v} instead`);o&=T.type,g[v]=w,g[v+1]=T}if(lp(o,dc))throw new Error("Could not find a common output type for the following case operation: "+JSON.stringify(h));for(let v=0;v<g.length-1;v+=2)g[v+1]=Yt(h[v+2],e,o);return g[g.length-1]=Yt(h[h.length-1],e,o),g}function I2(h,e){let r=h[2];if(!Array.isArray(r))throw new Error('The "in" operator was provided a literal value which was not an array as second argument.');if(typeof r[0]=="string"){if(r[0]!=="literal")throw new Error('For the "in" operator, a string array should be wrapped in a "literal" operator to disambiguate from expressions.');if(!Array.isArray(r[1]))throw new Error('The "in" operator was provided a literal value which was not an array as second argument.');r=r[1]}let a=ns|ft,l=new Array(r.length);for(let g=0;g<l.length;g++){let v=Yt(r[g],e);a&=v.type,l[g]=v}if(lp(a,dc))throw new Error("Could not find a common type for the following in operation: "+JSON.stringify(h));return[Yt(h[1],e,a),...l]}function E2(h,e){let r=Yt(h[1],e,ft);if(r.type!==ft)throw new Error(`The first argument of palette must be an number, got ${Or(r.type)} instead`);let a=h[2];if(!Array.isArray(a))throw new Error("The second argument of palette must be an array");let l=new Array(a.length);for(let o=0;o<l.length;o++){let g=Yt(a[o],e,xr);if(!(g instanceof ws))throw new Error(`The palette color at index ${o} must be a literal value`);if(!Ss(g.type,xr))throw new Error(`The palette color at index ${o} should be of type color, got ${Or(g.type)} instead`);l[o]=g}return[r,...l]}function Rt(h,...e){return function(r,a,l){let o=r[0],g=[];for(let w=0;w<e.length;w++)g=e[w](r,a,g,l)||g;let v=typeof h=="function"?h(g):h;if(l!==void 0){if(!Ss(v,l))throw new Error(`The following expression was expected to return ${Or(l)}, but returns ${Or(v)} instead: ${JSON.stringify(r)}`);v&=l}if(v===dc)throw new Error(`No matching type was found for the following expression: ${JSON.stringify(r)}`);return new Lg(v,o,...g)}}function T2(h,e,r){let a=h[0],l=g2[a];if(!l)throw new Error(`Unknown operator: ${a}`);return l(h,e,r)}function Fg(h){if(!h)return"";let e=h.getType();switch(e){case"Point":case"LineString":case"Polygon":return e;case"MultiPoint":case"MultiLineString":case"MultiPolygon":return e.substring(5);case"Circle":return"Polygon";case"GeometryCollection":return Fg(h.getGeometries()[0]);default:return""}}function zg(){return{variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""}}function $s(h,e,r){let a=Yt(h,r);if(!Ss(e,a.type)){let l=Or(e),o=Or(a.type);throw new Error(`Expected expression to be of type ${l}, got ${o}`)}return Us(a,r)}function Us(h,e){if(h instanceof ws){if(h.type===xr&&typeof h.value=="string"){let a=rp(h.value);return function(){return a}}return function(){return h.value}}let r=h.operator;switch(r){case Fe.Number:case Fe.String:case Fe.Coalesce:return M2(h,e);case Fe.Get:case Fe.Var:return A2(h,e);case Fe.Id:return a=>a.featureId;case Fe.GeometryType:return a=>a.geometryType;case Fe.Concat:{let a=h.args.map(l=>Us(l,e));return l=>"".concat(...a.map(o=>o(l).toString()))}case Fe.Resolution:return a=>a.resolution;case Fe.Any:case Fe.All:case Fe.Not:return R2(h,e);case Fe.Equal:case Fe.NotEqual:case Fe.LessThan:case Fe.LessThanOrEqualTo:case Fe.GreaterThan:case Fe.GreaterThanOrEqualTo:return P2(h,e);case Fe.Multiply:case Fe.Divide:case Fe.Add:case Fe.Subtract:case Fe.Clamp:case Fe.Mod:case Fe.Pow:case Fe.Abs:case Fe.Floor:case Fe.Ceil:case Fe.Round:case Fe.Sin:case Fe.Cos:case Fe.Atan:case Fe.Sqrt:return k2(h,e);case Fe.Case:return L2(h,e);case Fe.Match:return D2(h,e);case Fe.Interpolate:return F2(h,e);default:throw new Error(`Unsupported operator ${r}`)}}function M2(h,e){let r=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Us(h.args[o],e);switch(r){case Fe.Coalesce:return o=>{for(let g=0;g<a;++g){let v=l[g](o);if(typeof v<"u"&&v!==null)return v}throw new Error("Expected one of the values to be non-null")};case Fe.Number:case Fe.String:return o=>{for(let g=0;g<a;++g){let v=l[g](o);if(typeof v===r)return v}throw new Error(`Expected one of the values to be a ${r}`)};default:throw new Error(`Unsupported assertion operator ${r}`)}}function A2(h,e){let a=h.args[0].value;switch(h.operator){case Fe.Get:return l=>l.properties[a];case Fe.Var:return l=>l.variables[a];default:throw new Error(`Unsupported accessor operator ${h.operator}`)}}function P2(h,e){let r=h.operator,a=Us(h.args[0],e),l=Us(h.args[1],e);switch(r){case Fe.Equal:return o=>a(o)===l(o);case Fe.NotEqual:return o=>a(o)!==l(o);case Fe.LessThan:return o=>a(o)<l(o);case Fe.LessThanOrEqualTo:return o=>a(o)<=l(o);case Fe.GreaterThan:return o=>a(o)>l(o);case Fe.GreaterThanOrEqualTo:return o=>a(o)>=l(o);default:throw new Error(`Unsupported comparison operator ${r}`)}}function R2(h,e){let r=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Us(h.args[o],e);switch(r){case Fe.Any:return o=>{for(let g=0;g<a;++g)if(l[g](o))return!0;return!1};case Fe.All:return o=>{for(let g=0;g<a;++g)if(!l[g](o))return!1;return!0};case Fe.Not:return o=>!l[0](o);default:throw new Error(`Unsupported logical operator ${r}`)}}function k2(h,e){let r=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Us(h.args[o],e);switch(r){case Fe.Multiply:return o=>{let g=1;for(let v=0;v<a;++v)g*=l[v](o);return g};case Fe.Divide:return o=>l[0](o)/l[1](o);case Fe.Add:return o=>{let g=0;for(let v=0;v<a;++v)g+=l[v](o);return g};case Fe.Subtract:return o=>l[0](o)-l[1](o);case Fe.Clamp:return o=>{let g=l[0](o),v=l[1](o);if(g<v)return v;let w=l[2](o);return g>w?w:g};case Fe.Mod:return o=>l[0](o)%l[1](o);case Fe.Pow:return o=>Math.pow(l[0](o),l[1](o));case Fe.Abs:return o=>Math.abs(l[0](o));case Fe.Floor:return o=>Math.floor(l[0](o));case Fe.Ceil:return o=>Math.ceil(l[0](o));case Fe.Round:return o=>Math.round(l[0](o));case Fe.Sin:return o=>Math.sin(l[0](o));case Fe.Cos:return o=>Math.cos(l[0](o));case Fe.Atan:return a===2?o=>Math.atan2(l[0](o),l[1](o)):o=>Math.atan(l[0](o));case Fe.Sqrt:return o=>Math.sqrt(l[0](o));default:throw new Error(`Unsupported numeric operator ${r}`)}}function L2(h,e){let r=h.args.length,a=new Array(r);for(let l=0;l<r;++l)a[l]=Us(h.args[l],e);return l=>{for(let o=0;o<r-1;o+=2)if(a[o](l))return a[o+1](l);return a[r-1](l)}}function D2(h,e){let r=h.args.length,a=new Array(r);for(let l=0;l<r;++l)a[l]=Us(h.args[l],e);return l=>{let o=a[0](l);for(let g=1;g<r;g+=2)if(o===a[g](l))return a[g+1](l);return a[r-1](l)}}function F2(h,e){let r=h.args.length,a=new Array(r);for(let l=0;l<r;++l)a[l]=Us(h.args[l],e);return l=>{let o=a[0](l),g=a[1](l),v,w;for(let T=2;T<r;T+=2){let S=a[T](l),k=a[T+1](l),F=Array.isArray(k);if(F&&(k=cv(k)),S>=g)return T===2?k:F?z2(o,g,v,w,S,k):tu(o,g,v,w,S,k);v=S,w=k}return w}}function tu(h,e,r,a,l,o){let g=l-r;if(g===0)return a;let v=e-r,w=h===1?v/g:(Math.pow(h,v)-1)/(Math.pow(h,g)-1);return a+w*(o-a)}function z2(h,e,r,a,l,o){if(l-r===0)return a;let v=dg(a),w=dg(o),T=w[2]-v[2];T>180?T-=360:T<-180&&(T+=360);let S=[tu(h,e,r,v[0],l,w[0]),tu(h,e,r,v[1],l,w[1]),v[2]+tu(h,e,r,0,l,T),tu(h,e,r,a[3],l,o[3])];return pg(hv(S))}function O2(h){return!0}function Av(h){let e=Dg(),r=B2(h,e),a=zg();return function(l,o){if(a.properties=l.getPropertiesInternal(),a.resolution=o,e.featureId){let g=l.getId();g!==void 0?a.featureId=g:a.featureId=null}return e.geometryType&&(a.geometryType=Fg(l.getGeometry())),r(a)}}function Ng(h){let e=Dg(),r=h.length,a=new Array(r);for(let g=0;g<r;++g)a[g]=Og(h[g],e);let l=zg(),o=new Array(r);return function(g,v){if(l.properties=g.getPropertiesInternal(),l.resolution=v,e.featureId){let T=g.getId();T!==void 0?l.featureId=T:l.featureId=null}let w=0;for(let T=0;T<r;++T){let S=a[T](l);S&&(o[w]=S,w+=1)}return o.length=w,o}}function B2(h,e){let r=h.length,a=new Array(r);for(let l=0;l<r;++l){let o=h[l],g="filter"in o?$s(o.filter,Ri,e):O2,v;if(Array.isArray(o.style)){let w=o.style.length;v=new Array(w);for(let T=0;T<w;++T)v[T]=Og(o.style[T],e)}else v=[Og(o.style,e)];a[l]={filter:g,styles:v}}return function(l){let o=[],g=!1;for(let v=0;v<r;++v){let w=a[v].filter;if(w(l)&&!(h[v].else&&g)){g=!0;for(let T of a[v].styles){let S=T(l);S&&o.push(S)}}}return o}}function Og(h,e){let r=iu(h,"",e),a=ru(h,"",e),l=N2(h,e),o=V2(h,e),g=kn(h,"z-index",e);if(!r&&!a&&!l&&!o&&!qn(h))throw new Error("No fill, stroke, point, or text symbolizer properties in style: "+JSON.stringify(h));let v=new zr;return function(w){let T=!0;if(r){let S=r(w);S&&(T=!1),v.setFill(S)}if(a){let S=a(w);S&&(T=!1),v.setStroke(S)}if(l){let S=l(w);S&&(T=!1),v.setText(S)}if(o){let S=o(w);S&&(T=!1),v.setImage(S)}return g&&v.setZIndex(g(w)),T?null:v}}function iu(h,e,r){let a;if(e+"fill-pattern-src"in h?a=$2(h,e+"fill-",r):a=Vg(h,e+"fill-color",r),!a)return null;let l=new Fr;return function(o){let g=a(o);return g==="none"?null:(l.setColor(g),l)}}function ru(h,e,r){let a=kn(h,e+"stroke-width",r),l=Vg(h,e+"stroke-color",r);if(!a&&!l)return null;let o=Eo(h,e+"stroke-line-cap",r),g=Eo(h,e+"stroke-line-join",r),v=Pv(h,e+"stroke-line-dash",r),w=kn(h,e+"stroke-line-dash-offset",r),T=kn(h,e+"stroke-miter-limit",r),S=new nr;return function(k){if(l){let F=l(k);if(F==="none")return null;S.setColor(F)}if(a&&S.setWidth(a(k)),o){let F=o(k);if(F!=="butt"&&F!=="round"&&F!=="square")throw new Error("Expected butt, round, or square line cap");S.setLineCap(F)}if(g){let F=g(k);if(F!=="bevel"&&F!=="round"&&F!=="miter")throw new Error("Expected bevel, round, or miter line join");S.setLineJoin(F)}return v&&S.setLineDash(v(k)),w&&S.setLineDashOffset(w(k)),T&&S.setMiterLimit(T(k)),S}}function N2(h,e){let r="text-",a=Eo(h,r+"value",e);if(!a)return null;let l=iu(h,r,e),o=iu(h,r+"background-",e),g=ru(h,r,e),v=ru(h,r+"background-",e),w=Eo(h,r+"font",e),T=kn(h,r+"max-angle",e),S=kn(h,r+"offset-x",e),k=kn(h,r+"offset-y",e),F=nu(h,r+"overflow",e),j=Eo(h,r+"placement",e),J=kn(h,r+"repeat",e),he=up(h,r+"scale",e),q=nu(h,r+"rotate-with-view",e),Z=kn(h,r+"rotation",e),ne=Eo(h,r+"align",e),me=Eo(h,r+"justify",e),_e=Eo(h,r+"baseline",e),fe=Pv(h,r+"padding",e),ve=dp(h,r+"declutter-mode"),Ee=new wv({declutterMode:ve});return function(Re){if(Ee.setText(a(Re)),l&&Ee.setFill(l(Re)),o&&Ee.setBackgroundFill(o(Re)),g&&Ee.setStroke(g(Re)),v&&Ee.setBackgroundStroke(v(Re)),w&&Ee.setFont(w(Re)),T&&Ee.setMaxAngle(T(Re)),S&&Ee.setOffsetX(S(Re)),k&&Ee.setOffsetY(k(Re)),F&&Ee.setOverflow(F(Re)),j){let Pe=j(Re);if(Pe!=="point"&&Pe!=="line")throw new Error("Expected point or line for text-placement");Ee.setPlacement(Pe)}if(J&&Ee.setRepeat(J(Re)),he&&Ee.setScale(he(Re)),q&&Ee.setRotateWithView(q(Re)),Z&&Ee.setRotation(Z(Re)),ne){let Pe=ne(Re);if(Pe!=="left"&&Pe!=="center"&&Pe!=="right"&&Pe!=="end"&&Pe!=="start")throw new Error("Expected left, right, center, start, or end for text-align");Ee.setTextAlign(Pe)}if(me){let Pe=me(Re);if(Pe!=="left"&&Pe!=="right"&&Pe!=="center")throw new Error("Expected left, right, or center for text-justify");Ee.setJustify(Pe)}if(_e){let Pe=_e(Re);if(Pe!=="bottom"&&Pe!=="top"&&Pe!=="middle"&&Pe!=="alphabetic"&&Pe!=="hanging")throw new Error("Expected bottom, top, middle, alphabetic, or hanging for text-baseline");Ee.setTextBaseline(Pe)}return fe&&Ee.setPadding(fe(Re)),Ee}}function V2(h,e){return"icon-src"in h?G2(h,e):"shape-points"in h?j2(h,e):"circle-radius"in h?U2(h,e):null}function G2(h,e){let r="icon-",a=r+"src",l=Rv(h[a],a),o=cp(h,r+"anchor",e),g=up(h,r+"scale",e),v=kn(h,r+"opacity",e),w=cp(h,r+"displacement",e),T=kn(h,r+"rotation",e),S=nu(h,r+"rotate-with-view",e),k=Tv(h,r+"anchor-origin"),F=Mv(h,r+"anchor-x-units"),j=Mv(h,r+"anchor-y-units"),J=X2(h,r+"color"),he=W2(h,r+"cross-origin"),q=Z2(h,r+"offset"),Z=Tv(h,r+"offset-origin"),ne=hp(h,r+"width"),me=hp(h,r+"height"),_e=q2(h,r+"size"),fe=dp(h,r+"declutter-mode"),ve=new Qh({src:l,anchorOrigin:k,anchorXUnits:F,anchorYUnits:j,color:J,crossOrigin:he,offset:q,offsetOrigin:Z,height:me,width:ne,size:_e,declutterMode:fe});return function(Ee){return v&&ve.setOpacity(v(Ee)),w&&ve.setDisplacement(w(Ee)),T&&ve.setRotation(T(Ee)),S&&ve.setRotateWithView(S(Ee)),g&&ve.setScale(g(Ee)),o&&ve.setAnchor(o(Ee)),ve}}function j2(h,e){let r="shape-",a=r+"points",l=r+"radius",o=Bg(h[a],a),g=Bg(h[l],l),v=iu(h,r,e),w=ru(h,r,e),T=up(h,r+"scale",e),S=cp(h,r+"displacement",e),k=kn(h,r+"rotation",e),F=nu(h,r+"rotate-with-view",e),j=hp(h,r+"radius2"),J=hp(h,r+"angle"),he=dp(h,r+"declutter-mode"),q=new ap({points:o,radius:g,radius2:j,angle:J,declutterMode:he});return function(Z){return v&&q.setFill(v(Z)),w&&q.setStroke(w(Z)),S&&q.setDisplacement(S(Z)),k&&q.setRotation(k(Z)),F&&q.setRotateWithView(F(Z)),T&&q.setScale(T(Z)),q}}function U2(h,e){let r="circle-",a=iu(h,r,e),l=ru(h,r,e),o=kn(h,r+"radius",e),g=up(h,r+"scale",e),v=cp(h,r+"displacement",e),w=kn(h,r+"rotation",e),T=nu(h,r+"rotate-with-view",e),S=dp(h,r+"declutter-mode"),k=new Rn({radius:5,declutterMode:S});return function(F){return o&&k.setRadius(o(F)),a&&k.setFill(a(F)),l&&k.setStroke(l(F)),v&&k.setDisplacement(v(F)),w&&k.setRotation(w(F)),T&&k.setRotateWithView(T(F)),g&&k.setScale(g(F)),k}}function kn(h,e,r){if(!(e in h))return;let a=$s(h[e],ft,r);return function(l){return Bg(a(l),e)}}function Eo(h,e,r){if(!(e in h))return null;let a=$s(h[e],ns,r);return function(l){return Rv(a(l),e)}}function $2(h,e,r){let a=Eo(h,e+"pattern-src",r),l=Ev(h,e+"pattern-offset",r),o=Ev(h,e+"pattern-size",r),g=Vg(h,e+"color",r);return function(v){return{src:a(v),offset:l&&l(v),size:o&&o(v),color:g&&g(v)}}}function nu(h,e,r){if(!(e in h))return null;let a=$s(h[e],Ri,r);return function(l){let o=a(l);if(typeof o!="boolean")throw new Error(`Expected a boolean for ${e}`);return o}}function Vg(h,e,r){if(!(e in h))return null;let a=$s(h[e],xr|ns,r);return function(l){return kv(a(l),e)}}function Pv(h,e,r){if(!(e in h))return null;let a=$s(h[e],js,r);return function(l){return su(a(l),e)}}function cp(h,e,r){if(!(e in h))return null;let a=$s(h[e],js,r);return function(l){let o=su(a(l),e);if(o.length!==2)throw new Error(`Expected two numbers for ${e}`);return o}}function Ev(h,e,r){if(!(e in h))return null;let a=$s(h[e],js,r);return function(l){return Lv(a(l),e)}}function up(h,e,r){if(!(e in h))return null;let a=$s(h[e],js|ft,r);return function(l){return H2(a(l),e)}}function hp(h,e){let r=h[e];if(r!==void 0){if(typeof r!="number")throw new Error(`Expected a number for ${e}`);return r}}function q2(h,e){let r=h[e];if(r!==void 0){if(typeof r=="number")return sa(r);if(!Array.isArray(r))throw new Error(`Expected a number or size array for ${e}`);if(r.length!==2||typeof r[0]!="number"||typeof r[1]!="number")throw new Error(`Expected a number or size array for ${e}`);return r}}function W2(h,e){let r=h[e];if(r!==void 0){if(typeof r!="string")throw new Error(`Expected a string for ${e}`);return r}}function Tv(h,e){let r=h[e];if(r!==void 0){if(r!=="bottom-left"&&r!=="bottom-right"&&r!=="top-left"&&r!=="top-right")throw new Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${e}`);return r}}function Mv(h,e){let r=h[e];if(r!==void 0){if(r!=="pixels"&&r!=="fraction")throw new Error(`Expected pixels or fraction for ${e}`);return r}}function Z2(h,e){let r=h[e];if(r!==void 0)return su(r,e)}function dp(h,e){let r=h[e];if(r!==void 0){if(typeof r!="string")throw new Error(`Expected a string for ${e}`);if(r!=="declutter"&&r!=="obstacle"&&r!=="none")throw new Error(`Expected declutter, obstacle, or none for ${e}`);return r}}function X2(h,e){let r=h[e];if(r!==void 0)return kv(r,e)}function su(h,e){if(!Array.isArray(h))throw new Error(`Expected an array for ${e}`);let r=h.length;for(let a=0;a<r;++a)if(typeof h[a]!="number")throw new Error(`Expected an array of numbers for ${e}`);return h}function Rv(h,e){if(typeof h!="string")throw new Error(`Expected a string for ${e}`);return h}function Bg(h,e){if(typeof h!="number")throw new Error(`Expected a number for ${e}`);return h}function kv(h,e){if(typeof h=="string")return h;let r=su(h,e),a=r.length;if(a<3||a>4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return r}function Lv(h,e){let r=su(h,e);if(r.length!==2)throw new Error(`Expected an array of two numbers for ${e}`);return r}function H2(h,e){return typeof h=="number"?h:Lv(h,e)}var Dv={RENDER_ORDER:"renderOrder"},Gg=class extends xo{constructor(e){e=e||{};let r=Object.assign({},e);delete r.style,delete r.renderBuffer,delete r.updateWhileAnimating,delete r.updateWhileInteracting,super(r),this.declutter_=e.declutter?String(e.declutter):void 0,this.renderBuffer_=e.renderBuffer!==void 0?e.renderBuffer:100,this.style_=null,this.styleFunction_=void 0,this.setStyle(e.style),this.updateWhileAnimating_=e.updateWhileAnimating!==void 0?e.updateWhileAnimating:!1,this.updateWhileInteracting_=e.updateWhileInteracting!==void 0?e.updateWhileInteracting:!1}getDeclutter(){return this.declutter_}getFeatures(e){return super.getFeatures(e)}getRenderBuffer(){return this.renderBuffer_}getRenderOrder(){return this.get(Dv.RENDER_ORDER)}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(e,r){let a=this.getDeclutter();a in e.declutter||(e.declutter[a]=new Fv.default(9)),this.getRenderer().renderDeclutter(e,r)}setRenderOrder(e){this.set(Dv.RENDER_ORDER,e)}setStyle(e){this.style_=Y2(e),this.styleFunction_=e===null?void 0:xv(this.style_),this.changed()}};function Y2(h){if(h===void 0)return vv;if(!h)return null;if(typeof h=="function"||h instanceof zr)return h;if(!Array.isArray(h))return Ng([h]);if(h.length===0)return[];let e=h.length,r=h[0];if(r instanceof zr){let l=new Array(e);for(let o=0;o<e;++o){let g=h[o];if(!(g instanceof zr))throw new Error("Expected a list of style instances");l[o]=g}return l}if("style"in r){let l=new Array(e);for(let o=0;o<e;++o){let g=h[o];if(!("style"in g))throw new Error("Expected a list of rules with a style property");l[o]=g}return Av(l)}return Ng(h)}var zv=Gg;var ou={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},au=[ou.FILL],qs=[ou.STROKE],To=[ou.BEGIN_PATH],jg=[ou.CLOSE_PATH],gt=ou;var Ug=class{drawCustom(e,r,a,l,o){}drawGeometry(e){}setStyle(e){}drawCircle(e,r,a){}drawFeature(e,r,a){}drawGeometryCollection(e,r,a){}drawLineString(e,r,a){}drawMultiLineString(e,r,a){}drawMultiPoint(e,r,a){}drawMultiPolygon(e,r,a){}drawPoint(e,r,a){}drawPolygon(e,r,a){}drawText(e,r,a){}setFillStrokeStyle(e,r){}setImageStyle(e,r){}setTextStyle(e,r){}},pp=Ug;var $g=class extends pp{constructor(e,r,a,l){super(),this.tolerance=e,this.maxExtent=r,this.pixelRatio=l,this.maxLineWidth=0,this.resolution=a,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.tmpCoordinate_=[],this.hitDetectionInstructions=[],this.state={}}applyPixelRatio(e){let r=this.pixelRatio;return r==1?e:e.map(function(a){return a*r})}appendFlatPointCoordinates(e,r){let a=this.getBufferedMaxExtent(),l=this.tmpCoordinate_,o=this.coordinates,g=o.length;for(let v=0,w=e.length;v<w;v+=r)l[0]=e[v],l[1]=e[v+1],mo(a,l)&&(o[g++]=l[0],o[g++]=l[1]);return g}appendFlatLineCoordinates(e,r,a,l,o,g){let v=this.coordinates,w=v.length,T=this.getBufferedMaxExtent();g&&(r+=l);let S=e[r],k=e[r+1],F=this.tmpCoordinate_,j=!0,J,he,q;for(J=r+l;J<a;J+=l)F[0]=e[J],F[1]=e[J+1],q=Dd(T,F),q!==he?(j&&(v[w++]=S,v[w++]=k,j=!1),v[w++]=F[0],v[w++]=F[1]):q===Ji.INTERSECTING?(v[w++]=F[0],v[w++]=F[1],j=!1):j=!0,S=F[0],k=F[1],he=q;return(o&&j||J===r+l)&&(v[w++]=S,v[w++]=k),w}drawCustomCoordinates_(e,r,a,l,o){for(let g=0,v=a.length;g<v;++g){let w=a[g],T=this.appendFlatLineCoordinates(e,r,w,l,!1,!1);o.push(T),r=w}return r}drawCustom(e,r,a,l,o){this.beginGeometry(e,r,o);let g=e.getType(),v=e.getStride(),w=this.coordinates.length,T,S,k,F,j;switch(g){case"MultiPolygon":T=e.getOrientedFlatCoordinates(),F=[];let J=e.getEndss();j=0;for(let he=0,q=J.length;he<q;++he){let Z=[];j=this.drawCustomCoordinates_(T,j,J[he],v,Z),F.push(Z)}this.instructions.push([gt.CUSTOM,w,F,e,a,Oh,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,F,e,l||a,Oh,o]);break;case"Polygon":case"MultiLineString":k=[],T=g=="Polygon"?e.getOrientedFlatCoordinates():e.getFlatCoordinates(),j=this.drawCustomCoordinates_(T,0,e.getEnds(),v,k),this.instructions.push([gt.CUSTOM,w,k,e,a,ta,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,k,e,l||a,ta,o]);break;case"LineString":case"Circle":T=e.getFlatCoordinates(),S=this.appendFlatLineCoordinates(T,0,T.length,v,!1,!1),this.instructions.push([gt.CUSTOM,w,S,e,a,ts,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,S,e,l||a,ts,o]);break;case"MultiPoint":T=e.getFlatCoordinates(),S=this.appendFlatPointCoordinates(T,v),S>w&&(this.instructions.push([gt.CUSTOM,w,S,e,a,ts,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,S,e,l||a,ts,o]));break;case"Point":T=e.getFlatCoordinates(),this.coordinates.push(T[0],T[1]),S=this.coordinates.length,this.instructions.push([gt.CUSTOM,w,S,e,a,void 0,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,S,e,l||a,void 0,o]);break;default:}this.endGeometry(r)}beginGeometry(e,r,a){this.beginGeometryInstruction1_=[gt.BEGIN_GEOMETRY,r,0,e,a],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[gt.BEGIN_GEOMETRY,r,0,e,a],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){let e=this.hitDetectionInstructions;e.reverse();let r,a=e.length,l,o,g=-1;for(r=0;r<a;++r)l=e[r],o=l[0],o==gt.END_GEOMETRY?g=r:o==gt.BEGIN_GEOMETRY&&(l[2]=r,q0(this.hitDetectionInstructions,g,r),g=-1)}setFillStrokeStyle(e,r){let a=this.state;if(e){let l=e.getColor();a.fillPatternScale=l&&typeof l=="object"&&"src"in l?this.pixelRatio:1,a.fillStyle=Mn(l||sr)}else a.fillStyle=void 0;if(r){let l=r.getColor();a.strokeStyle=Mn(l||So);let o=r.getLineCap();a.lineCap=o!==void 0?o:Vs;let g=r.getLineDash();a.lineDash=g?g.slice():An;let v=r.getLineDashOffset();a.lineDashOffset=v||Pn;let w=r.getLineJoin();a.lineJoin=w!==void 0?w:Gs;let T=r.getWidth();a.lineWidth=T!==void 0?T:Io;let S=r.getMiterLimit();a.miterLimit=S!==void 0?S:wo,a.lineWidth>this.maxLineWidth&&(this.maxLineWidth=a.lineWidth,this.bufferedMaxExtent_=null)}else a.strokeStyle=void 0,a.lineCap=void 0,a.lineDash=null,a.lineDashOffset=void 0,a.lineJoin=void 0,a.lineWidth=void 0,a.miterLimit=void 0}createFill(e){let r=e.fillStyle,a=[gt.SET_FILL_STYLE,r];return typeof r!="string"&&a.push(e.fillPatternScale),a}applyStroke(e){this.instructions.push(this.createStroke(e))}createStroke(e){return[gt.SET_STROKE_STYLE,e.strokeStyle,e.lineWidth*this.pixelRatio,e.lineCap,e.lineJoin,e.miterLimit,this.applyPixelRatio(e.lineDash),e.lineDashOffset*this.pixelRatio]}updateFillStyle(e,r){let a=e.fillStyle;(typeof a!="string"||e.currentFillStyle!=a)&&(a!==void 0&&this.instructions.push(r.call(this,e)),e.currentFillStyle=a)}updateStrokeStyle(e,r){let a=e.strokeStyle,l=e.lineCap,o=e.lineDash,g=e.lineDashOffset,v=e.lineJoin,w=e.lineWidth,T=e.miterLimit;(e.currentStrokeStyle!=a||e.currentLineCap!=l||o!=e.currentLineDash&&!vn(e.currentLineDash,o)||e.currentLineDashOffset!=g||e.currentLineJoin!=v||e.currentLineWidth!=w||e.currentMiterLimit!=T)&&(a!==void 0&&r.call(this,e),e.currentStrokeStyle=a,e.currentLineCap=l,e.currentLineDash=o,e.currentLineDashOffset=g,e.currentLineJoin=v,e.currentLineWidth=w,e.currentMiterLimit=T)}endGeometry(e){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;let r=[gt.END_GEOMETRY,e];this.instructions.push(r),this.hitDetectionInstructions.push(r)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=W0(this.maxExtent),this.maxLineWidth>0)){let e=this.resolution*(this.maxLineWidth+1)/2;bn(this.bufferedMaxExtent_,e,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}},Ws=$g;var qg=class extends Ws{constructor(e,r,a,l){super(e,r,a,l),this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.anchorX_=void 0,this.anchorY_=void 0,this.height_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.scale_=void 0,this.width_=void 0,this.declutterMode_=void 0,this.declutterImageWithText_=void 0}drawPoint(e,r,a){if(!this.image_||this.maxExtent&&!mo(this.maxExtent,e.getFlatCoordinates()))return;this.beginGeometry(e,r,a);let l=e.getFlatCoordinates(),o=e.getStride(),g=this.coordinates.length,v=this.appendFlatPointCoordinates(l,o);this.instructions.push([gt.DRAW_IMAGE,g,v,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([gt.DRAW_IMAGE,g,v,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(r)}drawMultiPoint(e,r,a){if(!this.image_)return;this.beginGeometry(e,r,a);let l=e.getFlatCoordinates(),o=[];for(let w=0,T=l.length;w<T;w+=e.getStride())(!this.maxExtent||mo(this.maxExtent,l.slice(w,w+2)))&&o.push(l[w],l[w+1]);let g=this.coordinates.length,v=this.appendFlatPointCoordinates(o,2);this.instructions.push([gt.DRAW_IMAGE,g,v,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([gt.DRAW_IMAGE,g,v,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(r)}finish(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,super.finish()}setImageStyle(e,r){let a=e.getAnchor(),l=e.getSize(),o=e.getOrigin();this.imagePixelRatio_=e.getPixelRatio(this.pixelRatio),this.anchorX_=a[0],this.anchorY_=a[1],this.hitDetectionImage_=e.getHitDetectionImage(),this.image_=e.getImage(this.pixelRatio),this.height_=l[1],this.opacity_=e.getOpacity(),this.originX_=o[0],this.originY_=o[1],this.rotateWithView_=e.getRotateWithView(),this.rotation_=e.getRotation(),this.scale_=e.getScaleArray(),this.width_=l[0],this.declutterMode_=e.getDeclutterMode(),this.declutterImageWithText_=r}},Ov=qg;var Wg=class extends Ws{constructor(e,r,a,l){super(e,r,a,l)}drawFlatCoordinates_(e,r,a,l){let o=this.coordinates.length,g=this.appendFlatLineCoordinates(e,r,a,l,!1,!1),v=[gt.MOVE_TO_LINE_TO,o,g];return this.instructions.push(v),this.hitDetectionInstructions.push(v),a}drawLineString(e,r,a){let l=this.state,o=l.strokeStyle,g=l.lineWidth;if(o===void 0||g===void 0)return;this.updateStrokeStyle(l,this.applyStroke),this.beginGeometry(e,r,a),this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,An,Pn],To);let v=e.getFlatCoordinates(),w=e.getStride();this.drawFlatCoordinates_(v,0,v.length,w),this.hitDetectionInstructions.push(qs),this.endGeometry(r)}drawMultiLineString(e,r,a){let l=this.state,o=l.strokeStyle,g=l.lineWidth;if(o===void 0||g===void 0)return;this.updateStrokeStyle(l,this.applyStroke),this.beginGeometry(e,r,a),this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,An,Pn],To);let v=e.getEnds(),w=e.getFlatCoordinates(),T=e.getStride(),S=0;for(let k=0,F=v.length;k<F;++k)S=this.drawFlatCoordinates_(w,S,v[k],T);this.hitDetectionInstructions.push(qs),this.endGeometry(r)}finish(){let e=this.state;return e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&this.instructions.push(qs),this.reverseHitDetectionInstructions(),this.state=null,super.finish()}applyStroke(e){e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&(this.instructions.push(qs),e.lastStroke=this.coordinates.length),e.lastStroke=0,super.applyStroke(e),this.instructions.push(To)}},Bv=Wg;var Zg=class extends Ws{constructor(e,r,a,l){super(e,r,a,l)}drawFlatCoordinatess_(e,r,a,l){let o=this.state,g=o.fillStyle!==void 0,v=o.strokeStyle!==void 0,w=a.length;this.instructions.push(To),this.hitDetectionInstructions.push(To);for(let T=0;T<w;++T){let S=a[T],k=this.coordinates.length,F=this.appendFlatLineCoordinates(e,r,S,l,!0,!v),j=[gt.MOVE_TO_LINE_TO,k,F];this.instructions.push(j),this.hitDetectionInstructions.push(j),v&&(this.instructions.push(jg),this.hitDetectionInstructions.push(jg)),r=S}return g&&(this.instructions.push(au),this.hitDetectionInstructions.push(au)),v&&(this.instructions.push(qs),this.hitDetectionInstructions.push(qs)),r}drawCircle(e,r,a){let l=this.state,o=l.fillStyle,g=l.strokeStyle;if(o===void 0&&g===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,r,a),l.fillStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_FILL_STYLE,sr]),l.strokeStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,An,Pn]);let v=e.getFlatCoordinates(),w=e.getStride(),T=this.coordinates.length;this.appendFlatLineCoordinates(v,0,v.length,w,!1,!1);let S=[gt.CIRCLE,T];this.instructions.push(To,S),this.hitDetectionInstructions.push(To,S),l.fillStyle!==void 0&&(this.instructions.push(au),this.hitDetectionInstructions.push(au)),l.strokeStyle!==void 0&&(this.instructions.push(qs),this.hitDetectionInstructions.push(qs)),this.endGeometry(r)}drawPolygon(e,r,a){let l=this.state,o=l.fillStyle,g=l.strokeStyle;if(o===void 0&&g===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,r,a),l.fillStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_FILL_STYLE,sr]),l.strokeStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,An,Pn]);let v=e.getEnds(),w=e.getOrientedFlatCoordinates(),T=e.getStride();this.drawFlatCoordinatess_(w,0,v,T),this.endGeometry(r)}drawMultiPolygon(e,r,a){let l=this.state,o=l.fillStyle,g=l.strokeStyle;if(o===void 0&&g===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,r,a),l.fillStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_FILL_STYLE,sr]),l.strokeStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,An,Pn]);let v=e.getEndss(),w=e.getOrientedFlatCoordinates(),T=e.getStride(),S=0;for(let k=0,F=v.length;k<F;++k)S=this.drawFlatCoordinatess_(w,S,v[k],T);this.endGeometry(r)}finish(){this.reverseHitDetectionInstructions(),this.state=null;let e=this.tolerance;if(e!==0){let r=this.coordinates;for(let a=0,l=r.length;a<l;++a)r[a]=ea(r[a],e)}return super.finish()}setFillStrokeStyles_(){let e=this.state;e.fillStyle!==void 0&&this.updateFillStyle(e,this.createFill),e.strokeStyle!==void 0&&this.updateStrokeStyle(e,this.applyStroke)}},Xg=Zg;function Nv(h,e,r,a,l){let o=[],g=r,v=0,w=e.slice(r,2);for(;v<h&&g+l<a;){let[T,S]=w.slice(-2),k=e[g+l],F=e[g+l+1],j=Math.sqrt((k-T)*(k-T)+(F-S)*(F-S));if(v+=j,v>=h){let J=(h-v+j)/j,he=Dr(T,k,J),q=Dr(S,F,J);w.push(he,q),o.push(w),w=[he,q],v==h&&(g+=l),v=0}else if(v<h)w.push(e[g+l],e[g+l+1]),g+=l;else{let J=j-v,he=Dr(T,k,J/j),q=Dr(S,F,J/j);w.push(he,q),o.push(w),w=[he,q],v=0,g+=l}}return v>0&&o.push(w),o}function Vv(h,e,r,a,l){let o=r,g=r,v=0,w=0,T=r,S,k,F,j,J,he,q,Z,ne,me;for(k=r;k<a;k+=l){let _e=e[k],fe=e[k+1];J!==void 0&&(ne=_e-J,me=fe-he,j=Math.sqrt(ne*ne+me*me),q!==void 0&&(w+=F,S=Math.acos((q*ne+Z*me)/(F*j)),S>h&&(w>v&&(v=w,o=T,g=k),w=0,T=k-l)),F=j,q=ne,Z=me),J=_e,he=fe}return w+=j,w>v?[T,k]:[o,g]}var lu={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Hg=class extends Ws{constructor(e,r,a,l){super(e,r,a,l),this.labels_=null,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.fillStates[sr]={fillStyle:sr},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_="",this.fillKey_="",this.strokeKey_="",this.declutterMode_=void 0,this.declutterImageWithText_=void 0}finish(){let e=super.finish();return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e}drawText(e,r,a){let l=this.textFillState_,o=this.textStrokeState_,g=this.textState_;if(this.text_===""||!g||!l&&!o)return;let v=this.coordinates,w=v.length,T=e.getType(),S=null,k=e.getStride();if(g.placement==="line"&&(T=="LineString"||T=="MultiLineString"||T=="Polygon"||T=="MultiPolygon")){if(!Qi(this.maxExtent,e.getExtent()))return;let F;if(S=e.getFlatCoordinates(),T=="LineString")F=[S.length];else if(T=="MultiLineString")F=e.getEnds();else if(T=="Polygon")F=e.getEnds().slice(0,1);else if(T=="MultiPolygon"){let q=e.getEndss();F=[];for(let Z=0,ne=q.length;Z<ne;++Z)F.push(q[Z][0])}this.beginGeometry(e,r,a);let j=g.repeat,J=j?void 0:g.textAlign,he=0;for(let q=0,Z=F.length;q<Z;++q){let ne;j?ne=Nv(j*this.resolution,S,he,F[q],k):ne=[S.slice(he,F[q])];for(let me=0,_e=ne.length;me<_e;++me){let fe=ne[me],ve=0,Ee=fe.length;if(J==null){let Pe=Vv(g.maxAngle,fe,0,fe.length,2);ve=Pe[0],Ee=Pe[1]}for(let Pe=ve;Pe<Ee;Pe+=k)v.push(fe[Pe],fe[Pe+1]);let Re=v.length;he=F[q],this.drawChars_(w,Re),w=Re}}this.endGeometry(r)}else{let F=g.overflow?null:[];switch(T){case"Point":case"MultiPoint":S=e.getFlatCoordinates();break;case"LineString":S=e.getFlatMidpoint();break;case"Circle":S=e.getCenter();break;case"MultiLineString":S=e.getFlatMidpoints(),k=2;break;case"Polygon":S=e.getFlatInteriorPoint(),g.overflow||F.push(S[2]/this.resolution),k=3;break;case"MultiPolygon":let ne=e.getFlatInteriorPoints();S=[];for(let me=0,_e=ne.length;me<_e;me+=3)g.overflow||F.push(ne[me+2]/this.resolution),S.push(ne[me],ne[me+1]);if(S.length===0)return;k=2;break;default:}let j=this.appendFlatPointCoordinates(S,k);if(j===w)return;if(F&&(j-w)/2!==S.length/k){let ne=w/2;F=F.filter((me,_e)=>{let fe=v[(ne+_e)*2]===S[_e*k]&&v[(ne+_e)*2+1]===S[_e*k+1];return fe||--ne,fe})}this.saveTextStates_(),(g.backgroundFill||g.backgroundStroke)&&(this.setFillStrokeStyle(g.backgroundFill,g.backgroundStroke),g.backgroundFill&&this.updateFillStyle(this.state,this.createFill),g.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(e,r,a);let J=g.padding;if(J!=Co&&(g.scale[0]<0||g.scale[1]<0)){let ne=g.padding[0],me=g.padding[1],_e=g.padding[2],fe=g.padding[3];g.scale[0]<0&&(me=-me,fe=-fe),g.scale[1]<0&&(ne=-ne,_e=-_e),J=[ne,me,_e,fe]}let he=this.pixelRatio;this.instructions.push([gt.DRAW_IMAGE,w,j,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,J==Co?Co:J.map(function(ne){return ne*he}),!!g.backgroundFill,!!g.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,F]);let q=1/he,Z=this.state.fillStyle;g.backgroundFill&&(this.state.fillStyle=sr,this.hitDetectionInstructions.push(this.createFill(this.state))),this.hitDetectionInstructions.push([gt.DRAW_IMAGE,w,j,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[q,q],NaN,this.declutterMode_,this.declutterImageWithText_,J,!!g.backgroundFill,!!g.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?sr:this.fillKey_,this.textOffsetX_,this.textOffsetY_,F]),g.backgroundFill&&(this.state.fillStyle=Z,this.hitDetectionInstructions.push(this.createFill(this.state))),this.endGeometry(r)}}saveTextStates_(){let e=this.textStrokeState_,r=this.textState_,a=this.textFillState_,l=this.strokeKey_;e&&(l in this.strokeStates||(this.strokeStates[l]={strokeStyle:e.strokeStyle,lineCap:e.lineCap,lineDashOffset:e.lineDashOffset,lineWidth:e.lineWidth,lineJoin:e.lineJoin,miterLimit:e.miterLimit,lineDash:e.lineDash}));let o=this.textKey_;o in this.textStates||(this.textStates[o]={font:r.font,textAlign:r.textAlign||aa,justify:r.justify,textBaseline:r.textBaseline||Ja,scale:r.scale});let g=this.fillKey_;a&&(g in this.fillStates||(this.fillStates[g]={fillStyle:a.fillStyle}))}drawChars_(e,r){let a=this.textStrokeState_,l=this.textState_,o=this.strokeKey_,g=this.textKey_,v=this.fillKey_;this.saveTextStates_();let w=this.pixelRatio,T=lu[l.textBaseline],S=this.textOffsetY_*w,k=this.text_,F=a?a.lineWidth*Math.abs(l.scale[0])/2:0;this.instructions.push([gt.DRAW_CHARS,e,r,T,l.overflow,v,l.maxAngle,w,S,o,F*w,k,g,1,this.declutterMode_]),this.hitDetectionInstructions.push([gt.DRAW_CHARS,e,r,T,l.overflow,v&&sr,l.maxAngle,w,S,o,F*w,k,g,1/w,this.declutterMode_])}setTextStyle(e,r){let a,l,o;if(!e)this.text_="";else{let g=e.getFill();g?(l=this.textFillState_,l||(l={},this.textFillState_=l),l.fillStyle=Mn(g.getColor()||sr)):(l=null,this.textFillState_=l);let v=e.getStroke();if(!v)o=null,this.textStrokeState_=o;else{o=this.textStrokeState_,o||(o={},this.textStrokeState_=o);let J=v.getLineDash(),he=v.getLineDashOffset(),q=v.getWidth(),Z=v.getMiterLimit();o.lineCap=v.getLineCap()||Vs,o.lineDash=J?J.slice():An,o.lineDashOffset=he===void 0?Pn:he,o.lineJoin=v.getLineJoin()||Gs,o.lineWidth=q===void 0?Io:q,o.miterLimit=Z===void 0?wo:Z,o.strokeStyle=Mn(v.getColor()||So)}a=this.textState_;let w=e.getFont()||op;fv(w);let T=e.getScaleArray();a.overflow=e.getOverflow(),a.font=w,a.maxAngle=e.getMaxAngle(),a.placement=e.getPlacement(),a.textAlign=e.getTextAlign(),a.repeat=e.getRepeat(),a.justify=e.getJustify(),a.textBaseline=e.getTextBaseline()||Ja,a.backgroundFill=e.getBackgroundFill(),a.backgroundStroke=e.getBackgroundStroke(),a.padding=e.getPadding()||Co,a.scale=T===void 0?[1,1]:T;let S=e.getOffsetX(),k=e.getOffsetY(),F=e.getRotateWithView(),j=e.getRotation();this.text_=e.getText()||"",this.textOffsetX_=S===void 0?0:S,this.textOffsetY_=k===void 0?0:k,this.textRotateWithView_=F===void 0?!1:F,this.textRotation_=j===void 0?0:j,this.strokeKey_=o?(typeof o.strokeStyle=="string"?o.strokeStyle:Gt(o.strokeStyle))+o.lineCap+o.lineDashOffset+"|"+o.lineWidth+o.lineJoin+o.miterLimit+"["+o.lineDash.join()+"]":"",this.textKey_=a.font+a.scale+(a.textAlign||"?")+(a.repeat||"?")+(a.justify||"?")+(a.textBaseline||"?"),this.fillKey_=l&&l.fillStyle?typeof l.fillStyle=="string"?l.fillStyle:"|"+Gt(l.fillStyle):""}this.declutterMode_=e.getDeclutterMode(),this.declutterImageWithText_=r}},Gv=Hg;var K2={Circle:Xg,Default:Ws,Image:Ov,LineString:Bv,Polygon:Xg,Text:Gv},Yg=class{constructor(e,r,a,l){this.tolerance_=e,this.maxExtent_=r,this.pixelRatio_=l,this.resolution_=a,this.buildersByZIndex_={}}finish(){let e={};for(let r in this.buildersByZIndex_){e[r]=e[r]||{};let a=this.buildersByZIndex_[r];for(let l in a){let o=a[l].finish();e[r][l]=o}}return e}getBuilder(e,r){let a=e!==void 0?e.toString():"0",l=this.buildersByZIndex_[a];l===void 0&&(l={},this.buildersByZIndex_[a]=l);let o=l[r];if(o===void 0){let g=K2[r];o=new g(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),l[r]=o}return o}},jv=Yg;var Kg=class extends kd{constructor(e){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=e,this.declutterExecutorGroup=null}getFeatures(e){return St()}getData(e){return null}prepareFrame(e){return St()}renderFrame(e,r){return St()}loadedTileCallback(e,r,a){e[r]||(e[r]={}),e[r][a.tileCoord.toString()]=a}createLoadedTileFinder(e,r,a){return(l,o)=>{let g=this.loadedTileCallback.bind(this,a,l);return e.forEachLoadedTile(r,l,o,g)}}forEachFeatureAtCoordinate(e,r,a,l,o){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(e){let r=e.target;(r.getState()===Tt.LOADED||r.getState()===Tt.ERROR)&&this.renderIfReadyAndVisible()}loadImage(e){let r=e.getState();return r!=Tt.LOADED&&r!=Tt.ERROR&&e.addEventListener(li.CHANGE,this.boundHandleImageChange_),r==Tt.IDLE&&(e.load(),r=e.getState()),r==Tt.LOADED}renderIfReadyAndVisible(){let e=this.getLayer();e&&e.getVisible()&&e.getSourceState()==="ready"&&e.changed()}renderDeferred(e){}disposeInternal(){delete this.layer_,super.disposeInternal()}},pc=Kg;var Jg=class extends mi{constructor(e,r,a,l){super(e),this.inversePixelTransform=r,this.frameState=a,this.context=l}},Uv=Jg;var Qg=class{constructor(){this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(CanvasRenderingContext2D.prototype,{get:(e,r)=>{if(typeof Hh()[r]=="function")return this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(r),this.pushMethodArgs_},set:(e,r,a)=>(this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(r,a),!0)})}pushMethodArgs_=(...e)=>(this.instructions_[this.zIndex+this.offset_].push(e),this);getContext(){return this.context_}draw(e){this.instructions_.forEach(r=>{for(let a=0,l=r.length;a<l;a+=2){let o=r[a],g=r[a+1];if(typeof e[o]=="function")e[o](...g);else{if(typeof g=="function"){e[o]=g(e);continue}e[o]=g}}})}clear(){this.instructions_.length=0,this.zIndex=0,this.offset_=0}offset(){this.offset_=this.instructions_.length,this.zIndex=0}},fp=Qg;var ty=[],fc=null;function J2(){fc=Wi(1,1,void 0,{willReadFrequently:!0})}var ey=class extends pc{constructor(e){super(e),this.container=null,this.renderedResolution,this.tempTransform=mr(),this.pixelTransform=mr(),this.inversePixelTransform=mr(),this.context=null,this.deferredContext_=null,this.containerReused=!1,this.pixelContext_=null,this.frameState=null}getImageData(e,r,a){fc||J2(),fc.clearRect(0,0,1,1);let l;try{fc.drawImage(e,r,a,1,1,0,0,1,1),l=fc.getImageData(0,0,1,1).data}catch{return fc=null,null}return l}getBackground(e){let a=this.getLayer().getBackground();return typeof a=="function"&&(a=a(e.viewState.resolution)),a||void 0}useContainer(e,r,a){let l=this.getLayer().getClassName(),o,g;if(e&&e.className===l&&(!a||e&&e.style.backgroundColor&&vn(bo(e.style.backgroundColor),bo(a)))){let v=e.firstElementChild;v instanceof HTMLCanvasElement&&(g=v.getContext("2d"))}if(g&&g.canvas.style.transform===r?(this.container=e,this.context=g,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){o=document.createElement("div"),o.className=l;let v=o.style;v.position="absolute",v.width="100%",v.height="100%",g=Wi();let w=g.canvas;o.appendChild(w),v=w.style,v.position="absolute",v.left="0",v.transformOrigin="top left",this.container=o,this.context=g}!this.containerReused&&a&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=a)}clipUnrotated(e,r,a){let l=tm(a),o=im(a),g=em(a),v=Qf(a);rr(r.coordinateToPixelTransform,l),rr(r.coordinateToPixelTransform,o),rr(r.coordinateToPixelTransform,g),rr(r.coordinateToPixelTransform,v);let w=this.inversePixelTransform;rr(w,l),rr(w,o),rr(w,g),rr(w,v),e.save(),e.beginPath(),e.moveTo(Math.round(l[0]),Math.round(l[1])),e.lineTo(Math.round(o[0]),Math.round(o[1])),e.lineTo(Math.round(g[0]),Math.round(g[1])),e.lineTo(Math.round(v[0]),Math.round(v[1])),e.clip()}dispatchRenderEvent_(e,r,a){let l=this.getLayer();if(l.hasListener(e)){let o=new Uv(e,this.inversePixelTransform,a,r);l.dispatchEvent(o)}}preRender(e,r){this.frameState=r,!r.declutter&&this.dispatchRenderEvent_(Bs.PRERENDER,e,r)}postRender(e,r){r.declutter||this.dispatchRenderEvent_(Bs.POSTRENDER,e,r)}renderDeferredInternal(e){}getRenderContext(e){return e.declutter&&!this.deferredContext_&&(this.deferredContext_=new fp),e.declutter?this.deferredContext_.getContext():this.context}renderDeferred(e){e.declutter&&(this.dispatchRenderEvent_(Bs.PRERENDER,this.context,e),e.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(e),this.dispatchRenderEvent_(Bs.POSTRENDER,this.context,e))}getRenderTransform(e,r,a,l,o,g,v){let w=o/2,T=g/2,S=l/r,k=-S,F=-e[0]+v,j=-e[1];return an(this.tempTransform,w,T,S,k,-a,F,j)}disposeInternal(){delete this.frameState,super.disposeInternal()}},mp=ey;function $v(h,e,r,a,l,o,g,v,w,T,S,k){let F=h[e],j=h[e+1],J=0,he=0,q=0,Z=0;function ne(){J=F,he=j,e+=a,F=h[e],j=h[e+1],Z+=q,q=Math.sqrt((F-J)*(F-J)+(j-he)*(j-he))}do ne();while(e<r-a&&Z+q<o);let me=q===0?0:(o-Z)/q,_e=Dr(J,F,me),fe=Dr(he,j,me),ve=e-a,Ee=Z,Re=o+v*w(T,l,S);for(;e<r-a&&Z+q<Re;)ne();me=q===0?0:(Re-Z)/q;let Pe=Dr(J,F,me),Ye=Dr(he,j,me),je;if(k){let tt=[_e,fe,Pe,Ye];Vd(tt,0,4,2,k,tt,tt),je=tt[0]>tt[2]}else je=_e>Pe;let Ke=Math.PI,xt=[],At=ve+a===e;e=ve,q=0,Z=Ee,F=h[e],j=h[e+1];let rt;if(At){ne(),rt=Math.atan2(j-he,F-J),je&&(rt+=rt>0?-Ke:Ke);let tt=(Pe+_e)/2,yt=(Ye+fe)/2;return xt[0]=[tt,yt,(Re-o)/2,rt,l],xt}l=l.replace(/\n/g," ");for(let tt=0,yt=l.length;tt<yt;){ne();let ut=Math.atan2(j-he,F-J);if(je&&(ut+=ut>0?-Ke:Ke),rt!==void 0){let Ue=ut-rt;if(Ue+=Ue>Ke?-2*Ke:Ue<-Ke?2*Ke:0,Math.abs(Ue)>g)return null}rt=ut;let Mt=tt,mt=0;for(;tt<yt;++tt){let Ue=je?yt-tt-1:tt,ki=v*w(T,l[Ue],S);if(e+a<r&&Z+q<o+mt+ki/2)break;mt+=ki}if(tt===Mt)continue;let Ft=je?l.substring(yt-Mt,yt-tt):l.substring(Mt,tt);me=q===0?0:(o+mt/2-Z)/q;let Bt=Dr(J,F,me),Ei=Dr(he,j,me);xt.push([Bt,Ei,mt/2,ut,Ft]),o+=mt}return xt}var mc=Sn(),ha=[],Mo=[],Ao=[],ua=[];function qv(h){return h[3].declutterBox}var Wv=new RegExp("[\u0591-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFC\u0800-\u0FFF\uE800-\uEFFF]");function iy(h,e){return e==="start"?e=Wv.test(h)?"right":"left":e==="end"&&(e=Wv.test(h)?"left":"right"),lu[e]}function Q2(h,e,r){return r>0&&h.push(`
|
|
583
583
|
`,""),h.push(e,""),h}var ry=class{constructor(e,r,a,l,o){this.overlaps=a,this.pixelRatio=r,this.resolution=e,this.alignAndScaleFill_,this.instructions=l.instructions,this.coordinates=l.coordinates,this.coordinateCache_={},this.renderedTransform_=mr(),this.hitDetectionInstructions=l.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=l.fillStates||{},this.strokeStates=l.strokeStates||{},this.textStates=l.textStates||{},this.widths_={},this.labels_={},this.zIndexContext_=o?new fp:null}getZIndexContext(){return this.zIndexContext_}createLabel(e,r,a,l){let o=e+r+a+l;if(this.labels_[o])return this.labels_[o];let g=l?this.strokeStates[l]:null,v=a?this.fillStates[a]:null,w=this.textStates[r],T=this.pixelRatio,S=[w.scale[0]*T,w.scale[1]*T],k=Array.isArray(e),F=w.justify?lu[w.justify]:iy(Array.isArray(e)?e[0]:e,w.textAlign||aa),j=l&&g.lineWidth?g.lineWidth:0,J=k?e:e.split(`
|
|
584
584
|
`).reduce(Q2,[]),{width:he,height:q,widths:Z,heights:ne,lineWidths:me}=gv(w,J),_e=he+j,fe=[],ve=(_e+2)*S[0],Ee=(q+j)*S[1],Re={width:ve<0?Math.floor(ve):Math.ceil(ve),height:Ee<0?Math.floor(Ee):Math.ceil(Ee),contextInstructions:fe};(S[0]!=1||S[1]!=1)&&fe.push("scale",S),l&&(fe.push("strokeStyle",g.strokeStyle),fe.push("lineWidth",j),fe.push("lineCap",g.lineCap),fe.push("lineJoin",g.lineJoin),fe.push("miterLimit",g.miterLimit),fe.push("setLineDash",[g.lineDash]),fe.push("lineDashOffset",g.lineDashOffset)),a&&fe.push("fillStyle",v.fillStyle),fe.push("textBaseline","middle"),fe.push("textAlign","center");let Pe=.5-F,Ye=F*_e+Pe*j,je=[],Ke=[],xt=0,At=0,rt=0,tt=0,yt;for(let ut=0,Mt=J.length;ut<Mt;ut+=2){let mt=J[ut];if(mt===`
|
|
585
|
-
`){At+=xt,xt=0,Ye=F*_e+Pe*j,++tt;continue}let Ft=J[ut+1]||w.font;Ft!==yt&&(l&&je.push("font",Ft),a&&Ke.push("font",Ft),yt=Ft),xt=Math.max(xt,ne[rt]);let Bt=[mt,Ye+Pe*Z[rt]+F*(Z[rt]-me[tt]),.5*(j+xt)+At];Ye+=Z[rt],l&&je.push("strokeText",Bt),a&&Ke.push("fillText",Bt),++rt}return Array.prototype.push.apply(fe,je),Array.prototype.push.apply(fe,Ke),this.labels_[o]=Re,Re}replayTextBackground_(e,r,a,l,o,g,v){e.beginPath(),e.moveTo.apply(e,r),e.lineTo.apply(e,a),e.lineTo.apply(e,l),e.lineTo.apply(e,o),e.lineTo.apply(e,r),g&&(this.alignAndScaleFill_=g[2],this.fill_(e)),v&&(this.setStrokeStyle_(e,v),e.stroke())}calculateImageOrLabelDimensions_(e,r,a,l,o,g,v,w,T,S,k,F,j,J,he,q){v*=F[0],w*=F[1];let Z=a-v,ne=l-w,me=o+T>e?e-T:o,_e=g+S>r?r-S:g,fe=J[3]+me*F[0]+J[1],ve=J[0]+_e*F[1]+J[2],Ee=Z-J[3],Re=ne-J[0];(he||k!==0)&&(ha[0]=Ee,ua[0]=Ee,ha[1]=Re,Mo[1]=Re,Mo[0]=Ee+fe,Ao[0]=Mo[0],Ao[1]=Re+ve,ua[1]=Ao[1]);let Pe;return k!==0?(Pe=an(mr(),a,l,1,1,k,-a,-l),rr(Pe,ha),rr(Pe,Mo),rr(Pe,Ao),rr(Pe,ua),yo(Math.min(ha[0],Mo[0],Ao[0],ua[0]),Math.min(ha[1],Mo[1],Ao[1],ua[1]),Math.max(ha[0],Mo[0],Ao[0],ua[0]),Math.max(ha[1],Mo[1],Ao[1],ua[1]),mc)):yo(Math.min(Ee,Ee+fe),Math.min(Re,Re+ve),Math.max(Ee,Ee+fe),Math.max(Re,Re+ve),mc),j&&(Z=Math.round(Z),ne=Math.round(ne)),{drawImageX:Z,drawImageY:ne,drawImageW:me,drawImageH:_e,originX:T,originY:S,declutterBox:{minX:mc[0],minY:mc[1],maxX:mc[2],maxY:mc[3],value:q},canvasTransform:Pe,scale:F}}replayImageOrLabel_(e,r,a,l,o,g,v){let w=!!(g||v),T=l.declutterBox,S=v?v[2]*l.scale[0]/2:0;return T.minX-S<=r[0]&&T.maxX+S>=0&&T.minY-S<=r[1]&&T.maxY+S>=0&&(w&&this.replayTextBackground_(e,ha,Mo,Ao,ua,g,v),yv(e,l.canvasTransform,o,a,l.originX,l.originY,l.drawImageW,l.drawImageH,l.drawImageX,l.drawImageY,l.scale)),!0}fill_(e){let r=this.alignAndScaleFill_;if(r){let a=rr(this.renderedTransform_,[0,0]),l=512*this.pixelRatio;e.save(),e.translate(a[0]%l,a[1]%l),r!==1&&e.scale(r,r),e.rotate(this.viewRotation_)}e.fill(),r&&e.restore()}setStrokeStyle_(e,r){e.strokeStyle=r[1],e.lineWidth=r[2],e.lineCap=r[3],e.lineJoin=r[4],e.miterLimit=r[5],e.lineDashOffset=r[7],e.setLineDash(r[6])}drawLabelWithPointPlacement_(e,r,a,l){let o=this.textStates[r],g=this.createLabel(e,r,l,a),v=this.strokeStates[a],w=this.pixelRatio,T=iy(Array.isArray(e)?e[0]:e,o.textAlign||aa),S=lu[o.textBaseline||Ja],k=v&&v.lineWidth?v.lineWidth:0,F=g.width/w-2*o.scale[0],j=T*F+2*(.5-T)*k,J=S*g.height/w+2*(.5-S)*k;return{label:g,anchorX:j,anchorY:J}}execute_(e,r,a,l,o,g,v,w){let T=this.zIndexContext_,S;this.pixelCoordinates_&&vn(a,this.renderedTransform_)?S=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),S=Cn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),N0(this.renderedTransform_,a));let k=0,F=l.length,j=0,J,he,q,Z,ne,me,_e,fe,ve,Ee,Re,Pe,Ye,je=0,Ke=0,xt=null,At=null,rt=this.coordinateCache_,tt=this.viewRotation_,yt=Math.round(Math.atan2(-a[1],a[0])*1e12)/1e12,ut={context:e,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:tt},Mt=this.instructions!=l||this.overlaps?0:200,mt,Ft,Bt,Ei;for(;k<F;){let Ue=l[k];switch(Ue[0]){case gt.BEGIN_GEOMETRY:mt=Ue[1],Ei=Ue[3],mt.getGeometry()?v!==void 0&&!Qi(v,Ei.getExtent())?k=Ue[2]+1:++k:k=Ue[2],T&&(T.zIndex=Ue[4]);break;case gt.BEGIN_PATH:je>Mt&&(this.fill_(e),je=0),Ke>Mt&&(e.stroke(),Ke=0),!je&&!Ke&&(e.beginPath(),ne=NaN,me=NaN),++k;break;case gt.CIRCLE:j=Ue[1];let xi=S[j],Nr=S[j+1],ar=S[j+2],Ln=S[j+3],lr=ar-xi,un=Ln-Nr,dn=Math.sqrt(lr*lr+un*un);e.moveTo(xi+dn,Nr),e.arc(xi,Nr,dn,0,2*Math.PI,!0),++k;break;case gt.CLOSE_PATH:e.closePath(),++k;break;case gt.CUSTOM:j=Ue[1],J=Ue[2];let oi=Ue[3],Dn=Ue[4],Ie=Ue[5];ut.geometry=oi,ut.feature=mt,k in rt||(rt[k]=[]);let tr=rt[k];Ie?Ie(S,j,J,2,tr):(tr[0]=S[j],tr[1]=S[j+1],tr.length=2),T&&(T.zIndex=Ue[6]),Dn(tr,ut),++k;break;case gt.DRAW_IMAGE:j=Ue[1],J=Ue[2],ve=Ue[3],he=Ue[4],q=Ue[5];let Ti=Ue[6],Et=Ue[7],ci=Ue[8],Vr=Ue[9],Fn=Ue[10],pn=Ue[11],os=Ue[12],fn=Ue[13];Z=Ue[14]||"declutter";let Xn=Ue[15];if(!ve&&Ue.length>=20){Ee=Ue[19],Re=Ue[20],Pe=Ue[21],Ye=Ue[22];let ae=this.drawLabelWithPointPlacement_(Ee,Re,Pe,Ye);ve=ae.label,Ue[3]=ve;let de=Ue[23];he=(ae.anchorX-de)*this.pixelRatio,Ue[4]=he;let se=Ue[24];q=(ae.anchorY-se)*this.pixelRatio,Ue[5]=q,Ti=ve.height,Ue[6]=Ti,fn=ve.width,Ue[13]=fn}let zn;Ue.length>25&&(zn=Ue[25]);let Oe,br,Zi;Ue.length>17?(Oe=Ue[16],br=Ue[17],Zi=Ue[18]):(Oe=Co,br=!1,Zi=!1),Fn&&yt?pn+=tt:!Fn&&!yt&&(pn-=tt);let Hs=0;for(;j<J;j+=2){if(zn&&zn[Hs++]<fn/this.pixelRatio)continue;let ae=this.calculateImageOrLabelDimensions_(ve.width,ve.height,S[j],S[j+1],fn,Ti,he,q,ci,Vr,pn,os,o,Oe,br||Zi,mt),de=[e,r,ve,ae,Et,br?xt:null,Zi?At:null];if(w){let se,ge,Te;if(Xn){let qe=J-j;if(!Xn[qe]){Xn[qe]={args:de,declutterMode:Z};continue}let Qe=Xn[qe];se=Qe.args,ge=Qe.declutterMode,delete Xn[qe],Te=qv(se)}let Se,Ce;if(se&&(ge!=="declutter"||!w.collides(Te))&&(Se=!0),(Z!=="declutter"||!w.collides(ae.declutterBox))&&(Ce=!0),ge==="declutter"&&Z==="declutter"){let qe=Se&&Ce;Se=qe,Ce=qe}Se&&(ge!=="none"&&w.insert(Te),this.replayImageOrLabel_.apply(this,se)),Ce&&(Z!=="none"&&w.insert(ae.declutterBox),this.replayImageOrLabel_.apply(this,de))}else this.replayImageOrLabel_.apply(this,de)}++k;break;case gt.DRAW_CHARS:let Li=Ue[1],Ne=Ue[2],bt=Ue[3],wt=Ue[4];Ye=Ue[5];let gi=Ue[6],Jr=Ue[7],vt=Ue[8];Pe=Ue[9];let On=Ue[10];Ee=Ue[11],Re=Ue[12];let yi=[Ue[13],Ue[13]];Z=Ue[14]||"declutter";let Q=this.textStates[Re],O=Q.font,N=[Q.scale[0]*Jr,Q.scale[1]*Jr],$;O in this.widths_?$=this.widths_[O]:($={},this.widths_[O]=$);let H=Wd(S,Li,Ne,2),ce=Math.abs(N[0])*Cg(O,Ee,$);if(wt||ce<=H){let ae=this.textStates[Re].textAlign,de=(H-ce)*iy(Ee,ae),se=$v(S,Li,Ne,2,Ee,de,gi,Math.abs(N[0]),Cg,O,$,yt?0:this.viewRotation_);e:if(se){let ge=[],Te,Se,Ce,qe,Qe;if(Pe)for(Te=0,Se=se.length;Te<Se;++Te){Qe=se[Te],Ce=Qe[4],qe=this.createLabel(Ce,Re,"",Pe),he=Qe[2]+(N[0]<0?-On:On),q=bt*qe.height+(.5-bt)*2*On*N[1]/N[0]-vt;let dt=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Qe[0],Qe[1],qe.width,qe.height,he,q,0,0,Qe[3],yi,!1,Co,!1,mt);if(w&&Z==="declutter"&&w.collides(dt.declutterBox))break e;ge.push([e,r,qe,dt,1,null,null])}if(Ye)for(Te=0,Se=se.length;Te<Se;++Te){Qe=se[Te],Ce=Qe[4],qe=this.createLabel(Ce,Re,Ye,""),he=Qe[2],q=bt*qe.height-vt;let dt=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Qe[0],Qe[1],qe.width,qe.height,he,q,0,0,Qe[3],yi,!1,Co,!1,mt);if(w&&Z==="declutter"&&w.collides(dt.declutterBox))break e;ge.push([e,r,qe,dt,1,null,null])}w&&Z!=="none"&&w.load(ge.map(qv));for(let dt=0,_t=ge.length;dt<_t;++dt)this.replayImageOrLabel_.apply(this,ge[dt])}}++k;break;case gt.END_GEOMETRY:if(g!==void 0){mt=Ue[1];let ae=g(mt,Ei);if(ae)return ae}++k;break;case gt.FILL:Mt?je++:this.fill_(e),++k;break;case gt.MOVE_TO_LINE_TO:for(j=Ue[1],J=Ue[2],Ft=S[j],Bt=S[j+1],_e=Ft+.5|0,fe=Bt+.5|0,(_e!==ne||fe!==me)&&(e.moveTo(Ft,Bt),ne=_e,me=fe),j+=2;j<J;j+=2)Ft=S[j],Bt=S[j+1],_e=Ft+.5|0,fe=Bt+.5|0,(j==J-2||_e!==ne||fe!==me)&&(e.lineTo(Ft,Bt),ne=_e,me=fe);++k;break;case gt.SET_FILL_STYLE:xt=Ue,this.alignAndScaleFill_=Ue[2],je&&(this.fill_(e),je=0,Ke&&(e.stroke(),Ke=0)),e.fillStyle=Ue[1],++k;break;case gt.SET_STROKE_STYLE:At=Ue,Ke&&(e.stroke(),Ke=0),this.setStrokeStyle_(e,Ue),++k;break;case gt.STROKE:Mt?Ke++:e.stroke(),++k;break;default:++k;break}}je&&this.fill_(e),Ke&&e.stroke()}execute(e,r,a,l,o,g){this.viewRotation_=l,this.execute_(e,r,a,this.instructions,o,void 0,void 0,g)}executeHitDetection(e,r,a,l,o){return this.viewRotation_=a,this.execute_(e,[e.canvas.width,e.canvas.height],r,this.hitDetectionInstructions,!0,l,o)}},Zv=ry;var gc=["Polygon","Circle","LineString","Image","Text","Default"],oy=["Image","Text"],Xv=gc.filter(h=>!oy.includes(h)),sy=class{constructor(e,r,a,l,o,g,v){this.maxExtent_=e,this.overlaps_=l,this.pixelRatio_=a,this.resolution_=r,this.renderBuffer_=g,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=mr(),this.renderedContext_=null,this.deferredZIndexContexts_=[],this.createExecutors_(o,v)}clip(e,r){let a=this.getClipCoords(r);e.beginPath(),e.moveTo(a[0],a[1]),e.lineTo(a[2],a[3]),e.lineTo(a[4],a[5]),e.lineTo(a[6],a[7]),e.clip()}createExecutors_(e,r){for(let a in e){let l=this.executorsByZIndex_[a];l===void 0&&(l={},this.executorsByZIndex_[a]=l);let o=e[a];for(let g in o){let v=o[g];l[g]=new Zv(this.resolution_,this.pixelRatio_,this.overlaps_,v,r)}}}hasExecutors(e){for(let r in this.executorsByZIndex_){let a=this.executorsByZIndex_[r];for(let l=0,o=e.length;l<o;++l)if(e[l]in a)return!0}return!1}forEachFeatureAtCoordinate(e,r,a,l,o,g){l=Math.round(l);let v=l*2+1,w=an(this.hitDetectionTransform_,l+.5,l+.5,1/r,-1/r,-a,-e[0],-e[1]),T=!this.hitDetectionContext_;T&&(this.hitDetectionContext_=Wi(v,v,void 0,{willReadFrequently:!0}));let S=this.hitDetectionContext_;S.canvas.width!==v||S.canvas.height!==v?(S.canvas.width=v,S.canvas.height=v):T||S.clearRect(0,0,v,v);let k;this.renderBuffer_!==void 0&&(k=Sn(),Kf(k,e),bn(k,r*(this.renderBuffer_+l),k));let F=eC(l),j;function J(fe,ve){let Ee=S.getImageData(0,0,v,v).data;for(let Re=0,Pe=F.length;Re<Pe;Re++)if(Ee[F[Re]]>0){if(!g||j!=="Image"&&j!=="Text"||g.includes(fe)){let Ye=(F[Re]-3)/4,je=l-Ye%v,Ke=l-(Ye/v|0),xt=o(fe,ve,je*je+Ke*Ke);if(xt)return xt}S.clearRect(0,0,v,v);break}}let he=Object.keys(this.executorsByZIndex_).map(Number);he.sort(Ds);let q,Z,ne,me,_e;for(q=he.length-1;q>=0;--q){let fe=he[q].toString();for(ne=this.executorsByZIndex_[fe],Z=gc.length-1;Z>=0;--Z)if(j=gc[Z],me=ne[j],me!==void 0&&(_e=me.executeHitDetection(S,w,a,J,k),_e))return _e}}getClipCoords(e){let r=this.maxExtent_;if(!r)return null;let a=r[0],l=r[1],o=r[2],g=r[3],v=[a,l,a,g,o,g,o,l];return Cn(v,0,8,2,e,v),v}isEmpty(){return qn(this.executorsByZIndex_)}execute(e,r,a,l,o,g,v){let w=Object.keys(this.executorsByZIndex_).map(Number);w.sort(Ds),g=g||gc;let T,S,k,F,j,J;for(v&&w.reverse(),T=0,S=w.length;T<S;++T){let he=w[T].toString();for(j=this.executorsByZIndex_[he],k=0,F=g.length;k<F;++k){let q=g[k];if(J=j[q],J!==void 0){let Z=v===null?void 0:J.getZIndexContext(),ne=Z?Z.getContext():e,me=this.maxExtent_&&q!=="Image"&&q!=="Text";if(me&&(ne.save(),this.clip(ne,a)),J.execute(ne,r,a,l,o,v),me&&ne.restore(),Z){Z.offset();let _e=w[T];this.deferredZIndexContexts_[_e]||(this.deferredZIndexContexts_[_e]=[]),this.deferredZIndexContexts_[_e].push(Z)}}}}this.renderedContext_=e}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){this.deferredZIndexContexts_.forEach(e=>{e.forEach(r=>{r.draw(this.renderedContext_),r.clear()})})}},ny={};function eC(h){if(ny[h]!==void 0)return ny[h];let e=h*2+1,r=h*h,a=new Array(r+1);for(let o=0;o<=h;++o)for(let g=0;g<=h;++g){let v=o*o+g*g;if(v>r)break;let w=a[v];w||(w=[],a[v]=w),w.push(((h+o)*e+(h+g))*4+3),o>0&&w.push(((h-o)*e+(h+g))*4+3),g>0&&(w.push(((h+o)*e+(h-g))*4+3),o>0&&w.push(((h-o)*e+(h-g))*4+3))}let l=[];for(let o=0,g=a.length;o<g;++o)a[o]&&l.push(...a[o]);return ny[h]=l,l}var Hv=sy;var ay=class extends pp{constructor(e,r,a,l,o,g,v){super(),this.context_=e,this.pixelRatio_=r,this.extent_=a,this.transform_=l,this.transformRotation_=l?cx(Math.atan2(l[1],l[0]),10):0,this.viewRotation_=o,this.squaredTolerance_=g,this.userTransform_=v,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=mr()}drawImages_(e,r,a,l){if(!this.image_)return;let o=Cn(e,r,a,l,this.transform_,this.pixelCoordinates_),g=this.context_,v=this.tmpLocalTransform_,w=g.globalAlpha;this.imageOpacity_!=1&&(g.globalAlpha=w*this.imageOpacity_);let T=this.imageRotation_;this.transformRotation_===0&&(T-=this.viewRotation_),this.imageRotateWithView_&&(T+=this.viewRotation_);for(let S=0,k=o.length;S<k;S+=2){let F=o[S]-this.imageAnchorX_,j=o[S+1]-this.imageAnchorY_;if(T!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let J=F+this.imageAnchorX_,he=j+this.imageAnchorY_;an(v,J,he,1,1,T,-J,-he),g.save(),g.transform.apply(g,v),g.translate(J,he),g.scale(this.imageScale_[0],this.imageScale_[1]),g.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),g.restore()}else g.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,F,j,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(g.globalAlpha=w)}drawText_(e,r,a,l){if(!this.textState_||this.text_==="")return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);let o=Cn(e,r,a,l,this.transform_,this.pixelCoordinates_),g=this.context_,v=this.textRotation_;for(this.transformRotation_===0&&(v-=this.viewRotation_),this.textRotateWithView_&&(v+=this.viewRotation_);r<a;r+=l){let w=o[r]+this.textOffsetX_,T=o[r+1]+this.textOffsetY_;v!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(g.save(),g.translate(w-this.textOffsetX_,T-this.textOffsetY_),g.rotate(v),g.translate(this.textOffsetX_,this.textOffsetY_),g.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&g.strokeText(this.text_,0,0),this.textFillState_&&g.fillText(this.text_,0,0),g.restore()):(this.textStrokeState_&&g.strokeText(this.text_,w,T),this.textFillState_&&g.fillText(this.text_,w,T))}}moveToLineTo_(e,r,a,l,o){let g=this.context_,v=Cn(e,r,a,l,this.transform_,this.pixelCoordinates_);g.moveTo(v[0],v[1]);let w=v.length;o&&(w-=2);for(let T=2;T<w;T+=2)g.lineTo(v[T],v[T+1]);return o&&g.closePath(),a}drawRings_(e,r,a,l){for(let o=0,g=a.length;o<g;++o)r=this.moveToLineTo_(e,r,a[o],l,!0);return r}drawCircle(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=Cx(e,this.transform_,this.pixelCoordinates_),a=r[2]-r[0],l=r[3]-r[1],o=Math.sqrt(a*a+l*l),g=this.context_;g.beginPath(),g.arc(r[0],r[1],o,0,2*Math.PI),this.fillState_&&g.fill(),this.strokeState_&&g.stroke()}this.text_!==""&&this.drawText_(e.getCenter(),0,2,2)}}setStyle(e){this.setFillStrokeStyle(e.getFill(),e.getStroke()),this.setImageStyle(e.getImage()),this.setTextStyle(e.getText())}setTransform(e){this.transform_=e}drawGeometry(e){switch(e.getType()){case"Point":this.drawPoint(e);break;case"LineString":this.drawLineString(e);break;case"Polygon":this.drawPolygon(e);break;case"MultiPoint":this.drawMultiPoint(e);break;case"MultiLineString":this.drawMultiLineString(e);break;case"MultiPolygon":this.drawMultiPolygon(e);break;case"GeometryCollection":this.drawGeometryCollection(e);break;case"Circle":this.drawCircle(e);break;default:}}drawFeature(e,r){let a=r.getGeometryFunction()(e);a&&(this.setStyle(r),this.drawGeometry(a))}drawGeometryCollection(e){let r=e.getGeometriesArray();for(let a=0,l=r.length;a<l;++a)this.drawGeometry(r[a])}drawPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawMultiPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawLineString(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getFlatCoordinates();r.beginPath(),this.moveToLineTo_(a,0,a.length,e.getStride(),!1),r.stroke()}if(this.text_!==""){let r=e.getFlatMidpoint();this.drawText_(r,0,2,2)}}}drawMultiLineString(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getExtent();if(Qi(this.extent_,r)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let a=this.context_,l=e.getFlatCoordinates(),o=0,g=e.getEnds(),v=e.getStride();a.beginPath();for(let w=0,T=g.length;w<T;++w)o=this.moveToLineTo_(l,o,g[w],v,!1);a.stroke()}if(this.text_!==""){let a=e.getFlatMidpoints();this.drawText_(a,0,a.length,2)}}}drawPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_;r.beginPath(),this.drawRings_(e.getOrientedFlatCoordinates(),0,e.getEnds(),e.getStride()),this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoint();this.drawText_(r,0,2,2)}}}drawMultiPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getOrientedFlatCoordinates(),l=0,o=e.getEndss(),g=e.getStride();r.beginPath();for(let v=0,w=o.length;v<w;++v){let T=o[v];l=this.drawRings_(a,l,T,g)}this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoints();this.drawText_(r,0,r.length,2)}}}setContextFillState_(e){let r=this.context_,a=this.contextFillState_;a?a.fillStyle!=e.fillStyle&&(a.fillStyle=e.fillStyle,r.fillStyle=e.fillStyle):(r.fillStyle=e.fillStyle,this.contextFillState_={fillStyle:e.fillStyle})}setContextStrokeState_(e){let r=this.context_,a=this.contextStrokeState_;a?(a.lineCap!=e.lineCap&&(a.lineCap=e.lineCap,r.lineCap=e.lineCap),vn(a.lineDash,e.lineDash)||r.setLineDash(a.lineDash=e.lineDash),a.lineDashOffset!=e.lineDashOffset&&(a.lineDashOffset=e.lineDashOffset,r.lineDashOffset=e.lineDashOffset),a.lineJoin!=e.lineJoin&&(a.lineJoin=e.lineJoin,r.lineJoin=e.lineJoin),a.lineWidth!=e.lineWidth&&(a.lineWidth=e.lineWidth,r.lineWidth=e.lineWidth),a.miterLimit!=e.miterLimit&&(a.miterLimit=e.miterLimit,r.miterLimit=e.miterLimit),a.strokeStyle!=e.strokeStyle&&(a.strokeStyle=e.strokeStyle,r.strokeStyle=e.strokeStyle)):(r.lineCap=e.lineCap,r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset,r.lineJoin=e.lineJoin,r.lineWidth=e.lineWidth,r.miterLimit=e.miterLimit,r.strokeStyle=e.strokeStyle,this.contextStrokeState_={lineCap:e.lineCap,lineDash:e.lineDash,lineDashOffset:e.lineDashOffset,lineJoin:e.lineJoin,lineWidth:e.lineWidth,miterLimit:e.miterLimit,strokeStyle:e.strokeStyle})}setContextTextState_(e){let r=this.context_,a=this.contextTextState_,l=e.textAlign?e.textAlign:aa;a?(a.font!=e.font&&(a.font=e.font,r.font=e.font),a.textAlign!=l&&(a.textAlign=l,r.textAlign=l),a.textBaseline!=e.textBaseline&&(a.textBaseline=e.textBaseline,r.textBaseline=e.textBaseline)):(r.font=e.font,r.textAlign=l,r.textBaseline=e.textBaseline,this.contextTextState_={font:e.font,textAlign:l,textBaseline:e.textBaseline})}setFillStrokeStyle(e,r){if(!e)this.fillState_=null;else{let a=e.getColor();this.fillState_={fillStyle:Mn(a||sr)}}if(!r)this.strokeState_=null;else{let a=r.getColor(),l=r.getLineCap(),o=r.getLineDash(),g=r.getLineDashOffset(),v=r.getLineJoin(),w=r.getWidth(),T=r.getMiterLimit(),S=o||An;this.strokeState_={lineCap:l!==void 0?l:Vs,lineDash:this.pixelRatio_===1?S:S.map(k=>k*this.pixelRatio_),lineDashOffset:(g||Pn)*this.pixelRatio_,lineJoin:v!==void 0?v:Gs,lineWidth:(w!==void 0?w:Io)*this.pixelRatio_,miterLimit:T!==void 0?T:wo,strokeStyle:Mn(a||So)}}}setImageStyle(e){let r;if(!e||!(r=e.getSize())){this.image_=null;return}let a=e.getPixelRatio(this.pixelRatio_),l=e.getAnchor(),o=e.getOrigin();this.image_=e.getImage(this.pixelRatio_),this.imageAnchorX_=l[0]*a,this.imageAnchorY_=l[1]*a,this.imageHeight_=r[1]*a,this.imageOpacity_=e.getOpacity(),this.imageOriginX_=o[0],this.imageOriginY_=o[1],this.imageRotateWithView_=e.getRotateWithView(),this.imageRotation_=e.getRotation();let g=e.getScaleArray();this.imageScale_=[g[0]*this.pixelRatio_/a,g[1]*this.pixelRatio_/a],this.imageWidth_=r[0]*a}setTextStyle(e){if(!e)this.text_="";else{let r=e.getFill();if(!r)this.textFillState_=null;else{let j=r.getColor();this.textFillState_={fillStyle:Mn(j||sr)}}let a=e.getStroke();if(!a)this.textStrokeState_=null;else{let j=a.getColor(),J=a.getLineCap(),he=a.getLineDash(),q=a.getLineDashOffset(),Z=a.getLineJoin(),ne=a.getWidth(),me=a.getMiterLimit();this.textStrokeState_={lineCap:J!==void 0?J:Vs,lineDash:he||An,lineDashOffset:q||Pn,lineJoin:Z!==void 0?Z:Gs,lineWidth:ne!==void 0?ne:Io,miterLimit:me!==void 0?me:wo,strokeStyle:Mn(j||So)}}let l=e.getFont(),o=e.getOffsetX(),g=e.getOffsetY(),v=e.getRotateWithView(),w=e.getRotation(),T=e.getScaleArray(),S=e.getText(),k=e.getTextAlign(),F=e.getTextBaseline();this.textState_={font:l!==void 0?l:op,textAlign:k!==void 0?k:aa,textBaseline:F!==void 0?F:Ja},this.text_=S!==void 0?Array.isArray(S)?S.reduce((j,J,he)=>j+=he%2?" ":J,""):S:"",this.textOffsetX_=o!==void 0?this.pixelRatio_*o:0,this.textOffsetY_=g!==void 0?this.pixelRatio_*g:0,this.textRotateWithView_=v!==void 0?v:!1,this.textRotation_=w!==void 0?w:0,this.textScale_=[this.pixelRatio_*T[0],this.pixelRatio_*T[1]]}}},Yv=ay;var Cs=.5;function Kv(h,e,r,a,l,o,g,v,w){let T=w?zs(l,w):l,S=h[0]*Cs,k=h[1]*Cs,F=Wi(S,k);F.imageSmoothingEnabled=!1;let j=F.canvas,J=new Yv(F,Cs,l,null,g,v,w?rc(Wn(),w):null),he=r.length,q=Math.floor((256*256*256-1)/he),Z={};for(let me=1;me<=he;++me){let _e=r[me-1],fe=_e.getStyleFunction()||a;if(!fe)continue;let ve=fe(_e,o);if(!ve)continue;Array.isArray(ve)||(ve=[ve]);let Re=(me*q).toString(16).padStart(7,"#00000");for(let Pe=0,Ye=ve.length;Pe<Ye;++Pe){let je=ve[Pe],Ke=je.getGeometryFunction()(_e);if(!Ke||!Qi(T,Ke.getExtent()))continue;let xt=je.clone(),At=xt.getFill();At&&At.setColor(Re);let rt=xt.getStroke();rt&&(rt.setColor(Re),rt.setLineDash(null)),xt.setText(void 0);let tt=je.getImage();if(tt){let mt=tt.getImageSize();if(!mt)continue;let Ft=Wi(mt[0],mt[1],void 0,{alpha:!1}),Bt=Ft.canvas;Ft.fillStyle=Re,Ft.fillRect(0,0,Bt.width,Bt.height),xt.setImage(new Qh({img:Bt,anchor:tt.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:tt.getOrigin(),opacity:1,size:tt.getSize(),scale:tt.getScale(),rotation:tt.getRotation(),rotateWithView:tt.getRotateWithView()}))}let yt=xt.getZIndex()||0,ut=Z[yt];ut||(ut={},Z[yt]=ut,ut.Polygon=[],ut.Circle=[],ut.LineString=[],ut.Point=[]);let Mt=Ke.getType();if(Mt==="GeometryCollection"){let mt=Ke.getGeometriesArrayRecursive();for(let Ft=0,Bt=mt.length;Ft<Bt;++Ft){let Ei=mt[Ft];ut[Ei.getType().replace("Multi","")].push(Ei,xt)}}else ut[Mt.replace("Multi","")].push(Ke,xt)}}let ne=Object.keys(Z).map(Number).sort(Ds);for(let me=0,_e=ne.length;me<_e;++me){let fe=Z[ne[me]];for(let ve in fe){let Ee=fe[ve];for(let Re=0,Pe=Ee.length;Re<Pe;Re+=2){J.setStyle(Ee[Re+1]);for(let Ye=0,je=e.length;Ye<je;++Ye)J.setTransform(e[Ye]),J.drawGeometry(Ee[Re])}}}return F.getImageData(0,0,j.width,j.height)}function Jv(h,e,r){let a=[];if(r){let l=Math.floor(Math.round(h[0])*Cs),o=Math.floor(Math.round(h[1])*Cs),g=(Ii(l,0,r.width-1)+Ii(o,0,r.height-1)*r.width)*4,v=r.data[g],w=r.data[g+1],S=r.data[g+2]+256*(w+256*v),k=Math.floor((256*256*256-1)/e.length);S&&S%k===0&&a.push(e[S/k-1])}return a}var tC=.5,Qv={Point:lC,LineString:sC,Polygon:hC,MultiPoint:cC,MultiLineString:oC,MultiPolygon:aC,GeometryCollection:nC,Circle:iC};function eb(h,e){return parseInt(Gt(h),10)-parseInt(Gt(e),10)}function ly(h,e){let r=cy(h,e);return r*r}function cy(h,e){return tC*h/e}function iC(h,e,r,a){let l=r.getFill(),o=r.getStroke();if(l||o){let v=h.getBuilder(r.getZIndex(),"Circle");v.setFillStrokeStyle(l,o),v.drawCircle(e,a)}let g=r.getText();if(g&&g.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(g),v.drawText(e,a)}}function hy(h,e,r,a,l,o,g,v){let w=[],T=r.getImage();if(T){let F=!0,j=T.getImageState();j==Tt.LOADED||j==Tt.ERROR?F=!1:j==Tt.IDLE&&T.load(),F&&w.push(T.ready())}let S=r.getFill();S&&S.loading()&&w.push(S.ready());let k=w.length>0;return k&&Promise.all(w).then(()=>l(null)),rC(h,e,r,a,o,g,v),k}function rC(h,e,r,a,l,o,g){let v=r.getGeometryFunction()(e);if(!v)return;let w=v.simplifyTransformed(a,l);if(r.getRenderer())tb(h,w,r,e,g);else{let S=Qv[w.getType()];S(h,w,r,e,g,o)}}function tb(h,e,r,a,l){if(e.getType()=="GeometryCollection"){let g=e.getGeometries();for(let v=0,w=g.length;v<w;++v)tb(h,g[v],r,a,l);return}h.getBuilder(r.getZIndex(),"Default").drawCustom(e,a,r.getRenderer(),r.getHitDetectionRenderer(),l)}function nC(h,e,r,a,l,o){let g=e.getGeometriesArray(),v,w;for(v=0,w=g.length;v<w;++v){let T=Qv[g[v].getType()];T(h,g[v],r,a,l,o)}}function sC(h,e,r,a,l){let o=r.getStroke();if(o){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawLineString(e,a,l)}let g=r.getText();if(g&&g.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(g),v.drawText(e,a,l)}}function oC(h,e,r,a,l){let o=r.getStroke();if(o){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawMultiLineString(e,a,l)}let g=r.getText();if(g&&g.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(g),v.drawText(e,a,l)}}function aC(h,e,r,a,l){let o=r.getFill(),g=r.getStroke();if(g||o){let w=h.getBuilder(r.getZIndex(),"Polygon");w.setFillStrokeStyle(o,g),w.drawMultiPolygon(e,a,l)}let v=r.getText();if(v&&v.getText()){let w=h.getBuilder(r.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}function lC(h,e,r,a,l,o){let g=r.getImage(),v=r.getText(),w=v&&v.getText(),T=o&&g&&w?{}:void 0;if(g){if(g.getImageState()!=Tt.LOADED)return;let S=h.getBuilder(r.getZIndex(),"Image");S.setImageStyle(g,T),S.drawPoint(e,a,l)}if(w){let S=h.getBuilder(r.getZIndex(),"Text");S.setTextStyle(v,T),S.drawText(e,a,l)}}function cC(h,e,r,a,l,o){let g=r.getImage(),v=g&&g.getOpacity()!==0,w=r.getText(),T=w&&w.getText(),S=o&&v&&T?{}:void 0;if(v){if(g.getImageState()!=Tt.LOADED)return;let k=h.getBuilder(r.getZIndex(),"Image");k.setImageStyle(g,S),k.drawMultiPoint(e,a,l)}if(T){let k=h.getBuilder(r.getZIndex(),"Text");k.setTextStyle(w,S),k.drawText(e,a,l)}}function hC(h,e,r,a,l){let o=r.getFill(),g=r.getStroke();if(o||g){let w=h.getBuilder(r.getZIndex(),"Polygon");w.setFillStrokeStyle(o,g),w.drawPolygon(e,a,l)}let v=r.getText();if(v&&v.getText()){let w=h.getBuilder(r.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}var uy=class extends mp{constructor(e){super(e),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=Sn(),this.wrappedRenderedExtent_=Sn(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.compositionContext_=null,this.opacity_=1}renderWorlds(e,r,a){let l=r.extent,o=r.viewState,g=o.center,v=o.resolution,w=o.projection,T=o.rotation,S=w.getExtent(),k=this.getLayer().getSource(),F=this.getLayer().getDeclutter(),j=r.pixelRatio,J=r.viewHints,he=!(J[En.ANIMATING]||J[En.INTERACTING]),q=this.compositionContext_,Z=Math.round(r.size[0]*j),ne=Math.round(r.size[1]*j),me=k.getWrapX()&&w.canWrapX(),_e=me?$i(S):null,fe=me?Math.ceil((l[2]-S[2])/_e)+1:1,ve=me?Math.floor((l[0]-S[0])/_e):0;do{let Ee=this.getRenderTransform(g,v,T,j,Z,ne,ve*_e);e.execute(q,[q.canvas.width,q.canvas.height],Ee,T,he,a===void 0?gc:a?oy:Xv,a?F&&r.declutter[F]:void 0)}while(++ve<fe)}setupCompositionContext_(){if(this.opacity_!==1){let e=Wi(this.context.canvas.width,this.context.canvas.height,ty);this.compositionContext_=e}else this.compositionContext_=this.context}releaseCompositionContext_(){if(this.opacity_!==1){let e=this.context.globalAlpha;this.context.globalAlpha=this.opacity_,this.context.drawImage(this.compositionContext_.canvas,0,0),this.context.globalAlpha=e,Jx(this.compositionContext_),ty.push(this.compositionContext_.canvas),this.compositionContext_=null}}renderDeclutter(e){this.getLayer().getDeclutter()&&(this.setupCompositionContext_(),this.renderWorlds(this.replayGroup_,e,!0),this.releaseCompositionContext_())}renderDeferredInternal(e){this.replayGroup_.renderDeferred()}renderFrame(e,r){let a=e.pixelRatio,l=e.layerStatesArray[e.layerIndex];V0(this.pixelTransform,1/a,1/a),j0(this.inversePixelTransform,this.pixelTransform);let o=qf(this.pixelTransform);this.useContainer(r,o,this.getBackground(e));let g=this.context,v=g.canvas,w=this.replayGroup_,T=w&&!w.isEmpty();if(!T&&!(this.getLayer().hasListener(Bs.PRERENDER)||this.getLayer().hasListener(Bs.POSTRENDER)))return null;let S=Math.round(e.size[0]*a),k=Math.round(e.size[1]*a);v.width!=S||v.height!=k?(v.width=S,v.height=k,v.style.transform!==o&&(v.style.transform=o)):this.containerReused||g.clearRect(0,0,S,k),this.preRender(g,e);let F=e.viewState,j=F.projection;this.opacity_=l.opacity,this.setupCompositionContext_();let J=!1;if(T&&l.extent&&this.clipping){let he=Os(l.extent,j);T=Qi(he,e.extent),J=T&&!go(he,e.extent),J&&this.clipUnrotated(this.compositionContext_,e,he)}return T&&this.renderWorlds(w,e,this.getLayer().getDeclutter()?!1:void 0),J&&this.compositionContext_.restore(),this.releaseCompositionContext_(),this.postRender(g,e),this.renderedRotation_!==F.rotation&&(this.renderedRotation_=F.rotation,this.hitDetectionImageData_=null),this.container}getFeatures(e){return new Promise(r=>{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let a=[this.context.canvas.width,this.context.canvas.height];rr(this.pixelTransform,a);let l=this.renderedCenter_,o=this.renderedResolution_,g=this.renderedRotation_,v=this.renderedProjection_,w=this.wrappedRenderedExtent_,T=this.getLayer(),S=[],k=a[0]*Cs,F=a[1]*Cs;S.push(this.getRenderTransform(l,o,g,Cs,k,F,0).slice());let j=T.getSource(),J=v.getExtent();if(j.getWrapX()&&v.canWrapX()&&!go(J,w)){let q=w[0],Z=$i(J),ne=0,me;for(;q<J[0];)--ne,me=Z*ne,S.push(this.getRenderTransform(l,o,g,Cs,k,F,me).slice()),q+=Z;for(ne=0,q=w[2];q>J[2];)++ne,me=Z*ne,S.push(this.getRenderTransform(l,o,g,Cs,k,F,me).slice()),q-=Z}let he=Wn();this.hitDetectionImageData_=Kv(a,S,this.renderedFeatures_,T.getStyleFunction(),w,o,g,ly(o,this.renderedPixelRatio_),he?v:null)}r(Jv(e,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(e,r,a,l,o){if(!this.replayGroup_)return;let g=r.viewState.resolution,v=r.viewState.rotation,w=this.getLayer(),T={},S=function(J,he,q){let Z=Gt(J),ne=T[Z];if(ne){if(ne!==!0&&q<ne.distanceSq){if(q===0)return T[Z]=!0,o.splice(o.lastIndexOf(ne),1),l(J,w,he);ne.geometry=he,ne.distanceSq=q}}else{if(q===0)return T[Z]=!0,l(J,w,he);o.push(T[Z]={feature:J,layer:w,geometry:he,distanceSq:q,callback:l})}},k,F=[this.replayGroup_],j=this.getLayer().getDeclutter();return F.some(J=>k=J.forEachFeatureAtCoordinate(e,g,v,a,S,j&&r.declutter[j]?r.declutter[j].all().map(he=>he.value):null)),k}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let r=this.getLayer(),a=r.getSource();if(!a)return!1;let l=e.viewHints[En.ANIMATING],o=e.viewHints[En.INTERACTING],g=r.getUpdateWhileAnimating(),v=r.getUpdateWhileInteracting();if(this.ready&&!g&&l||!v&&o)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let w=e.extent,T=e.viewState,S=T.projection,k=T.resolution,F=e.pixelRatio,j=r.getRevision(),J=r.getRenderBuffer(),he=r.getRenderOrder();he===void 0&&(he=eb);let q=T.center.slice(),Z=bn(w,J*k),ne=Z.slice(),me=[Z.slice()],_e=S.getExtent();if(a.getWrapX()&&S.canWrapX()&&!go(_e,e.extent)){let rt=$i(_e),tt=Math.max($i(Z)/2,rt);Z[0]=_e[0]-tt,Z[2]=_e[2]+tt,px(q,S);let yt=rm(me[0],S);yt[0]<_e[0]&&yt[2]<_e[2]?me.push([yt[0]+rt,yt[1],yt[2]+rt,yt[3]]):yt[0]>_e[0]&&yt[2]>_e[2]&&me.push([yt[0]-rt,yt[1],yt[2]-rt,yt[3]])}if(this.ready&&this.renderedResolution_==k&&this.renderedRevision_==j&&this.renderedRenderOrder_==he&&go(this.wrappedRenderedExtent_,Z))return vn(this.renderedExtent_,ne)||(this.hitDetectionImageData_=null,this.renderedExtent_=ne),this.renderedCenter_=q,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let fe=new jv(cy(k,F),Z,k,F),ve=Wn(),Ee;if(ve){for(let rt=0,tt=me.length;rt<tt;++rt){let yt=me[rt],ut=zs(yt,S);a.loadFeatures(ut,xx(k,S),ve)}Ee=rc(ve,S)}else for(let rt=0,tt=me.length;rt<tt;++rt)a.loadFeatures(me[rt],k,S);let Re=ly(k,F),Pe=!0,Ye=(rt,tt)=>{let yt,ut=rt.getStyleFunction()||r.getStyleFunction();if(ut&&(yt=ut(rt,k)),yt){let Mt=this.renderFeature(rt,Re,yt,fe,Ee,this.getLayer().getDeclutter(),tt);Pe=Pe&&!Mt}},je=zs(Z,S),Ke=a.getFeaturesInExtent(je);he&&Ke.sort(he);for(let rt=0,tt=Ke.length;rt<tt;++rt)Ye(Ke[rt],rt);this.renderedFeatures_=Ke,this.ready=Pe;let xt=fe.finish(),At=new Hv(Z,k,F,a.getOverlaps(),xt,r.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=k,this.renderedRevision_=j,this.renderedRenderOrder_=he,this.renderedExtent_=ne,this.wrappedRenderedExtent_=Z,this.renderedCenter_=q,this.renderedProjection_=S,this.renderedPixelRatio_=F,this.replayGroup_=At,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(e,r,a,l,o,g,v){if(!a)return!1;let w=!1;if(Array.isArray(a))for(let T=0,S=a.length;T<S;++T)w=hy(l,e,a[T],r,this.boundHandleStyleImageChange_,o,g,v)||w;else w=hy(l,e,a,r,this.boundHandleStyleImageChange_,o,g,v);return w}},ib=uy;var dy=class extends zv{constructor(e){super(e)}createRenderer(){return new ib(this)}},Qa=dy;var rb=fo(Rg(),1);var py=class{constructor(e){this.rbush_=new rb.default(e),this.items_={}}insert(e,r){let a={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3],value:r};this.rbush_.insert(a),this.items_[Gt(r)]=a}load(e,r){let a=new Array(r.length);for(let l=0,o=r.length;l<o;l++){let g=e[l],v=r[l],w={minX:g[0],minY:g[1],maxX:g[2],maxY:g[3],value:v};a[l]=w,this.items_[Gt(v)]=w}this.rbush_.load(a)}remove(e){let r=Gt(e),a=this.items_[r];return delete this.items_[r],this.rbush_.remove(a)!==null}update(e,r){let a=this.items_[Gt(r)],l=[a.minX,a.minY,a.maxX,a.maxY];Fd(l,e)||(this.remove(r),this.insert(e,r))}getAll(){return this.rbush_.all().map(function(r){return r.value})}getInExtent(e){let r={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]};return this.rbush_.search(r).map(function(l){return l.value})}forEach(e){return this.forEach_(this.getAll(),e)}forEachInExtent(e,r){return this.forEach_(this.getInExtent(e),r)}forEach_(e,r){let a;for(let l=0,o=e.length;l<o;l++)if(a=r(e[l]),a)return a;return a}isEmpty(){return qn(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let r=this.rbush_.toJSON();return yo(r.minX,r.minY,r.maxX,r.maxY,e)}concat(e){this.rbush_.load(e.rbush_.all());for(let r in e.items_)this.items_[r]=e.items_[r]}},cu=py;var nb=mr(),hu=class h{constructor(e,r,a,l,o,g){this.styleFunction,this.extent_,this.id_=g,this.type_=e,this.flatCoordinates_=r,this.flatInteriorPoints_=null,this.flatMidpoints_=null,this.ends_=a||null,this.properties_=o,this.squaredTolerance_,this.stride_=l,this.simplifiedGeometry_}get(e){return this.properties_[e]}getExtent(){return this.extent_||(this.extent_=this.type_==="Point"?Yo(this.flatCoordinates_):Ql(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=es(this.getExtent());this.flatInteriorPoints_=Gh(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=Ox(this.flatCoordinates_,this.ends_),r=Hd(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=Zd(this.flatCoordinates_,0,e,2,r)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=Ha(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];let e=this.flatCoordinates_,r=0,a=this.ends_;for(let l=0,o=a.length;l<o;++l){let g=a[l],v=Ha(e,r,g,2,.5);kr(this.flatMidpoints_,v),r=g}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(e){return this}simplifyTransformed(e,r){return this}getProperties(){return this.properties_}getPropertiesInternal(){return this.properties_}getStride(){return this.stride_}getStyleFunction(){return this.styleFunction}getType(){return this.type_}transform(e){e=qi(e);let r=e.getExtent(),a=e.getWorldExtent();if(r&&a){let l=ln(a)/ln(r);an(nb,a[0],a[3],l,-l,0,0,0),Cn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,nb,this.flatCoordinates_)}}applyTransform(e){e(this.flatCoordinates_,this.flatCoordinates_,this.stride_)}clone(){return new h(this.type_,this.flatCoordinates_.slice(),this.ends_?.slice(),this.stride_,Object.assign({},this.properties_),this.id_)}getEnds(){return this.ends_}enableSimplifyTransformed(){return this.simplifyTransformed=Pd((e,r)=>{if(e===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),r&&this.simplifiedGeometry_.applyTransform(r);let a=this.simplifiedGeometry_.getFlatCoordinates(),l;switch(this.type_){case"LineString":a.length=Xa(a,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,e,a,0),l=[a.length];break;case"MultiLineString":l=[],a.length=Ud(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,l);break;case"Polygon":l=[],a.length=zh(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,Math.sqrt(e),a,0,l);break;default:}return l&&(this.simplifiedGeometry_=new h(this.type_,a,l,2,this.properties_,this.id_)),this.squaredTolerance_=e,this.simplifiedGeometry_}),this}};hu.prototype.getFlatCoordinates=hu.prototype.getOrientedFlatCoordinates;var ss=hu;var fy=class extends gr{constructor(e){super(),this.projection=qi(e.projection),this.attributions_=sb(e.attributions),this.attributionsCollapsible_=e.attributionsCollapsible!==void 0?e.attributionsCollapsible:!0,this.loading=!1,this.state_=e.state!==void 0?e.state:"ready",this.wrapX_=e.wrapX!==void 0?e.wrapX:!1,this.interpolate_=!!e.interpolate,this.viewResolver=null,this.viewRejector=null;let r=this;this.viewPromise_=new Promise(function(a,l){r.viewResolver=a,r.viewRejector=l})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(e){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(e){this.attributions_=sb(e),this.changed()}setState(e){this.state_=e,this.changed()}};function sb(h){return h?Array.isArray(h)?function(e){return h}:typeof h=="function"?h:function(e){return[h]}:null}var Po=fy;var hn={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function ob(h,e){return[[-1/0,-1/0,1/0,1/0]]}var uC=!1;function dC(h,e,r,a,l,o,g){let v=new XMLHttpRequest;v.open("GET",typeof h=="function"?h(r,a,l):h,!0),e.getType()=="arraybuffer"&&(v.responseType="arraybuffer"),v.withCredentials=uC,v.onload=function(w){if(!v.status||v.status>=200&&v.status<300){let T=e.getType(),S;T=="json"?S=JSON.parse(v.responseText):T=="text"?S=v.responseText:T=="xml"?(S=v.responseXML,S||(S=new DOMParser().parseFromString(v.responseText,"application/xml"))):T=="arraybuffer"&&(S=v.response),S?o(e.readFeatures(S,{extent:r,featureProjection:l}),e.readProjection(S)):g()}else g()},v.onerror=g,v.send()}function my(h,e){return function(r,a,l,o,g){let v=this;dC(h,e,r,a,l,function(w,T){v.addFeatures(w),o!==void 0&&o(w)},g||ms)}}var Zs=class extends mi{constructor(e,r,a){super(e),this.feature=r,this.features=a}},gy=class extends Po{constructor(e){e=e||{},super({attributions:e.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:e.wrapX!==void 0?e.wrapX:!0}),this.on,this.once,this.un,this.loader_=ms,this.format_=e.format,this.overlaps_=e.overlaps===void 0?!0:e.overlaps,this.url_=e.url,e.loader!==void 0?this.loader_=e.loader:this.url_!==void 0&&(si(this.format_,"`format` must be set when `url` is set"),this.loader_=my(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:ob;let r=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=r?new cu:null,this.loadedExtentsRtree_=new cu,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null;let a,l;Array.isArray(e.features)?l=e.features:e.features&&(a=e.features,l=a.getArray()),!r&&a===void 0&&(a=new Yh(l)),l!==void 0&&this.addFeaturesInternal(l),a!==void 0&&this.bindFeaturesCollection_(a)}addFeature(e){this.addFeatureInternal(e),this.changed()}addFeatureInternal(e){let r=Gt(e);if(!this.addToIndex_(r,e)){this.featuresCollection_&&this.featuresCollection_.remove(e);return}this.setupChangeEvents_(r,e);let a=e.getGeometry();if(a){let l=a.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(l,e)}else this.nullGeometryFeatures_[r]=e;this.dispatchEvent(new Zs(hn.ADDFEATURE,e))}setupChangeEvents_(e,r){r instanceof ss||(this.featureChangeKeys_[e]=[Lr(r,li.CHANGE,this.handleFeatureChange_,this),Lr(r,Td.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(e,r){let a=!0;if(r.getId()!==void 0){let l=String(r.getId());if(!(l in this.idIndex_))this.idIndex_[l]=r;else if(r instanceof ss){let o=this.idIndex_[l];o instanceof ss?Array.isArray(o)?o.push(r):this.idIndex_[l]=[o,r]:a=!1}else a=!1}return a&&(si(!(e in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[e]=r),a}addFeatures(e){this.addFeaturesInternal(e),this.changed()}addFeaturesInternal(e){let r=[],a=[],l=[];for(let o=0,g=e.length;o<g;o++){let v=e[o],w=Gt(v);this.addToIndex_(w,v)&&a.push(v)}for(let o=0,g=a.length;o<g;o++){let v=a[o],w=Gt(v);this.setupChangeEvents_(w,v);let T=v.getGeometry();if(T){let S=T.getExtent();r.push(S),l.push(v)}else this.nullGeometryFeatures_[w]=v}if(this.featuresRtree_&&this.featuresRtree_.load(r,l),this.hasListener(hn.ADDFEATURE))for(let o=0,g=a.length;o<g;o++)this.dispatchEvent(new Zs(hn.ADDFEATURE,a[o]))}bindFeaturesCollection_(e){let r=!1;this.addEventListener(hn.ADDFEATURE,function(a){r||(r=!0,e.push(a.feature),r=!1)}),this.addEventListener(hn.REMOVEFEATURE,function(a){r||(r=!0,e.remove(a.feature),r=!1)}),e.addEventListener(bs.ADD,a=>{r||(r=!0,this.addFeature(a.element),r=!1)}),e.addEventListener(bs.REMOVE,a=>{r||(r=!0,this.removeFeature(a.element),r=!1)}),this.featuresCollection_=e}clear(e){if(e){for(let a in this.featureChangeKeys_)this.featureChangeKeys_[a].forEach(Yr);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){let a=l=>{this.removeFeatureInternal(l)};this.featuresRtree_.forEach(a);for(let l in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[l])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};let r=new Zs(hn.CLEAR);this.dispatchEvent(r),this.changed()}forEachFeature(e){if(this.featuresRtree_)return this.featuresRtree_.forEach(e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureAtCoordinateDirect(e,r){let a=[e[0],e[1],e[0],e[1]];return this.forEachFeatureInExtent(a,function(l){let o=l.getGeometry();if(o instanceof ss||o.intersectsCoordinate(e))return r(l)})}forEachFeatureInExtent(e,r){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(e,r);this.featuresCollection_&&this.featuresCollection_.forEach(r)}forEachFeatureIntersectingExtent(e,r){return this.forEachFeatureInExtent(e,function(a){let l=a.getGeometry();if(l instanceof ss||l.intersectsExtent(e)){let o=r(a);if(o)return o}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let e;return this.featuresCollection_?e=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(e=this.featuresRtree_.getAll(),qn(this.nullGeometryFeatures_)||kr(e,Object.values(this.nullGeometryFeatures_))),e}getFeaturesAtCoordinate(e){let r=[];return this.forEachFeatureAtCoordinateDirect(e,function(a){r.push(a)}),r}getFeaturesInExtent(e,r){if(this.featuresRtree_){if(!(r&&r.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(e);let l=Q0(e,r);return[].concat(...l.map(o=>this.featuresRtree_.getInExtent(o)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(e,r){let a=e[0],l=e[1],o=null,g=[NaN,NaN],v=1/0,w=[-1/0,-1/0,1/0,1/0];return r=r||Ad,this.featuresRtree_.forEachInExtent(w,function(T){if(r(T)){let S=T.getGeometry(),k=v;if(v=S instanceof ss?0:S.closestPointXY(a,l,g,v),v<k){o=T;let F=Math.sqrt(v);w[0]=a-F,w[1]=l-F,w[2]=a+F,w[3]=l+F}}}),o}getExtent(e){return this.featuresRtree_.getExtent(e)}getFeatureById(e){let r=this.idIndex_[e.toString()];return r!==void 0?r:null}getFeatureByUid(e){let r=this.uidIndex_[e];return r!==void 0?r:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(e){let r=e.target,a=Gt(r),l=r.getGeometry();if(!l)a in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(r),this.nullGeometryFeatures_[a]=r);else{let g=l.getExtent();a in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[a],this.featuresRtree_&&this.featuresRtree_.insert(g,r)):this.featuresRtree_&&this.featuresRtree_.update(g,r)}let o=r.getId();if(o!==void 0){let g=o.toString();this.idIndex_[g]!==r&&(this.removeFromIdIndex_(r),this.idIndex_[g]=r)}else this.removeFromIdIndex_(r),this.uidIndex_[a]=r;this.changed(),this.dispatchEvent(new Zs(hn.CHANGEFEATURE,r))}hasFeature(e){let r=e.getId();return r!==void 0?r in this.idIndex_:Gt(e)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&qn(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(e,r,a){let l=this.loadedExtentsRtree_,o=this.strategy_(e,r,a);for(let g=0,v=o.length;g<v;++g){let w=o[g];l.forEachInExtent(w,function(S){return go(S.extent,w)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Zs(hn.FEATURESLOADSTART)),this.loader_.call(this,w,r,a,S=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(hn.FEATURESLOADEND,void 0,S))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(hn.FEATURESLOADERROR))}),l.insert(w,{extent:w.slice()}))}this.loading=this.loader_.length<4?!1:this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(e){let r=this.loadedExtentsRtree_,a;r.forEachInExtent(e,function(l){if(Fd(l.extent,e))return a=l,!0}),a&&r.remove(a)}removeFeature(e){if(!e)return;let r=Gt(e);r in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[r]:this.featuresRtree_&&this.featuresRtree_.remove(e),this.removeFeatureInternal(e)&&this.changed()}removeFeatureInternal(e){let r=Gt(e),a=this.featureChangeKeys_[r];if(!a)return;a.forEach(Yr),delete this.featureChangeKeys_[r];let l=e.getId();return l!==void 0&&delete this.idIndex_[l.toString()],delete this.uidIndex_[r],this.dispatchEvent(new Zs(hn.REMOVEFEATURE,e)),e}removeFromIdIndex_(e){let r=!1;for(let a in this.idIndex_){let l=this.idIndex_[a];if(e instanceof ss&&Array.isArray(l)&&l.includes(e))l.splice(l.indexOf(e),1);else if(this.idIndex_[a]===e){delete this.idIndex_[a],r=!0;break}}return r}setLoader(e){this.loader_=e}setUrl(e){si(this.format_,"`format` must be set when `url` is set"),this.url_=e,this.setLoader(my(e,this.format_))}},el=gy;var Zn={SINGLECLICK:"singleclick",CLICK:li.CLICK,DBLCLICK:li.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"};var yy={ACTIVE:"active"};var _y=class extends gr{constructor(e){super(),this.on,this.once,this.un,e&&e.handleEvent&&(this.handleEvent=e.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(yy.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(yy.ACTIVE,e)}setMap(e){this.map_=e}};var ab=_y;var xy=class extends ab{constructor(e){e=e||{},super(e),e.handleDownEvent&&(this.handleDownEvent=e.handleDownEvent),e.handleDragEvent&&(this.handleDragEvent=e.handleDragEvent),e.handleMoveEvent&&(this.handleMoveEvent=e.handleMoveEvent),e.handleUpEvent&&(this.handleUpEvent=e.handleUpEvent),e.stopDown&&(this.stopDown=e.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(e){return!1}handleDragEvent(e){}handleEvent(e){if(!e.originalEvent)return!0;let r=!1;if(this.updateTrackedPointers_(e),this.handlingDownUpSequence){if(e.type==Zn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Zn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Zn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,r=this.stopDown(a)}else e.type==Zn.POINTERMOVE&&this.handleMoveEvent(e);return!r}handleMoveEvent(e){}handleUpEvent(e){return!1}stopDown(e){return e}updateTrackedPointers_(e){e.activePointers&&(this.targetPointers=e.activePointers)}};var lb=xy;var cb=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var hb=Ad,ub=function(h){return h.type==Zn.CLICK};var db=function(h){return h.type==Zn.SINGLECLICK};var pb=function(h){let e=h.originalEvent;return si(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var fb=0,uu=1,mb=[0,0,0,0],yc=[],vy={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},du=class extends mi{constructor(e,r,a){super(e),this.features=r,this.mapBrowserEvent=a}},by=class extends lb{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:pb,this.defaultDeleteCondition_=function(a){return cb(a)&&db(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:hb,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new cu,this.pixelTolerance_=e.pixelTolerance!==void 0?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new Qa({source:new el({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:fC(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_.bind(this),LineString:this.writeLineStringGeometry_.bind(this),LinearRing:this.writeLineStringGeometry_.bind(this),Polygon:this.writePolygonGeometry_.bind(this),MultiPoint:this.writeMultiPointGeometry_.bind(this),MultiLineString:this.writeMultiLineStringGeometry_.bind(this),MultiPolygon:this.writeMultiPolygonGeometry_.bind(this),Circle:this.writeCircleGeometry_.bind(this),GeometryCollection:this.writeGeometryCollectionGeometry_.bind(this)},this.source_=null,this.hitDetection_=null;let r;if(e.features?r=e.features:e.source&&(this.source_=e.source,r=new Yh(this.source_.getFeatures()),this.source_.addEventListener(hn.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(hn.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!r)throw new Error("The modify interaction requires features, a source or a layer");e.hitDetection&&(this.hitDetection_=e.hitDetection),this.features_=r,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(bs.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(bs.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=e.snapToPointer===void 0?!this.hitDetection_:e.snapToPointer}addFeature_(e){let r=e.getGeometry();if(r){let l=this.SEGMENT_WRITERS_[r.getType()];l&&l(e,r)}let a=this.getMap();a&&a.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,a),e.addEventListener(li.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(e,r){if(!this.featuresBeingModified_){this.featuresBeingModified_=new Yh;let a=this.featuresBeingModified_.getArray();for(let l=0,o=r.length;l<o;++l){let g=r[l];for(let v=0,w=g.length;v<w;++v){let T=g[v].feature;T&&!a.includes(T)&&this.featuresBeingModified_.push(T)}}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new du(vy.MODIFYSTART,this.featuresBeingModified_,e))}}removeFeature_(e){this.removeFeatureSegmentData_(e),this.vertexFeature_&&this.features_.getLength()===0&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.removeEventListener(li.CHANGE,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(e){let r=this.rBush_,a=[];r.forEach(function(l){e===l.feature&&a.push(l)});for(let l=a.length-1;l>=0;--l){let o=a[l];for(let g=this.dragSegments_.length-1;g>=0;--g)this.dragSegments_[g][0]===o&&this.dragSegments_.splice(g,1);r.remove(o)}}setActive(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(e)}setMap(e){this.overlay_.setMap(e),super.setMap(e)}getOverlay(){return this.overlay_}handleSourceAdd_(e){e.feature&&this.features_.push(e.feature)}handleSourceRemove_(e){e.feature&&this.features_.remove(e.feature)}handleFeatureAdd_(e){this.addFeature_(e.element)}handleFeatureChange_(e){if(!this.changingFeature_){let r=e.target;this.removeFeature_(r),this.addFeature_(r)}}handleFeatureRemove_(e){this.removeFeature_(e.element)}writePointGeometry_(e,r){let a=r.getCoordinates(),l={feature:e,geometry:r,segment:[a,a]};this.rBush_.insert(r.getExtent(),l)}writeMultiPointGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l],v={feature:e,geometry:r,depth:[l],index:l,segment:[g,g]};this.rBush_.insert(r.getExtent(),v)}}writeLineStringGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length-1;l<o;++l){let g=a.slice(l,l+2),v={feature:e,geometry:r,index:l,segment:g};this.rBush_.insert(Fs(g),v)}}writeMultiLineStringGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l];for(let v=0,w=g.length-1;v<w;++v){let T=g.slice(v,v+2),S={feature:e,geometry:r,depth:[l],index:v,segment:T};this.rBush_.insert(Fs(T),S)}}}writePolygonGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l];for(let v=0,w=g.length-1;v<w;++v){let T=g.slice(v,v+2),S={feature:e,geometry:r,depth:[l],index:v,segment:T};this.rBush_.insert(Fs(T),S)}}}writeMultiPolygonGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l];for(let v=0,w=g.length;v<w;++v){let T=g[v];for(let S=0,k=T.length-1;S<k;++S){let F=T.slice(S,S+2),j={feature:e,geometry:r,depth:[v,l],index:S,segment:F};this.rBush_.insert(Fs(F),j)}}}}writeCircleGeometry_(e,r){let a=r.getCenter(),l={feature:e,geometry:r,index:fb,segment:[a,a]},o={feature:e,geometry:r,index:uu,segment:[a,a]},g=[l,o];l.featureSegments=g,o.featureSegments=g,this.rBush_.insert(Yo(a),l);let v=r,w=Wn();if(w&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(w,T),v=Pm(v).transform(T,w)}this.rBush_.insert(v.getExtent(),o)}writeGeometryCollectionGeometry_(e,r){let a=r.getGeometriesArray();for(let l=0;l<a.length;++l){let o=a[l],g=this.SEGMENT_WRITERS_[o.getType()];g(e,o)}}createOrUpdateVertexFeature_(e,r,a){let l=this.vertexFeature_;return l?l.getGeometry().setCoordinates(e):(l=new rs(new _r(e)),this.vertexFeature_=l,this.overlay_.getSource().addFeature(l)),l.set("features",r),l.set("geometries",a),l}handleEvent(e){if(!e.originalEvent)return!0;this.lastPointerEvent_=e;let r;return!e.map.getView().getInteracting()&&e.type==Zn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Zn.SINGLECLICK||!this.ignoreNextSingleClick_?r=this.removePoint():r=!0),e.type==Zn.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(e)&&!r}handleDragEvent(e){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(e,this.dragSegments_);let r=[e.coordinate[0]+this.delta_[0],e.coordinate[1]+this.delta_[1]],a=[],l=[];for(let o=0,g=this.dragSegments_.length;o<g;++o){let v=this.dragSegments_[o],w=v[0],T=w.feature;a.includes(T)||a.push(T);let S=w.geometry;l.includes(S)||l.push(S);let k=w.depth,F,j=w.segment,J=v[1];for(;r.length<S.getStride();)r.push(j[J][r.length]);switch(S.getType()){case"Point":F=r,j[0]=r,j[1]=r;break;case"MultiPoint":F=S.getCoordinates(),F[w.index]=r,j[0]=r,j[1]=r;break;case"LineString":F=S.getCoordinates(),F[w.index+J]=r,j[J]=r;break;case"MultiLineString":F=S.getCoordinates(),F[k[0]][w.index+J]=r,j[J]=r;break;case"Polygon":F=S.getCoordinates(),F[k[0]][w.index+J]=r,j[J]=r;break;case"MultiPolygon":F=S.getCoordinates(),F[k[1]][k[0]][w.index+J]=r,j[J]=r;break;case"Circle":if(j[0]=r,j[1]=r,w.index===fb)this.changingFeature_=!0,S.setCenter(r),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),q=cm(er(S.getCenter(),he),er(r,he)),Z=Wn();if(Z){let ne=S.clone().transform(Z,he);ne.setRadius(q),q=ne.transform(he,Z).getRadius()}S.setRadius(q),this.changingFeature_=!1}break;default:}F&&this.setGeometryCoordinates_(S,F)}this.createOrUpdateVertexFeature_(r,a,l)}handleDownEvent(e){if(!this.condition_(e))return!1;let r=e.coordinate;this.handlePointerAtPixel_(e.pixel,e.map,r),this.dragSegments_.length=0,this.featuresBeingModified_=null;let a=this.vertexFeature_;if(a){let l=e.map.getView().getProjection(),o=[],g=a.getGeometry().getCoordinates(),v=Fs([g]),w=this.rBush_.getInExtent(v),T={};w.sort(pC);for(let S=0,k=w.length;S<k;++S){let F=w[S],j=F.segment,J=Gt(F.geometry),he=F.depth;if(he&&(J+="-"+he.join("-")),T[J]||(T[J]=new Array(2)),F.geometry.getType()==="Circle"&&F.index===uu){let q=yb(r,F,l);cn(q,g)&&!T[J][0]&&(this.dragSegments_.push([F,0]),T[J][0]=F);continue}if(cn(j[0],g)&&!T[J][0]){this.dragSegments_.push([F,0]),T[J][0]=F;continue}if(cn(j[1],g)&&!T[J][1]){if(T[J][0]&&T[J][0].index===0){let q=F.geometry.getCoordinates();switch(F.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":q=q[he[1]];case"Polygon":if(F.index!==q[he[0]].length-2)continue;break;default:}}this.dragSegments_.push([F,1]),T[J][1]=F;continue}Gt(j)in this.vertexSegments_&&!T[J][0]&&!T[J][1]&&this.insertVertexCondition_(e)&&o.push(F)}o.length&&this.willModifyFeatures_(e,[o]);for(let S=o.length-1;S>=0;--S)this.insertVertex_(o[S],g)}return!!this.vertexFeature_}handleUpEvent(e){for(let r=this.dragSegments_.length-1;r>=0;--r){let a=this.dragSegments_[r][0],l=a.geometry;if(l.getType()==="Circle"){let o=l.getCenter(),g=a.featureSegments[0],v=a.featureSegments[1];g.segment[0]=o,g.segment[1]=o,v.segment[0]=o,v.segment[1]=o,this.rBush_.update(Yo(o),g);let w=l,T=Wn();if(T){let S=e.map.getView().getProjection();w=w.clone().transform(T,S),w=Pm(w).transform(S,T)}this.rBush_.update(w.getExtent(),v)}else this.rBush_.update(Fs(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new du(vy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null),!1}handlePointerMove_(e){this.lastPixel_=e.pixel,this.handlePointerAtPixel_(e.pixel,e.map,e.coordinate)}handlePointerAtPixel_(e,r,a){let l=a||r.getCoordinateFromPixel(e),o=r.getView().getProjection(),g=function(T,S){return gb(l,T,o)-gb(l,S,o)},v,w;if(this.hitDetection_){let T=typeof this.hitDetection_=="object"?S=>S===this.hitDetection_:void 0;r.forEachFeatureAtPixel(e,(S,k,F)=>{F&&F.getType()==="Point"&&(F=new _r(Wa(F.getCoordinates(),o)));let j=F||S.getGeometry();if(S instanceof rs&&this.features_.getArray().includes(S)){w=j;let J=S.getGeometry().getFlatCoordinates().slice(0,2);v=[{feature:S,geometry:w,segment:[J,J]}]}return!0},{layerFilter:T})}if(!v){let T=Os(Yo(l,mb),o),S=r.getView().getResolution()*this.pixelTolerance_,k=zs(bn(T,S,mb),o);v=this.rBush_.getInExtent(k)}if(v&&v.length>0){let T=v.sort(g)[0],S=T.segment,k=yb(l,T,o),F=r.getPixelFromCoordinate(k),j=cm(e,F);if(w||j<=this.pixelTolerance_){let J={};if(J[Gt(S)]=!0,this.snapToPointer_||(this.delta_[0]=k[0]-l[0],this.delta_[1]=k[1]-l[1]),T.geometry.getType()==="Circle"&&T.index===uu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(k,[T.feature],[T.geometry]);else{let he=r.getPixelFromCoordinate(S[0]),q=r.getPixelFromCoordinate(S[1]),Z=ic(F,he),ne=ic(F,q);j=Math.sqrt(Math.min(Z,ne)),this.snappedToVertex_=j<=this.pixelTolerance_,this.snappedToVertex_&&(k=Z>ne?S[1]:S[0]),this.createOrUpdateVertexFeature_(k,[T.feature],[T.geometry]);let me={};me[Gt(T.geometry)]=!0;for(let _e=1,fe=v.length;_e<fe;++_e){let ve=v[_e].segment;if(cn(S[0],ve[0])&&cn(S[1],ve[1])||cn(S[0],ve[1])&&cn(S[1],ve[0])){let Ee=Gt(v[_e].geometry);Ee in me||(me[Ee]=!0,J[Gt(ve)]=!0)}else break}}this.vertexSegments_=J;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(e,r){let a=e.segment,l=e.feature,o=e.geometry,g=e.depth,v=e.index,w;for(;r.length<o.getStride();)r.push(0);switch(o.getType()){case"MultiLineString":w=o.getCoordinates(),w[g[0]].splice(v+1,0,r);break;case"Polygon":w=o.getCoordinates(),w[g[0]].splice(v+1,0,r);break;case"MultiPolygon":w=o.getCoordinates(),w[g[1]][g[0]].splice(v+1,0,r);break;case"LineString":w=o.getCoordinates(),w.splice(v+1,0,r);break;default:return}this.setGeometryCoordinates_(o,w);let T=this.rBush_;T.remove(e),this.updateSegmentIndices_(o,v,g,1);let S={segment:[a[0],r],feature:l,geometry:o,depth:g,index:v};T.insert(Fs(S.segment),S),this.dragSegments_.push([S,1]);let k={segment:[r,a[1]],feature:l,geometry:o,depth:g,index:v+1};T.insert(Fs(k.segment),k),this.dragSegments_.push([k,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Zn.POINTERDRAG){let e=this.lastPointerEvent_;this.willModifyFeatures_(e,this.dragSegments_);let r=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new du(vy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null,r}return!1}removeVertex_(){let e=this.dragSegments_,r={},a=!1,l,o,g,v,w,T,S,k,F,j,J;for(w=e.length-1;w>=0;--w)g=e[w],j=g[0],J=Gt(j.feature),j.depth&&(J+="-"+j.depth.join("-")),J in r||(r[J]={}),g[1]===0?(r[J].right=j,r[J].index=j.index):g[1]==1&&(r[J].left=j,r[J].index=j.index+1);for(J in r){switch(F=r[J].right,S=r[J].left,T=r[J].index,k=T-1,S!==void 0?j=S:j=F,k<0&&(k=0),v=j.geometry,o=v.getCoordinates(),l=o,a=!1,v.getType()){case"MultiLineString":o[j.depth[0]].length>2&&(o[j.depth[0]].splice(T,1),a=!0);break;case"LineString":o.length>2&&(o.splice(T,1),a=!0);break;case"MultiPolygon":l=l[j.depth[1]];case"Polygon":l=l[j.depth[0]],l.length>4&&(T==l.length-1&&(T=0),l.splice(T,1),a=!0,T===0&&(l.pop(),l.push(l[0]),k=l.length-1));break;default:}if(a){this.setGeometryCoordinates_(v,o);let he=[];if(S!==void 0&&(this.rBush_.remove(S),he.push(S.segment[0])),F!==void 0&&(this.rBush_.remove(F),he.push(F.segment[1])),S!==void 0&&F!==void 0){let q={depth:j.depth,feature:j.feature,geometry:j.geometry,index:k,segment:he};this.rBush_.insert(Fs(q.segment),q)}this.updateSegmentIndices_(v,T,j.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.length=0}}return a}setGeometryCoordinates_(e,r){this.changingFeature_=!0,e.setCoordinates(r),this.changingFeature_=!1}updateSegmentIndices_(e,r,a,l){this.rBush_.forEachInExtent(e.getExtent(),function(o){o.geometry===e&&(a===void 0||o.depth===void 0||vn(o.depth,a))&&o.index>r&&(o.index+=l)})}};function pC(h,e){return h.index-e.index}function gb(h,e,r){let a=e.geometry;if(a.getType()==="Circle"){let o=a;if(e.index===uu){let g=Wn();g&&(o=o.clone().transform(g,r));let v=ic(o.getCenter(),er(h,r)),w=Math.sqrt(v)-o.getRadius();return w*w}}let l=er(h,r);return yc[0]=er(e.segment[0],r),yc[1]=er(e.segment[1],r),dx(l,yc)}function yb(h,e,r){let a=e.geometry;if(a.getType()==="Circle"&&e.index===uu){let o=a,g=Wn();return g&&(o=o.clone().transform(g,r)),Wa(o.getClosestPoint(er(h,r)),r)}let l=er(h,r);return yc[0]=er(e.segment[0],r),yc[1]=er(e.segment[1],r),Wa(lm(l,yc),r)}function fC(){let h=bv();return function(e,r){return h.Point}}var wy=by;var Sy=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=rs,this.supportedMediaTypes=null}getReadOptions(e,r){if(r){let a=r.dataProjection?qi(r.dataProjection):this.readProjection(e);r.extent&&a&&a.getUnits()==="tile-pixels"&&(a=qi(a),a.setWorldExtent(r.extent)),r={dataProjection:a,featureProjection:r.featureProjection}}return this.adaptOptions(r)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return St()}readFeature(e,r){return St()}readFeatures(e,r){return St()}readGeometry(e,r){return St()}readProjection(e){return St()}writeFeature(e,r){return St()}writeFeatures(e,r){return St()}writeGeometry(e,r){return St()}},_b=Sy;function gp(h,e,r){let a=r?qi(r.featureProjection):null,l=r?qi(r.dataProjection):null,o=h;if(a&&l&&!_x(a,l)){e&&(o=h.clone());let g=e?a:l,v=e?l:a;g.getUnits()==="tile-pixels"?o.transform(g,v):o.applyTransform(qa(g,v))}if(e&&r&&r.decimals!==void 0){let g=Math.pow(10,r.decimals),v=function(w){for(let T=0,S=w.length;T<S;++T)w[T]=Math.round(w[T]*g)/g;return w};o===h&&(o=h.clone()),o.applyTransform(v)}return o}var mC={Point:_r,LineString:_s,Polygon:sc,MultiPoint:Vh,MultiLineString:Im,MultiPolygon:km};function gC(h,e,r){return Array.isArray(e[0])?(Xd(h,0,e,r)||(h=h.slice(),Uh(h,0,e,r)),h):(jh(h,0,e,r)||(h=h.slice(),nc(h,0,e,r)),h)}function Cy(h,e){let r=h.geometry;if(!r)return[];if(Array.isArray(r))return r.map(o=>Cy({...h,geometry:o})).flat();let a=r.type==="MultiPolygon"?"Polygon":r.type;if(a==="GeometryCollection"||a==="Circle")throw new Error("Unsupported geometry type: "+a);let l=r.layout.length;return gp(new ss(a,a==="Polygon"?gC(r.flatCoordinates,r.ends,l):r.flatCoordinates,r.ends?.flat(),l,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function yp(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(l=>yp(l,e));return new ym(a)}let r=mC[h.type];return gp(new r(h.flatCoordinates,h.layout,h.ends),!1,e)}var Iy=class extends _b{constructor(){super()}getType(){return"json"}readFeature(e,r){return this.readFeatureFromObject(_p(e),this.getReadOptions(e,r))}readFeatures(e,r){return this.readFeaturesFromObject(_p(e),this.getReadOptions(e,r))}readFeatureFromObject(e,r){return St()}readFeaturesFromObject(e,r){return St()}readGeometry(e,r){return this.readGeometryFromObject(_p(e),this.getReadOptions(e,r))}readGeometryFromObject(e,r){return St()}readProjection(e){return this.readProjectionFromObject(_p(e))}readProjectionFromObject(e){return St()}writeFeature(e,r){return JSON.stringify(this.writeFeatureObject(e,r))}writeFeatureObject(e,r){return St()}writeFeatures(e,r){return JSON.stringify(this.writeFeaturesObject(e,r))}writeFeaturesObject(e,r){return St()}writeGeometry(e,r){return JSON.stringify(this.writeGeometryObject(e,r))}writeGeometryObject(e,r){return St()}};function _p(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var xb=Iy;var Ey=class extends xb{constructor(e){e=e||{},super(),this.dataProjection=qi(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=qi(e.featureProjection)),e.featureClass&&(this.featureClass=e.featureClass),this.geometryName_=e.geometryName,this.extractGeometryName_=e.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(e,r){let a=null;e.type==="Feature"?a=e:a={type:"Feature",geometry:e,properties:null};let l=My(a.geometry,r);if(this.featureClass===ss)return Cy({geometry:l,id:a.id,properties:a.properties},r);let o=new rs;return this.geometryName_?o.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&o.setGeometryName(a.geometry_name),o.setGeometry(yp(l,r)),"id"in a&&o.setId(a.id),a.properties&&o.setProperties(a.properties,!0),o}readFeaturesFromObject(e,r){let a=e,l=null;if(a.type==="FeatureCollection"){let o=e;l=[];let g=o.features;for(let v=0,w=g.length;v<w;++v){let T=this.readFeatureFromObject(g[v],r);T&&l.push(T)}}else l=[this.readFeatureFromObject(e,r)];return l.flat()}readGeometryFromObject(e,r){return yC(e,r)}readProjectionFromObject(e){let r=e.crs,a;if(r)if(r.type=="name")a=qi(r.properties.name);else if(r.type==="EPSG")a=qi("EPSG:"+r.properties.code);else throw new Error("Unknown SRS type");else a=this.dataProjection;return a}writeFeatureObject(e,r){r=this.adaptOptions(r);let a={type:"Feature",geometry:null,properties:null},l=e.getId();if(l!==void 0&&(a.id=l),!e.hasProperties())return a;let o=e.getProperties(),g=e.getGeometry();return g&&(a.geometry=Ty(g,r),delete o[e.getGeometryName()]),qn(o)||(a.properties=o),a}writeFeaturesObject(e,r){r=this.adaptOptions(r);let a=[];for(let l=0,o=e.length;l<o;++l)a.push(this.writeFeatureObject(e[l],r));return{type:"FeatureCollection",features:a}}writeGeometryObject(e,r){return Ty(e,this.adaptOptions(r))}};function My(h,e){if(!h)return null;let r;switch(h.type){case"Point":{r=xC(h);break}case"LineString":{r=vC(h);break}case"Polygon":{r=CC(h);break}case"MultiPoint":{r=wC(h);break}case"MultiLineString":{r=bC(h);break}case"MultiPolygon":{r=SC(h);break}case"GeometryCollection":{r=_C(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return r}function yC(h,e){let r=My(h,e);return yp(r,e)}function _C(h,e){return h.geometries.map(function(a){return My(a,e)})}function xC(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:Jo(e.length)}}function vC(h){let e=h.coordinates,r=e.flat();return{type:"LineString",flatCoordinates:r,ends:[r.length],layout:Jo(e[0]?.length||2)}}function bC(h){let e=h.coordinates,r=e[0]?.[0]?.length||2,a=[],l=Qo(a,0,e,r);return{type:"MultiLineString",flatCoordinates:a,ends:l,layout:Jo(r)}}function wC(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:Jo(e[0]?.length||2)}}function SC(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.[0].length||2,l=jd(r,0,e,a);return{type:"MultiPolygon",flatCoordinates:r,ends:l,layout:Jo(a)}}function CC(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.length,l=Qo(r,0,e,a);return{type:"Polygon",flatCoordinates:r,ends:l,layout:Jo(a)}}function Ty(h,e){h=gp(h,!0,e);let r=h.getType(),a;switch(r){case"Point":{a=PC(h,e);break}case"LineString":{a=EC(h,e);break}case"Polygon":{a=RC(h,e);break}case"MultiPoint":{a=MC(h,e);break}case"MultiLineString":{a=TC(h,e);break}case"MultiPolygon":{a=AC(h,e);break}case"GeometryCollection":{a=IC(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+r)}return a}function IC(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return Ty(a,e)})}}function EC(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function TC(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function MC(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function AC(h,e){let r;return e&&(r=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(r)}}function PC(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function RC(h,e){let r;return e&&(r=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(r)}}var vr=Ey;var kC=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,vb=/^([\d.]+),([\d.]+)$/,bb=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,xp="stop-fetch",wb=h=>{let e=[];return h.forEach(r=>{let a=r.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},Ay=class h extends ac{constructor(r={}){super(r);this.viaPoints=[];this.graphs=[];this.useRawViaPoints=!1;this.snapToClosestStation=!1;this.cacheStationData={};this.abortControllers={};this.segments=[];this.format=new vr({featureProjection:"EPSG:3857"});this.initialRouteDrag={};this.loading=!1,this.active=r.active||!0,this.graphs=r.graphs||[["osm",0,99]],this.mot=r.mot||"bus",this.modify=r.modify!==!1,this.routingApiParams=r.routingApiParams,this.useRawViaPoints=r.useRawViaPoints||!1,this.snapToClosestStation=r.snapToClosestStation||!1,this.apiKey=r.apiKey,this.stopsApiKey=r.stopsApiKey||this.apiKey,this.stopsApiUrl=r.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new bh({...r}),this.routingLayer=r.routingLayer||new Qa({source:new el,style:r.style}),this.onRouteError=r.onRouteError||(a=>{this.dispatchEvent(new mi("change:route")),this.reset(),console.error(a)}),this.onMapClick=this.onMapClick.bind(this),this.onModifyEnd=this.onModifyEnd.bind(this),this.onModifyStart=this.onModifyStart.bind(this),this.createModifyInteraction(),this.on("propertychange",a=>{a.key==="active"&&this.onActiveChange(),a.key==="mot"&&this.viaPoints&&this.drawRoute()})}get active(){return this.get("active")}set active(r){this.set("active",r)}get loading(){return this.get("loading")}set loading(r){this.set("loading",r)}get modify(){return this.get("modify")}set modify(r){this.set("modify",r)}get mot(){return this.get("mot")}set mot(r){this.set("mot",r)}static getGraphsResolutions(r,a){let l=a.getView();return r.map(([,o,g])=>[l.getResolutionForZoom(o),l.getResolutionForZoom(g||o+1)])}onActiveChange(){this.get("active")?this.activate():this.deactivate(),this.render()}addViaPoint(r,a=-1,l=0){this.viaPoints.splice(a===-1?this.viaPoints.length:a,l,r),this.drawRoute(),this.dispatchEvent(new mi("change:route"))}removeViaPoint(r=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[r]&&this.viaPoints.splice(r,1),this.drawRoute(),this.dispatchEvent(new mi("change:route"))}setViaPoints(r){this.viaPoints=[...r],this.drawRoute(),this.dispatchEvent(new mi("change:route"))}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.getSource()?.clear(),this.dispatchEvent(new mi("change:route"))}abortRequests(){this.graphs.forEach(r=>{let a=r[0];this.abortControllers[a]&&this.abortControllers[a].abort(),this.abortControllers[a]=new AbortController}),this.abortControllers[xp]?.abort(),this.abortControllers[xp]=new AbortController,this.loading=!1}drawRoute(){if(this.abortRequests(),this.routingLayer?.getSource()?.clear(!0),!this.viaPoints.length)return null;if(this.viaPoints.length===1)return this.drawViaPoint(this.viaPoints[0],0,this.abortControllers[xp]);let r=this.viaPoints.map(a=>{if(Array.isArray(a)){let l=this.getMap()?.getView().getProjection(),[o,g]=$a(a,l);return this.snapToClosestStation?[`@${g}`,o]:[g,o]}return this.useRawViaPoints?a:`!${a}`});return this.loading=!0,this.viaPoints.forEach((a,l)=>this.drawViaPoint(a,l,this.abortControllers[xp])),Promise.all(this.graphs.map(([a],l)=>{let{signal:o}=this.abortControllers[a];return this.api?this.api.route({graph:a,via:`${r.join("|")}`,mot:this.mot,"resolve-hops":!1,elevation:!1,"coord-radius":100,"coord-punish":1e3,...this.routingApiParams||{}},{signal:o}).then(g=>{if(this.segments=this.format.readFeatures(g),this.mot==="foot"){let T=this.segments.reduce((S,k)=>{let F=k.get("trg");return S.find(j=>j[0]===F[0]&&j[1]===F[1])?S:[...S,F]},[]);this.segments=T.map(S=>{let k=this.segments.filter(j=>{let J=j.get("trg");return J[0]===S[0]&&J[1]===S[1]}),F=wb(k);return new rs({geometry:new _s(F)})})}let v=wb(this.segments),w=new rs({geometry:new _s(v)});w.set("graph",a),w.set("mot",this.mot),this.graphsResolutions&&this.graphsResolutions[l]?.length>=2&&(w.set("minResolution",this.graphsResolutions[l][0]),w.set("maxResolution",this.graphsResolutions[l][1])),this.routingLayer?.getSource()?.addFeature(w),this.loading=!1}).catch(g=>{/AbortError/.test(g.message)||(this.segments=[],this.dispatchEvent(new mi("error")),this.onRouteError(g,this),this.routingLayer?.getSource()?.clear(),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(r,a,l){let o=new rs;if(o.set("viaPointIdx",a),Array.isArray(r))return o.setGeometry(new _r(r)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o);if(!this.useRawViaPoints||bb.test(r)){let S,k;return this.useRawViaPoints?[,S,,k]=bb.exec(r)||[]:[S,k]=r.split("$"),fetch(`${this.stopsApiUrl}lookup/${S}?key=${this.stopsApiKey}`,{signal:l.signal}).then(F=>F.json()).then(F=>{let{coordinates:j}=F.features[0].geometry;return this.cacheStationData[r]=yr(j),o.set("viaPointTrack",k),o.setGeometry(new _r(yr(j))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(F=>{/AbortError/.test(F.message)||(this.dispatchEvent(new mi("error")),this.onRouteError(F,this),this.loading=!1)})}if(this.useRawViaPoints&&vb.test(r)){let[S,k]=vb.exec(r)||[];if(k&&S){let F=parseFloat(k),j=parseFloat(S),J=yr([F,j],this.getMap()?.getView().getProjection());return o.setGeometry(new _r(J)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}}let[,g,,v,w,,T]=kC.exec(r)||[];if(w&&v){let S=yr([parseFloat(w),parseFloat(v)],this.getMap()?.getView().getProjection());return o.set("viaPointTrack",T),o.setGeometry(new _r(S)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}return g?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${g}&limit=1`,{signal:l.signal}).then(S=>S.json()).then(S=>{let{coordinates:k}=S.features[0].geometry;return this.cacheStationData[r]=yr(k),o.set("viaPointTrack",T),o.setGeometry(new _r(yr(k))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(S=>(this.dispatchEvent(new mi("error")),this.onRouteError(S,this),this.loading=!1,null)):Promise.resolve(null)}onMapClick(r){let l=r.target.getFeaturesAtPixel(r.pixel,{layerFilter:o=>o===this.routingLayer,hitTolerance:5}).find(o=>o.getGeometry()?.getType()==="Point"&&o.get("viaPointIdx")!==void 0);if(l){this.removeViaPoint(l.get("viaPointIdx"));return}this.addViaPoint(r.coordinate)}onModifyStart(r){let a=-1,l=r.features.getArray().find(g=>g.getGeometry()?.getType()==="LineString");if(l&&l.getGeometry()&&r.mapBrowserEvent.coordinate){let g=bn(new _r(l.getGeometry()?.getClosestPoint(r.mapBrowserEvent.coordinate)).getExtent(),.001);a=this.segments.findIndex(v=>v.getGeometry()?.intersectsExtent(g))}let o=(r.features.getArray().filter(g=>g.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={viaPoint:o,oldRoute:l&&l.clone(),segmentIndex:a}}onModifyEnd(r){let a=r.mapBrowserEvent.coordinate,{oldRoute:l,viaPoint:o,segmentIndex:g}=this.initialRouteDrag||{};return o?this.addViaPoint(a,o.get("viaPointIdx"),1):l?g===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(a,(g||0)+1):this.addViaPoint(a,0,1)}createDefaultElement(){this.element=document.createElement("button"),this.element.id="ol-toggle-routing",this.element.innerHTML="Toggle Route Control",this.element.onclick=()=>this.active?this.deactivate():this.activate(),Object.assign(this.element.style,{position:"absolute",right:"10px",top:"10px"})}createModifyInteraction(){this.modifyInteraction=new wy({source:this.routingLayer?.getSource()||void 0,pixelTolerance:6,deleteCondition:r=>{let l=(r.target?.getFeaturesAtPixel(r.pixel,{hitTolerance:5})).find(o=>o.getGeometry()?.getType()==="Point"&&o.get("index"));return ub(r)&&l?(this.removeViaPoint(l.get("index")),!0):!1}}),this.modifyInteraction.on("modifystart",this.onModifyStart),this.modifyInteraction.on("modifyend",this.onModifyEnd),this.modifyInteraction.setActive(!1)}addListeners(){this.modify&&(this.removeListeners(),this.onMapClickKey=this.getMap()?.on("singleclick",this.onMapClick))}removeListeners(){this.onMapClickKey&&Ih(this.onMapClickKey)}setMap(r){super.setMap(r),r&&this.active?this.activate():r||(this.active=!1)}activate(){let r=this.getMap();r&&(this.format=new vr({featureProjection:r.getView().getProjection()}),this.graphsResolutions=h.getGraphsResolutions(this.graphs,r),this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.modifyInteraction&&r.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}deactivate(){let r=this.getMap();r&&(this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}render(){}},Sb=Ay;var Py=class{constructor(e){let{apiParams:r,apiKey:a,url:l,placeholder:o}=e||{};this.apiParams={limit:20,...r||{}},this.placeholder=o||"Search for a stop...";let g={apiKey:a};l&&(g.url=l),this.api=new wh(g),this.abortController=new AbortController,this.createElement(e),this.options=e}render(e){let r=e?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=r.length?"block":"none",this.suggestionsElt.innerHTML="",r.forEach(a=>{let l=document.createElement("div");l.innerHTML=a?.properties?.name,l.onclick=o=>{this.options?.onSuggestionClick?.(a,o)},Object.assign(l.style,{padding:"5px 12px"}),this.suggestionsElt?.appendChild(l)}))}createElement({element:e}){this.inputElt=document.createElement("input"),this.inputElt.type="text",this.inputElt.placeholder=this.placeholder,this.inputElt.autocomplete="off",this.inputElt.onkeyup=r=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(r.target.value,this.abortController)},Object.assign(this.inputElt.style,{padding:"10px 30px 10px 10px"}),e.appendChild(this.inputElt),this.suggestionsElt=document.createElement("div"),Object.assign(this.suggestionsElt.style,{backgroundColor:"white",overflowY:"auto",cursor:"pointer"}),e.appendChild(this.suggestionsElt),this.clearElt=document.createElement("div"),Object.assign(this.clearElt.style,{display:"none",position:"absolute",right:"0",padding:"0 10px",fontSize:"200%",cursor:"pointer"}),this.clearElt.innerHTML="\xD7",this.clearElt.onclick=()=>this.clear(),e.appendChild(this.clearElt)}clear(){!this.suggestionsElt||!this.inputElt||!this.clearElt||(this.inputElt.value="",this.suggestionsElt.innerHTML="",this.clearElt.style.display="none")}search(e,r){return(e!==void 0||e!==null)&&(this.apiParams.q=e),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,r&&{signal:r.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}},Cb=Py;var LC=()=>{let h=document.createElement("div");return Object.assign(h.style,{position:"absolute",top:0,left:"50px",margin:"10px",display:"flex",flexDirection:"column",width:"320px",maxHeight:"90%"}),h},Ib=LC;var Ry=class extends ac{constructor(e){let r=Ib();r.className=e?.className||"mbt-stop-finder";let a={element:r,...e||{}};super(a),this.controller=new Cb({onSuggestionClick:this.onSuggestionClick.bind(this),...a})}onSuggestionClick(e){let r=yr(e.geometry.coordinates);this.getMap()?.getView().setCenter(r)}},Eb=Ry;var Db=fo(Dy());var kb=fo(vp());function KC(h){return class extends h{constructor(r){super(r);this.options={};this.olListenersKeys=[];r.properties&&(console.warn("Deprecated. Don't use properties options. Pass the values directly in options object."),this.setProperties(r.properties)),this.olListenersKeys?.push(this.on("propertychange",a=>{a.key==="children"&&this.onChildrenChange(a.oldValue)}),this.on("change:visible",()=>{this.onVisibleChange()}),this.on("change:visible:group",a=>{this.group===a.target.group&&this!==a.target&&this.visible?this.visible=!1:this.children&&this.children.forEach(l=>l.dispatchEvent(a))})),this.options=r,this.children=r.children||[]}get children(){return this.get("children")||[]}set children(r){this.set("children",r||[])}get copyrights(){return console.warn("Deprecated. Use the source object to get the attributions"),this.get("copyrights")}set copyrights(r){console.warn("Deprecated. Use the source object to set the attributions");let a=r&&!Array.isArray(r)?[r]:r;this.set("copyrights",a||[])}get disabled(){return this.get("disabled")}set disabled(r){this.set("disabled",r)}get group(){return this.get("group")}get hitTolerance(){return console.warn("Deprecated. Pass the pixelTolerance when you request the features."),this.get("hitTolerance")||5}get key(){return this.get("key")||this.get("name")||Gt(this)}get map(){return this.getMapInternal()}get name(){return this.get("name")}get olLayer(){return console.warn("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This getter is only a redirect to the current 'this' object."),this}set olLayer(r){console.log("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This setter has no effect.")}get parent(){return this.get("parent")}set parent(r){this.set("parent",r)}get visible(){return this.getVisible()}set visible(r){this.setVisible(r)}setMapInternal(r){super.setMapInternal(r),r?this.attachToMap(r):this.detachFromMap()}onChildrenChange(r){(r||[]).forEach(a=>{a.set("parent",void 0)}),(this.children||[]).forEach(a=>{a.set("parent",this)})}onVisibleChange(){let r=this.get("parent"),a=this.get("children")||[];if(this.getVisible()){let l=this.get("group");if(r&&r.setVisible(!0),a&&!a.some(o=>o.getVisible())&&a.forEach(o=>{o.setVisible(!0)}),r&&l){let o=r;for(;o.get("parent");)o=o.get("parent");let g=new mi("change:visible:group");g.target=this,o.dispatchEvent(g)}}else a.forEach(l=>{l.setVisible(!1)}),r?.getVisible()&&!r?.get("children").find(l=>l.getVisible())&&r.setVisible(!1)}attachToMap(r){(super.attachToMap||(()=>{}))(r),(this.get("children")||[]).forEach(a=>{r.addLayer(a)})}detachFromMap(){(this.get("children")||[]).forEach(r=>{this.map.removeLayer(r)}),(super.detachFromMap||(()=>{}))(map)}flat(){return ja(this)}}}var Rb=KC;function JC(h){return class extends Rb(h){constructor(e={}){super(e)}}}var _c=JC;var Oy=class extends _c(xo){get apiKey(){return this.get("apiKey")}set apiKey(e){this.set("apiKey",e)}get apiKeyName(){return this.get("apiKeyName")}set apiKeyName(e){this.set("apiKeyName",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}get queryRenderedFeaturesOptions(){return this.get("queryRenderedFeaturesOptions")}set queryRenderedFeaturesOptions(e){this.set("queryRenderedFeaturesOptions",e)}constructor(e){super({source:new Po({attributions:()=>this.mbMap&&Ga(this.mbMap)||[]}),apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...e||{},mapOptions:{interactive:!1,trackResize:!1,attributionControl:!1,...e?.mapOptions||{}},queryRenderedFeaturesOptions:{...e?.queryRenderedFeaturesOptions||{}}})}attachToMap(e){super.attachToMap(e),this.loadMbMap();let r=(0,kb.default)(this.updateMbMap.bind(this),150);this.olListenersKeys.push(this.on("propertychange",a=>{/(apiKey|apiKeyName|url|style|)/.test(a.key)&&r()}))}detachFromMap(){this.mbMap&&(this.mbMap.triggerRepaint=()=>{},this.mbMap.remove(),this.mbMap=void 0),this.loaded=!1,super.detachFromMap()}loadMbMap(){if(this.loaded=!1,this.olListenersKeys.push(this.map?.on("change:target",this.loadMbMap.bind(this))),!this.map?.getTargetElement())return;if(!this.visible){this.olListenersKeys.push(this.once("change:visible",this.loadMbMap.bind(this)));return}let e=document.createElement("div");e.style.position="absolute",e.style.width="100%",e.style.height="100%",this.mbMap=this.createMap({style:this.getStyle(),container:e,...this.options?.mapOptions||{}}),this.mbMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.mbMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new mi("load"))})}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:Na(`${this.url}/styles/${this.style}/style.json`,{[this.apiKeyName]:this.apiKey}).toString()}createMap(e){throw new Error("createMap must be implemented in child class")}updateMbMap(){this.mbMap?.setStyle(this.getStyle(),{diff:!1})}},Lb=Oy;var By={"EPSG:3857":new vr({featureProjection:"EPSG:3857"})},pu=class extends pc{getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{mbMap:o}=a,g=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(By[g]||(By[g]=new vr({featureProjection:g})),o?.isStyleLoaded()){let w=e&&o.project($a(e));if(w?.x&&w?.y){let T=[w.x,w.y];if(r){let[S,k]=T;T=[[S-r,k-r],[S+r,k+r]]}v=o.queryRenderedFeatures(T,a.queryRenderedFeaturesOptions||{}).map(S=>{let k=By[g].readFeature(S);return k&&k.set(ra,S),k})}}return v}prepareFrame(){return!0}renderFrame(e){let r=this.getLayer(),{map:a,mbMap:l}=r;if(!r||!a||!l)return null;let o=l.getCanvas(),{viewState:g}=e,v=r.getOpacity()||1;return o.style.opacity=`${v}`,l.jumpTo({center:$a(g.center),zoom:g.zoom-1,bearing:ax(-g.rotation)}),o.isConnected?(o.width!==e.size[0]||o.height!==e.size[1])&&l.resize():a.render(),l.redraw(),l.getContainer()}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(g=>{l(g,this.layer_,g.getGeometry())}),o?.[0]}};var fu=class h extends Lb{get maplibreMap(){return this.mbMap}constructor(e){super({...e})}createRenderer(){return new pu(this)}createMap(e){return new Db.Map(e)}clone(e){return new h({...this.options||{},...e||{}})}};var Ny={"EPSG:3857":new vr({featureProjection:"EPSG:3857"})},mu=class extends pc{getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{maplibreMap:o}=a.maplibreLayer,g=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(Ny[g]||(Ny[g]=new vr({featureProjection:g})),o?.isStyleLoaded()){let w=e&&o.project($a(e));if(w?.x&&w?.y){let T=[w.x,w.y];if(r){let[k,F]=T;T=[[k-r,F-r],[k+r,F+r]]}let S=a.layers||[];a.layersFilter&&(S=o.getStyle().layers.filter(a.layersFilter)),a.queryRenderedLayersFilter&&(S=o.getStyle().layers.filter(a.queryRenderedLayersFilter)),v=o.queryRenderedFeatures(T,{layers:S.map(k=>k.id),validate:!1}).map(k=>{let F=Ny[g].readFeature(k);return F&&F.set(ra,k),F})}}return v}prepareFrame(){return!0}renderFrame(){return null}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(g=>{l(g,this.layer_,g.getGeometry())}),o?.[0]}};var Vy=class h extends _c(xo){constructor(r){super({source:new Po({}),...r||{}});this.highlightedFeatures=[];this.selectedFeatures=[];this.onLoad=this.onLoad.bind(this),!this.layersFilter&&this.layers&&(this.layersFilter=a=>!!this.layers.find(l=>a.id===l.id))}get beforeId(){return this.get("beforeId")}set beforeId(r){this.set("beforeId",r)}get layers(){return this.get("layers")}set layers(r){this.set("layers",r)}get layersFilter(){return this.get("layersFilter")}set layersFilter(r){this.set("layersFilter",r)}get mapboxLayer(){return console.warn("Deprecated. Use maplibreLayer instead."),this.get("maplibreLayer")}get maplibreLayer(){return this.get("maplibreLayer")}set maplibreLayer(r){this.set("maplibreLayer",r)}get queryRenderedLayersFilter(){return this.get("queryRenderedLayersFilter")}set queryRenderedLayersFilter(r){this.set("queryRenderedLayersFilter",r)}get sources(){return this.get("sources")}set sources(r){this.set("sources",r)}get styleLayer(){return console.warn("Deprecated. Use layers instead."),this.layers[0]}set styleLayer(r){console.warn("Deprecated. Use layers instead."),this.layers=[r]}get styleLayers(){return console.warn("Deprecated. Use layers instead."),this.layers}set styleLayers(r){console.warn("Deprecated. Use layers instead."),this.layers=r}createRenderer(){return new mu(this)}attachToMap(r){if(this.maplibreLayer&&!this.maplibreLayer.map&&r.addLayer(this.maplibreLayer),super.attachToMap(r),!this.map||!this.maplibreLayer)return;if(!this.map.getTargetElement()){this.olListenersKeys.push(this.map.on("change:target",()=>{this.attachToMap(r)}));return}let{maplibreMap:a}=this.maplibreLayer;a&&(a.loaded()?this.onLoad():a.once("load",this.onLoad)),this.olListenersKeys.push(this.maplibreLayer.on("load",this.onLoad.bind(this)),this.on("change:visible",l=>{this.applyLayoutVisibility(l)}),this.on("propertychange",l=>{/(sources|layers|layersFilter|maplibreLayer|beforeId|)/.test(l.key)&&(this.detachFromMap(),this.attachToMap(r))}))}detachFromMap(){this.maplibreLayer?.maplibreMap&&(this.maplibreLayer.maplibreMap.off("load",this.onLoad),this.removeLayers(),this.removeSources()),super.detachFromMap()}addSources(){if(!this.maplibreLayer?.maplibreMap||!this.sources)return;let{maplibreMap:r}=this.maplibreLayer;r&&Object.entries(this.sources).forEach(([a,l])=>{r.getSource(a)||r.addSource(a,l)})}removeSources(){if(!this.maplibreLayer?.maplibreMap||!this.sources)return;let{maplibreMap:r}=this.maplibreLayer;r&&Object.keys(this.sources).forEach(a=>{r.getSource(a)&&r.removeSource(a)})}addLayers(){if(!this.maplibreLayer?.maplibreMap||!Array.isArray(this.layers))return;let{maplibreMap:r}=this.maplibreLayer;r&&(this.layers.forEach(a=>{let{id:l,source:o}=a;(!o||o&&r.getSource(o))&&l&&!r.getLayer(l)&&r.addLayer(a,this.beforeId)}),this.applyLayoutVisibility())}removeLayers(){if(!this.maplibreLayer?.maplibreMap||!Array.isArray(this.layers))return;let{maplibreMap:r}=this.maplibreLayer;r&&this.layers.forEach(a=>{let{id:l}=a;l&&r.getLayer(l)&&r.removeLayer(l)})}onLoad(){if(!this.maplibreLayer?.maplibreMap)return;this.addSources(),this.addLayers();let{maplibreMap:r}=this.maplibreLayer,a=r.getStyle();if(a?.layers&&this.layersFilter){let l=a.layers.filter(this.layersFilter);this.disabled=!l.length}}getFeatureInfoAtCoordinate(r){if(!this.maplibreLayer?.maplibreMap)return Promise.resolve({coordinate:r,features:[],layer:this});let{maplibreMap:a}=this.maplibreLayer;if(!a.isStyleLoaded())return Promise.resolve({coordinate:r,features:[],layer:this});let l=this.layers||[];return this.layersFilter&&(l=a.getStyle().layers.filter(this.layersFilter)),this.queryRenderedLayersFilter&&(l=a.getStyle().layers.filter(this.queryRenderedLayersFilter)),Promise.resolve({features:[],layer:this,coordinate:r})}setHoverState(r,a){if(!this.maplibreLayer?.maplibreMap||!r.length)return;let{maplibreMap:l}=this.maplibreLayer;r.forEach(o=>{let{source:g,sourceLayer:v}=o.get(ra)||{};if(!g&&!v||!o.getId()){o.getId()||console.warn("No feature's id found. To use the feature state functionnality, tiles must be generated with --generate-ids. See https://github.com/Maplibre/tippecanoe#adding-calculated-attributes.",o.getId(),o.getProperties());return}l.setFeatureState({id:o.getId(),source:g,sourceLayer:v},{hover:a})})}select(r=[]){this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=r,this.setHoverState(this.selectedFeatures||[],!0)}highlight(r=[]){let a=this.highlightedFeatures?.filter(l=>!(this.selectedFeatures||[]).map(o=>o.getId()).includes(l.getId()))||[];this.setHoverState(a,!1),this.highlightedFeatures=r,this.setHoverState(this.highlightedFeatures,!0)}applyLayoutVisibility(r){if(!this.maplibreLayer?.maplibreMap?.getStyle()||!this.layersFilter)return;let{maplibreMap:a}=this.maplibreLayer,l=a.getStyle(),o=this.getVisible()?"visible":"none",g=l.layers||[];for(let v=0;v<g.length;v+=1){let w=g[v];if(this.layersFilter(w)){let{id:T}=w;a.getLayer(T)&&(a.setLayoutProperty(T,"visibility",o),(this.getMinZoom()||this.getMaxZoom())&&a.setLayerZoomRange(T,this.getMinZoom()?this.getMinZoom()-1:0,this.getMaxZoom()?this.getMaxZoom()-1:24))}}}clone(r){return new h({...this.options,...r})}},Fb=Vy;var $y=fo(vp());var jy=fo(vp()),Uy=fo(Vb());function gI(h){return class extends h{constructor(r){super({hitTolerance:10,...r}),this.defineProperties(r),this.debug=r.debug||!1,this.mode=r.mode||Ki.TOPOGRAPHIC,this.api=r.api||new Ch(r),this.tenant=r.tenant||"",this.minZoomInterpolation=r.minZoomInterpolation||8,this.format=new vr,this.onStart=r.onStart,this.onStop=r.onStop,this.motsByZoom=r.motsByZoom||[vs,vs,vs,vs,vs,vs,vs,vs,vs,Yd,Yd],this.getMotsByZoom=a=>r.getMotsByZoom?r.getMotsByZoom(a,this.motsByZoom):this.motsByZoom[a],this.generalizationLevelByZoom=r.generalizationLevelByZoom||[],this.getGeneralizationLevelByZoom=a=>r.getGeneralizationLevelByZoom?r.getGeneralizationLevelByZoom(a,this.generalizationLevelByZoom):this.generalizationLevelByZoom[a],this.renderTimeIntervalByZoom=r.renderTimeIntervalByZoom||[1e5,5e4,4e4,3e4,2e4,15e3,1e4,5e3,2e3,1e3,400,300,250,180,90,60,50,50,50,50,50],this.getRenderTimeIntervalByZoom=a=>r.getRenderTimeIntervalByZoom?r.getRenderTimeIntervalByZoom(a,this.renderTimeIntervalByZoom):this.renderTimeIntervalByZoom[a],this.isUpdateBboxOnMoveEnd=r.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,Uy.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,jy.default)(this.renderTrajectoriesInternal,50,{leading:!0,trailing:!0,maxWait:5e3}),this.renderTrajectoriesInternal=this.renderTrajectoriesInternal.bind(this),this.onTrajectoryMessage=this.onTrajectoryMessage.bind(this),this.onDeleteTrajectoryMessage=this.onDeleteTrajectoryMessage.bind(this),this.onDocumentVisibilityChange=this.onDocumentVisibilityChange.bind(this)}defineProperties(r){(super.defineProperties||(()=>{}))(r);let{style:a,speed:l,pixelRatio:o,hoverVehicleId:g,selectedVehicleId:v,filter:w,sort:T,time:S,live:k,canvas:F,styleOptions:j,mode:J,bboxParameters:he}=r,q=F,Z=l||1,ne=S||new Date,me=J||Ki.TOPOGRAPHIC,_e=a||Ya;Object.defineProperties(this,{isTrackerLayer:{value:!0},canvas:{get:()=>(q||(q=document.createElement("canvas")),q),set:fe=>{q=fe}},mode:{get:()=>me,set:fe=>{fe!==me&&(me=fe,this.api?.wsApi?.open&&(this.stop(),this.start()))}},style:{get:()=>_e,set:fe=>{_e=fe,this.renderTrajectories()}},styleOptions:{value:{...oc,...j||{}}},speed:{get:()=>Z,set:fe=>{Z=fe,this.start()}},bboxParameters:{value:he,writable:!0},filter:{value:w,writable:!0},sort:{value:T,writable:!0},live:{value:k===!1?k:!0,writable:!0},time:{get:()=>ne,set:fe=>{ne=fe&&fe.getTime?fe:new Date(fe),this.renderTrajectories()}},trajectories:{value:{},writable:!0},hoverVehicleId:{value:g,writable:!0},selectedVehicleId:{value:v,writable:!0},pixelRatio:{value:o||(typeof window<"u"?window.devicePixelRatio:1),writable:!0},useRequestAnimationFrame:{value:r.useRequestAnimationFrame||!1,writable:!0},useThrottle:{value:r.useThrottle!==!1,writable:!0},useDebounce:{value:r.useDebounce||!1,writable:!0}})}attachToMap(r){super.attachToMap(r),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),Ih(this.visibilityRef),this.canvas){let r=this.canvas.getContext("2d");r&&r.clearRect(0,0,this.canvas.width,this.canvas.height),super.detachFromMap()}}start(){this.stop(),this.purgeOutOfDateTrajectories(),this.renderTrajectories(),this.startUpdateTime(),this.api.open(),this.api.subscribeTrajectory(this.mode,this.onTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.api.subscribeDeletedVehicles(this.mode,this.onDeleteTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.onStart&&this.onStart(this)}startUpdateTime(){this.stopUpdateTime(),this.updateTimeDelay=this.getRefreshTimeInMs()||0,this.updateTimeInterval=window.setInterval(()=>{this.live?this.time=new Date:this.time&&this.updateTimeDelay&&this.speed&&(this.time=new Date(this.time.getTime()+this.updateTimeDelay*this.speed))},this.updateTimeDelay)}stop(){this.api.unsubscribeTrajectory(this.onTrajectoryMessage),this.api.unsubscribeDeletedVehicles(this.onDeleteTrajectoryMessage),this.api.close(),this.onStop&&this.onStop(this)}stopUpdateTime(){this.updateTimeInterval&&(clearInterval(this.updateTimeInterval),this.updateTimeInterval=void 0)}renderTrajectoriesInternal(r,a=!1){if(!this.map||!this.trajectories)return!1;let l=this.live?Date.now():this.time?.getTime(),o=Object.values(this.trajectories);return this.sort&&o.sort(this.sort),!this.canvas||!this.style||(this.renderState=Wh(this.canvas,o,this.style,{...r,pixelRatio:this.pixelRatio||1,time:l},{filter:this.filter,noInterpolate:(r.zoom||0)<this.minZoomInterpolation?!0:a,hoverVehicleId:this.hoverVehicleId,selectedVehicleId:this.selectedVehicleId,...this.styleOptions})),!0}renderTrajectories(r,a){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),r&&(!a&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(r,a)}):!a&&this.useDebounce?this.debounceRenderTrajectories(r,a):!a&&this.useThrottle?this.throttleRenderTrajectories(r,a):this.renderTrajectoriesInternal(r,a))}setBbox(r,a){if(this.trajectories&&r&&a){let k=Object.keys(this.trajectories);for(let F=k.length-1;F>=0;F-=1)this.purgeTrajectory(this.trajectories[k[F]],r,a)}let l=Math.floor(a);if(!r||Number.isNaN(l))return;let[o,g,v,w]=r,T=[Math.floor(o),Math.floor(g),Math.ceil(v),Math.ceil(w),l],S=this.getGeneralizationLevelByZoom(l);this.generalizationLevel&&T.push(`gen=${S}`),this.mots=this.getMotsByZoom(l),this.mots&&T.push(`mots=${this.mots}`),this.tenant&&T.push(`tenant=${this.tenant}`),this.mode!=="topographic"&&T.push(`channel_prefix=${this.mode}`),this.bboxParameters&&Object.entries(this.bboxParameters).forEach(([k,F])=>{T.push(`${k}=${F}`)}),this.api.bbox=T}getRefreshTimeInMs(r=0){let a=r!==void 0?Math.round(r):-1,l=this.getRenderTimeIntervalByZoom(a)||25,o=Math.max(25,l/(this.speed||1)),g=Math.min(o,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,Uy.default)(this.renderTrajectoriesInternal,g,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,jy.default)(this.renderTrajectoriesInternal,g,{leading:!0,trailing:!0,maxWait:5e3})),this.api?.buffer){let[,v]=this.api.buffer;this.api.buffer=[g,v]}return o}getVehicle(r){return this.trajectories&&Object.values(this.trajectories).filter(r)||[]}getFeatureInfoAtCoordinate(r,a){let{resolution:l,nb:o}=a,g=bn([...r,...r],this.hitTolerance*l),v=Object.values(this.trajectories||{});this.sort&&(v=v.sort(this.sort));let w=[];for(let T=0;T<v.length&&(v[T].properties.coordinate&&mo(g,v[T].properties.coordinate)&&w.push(v[T]),w.length!==o);T+=1);return Promise.resolve({layer:this,features:w,coordinate:r})}getTrajectoryInfos(r){let a=[this.api.getStopSequence(r),this.api.getFullTrajectory(r,this.mode,this.getGeneralizationLevelByZoom(Math.floor(this.map?.getView()?.getZoom()||0)))];return Promise.all(a).then(([l,o])=>({stopSequence:l,fullTrajectory:o}))}purgeOutOfDateTrajectories(){Object.entries(this.trajectories||{}).forEach(([r,a])=>{let l=a?.properties?.time_intervals;this.time&&l.length&&l[l.length-1][0]<this.time&&this.removeTrajectory(r)})}purgeTrajectory(r,a,l){let{type:o,bounds:g}=r.properties;return this.isUpdateBboxOnMoveEnd&&!Qi(a,g)||this.mots&&!this.mots.includes(o)?(this.removeTrajectory(r),!0):!1}addTrajectory(r){this.trajectories||(this.trajectories={}),this.trajectories[r.properties.train_id]=r,this.renderTrajectories()}removeTrajectory(r){let a;typeof r!="string"?a=r?.properties?.train_id:a=r,this.trajectories&&delete this.trajectories[a]}onZoomEnd(){this.startUpdateTime()}onDocumentVisibilityChange(){if(document.hidden)this.stop(),this.trajectories={};else{if(this.visible===!1)return;this.start()}}onTrajectoryMessage(r){if(!r.content)return;let a=r.content,{geometry:l,properties:{train_id:o,time_since_update:g,raw_coordinates:v}}=a;g<0||this.purgeTrajectory(a)||(this.debug&&this.mode===Ki.TOPOGRAPHIC&&v?a.properties.olGeometry=this.format.readGeometry({type:"Point",coordinates:yr(v,this.map.getView().getProjection())}):a.properties.olGeometry=this.format.readGeometry(l),a.properties.timeOffset=Date.now()-r.timestamp,this.addTrajectory(a))}onDeleteTrajectoryMessage(r){r.content&&this.removeTrajectory(r.content)}highlightVehicle(r){this.hoverVehicleId!==r&&(this.hoverVehicleId=r,this.renderTrajectories(!0))}selectVehicle(r){this.selectedVehicleId!==r&&(this.selectedVehicleId=r,this.renderTrajectories(!0))}}}var wp=gI;var yI=new zr({zIndex:2,image:new Rn({radius:5,fill:new Fr({color:"#000000"})}),stroke:new nr({color:"#000000",width:6})}),_I=(h,e,r)=>{let a="#ffffff",l=h.get("type"),o=h.get("stroke");return o&&o[0]!=="#"&&(o=`#${o}`),a=o||r?.getBgColor(l),a=/#ffffff/i.test(a)?"#ff0000":a,[yI,new zr({zIndex:3,image:new Rn({radius:4,fill:new Fr({color:a})}),stroke:new nr({color:a,width:4})})]},Sp=_I;var xI=new zr({zIndex:2,image:new Rn({radius:5,fill:new Fr({color:"#000000"})}),stroke:new nr({color:"#000000",width:6})}),vI=new zr({zIndex:3,image:new Rn({radius:4,fill:new Fr({color:"#a0a0a0"})}),stroke:new nr({color:"#a0a0a0",width:4})}),bI=()=>[xI,vI],Gb=bI;var jb=new Rn({radius:6,fill:new Fr({color:[255,0,0,1]}),stroke:new nr({color:[0,0,0,1],width:1})}),wI=new zr({stroke:new nr({color:[0,0,0,1],width:5})}),SI=new zr({image:jb,stroke:new nr({color:[255,0,0,1],width:3})}),CI=new zr({image:jb,stroke:new nr({color:[255,0,0,1],width:3,lineDash:[1,10]})}),II=(h,e)=>{let r=h.get("minResolution"),a=h.get("maxResolution"),l=e<=r&&e>a;return r&&a&&!l?[]:h.get("mot")!=="foot"?[wI,SI]:[CI]},Ub=II;var EI=new vr,gu=class extends mp{prepareFrame(){return!0}renderFrame(e){let{canvas:r,renderedViewState:a}=this.getLayer();if(this.container||(this.container=document.createElement("div"),this.container.className=this.getLayer().getClassName(),this.container.style.position="absolute",this.container.style.width="100%",this.container.style.height="100%",r&&(r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.transformOrigin="top left",this.container.appendChild(r))),a){let{center:l,resolution:o,rotation:g}=e.viewState,{center:v,resolution:w,rotation:T}=a;if(w/o>=3)r?.getContext("2d")?.clearRect(0,0,r?.width,r?.height);else{let S=this.getLayer().getMapInternal()?.getPixelFromCoordinate(v),k=this.getLayer().getMapInternal().getPixelFromCoordinate(l);this.container.style.transform=G0(S[0]-k[0],S[1]-k[1],w/o,w/o,g-T,0,0)}}return this.container}getData(e){let r;try{let{pixelRatio:a}=this.getLayer();return r=this.canvas?.getContext("2d",{willReadFrequently:!0})?.getImageData(e[0]*(a||1),e[1]*(a||1),1,1).data||null,r}catch(a){console.error("error getting data",a)}return null}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(g=>{l(g,this.layer_,g.getGeometry())}),o?.[0]}getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),o=a.getMapInternal().getView().getResolution(),g=10,v=bn([...e,...e],r*o),w=[],T=Object.values(a.trajectories||{});a.sort&&(T=T.sort(this.sort));let S=[];for(let k=0;k<T.length;k+=1){let F=T[k];if(F.properties.coordinate&&mo(v,F.properties.coordinate)&&S.push(T[k]),S.length===g)break}return w=S.map(k=>EI.readFeature(k)),w}};var TI=new vr,qy=class h extends wp(_c(xo)){constructor(r){super({source:new Po({}),...r});this.allowRenderWhenAnimating=!1;this.allowRenderWhenAnimating=!!r.allowRenderWhenAnimating,this.vectorLayer=new Qa({updateWhileAnimating:this.allowRenderWhenAnimating,updateWhileInteracting:!0,source:new el({features:[]}),style:(a,l)=>(r.fullTrajectoryStyle||Sp)(a,l,this.styleOptions)}),this.renderState={center:[0,0],zoom:void 0,rotation:0},this.onZoomEndDebounced=(0,$y.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,$y.default)(this.onMoveEnd,100)}createRenderer(){return new gu(this)}attachToMap(r){if(super.attachToMap(r),this.map){this.visible&&this.start();let a=this.map.getLayers().getArray().indexOf(this);this.map.getLayers().insertAt(a,this.vectorLayer),this.olListenersKeys.push(...this.map.on(["moveend","change:target"],l=>{let o=(l.map||l.target).getView();if(o.getAnimating()||o.getInteracting())return;let g=o.getZoom();this.currentZoom!==g&&this.onZoomEndDebounced(l),this.currentZoom=g,this.onMoveEndDebounced(l)}),this.on("change:visible",l=>{l.target.visible?this.start():this.stop()}),this.on("propertychange",l=>{/(opacity|visible|zIndex|minResolution|maxResolution|minZoom|maxZoom)/.test(l.key)&&this.vectorLayer.set(l.key,l.target.get(l.key))}))}}detachFromMap(){this.map?.removeLayer(this.vectorLayer),super.detachFromMap()}renderTrajectories(r){if(!this.map)return;let a=this.map.getView();a.getCenter()&&super.renderTrajectories({size:this.map.getSize(),center:a.getCenter(),extent:a.calculateExtent(),resolution:a.getResolution(),rotation:a.getRotation(),zoom:a.getZoom(),pixelRatio:this.pixelRatio},r)}renderTrajectoriesInternal(r,a){if(!this.map)return!1;let l=!1;return l=(this.allowRenderWhenAnimating?!1:this.map.getView().getAnimating()||this.map.getView().getInteracting())?!1:super.renderTrajectoriesInternal(r,a),l&&(this.renderedViewState={...r},this.getRenderer().container&&(this.getRenderer().container.style.transform="")),l}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getView().getZoom())}onMoveEnd(r){!this.isUpdateBboxOnMoveEnd||!this.visible||this.setBbox()}onZoomEnd(){super.onZoomEnd(),!(!this.isUpdateBboxOnMoveEnd||!this.visible)&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}highlight(r){this.highlightVehicle(r?.get("train_id"))}select(r){this.selectVehicle(r?.get("train_id")),this.highlightTrajectory(r?.get("train_id"))}purgeTrajectory(r,a,l){let o=this.map.getView().getCenter();return!a&&!o?!1:super.purgeTrajectory(r,a||this.map.getView().calculateExtent(),l||this.map.getView().getZoom())}setBbox(r,a){super.setBbox(r||this.map.getView().calculateExtent(),a||this.map.getView().getZoom())}highlightTrajectory(r){return r?this.api.getFullTrajectory(r,this.mode,this.getGeneralizationLevelByZoom(Math.floor(this.map?.getView()?.getZoom()||0))).then(a=>{let l=a.content;if(!l?.features?.length)return[];let o=TI.readFeatures(l);return this.vectorLayer.getSource().clear(!0),o.length&&this.vectorLayer.getSource().addFeatures(o),o}).catch(()=>(this.vectorLayer.getSource().clear(!0),[])):(this.vectorLayer.getSource().clear(!0),Promise.resolve([]))}clone(r){return new h({...this.options,...r})}},$b=qy;var MI=new vr,AI=(h,e,r)=>{let a,{coordinate:l,resolution:o,projection:g,params:v}=e;return h&&o&&g&&(a=h.getFeatureInfoUrl(l,o,g,{info_format:"application/json",query_layers:h.getParams().layers,...v})),fetch(a,{signal:r.signal}).then(w=>w.json()).then(w=>MI.readFeatures(w)).catch(()=>[])},yu={},PI=async(h,e,r=5)=>{Object.values(yu).forEach(o=>{o?.abort()}),yu={};let l=ja(e).map(o=>{let g=o.getMapInternal(),v=g?.getView()?.getProjection()?.getCode(),w={features:[],layer:o,coordinate:h};if(!v)return Promise.resolve(w);if(o.getFeatureInfoAtCoordinate)return o.getFeatureInfoAtCoordinate(h);let T=o?.getSource();if(T?.getFeatureInfoUrl){let F=Gt(void 0);yu[F]?.abort(),yu[F]=new AbortController;let j=g?.getView()?.getResolution();return AI(T,{coordinate:h,resolution:j,projection:v,params:{info_format:"application/json",query_layers:T.getParams().layers}},yu[F]).then(J=>({features:J,layer:o,coordinate:h})).catch(()=>({features:[],layer:o,coordinate:h}))}let S=g?.getPixelFromCoordinate(h);if(!S)return Promise.resolve(w);let k=g?.getFeaturesAtPixel(S,{layerFilter:F=>F===o,hitTolerance:o.get("hitTolerance")||r||5});return Promise.resolve({features:k,layer:o,coordinate:h})});return Promise.all(l)},qb=PI;var Ap={};Of(Ap,{CopyrightControl:()=>Wb,Layer:()=>Ep,RealtimeAPI:()=>Ch,RealtimeLayer:()=>c1,RealtimeModes:()=>Ki,RoutingAPI:()=>bh,StopsAPI:()=>wh,VECTOR_TILE_FEATURE_PROPERTY:()=>ra,compareDepartures:()=>Zh,createCanvas:()=>xs,createRealtimeFilters:()=>Uf,debounceDeparturesMessages:()=>Lm,debounceWebsocketMessages:()=>Sh,getCircleCanvas:()=>Gm,getDelayBgCanvas:()=>Nm,getDelayTextCanvas:()=>Vm,getHoursAndMinutes:()=>O0,getLayersAsFlatArray:()=>ja,getMapGlCopyrights:()=>Ga,getMercatorResolution:()=>l1,getSourceCoordinates:()=>Mp,getTextCanvas:()=>jm,getUTCDateString:()=>F0,getUTCTimeString:()=>z0,getUrlWithParams:()=>Na,getVehiclePosition:()=>qh,pad:()=>Ed,realtimeConfig:()=>oc,realtimeDefaultStyle:()=>Ya,realtimeDelayStyle:()=>Um,realtimeSimpleStyle:()=>$m,removeDuplicate:()=>Va,renderTrajectories:()=>Wh,sortAndFilterDepartures:()=>Xh,sortByDelay:()=>$f});var RI=" | ",Wy=class{constructor(e={}){this.options=e}onAdd(e){return this.map=e,this.container||(this.container=document.createElement("div")),this.render=this.render.bind(this),this.map.on("idle",this.render),this.map.on("sourcedata",this.render),this.map.on("styledata",this.render),this.render(),this.container}onRemove(){return this.container?.parentElement&&this.container.parentElement?.removeChild(this.container),this.map&&(this.map.off("sourcedata",this.render),this.map.off("styledata",this.render),this.map.off("idle",this.render)),this.map=void 0,this.container}getDefaultPosition(){return"bottom-right"}render(){if(this.map&&this.container){let e=this.options?.separator||RI,r=this.options?.customAttribution||Ga(this.map),a=(Array.isArray(r)?r:[r]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},Wb=Wy;var Ip,kI=new Uint8Array(16);function Zy(){if(!Ip&&(Ip=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ip))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ip(kI)}var Br=[];for(let h=0;h<256;++h)Br.push((h+256).toString(16).slice(1));function Zb(h,e=0){return Br[h[e+0]]+Br[h[e+1]]+Br[h[e+2]]+Br[h[e+3]]+"-"+Br[h[e+4]]+Br[h[e+5]]+"-"+Br[h[e+6]]+Br[h[e+7]]+"-"+Br[h[e+8]]+Br[h[e+9]]+"-"+Br[h[e+10]]+Br[h[e+11]]+Br[h[e+12]]+Br[h[e+13]]+Br[h[e+14]]+Br[h[e+15]]}var LI=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Xy={randomUUID:LI};function DI(h,e,r){if(Xy.randomUUID&&!e&&!h)return Xy.randomUUID();h=h||{};let a=h.random||(h.rng||Zy)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){r=r||0;for(let l=0;l<16;++l)e[r+l]=a[l];return e}return Zb(a)}var Hy=DI;var Xb=fo(Dy()),Yy=class extends Xb.Evented{constructor(r={}){super();this.options={};this.type="custom";this.options=r,this.id=r.id||Hy(),this.type="custom"}onAdd(r,a){this.map=r}onRemove(r,a){this.map=void 0}render(r){}},Ep=Yy;var or=63710088e-1,Hb={centimeters:or*100,centimetres:or*100,degrees:or/111325,feet:or*3.28084,inches:or*39.37,kilometers:or/1e3,kilometres:or/1e3,meters:or,metres:or,miles:or/1609.344,millimeters:or*1e3,millimetres:or*1e3,nauticalmiles:or/1852,radians:1,yards:or*1.0936},I4={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:1/1e3,kilometres:1/1e3,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/or,yards:1.0936133};function Yb(h,e,r){r===void 0&&(r={});var a={type:"Feature"};return(r.id===0||r.id)&&(a.id=r.id),r.bbox&&(a.bbox=r.bbox),a.properties=e||{},a.geometry=h,a}function da(h,e,r){if(r===void 0&&(r={}),!h)throw new Error("coordinates is required");if(!Array.isArray(h))throw new Error("coordinates must be an Array");if(h.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!Ky(h[0])||!Ky(h[1]))throw new Error("coordinates must contain numbers");var a={type:"Point",coordinates:h};return Yb(a,e,r)}function FI(h,e){e===void 0&&(e="kilometers");var r=Hb[e];if(!r)throw new Error(e+" units is invalid");return h*r}function zI(h,e){e===void 0&&(e="kilometers");var r=Hb[e];if(!r)throw new Error(e+" units is invalid");return h/r}function Kb(h){var e=h%(2*Math.PI);return e*180/Math.PI}function tl(h){var e=h%360;return e*Math.PI/180}function Tp(h,e,r){if(e===void 0&&(e="kilometers"),r===void 0&&(r="kilometers"),!(h>=0))throw new Error("length must be a positive number");return FI(zI(h,e),r)}function Ky(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function Jy(h){return!!h&&h.constructor===Object}function _u(h,e,r){if(h!==null)for(var a,l,o,g,v,w,T,S=0,k=0,F,j=h.type,J=j==="FeatureCollection",he=j==="Feature",q=J?h.features.length:1,Z=0;Z<q;Z++){T=J?h.features[Z].geometry:he?h.geometry:h,F=T?T.type==="GeometryCollection":!1,v=F?T.geometries.length:1;for(var ne=0;ne<v;ne++){var me=0,_e=0;if(g=F?T.geometries[ne]:T,g!==null){w=g.coordinates;var fe=g.type;switch(S=r&&(fe==="Polygon"||fe==="MultiPolygon")?1:0,fe){case null:break;case"Point":if(e(w,k,Z,me,_e)===!1)return!1;k++,me++;break;case"LineString":case"MultiPoint":for(a=0;a<w.length;a++){if(e(w[a],k,Z,me,_e)===!1)return!1;k++,fe==="MultiPoint"&&me++}fe==="LineString"&&me++;break;case"Polygon":case"MultiLineString":for(a=0;a<w.length;a++){for(l=0;l<w[a].length-S;l++){if(e(w[a][l],k,Z,me,_e)===!1)return!1;k++}fe==="MultiLineString"&&me++,fe==="Polygon"&&_e++}fe==="Polygon"&&me++;break;case"MultiPolygon":for(a=0;a<w.length;a++){for(_e=0,l=0;l<w[a].length;l++){for(o=0;o<w[a][l].length-S;o++){if(e(w[a][l][o],k,Z,me,_e)===!1)return!1;k++}_e++}me++}break;case"GeometryCollection":for(a=0;a<g.geometries.length;a++)if(_u(g.geometries[a],e,r)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function OI(h,e){e===void 0&&(e={});var r=0,a=0,l=0;return _u(h,function(o){r+=o[0],a+=o[1],l++},!0),da([r/l,a/l],e.properties)}var Jb=OI;function Xs(h){if(!h)throw new Error("coord is required");if(!Array.isArray(h)){if(h.type==="Feature"&&h.geometry!==null&&h.geometry.type==="Point")return h.geometry.coordinates;if(h.type==="Point")return h.coordinates}if(Array.isArray(h)&&h.length>=2&&!Array.isArray(h[0])&&!Array.isArray(h[1]))return h;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Qb(h){if(Array.isArray(h))return h;if(h.type==="Feature"){if(h.geometry!==null)return h.geometry.coordinates}else if(h.coordinates)return h.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function BI(h,e,r){r===void 0&&(r={});var a;r.final?a=e1(Xs(e),Xs(h)):a=e1(Xs(h),Xs(e));var l=a>180?-(360-a):a;return l}function e1(h,e){var r=tl(h[1]),a=tl(e[1]),l=tl(e[0]-h[0]);l>Math.PI&&(l-=2*Math.PI),l<-Math.PI&&(l+=2*Math.PI);var o=Math.log(Math.tan(a/2+Math.PI/4)/Math.tan(r/2+Math.PI/4)),g=Math.atan2(l,o);return(Kb(g)+360)%360}var t1=BI;function NI(h,e,r){r===void 0&&(r={});var a=Xs(h),l=Xs(e);l[0]+=l[0]-a[0]>180?-360:a[0]-l[0]>180?360:0;var o=VI(a,l),g=Tp(o,"meters",r.units);return g}function VI(h,e,r){r=r===void 0?or:Number(r);var a=r,l=h[1]*Math.PI/180,o=e[1]*Math.PI/180,g=o-l,v=Math.abs(e[0]-h[0])*Math.PI/180;v>Math.PI&&(v-=2*Math.PI);var w=Math.log(Math.tan(o/2+Math.PI/4)/Math.tan(l/2+Math.PI/4)),T=Math.abs(w)>1e-11?g/w:Math.cos(l),S=Math.sqrt(g*g+T*T*v*v),k=S*a;return k}var i1=NI;function GI(h,e,r,a){a===void 0&&(a={});var l=e<0,o=Tp(Math.abs(e),a.units,"meters");l&&(o=-Math.abs(o));var g=Xs(h),v=jI(g,o,r);return v[0]+=v[0]-g[0]>180?-360:g[0]-v[0]>180?360:0,da(v,a.properties)}function jI(h,e,r,a){a=a===void 0?or:Number(a);var l=e/a,o=h[0]*Math.PI/180,g=tl(h[1]),v=tl(r),w=l*Math.cos(v),T=g+w;Math.abs(T)>Math.PI/2&&(T=T>0?Math.PI-T:-Math.PI-T);var S=Math.log(Math.tan(T/2+Math.PI/4)/Math.tan(g/2+Math.PI/4)),k=Math.abs(S)>1e-11?w/S:Math.cos(g),F=l*Math.sin(v)/k,j=o+F;return[(j*180/Math.PI+540)%360-180,T*180/Math.PI]}var r1=GI;function UI(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return n1(h);case"FeatureCollection":return $I(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Qy(h);default:throw new Error("unknown GeoJSON type")}}function n1(h){var e={type:"Feature"};return Object.keys(h).forEach(function(r){switch(r){case"type":case"properties":case"geometry":return;default:e[r]=h[r]}}),e.properties=s1(h.properties),e.geometry=Qy(h.geometry),e}function s1(h){var e={};return h&&Object.keys(h).forEach(function(r){var a=h[r];typeof a=="object"?a===null?e[r]=null:Array.isArray(a)?e[r]=a.map(function(l){return l}):e[r]=s1(a):e[r]=a}),e}function $I(h){var e={type:"FeatureCollection"};return Object.keys(h).forEach(function(r){switch(r){case"type":case"features":return;default:e[r]=h[r]}}),e.features=h.features.map(function(r){return n1(r)}),e}function Qy(h){var e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(function(r){return Qy(r)}),e):(e.coordinates=o1(h.coordinates),e)}function o1(h){var e=h;return typeof e[0]!="object"?e.slice():e.map(function(r){return o1(r)})}var a1=UI;function qI(h,e,r){if(r=r||{},!Jy(r))throw new Error("options is invalid");var a=r.pivot,l=r.mutate;if(!h)throw new Error("geojson is required");if(e==null||isNaN(e))throw new Error("angle is required");return e===0||(a||(a=Jb(h)),(l===!1||l===void 0)&&(h=a1(h)),_u(h,function(o){var g=t1(a,o),v=g+e,w=i1(a,o),T=Qb(r1(a,w,v));o[0]=T[0],o[1]=T[1]})),h}var e_=qI;var WI=(h,e=1)=>{let{width:r,height:a}=h.getCanvas(),l=h.unproject({x:0,y:0}),o=h.unproject({x:0,y:a/e}),g=h.unproject({x:r/e,y:a/e}),v=h.unproject({x:r/e,y:0});return[[l.lng,l.lat],[v.lng,v.lat],[g.lng,g.lat],[o.lng,o.lat]]},Mp=WI;var ZI=h=>{let e=h.getBounds().toArray(),r=yr(e[0]),a=yr(e[1]),l=[...r,...a],{width:o,height:g}=h.getCanvas(),v=$i(l)/o,w=ln(l)/g;return Math.max(v,w)},l1=ZI;var XI=h=>Rh(h.toArray().flat(),"EPSG:4326","EPSG:3857"),t_=XI;var i_=class extends wp(Ep){constructor(e={}){let r=document.createElement("canvas");super({canvas:r,...e}),this.source={id:this.id,type:"canvas",canvas:this.canvas,coordinates:[[0,0],[1,1],[2,2],[0,0]],animate:!0,attribution:e.attribution?.join(", "),loaded:!0},this.layer={id:`${this.id}-raster`,type:"raster",source:this.id,layout:{visibility:"visible"},paint:{"raster-opacity":1,"raster-fade-duration":0,"raster-resampling":"nearest"}},this.onLoad=this.onLoad.bind(this),this.onMove=this.onMove.bind(this),this.onMoveEnd=this.onMoveEnd.bind(this),this.onZoomEnd=this.onZoomEnd.bind(this)}onAdd(e,r){super.onAdd(e,r),e.isStyleLoaded()&&this.onLoad(),e.on("load",this.onLoad)}onRemove(e,r){e.off("load",this.onLoad),e.getLayer(this.layer.id)&&e.removeLayer(this.layer.id),e.getSource(this.id)&&e.removeSource(this.id),super.onRemove(e,r)}onLoad(){this.map.getSource(this.id)||this.map.addSource(this.id,this.source),this.map.getLayer(this.layer.id)||this.map.addLayer(this.layer,this.id),this.start()}start(){super.start(),this.map.on("move",this.onMove),this.map.on("moveend",this.onMoveEnd),this.map.on("zoomend",this.onZoomEnd)}stop(){super.stop(),this.map?.off("move",this.onMove),this.map?.off("moveend",this.onMoveEnd),this.map?.off("zoomend",this.onZoomEnd)}renderTrajectories(e=!1){if(!this.map)return;this.pixelRatio||(this.pixelRatio=1);let{width:r,height:a}=this.map.getCanvas(),l=this.map.getCenter(),o=this.map.unproject({x:0,y:a/this.pixelRatio}),g=this.map.unproject({x:r/this.pixelRatio,y:0}),v=e_(da([o.lng,o.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,w=e_(da([g.lng,g.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,T=[...yr(v),...yr(w)],S=$i(T)/(r/this.pixelRatio),k=ln(T)/(a/this.pixelRatio),F=Math.max(S,k),j={size:[r/this.pixelRatio,a/this.pixelRatio],center:yr([l.lng,l.lat]),extent:T,resolution:F,zoom:this.map.getZoom()-1,rotation:-(this.map.getBearing()*Math.PI)/180,pixelRatio:this.pixelRatio};super.renderTrajectories(j,e)}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getZoom())}purgeTrajectory(e,r,a){return super.purgeTrajectory(e,r||t_(this.map.getBounds()),a||Math.floor(this.map.getZoom()-1))}setBbox(e,r){super.setBbox(e||t_(this.map.getBounds()),r||this.map.getZoom()-1)}renderTrajectoriesInternal(e,r=!1){let a=super.renderTrajectoriesInternal(e,r);if(a&&this.map.style){let l=Mp(this.map,this.pixelRatio),o=this.map.getSource(this.id);o&&o.setCoordinates(l)}return a}onMove(){this.renderTrajectories()}onMoveEnd(){this.renderTrajectories(),this.isUpdateBboxOnMoveEnd&&this.setBbox()}},c1=i_;var r_={ol:Cp,maplibre:Ap};typeof window<"u"&&(window.mbt=r_);var P6=r_;})();
|
|
585
|
+
`){At+=xt,xt=0,Ye=F*_e+Pe*j,++tt;continue}let Ft=J[ut+1]||w.font;Ft!==yt&&(l&&je.push("font",Ft),a&&Ke.push("font",Ft),yt=Ft),xt=Math.max(xt,ne[rt]);let Bt=[mt,Ye+Pe*Z[rt]+F*(Z[rt]-me[tt]),.5*(j+xt)+At];Ye+=Z[rt],l&&je.push("strokeText",Bt),a&&Ke.push("fillText",Bt),++rt}return Array.prototype.push.apply(fe,je),Array.prototype.push.apply(fe,Ke),this.labels_[o]=Re,Re}replayTextBackground_(e,r,a,l,o,g,v){e.beginPath(),e.moveTo.apply(e,r),e.lineTo.apply(e,a),e.lineTo.apply(e,l),e.lineTo.apply(e,o),e.lineTo.apply(e,r),g&&(this.alignAndScaleFill_=g[2],this.fill_(e)),v&&(this.setStrokeStyle_(e,v),e.stroke())}calculateImageOrLabelDimensions_(e,r,a,l,o,g,v,w,T,S,k,F,j,J,he,q){v*=F[0],w*=F[1];let Z=a-v,ne=l-w,me=o+T>e?e-T:o,_e=g+S>r?r-S:g,fe=J[3]+me*F[0]+J[1],ve=J[0]+_e*F[1]+J[2],Ee=Z-J[3],Re=ne-J[0];(he||k!==0)&&(ha[0]=Ee,ua[0]=Ee,ha[1]=Re,Mo[1]=Re,Mo[0]=Ee+fe,Ao[0]=Mo[0],Ao[1]=Re+ve,ua[1]=Ao[1]);let Pe;return k!==0?(Pe=an(mr(),a,l,1,1,k,-a,-l),rr(Pe,ha),rr(Pe,Mo),rr(Pe,Ao),rr(Pe,ua),yo(Math.min(ha[0],Mo[0],Ao[0],ua[0]),Math.min(ha[1],Mo[1],Ao[1],ua[1]),Math.max(ha[0],Mo[0],Ao[0],ua[0]),Math.max(ha[1],Mo[1],Ao[1],ua[1]),mc)):yo(Math.min(Ee,Ee+fe),Math.min(Re,Re+ve),Math.max(Ee,Ee+fe),Math.max(Re,Re+ve),mc),j&&(Z=Math.round(Z),ne=Math.round(ne)),{drawImageX:Z,drawImageY:ne,drawImageW:me,drawImageH:_e,originX:T,originY:S,declutterBox:{minX:mc[0],minY:mc[1],maxX:mc[2],maxY:mc[3],value:q},canvasTransform:Pe,scale:F}}replayImageOrLabel_(e,r,a,l,o,g,v){let w=!!(g||v),T=l.declutterBox,S=v?v[2]*l.scale[0]/2:0;return T.minX-S<=r[0]&&T.maxX+S>=0&&T.minY-S<=r[1]&&T.maxY+S>=0&&(w&&this.replayTextBackground_(e,ha,Mo,Ao,ua,g,v),yv(e,l.canvasTransform,o,a,l.originX,l.originY,l.drawImageW,l.drawImageH,l.drawImageX,l.drawImageY,l.scale)),!0}fill_(e){let r=this.alignAndScaleFill_;if(r){let a=rr(this.renderedTransform_,[0,0]),l=512*this.pixelRatio;e.save(),e.translate(a[0]%l,a[1]%l),r!==1&&e.scale(r,r),e.rotate(this.viewRotation_)}e.fill(),r&&e.restore()}setStrokeStyle_(e,r){e.strokeStyle=r[1],e.lineWidth=r[2],e.lineCap=r[3],e.lineJoin=r[4],e.miterLimit=r[5],e.lineDashOffset=r[7],e.setLineDash(r[6])}drawLabelWithPointPlacement_(e,r,a,l){let o=this.textStates[r],g=this.createLabel(e,r,l,a),v=this.strokeStates[a],w=this.pixelRatio,T=iy(Array.isArray(e)?e[0]:e,o.textAlign||aa),S=lu[o.textBaseline||Ja],k=v&&v.lineWidth?v.lineWidth:0,F=g.width/w-2*o.scale[0],j=T*F+2*(.5-T)*k,J=S*g.height/w+2*(.5-S)*k;return{label:g,anchorX:j,anchorY:J}}execute_(e,r,a,l,o,g,v,w){let T=this.zIndexContext_,S;this.pixelCoordinates_&&vn(a,this.renderedTransform_)?S=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),S=Cn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),N0(this.renderedTransform_,a));let k=0,F=l.length,j=0,J,he,q,Z,ne,me,_e,fe,ve,Ee,Re,Pe,Ye,je=0,Ke=0,xt=null,At=null,rt=this.coordinateCache_,tt=this.viewRotation_,yt=Math.round(Math.atan2(-a[1],a[0])*1e12)/1e12,ut={context:e,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:tt},Mt=this.instructions!=l||this.overlaps?0:200,mt,Ft,Bt,Ei;for(;k<F;){let Ue=l[k];switch(Ue[0]){case gt.BEGIN_GEOMETRY:mt=Ue[1],Ei=Ue[3],mt.getGeometry()?v!==void 0&&!Qi(v,Ei.getExtent())?k=Ue[2]+1:++k:k=Ue[2],T&&(T.zIndex=Ue[4]);break;case gt.BEGIN_PATH:je>Mt&&(this.fill_(e),je=0),Ke>Mt&&(e.stroke(),Ke=0),!je&&!Ke&&(e.beginPath(),ne=NaN,me=NaN),++k;break;case gt.CIRCLE:j=Ue[1];let xi=S[j],Nr=S[j+1],ar=S[j+2],Ln=S[j+3],lr=ar-xi,un=Ln-Nr,dn=Math.sqrt(lr*lr+un*un);e.moveTo(xi+dn,Nr),e.arc(xi,Nr,dn,0,2*Math.PI,!0),++k;break;case gt.CLOSE_PATH:e.closePath(),++k;break;case gt.CUSTOM:j=Ue[1],J=Ue[2];let oi=Ue[3],Dn=Ue[4],Ie=Ue[5];ut.geometry=oi,ut.feature=mt,k in rt||(rt[k]=[]);let tr=rt[k];Ie?Ie(S,j,J,2,tr):(tr[0]=S[j],tr[1]=S[j+1],tr.length=2),T&&(T.zIndex=Ue[6]),Dn(tr,ut),++k;break;case gt.DRAW_IMAGE:j=Ue[1],J=Ue[2],ve=Ue[3],he=Ue[4],q=Ue[5];let Ti=Ue[6],Et=Ue[7],ci=Ue[8],Vr=Ue[9],Fn=Ue[10],pn=Ue[11],os=Ue[12],fn=Ue[13];Z=Ue[14]||"declutter";let Xn=Ue[15];if(!ve&&Ue.length>=20){Ee=Ue[19],Re=Ue[20],Pe=Ue[21],Ye=Ue[22];let ae=this.drawLabelWithPointPlacement_(Ee,Re,Pe,Ye);ve=ae.label,Ue[3]=ve;let de=Ue[23];he=(ae.anchorX-de)*this.pixelRatio,Ue[4]=he;let se=Ue[24];q=(ae.anchorY-se)*this.pixelRatio,Ue[5]=q,Ti=ve.height,Ue[6]=Ti,fn=ve.width,Ue[13]=fn}let zn;Ue.length>25&&(zn=Ue[25]);let Oe,br,Zi;Ue.length>17?(Oe=Ue[16],br=Ue[17],Zi=Ue[18]):(Oe=Co,br=!1,Zi=!1),Fn&&yt?pn+=tt:!Fn&&!yt&&(pn-=tt);let Hs=0;for(;j<J;j+=2){if(zn&&zn[Hs++]<fn/this.pixelRatio)continue;let ae=this.calculateImageOrLabelDimensions_(ve.width,ve.height,S[j],S[j+1],fn,Ti,he,q,ci,Vr,pn,os,o,Oe,br||Zi,mt),de=[e,r,ve,ae,Et,br?xt:null,Zi?At:null];if(w){let se,ge,Te;if(Xn){let qe=J-j;if(!Xn[qe]){Xn[qe]={args:de,declutterMode:Z};continue}let Qe=Xn[qe];se=Qe.args,ge=Qe.declutterMode,delete Xn[qe],Te=qv(se)}let Se,Ce;if(se&&(ge!=="declutter"||!w.collides(Te))&&(Se=!0),(Z!=="declutter"||!w.collides(ae.declutterBox))&&(Ce=!0),ge==="declutter"&&Z==="declutter"){let qe=Se&&Ce;Se=qe,Ce=qe}Se&&(ge!=="none"&&w.insert(Te),this.replayImageOrLabel_.apply(this,se)),Ce&&(Z!=="none"&&w.insert(ae.declutterBox),this.replayImageOrLabel_.apply(this,de))}else this.replayImageOrLabel_.apply(this,de)}++k;break;case gt.DRAW_CHARS:let Li=Ue[1],Ne=Ue[2],bt=Ue[3],wt=Ue[4];Ye=Ue[5];let gi=Ue[6],Jr=Ue[7],vt=Ue[8];Pe=Ue[9];let On=Ue[10];Ee=Ue[11],Re=Ue[12];let yi=[Ue[13],Ue[13]];Z=Ue[14]||"declutter";let Q=this.textStates[Re],O=Q.font,N=[Q.scale[0]*Jr,Q.scale[1]*Jr],$;O in this.widths_?$=this.widths_[O]:($={},this.widths_[O]=$);let H=Wd(S,Li,Ne,2),ce=Math.abs(N[0])*Cg(O,Ee,$);if(wt||ce<=H){let ae=this.textStates[Re].textAlign,de=(H-ce)*iy(Ee,ae),se=$v(S,Li,Ne,2,Ee,de,gi,Math.abs(N[0]),Cg,O,$,yt?0:this.viewRotation_);e:if(se){let ge=[],Te,Se,Ce,qe,Qe;if(Pe)for(Te=0,Se=se.length;Te<Se;++Te){Qe=se[Te],Ce=Qe[4],qe=this.createLabel(Ce,Re,"",Pe),he=Qe[2]+(N[0]<0?-On:On),q=bt*qe.height+(.5-bt)*2*On*N[1]/N[0]-vt;let dt=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Qe[0],Qe[1],qe.width,qe.height,he,q,0,0,Qe[3],yi,!1,Co,!1,mt);if(w&&Z==="declutter"&&w.collides(dt.declutterBox))break e;ge.push([e,r,qe,dt,1,null,null])}if(Ye)for(Te=0,Se=se.length;Te<Se;++Te){Qe=se[Te],Ce=Qe[4],qe=this.createLabel(Ce,Re,Ye,""),he=Qe[2],q=bt*qe.height-vt;let dt=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Qe[0],Qe[1],qe.width,qe.height,he,q,0,0,Qe[3],yi,!1,Co,!1,mt);if(w&&Z==="declutter"&&w.collides(dt.declutterBox))break e;ge.push([e,r,qe,dt,1,null,null])}w&&Z!=="none"&&w.load(ge.map(qv));for(let dt=0,_t=ge.length;dt<_t;++dt)this.replayImageOrLabel_.apply(this,ge[dt])}}++k;break;case gt.END_GEOMETRY:if(g!==void 0){mt=Ue[1];let ae=g(mt,Ei);if(ae)return ae}++k;break;case gt.FILL:Mt?je++:this.fill_(e),++k;break;case gt.MOVE_TO_LINE_TO:for(j=Ue[1],J=Ue[2],Ft=S[j],Bt=S[j+1],_e=Ft+.5|0,fe=Bt+.5|0,(_e!==ne||fe!==me)&&(e.moveTo(Ft,Bt),ne=_e,me=fe),j+=2;j<J;j+=2)Ft=S[j],Bt=S[j+1],_e=Ft+.5|0,fe=Bt+.5|0,(j==J-2||_e!==ne||fe!==me)&&(e.lineTo(Ft,Bt),ne=_e,me=fe);++k;break;case gt.SET_FILL_STYLE:xt=Ue,this.alignAndScaleFill_=Ue[2],je&&(this.fill_(e),je=0,Ke&&(e.stroke(),Ke=0)),e.fillStyle=Ue[1],++k;break;case gt.SET_STROKE_STYLE:At=Ue,Ke&&(e.stroke(),Ke=0),this.setStrokeStyle_(e,Ue),++k;break;case gt.STROKE:Mt?Ke++:e.stroke(),++k;break;default:++k;break}}je&&this.fill_(e),Ke&&e.stroke()}execute(e,r,a,l,o,g){this.viewRotation_=l,this.execute_(e,r,a,this.instructions,o,void 0,void 0,g)}executeHitDetection(e,r,a,l,o){return this.viewRotation_=a,this.execute_(e,[e.canvas.width,e.canvas.height],r,this.hitDetectionInstructions,!0,l,o)}},Zv=ry;var gc=["Polygon","Circle","LineString","Image","Text","Default"],oy=["Image","Text"],Xv=gc.filter(h=>!oy.includes(h)),sy=class{constructor(e,r,a,l,o,g,v){this.maxExtent_=e,this.overlaps_=l,this.pixelRatio_=a,this.resolution_=r,this.renderBuffer_=g,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=mr(),this.renderedContext_=null,this.deferredZIndexContexts_=[],this.createExecutors_(o,v)}clip(e,r){let a=this.getClipCoords(r);e.beginPath(),e.moveTo(a[0],a[1]),e.lineTo(a[2],a[3]),e.lineTo(a[4],a[5]),e.lineTo(a[6],a[7]),e.clip()}createExecutors_(e,r){for(let a in e){let l=this.executorsByZIndex_[a];l===void 0&&(l={},this.executorsByZIndex_[a]=l);let o=e[a];for(let g in o){let v=o[g];l[g]=new Zv(this.resolution_,this.pixelRatio_,this.overlaps_,v,r)}}}hasExecutors(e){for(let r in this.executorsByZIndex_){let a=this.executorsByZIndex_[r];for(let l=0,o=e.length;l<o;++l)if(e[l]in a)return!0}return!1}forEachFeatureAtCoordinate(e,r,a,l,o,g){l=Math.round(l);let v=l*2+1,w=an(this.hitDetectionTransform_,l+.5,l+.5,1/r,-1/r,-a,-e[0],-e[1]),T=!this.hitDetectionContext_;T&&(this.hitDetectionContext_=Wi(v,v,void 0,{willReadFrequently:!0}));let S=this.hitDetectionContext_;S.canvas.width!==v||S.canvas.height!==v?(S.canvas.width=v,S.canvas.height=v):T||S.clearRect(0,0,v,v);let k;this.renderBuffer_!==void 0&&(k=Sn(),Kf(k,e),bn(k,r*(this.renderBuffer_+l),k));let F=eC(l),j;function J(fe,ve){let Ee=S.getImageData(0,0,v,v).data;for(let Re=0,Pe=F.length;Re<Pe;Re++)if(Ee[F[Re]]>0){if(!g||j!=="Image"&&j!=="Text"||g.includes(fe)){let Ye=(F[Re]-3)/4,je=l-Ye%v,Ke=l-(Ye/v|0),xt=o(fe,ve,je*je+Ke*Ke);if(xt)return xt}S.clearRect(0,0,v,v);break}}let he=Object.keys(this.executorsByZIndex_).map(Number);he.sort(Ds);let q,Z,ne,me,_e;for(q=he.length-1;q>=0;--q){let fe=he[q].toString();for(ne=this.executorsByZIndex_[fe],Z=gc.length-1;Z>=0;--Z)if(j=gc[Z],me=ne[j],me!==void 0&&(_e=me.executeHitDetection(S,w,a,J,k),_e))return _e}}getClipCoords(e){let r=this.maxExtent_;if(!r)return null;let a=r[0],l=r[1],o=r[2],g=r[3],v=[a,l,a,g,o,g,o,l];return Cn(v,0,8,2,e,v),v}isEmpty(){return qn(this.executorsByZIndex_)}execute(e,r,a,l,o,g,v){let w=Object.keys(this.executorsByZIndex_).map(Number);w.sort(Ds),g=g||gc;let T,S,k,F,j,J;for(v&&w.reverse(),T=0,S=w.length;T<S;++T){let he=w[T].toString();for(j=this.executorsByZIndex_[he],k=0,F=g.length;k<F;++k){let q=g[k];if(J=j[q],J!==void 0){let Z=v===null?void 0:J.getZIndexContext(),ne=Z?Z.getContext():e,me=this.maxExtent_&&q!=="Image"&&q!=="Text";if(me&&(ne.save(),this.clip(ne,a)),J.execute(ne,r,a,l,o,v),me&&ne.restore(),Z){Z.offset();let _e=w[T];this.deferredZIndexContexts_[_e]||(this.deferredZIndexContexts_[_e]=[]),this.deferredZIndexContexts_[_e].push(Z)}}}}this.renderedContext_=e}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){this.deferredZIndexContexts_.forEach(e=>{e.forEach(r=>{r.draw(this.renderedContext_),r.clear()})})}},ny={};function eC(h){if(ny[h]!==void 0)return ny[h];let e=h*2+1,r=h*h,a=new Array(r+1);for(let o=0;o<=h;++o)for(let g=0;g<=h;++g){let v=o*o+g*g;if(v>r)break;let w=a[v];w||(w=[],a[v]=w),w.push(((h+o)*e+(h+g))*4+3),o>0&&w.push(((h-o)*e+(h+g))*4+3),g>0&&(w.push(((h+o)*e+(h-g))*4+3),o>0&&w.push(((h-o)*e+(h-g))*4+3))}let l=[];for(let o=0,g=a.length;o<g;++o)a[o]&&l.push(...a[o]);return ny[h]=l,l}var Hv=sy;var ay=class extends pp{constructor(e,r,a,l,o,g,v){super(),this.context_=e,this.pixelRatio_=r,this.extent_=a,this.transform_=l,this.transformRotation_=l?cx(Math.atan2(l[1],l[0]),10):0,this.viewRotation_=o,this.squaredTolerance_=g,this.userTransform_=v,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=mr()}drawImages_(e,r,a,l){if(!this.image_)return;let o=Cn(e,r,a,l,this.transform_,this.pixelCoordinates_),g=this.context_,v=this.tmpLocalTransform_,w=g.globalAlpha;this.imageOpacity_!=1&&(g.globalAlpha=w*this.imageOpacity_);let T=this.imageRotation_;this.transformRotation_===0&&(T-=this.viewRotation_),this.imageRotateWithView_&&(T+=this.viewRotation_);for(let S=0,k=o.length;S<k;S+=2){let F=o[S]-this.imageAnchorX_,j=o[S+1]-this.imageAnchorY_;if(T!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let J=F+this.imageAnchorX_,he=j+this.imageAnchorY_;an(v,J,he,1,1,T,-J,-he),g.save(),g.transform.apply(g,v),g.translate(J,he),g.scale(this.imageScale_[0],this.imageScale_[1]),g.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),g.restore()}else g.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,F,j,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(g.globalAlpha=w)}drawText_(e,r,a,l){if(!this.textState_||this.text_==="")return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);let o=Cn(e,r,a,l,this.transform_,this.pixelCoordinates_),g=this.context_,v=this.textRotation_;for(this.transformRotation_===0&&(v-=this.viewRotation_),this.textRotateWithView_&&(v+=this.viewRotation_);r<a;r+=l){let w=o[r]+this.textOffsetX_,T=o[r+1]+this.textOffsetY_;v!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(g.save(),g.translate(w-this.textOffsetX_,T-this.textOffsetY_),g.rotate(v),g.translate(this.textOffsetX_,this.textOffsetY_),g.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&g.strokeText(this.text_,0,0),this.textFillState_&&g.fillText(this.text_,0,0),g.restore()):(this.textStrokeState_&&g.strokeText(this.text_,w,T),this.textFillState_&&g.fillText(this.text_,w,T))}}moveToLineTo_(e,r,a,l,o){let g=this.context_,v=Cn(e,r,a,l,this.transform_,this.pixelCoordinates_);g.moveTo(v[0],v[1]);let w=v.length;o&&(w-=2);for(let T=2;T<w;T+=2)g.lineTo(v[T],v[T+1]);return o&&g.closePath(),a}drawRings_(e,r,a,l){for(let o=0,g=a.length;o<g;++o)r=this.moveToLineTo_(e,r,a[o],l,!0);return r}drawCircle(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=Cx(e,this.transform_,this.pixelCoordinates_),a=r[2]-r[0],l=r[3]-r[1],o=Math.sqrt(a*a+l*l),g=this.context_;g.beginPath(),g.arc(r[0],r[1],o,0,2*Math.PI),this.fillState_&&g.fill(),this.strokeState_&&g.stroke()}this.text_!==""&&this.drawText_(e.getCenter(),0,2,2)}}setStyle(e){this.setFillStrokeStyle(e.getFill(),e.getStroke()),this.setImageStyle(e.getImage()),this.setTextStyle(e.getText())}setTransform(e){this.transform_=e}drawGeometry(e){switch(e.getType()){case"Point":this.drawPoint(e);break;case"LineString":this.drawLineString(e);break;case"Polygon":this.drawPolygon(e);break;case"MultiPoint":this.drawMultiPoint(e);break;case"MultiLineString":this.drawMultiLineString(e);break;case"MultiPolygon":this.drawMultiPolygon(e);break;case"GeometryCollection":this.drawGeometryCollection(e);break;case"Circle":this.drawCircle(e);break;default:}}drawFeature(e,r){let a=r.getGeometryFunction()(e);a&&(this.setStyle(r),this.drawGeometry(a))}drawGeometryCollection(e){let r=e.getGeometriesArray();for(let a=0,l=r.length;a<l;++a)this.drawGeometry(r[a])}drawPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawMultiPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(r,0,r.length,a),this.text_!==""&&this.drawText_(r,0,r.length,a)}drawLineString(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getFlatCoordinates();r.beginPath(),this.moveToLineTo_(a,0,a.length,e.getStride(),!1),r.stroke()}if(this.text_!==""){let r=e.getFlatMidpoint();this.drawText_(r,0,2,2)}}}drawMultiLineString(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let r=e.getExtent();if(Qi(this.extent_,r)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let a=this.context_,l=e.getFlatCoordinates(),o=0,g=e.getEnds(),v=e.getStride();a.beginPath();for(let w=0,T=g.length;w<T;++w)o=this.moveToLineTo_(l,o,g[w],v,!1);a.stroke()}if(this.text_!==""){let a=e.getFlatMidpoints();this.drawText_(a,0,a.length,2)}}}drawPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_;r.beginPath(),this.drawRings_(e.getOrientedFlatCoordinates(),0,e.getEnds(),e.getStride()),this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoint();this.drawText_(r,0,2,2)}}}drawMultiPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Qi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let r=this.context_,a=e.getOrientedFlatCoordinates(),l=0,o=e.getEndss(),g=e.getStride();r.beginPath();for(let v=0,w=o.length;v<w;++v){let T=o[v];l=this.drawRings_(a,l,T,g)}this.fillState_&&r.fill(),this.strokeState_&&r.stroke()}if(this.text_!==""){let r=e.getFlatInteriorPoints();this.drawText_(r,0,r.length,2)}}}setContextFillState_(e){let r=this.context_,a=this.contextFillState_;a?a.fillStyle!=e.fillStyle&&(a.fillStyle=e.fillStyle,r.fillStyle=e.fillStyle):(r.fillStyle=e.fillStyle,this.contextFillState_={fillStyle:e.fillStyle})}setContextStrokeState_(e){let r=this.context_,a=this.contextStrokeState_;a?(a.lineCap!=e.lineCap&&(a.lineCap=e.lineCap,r.lineCap=e.lineCap),vn(a.lineDash,e.lineDash)||r.setLineDash(a.lineDash=e.lineDash),a.lineDashOffset!=e.lineDashOffset&&(a.lineDashOffset=e.lineDashOffset,r.lineDashOffset=e.lineDashOffset),a.lineJoin!=e.lineJoin&&(a.lineJoin=e.lineJoin,r.lineJoin=e.lineJoin),a.lineWidth!=e.lineWidth&&(a.lineWidth=e.lineWidth,r.lineWidth=e.lineWidth),a.miterLimit!=e.miterLimit&&(a.miterLimit=e.miterLimit,r.miterLimit=e.miterLimit),a.strokeStyle!=e.strokeStyle&&(a.strokeStyle=e.strokeStyle,r.strokeStyle=e.strokeStyle)):(r.lineCap=e.lineCap,r.setLineDash(e.lineDash),r.lineDashOffset=e.lineDashOffset,r.lineJoin=e.lineJoin,r.lineWidth=e.lineWidth,r.miterLimit=e.miterLimit,r.strokeStyle=e.strokeStyle,this.contextStrokeState_={lineCap:e.lineCap,lineDash:e.lineDash,lineDashOffset:e.lineDashOffset,lineJoin:e.lineJoin,lineWidth:e.lineWidth,miterLimit:e.miterLimit,strokeStyle:e.strokeStyle})}setContextTextState_(e){let r=this.context_,a=this.contextTextState_,l=e.textAlign?e.textAlign:aa;a?(a.font!=e.font&&(a.font=e.font,r.font=e.font),a.textAlign!=l&&(a.textAlign=l,r.textAlign=l),a.textBaseline!=e.textBaseline&&(a.textBaseline=e.textBaseline,r.textBaseline=e.textBaseline)):(r.font=e.font,r.textAlign=l,r.textBaseline=e.textBaseline,this.contextTextState_={font:e.font,textAlign:l,textBaseline:e.textBaseline})}setFillStrokeStyle(e,r){if(!e)this.fillState_=null;else{let a=e.getColor();this.fillState_={fillStyle:Mn(a||sr)}}if(!r)this.strokeState_=null;else{let a=r.getColor(),l=r.getLineCap(),o=r.getLineDash(),g=r.getLineDashOffset(),v=r.getLineJoin(),w=r.getWidth(),T=r.getMiterLimit(),S=o||An;this.strokeState_={lineCap:l!==void 0?l:Vs,lineDash:this.pixelRatio_===1?S:S.map(k=>k*this.pixelRatio_),lineDashOffset:(g||Pn)*this.pixelRatio_,lineJoin:v!==void 0?v:Gs,lineWidth:(w!==void 0?w:Io)*this.pixelRatio_,miterLimit:T!==void 0?T:wo,strokeStyle:Mn(a||So)}}}setImageStyle(e){let r;if(!e||!(r=e.getSize())){this.image_=null;return}let a=e.getPixelRatio(this.pixelRatio_),l=e.getAnchor(),o=e.getOrigin();this.image_=e.getImage(this.pixelRatio_),this.imageAnchorX_=l[0]*a,this.imageAnchorY_=l[1]*a,this.imageHeight_=r[1]*a,this.imageOpacity_=e.getOpacity(),this.imageOriginX_=o[0],this.imageOriginY_=o[1],this.imageRotateWithView_=e.getRotateWithView(),this.imageRotation_=e.getRotation();let g=e.getScaleArray();this.imageScale_=[g[0]*this.pixelRatio_/a,g[1]*this.pixelRatio_/a],this.imageWidth_=r[0]*a}setTextStyle(e){if(!e)this.text_="";else{let r=e.getFill();if(!r)this.textFillState_=null;else{let j=r.getColor();this.textFillState_={fillStyle:Mn(j||sr)}}let a=e.getStroke();if(!a)this.textStrokeState_=null;else{let j=a.getColor(),J=a.getLineCap(),he=a.getLineDash(),q=a.getLineDashOffset(),Z=a.getLineJoin(),ne=a.getWidth(),me=a.getMiterLimit();this.textStrokeState_={lineCap:J!==void 0?J:Vs,lineDash:he||An,lineDashOffset:q||Pn,lineJoin:Z!==void 0?Z:Gs,lineWidth:ne!==void 0?ne:Io,miterLimit:me!==void 0?me:wo,strokeStyle:Mn(j||So)}}let l=e.getFont(),o=e.getOffsetX(),g=e.getOffsetY(),v=e.getRotateWithView(),w=e.getRotation(),T=e.getScaleArray(),S=e.getText(),k=e.getTextAlign(),F=e.getTextBaseline();this.textState_={font:l!==void 0?l:op,textAlign:k!==void 0?k:aa,textBaseline:F!==void 0?F:Ja},this.text_=S!==void 0?Array.isArray(S)?S.reduce((j,J,he)=>j+=he%2?" ":J,""):S:"",this.textOffsetX_=o!==void 0?this.pixelRatio_*o:0,this.textOffsetY_=g!==void 0?this.pixelRatio_*g:0,this.textRotateWithView_=v!==void 0?v:!1,this.textRotation_=w!==void 0?w:0,this.textScale_=[this.pixelRatio_*T[0],this.pixelRatio_*T[1]]}}},Yv=ay;var Cs=.5;function Kv(h,e,r,a,l,o,g,v,w){let T=w?zs(l,w):l,S=h[0]*Cs,k=h[1]*Cs,F=Wi(S,k);F.imageSmoothingEnabled=!1;let j=F.canvas,J=new Yv(F,Cs,l,null,g,v,w?rc(Wn(),w):null),he=r.length,q=Math.floor((256*256*256-1)/he),Z={};for(let me=1;me<=he;++me){let _e=r[me-1],fe=_e.getStyleFunction()||a;if(!fe)continue;let ve=fe(_e,o);if(!ve)continue;Array.isArray(ve)||(ve=[ve]);let Re=(me*q).toString(16).padStart(7,"#00000");for(let Pe=0,Ye=ve.length;Pe<Ye;++Pe){let je=ve[Pe],Ke=je.getGeometryFunction()(_e);if(!Ke||!Qi(T,Ke.getExtent()))continue;let xt=je.clone(),At=xt.getFill();At&&At.setColor(Re);let rt=xt.getStroke();rt&&(rt.setColor(Re),rt.setLineDash(null)),xt.setText(void 0);let tt=je.getImage();if(tt){let mt=tt.getImageSize();if(!mt)continue;let Ft=Wi(mt[0],mt[1],void 0,{alpha:!1}),Bt=Ft.canvas;Ft.fillStyle=Re,Ft.fillRect(0,0,Bt.width,Bt.height),xt.setImage(new Qh({img:Bt,anchor:tt.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:tt.getOrigin(),opacity:1,size:tt.getSize(),scale:tt.getScale(),rotation:tt.getRotation(),rotateWithView:tt.getRotateWithView()}))}let yt=xt.getZIndex()||0,ut=Z[yt];ut||(ut={},Z[yt]=ut,ut.Polygon=[],ut.Circle=[],ut.LineString=[],ut.Point=[]);let Mt=Ke.getType();if(Mt==="GeometryCollection"){let mt=Ke.getGeometriesArrayRecursive();for(let Ft=0,Bt=mt.length;Ft<Bt;++Ft){let Ei=mt[Ft];ut[Ei.getType().replace("Multi","")].push(Ei,xt)}}else ut[Mt.replace("Multi","")].push(Ke,xt)}}let ne=Object.keys(Z).map(Number).sort(Ds);for(let me=0,_e=ne.length;me<_e;++me){let fe=Z[ne[me]];for(let ve in fe){let Ee=fe[ve];for(let Re=0,Pe=Ee.length;Re<Pe;Re+=2){J.setStyle(Ee[Re+1]);for(let Ye=0,je=e.length;Ye<je;++Ye)J.setTransform(e[Ye]),J.drawGeometry(Ee[Re])}}}return F.getImageData(0,0,j.width,j.height)}function Jv(h,e,r){let a=[];if(r){let l=Math.floor(Math.round(h[0])*Cs),o=Math.floor(Math.round(h[1])*Cs),g=(Ii(l,0,r.width-1)+Ii(o,0,r.height-1)*r.width)*4,v=r.data[g],w=r.data[g+1],S=r.data[g+2]+256*(w+256*v),k=Math.floor((256*256*256-1)/e.length);S&&S%k===0&&a.push(e[S/k-1])}return a}var tC=.5,Qv={Point:lC,LineString:sC,Polygon:hC,MultiPoint:cC,MultiLineString:oC,MultiPolygon:aC,GeometryCollection:nC,Circle:iC};function eb(h,e){return parseInt(Gt(h),10)-parseInt(Gt(e),10)}function ly(h,e){let r=cy(h,e);return r*r}function cy(h,e){return tC*h/e}function iC(h,e,r,a){let l=r.getFill(),o=r.getStroke();if(l||o){let v=h.getBuilder(r.getZIndex(),"Circle");v.setFillStrokeStyle(l,o),v.drawCircle(e,a)}let g=r.getText();if(g&&g.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(g),v.drawText(e,a)}}function hy(h,e,r,a,l,o,g,v){let w=[],T=r.getImage();if(T){let F=!0,j=T.getImageState();j==Tt.LOADED||j==Tt.ERROR?F=!1:j==Tt.IDLE&&T.load(),F&&w.push(T.ready())}let S=r.getFill();S&&S.loading()&&w.push(S.ready());let k=w.length>0;return k&&Promise.all(w).then(()=>l(null)),rC(h,e,r,a,o,g,v),k}function rC(h,e,r,a,l,o,g){let v=r.getGeometryFunction()(e);if(!v)return;let w=v.simplifyTransformed(a,l);if(r.getRenderer())tb(h,w,r,e,g);else{let S=Qv[w.getType()];S(h,w,r,e,g,o)}}function tb(h,e,r,a,l){if(e.getType()=="GeometryCollection"){let g=e.getGeometries();for(let v=0,w=g.length;v<w;++v)tb(h,g[v],r,a,l);return}h.getBuilder(r.getZIndex(),"Default").drawCustom(e,a,r.getRenderer(),r.getHitDetectionRenderer(),l)}function nC(h,e,r,a,l,o){let g=e.getGeometriesArray(),v,w;for(v=0,w=g.length;v<w;++v){let T=Qv[g[v].getType()];T(h,g[v],r,a,l,o)}}function sC(h,e,r,a,l){let o=r.getStroke();if(o){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawLineString(e,a,l)}let g=r.getText();if(g&&g.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(g),v.drawText(e,a,l)}}function oC(h,e,r,a,l){let o=r.getStroke();if(o){let v=h.getBuilder(r.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawMultiLineString(e,a,l)}let g=r.getText();if(g&&g.getText()){let v=h.getBuilder(r.getZIndex(),"Text");v.setTextStyle(g),v.drawText(e,a,l)}}function aC(h,e,r,a,l){let o=r.getFill(),g=r.getStroke();if(g||o){let w=h.getBuilder(r.getZIndex(),"Polygon");w.setFillStrokeStyle(o,g),w.drawMultiPolygon(e,a,l)}let v=r.getText();if(v&&v.getText()){let w=h.getBuilder(r.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}function lC(h,e,r,a,l,o){let g=r.getImage(),v=r.getText(),w=v&&v.getText(),T=o&&g&&w?{}:void 0;if(g){if(g.getImageState()!=Tt.LOADED)return;let S=h.getBuilder(r.getZIndex(),"Image");S.setImageStyle(g,T),S.drawPoint(e,a,l)}if(w){let S=h.getBuilder(r.getZIndex(),"Text");S.setTextStyle(v,T),S.drawText(e,a,l)}}function cC(h,e,r,a,l,o){let g=r.getImage(),v=g&&g.getOpacity()!==0,w=r.getText(),T=w&&w.getText(),S=o&&v&&T?{}:void 0;if(v){if(g.getImageState()!=Tt.LOADED)return;let k=h.getBuilder(r.getZIndex(),"Image");k.setImageStyle(g,S),k.drawMultiPoint(e,a,l)}if(T){let k=h.getBuilder(r.getZIndex(),"Text");k.setTextStyle(w,S),k.drawText(e,a,l)}}function hC(h,e,r,a,l){let o=r.getFill(),g=r.getStroke();if(o||g){let w=h.getBuilder(r.getZIndex(),"Polygon");w.setFillStrokeStyle(o,g),w.drawPolygon(e,a,l)}let v=r.getText();if(v&&v.getText()){let w=h.getBuilder(r.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}var uy=class extends mp{constructor(e){super(e),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=Sn(),this.wrappedRenderedExtent_=Sn(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.compositionContext_=null,this.opacity_=1}renderWorlds(e,r,a){let l=r.extent,o=r.viewState,g=o.center,v=o.resolution,w=o.projection,T=o.rotation,S=w.getExtent(),k=this.getLayer().getSource(),F=this.getLayer().getDeclutter(),j=r.pixelRatio,J=r.viewHints,he=!(J[En.ANIMATING]||J[En.INTERACTING]),q=this.compositionContext_,Z=Math.round(r.size[0]*j),ne=Math.round(r.size[1]*j),me=k.getWrapX()&&w.canWrapX(),_e=me?$i(S):null,fe=me?Math.ceil((l[2]-S[2])/_e)+1:1,ve=me?Math.floor((l[0]-S[0])/_e):0;do{let Ee=this.getRenderTransform(g,v,T,j,Z,ne,ve*_e);e.execute(q,[q.canvas.width,q.canvas.height],Ee,T,he,a===void 0?gc:a?oy:Xv,a?F&&r.declutter[F]:void 0)}while(++ve<fe)}setupCompositionContext_(){if(this.opacity_!==1){let e=Wi(this.context.canvas.width,this.context.canvas.height,ty);this.compositionContext_=e}else this.compositionContext_=this.context}releaseCompositionContext_(){if(this.opacity_!==1){let e=this.context.globalAlpha;this.context.globalAlpha=this.opacity_,this.context.drawImage(this.compositionContext_.canvas,0,0),this.context.globalAlpha=e,Jx(this.compositionContext_),ty.push(this.compositionContext_.canvas),this.compositionContext_=null}}renderDeclutter(e){this.getLayer().getDeclutter()&&(this.setupCompositionContext_(),this.renderWorlds(this.replayGroup_,e,!0),this.releaseCompositionContext_())}renderDeferredInternal(e){this.replayGroup_.renderDeferred()}renderFrame(e,r){let a=e.pixelRatio,l=e.layerStatesArray[e.layerIndex];V0(this.pixelTransform,1/a,1/a),j0(this.inversePixelTransform,this.pixelTransform);let o=qf(this.pixelTransform);this.useContainer(r,o,this.getBackground(e));let g=this.context,v=g.canvas,w=this.replayGroup_,T=w&&!w.isEmpty();if(!T&&!(this.getLayer().hasListener(Bs.PRERENDER)||this.getLayer().hasListener(Bs.POSTRENDER)))return null;let S=Math.round(e.size[0]*a),k=Math.round(e.size[1]*a);v.width!=S||v.height!=k?(v.width=S,v.height=k,v.style.transform!==o&&(v.style.transform=o)):this.containerReused||g.clearRect(0,0,S,k),this.preRender(g,e);let F=e.viewState,j=F.projection;this.opacity_=l.opacity,this.setupCompositionContext_();let J=!1;if(T&&l.extent&&this.clipping){let he=Os(l.extent,j);T=Qi(he,e.extent),J=T&&!go(he,e.extent),J&&this.clipUnrotated(this.compositionContext_,e,he)}return T&&this.renderWorlds(w,e,this.getLayer().getDeclutter()?!1:void 0),J&&this.compositionContext_.restore(),this.releaseCompositionContext_(),this.postRender(g,e),this.renderedRotation_!==F.rotation&&(this.renderedRotation_=F.rotation,this.hitDetectionImageData_=null),this.container}getFeatures(e){return new Promise(r=>{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let a=[this.context.canvas.width,this.context.canvas.height];rr(this.pixelTransform,a);let l=this.renderedCenter_,o=this.renderedResolution_,g=this.renderedRotation_,v=this.renderedProjection_,w=this.wrappedRenderedExtent_,T=this.getLayer(),S=[],k=a[0]*Cs,F=a[1]*Cs;S.push(this.getRenderTransform(l,o,g,Cs,k,F,0).slice());let j=T.getSource(),J=v.getExtent();if(j.getWrapX()&&v.canWrapX()&&!go(J,w)){let q=w[0],Z=$i(J),ne=0,me;for(;q<J[0];)--ne,me=Z*ne,S.push(this.getRenderTransform(l,o,g,Cs,k,F,me).slice()),q+=Z;for(ne=0,q=w[2];q>J[2];)++ne,me=Z*ne,S.push(this.getRenderTransform(l,o,g,Cs,k,F,me).slice()),q-=Z}let he=Wn();this.hitDetectionImageData_=Kv(a,S,this.renderedFeatures_,T.getStyleFunction(),w,o,g,ly(o,this.renderedPixelRatio_),he?v:null)}r(Jv(e,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(e,r,a,l,o){if(!this.replayGroup_)return;let g=r.viewState.resolution,v=r.viewState.rotation,w=this.getLayer(),T={},S=function(J,he,q){let Z=Gt(J),ne=T[Z];if(ne){if(ne!==!0&&q<ne.distanceSq){if(q===0)return T[Z]=!0,o.splice(o.lastIndexOf(ne),1),l(J,w,he);ne.geometry=he,ne.distanceSq=q}}else{if(q===0)return T[Z]=!0,l(J,w,he);o.push(T[Z]={feature:J,layer:w,geometry:he,distanceSq:q,callback:l})}},k,F=[this.replayGroup_],j=this.getLayer().getDeclutter();return F.some(J=>k=J.forEachFeatureAtCoordinate(e,g,v,a,S,j&&r.declutter[j]?r.declutter[j].all().map(he=>he.value):null)),k}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let r=this.getLayer(),a=r.getSource();if(!a)return!1;let l=e.viewHints[En.ANIMATING],o=e.viewHints[En.INTERACTING],g=r.getUpdateWhileAnimating(),v=r.getUpdateWhileInteracting();if(this.ready&&!g&&l||!v&&o)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let w=e.extent,T=e.viewState,S=T.projection,k=T.resolution,F=e.pixelRatio,j=r.getRevision(),J=r.getRenderBuffer(),he=r.getRenderOrder();he===void 0&&(he=eb);let q=T.center.slice(),Z=bn(w,J*k),ne=Z.slice(),me=[Z.slice()],_e=S.getExtent();if(a.getWrapX()&&S.canWrapX()&&!go(_e,e.extent)){let rt=$i(_e),tt=Math.max($i(Z)/2,rt);Z[0]=_e[0]-tt,Z[2]=_e[2]+tt,px(q,S);let yt=rm(me[0],S);yt[0]<_e[0]&&yt[2]<_e[2]?me.push([yt[0]+rt,yt[1],yt[2]+rt,yt[3]]):yt[0]>_e[0]&&yt[2]>_e[2]&&me.push([yt[0]-rt,yt[1],yt[2]-rt,yt[3]])}if(this.ready&&this.renderedResolution_==k&&this.renderedRevision_==j&&this.renderedRenderOrder_==he&&go(this.wrappedRenderedExtent_,Z))return vn(this.renderedExtent_,ne)||(this.hitDetectionImageData_=null,this.renderedExtent_=ne),this.renderedCenter_=q,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let fe=new jv(cy(k,F),Z,k,F),ve=Wn(),Ee;if(ve){for(let rt=0,tt=me.length;rt<tt;++rt){let yt=me[rt],ut=zs(yt,S);a.loadFeatures(ut,xx(k,S),ve)}Ee=rc(ve,S)}else for(let rt=0,tt=me.length;rt<tt;++rt)a.loadFeatures(me[rt],k,S);let Re=ly(k,F),Pe=!0,Ye=(rt,tt)=>{let yt,ut=rt.getStyleFunction()||r.getStyleFunction();if(ut&&(yt=ut(rt,k)),yt){let Mt=this.renderFeature(rt,Re,yt,fe,Ee,this.getLayer().getDeclutter(),tt);Pe=Pe&&!Mt}},je=zs(Z,S),Ke=a.getFeaturesInExtent(je);he&&Ke.sort(he);for(let rt=0,tt=Ke.length;rt<tt;++rt)Ye(Ke[rt],rt);this.renderedFeatures_=Ke,this.ready=Pe;let xt=fe.finish(),At=new Hv(Z,k,F,a.getOverlaps(),xt,r.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=k,this.renderedRevision_=j,this.renderedRenderOrder_=he,this.renderedExtent_=ne,this.wrappedRenderedExtent_=Z,this.renderedCenter_=q,this.renderedProjection_=S,this.renderedPixelRatio_=F,this.replayGroup_=At,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(e,r,a,l,o,g,v){if(!a)return!1;let w=!1;if(Array.isArray(a))for(let T=0,S=a.length;T<S;++T)w=hy(l,e,a[T],r,this.boundHandleStyleImageChange_,o,g,v)||w;else w=hy(l,e,a,r,this.boundHandleStyleImageChange_,o,g,v);return w}},ib=uy;var dy=class extends zv{constructor(e){super(e)}createRenderer(){return new ib(this)}},Qa=dy;var rb=fo(Rg(),1);var py=class{constructor(e){this.rbush_=new rb.default(e),this.items_={}}insert(e,r){let a={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3],value:r};this.rbush_.insert(a),this.items_[Gt(r)]=a}load(e,r){let a=new Array(r.length);for(let l=0,o=r.length;l<o;l++){let g=e[l],v=r[l],w={minX:g[0],minY:g[1],maxX:g[2],maxY:g[3],value:v};a[l]=w,this.items_[Gt(v)]=w}this.rbush_.load(a)}remove(e){let r=Gt(e),a=this.items_[r];return delete this.items_[r],this.rbush_.remove(a)!==null}update(e,r){let a=this.items_[Gt(r)],l=[a.minX,a.minY,a.maxX,a.maxY];Fd(l,e)||(this.remove(r),this.insert(e,r))}getAll(){return this.rbush_.all().map(function(r){return r.value})}getInExtent(e){let r={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]};return this.rbush_.search(r).map(function(l){return l.value})}forEach(e){return this.forEach_(this.getAll(),e)}forEachInExtent(e,r){return this.forEach_(this.getInExtent(e),r)}forEach_(e,r){let a;for(let l=0,o=e.length;l<o;l++)if(a=r(e[l]),a)return a;return a}isEmpty(){return qn(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let r=this.rbush_.toJSON();return yo(r.minX,r.minY,r.maxX,r.maxY,e)}concat(e){this.rbush_.load(e.rbush_.all());for(let r in e.items_)this.items_[r]=e.items_[r]}},cu=py;var nb=mr(),hu=class h{constructor(e,r,a,l,o,g){this.styleFunction,this.extent_,this.id_=g,this.type_=e,this.flatCoordinates_=r,this.flatInteriorPoints_=null,this.flatMidpoints_=null,this.ends_=a||null,this.properties_=o,this.squaredTolerance_,this.stride_=l,this.simplifiedGeometry_}get(e){return this.properties_[e]}getExtent(){return this.extent_||(this.extent_=this.type_==="Point"?Yo(this.flatCoordinates_):Ql(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=es(this.getExtent());this.flatInteriorPoints_=Gh(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=Ox(this.flatCoordinates_,this.ends_),r=Hd(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=Zd(this.flatCoordinates_,0,e,2,r)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=Ha(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];let e=this.flatCoordinates_,r=0,a=this.ends_;for(let l=0,o=a.length;l<o;++l){let g=a[l],v=Ha(e,r,g,2,.5);kr(this.flatMidpoints_,v),r=g}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(e){return this}simplifyTransformed(e,r){return this}getProperties(){return this.properties_}getPropertiesInternal(){return this.properties_}getStride(){return this.stride_}getStyleFunction(){return this.styleFunction}getType(){return this.type_}transform(e){e=qi(e);let r=e.getExtent(),a=e.getWorldExtent();if(r&&a){let l=ln(a)/ln(r);an(nb,a[0],a[3],l,-l,0,0,0),Cn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,nb,this.flatCoordinates_)}}applyTransform(e){e(this.flatCoordinates_,this.flatCoordinates_,this.stride_)}clone(){return new h(this.type_,this.flatCoordinates_.slice(),this.ends_?.slice(),this.stride_,Object.assign({},this.properties_),this.id_)}getEnds(){return this.ends_}enableSimplifyTransformed(){return this.simplifyTransformed=Pd((e,r)=>{if(e===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),r&&this.simplifiedGeometry_.applyTransform(r);let a=this.simplifiedGeometry_.getFlatCoordinates(),l;switch(this.type_){case"LineString":a.length=Xa(a,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,e,a,0),l=[a.length];break;case"MultiLineString":l=[],a.length=Ud(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,l);break;case"Polygon":l=[],a.length=zh(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,Math.sqrt(e),a,0,l);break;default:}return l&&(this.simplifiedGeometry_=new h(this.type_,a,l,2,this.properties_,this.id_)),this.squaredTolerance_=e,this.simplifiedGeometry_}),this}};hu.prototype.getFlatCoordinates=hu.prototype.getOrientedFlatCoordinates;var ss=hu;var fy=class extends gr{constructor(e){super(),this.projection=qi(e.projection),this.attributions_=sb(e.attributions),this.attributionsCollapsible_=e.attributionsCollapsible!==void 0?e.attributionsCollapsible:!0,this.loading=!1,this.state_=e.state!==void 0?e.state:"ready",this.wrapX_=e.wrapX!==void 0?e.wrapX:!1,this.interpolate_=!!e.interpolate,this.viewResolver=null,this.viewRejector=null;let r=this;this.viewPromise_=new Promise(function(a,l){r.viewResolver=a,r.viewRejector=l})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(e){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(e){this.attributions_=sb(e),this.changed()}setState(e){this.state_=e,this.changed()}};function sb(h){return h?Array.isArray(h)?function(e){return h}:typeof h=="function"?h:function(e){return[h]}:null}var Po=fy;var hn={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function ob(h,e){return[[-1/0,-1/0,1/0,1/0]]}var uC=!1;function dC(h,e,r,a,l,o,g){let v=new XMLHttpRequest;v.open("GET",typeof h=="function"?h(r,a,l):h,!0),e.getType()=="arraybuffer"&&(v.responseType="arraybuffer"),v.withCredentials=uC,v.onload=function(w){if(!v.status||v.status>=200&&v.status<300){let T=e.getType(),S;T=="json"?S=JSON.parse(v.responseText):T=="text"?S=v.responseText:T=="xml"?(S=v.responseXML,S||(S=new DOMParser().parseFromString(v.responseText,"application/xml"))):T=="arraybuffer"&&(S=v.response),S?o(e.readFeatures(S,{extent:r,featureProjection:l}),e.readProjection(S)):g()}else g()},v.onerror=g,v.send()}function my(h,e){return function(r,a,l,o,g){let v=this;dC(h,e,r,a,l,function(w,T){v.addFeatures(w),o!==void 0&&o(w)},g||ms)}}var Zs=class extends mi{constructor(e,r,a){super(e),this.feature=r,this.features=a}},gy=class extends Po{constructor(e){e=e||{},super({attributions:e.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:e.wrapX!==void 0?e.wrapX:!0}),this.on,this.once,this.un,this.loader_=ms,this.format_=e.format,this.overlaps_=e.overlaps===void 0?!0:e.overlaps,this.url_=e.url,e.loader!==void 0?this.loader_=e.loader:this.url_!==void 0&&(si(this.format_,"`format` must be set when `url` is set"),this.loader_=my(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:ob;let r=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=r?new cu:null,this.loadedExtentsRtree_=new cu,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null;let a,l;Array.isArray(e.features)?l=e.features:e.features&&(a=e.features,l=a.getArray()),!r&&a===void 0&&(a=new Yh(l)),l!==void 0&&this.addFeaturesInternal(l),a!==void 0&&this.bindFeaturesCollection_(a)}addFeature(e){this.addFeatureInternal(e),this.changed()}addFeatureInternal(e){let r=Gt(e);if(!this.addToIndex_(r,e)){this.featuresCollection_&&this.featuresCollection_.remove(e);return}this.setupChangeEvents_(r,e);let a=e.getGeometry();if(a){let l=a.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(l,e)}else this.nullGeometryFeatures_[r]=e;this.dispatchEvent(new Zs(hn.ADDFEATURE,e))}setupChangeEvents_(e,r){r instanceof ss||(this.featureChangeKeys_[e]=[Lr(r,li.CHANGE,this.handleFeatureChange_,this),Lr(r,Td.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(e,r){let a=!0;if(r.getId()!==void 0){let l=String(r.getId());if(!(l in this.idIndex_))this.idIndex_[l]=r;else if(r instanceof ss){let o=this.idIndex_[l];o instanceof ss?Array.isArray(o)?o.push(r):this.idIndex_[l]=[o,r]:a=!1}else a=!1}return a&&(si(!(e in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[e]=r),a}addFeatures(e){this.addFeaturesInternal(e),this.changed()}addFeaturesInternal(e){let r=[],a=[],l=[];for(let o=0,g=e.length;o<g;o++){let v=e[o],w=Gt(v);this.addToIndex_(w,v)&&a.push(v)}for(let o=0,g=a.length;o<g;o++){let v=a[o],w=Gt(v);this.setupChangeEvents_(w,v);let T=v.getGeometry();if(T){let S=T.getExtent();r.push(S),l.push(v)}else this.nullGeometryFeatures_[w]=v}if(this.featuresRtree_&&this.featuresRtree_.load(r,l),this.hasListener(hn.ADDFEATURE))for(let o=0,g=a.length;o<g;o++)this.dispatchEvent(new Zs(hn.ADDFEATURE,a[o]))}bindFeaturesCollection_(e){let r=!1;this.addEventListener(hn.ADDFEATURE,function(a){r||(r=!0,e.push(a.feature),r=!1)}),this.addEventListener(hn.REMOVEFEATURE,function(a){r||(r=!0,e.remove(a.feature),r=!1)}),e.addEventListener(bs.ADD,a=>{r||(r=!0,this.addFeature(a.element),r=!1)}),e.addEventListener(bs.REMOVE,a=>{r||(r=!0,this.removeFeature(a.element),r=!1)}),this.featuresCollection_=e}clear(e){if(e){for(let a in this.featureChangeKeys_)this.featureChangeKeys_[a].forEach(Yr);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){let a=l=>{this.removeFeatureInternal(l)};this.featuresRtree_.forEach(a);for(let l in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[l])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};let r=new Zs(hn.CLEAR);this.dispatchEvent(r),this.changed()}forEachFeature(e){if(this.featuresRtree_)return this.featuresRtree_.forEach(e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureAtCoordinateDirect(e,r){let a=[e[0],e[1],e[0],e[1]];return this.forEachFeatureInExtent(a,function(l){let o=l.getGeometry();if(o instanceof ss||o.intersectsCoordinate(e))return r(l)})}forEachFeatureInExtent(e,r){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(e,r);this.featuresCollection_&&this.featuresCollection_.forEach(r)}forEachFeatureIntersectingExtent(e,r){return this.forEachFeatureInExtent(e,function(a){let l=a.getGeometry();if(l instanceof ss||l.intersectsExtent(e)){let o=r(a);if(o)return o}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let e;return this.featuresCollection_?e=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(e=this.featuresRtree_.getAll(),qn(this.nullGeometryFeatures_)||kr(e,Object.values(this.nullGeometryFeatures_))),e}getFeaturesAtCoordinate(e){let r=[];return this.forEachFeatureAtCoordinateDirect(e,function(a){r.push(a)}),r}getFeaturesInExtent(e,r){if(this.featuresRtree_){if(!(r&&r.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(e);let l=Q0(e,r);return[].concat(...l.map(o=>this.featuresRtree_.getInExtent(o)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(e,r){let a=e[0],l=e[1],o=null,g=[NaN,NaN],v=1/0,w=[-1/0,-1/0,1/0,1/0];return r=r||Ad,this.featuresRtree_.forEachInExtent(w,function(T){if(r(T)){let S=T.getGeometry(),k=v;if(v=S instanceof ss?0:S.closestPointXY(a,l,g,v),v<k){o=T;let F=Math.sqrt(v);w[0]=a-F,w[1]=l-F,w[2]=a+F,w[3]=l+F}}}),o}getExtent(e){return this.featuresRtree_.getExtent(e)}getFeatureById(e){let r=this.idIndex_[e.toString()];return r!==void 0?r:null}getFeatureByUid(e){let r=this.uidIndex_[e];return r!==void 0?r:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(e){let r=e.target,a=Gt(r),l=r.getGeometry();if(!l)a in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(r),this.nullGeometryFeatures_[a]=r);else{let g=l.getExtent();a in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[a],this.featuresRtree_&&this.featuresRtree_.insert(g,r)):this.featuresRtree_&&this.featuresRtree_.update(g,r)}let o=r.getId();if(o!==void 0){let g=o.toString();this.idIndex_[g]!==r&&(this.removeFromIdIndex_(r),this.idIndex_[g]=r)}else this.removeFromIdIndex_(r),this.uidIndex_[a]=r;this.changed(),this.dispatchEvent(new Zs(hn.CHANGEFEATURE,r))}hasFeature(e){let r=e.getId();return r!==void 0?r in this.idIndex_:Gt(e)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&qn(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(e,r,a){let l=this.loadedExtentsRtree_,o=this.strategy_(e,r,a);for(let g=0,v=o.length;g<v;++g){let w=o[g];l.forEachInExtent(w,function(S){return go(S.extent,w)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Zs(hn.FEATURESLOADSTART)),this.loader_.call(this,w,r,a,S=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(hn.FEATURESLOADEND,void 0,S))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(hn.FEATURESLOADERROR))}),l.insert(w,{extent:w.slice()}))}this.loading=this.loader_.length<4?!1:this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(e){let r=this.loadedExtentsRtree_,a;r.forEachInExtent(e,function(l){if(Fd(l.extent,e))return a=l,!0}),a&&r.remove(a)}removeFeature(e){if(!e)return;let r=Gt(e);r in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[r]:this.featuresRtree_&&this.featuresRtree_.remove(e),this.removeFeatureInternal(e)&&this.changed()}removeFeatureInternal(e){let r=Gt(e),a=this.featureChangeKeys_[r];if(!a)return;a.forEach(Yr),delete this.featureChangeKeys_[r];let l=e.getId();return l!==void 0&&delete this.idIndex_[l.toString()],delete this.uidIndex_[r],this.dispatchEvent(new Zs(hn.REMOVEFEATURE,e)),e}removeFromIdIndex_(e){let r=!1;for(let a in this.idIndex_){let l=this.idIndex_[a];if(e instanceof ss&&Array.isArray(l)&&l.includes(e))l.splice(l.indexOf(e),1);else if(this.idIndex_[a]===e){delete this.idIndex_[a],r=!0;break}}return r}setLoader(e){this.loader_=e}setUrl(e){si(this.format_,"`format` must be set when `url` is set"),this.url_=e,this.setLoader(my(e,this.format_))}},el=gy;var Zn={SINGLECLICK:"singleclick",CLICK:li.CLICK,DBLCLICK:li.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"};var yy={ACTIVE:"active"};var _y=class extends gr{constructor(e){super(),this.on,this.once,this.un,e&&e.handleEvent&&(this.handleEvent=e.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(yy.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(yy.ACTIVE,e)}setMap(e){this.map_=e}};var ab=_y;var xy=class extends ab{constructor(e){e=e||{},super(e),e.handleDownEvent&&(this.handleDownEvent=e.handleDownEvent),e.handleDragEvent&&(this.handleDragEvent=e.handleDragEvent),e.handleMoveEvent&&(this.handleMoveEvent=e.handleMoveEvent),e.handleUpEvent&&(this.handleUpEvent=e.handleUpEvent),e.stopDown&&(this.stopDown=e.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(e){return!1}handleDragEvent(e){}handleEvent(e){if(!e.originalEvent)return!0;let r=!1;if(this.updateTrackedPointers_(e),this.handlingDownUpSequence){if(e.type==Zn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Zn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Zn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,r=this.stopDown(a)}else e.type==Zn.POINTERMOVE&&this.handleMoveEvent(e);return!r}handleMoveEvent(e){}handleUpEvent(e){return!1}stopDown(e){return e}updateTrackedPointers_(e){e.activePointers&&(this.targetPointers=e.activePointers)}};var lb=xy;var cb=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var hb=Ad,ub=function(h){return h.type==Zn.CLICK};var db=function(h){return h.type==Zn.SINGLECLICK};var pb=function(h){let e=h.originalEvent;return si(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var fb=0,uu=1,mb=[0,0,0,0],yc=[],vy={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},du=class extends mi{constructor(e,r,a){super(e),this.features=r,this.mapBrowserEvent=a}},by=class extends lb{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:pb,this.defaultDeleteCondition_=function(a){return cb(a)&&db(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:hb,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new cu,this.pixelTolerance_=e.pixelTolerance!==void 0?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new Qa({source:new el({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:fC(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_.bind(this),LineString:this.writeLineStringGeometry_.bind(this),LinearRing:this.writeLineStringGeometry_.bind(this),Polygon:this.writePolygonGeometry_.bind(this),MultiPoint:this.writeMultiPointGeometry_.bind(this),MultiLineString:this.writeMultiLineStringGeometry_.bind(this),MultiPolygon:this.writeMultiPolygonGeometry_.bind(this),Circle:this.writeCircleGeometry_.bind(this),GeometryCollection:this.writeGeometryCollectionGeometry_.bind(this)},this.source_=null,this.hitDetection_=null;let r;if(e.features?r=e.features:e.source&&(this.source_=e.source,r=new Yh(this.source_.getFeatures()),this.source_.addEventListener(hn.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(hn.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!r)throw new Error("The modify interaction requires features, a source or a layer");e.hitDetection&&(this.hitDetection_=e.hitDetection),this.features_=r,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(bs.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(bs.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=e.snapToPointer===void 0?!this.hitDetection_:e.snapToPointer}addFeature_(e){let r=e.getGeometry();if(r){let l=this.SEGMENT_WRITERS_[r.getType()];l&&l(e,r)}let a=this.getMap();a&&a.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,a),e.addEventListener(li.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(e,r){if(!this.featuresBeingModified_){this.featuresBeingModified_=new Yh;let a=this.featuresBeingModified_.getArray();for(let l=0,o=r.length;l<o;++l){let g=r[l];for(let v=0,w=g.length;v<w;++v){let T=g[v].feature;T&&!a.includes(T)&&this.featuresBeingModified_.push(T)}}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new du(vy.MODIFYSTART,this.featuresBeingModified_,e))}}removeFeature_(e){this.removeFeatureSegmentData_(e),this.vertexFeature_&&this.features_.getLength()===0&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.removeEventListener(li.CHANGE,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(e){let r=this.rBush_,a=[];r.forEach(function(l){e===l.feature&&a.push(l)});for(let l=a.length-1;l>=0;--l){let o=a[l];for(let g=this.dragSegments_.length-1;g>=0;--g)this.dragSegments_[g][0]===o&&this.dragSegments_.splice(g,1);r.remove(o)}}setActive(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(e)}setMap(e){this.overlay_.setMap(e),super.setMap(e)}getOverlay(){return this.overlay_}handleSourceAdd_(e){e.feature&&this.features_.push(e.feature)}handleSourceRemove_(e){e.feature&&this.features_.remove(e.feature)}handleFeatureAdd_(e){this.addFeature_(e.element)}handleFeatureChange_(e){if(!this.changingFeature_){let r=e.target;this.removeFeature_(r),this.addFeature_(r)}}handleFeatureRemove_(e){this.removeFeature_(e.element)}writePointGeometry_(e,r){let a=r.getCoordinates(),l={feature:e,geometry:r,segment:[a,a]};this.rBush_.insert(r.getExtent(),l)}writeMultiPointGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l],v={feature:e,geometry:r,depth:[l],index:l,segment:[g,g]};this.rBush_.insert(r.getExtent(),v)}}writeLineStringGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length-1;l<o;++l){let g=a.slice(l,l+2),v={feature:e,geometry:r,index:l,segment:g};this.rBush_.insert(Fs(g),v)}}writeMultiLineStringGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l];for(let v=0,w=g.length-1;v<w;++v){let T=g.slice(v,v+2),S={feature:e,geometry:r,depth:[l],index:v,segment:T};this.rBush_.insert(Fs(T),S)}}}writePolygonGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l];for(let v=0,w=g.length-1;v<w;++v){let T=g.slice(v,v+2),S={feature:e,geometry:r,depth:[l],index:v,segment:T};this.rBush_.insert(Fs(T),S)}}}writeMultiPolygonGeometry_(e,r){let a=r.getCoordinates();for(let l=0,o=a.length;l<o;++l){let g=a[l];for(let v=0,w=g.length;v<w;++v){let T=g[v];for(let S=0,k=T.length-1;S<k;++S){let F=T.slice(S,S+2),j={feature:e,geometry:r,depth:[v,l],index:S,segment:F};this.rBush_.insert(Fs(F),j)}}}}writeCircleGeometry_(e,r){let a=r.getCenter(),l={feature:e,geometry:r,index:fb,segment:[a,a]},o={feature:e,geometry:r,index:uu,segment:[a,a]},g=[l,o];l.featureSegments=g,o.featureSegments=g,this.rBush_.insert(Yo(a),l);let v=r,w=Wn();if(w&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(w,T),v=Pm(v).transform(T,w)}this.rBush_.insert(v.getExtent(),o)}writeGeometryCollectionGeometry_(e,r){let a=r.getGeometriesArray();for(let l=0;l<a.length;++l){let o=a[l],g=this.SEGMENT_WRITERS_[o.getType()];g(e,o)}}createOrUpdateVertexFeature_(e,r,a){let l=this.vertexFeature_;return l?l.getGeometry().setCoordinates(e):(l=new rs(new _r(e)),this.vertexFeature_=l,this.overlay_.getSource().addFeature(l)),l.set("features",r),l.set("geometries",a),l}handleEvent(e){if(!e.originalEvent)return!0;this.lastPointerEvent_=e;let r;return!e.map.getView().getInteracting()&&e.type==Zn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Zn.SINGLECLICK||!this.ignoreNextSingleClick_?r=this.removePoint():r=!0),e.type==Zn.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(e)&&!r}handleDragEvent(e){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(e,this.dragSegments_);let r=[e.coordinate[0]+this.delta_[0],e.coordinate[1]+this.delta_[1]],a=[],l=[];for(let o=0,g=this.dragSegments_.length;o<g;++o){let v=this.dragSegments_[o],w=v[0],T=w.feature;a.includes(T)||a.push(T);let S=w.geometry;l.includes(S)||l.push(S);let k=w.depth,F,j=w.segment,J=v[1];for(;r.length<S.getStride();)r.push(j[J][r.length]);switch(S.getType()){case"Point":F=r,j[0]=r,j[1]=r;break;case"MultiPoint":F=S.getCoordinates(),F[w.index]=r,j[0]=r,j[1]=r;break;case"LineString":F=S.getCoordinates(),F[w.index+J]=r,j[J]=r;break;case"MultiLineString":F=S.getCoordinates(),F[k[0]][w.index+J]=r,j[J]=r;break;case"Polygon":F=S.getCoordinates(),F[k[0]][w.index+J]=r,j[J]=r;break;case"MultiPolygon":F=S.getCoordinates(),F[k[1]][k[0]][w.index+J]=r,j[J]=r;break;case"Circle":if(j[0]=r,j[1]=r,w.index===fb)this.changingFeature_=!0,S.setCenter(r),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),q=cm(er(S.getCenter(),he),er(r,he)),Z=Wn();if(Z){let ne=S.clone().transform(Z,he);ne.setRadius(q),q=ne.transform(he,Z).getRadius()}S.setRadius(q),this.changingFeature_=!1}break;default:}F&&this.setGeometryCoordinates_(S,F)}this.createOrUpdateVertexFeature_(r,a,l)}handleDownEvent(e){if(!this.condition_(e))return!1;let r=e.coordinate;this.handlePointerAtPixel_(e.pixel,e.map,r),this.dragSegments_.length=0,this.featuresBeingModified_=null;let a=this.vertexFeature_;if(a){let l=e.map.getView().getProjection(),o=[],g=a.getGeometry().getCoordinates(),v=Fs([g]),w=this.rBush_.getInExtent(v),T={};w.sort(pC);for(let S=0,k=w.length;S<k;++S){let F=w[S],j=F.segment,J=Gt(F.geometry),he=F.depth;if(he&&(J+="-"+he.join("-")),T[J]||(T[J]=new Array(2)),F.geometry.getType()==="Circle"&&F.index===uu){let q=yb(r,F,l);cn(q,g)&&!T[J][0]&&(this.dragSegments_.push([F,0]),T[J][0]=F);continue}if(cn(j[0],g)&&!T[J][0]){this.dragSegments_.push([F,0]),T[J][0]=F;continue}if(cn(j[1],g)&&!T[J][1]){if(T[J][0]&&T[J][0].index===0){let q=F.geometry.getCoordinates();switch(F.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":q=q[he[1]];case"Polygon":if(F.index!==q[he[0]].length-2)continue;break;default:}}this.dragSegments_.push([F,1]),T[J][1]=F;continue}Gt(j)in this.vertexSegments_&&!T[J][0]&&!T[J][1]&&this.insertVertexCondition_(e)&&o.push(F)}o.length&&this.willModifyFeatures_(e,[o]);for(let S=o.length-1;S>=0;--S)this.insertVertex_(o[S],g)}return!!this.vertexFeature_}handleUpEvent(e){for(let r=this.dragSegments_.length-1;r>=0;--r){let a=this.dragSegments_[r][0],l=a.geometry;if(l.getType()==="Circle"){let o=l.getCenter(),g=a.featureSegments[0],v=a.featureSegments[1];g.segment[0]=o,g.segment[1]=o,v.segment[0]=o,v.segment[1]=o,this.rBush_.update(Yo(o),g);let w=l,T=Wn();if(T){let S=e.map.getView().getProjection();w=w.clone().transform(T,S),w=Pm(w).transform(S,T)}this.rBush_.update(w.getExtent(),v)}else this.rBush_.update(Fs(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new du(vy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null),!1}handlePointerMove_(e){this.lastPixel_=e.pixel,this.handlePointerAtPixel_(e.pixel,e.map,e.coordinate)}handlePointerAtPixel_(e,r,a){let l=a||r.getCoordinateFromPixel(e),o=r.getView().getProjection(),g=function(T,S){return gb(l,T,o)-gb(l,S,o)},v,w;if(this.hitDetection_){let T=typeof this.hitDetection_=="object"?S=>S===this.hitDetection_:void 0;r.forEachFeatureAtPixel(e,(S,k,F)=>{F&&F.getType()==="Point"&&(F=new _r(Wa(F.getCoordinates(),o)));let j=F||S.getGeometry();if(S instanceof rs&&this.features_.getArray().includes(S)){w=j;let J=S.getGeometry().getFlatCoordinates().slice(0,2);v=[{feature:S,geometry:w,segment:[J,J]}]}return!0},{layerFilter:T})}if(!v){let T=Os(Yo(l,mb),o),S=r.getView().getResolution()*this.pixelTolerance_,k=zs(bn(T,S,mb),o);v=this.rBush_.getInExtent(k)}if(v&&v.length>0){let T=v.sort(g)[0],S=T.segment,k=yb(l,T,o),F=r.getPixelFromCoordinate(k),j=cm(e,F);if(w||j<=this.pixelTolerance_){let J={};if(J[Gt(S)]=!0,this.snapToPointer_||(this.delta_[0]=k[0]-l[0],this.delta_[1]=k[1]-l[1]),T.geometry.getType()==="Circle"&&T.index===uu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(k,[T.feature],[T.geometry]);else{let he=r.getPixelFromCoordinate(S[0]),q=r.getPixelFromCoordinate(S[1]),Z=ic(F,he),ne=ic(F,q);j=Math.sqrt(Math.min(Z,ne)),this.snappedToVertex_=j<=this.pixelTolerance_,this.snappedToVertex_&&(k=Z>ne?S[1]:S[0]),this.createOrUpdateVertexFeature_(k,[T.feature],[T.geometry]);let me={};me[Gt(T.geometry)]=!0;for(let _e=1,fe=v.length;_e<fe;++_e){let ve=v[_e].segment;if(cn(S[0],ve[0])&&cn(S[1],ve[1])||cn(S[0],ve[1])&&cn(S[1],ve[0])){let Ee=Gt(v[_e].geometry);Ee in me||(me[Ee]=!0,J[Gt(ve)]=!0)}else break}}this.vertexSegments_=J;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(e,r){let a=e.segment,l=e.feature,o=e.geometry,g=e.depth,v=e.index,w;for(;r.length<o.getStride();)r.push(0);switch(o.getType()){case"MultiLineString":w=o.getCoordinates(),w[g[0]].splice(v+1,0,r);break;case"Polygon":w=o.getCoordinates(),w[g[0]].splice(v+1,0,r);break;case"MultiPolygon":w=o.getCoordinates(),w[g[1]][g[0]].splice(v+1,0,r);break;case"LineString":w=o.getCoordinates(),w.splice(v+1,0,r);break;default:return}this.setGeometryCoordinates_(o,w);let T=this.rBush_;T.remove(e),this.updateSegmentIndices_(o,v,g,1);let S={segment:[a[0],r],feature:l,geometry:o,depth:g,index:v};T.insert(Fs(S.segment),S),this.dragSegments_.push([S,1]);let k={segment:[r,a[1]],feature:l,geometry:o,depth:g,index:v+1};T.insert(Fs(k.segment),k),this.dragSegments_.push([k,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Zn.POINTERDRAG){let e=this.lastPointerEvent_;this.willModifyFeatures_(e,this.dragSegments_);let r=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new du(vy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null,r}return!1}removeVertex_(){let e=this.dragSegments_,r={},a=!1,l,o,g,v,w,T,S,k,F,j,J;for(w=e.length-1;w>=0;--w)g=e[w],j=g[0],J=Gt(j.feature),j.depth&&(J+="-"+j.depth.join("-")),J in r||(r[J]={}),g[1]===0?(r[J].right=j,r[J].index=j.index):g[1]==1&&(r[J].left=j,r[J].index=j.index+1);for(J in r){switch(F=r[J].right,S=r[J].left,T=r[J].index,k=T-1,S!==void 0?j=S:j=F,k<0&&(k=0),v=j.geometry,o=v.getCoordinates(),l=o,a=!1,v.getType()){case"MultiLineString":o[j.depth[0]].length>2&&(o[j.depth[0]].splice(T,1),a=!0);break;case"LineString":o.length>2&&(o.splice(T,1),a=!0);break;case"MultiPolygon":l=l[j.depth[1]];case"Polygon":l=l[j.depth[0]],l.length>4&&(T==l.length-1&&(T=0),l.splice(T,1),a=!0,T===0&&(l.pop(),l.push(l[0]),k=l.length-1));break;default:}if(a){this.setGeometryCoordinates_(v,o);let he=[];if(S!==void 0&&(this.rBush_.remove(S),he.push(S.segment[0])),F!==void 0&&(this.rBush_.remove(F),he.push(F.segment[1])),S!==void 0&&F!==void 0){let q={depth:j.depth,feature:j.feature,geometry:j.geometry,index:k,segment:he};this.rBush_.insert(Fs(q.segment),q)}this.updateSegmentIndices_(v,T,j.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.length=0}}return a}setGeometryCoordinates_(e,r){this.changingFeature_=!0,e.setCoordinates(r),this.changingFeature_=!1}updateSegmentIndices_(e,r,a,l){this.rBush_.forEachInExtent(e.getExtent(),function(o){o.geometry===e&&(a===void 0||o.depth===void 0||vn(o.depth,a))&&o.index>r&&(o.index+=l)})}};function pC(h,e){return h.index-e.index}function gb(h,e,r){let a=e.geometry;if(a.getType()==="Circle"){let o=a;if(e.index===uu){let g=Wn();g&&(o=o.clone().transform(g,r));let v=ic(o.getCenter(),er(h,r)),w=Math.sqrt(v)-o.getRadius();return w*w}}let l=er(h,r);return yc[0]=er(e.segment[0],r),yc[1]=er(e.segment[1],r),dx(l,yc)}function yb(h,e,r){let a=e.geometry;if(a.getType()==="Circle"&&e.index===uu){let o=a,g=Wn();return g&&(o=o.clone().transform(g,r)),Wa(o.getClosestPoint(er(h,r)),r)}let l=er(h,r);return yc[0]=er(e.segment[0],r),yc[1]=er(e.segment[1],r),Wa(lm(l,yc),r)}function fC(){let h=bv();return function(e,r){return h.Point}}var wy=by;var Sy=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=rs,this.supportedMediaTypes=null}getReadOptions(e,r){if(r){let a=r.dataProjection?qi(r.dataProjection):this.readProjection(e);r.extent&&a&&a.getUnits()==="tile-pixels"&&(a=qi(a),a.setWorldExtent(r.extent)),r={dataProjection:a,featureProjection:r.featureProjection}}return this.adaptOptions(r)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return St()}readFeature(e,r){return St()}readFeatures(e,r){return St()}readGeometry(e,r){return St()}readProjection(e){return St()}writeFeature(e,r){return St()}writeFeatures(e,r){return St()}writeGeometry(e,r){return St()}},_b=Sy;function gp(h,e,r){let a=r?qi(r.featureProjection):null,l=r?qi(r.dataProjection):null,o=h;if(a&&l&&!_x(a,l)){e&&(o=h.clone());let g=e?a:l,v=e?l:a;g.getUnits()==="tile-pixels"?o.transform(g,v):o.applyTransform(qa(g,v))}if(e&&r&&r.decimals!==void 0){let g=Math.pow(10,r.decimals),v=function(w){for(let T=0,S=w.length;T<S;++T)w[T]=Math.round(w[T]*g)/g;return w};o===h&&(o=h.clone()),o.applyTransform(v)}return o}var mC={Point:_r,LineString:_s,Polygon:sc,MultiPoint:Vh,MultiLineString:Im,MultiPolygon:km};function gC(h,e,r){return Array.isArray(e[0])?(Xd(h,0,e,r)||(h=h.slice(),Uh(h,0,e,r)),h):(jh(h,0,e,r)||(h=h.slice(),nc(h,0,e,r)),h)}function Cy(h,e){let r=h.geometry;if(!r)return[];if(Array.isArray(r))return r.map(o=>Cy({...h,geometry:o})).flat();let a=r.type==="MultiPolygon"?"Polygon":r.type;if(a==="GeometryCollection"||a==="Circle")throw new Error("Unsupported geometry type: "+a);let l=r.layout.length;return gp(new ss(a,a==="Polygon"?gC(r.flatCoordinates,r.ends,l):r.flatCoordinates,r.ends?.flat(),l,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function yp(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(l=>yp(l,e));return new ym(a)}let r=mC[h.type];return gp(new r(h.flatCoordinates,h.layout,h.ends),!1,e)}var Iy=class extends _b{constructor(){super()}getType(){return"json"}readFeature(e,r){return this.readFeatureFromObject(_p(e),this.getReadOptions(e,r))}readFeatures(e,r){return this.readFeaturesFromObject(_p(e),this.getReadOptions(e,r))}readFeatureFromObject(e,r){return St()}readFeaturesFromObject(e,r){return St()}readGeometry(e,r){return this.readGeometryFromObject(_p(e),this.getReadOptions(e,r))}readGeometryFromObject(e,r){return St()}readProjection(e){return this.readProjectionFromObject(_p(e))}readProjectionFromObject(e){return St()}writeFeature(e,r){return JSON.stringify(this.writeFeatureObject(e,r))}writeFeatureObject(e,r){return St()}writeFeatures(e,r){return JSON.stringify(this.writeFeaturesObject(e,r))}writeFeaturesObject(e,r){return St()}writeGeometry(e,r){return JSON.stringify(this.writeGeometryObject(e,r))}writeGeometryObject(e,r){return St()}};function _p(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var xb=Iy;var Ey=class extends xb{constructor(e){e=e||{},super(),this.dataProjection=qi(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=qi(e.featureProjection)),e.featureClass&&(this.featureClass=e.featureClass),this.geometryName_=e.geometryName,this.extractGeometryName_=e.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(e,r){let a=null;e.type==="Feature"?a=e:a={type:"Feature",geometry:e,properties:null};let l=My(a.geometry,r);if(this.featureClass===ss)return Cy({geometry:l,id:a.id,properties:a.properties},r);let o=new rs;return this.geometryName_?o.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&o.setGeometryName(a.geometry_name),o.setGeometry(yp(l,r)),"id"in a&&o.setId(a.id),a.properties&&o.setProperties(a.properties,!0),o}readFeaturesFromObject(e,r){let a=e,l=null;if(a.type==="FeatureCollection"){let o=e;l=[];let g=o.features;for(let v=0,w=g.length;v<w;++v){let T=this.readFeatureFromObject(g[v],r);T&&l.push(T)}}else l=[this.readFeatureFromObject(e,r)];return l.flat()}readGeometryFromObject(e,r){return yC(e,r)}readProjectionFromObject(e){let r=e.crs,a;if(r)if(r.type=="name")a=qi(r.properties.name);else if(r.type==="EPSG")a=qi("EPSG:"+r.properties.code);else throw new Error("Unknown SRS type");else a=this.dataProjection;return a}writeFeatureObject(e,r){r=this.adaptOptions(r);let a={type:"Feature",geometry:null,properties:null},l=e.getId();if(l!==void 0&&(a.id=l),!e.hasProperties())return a;let o=e.getProperties(),g=e.getGeometry();return g&&(a.geometry=Ty(g,r),delete o[e.getGeometryName()]),qn(o)||(a.properties=o),a}writeFeaturesObject(e,r){r=this.adaptOptions(r);let a=[];for(let l=0,o=e.length;l<o;++l)a.push(this.writeFeatureObject(e[l],r));return{type:"FeatureCollection",features:a}}writeGeometryObject(e,r){return Ty(e,this.adaptOptions(r))}};function My(h,e){if(!h)return null;let r;switch(h.type){case"Point":{r=xC(h);break}case"LineString":{r=vC(h);break}case"Polygon":{r=CC(h);break}case"MultiPoint":{r=wC(h);break}case"MultiLineString":{r=bC(h);break}case"MultiPolygon":{r=SC(h);break}case"GeometryCollection":{r=_C(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return r}function yC(h,e){let r=My(h,e);return yp(r,e)}function _C(h,e){return h.geometries.map(function(a){return My(a,e)})}function xC(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:Jo(e.length)}}function vC(h){let e=h.coordinates,r=e.flat();return{type:"LineString",flatCoordinates:r,ends:[r.length],layout:Jo(e[0]?.length||2)}}function bC(h){let e=h.coordinates,r=e[0]?.[0]?.length||2,a=[],l=Qo(a,0,e,r);return{type:"MultiLineString",flatCoordinates:a,ends:l,layout:Jo(r)}}function wC(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:Jo(e[0]?.length||2)}}function SC(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.[0].length||2,l=jd(r,0,e,a);return{type:"MultiPolygon",flatCoordinates:r,ends:l,layout:Jo(a)}}function CC(h){let e=h.coordinates,r=[],a=e[0]?.[0]?.length,l=Qo(r,0,e,a);return{type:"Polygon",flatCoordinates:r,ends:l,layout:Jo(a)}}function Ty(h,e){h=gp(h,!0,e);let r=h.getType(),a;switch(r){case"Point":{a=PC(h,e);break}case"LineString":{a=EC(h,e);break}case"Polygon":{a=RC(h,e);break}case"MultiPoint":{a=MC(h,e);break}case"MultiLineString":{a=TC(h,e);break}case"MultiPolygon":{a=AC(h,e);break}case"GeometryCollection":{a=IC(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+r)}return a}function IC(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return Ty(a,e)})}}function EC(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function TC(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function MC(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function AC(h,e){let r;return e&&(r=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(r)}}function PC(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function RC(h,e){let r;return e&&(r=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(r)}}var vr=Ey;var kC=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,vb=/^([\d.]+),([\d.]+)$/,bb=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,xp="stop-fetch",wb=h=>{let e=[];return h.forEach(r=>{let a=r.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},Ay=class h extends ac{constructor(r={}){super(r);this.viaPoints=[];this.graphs=[];this.useRawViaPoints=!1;this.snapToClosestStation=!1;this.cacheStationData={};this.abortControllers={};this.segments=[];this.format=new vr({featureProjection:"EPSG:3857"});this.initialRouteDrag={};this.loading=!1,this.active=r.active||!0,this.graphs=r.graphs||[["osm",0,99]],this.mot=r.mot||"bus",this.modify=r.modify!==!1,this.routingApiParams=r.routingApiParams,this.useRawViaPoints=r.useRawViaPoints||!1,this.snapToClosestStation=r.snapToClosestStation||!1,this.apiKey=r.apiKey,this.stopsApiKey=r.stopsApiKey||this.apiKey,this.stopsApiUrl=r.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new bh({...r}),this.routingLayer=r.routingLayer||new Qa({source:new el,style:r.style}),this.onRouteError=r.onRouteError||(a=>{this.dispatchEvent(new mi("change:route")),this.reset(),console.error(a)}),this.onMapClick=this.onMapClick.bind(this),this.onModifyEnd=this.onModifyEnd.bind(this),this.onModifyStart=this.onModifyStart.bind(this),this.createModifyInteraction(),this.on("propertychange",a=>{a.key==="active"&&this.onActiveChange(),a.key==="mot"&&this.viaPoints&&this.drawRoute()})}get active(){return this.get("active")}set active(r){this.set("active",r)}get loading(){return this.get("loading")}set loading(r){this.set("loading",r)}get modify(){return this.get("modify")}set modify(r){this.set("modify",r)}get mot(){return this.get("mot")}set mot(r){this.set("mot",r)}static getGraphsResolutions(r,a){let l=a.getView();return r.map(([,o,g])=>[l.getResolutionForZoom(o),l.getResolutionForZoom(g||o+1)])}onActiveChange(){this.get("active")?this.activate():this.deactivate(),this.render()}addViaPoint(r,a=-1,l=0){this.viaPoints.splice(a===-1?this.viaPoints.length:a,l,r),this.drawRoute(),this.dispatchEvent(new mi("change:route"))}removeViaPoint(r=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[r]&&this.viaPoints.splice(r,1),this.drawRoute(),this.dispatchEvent(new mi("change:route"))}setViaPoints(r){this.viaPoints=[...r],this.drawRoute(),this.dispatchEvent(new mi("change:route"))}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.getSource()?.clear(),this.dispatchEvent(new mi("change:route"))}abortRequests(){this.graphs.forEach(r=>{let a=r[0];this.abortControllers[a]&&this.abortControllers[a].abort(),this.abortControllers[a]=new AbortController}),this.abortControllers[xp]?.abort(),this.abortControllers[xp]=new AbortController,this.loading=!1}drawRoute(){if(this.abortRequests(),this.routingLayer?.getSource()?.clear(!0),!this.viaPoints.length)return null;if(this.viaPoints.length===1)return this.drawViaPoint(this.viaPoints[0],0,this.abortControllers[xp]);let r=this.viaPoints.map(a=>{if(Array.isArray(a)){let l=this.getMap()?.getView().getProjection(),[o,g]=$a(a,l);return this.snapToClosestStation?[`@${g}`,o]:[g,o]}return this.useRawViaPoints?a:`!${a}`});return this.loading=!0,this.viaPoints.forEach((a,l)=>this.drawViaPoint(a,l,this.abortControllers[xp])),Promise.all(this.graphs.map(([a],l)=>{let{signal:o}=this.abortControllers[a];return this.api?this.api.route({graph:a,via:`${r.join("|")}`,mot:this.mot,"resolve-hops":!1,elevation:!1,"coord-radius":100,"coord-punish":1e3,...this.routingApiParams||{}},{signal:o}).then(g=>{if(this.segments=this.format.readFeatures(g),this.mot==="foot"){let T=this.segments.reduce((S,k)=>{let F=k.get("trg");return S.find(j=>j[0]===F[0]&&j[1]===F[1])?S:[...S,F]},[]);this.segments=T.map(S=>{let k=this.segments.filter(j=>{let J=j.get("trg");return J[0]===S[0]&&J[1]===S[1]}),F=wb(k);return new rs({geometry:new _s(F)})})}let v=wb(this.segments),w=new rs({geometry:new _s(v)});w.set("graph",a),w.set("mot",this.mot),this.graphsResolutions&&this.graphsResolutions[l]?.length>=2&&(w.set("minResolution",this.graphsResolutions[l][0]),w.set("maxResolution",this.graphsResolutions[l][1])),this.routingLayer?.getSource()?.addFeature(w),this.loading=!1}).catch(g=>{/AbortError/.test(g.message)||(this.segments=[],this.dispatchEvent(new mi("error")),this.onRouteError(g,this),this.routingLayer?.getSource()?.clear(),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(r,a,l){let o=new rs;if(o.set("viaPointIdx",a),Array.isArray(r))return o.setGeometry(new _r(r)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o);if(!this.useRawViaPoints||bb.test(r)){let S,k;return this.useRawViaPoints?[,S,,k]=bb.exec(r)||[]:[S,k]=r.split("$"),fetch(`${this.stopsApiUrl}lookup/${S}?key=${this.stopsApiKey}`,{signal:l.signal}).then(F=>F.json()).then(F=>{let{coordinates:j}=F.features[0].geometry;return this.cacheStationData[r]=yr(j),o.set("viaPointTrack",k),o.setGeometry(new _r(yr(j))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(F=>{/AbortError/.test(F.message)||(this.dispatchEvent(new mi("error")),this.onRouteError(F,this),this.loading=!1)})}if(this.useRawViaPoints&&vb.test(r)){let[S,k]=vb.exec(r)||[];if(k&&S){let F=parseFloat(k),j=parseFloat(S),J=yr([F,j],this.getMap()?.getView().getProjection());return o.setGeometry(new _r(J)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}}let[,g,,v,w,,T]=kC.exec(r)||[];if(w&&v){let S=yr([parseFloat(w),parseFloat(v)],this.getMap()?.getView().getProjection());return o.set("viaPointTrack",T),o.setGeometry(new _r(S)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}return g?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${g}&limit=1`,{signal:l.signal}).then(S=>S.json()).then(S=>{let{coordinates:k}=S.features[0].geometry;return this.cacheStationData[r]=yr(k),o.set("viaPointTrack",T),o.setGeometry(new _r(yr(k))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(S=>(this.dispatchEvent(new mi("error")),this.onRouteError(S,this),this.loading=!1,null)):Promise.resolve(null)}onMapClick(r){let l=r.target.getFeaturesAtPixel(r.pixel,{layerFilter:o=>o===this.routingLayer,hitTolerance:5}).find(o=>o.getGeometry()?.getType()==="Point"&&o.get("viaPointIdx")!==void 0);if(l){this.removeViaPoint(l.get("viaPointIdx"));return}this.addViaPoint(r.coordinate)}onModifyStart(r){let a=-1,l=r.features.getArray().find(g=>g.getGeometry()?.getType()==="LineString");if(l&&l.getGeometry()&&r.mapBrowserEvent.coordinate){let g=bn(new _r(l.getGeometry()?.getClosestPoint(r.mapBrowserEvent.coordinate)).getExtent(),.001);a=this.segments.findIndex(v=>v.getGeometry()?.intersectsExtent(g))}let o=(r.features.getArray().filter(g=>g.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={viaPoint:o,oldRoute:l&&l.clone(),segmentIndex:a}}onModifyEnd(r){let a=r.mapBrowserEvent.coordinate,{oldRoute:l,viaPoint:o,segmentIndex:g}=this.initialRouteDrag||{};return o?this.addViaPoint(a,o.get("viaPointIdx"),1):l?g===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(a,(g||0)+1):this.addViaPoint(a,0,1)}createDefaultElement(){this.element=document.createElement("button"),this.element.id="ol-toggle-routing",this.element.innerHTML="Toggle Route Control",this.element.onclick=()=>this.active?this.deactivate():this.activate(),Object.assign(this.element.style,{position:"absolute",right:"10px",top:"10px"})}createModifyInteraction(){this.modifyInteraction=new wy({source:this.routingLayer?.getSource()||void 0,pixelTolerance:6,deleteCondition:r=>{let l=(r.target?.getFeaturesAtPixel(r.pixel,{hitTolerance:5})).find(o=>o.getGeometry()?.getType()==="Point"&&o.get("index"));return ub(r)&&l?(this.removeViaPoint(l.get("index")),!0):!1}}),this.modifyInteraction.on("modifystart",this.onModifyStart),this.modifyInteraction.on("modifyend",this.onModifyEnd),this.modifyInteraction.setActive(!1)}addListeners(){this.modify&&(this.removeListeners(),this.onMapClickKey=this.getMap()?.on("singleclick",this.onMapClick))}removeListeners(){this.onMapClickKey&&Ih(this.onMapClickKey)}setMap(r){super.setMap(r),r&&this.active?this.activate():r||(this.active=!1)}activate(){let r=this.getMap();r&&(this.format=new vr({featureProjection:r.getView().getProjection()}),this.graphsResolutions=h.getGraphsResolutions(this.graphs,r),this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.modifyInteraction&&r.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}deactivate(){let r=this.getMap();r&&(this.modifyInteraction&&r.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}render(){}},Sb=Ay;var Py=class{constructor(e){let{apiParams:r,apiKey:a,url:l,placeholder:o}=e||{};this.apiParams={limit:20,...r||{}},this.placeholder=o||"Search for a stop...";let g={apiKey:a};l&&(g.url=l),this.api=new wh(g),this.abortController=new AbortController,this.createElement(e),this.options=e}render(e){let r=e?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=r.length?"block":"none",this.suggestionsElt.innerHTML="",r.forEach(a=>{let l=document.createElement("div");l.innerHTML=a?.properties?.name,l.onclick=o=>{this.options?.onSuggestionClick?.(a,o)},Object.assign(l.style,{padding:"5px 12px"}),this.suggestionsElt?.appendChild(l)}))}createElement({element:e}){this.inputElt=document.createElement("input"),this.inputElt.type="text",this.inputElt.placeholder=this.placeholder,this.inputElt.autocomplete="off",this.inputElt.onkeyup=r=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(r.target.value,this.abortController)},Object.assign(this.inputElt.style,{padding:"10px 30px 10px 10px"}),e.appendChild(this.inputElt),this.suggestionsElt=document.createElement("div"),Object.assign(this.suggestionsElt.style,{backgroundColor:"white",overflowY:"auto",cursor:"pointer"}),e.appendChild(this.suggestionsElt),this.clearElt=document.createElement("div"),Object.assign(this.clearElt.style,{display:"none",position:"absolute",right:"0",padding:"0 10px",fontSize:"200%",cursor:"pointer"}),this.clearElt.innerHTML="\xD7",this.clearElt.onclick=()=>this.clear(),e.appendChild(this.clearElt)}clear(){!this.suggestionsElt||!this.inputElt||!this.clearElt||(this.inputElt.value="",this.suggestionsElt.innerHTML="",this.clearElt.style.display="none")}search(e,r){return(e!==void 0||e!==null)&&(this.apiParams.q=e),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,r&&{signal:r.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}},Cb=Py;var LC=()=>{let h=document.createElement("div");return Object.assign(h.style,{position:"absolute",top:0,left:"50px",margin:"10px",display:"flex",flexDirection:"column",width:"320px",maxHeight:"90%"}),h},Ib=LC;var Ry=class extends ac{constructor(e){let r=Ib();r.className=e?.className||"mbt-stop-finder";let a={element:r,...e||{}};super(a),this.controller=new Cb({onSuggestionClick:this.onSuggestionClick.bind(this),...a})}onSuggestionClick(e){let r=yr(e.geometry.coordinates);this.getMap()?.getView().setCenter(r)}},Eb=Ry;var Db=fo(Dy());var kb=fo(vp());function KC(h){return class extends h{constructor(r){super(r);this.options={};this.olListenersKeys=[];r.properties&&(console.warn("Deprecated. Don't use properties options. Pass the values directly in options object."),this.setProperties(r.properties)),this.olListenersKeys?.push(this.on("propertychange",a=>{a.key==="children"&&this.onChildrenChange(a.oldValue)}),this.on("change:visible",()=>{this.onVisibleChange()}),this.on("change:visible:group",a=>{this.group===a.target.group&&this!==a.target&&this.visible?this.visible=!1:this.children&&this.children.forEach(l=>l.dispatchEvent(a))})),this.options=r,this.children=r.children||[]}get children(){return this.get("children")||[]}set children(r){this.set("children",r||[])}get copyrights(){return console.warn("Deprecated. Use the source object to get the attributions"),this.get("copyrights")}set copyrights(r){console.warn("Deprecated. Use the source object to set the attributions");let a=r&&!Array.isArray(r)?[r]:r;this.set("copyrights",a||[])}get disabled(){return this.get("disabled")}set disabled(r){this.set("disabled",r)}get group(){return this.get("group")}get hitTolerance(){return console.warn("Deprecated. Pass the pixelTolerance when you request the features."),this.get("hitTolerance")||5}get key(){return this.get("key")||this.get("name")||Gt(this)}get map(){return this.getMapInternal()}get name(){return this.get("name")}get olLayer(){return console.warn("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This getter is only a redirect to the current 'this' object."),this}set olLayer(r){console.log("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This setter has no effect.")}get parent(){return this.get("parent")}set parent(r){this.set("parent",r)}get visible(){return this.getVisible()}set visible(r){this.setVisible(r)}setMapInternal(r){super.setMapInternal(r),r?this.attachToMap(r):this.detachFromMap()}onChildrenChange(r){(r||[]).forEach(a=>{a.set("parent",void 0)}),(this.children||[]).forEach(a=>{a.set("parent",this)})}onVisibleChange(){let r=this.get("parent"),a=this.get("children")||[];if(this.getVisible()){let l=this.get("group");if(r&&r.setVisible(!0),a&&!a.some(o=>o.getVisible())&&a.forEach(o=>{o.setVisible(!0)}),r&&l){let o=r;for(;o.get("parent");)o=o.get("parent");let g=new mi("change:visible:group");g.target=this,o.dispatchEvent(g)}}else a.forEach(l=>{l.setVisible(!1)}),r?.getVisible()&&!r?.get("children").find(l=>l.getVisible())&&r.setVisible(!1)}attachToMap(r){(super.attachToMap||(()=>{}))(r),(this.get("children")||[]).forEach(a=>{r.addLayer(a)})}detachFromMap(){(this.get("children")||[]).forEach(r=>{this.map.removeLayer(r)}),(super.detachFromMap||(()=>{}))()}flat(){return ja(this)}}}var Rb=KC;function JC(h){return class extends Rb(h){constructor(e={}){super(e)}}}var _c=JC;var Oy=class extends _c(xo){get apiKey(){return this.get("apiKey")}set apiKey(e){this.set("apiKey",e)}get apiKeyName(){return this.get("apiKeyName")}set apiKeyName(e){this.set("apiKeyName",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}get queryRenderedFeaturesOptions(){return this.get("queryRenderedFeaturesOptions")}set queryRenderedFeaturesOptions(e){this.set("queryRenderedFeaturesOptions",e)}constructor(e){super({source:new Po({attributions:()=>this.mbMap&&Ga(this.mbMap)||[]}),apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...e||{},mapOptions:{interactive:!1,trackResize:!1,attributionControl:!1,...e?.mapOptions||{}},queryRenderedFeaturesOptions:{...e?.queryRenderedFeaturesOptions||{}}})}attachToMap(e){super.attachToMap(e),this.loadMbMap();let r=(0,kb.default)(this.updateMbMap.bind(this),150);this.olListenersKeys.push(this.on("propertychange",a=>{/(apiKey|apiKeyName|url|style|)/.test(a.key)&&r()}))}detachFromMap(){this.mbMap&&(this.mbMap.triggerRepaint=()=>{},this.mbMap.remove(),this.mbMap=void 0),this.loaded=!1,super.detachFromMap()}loadMbMap(){if(this.loaded=!1,this.olListenersKeys.push(this.map?.on("change:target",this.loadMbMap.bind(this))),!this.map?.getTargetElement())return;if(!this.visible){this.olListenersKeys.push(this.once("change:visible",this.loadMbMap.bind(this)));return}let e=document.createElement("div");e.style.position="absolute",e.style.width="100%",e.style.height="100%",this.mbMap=this.createMap({style:this.getStyle(),container:e,...this.options?.mapOptions||{}}),this.mbMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.mbMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new mi("load"))})}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:Na(`${this.url}/styles/${this.style}/style.json`,{[this.apiKeyName]:this.apiKey}).toString()}createMap(e){throw new Error("createMap must be implemented in child class")}updateMbMap(){this.mbMap?.setStyle(this.getStyle(),{diff:!1})}},Lb=Oy;var By={"EPSG:3857":new vr({featureProjection:"EPSG:3857"})},pu=class extends pc{getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{mbMap:o}=a,g=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(By[g]||(By[g]=new vr({featureProjection:g})),o?.isStyleLoaded()){let w=e&&o.project($a(e));if(w?.x&&w?.y){let T=[w.x,w.y];if(r){let[S,k]=T;T=[[S-r,k-r],[S+r,k+r]]}v=o.queryRenderedFeatures(T,a.queryRenderedFeaturesOptions||{}).map(S=>{let k=By[g].readFeature(S);return k&&k.set(ra,S),k})}}return v}prepareFrame(){return!0}renderFrame(e){let r=this.getLayer(),{map:a,mbMap:l}=r;if(!r||!a||!l)return null;let o=l.getCanvas(),{viewState:g}=e,v=r.getOpacity()||1;return o.style.opacity=`${v}`,l.jumpTo({center:$a(g.center),zoom:g.zoom-1,bearing:ax(-g.rotation)}),o.isConnected?(o.width!==e.size[0]||o.height!==e.size[1])&&l.resize():a.render(),l.redraw(),l.getContainer()}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(g=>{l(g,this.layer_,g.getGeometry())}),o?.[0]}};var fu=class h extends Lb{get maplibreMap(){return this.mbMap}constructor(e){super({...e})}createRenderer(){return new pu(this)}createMap(e){return new Db.Map(e)}clone(e){return new h({...this.options||{},...e||{}})}};var Ny={"EPSG:3857":new vr({featureProjection:"EPSG:3857"})},mu=class extends pc{getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{maplibreMap:o}=a.maplibreLayer,g=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(Ny[g]||(Ny[g]=new vr({featureProjection:g})),o?.isStyleLoaded()){let w=e&&o.project($a(e));if(w?.x&&w?.y){let T=[w.x,w.y];if(r){let[k,F]=T;T=[[k-r,F-r],[k+r,F+r]]}let S=a.layers||[];a.layersFilter&&(S=o.getStyle().layers.filter(a.layersFilter)),a.queryRenderedLayersFilter&&(S=o.getStyle().layers.filter(a.queryRenderedLayersFilter)),v=o.queryRenderedFeatures(T,{layers:S.map(k=>k.id),validate:!1}).map(k=>{let F=Ny[g].readFeature(k);return F&&F.set(ra,k),F})}}return v}prepareFrame(){return!0}renderFrame(){return null}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(g=>{l(g,this.layer_,g.getGeometry())}),o?.[0]}};var Vy=class h extends _c(xo){constructor(r){super({source:new Po({}),...r||{}});this.highlightedFeatures=[];this.selectedFeatures=[];this.onLoad=this.onLoad.bind(this),!this.layersFilter&&this.layers&&(this.layersFilter=a=>!!this.layers.find(l=>a.id===l.id))}get beforeId(){return this.get("beforeId")}set beforeId(r){this.set("beforeId",r)}get layers(){return this.get("layers")}set layers(r){this.set("layers",r)}get layersFilter(){return this.get("layersFilter")}set layersFilter(r){this.set("layersFilter",r)}get mapboxLayer(){return console.warn("Deprecated. Use maplibreLayer instead."),this.get("maplibreLayer")}get maplibreLayer(){return this.get("maplibreLayer")}set maplibreLayer(r){this.set("maplibreLayer",r)}get queryRenderedLayersFilter(){return this.get("queryRenderedLayersFilter")}set queryRenderedLayersFilter(r){this.set("queryRenderedLayersFilter",r)}get sources(){return this.get("sources")}set sources(r){this.set("sources",r)}get styleLayer(){return console.warn("Deprecated. Use layers instead."),this.layers[0]}set styleLayer(r){console.warn("Deprecated. Use layers instead."),this.layers=[r]}get styleLayers(){return console.warn("Deprecated. Use layers instead."),this.layers}set styleLayers(r){console.warn("Deprecated. Use layers instead."),this.layers=r}createRenderer(){return new mu(this)}attachToMap(r){if(this.maplibreLayer&&!this.maplibreLayer.map&&r.addLayer(this.maplibreLayer),super.attachToMap(r),!this.map||!this.maplibreLayer)return;if(!this.map.getTargetElement()){this.olListenersKeys.push(this.map.on("change:target",()=>{this.attachToMap(r)}));return}let{maplibreMap:a}=this.maplibreLayer;a&&(a.loaded()?this.onLoad():a.once("load",this.onLoad)),this.olListenersKeys.push(this.maplibreLayer.on("load",this.onLoad.bind(this)),this.on("change:visible",l=>{this.applyLayoutVisibility(l)}),this.on("propertychange",l=>{/(sources|layers|layersFilter|maplibreLayer|beforeId|)/.test(l.key)&&(this.detachFromMap(),this.attachToMap(r))}))}detachFromMap(){this.maplibreLayer?.maplibreMap&&(this.maplibreLayer.maplibreMap.off("load",this.onLoad),this.removeLayers(),this.removeSources()),super.detachFromMap()}addSources(){if(!this.maplibreLayer?.maplibreMap||!this.sources)return;let{maplibreMap:r}=this.maplibreLayer;r&&Object.entries(this.sources).forEach(([a,l])=>{r.getSource(a)||r.addSource(a,l)})}removeSources(){if(!this.maplibreLayer?.maplibreMap||!this.sources)return;let{maplibreMap:r}=this.maplibreLayer;r&&Object.keys(this.sources).forEach(a=>{r.getSource(a)&&r.removeSource(a)})}addLayers(){if(!this.maplibreLayer?.maplibreMap||!Array.isArray(this.layers))return;let{maplibreMap:r}=this.maplibreLayer;r&&(this.layers.forEach(a=>{let{id:l,source:o}=a;(!o||o&&r.getSource(o))&&l&&!r.getLayer(l)&&r.addLayer(a,this.beforeId)}),this.applyLayoutVisibility())}removeLayers(){if(!this.maplibreLayer?.maplibreMap||!Array.isArray(this.layers))return;let{maplibreMap:r}=this.maplibreLayer;r&&this.layers.forEach(a=>{let{id:l}=a;l&&r.getLayer(l)&&r.removeLayer(l)})}onLoad(){if(!this.maplibreLayer?.maplibreMap)return;this.addSources(),this.addLayers();let{maplibreMap:r}=this.maplibreLayer,a=r.getStyle();if(a?.layers&&this.layersFilter){let l=a.layers.filter(this.layersFilter);this.disabled=!l.length}}getFeatureInfoAtCoordinate(r){if(!this.maplibreLayer?.maplibreMap)return Promise.resolve({coordinate:r,features:[],layer:this});let{maplibreMap:a}=this.maplibreLayer;if(!a.isStyleLoaded())return Promise.resolve({coordinate:r,features:[],layer:this});let l=this.layers||[];return this.layersFilter&&(l=a.getStyle().layers.filter(this.layersFilter)),this.queryRenderedLayersFilter&&(l=a.getStyle().layers.filter(this.queryRenderedLayersFilter)),Promise.resolve({features:[],layer:this,coordinate:r})}setHoverState(r,a){if(!this.maplibreLayer?.maplibreMap||!r.length)return;let{maplibreMap:l}=this.maplibreLayer;r.forEach(o=>{let{source:g,sourceLayer:v}=o.get(ra)||{};if(!g&&!v||!o.getId()){o.getId()||console.warn("No feature's id found. To use the feature state functionnality, tiles must be generated with --generate-ids. See https://github.com/Maplibre/tippecanoe#adding-calculated-attributes.",o.getId(),o.getProperties());return}l.setFeatureState({id:o.getId(),source:g,sourceLayer:v},{hover:a})})}select(r=[]){this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=r,this.setHoverState(this.selectedFeatures||[],!0)}highlight(r=[]){let a=this.highlightedFeatures?.filter(l=>!(this.selectedFeatures||[]).map(o=>o.getId()).includes(l.getId()))||[];this.setHoverState(a,!1),this.highlightedFeatures=r,this.setHoverState(this.highlightedFeatures,!0)}applyLayoutVisibility(r){if(!this.maplibreLayer?.maplibreMap?.getStyle()||!this.layersFilter)return;let{maplibreMap:a}=this.maplibreLayer,l=a.getStyle(),o=this.getVisible()?"visible":"none",g=l.layers||[];for(let v=0;v<g.length;v+=1){let w=g[v];if(this.layersFilter(w)){let{id:T}=w;a.getLayer(T)&&(a.setLayoutProperty(T,"visibility",o),(this.getMinZoom()||this.getMaxZoom())&&a.setLayerZoomRange(T,this.getMinZoom()?this.getMinZoom()-1:0,this.getMaxZoom()?this.getMaxZoom()-1:24))}}}clone(r){return new h({...this.options,...r})}},Fb=Vy;var $y=fo(vp());var jy=fo(vp()),Uy=fo(Vb());function gI(h){return class extends h{constructor(r){super({hitTolerance:10,...r}),this.defineProperties(r),this.debug=r.debug||!1,this.mode=r.mode||Ki.TOPOGRAPHIC,this.api=r.api||new Ch(r),this.tenant=r.tenant||"",this.minZoomInterpolation=r.minZoomInterpolation||8,this.format=new vr,this.onStart=r.onStart,this.onStop=r.onStop,this.motsByZoom=r.motsByZoom||[vs,vs,vs,vs,vs,vs,vs,vs,vs,Yd,Yd],this.getMotsByZoom=a=>r.getMotsByZoom?r.getMotsByZoom(a,this.motsByZoom):this.motsByZoom[a],this.generalizationLevelByZoom=r.generalizationLevelByZoom||[],this.getGeneralizationLevelByZoom=a=>r.getGeneralizationLevelByZoom?r.getGeneralizationLevelByZoom(a,this.generalizationLevelByZoom):this.generalizationLevelByZoom[a],this.renderTimeIntervalByZoom=r.renderTimeIntervalByZoom||[1e5,5e4,4e4,3e4,2e4,15e3,1e4,5e3,2e3,1e3,400,300,250,180,90,60,50,50,50,50,50],this.getRenderTimeIntervalByZoom=a=>r.getRenderTimeIntervalByZoom?r.getRenderTimeIntervalByZoom(a,this.renderTimeIntervalByZoom):this.renderTimeIntervalByZoom[a],this.isUpdateBboxOnMoveEnd=r.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,Uy.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,jy.default)(this.renderTrajectoriesInternal,50,{leading:!0,trailing:!0,maxWait:5e3}),this.renderTrajectoriesInternal=this.renderTrajectoriesInternal.bind(this),this.onTrajectoryMessage=this.onTrajectoryMessage.bind(this),this.onDeleteTrajectoryMessage=this.onDeleteTrajectoryMessage.bind(this),this.onDocumentVisibilityChange=this.onDocumentVisibilityChange.bind(this)}defineProperties(r){(super.defineProperties||(()=>{}))(r);let{style:a,speed:l,pixelRatio:o,hoverVehicleId:g,selectedVehicleId:v,filter:w,sort:T,time:S,live:k,canvas:F,styleOptions:j,mode:J,bboxParameters:he}=r,q=F,Z=l||1,ne=S||new Date,me=J||Ki.TOPOGRAPHIC,_e=a||Ya;Object.defineProperties(this,{isTrackerLayer:{value:!0},canvas:{get:()=>(q||(q=document.createElement("canvas")),q),set:fe=>{q=fe}},mode:{get:()=>me,set:fe=>{fe!==me&&(me=fe,this.api?.wsApi?.open&&(this.stop(),this.start()))}},style:{get:()=>_e,set:fe=>{_e=fe,this.renderTrajectories()}},styleOptions:{value:{...oc,...j||{}}},speed:{get:()=>Z,set:fe=>{Z=fe,this.start()}},bboxParameters:{value:he,writable:!0},filter:{value:w,writable:!0},sort:{value:T,writable:!0},live:{value:k===!1?k:!0,writable:!0},time:{get:()=>ne,set:fe=>{ne=fe&&fe.getTime?fe:new Date(fe),this.renderTrajectories()}},trajectories:{value:{},writable:!0},hoverVehicleId:{value:g,writable:!0},selectedVehicleId:{value:v,writable:!0},pixelRatio:{value:o||(typeof window<"u"?window.devicePixelRatio:1),writable:!0},useRequestAnimationFrame:{value:r.useRequestAnimationFrame||!1,writable:!0},useThrottle:{value:r.useThrottle!==!1,writable:!0},useDebounce:{value:r.useDebounce||!1,writable:!0}})}attachToMap(r){super.attachToMap(r),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),Ih(this.visibilityRef),this.canvas){let r=this.canvas.getContext("2d");r&&r.clearRect(0,0,this.canvas.width,this.canvas.height),super.detachFromMap()}}start(){this.stop(),this.purgeOutOfDateTrajectories(),this.renderTrajectories(),this.startUpdateTime(),this.api.open(),this.api.subscribeTrajectory(this.mode,this.onTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.api.subscribeDeletedVehicles(this.mode,this.onDeleteTrajectoryMessage,void 0,this.isUpdateBboxOnMoveEnd),this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.onStart&&this.onStart(this)}startUpdateTime(){this.stopUpdateTime(),this.updateTimeDelay=this.getRefreshTimeInMs()||0,this.updateTimeInterval=window.setInterval(()=>{this.live?this.time=new Date:this.time&&this.updateTimeDelay&&this.speed&&(this.time=new Date(this.time.getTime()+this.updateTimeDelay*this.speed))},this.updateTimeDelay)}stop(){this.api.unsubscribeTrajectory(this.onTrajectoryMessage),this.api.unsubscribeDeletedVehicles(this.onDeleteTrajectoryMessage),this.api.close(),this.onStop&&this.onStop(this)}stopUpdateTime(){this.updateTimeInterval&&(clearInterval(this.updateTimeInterval),this.updateTimeInterval=void 0)}renderTrajectoriesInternal(r,a=!1){if(!this.map||!this.trajectories)return!1;let l=this.live?Date.now():this.time?.getTime(),o=Object.values(this.trajectories);return this.sort&&o.sort(this.sort),!this.canvas||!this.style||(this.renderState=Wh(this.canvas,o,this.style,{...r,pixelRatio:this.pixelRatio||1,time:l},{filter:this.filter,noInterpolate:(r.zoom||0)<this.minZoomInterpolation?!0:a,hoverVehicleId:this.hoverVehicleId,selectedVehicleId:this.selectedVehicleId,...this.styleOptions})),!0}renderTrajectories(r,a){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),r&&(!a&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(r,a)}):!a&&this.useDebounce?this.debounceRenderTrajectories(r,a):!a&&this.useThrottle?this.throttleRenderTrajectories(r,a):this.renderTrajectoriesInternal(r,a))}setBbox(r,a){if(this.trajectories&&r&&a){let k=Object.keys(this.trajectories);for(let F=k.length-1;F>=0;F-=1)this.purgeTrajectory(this.trajectories[k[F]],r,a)}let l=Math.floor(a);if(!r||Number.isNaN(l))return;let[o,g,v,w]=r,T=[Math.floor(o),Math.floor(g),Math.ceil(v),Math.ceil(w),l],S=this.getGeneralizationLevelByZoom(l);this.generalizationLevel&&T.push(`gen=${S}`),this.mots=this.getMotsByZoom(l),this.mots&&T.push(`mots=${this.mots}`),this.tenant&&T.push(`tenant=${this.tenant}`),this.mode!=="topographic"&&T.push(`channel_prefix=${this.mode}`),this.bboxParameters&&Object.entries(this.bboxParameters).forEach(([k,F])=>{T.push(`${k}=${F}`)}),this.api.bbox=T}getRefreshTimeInMs(r=0){let a=r!==void 0?Math.round(r):-1,l=this.getRenderTimeIntervalByZoom(a)||25,o=Math.max(25,l/(this.speed||1)),g=Math.min(o,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,Uy.default)(this.renderTrajectoriesInternal,g,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,jy.default)(this.renderTrajectoriesInternal,g,{leading:!0,trailing:!0,maxWait:5e3})),this.api?.buffer){let[,v]=this.api.buffer;this.api.buffer=[g,v]}return o}getVehicle(r){return this.trajectories&&Object.values(this.trajectories).filter(r)||[]}getFeatureInfoAtCoordinate(r,a){let{resolution:l,nb:o}=a,g=bn([...r,...r],this.hitTolerance*l),v=Object.values(this.trajectories||{});this.sort&&(v=v.sort(this.sort));let w=[];for(let T=0;T<v.length&&(v[T].properties.coordinate&&mo(g,v[T].properties.coordinate)&&w.push(v[T]),w.length!==o);T+=1);return Promise.resolve({layer:this,features:w,coordinate:r})}getTrajectoryInfos(r){let a=[this.api.getStopSequence(r),this.api.getFullTrajectory(r,this.mode,this.getGeneralizationLevelByZoom(Math.floor(this.map?.getView()?.getZoom()||0)))];return Promise.all(a).then(([l,o])=>({stopSequence:l,fullTrajectory:o}))}purgeOutOfDateTrajectories(){Object.entries(this.trajectories||{}).forEach(([r,a])=>{let l=a?.properties?.time_intervals;this.time&&l.length&&l[l.length-1][0]<this.time&&this.removeTrajectory(r)})}purgeTrajectory(r,a,l){let{type:o,bounds:g}=r.properties;return this.isUpdateBboxOnMoveEnd&&!Qi(a,g)||this.mots&&!this.mots.includes(o)?(this.removeTrajectory(r),!0):!1}addTrajectory(r){this.trajectories||(this.trajectories={}),this.trajectories[r.properties.train_id]=r,this.renderTrajectories()}removeTrajectory(r){let a;typeof r!="string"?a=r?.properties?.train_id:a=r,this.trajectories&&delete this.trajectories[a]}onZoomEnd(){this.startUpdateTime()}onDocumentVisibilityChange(){if(document.hidden)this.stop(),this.trajectories={};else{if(this.visible===!1)return;this.start()}}onTrajectoryMessage(r){if(!r.content)return;let a=r.content,{geometry:l,properties:{train_id:o,time_since_update:g,raw_coordinates:v}}=a;g<0||this.purgeTrajectory(a)||(this.debug&&this.mode===Ki.TOPOGRAPHIC&&v?a.properties.olGeometry=this.format.readGeometry({type:"Point",coordinates:yr(v,this.map.getView().getProjection())}):a.properties.olGeometry=this.format.readGeometry(l),a.properties.timeOffset=Date.now()-r.timestamp,this.addTrajectory(a))}onDeleteTrajectoryMessage(r){r.content&&this.removeTrajectory(r.content)}highlightVehicle(r){this.hoverVehicleId!==r&&(this.hoverVehicleId=r,this.renderTrajectories(!0))}selectVehicle(r){this.selectedVehicleId!==r&&(this.selectedVehicleId=r,this.renderTrajectories(!0))}}}var wp=gI;var yI=new zr({zIndex:2,image:new Rn({radius:5,fill:new Fr({color:"#000000"})}),stroke:new nr({color:"#000000",width:6})}),_I=(h,e,r)=>{let a="#ffffff",l=h.get("type"),o=h.get("stroke");return o&&o[0]!=="#"&&(o=`#${o}`),a=o||r?.getBgColor(l),a=/#ffffff/i.test(a)?"#ff0000":a,[yI,new zr({zIndex:3,image:new Rn({radius:4,fill:new Fr({color:a})}),stroke:new nr({color:a,width:4})})]},Sp=_I;var xI=new zr({zIndex:2,image:new Rn({radius:5,fill:new Fr({color:"#000000"})}),stroke:new nr({color:"#000000",width:6})}),vI=new zr({zIndex:3,image:new Rn({radius:4,fill:new Fr({color:"#a0a0a0"})}),stroke:new nr({color:"#a0a0a0",width:4})}),bI=()=>[xI,vI],Gb=bI;var jb=new Rn({radius:6,fill:new Fr({color:[255,0,0,1]}),stroke:new nr({color:[0,0,0,1],width:1})}),wI=new zr({stroke:new nr({color:[0,0,0,1],width:5})}),SI=new zr({image:jb,stroke:new nr({color:[255,0,0,1],width:3})}),CI=new zr({image:jb,stroke:new nr({color:[255,0,0,1],width:3,lineDash:[1,10]})}),II=(h,e)=>{let r=h.get("minResolution"),a=h.get("maxResolution"),l=e<=r&&e>a;return r&&a&&!l?[]:h.get("mot")!=="foot"?[wI,SI]:[CI]},Ub=II;var EI=new vr,gu=class extends mp{prepareFrame(){return!0}renderFrame(e){let{canvas:r,renderedViewState:a}=this.getLayer();if(this.container||(this.container=document.createElement("div"),this.container.className=this.getLayer().getClassName(),this.container.style.position="absolute",this.container.style.width="100%",this.container.style.height="100%",r&&(r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.transformOrigin="top left",this.container.appendChild(r))),a){let{center:l,resolution:o,rotation:g}=e.viewState,{center:v,resolution:w,rotation:T}=a;if(w/o>=3)r?.getContext("2d")?.clearRect(0,0,r?.width,r?.height);else{let S=this.getLayer().getMapInternal()?.getPixelFromCoordinate(v),k=this.getLayer().getMapInternal().getPixelFromCoordinate(l);this.container.style.transform=G0(S[0]-k[0],S[1]-k[1],w/o,w/o,g-T,0,0)}}return this.container}getData(e){let r;try{let{pixelRatio:a}=this.getLayer();return r=this.canvas?.getContext("2d",{willReadFrequently:!0})?.getImageData(e[0]*(a||1),e[1]*(a||1),1,1).data||null,r}catch(a){console.error("error getting data",a)}return null}getFeatures(e){let r=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(r))}forEachFeatureAtCoordinate(e,r,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(g=>{l(g,this.layer_,g.getGeometry())}),o?.[0]}getFeaturesAtCoordinate(e,r=5){if(!e)return[];let a=this.getLayer(),o=a.getMapInternal().getView().getResolution(),g=10,v=bn([...e,...e],r*o),w=[],T=Object.values(a.trajectories||{});a.sort&&(T=T.sort(this.sort));let S=[];for(let k=0;k<T.length;k+=1){let F=T[k];if(F.properties.coordinate&&mo(v,F.properties.coordinate)&&S.push(T[k]),S.length===g)break}return w=S.map(k=>EI.readFeature(k)),w}};var TI=new vr,qy=class h extends wp(_c(xo)){constructor(r){super({source:new Po({}),...r});this.allowRenderWhenAnimating=!1;this.allowRenderWhenAnimating=!!r.allowRenderWhenAnimating,this.vectorLayer=new Qa({updateWhileAnimating:this.allowRenderWhenAnimating,updateWhileInteracting:!0,source:new el({features:[]}),style:(a,l)=>(r.fullTrajectoryStyle||Sp)(a,l,this.styleOptions)}),this.renderState={center:[0,0],zoom:void 0,rotation:0},this.onZoomEndDebounced=(0,$y.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,$y.default)(this.onMoveEnd,100)}createRenderer(){return new gu(this)}attachToMap(r){if(super.attachToMap(r),this.map){this.visible&&this.start();let a=this.map.getLayers().getArray().indexOf(this);this.map.getLayers().insertAt(a,this.vectorLayer),this.olListenersKeys.push(...this.map.on(["moveend","change:target"],l=>{let o=(l.map||l.target).getView();if(o.getAnimating()||o.getInteracting())return;let g=o.getZoom();this.currentZoom!==g&&this.onZoomEndDebounced(l),this.currentZoom=g,this.onMoveEndDebounced(l)}),this.on("change:visible",l=>{l.target.visible?this.start():this.stop()}),this.on("propertychange",l=>{/(opacity|visible|zIndex|minResolution|maxResolution|minZoom|maxZoom)/.test(l.key)&&this.vectorLayer.set(l.key,l.target.get(l.key))}))}}detachFromMap(){this.map?.removeLayer(this.vectorLayer),super.detachFromMap()}renderTrajectories(r){if(!this.map)return;let a=this.map.getView();a.getCenter()&&super.renderTrajectories({size:this.map.getSize(),center:a.getCenter(),extent:a.calculateExtent(),resolution:a.getResolution(),rotation:a.getRotation(),zoom:a.getZoom(),pixelRatio:this.pixelRatio},r)}renderTrajectoriesInternal(r,a){if(!this.map)return!1;let l=!1;return l=(this.allowRenderWhenAnimating?!1:this.map.getView().getAnimating()||this.map.getView().getInteracting())?!1:super.renderTrajectoriesInternal(r,a),l&&(this.renderedViewState={...r},this.getRenderer().container&&(this.getRenderer().container.style.transform="")),l}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getView().getZoom())}onMoveEnd(r){!this.isUpdateBboxOnMoveEnd||!this.visible||this.setBbox()}onZoomEnd(){super.onZoomEnd(),!(!this.isUpdateBboxOnMoveEnd||!this.visible)&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}highlight(r){this.highlightVehicle(r?.get("train_id"))}select(r){this.selectVehicle(r?.get("train_id")),this.highlightTrajectory(r?.get("train_id"))}purgeTrajectory(r,a,l){let o=this.map.getView().getCenter();return!a&&!o?!1:super.purgeTrajectory(r,a||this.map.getView().calculateExtent(),l||this.map.getView().getZoom())}setBbox(r,a){super.setBbox(r||this.map.getView().calculateExtent(),a||this.map.getView().getZoom())}highlightTrajectory(r){return r?this.api.getFullTrajectory(r,this.mode,this.getGeneralizationLevelByZoom(Math.floor(this.map?.getView()?.getZoom()||0))).then(a=>{let l=a.content;if(!l?.features?.length)return[];let o=TI.readFeatures(l);return this.vectorLayer.getSource().clear(!0),o.length&&this.vectorLayer.getSource().addFeatures(o),o}).catch(()=>(this.vectorLayer.getSource().clear(!0),[])):(this.vectorLayer.getSource().clear(!0),Promise.resolve([]))}clone(r){return new h({...this.options,...r})}},$b=qy;var MI=new vr,AI=(h,e,r)=>{let a,{coordinate:l,resolution:o,projection:g,params:v}=e;return h&&o&&g&&(a=h.getFeatureInfoUrl(l,o,g,{info_format:"application/json",query_layers:h.getParams().layers,...v})),fetch(a,{signal:r.signal}).then(w=>w.json()).then(w=>MI.readFeatures(w)).catch(()=>[])},yu={},PI=async(h,e,r=5)=>{Object.values(yu).forEach(o=>{o?.abort()}),yu={};let l=ja(e).map(o=>{let g=o.getMapInternal(),v=g?.getView()?.getProjection()?.getCode(),w={features:[],layer:o,coordinate:h};if(!v)return Promise.resolve(w);if(o.getFeatureInfoAtCoordinate)return o.getFeatureInfoAtCoordinate(h);let T=o?.getSource();if(T?.getFeatureInfoUrl){let F=Gt(void 0);yu[F]?.abort(),yu[F]=new AbortController;let j=g?.getView()?.getResolution();return AI(T,{coordinate:h,resolution:j,projection:v,params:{info_format:"application/json",query_layers:T.getParams().layers}},yu[F]).then(J=>({features:J,layer:o,coordinate:h})).catch(()=>({features:[],layer:o,coordinate:h}))}let S=g?.getPixelFromCoordinate(h);if(!S)return Promise.resolve(w);let k=g?.getFeaturesAtPixel(S,{layerFilter:F=>F===o,hitTolerance:o.get("hitTolerance")||r||5});return Promise.resolve({features:k,layer:o,coordinate:h})});return Promise.all(l)},qb=PI;var Ap={};Of(Ap,{CopyrightControl:()=>Wb,Layer:()=>Ep,RealtimeAPI:()=>Ch,RealtimeLayer:()=>c1,RealtimeModes:()=>Ki,RoutingAPI:()=>bh,StopsAPI:()=>wh,VECTOR_TILE_FEATURE_PROPERTY:()=>ra,compareDepartures:()=>Zh,createCanvas:()=>xs,createRealtimeFilters:()=>Uf,debounceDeparturesMessages:()=>Lm,debounceWebsocketMessages:()=>Sh,getCircleCanvas:()=>Gm,getDelayBgCanvas:()=>Nm,getDelayTextCanvas:()=>Vm,getHoursAndMinutes:()=>O0,getLayersAsFlatArray:()=>ja,getMapGlCopyrights:()=>Ga,getMercatorResolution:()=>l1,getSourceCoordinates:()=>Mp,getTextCanvas:()=>jm,getUTCDateString:()=>F0,getUTCTimeString:()=>z0,getUrlWithParams:()=>Na,getVehiclePosition:()=>qh,pad:()=>Ed,realtimeConfig:()=>oc,realtimeDefaultStyle:()=>Ya,realtimeDelayStyle:()=>Um,realtimeSimpleStyle:()=>$m,removeDuplicate:()=>Va,renderTrajectories:()=>Wh,sortAndFilterDepartures:()=>Xh,sortByDelay:()=>$f});var RI=" | ",Wy=class{constructor(e={}){this.options=e}onAdd(e){return this.map=e,this.container||(this.container=document.createElement("div")),this.render=this.render.bind(this),this.map.on("idle",this.render),this.map.on("sourcedata",this.render),this.map.on("styledata",this.render),this.render(),this.container}onRemove(){return this.container?.parentElement&&this.container.parentElement?.removeChild(this.container),this.map&&(this.map.off("sourcedata",this.render),this.map.off("styledata",this.render),this.map.off("idle",this.render)),this.map=void 0,this.container}getDefaultPosition(){return"bottom-right"}render(){if(this.map&&this.container){let e=this.options?.separator||RI,r=this.options?.customAttribution||Ga(this.map),a=(Array.isArray(r)?r:[r]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},Wb=Wy;var Ip,kI=new Uint8Array(16);function Zy(){if(!Ip&&(Ip=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ip))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ip(kI)}var Br=[];for(let h=0;h<256;++h)Br.push((h+256).toString(16).slice(1));function Zb(h,e=0){return Br[h[e+0]]+Br[h[e+1]]+Br[h[e+2]]+Br[h[e+3]]+"-"+Br[h[e+4]]+Br[h[e+5]]+"-"+Br[h[e+6]]+Br[h[e+7]]+"-"+Br[h[e+8]]+Br[h[e+9]]+"-"+Br[h[e+10]]+Br[h[e+11]]+Br[h[e+12]]+Br[h[e+13]]+Br[h[e+14]]+Br[h[e+15]]}var LI=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Xy={randomUUID:LI};function DI(h,e,r){if(Xy.randomUUID&&!e&&!h)return Xy.randomUUID();h=h||{};let a=h.random||(h.rng||Zy)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){r=r||0;for(let l=0;l<16;++l)e[r+l]=a[l];return e}return Zb(a)}var Hy=DI;var Xb=fo(Dy()),Yy=class extends Xb.Evented{constructor(r={}){super();this.options={};this.type="custom";this.options=r,this.id=r.id||Hy(),this.type="custom"}onAdd(r,a){this.map=r}onRemove(r,a){this.map=void 0}render(r){}},Ep=Yy;var or=63710088e-1,Hb={centimeters:or*100,centimetres:or*100,degrees:or/111325,feet:or*3.28084,inches:or*39.37,kilometers:or/1e3,kilometres:or/1e3,meters:or,metres:or,miles:or/1609.344,millimeters:or*1e3,millimetres:or*1e3,nauticalmiles:or/1852,radians:1,yards:or*1.0936},I4={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:1/1e3,kilometres:1/1e3,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/or,yards:1.0936133};function Yb(h,e,r){r===void 0&&(r={});var a={type:"Feature"};return(r.id===0||r.id)&&(a.id=r.id),r.bbox&&(a.bbox=r.bbox),a.properties=e||{},a.geometry=h,a}function da(h,e,r){if(r===void 0&&(r={}),!h)throw new Error("coordinates is required");if(!Array.isArray(h))throw new Error("coordinates must be an Array");if(h.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!Ky(h[0])||!Ky(h[1]))throw new Error("coordinates must contain numbers");var a={type:"Point",coordinates:h};return Yb(a,e,r)}function FI(h,e){e===void 0&&(e="kilometers");var r=Hb[e];if(!r)throw new Error(e+" units is invalid");return h*r}function zI(h,e){e===void 0&&(e="kilometers");var r=Hb[e];if(!r)throw new Error(e+" units is invalid");return h/r}function Kb(h){var e=h%(2*Math.PI);return e*180/Math.PI}function tl(h){var e=h%360;return e*Math.PI/180}function Tp(h,e,r){if(e===void 0&&(e="kilometers"),r===void 0&&(r="kilometers"),!(h>=0))throw new Error("length must be a positive number");return FI(zI(h,e),r)}function Ky(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function Jy(h){return!!h&&h.constructor===Object}function _u(h,e,r){if(h!==null)for(var a,l,o,g,v,w,T,S=0,k=0,F,j=h.type,J=j==="FeatureCollection",he=j==="Feature",q=J?h.features.length:1,Z=0;Z<q;Z++){T=J?h.features[Z].geometry:he?h.geometry:h,F=T?T.type==="GeometryCollection":!1,v=F?T.geometries.length:1;for(var ne=0;ne<v;ne++){var me=0,_e=0;if(g=F?T.geometries[ne]:T,g!==null){w=g.coordinates;var fe=g.type;switch(S=r&&(fe==="Polygon"||fe==="MultiPolygon")?1:0,fe){case null:break;case"Point":if(e(w,k,Z,me,_e)===!1)return!1;k++,me++;break;case"LineString":case"MultiPoint":for(a=0;a<w.length;a++){if(e(w[a],k,Z,me,_e)===!1)return!1;k++,fe==="MultiPoint"&&me++}fe==="LineString"&&me++;break;case"Polygon":case"MultiLineString":for(a=0;a<w.length;a++){for(l=0;l<w[a].length-S;l++){if(e(w[a][l],k,Z,me,_e)===!1)return!1;k++}fe==="MultiLineString"&&me++,fe==="Polygon"&&_e++}fe==="Polygon"&&me++;break;case"MultiPolygon":for(a=0;a<w.length;a++){for(_e=0,l=0;l<w[a].length;l++){for(o=0;o<w[a][l].length-S;o++){if(e(w[a][l][o],k,Z,me,_e)===!1)return!1;k++}_e++}me++}break;case"GeometryCollection":for(a=0;a<g.geometries.length;a++)if(_u(g.geometries[a],e,r)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function OI(h,e){e===void 0&&(e={});var r=0,a=0,l=0;return _u(h,function(o){r+=o[0],a+=o[1],l++},!0),da([r/l,a/l],e.properties)}var Jb=OI;function Xs(h){if(!h)throw new Error("coord is required");if(!Array.isArray(h)){if(h.type==="Feature"&&h.geometry!==null&&h.geometry.type==="Point")return h.geometry.coordinates;if(h.type==="Point")return h.coordinates}if(Array.isArray(h)&&h.length>=2&&!Array.isArray(h[0])&&!Array.isArray(h[1]))return h;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Qb(h){if(Array.isArray(h))return h;if(h.type==="Feature"){if(h.geometry!==null)return h.geometry.coordinates}else if(h.coordinates)return h.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function BI(h,e,r){r===void 0&&(r={});var a;r.final?a=e1(Xs(e),Xs(h)):a=e1(Xs(h),Xs(e));var l=a>180?-(360-a):a;return l}function e1(h,e){var r=tl(h[1]),a=tl(e[1]),l=tl(e[0]-h[0]);l>Math.PI&&(l-=2*Math.PI),l<-Math.PI&&(l+=2*Math.PI);var o=Math.log(Math.tan(a/2+Math.PI/4)/Math.tan(r/2+Math.PI/4)),g=Math.atan2(l,o);return(Kb(g)+360)%360}var t1=BI;function NI(h,e,r){r===void 0&&(r={});var a=Xs(h),l=Xs(e);l[0]+=l[0]-a[0]>180?-360:a[0]-l[0]>180?360:0;var o=VI(a,l),g=Tp(o,"meters",r.units);return g}function VI(h,e,r){r=r===void 0?or:Number(r);var a=r,l=h[1]*Math.PI/180,o=e[1]*Math.PI/180,g=o-l,v=Math.abs(e[0]-h[0])*Math.PI/180;v>Math.PI&&(v-=2*Math.PI);var w=Math.log(Math.tan(o/2+Math.PI/4)/Math.tan(l/2+Math.PI/4)),T=Math.abs(w)>1e-11?g/w:Math.cos(l),S=Math.sqrt(g*g+T*T*v*v),k=S*a;return k}var i1=NI;function GI(h,e,r,a){a===void 0&&(a={});var l=e<0,o=Tp(Math.abs(e),a.units,"meters");l&&(o=-Math.abs(o));var g=Xs(h),v=jI(g,o,r);return v[0]+=v[0]-g[0]>180?-360:g[0]-v[0]>180?360:0,da(v,a.properties)}function jI(h,e,r,a){a=a===void 0?or:Number(a);var l=e/a,o=h[0]*Math.PI/180,g=tl(h[1]),v=tl(r),w=l*Math.cos(v),T=g+w;Math.abs(T)>Math.PI/2&&(T=T>0?Math.PI-T:-Math.PI-T);var S=Math.log(Math.tan(T/2+Math.PI/4)/Math.tan(g/2+Math.PI/4)),k=Math.abs(S)>1e-11?w/S:Math.cos(g),F=l*Math.sin(v)/k,j=o+F;return[(j*180/Math.PI+540)%360-180,T*180/Math.PI]}var r1=GI;function UI(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return n1(h);case"FeatureCollection":return $I(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Qy(h);default:throw new Error("unknown GeoJSON type")}}function n1(h){var e={type:"Feature"};return Object.keys(h).forEach(function(r){switch(r){case"type":case"properties":case"geometry":return;default:e[r]=h[r]}}),e.properties=s1(h.properties),e.geometry=Qy(h.geometry),e}function s1(h){var e={};return h&&Object.keys(h).forEach(function(r){var a=h[r];typeof a=="object"?a===null?e[r]=null:Array.isArray(a)?e[r]=a.map(function(l){return l}):e[r]=s1(a):e[r]=a}),e}function $I(h){var e={type:"FeatureCollection"};return Object.keys(h).forEach(function(r){switch(r){case"type":case"features":return;default:e[r]=h[r]}}),e.features=h.features.map(function(r){return n1(r)}),e}function Qy(h){var e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(function(r){return Qy(r)}),e):(e.coordinates=o1(h.coordinates),e)}function o1(h){var e=h;return typeof e[0]!="object"?e.slice():e.map(function(r){return o1(r)})}var a1=UI;function qI(h,e,r){if(r=r||{},!Jy(r))throw new Error("options is invalid");var a=r.pivot,l=r.mutate;if(!h)throw new Error("geojson is required");if(e==null||isNaN(e))throw new Error("angle is required");return e===0||(a||(a=Jb(h)),(l===!1||l===void 0)&&(h=a1(h)),_u(h,function(o){var g=t1(a,o),v=g+e,w=i1(a,o),T=Qb(r1(a,w,v));o[0]=T[0],o[1]=T[1]})),h}var e_=qI;var WI=(h,e=1)=>{let{width:r,height:a}=h.getCanvas(),l=h.unproject({x:0,y:0}),o=h.unproject({x:0,y:a/e}),g=h.unproject({x:r/e,y:a/e}),v=h.unproject({x:r/e,y:0});return[[l.lng,l.lat],[v.lng,v.lat],[g.lng,g.lat],[o.lng,o.lat]]},Mp=WI;var ZI=h=>{let e=h.getBounds().toArray(),r=yr(e[0]),a=yr(e[1]),l=[...r,...a],{width:o,height:g}=h.getCanvas(),v=$i(l)/o,w=ln(l)/g;return Math.max(v,w)},l1=ZI;var XI=h=>Rh(h.toArray().flat(),"EPSG:4326","EPSG:3857"),t_=XI;var i_=class extends wp(Ep){constructor(e={}){let r=document.createElement("canvas");super({canvas:r,...e}),this.source={id:this.id,type:"canvas",canvas:this.canvas,coordinates:[[0,0],[1,1],[2,2],[0,0]],animate:!0,attribution:e.attribution?.join(", "),loaded:!0},this.layer={id:`${this.id}-raster`,type:"raster",source:this.id,layout:{visibility:"visible"},paint:{"raster-opacity":1,"raster-fade-duration":0,"raster-resampling":"nearest"}},this.onLoad=this.onLoad.bind(this),this.onMove=this.onMove.bind(this),this.onMoveEnd=this.onMoveEnd.bind(this),this.onZoomEnd=this.onZoomEnd.bind(this)}onAdd(e,r){super.onAdd(e,r),e.isStyleLoaded()&&this.onLoad(),e.on("load",this.onLoad)}onRemove(e,r){e.off("load",this.onLoad),e.getLayer(this.layer.id)&&e.removeLayer(this.layer.id),e.getSource(this.id)&&e.removeSource(this.id),super.onRemove(e,r)}onLoad(){this.map.getSource(this.id)||this.map.addSource(this.id,this.source),this.map.getLayer(this.layer.id)||this.map.addLayer(this.layer,this.id),this.start()}start(){super.start(),this.map.on("move",this.onMove),this.map.on("moveend",this.onMoveEnd),this.map.on("zoomend",this.onZoomEnd)}stop(){super.stop(),this.map?.off("move",this.onMove),this.map?.off("moveend",this.onMoveEnd),this.map?.off("zoomend",this.onZoomEnd)}renderTrajectories(e=!1){if(!this.map)return;this.pixelRatio||(this.pixelRatio=1);let{width:r,height:a}=this.map.getCanvas(),l=this.map.getCenter(),o=this.map.unproject({x:0,y:a/this.pixelRatio}),g=this.map.unproject({x:r/this.pixelRatio,y:0}),v=e_(da([o.lng,o.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,w=e_(da([g.lng,g.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,T=[...yr(v),...yr(w)],S=$i(T)/(r/this.pixelRatio),k=ln(T)/(a/this.pixelRatio),F=Math.max(S,k),j={size:[r/this.pixelRatio,a/this.pixelRatio],center:yr([l.lng,l.lat]),extent:T,resolution:F,zoom:this.map.getZoom()-1,rotation:-(this.map.getBearing()*Math.PI)/180,pixelRatio:this.pixelRatio};super.renderTrajectories(j,e)}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getZoom())}purgeTrajectory(e,r,a){return super.purgeTrajectory(e,r||t_(this.map.getBounds()),a||Math.floor(this.map.getZoom()-1))}setBbox(e,r){super.setBbox(e||t_(this.map.getBounds()),r||this.map.getZoom()-1)}renderTrajectoriesInternal(e,r=!1){let a=super.renderTrajectoriesInternal(e,r);if(a&&this.map.style){let l=Mp(this.map,this.pixelRatio),o=this.map.getSource(this.id);o&&o.setCoordinates(l)}return a}onMove(){this.renderTrajectories()}onMoveEnd(){this.renderTrajectories(),this.isUpdateBboxOnMoveEnd&&this.setBbox()}},c1=i_;var r_={ol:Cp,maplibre:Ap};typeof window<"u"&&(window.mbt=r_);var P6=r_;})();
|
|
586
586
|
/*! Bundled license information:
|
|
587
587
|
|
|
588
588
|
maplibre-gl/dist/maplibre-gl.js:
|