mobility-toolbox-js 3.0.0-beta.16 → 3.0.0-beta.17

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.min.js CHANGED
@@ -582,7 +582,7 @@ uniform ${D} ${O} u_${G};
582
582
  `||T===C){o=Math.max(o,_),l.push(_),_=0,v+=w;continue}let F=e[T+1]||h.font,q=yp(F,L);n.push(q),_+=q;let K=ZS(F);a.push(K),w=Math.max(w,K)}return{width:o,height:v,widths:n,heights:a,lineWidths:l}}function Yv(h,e,n,a,l,o,_,v,w,T,C){h.save(),n!==1&&(h.globalAlpha===void 0?h.globalAlpha=L=>L.globalAlpha*=n:h.globalAlpha*=n),e&&h.transform.apply(h,e),a.contextInstructions?(h.translate(w,T),h.scale(C[0],C[1]),HS(a,h)):C[0]<0||C[1]<0?(h.translate(w,T),h.scale(C[0],C[1]),h.drawImage(a,l,o,_,v,0,0,_,v)):h.drawImage(a,l,o,_,v,w,T,_*C[0],v*C[1]),h.restore()}function HS(h,e){let n=h.contextInstructions;for(let a=0,l=n.length;a<l;a+=2)Array.isArray(n[a+1])?e[n[a]].apply(e,n[a+1]):e[n[a]]=n[a+1]}var $g=class h extends gp{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()?Mt.LOADING:Mt.LOADED,this.imageState_===Mt.LOADING&&this.ready().then(()=>this.imageState_=Mt.LOADED),this.render()}clone(){let e=this.getScale(),n=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 n.setOpacity(this.getOpacity()),n}getAnchor(){let e=this.size_,n=this.getDisplacement(),a=this.getScaleArray();return[e[0]/2-n[0]/a[0],e[1]/2+n[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 n=this.canvases_[e];if(!n){let a=this.renderOptions_,l=Ni(a.size*e,a.size*e);this.draw_(a,l,e),n=l.canvas,this.canvases_[e]=n}return n}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,n,a){if(n===0||this.points_===1/0||e!=="bevel"&&e!=="miter")return n;let l=this.radius_,o=this.radius2_===void 0?l:this.radius2_;if(l<o){let xe=l;l=o,o=xe}let _=this.radius2_===void 0?this.points_:this.points_*2,v=2*Math.PI/_,w=o*Math.sin(v),T=Math.sqrt(o*o-w*w),C=l-T,L=Math.sqrt(w*w+C*C),F=L/w;if(e==="miter"&&F<=a)return F*n;let q=n/2/F,K=n/2*(C/L),W=Math.sqrt((l+q)*(l+q)+K*K)-l;if(this.radius2_===void 0||e==="bevel")return W*2;let H=l*Math.sin(v),se=Math.sqrt(l*l-H*H),ge=o-se,fe=Math.sqrt(H*H+ge*ge)/H;if(fe<=a){let xe=fe*n/2-o-l;return 2*Math.max(W,xe)}return W*2}createRenderOptions(){let e=Us,n=qs,a=0,l=null,o=0,_,v=0;this.stroke_&&(_=vn(this.stroke_.getColor()??Io),v=this.stroke_.getWidth()??Eo,l=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset()??0,n=this.stroke_.getLineJoin()??qs,e=this.stroke_.getLineCap()??Us,a=this.stroke_.getMiterLimit()??So);let w=this.calculateLineJoinSize_(n,v,a),T=Math.max(this.radius_,this.radius2_||0),C=Math.ceil(2*T+w);return{strokeStyle:_,strokeWidth:v,size:C,lineCap:e,lineDash:l,lineDashOffset:o,lineJoin:n,miterLimit:a}}render(){this.renderOptions_=this.createRenderOptions();let e=this.renderOptions_.size;this.canvases_={},this.hitDetectionCanvas_=null,this.size_=[e,e]}draw_(e,n,a){if(n.scale(a,a),n.translate(e.size/2,e.size/2),this.createPath_(n),this.fill_){let l=this.fill_.getColor();l===null&&(l=tr),n.fillStyle=vn(l),n.fill()}e.strokeStyle&&(n.strokeStyle=e.strokeStyle,n.lineWidth=e.strokeWidth,e.lineDash&&(n.setLineDash(e.lineDash),n.lineDashOffset=e.lineDashOffset),n.lineCap=e.lineCap,n.lineJoin=e.lineJoin,n.miterLimit=e.miterLimit,n.stroke())}createHitDetectionCanvas_(e){let n;if(this.fill_){let a=this.fill_.getColor(),l=0;typeof a=="string"&&(a=wo(a)),a===null?l=1:Array.isArray(a)&&(l=a.length===4?a[3]:1),l===0&&(n=Ni(e.size,e.size),this.drawHitDetectionCanvas_(e,n))}return n?n.canvas:this.getImage(1)}createPath_(e){let n=this.points_,a=this.radius_;if(n===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&&(n*=2);let o=this.angle_-Math.PI/2,_=2*Math.PI/n;for(let v=0;v<n;v++){let w=o+v*_,T=v%2===0?a:l;e.lineTo(T*Math.cos(w),T*Math.sin(w))}e.closePath()}}drawHitDetectionCanvas_(e,n){n.translate(e.size/2,e.size/2),this.createPath_(n),n.fillStyle=tr,n.fill(),e.strokeStyle&&(n.strokeStyle=e.strokeStyle,n.lineWidth=e.strokeWidth,e.lineDash&&(n.setLineDash(e.lineDash),n.lineDashOffset=e.lineDashOffset),n.lineJoin=e.lineJoin,n.miterLimit=e.miterLimit,n.stroke())}ready(){return this.fill_?this.fill_.ready():Promise.resolve()}},xp=$g;var Zg=class h extends xp{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(),n=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 n.setOpacity(this.getOpacity()),n}setRadius(e){this.radius_=e,this.render()}},Sn=Zg;var da=class h{constructor(e){e=e||{},this.geometry_=null,this.geometryFunction_=Kv,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(n){return n.get(e)}:e?e!==void 0&&(this.geometryFunction_=function(){return e}):this.geometryFunction_=Kv,this.geometry_=e}setZIndex(e){this.zIndex_=e}};function Jv(h){let e;if(typeof h=="function")e=h;else{let n;Array.isArray(h)?n=h:(ri(typeof h.getZIndex=="function","Expected an `Style` or an array of `Style`"),n=[h]),e=function(){return n}}return e}var Hg=null;function Qv(h,e){if(!Hg){let n=new Pr({color:"rgba(255,255,255,0.4)"}),a=new er({color:"#3399CC",width:1.25});Hg=[new da({image:new Sn({fill:n,stroke:a,radius:5}),fill:n,stroke:a})]}return Hg}function eb(){let h={},e=[255,255,255,1],n=[0,153,255,1],a=3;return h.Polygon=[new da({fill:new Pr({color:[255,255,255,.5]})})],h.MultiPolygon=h.Polygon,h.LineString=[new da({stroke:new er({color:e,width:a+2})}),new da({stroke:new er({color:n,width:a})})],h.MultiLineString=h.LineString,h.Circle=h.Polygon.concat(h.LineString),h.Point=[new da({image:new Sn({radius:a*2,fill:new Pr({color:n}),stroke:new er({color:e,width:a/2})}),zIndex:1/0})],h.MultiPoint=h.Point,h.GeometryCollection=h.Polygon.concat(h.LineString,h.Point),h}function Kv(h){return h.getGeometry()}var Rr=da;var XS="#333",Xg=class h{constructor(e){e=e||{},this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.scaleArray_=ca(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 Pr({color:XS}),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_=ca(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}},tb=Xg;var fb=Os(Jg(),1);function ib(h,e,n,a){return n!==void 0&&a!==void 0?[n/h,a/e]:n!==void 0?n/h:a!==void 0?a/e:1}var Qg=class h extends gp{constructor(e){e=e||{};let n=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:n,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 _=e.img!==void 0?e.img:null,v=e.src;ri(!(v!==void 0&&_),"`image` and `src` cannot be provided at the same time"),(v===void 0||v.length===0)&&_&&(v=_.src||Vt(_)),ri(v!==void 0&&v.length>0,"A defined and non-empty `src` or `image` must be provided"),ri(!((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=Mt.IDLE:_!==void 0&&(_ instanceof HTMLImageElement?_.complete?w=_.src?Mt.LOADED:Mt.IDLE:w=Mt.LOADING:w=Mt.LOADED),this.color_=e.color!==void 0?wo(e.color):null,this.iconImage_=oc(_,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,C;if(e.size)[T,C]=e.size;else{let L=this.getImage(1);if(L.width&&L.height)T=L.width,C=L.height;else if(L instanceof HTMLImageElement){this.initialOptions_=e;let F=()=>{if(this.unlistenImageChange(F),!this.initialOptions_)return;let q=this.iconImage_.getSize();this.setScale(ib(q[0],q[1],e.width,e.height))};this.listenImageChange(F);return}}T!==void 0&&this.setScale(ib(T,C,e.width,e.height))}}clone(){let e,n,a;return this.initialOptions_?(n=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:n,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 n=this.getDisplacement(),a=this.getScaleArray();return[e[0]-n[0]/a[0],e[1]+n[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 n=this.getSize(),a=this.iconImage_.getSize();if(!n||!a)return null;e=e.slice(),(this.offsetOrigin_=="top-right"||this.offsetOrigin_=="bottom-right")&&(e[0]=a[0]-n[0]-e[0]),(this.offsetOrigin_=="bottom-left"||this.offsetOrigin_=="bottom-right")&&(e[1]=a[1]-n[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()==Mt.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()==Mt.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()}},hu=Qg;var lc=0,cc=0,wi=1<<lc++,ut=1<<lc++,In=1<<lc++,Xi=1<<lc++,Ws=1<<lc++,Ur=Math.pow(2,lc)-1,nb={[wi]:"boolean",[ut]:"number",[In]:"string",[Xi]:"color",[Ws]:"number[]"},YS=Object.keys(nb).map(Number).sort(fs);function Lr(h){let e=[];for(let n of YS)KS(h,n)&&e.push(nb[n]);return e.length===0?"untyped":e.length<3?e.join(" or "):e.slice(0,-1).join(", ")+", or "+e[e.length-1]}function KS(h,e){return(h&e)===e}function Is(h,e){return!!(h&e)}function vp(h,e){return h===e}var Ss=class{constructor(e,n){this.type=e,this.value=n}},ey=class{constructor(e,n,...a){this.type=e,this.operator=n,this.args=a}};function ty(){return{variables:new Set,properties:new Set,featureId:!1,geometryType:!1,style:{}}}function JS(h){switch(h){case"string":return In;case"color":return Xi;case"number":return ut;case"boolean":return wi;case"number[]":return Ws;default:throw new Error(`Unrecognized type hint: ${h}`)}}function Jt(h,e,n){switch(typeof h){case"boolean":return new Ss(wi,h);case"number":return new Ss(ut,h);case"string":{let l=In;return qv(h)&&(l|=Xi),vp(l&n,cc)||(l&=n),new Ss(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 hI(h,e,n);for(let l of h)if(typeof l!="number")throw new Error("Expected an array of numbers");let a=Ws;return(h.length===3||h.length===4)&&(a|=Xi),n&&(a&=n),new Ss(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",ToString:"to-string"},QS={[Fe.Get]:Lt(([h,e])=>e!==void 0?JS(e.value):Ur,Bt(1,2),eI),[Fe.Var]:Lt(([h])=>h.type,Bt(1,1),tI),[Fe.Id]:Lt(ut|In,uu,iI),[Fe.Concat]:Lt(In,Bt(2,1/0),Wt(Ur)),[Fe.GeometryType]:Lt(In,uu,rI),[Fe.Resolution]:Lt(ut,uu),[Fe.Zoom]:Lt(ut,uu),[Fe.Time]:Lt(ut,uu),[Fe.Any]:Lt(wi,Bt(2,1/0),Wt(wi)),[Fe.All]:Lt(wi,Bt(2,1/0),Wt(wi)),[Fe.Not]:Lt(wi,Bt(1,1),Wt(wi)),[Fe.Equal]:Lt(wi,Bt(2,2),Wt(Ur),pa),[Fe.NotEqual]:Lt(wi,Bt(2,2),Wt(Ur),pa),[Fe.GreaterThan]:Lt(wi,Bt(2,2),Wt(Ur),pa),[Fe.GreaterThanOrEqualTo]:Lt(wi,Bt(2,2),Wt(Ur),pa),[Fe.LessThan]:Lt(wi,Bt(2,2),Wt(Ur),pa),[Fe.LessThanOrEqualTo]:Lt(wi,Bt(2,2),Wt(Ur),pa),[Fe.Multiply]:Lt(h=>{let e=ut|Xi;for(let n=0;n<h.length;n++)e&=h[n].type;return e},Bt(2,1/0),Wt(ut|Xi),pa),[Fe.Coalesce]:Lt(h=>{let e=Ur;for(let n=1;n<h.length;n+=2)e&=h[n].type;return e&=h[h.length-1].type,e},Bt(2,1/0),Wt(Ur),pa),[Fe.Divide]:Lt(ut,Bt(2,2),Wt(ut)),[Fe.Add]:Lt(ut,Bt(2,1/0),Wt(ut)),[Fe.Subtract]:Lt(ut,Bt(2,2),Wt(ut)),[Fe.Clamp]:Lt(ut,Bt(3,3),Wt(ut)),[Fe.Mod]:Lt(ut,Bt(2,2),Wt(ut)),[Fe.Pow]:Lt(ut,Bt(2,2),Wt(ut)),[Fe.Abs]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Floor]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Ceil]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Round]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Sin]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Cos]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Atan]:Lt(ut,Bt(1,2),Wt(ut)),[Fe.Sqrt]:Lt(ut,Bt(1,1),Wt(ut)),[Fe.Match]:Lt(h=>{let e=Ur;for(let n=2;n<h.length;n+=2)e&=h[n].type;return e&=h[h.length-1].type,e},Bt(4,1/0),rb,sI),[Fe.Between]:Lt(wi,Bt(3,3),Wt(ut)),[Fe.Interpolate]:Lt(h=>{let e=Xi|ut;for(let n=3;n<h.length;n+=2)e&=h[n].type;return e},Bt(6,1/0),rb,oI),[Fe.Case]:Lt(h=>{let e=Ur;for(let n=1;n<h.length;n+=2)e&=h[n].type;return e&=h[h.length-1].type,e},Bt(3,1/0),nI,aI),[Fe.In]:Lt(wi,Bt(2,2),lI),[Fe.Number]:Lt(ut,Bt(1,1/0),Wt(Ur)),[Fe.String]:Lt(In,Bt(1,1/0),Wt(Ur)),[Fe.Array]:Lt(h=>h.length===3||h.length===4?Ws|Xi:Ws,Bt(1,1/0),Wt(ut)),[Fe.Color]:Lt(Xi,Bt(1,4),Wt(ut)),[Fe.Band]:Lt(ut,Bt(1,3),Wt(ut)),[Fe.Palette]:Lt(Xi,Bt(2,2),cI),[Fe.ToString]:Lt(In,Bt(1,1),Wt(wi|ut|In|Xi))};function eI(h,e){let n=Jt(h[1],e);if(!(n instanceof Ss))throw new Error("Expected a literal argument for get operation");if(typeof n.value!="string")throw new Error("Expected a string argument for get operation");if(e.properties.add(n.value),h.length===3){let a=Jt(h[2],e);return[n,a]}return[n]}function tI(h,e,n,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 Ss(Ur,l)];let o=e.style.variables[l],_=Jt(o,e);if(_.value=l,a&&!Is(a,_.type))throw new Error(`The variable ${l} has type ${Lr(_.type)} but the following type was expected: ${Lr(a)}`);return[_]}function iI(h,e){e.featureId=!0}function rI(h,e){e.geometryType=!0}function uu(h,e){let n=h[0];if(h.length!==1)throw new Error(`Expected no arguments for ${n} operation`);return[]}function Bt(h,e){return function(n,a){let l=n[0],o=n.length-1;if(h===e){if(o!==h){let _=h===1?"":"s";throw new Error(`Expected ${h} argument${_} for ${l}, got ${o}`)}}else if(o<h||o>e){let _=e===1/0?`${h} or more`:`${h} to ${e}`;throw new Error(`Expected ${_} arguments for ${l}, got ${o}`)}}}function Wt(h){return function(e,n){let a=e[0],l=e.length-1,o=new Array(l);for(let _=0;_<l;++_){let v=Jt(e[_+1],n);if(!Is(h,v.type)){let w=Lr(h),T=Lr(v.type);throw new Error(`Unexpected type for argument ${_} of ${a} operation, got ${w} but expected ${T}`)}v.type&=h,o[_]=v}return o}}function pa(h,e,n){let a=h[0],l=h.length-1,o=Ur;for(let v=0;v<n.length;++v)o&=n[v].type;if(o===cc)throw new Error(`No common type could be found for arguments of ${a} operation`);let _=new Array(l);for(let v=0;v<l;++v)_[v]=Jt(h[v+1],e,o);return _}function nI(h,e){let n=h[0],a=h.length-1;if(a%2===0)throw new Error(`An odd amount of arguments was expected for operation ${n}, got ${JSON.stringify(a)} instead`)}function rb(h,e){let n=h[0],a=h.length-1;if(a%2===1)throw new Error(`An even amount of arguments was expected for operation ${n}, got ${JSON.stringify(a)} instead`)}function sI(h,e,n,a){let l=h.length-1,_=Jt(h[1],e).type,v=Jt(h[h.length-1],e),w=a!==void 0?a&v.type:v.type,T=new Array(l-2);for(let L=0;L<l-2;L+=2){let F=Jt(h[L+2],e),q=Jt(h[L+3],e);_&=F.type,w&=q.type,T[L]=F,T[L+1]=q}let C=In|ut|wi;if(!Is(C,_))throw new Error(`Expected an input of type ${Lr(C)} for the interpolate operation, got ${Lr(_)} instead`);if(vp(w,cc))throw new Error("Could not find a common output type for the following match operation: "+JSON.stringify(h));for(let L=0;L<l-2;L+=2){let F=Jt(h[L+2],e,_),q=Jt(h[L+3],e,w);T[L]=F,T[L+1]=q}return[Jt(h[1],e,_),...T,Jt(h[h.length-1],e,w)]}function oI(h,e,n,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=Jt(o,e);let _=Jt(h[2],e);if(!Is(ut,_.type))throw new Error(`Expected an input of type number for the interpolate operation, got ${Lr(_.type)} instead`);_=Jt(h[2],e,ut);let v=new Array(h.length-3);for(let w=0;w<v.length;w+=2){let T=Jt(h[w+3],e);if(!Is(ut,T.type))throw new Error(`Expected all stop input values in the interpolate operation to be of type number, got ${Lr(T.type)} at position ${w+2} instead`);let C=Jt(h[w+4],e);if(!Is(ut|Xi,C.type))throw new Error(`Expected all stop output values in the interpolate operation to be a number or color, got ${Lr(C.type)} at position ${w+3} instead`);T=Jt(h[w+3],e,ut),C=Jt(h[w+4],e,ut|Xi),v[w]=T,v[w+1]=C}return[o,_,...v]}function aI(h,e,n,a){let l=Jt(h[h.length-1],e),o=a!==void 0?a&l.type:l.type,_=new Array(h.length-1);for(let v=0;v<_.length-1;v+=2){let w=Jt(h[v+1],e),T=Jt(h[v+2],e);if(!Is(wi,w.type))throw new Error(`Expected all conditions in the case operation to be of type boolean, got ${Lr(w.type)} at position ${v} instead`);o&=T.type,_[v]=w,_[v+1]=T}if(vp(o,cc))throw new Error("Could not find a common output type for the following case operation: "+JSON.stringify(h));for(let v=0;v<_.length-1;v+=2)_[v+1]=Jt(h[v+2],e,o);return _[_.length-1]=Jt(h[h.length-1],e,o),_}function lI(h,e){let n=h[2];if(!Array.isArray(n))throw new Error('The "in" operator was provided a literal value which was not an array as second argument.');if(typeof n[0]=="string"){if(n[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(n[1]))throw new Error('The "in" operator was provided a literal value which was not an array as second argument.');n=n[1]}let a=In|ut,l=new Array(n.length);for(let _=0;_<l.length;_++){let v=Jt(n[_],e);a&=v.type,l[_]=v}if(vp(a,cc))throw new Error("Could not find a common type for the following in operation: "+JSON.stringify(h));return[Jt(h[1],e,a),...l]}function cI(h,e){let n=Jt(h[1],e,ut);if(n.type!==ut)throw new Error(`The first argument of palette must be an number, got ${Lr(n.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 _=Jt(a[o],e,Xi);if(!(_ instanceof Ss))throw new Error(`The palette color at index ${o} must be a literal value`);if(!Is(_.type,Xi))throw new Error(`The palette color at index ${o} should be of type color, got ${Lr(_.type)} instead`);l[o]=_}return[n,...l]}function Lt(h,...e){return function(n,a,l){let o=n[0],_=[];for(let w=0;w<e.length;w++)_=e[w](n,a,_,l)||_;let v=typeof h=="function"?h(_):h;if(l!==void 0){if(!Is(v,l))throw new Error(`The following expression was expected to return ${Lr(l)}, but returns ${Lr(v)} instead: ${JSON.stringify(n)}`);v&=l}if(v===cc)throw new Error(`No matching type was found for the following expression: ${JSON.stringify(n)}`);return new ey(v,o,..._)}}function hI(h,e,n){let a=h[0],l=QS[a];if(!l)throw new Error(`Unknown operator: ${a}`);return l(h,e,n)}function iy(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 iy(h.getGeometries()[0]);default:return""}}function ry(){return{variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""}}function $s(h,e,n){let a=Jt(h,n);if(!Is(e,a.type)){let l=Lr(e),o=Lr(a.type);throw new Error(`Expected expression to be of type ${l}, got ${o}`)}return Cs(a,n)}function Cs(h,e){if(h instanceof Ss){if(h.type===Xi&&typeof h.value=="string"){let a=mp(h.value);return function(){return a}}return function(){return h.value}}let n=h.operator;switch(n){case Fe.Number:case Fe.String:case Fe.Coalesce:return uI(h,e);case Fe.Get:case Fe.Var:return dI(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=>Cs(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.Between:case Fe.In:case Fe.Not:return fI(h,e);case Fe.Equal:case Fe.NotEqual:case Fe.LessThan:case Fe.LessThanOrEqualTo:case Fe.GreaterThan:case Fe.GreaterThanOrEqualTo:return pI(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 mI(h,e);case Fe.Case:return gI(h,e);case Fe.Match:return yI(h,e);case Fe.Interpolate:return _I(h,e);case Fe.ToString:return xI(h,e);default:throw new Error(`Unsupported operator ${n}`)}}function uI(h,e){let n=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Cs(h.args[o],e);switch(n){case Fe.Coalesce:return o=>{for(let _=0;_<a;++_){let v=l[_](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 _=0;_<a;++_){let v=l[_](o);if(typeof v===n)return v}throw new Error(`Expected one of the values to be a ${n}`)};default:throw new Error(`Unsupported assertion operator ${n}`)}}function dI(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 pI(h,e){let n=h.operator,a=Cs(h.args[0],e),l=Cs(h.args[1],e);switch(n){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 ${n}`)}}function fI(h,e){let n=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Cs(h.args[o],e);switch(n){case Fe.Any:return o=>{for(let _=0;_<a;++_)if(l[_](o))return!0;return!1};case Fe.All:return o=>{for(let _=0;_<a;++_)if(!l[_](o))return!1;return!0};case Fe.Between:return o=>{let _=l[0](o),v=l[1](o),w=l[2](o);return _>=v&&_<=w};case Fe.In:return o=>{let _=l[0](o);for(let v=1;v<a;++v)if(_===l[v](o))return!0;return!1};case Fe.Not:return o=>!l[0](o);default:throw new Error(`Unsupported logical operator ${n}`)}}function mI(h,e){let n=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Cs(h.args[o],e);switch(n){case Fe.Multiply:return o=>{let _=1;for(let v=0;v<a;++v)_*=l[v](o);return _};case Fe.Divide:return o=>l[0](o)/l[1](o);case Fe.Add:return o=>{let _=0;for(let v=0;v<a;++v)_+=l[v](o);return _};case Fe.Subtract:return o=>l[0](o)-l[1](o);case Fe.Clamp:return o=>{let _=l[0](o),v=l[1](o);if(_<v)return v;let w=l[2](o);return _>w?w:_};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 ${n}`)}}function gI(h,e){let n=h.args.length,a=new Array(n);for(let l=0;l<n;++l)a[l]=Cs(h.args[l],e);return l=>{for(let o=0;o<n-1;o+=2)if(a[o](l))return a[o+1](l);return a[n-1](l)}}function yI(h,e){let n=h.args.length,a=new Array(n);for(let l=0;l<n;++l)a[l]=Cs(h.args[l],e);return l=>{let o=a[0](l);for(let _=1;_<n;_+=2)if(o===a[_](l))return a[_+1](l);return a[n-1](l)}}function _I(h,e){let n=h.args.length,a=new Array(n);for(let l=0;l<n;++l)a[l]=Cs(h.args[l],e);return l=>{let o=a[0](l),_=a[1](l),v,w;for(let T=2;T<n;T+=2){let C=a[T](l),L=a[T+1](l),F=Array.isArray(L);if(F&&(L=jv(L)),C>=_)return T===2?L:F?vI(o,_,v,w,C,L):du(o,_,v,w,C,L);v=C,w=L}return w}}function xI(h,e){let n=h.operator,a=h.args.length,l=new Array(a);for(let o=0;o<a;++o)l[o]=Cs(h.args[o],e);switch(n){case Fe.ToString:return o=>{let _=l[0](o);return h.args[0].type===Xi?lu(_):_.toString()};default:throw new Error(`Unsupported convert operator ${n}`)}}function du(h,e,n,a,l,o){let _=l-n;if(_===0)return a;let v=e-n,w=h===1?v/_:(Math.pow(h,v)-1)/(Math.pow(h,_)-1);return a+w*(o-a)}function vI(h,e,n,a,l,o){if(l-n===0)return a;let v=Dg(a),w=Dg(o),T=w[2]-v[2];T>180?T-=360:T<-180&&(T+=360);let C=[du(h,e,n,v[0],l,w[0]),du(h,e,n,v[1],l,w[1]),v[2]+du(h,e,n,0,l,T),du(h,e,n,a[3],l,o[3])];return Fg(Uv(C))}function bI(h){return!0}function lb(h){let e=ty(),n=wI(h,e),a=ry();return function(l,o){if(a.properties=l.getPropertiesInternal(),a.resolution=o,e.featureId){let _=l.getId();_!==void 0?a.featureId=_:a.featureId=null}return e.geometryType&&(a.geometryType=iy(l.getGeometry())),n(a)}}function oy(h){let e=ty(),n=h.length,a=new Array(n);for(let _=0;_<n;++_)a[_]=ny(h[_],e);let l=ry(),o=new Array(n);return function(_,v){if(l.properties=_.getPropertiesInternal(),l.resolution=v,e.featureId){let T=_.getId();T!==void 0?l.featureId=T:l.featureId=null}let w=0;for(let T=0;T<n;++T){let C=a[T](l);C&&(o[w]=C,w+=1)}return o.length=w,o}}function wI(h,e){let n=h.length,a=new Array(n);for(let l=0;l<n;++l){let o=h[l],_="filter"in o?$s(o.filter,wi,e):bI,v;if(Array.isArray(o.style)){let w=o.style.length;v=new Array(w);for(let T=0;T<w;++T)v[T]=ny(o.style[T],e)}else v=[ny(o.style,e)];a[l]={filter:_,styles:v}}return function(l){let o=[],_=!1;for(let v=0;v<n;++v){let w=a[v].filter;if(w(l)&&!(h[v].else&&_)){_=!0;for(let T of a[v].styles){let C=T(l);C&&o.push(C)}}}return o}}function ny(h,e){let n=pu(h,"",e),a=fu(h,"",e),l=SI(h,e),o=II(h,e),_=Cn(h,"z-index",e);if(!n&&!a&&!l&&!o&&!Bn(h))throw new Error("No fill, stroke, point, or text symbolizer properties in style: "+JSON.stringify(h));let v=new Rr;return function(w){let T=!0;if(n){let C=n(w);C&&(T=!1),v.setFill(C)}if(a){let C=a(w);C&&(T=!1),v.setStroke(C)}if(l){let C=l(w);C&&(T=!1),v.setText(C)}if(o){let C=o(w);C&&(T=!1),v.setImage(C)}return _&&v.setZIndex(_(w)),T?null:v}}function pu(h,e,n){let a;if(e+"fill-pattern-src"in h?a=MI(h,e+"fill-",n):a=ay(h,e+"fill-color",n),!a)return null;let l=new Pr;return function(o){let _=a(o);return _==="none"?null:(l.setColor(_),l)}}function fu(h,e,n){let a=Cn(h,e+"stroke-width",n),l=ay(h,e+"stroke-color",n);if(!a&&!l)return null;let o=To(h,e+"stroke-line-cap",n),_=To(h,e+"stroke-line-join",n),v=cb(h,e+"stroke-line-dash",n),w=Cn(h,e+"stroke-line-dash-offset",n),T=Cn(h,e+"stroke-miter-limit",n),C=new er;return function(L){if(l){let F=l(L);if(F==="none")return null;C.setColor(F)}if(a&&C.setWidth(a(L)),o){let F=o(L);if(F!=="butt"&&F!=="round"&&F!=="square")throw new Error("Expected butt, round, or square line cap");C.setLineCap(F)}if(_){let F=_(L);if(F!=="bevel"&&F!=="round"&&F!=="miter")throw new Error("Expected bevel, round, or miter line join");C.setLineJoin(F)}return v&&C.setLineDash(v(L)),w&&C.setLineDashOffset(w(L)),T&&C.setMiterLimit(T(L)),C}}function SI(h,e){let n="text-",a=To(h,n+"value",e);if(!a)return null;let l=pu(h,n,e),o=pu(h,n+"background-",e),_=fu(h,n,e),v=fu(h,n+"background-",e),w=To(h,n+"font",e),T=Cn(h,n+"max-angle",e),C=Cn(h,n+"offset-x",e),L=Cn(h,n+"offset-y",e),F=mu(h,n+"overflow",e),q=To(h,n+"placement",e),K=Cn(h,n+"repeat",e),he=Sp(h,n+"scale",e),W=mu(h,n+"rotate-with-view",e),H=Cn(h,n+"rotation",e),se=To(h,n+"align",e),ge=To(h,n+"justify",e),_e=To(h,n+"baseline",e),fe=cb(h,n+"padding",e),xe=Ip(h,n+"declutter-mode"),Me=new tb({declutterMode:xe});return function(Re){if(Me.setText(a(Re)),l&&Me.setFill(l(Re)),o&&Me.setBackgroundFill(o(Re)),_&&Me.setStroke(_(Re)),v&&Me.setBackgroundStroke(v(Re)),w&&Me.setFont(w(Re)),T&&Me.setMaxAngle(T(Re)),C&&Me.setOffsetX(C(Re)),L&&Me.setOffsetY(L(Re)),F&&Me.setOverflow(F(Re)),q){let Ie=q(Re);if(Ie!=="point"&&Ie!=="line")throw new Error("Expected point or line for text-placement");Me.setPlacement(Ie)}if(K&&Me.setRepeat(K(Re)),he&&Me.setScale(he(Re)),W&&Me.setRotateWithView(W(Re)),H&&Me.setRotation(H(Re)),se){let Ie=se(Re);if(Ie!=="left"&&Ie!=="center"&&Ie!=="right"&&Ie!=="end"&&Ie!=="start")throw new Error("Expected left, right, center, start, or end for text-align");Me.setTextAlign(Ie)}if(ge){let Ie=ge(Re);if(Ie!=="left"&&Ie!=="right"&&Ie!=="center")throw new Error("Expected left, right, or center for text-justify");Me.setJustify(Ie)}if(_e){let Ie=_e(Re);if(Ie!=="bottom"&&Ie!=="top"&&Ie!=="middle"&&Ie!=="alphabetic"&&Ie!=="hanging")throw new Error("Expected bottom, top, middle, alphabetic, or hanging for text-baseline");Me.setTextBaseline(Ie)}return fe&&Me.setPadding(fe(Re)),Me}}function II(h,e){return"icon-src"in h?CI(h,e):"shape-points"in h?EI(h,e):"circle-radius"in h?TI(h,e):null}function CI(h,e){let n="icon-",a=n+"src",l=hb(h[a],a),o=bp(h,n+"anchor",e),_=Sp(h,n+"scale",e),v=Cn(h,n+"opacity",e),w=bp(h,n+"displacement",e),T=Cn(h,n+"rotation",e),C=mu(h,n+"rotate-with-view",e),L=ob(h,n+"anchor-origin"),F=ab(h,n+"anchor-x-units"),q=ab(h,n+"anchor-y-units"),K=LI(h,n+"color"),he=PI(h,n+"cross-origin"),W=RI(h,n+"offset"),H=ob(h,n+"offset-origin"),se=wp(h,n+"width"),ge=wp(h,n+"height"),_e=AI(h,n+"size"),fe=Ip(h,n+"declutter-mode"),xe=new hu({src:l,anchorOrigin:L,anchorXUnits:F,anchorYUnits:q,color:K,crossOrigin:he,offset:W,offsetOrigin:H,height:ge,width:se,size:_e,declutterMode:fe});return function(Me){return v&&xe.setOpacity(v(Me)),w&&xe.setDisplacement(w(Me)),T&&xe.setRotation(T(Me)),C&&xe.setRotateWithView(C(Me)),_&&xe.setScale(_(Me)),o&&xe.setAnchor(o(Me)),xe}}function EI(h,e){let n="shape-",a=n+"points",l=n+"radius",o=sy(h[a],a),_=sy(h[l],l),v=pu(h,n,e),w=fu(h,n,e),T=Sp(h,n+"scale",e),C=bp(h,n+"displacement",e),L=Cn(h,n+"rotation",e),F=mu(h,n+"rotate-with-view",e),q=wp(h,n+"radius2"),K=wp(h,n+"angle"),he=Ip(h,n+"declutter-mode"),W=new xp({points:o,radius:_,radius2:q,angle:K,declutterMode:he});return function(H){return v&&W.setFill(v(H)),w&&W.setStroke(w(H)),C&&W.setDisplacement(C(H)),L&&W.setRotation(L(H)),F&&W.setRotateWithView(F(H)),T&&W.setScale(T(H)),W}}function TI(h,e){let n="circle-",a=pu(h,n,e),l=fu(h,n,e),o=Cn(h,n+"radius",e),_=Sp(h,n+"scale",e),v=bp(h,n+"displacement",e),w=Cn(h,n+"rotation",e),T=mu(h,n+"rotate-with-view",e),C=Ip(h,n+"declutter-mode"),L=new Sn({radius:5,declutterMode:C});return function(F){return o&&L.setRadius(o(F)),a&&L.setFill(a(F)),l&&L.setStroke(l(F)),v&&L.setDisplacement(v(F)),w&&L.setRotation(w(F)),T&&L.setRotateWithView(T(F)),_&&L.setScale(_(F)),L}}function Cn(h,e,n){if(!(e in h))return;let a=$s(h[e],ut,n);return function(l){return sy(a(l),e)}}function To(h,e,n){if(!(e in h))return null;let a=$s(h[e],In,n);return function(l){return hb(a(l),e)}}function MI(h,e,n){let a=To(h,e+"pattern-src",n),l=sb(h,e+"pattern-offset",n),o=sb(h,e+"pattern-size",n),_=ay(h,e+"color",n);return function(v){return{src:a(v),offset:l&&l(v),size:o&&o(v),color:_&&_(v)}}}function mu(h,e,n){if(!(e in h))return null;let a=$s(h[e],wi,n);return function(l){let o=a(l);if(typeof o!="boolean")throw new Error(`Expected a boolean for ${e}`);return o}}function ay(h,e,n){if(!(e in h))return null;let a=$s(h[e],Xi|In,n);return function(l){return ub(a(l),e)}}function cb(h,e,n){if(!(e in h))return null;let a=$s(h[e],Ws,n);return function(l){return gu(a(l),e)}}function bp(h,e,n){if(!(e in h))return null;let a=$s(h[e],Ws,n);return function(l){let o=gu(a(l),e);if(o.length!==2)throw new Error(`Expected two numbers for ${e}`);return o}}function sb(h,e,n){if(!(e in h))return null;let a=$s(h[e],Ws,n);return function(l){return db(a(l),e)}}function Sp(h,e,n){if(!(e in h))return null;let a=$s(h[e],Ws|ut,n);return function(l){return kI(a(l),e)}}function wp(h,e){let n=h[e];if(n!==void 0){if(typeof n!="number")throw new Error(`Expected a number for ${e}`);return n}}function AI(h,e){let n=h[e];if(n!==void 0){if(typeof n=="number")return ca(n);if(!Array.isArray(n))throw new Error(`Expected a number or size array for ${e}`);if(n.length!==2||typeof n[0]!="number"||typeof n[1]!="number")throw new Error(`Expected a number or size array for ${e}`);return n}}function PI(h,e){let n=h[e];if(n!==void 0){if(typeof n!="string")throw new Error(`Expected a string for ${e}`);return n}}function ob(h,e){let n=h[e];if(n!==void 0){if(n!=="bottom-left"&&n!=="bottom-right"&&n!=="top-left"&&n!=="top-right")throw new Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${e}`);return n}}function ab(h,e){let n=h[e];if(n!==void 0){if(n!=="pixels"&&n!=="fraction")throw new Error(`Expected pixels or fraction for ${e}`);return n}}function RI(h,e){let n=h[e];if(n!==void 0)return gu(n,e)}function Ip(h,e){let n=h[e];if(n!==void 0){if(typeof n!="string")throw new Error(`Expected a string for ${e}`);if(n!=="declutter"&&n!=="obstacle"&&n!=="none")throw new Error(`Expected declutter, obstacle, or none for ${e}`);return n}}function LI(h,e){let n=h[e];if(n!==void 0)return ub(n,e)}function gu(h,e){if(!Array.isArray(h))throw new Error(`Expected an array for ${e}`);let n=h.length;for(let a=0;a<n;++a)if(typeof h[a]!="number")throw new Error(`Expected an array of numbers for ${e}`);return h}function hb(h,e){if(typeof h!="string")throw new Error(`Expected a string for ${e}`);return h}function sy(h,e){if(typeof h!="number")throw new Error(`Expected a number for ${e}`);return h}function ub(h,e){if(typeof h=="string")return h;let n=gu(h,e),a=n.length;if(a<3||a>4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return n}function db(h,e){let n=gu(h,e);if(n.length!==2)throw new Error(`Expected an array of two numbers for ${e}`);return n}function kI(h,e){return typeof h=="number"?h:db(h,e)}var pb={RENDER_ORDER:"renderOrder"},ly=class extends bs{constructor(e){e=e||{};let n=Object.assign({},e);delete n.style,delete n.renderBuffer,delete n.updateWhileAnimating,delete n.updateWhileInteracting,super(n),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(pb.RENDER_ORDER)}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(e,n){let a=this.getDeclutter();a in e.declutter||(e.declutter[a]=new fb.default(9)),this.getRenderer().renderDeclutter(e,n)}setRenderOrder(e){this.set(pb.RENDER_ORDER,e)}setStyle(e){this.style_=DI(e),this.styleFunction_=e===null?void 0:Jv(this.style_),this.changed()}};function DI(h){if(h===void 0)return Qv;if(!h)return null;if(typeof h=="function"||h instanceof Rr)return h;if(!Array.isArray(h))return oy([h]);if(h.length===0)return[];let e=h.length,n=h[0];if(n instanceof Rr){let l=new Array(e);for(let o=0;o<e;++o){let _=h[o];if(!(_ instanceof Rr))throw new Error("Expected a list of style instances");l[o]=_}return l}if("style"in n){let l=new Array(e);for(let o=0;o<e;++o){let _=h[o];if(!("style"in _))throw new Error("Expected a list of rules with a style property");l[o]=_}return lb(l)}return oy(h)}var mb=ly;var yu={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},_u=[yu.FILL],Zs=[yu.STROKE],Mo=[yu.BEGIN_PATH],cy=[yu.CLOSE_PATH],gt=yu;var hy=class{drawCustom(e,n,a,l,o){}drawGeometry(e){}setStyle(e){}drawCircle(e,n,a){}drawFeature(e,n,a){}drawGeometryCollection(e,n,a){}drawLineString(e,n,a){}drawMultiLineString(e,n,a){}drawMultiPoint(e,n,a){}drawMultiPolygon(e,n,a){}drawPoint(e,n,a){}drawPolygon(e,n,a){}drawText(e,n,a){}setFillStrokeStyle(e,n){}setImageStyle(e,n){}setTextStyle(e,n){}},Cp=hy;var uy=class extends Cp{constructor(e,n,a,l){super(),this.tolerance=e,this.maxExtent=n,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 n=this.pixelRatio;return n==1?e:e.map(function(a){return a*n})}appendFlatPointCoordinates(e,n){let a=this.getBufferedMaxExtent(),l=this.tmpCoordinate_,o=this.coordinates,_=o.length;for(let v=0,w=e.length;v<w;v+=n)l[0]=e[v],l[1]=e[v+1],yo(a,l)&&(o[_++]=l[0],o[_++]=l[1]);return _}appendFlatLineCoordinates(e,n,a,l,o,_){let v=this.coordinates,w=v.length,T=this.getBufferedMaxExtent();_&&(n+=l);let C=e[n],L=e[n+1],F=this.tmpCoordinate_,q=!0,K,he,W;for(K=n+l;K<a;K+=l)F[0]=e[K],F[1]=e[K+1],W=$d(T,F),W!==he?(q&&(v[w++]=C,v[w++]=L,q=!1),v[w++]=F[0],v[w++]=F[1]):W===$i.INTERSECTING?(v[w++]=F[0],v[w++]=F[1],q=!1):q=!0,C=F[0],L=F[1],he=W;return(o&&q||K===n+l)&&(v[w++]=C,v[w++]=L),w}drawCustomCoordinates_(e,n,a,l,o){for(let _=0,v=a.length;_<v;++_){let w=a[_],T=this.appendFlatLineCoordinates(e,n,w,l,!1,!1);o.push(T),n=w}return n}drawCustom(e,n,a,l,o){this.beginGeometry(e,n,o);let _=e.getType(),v=e.getStride(),w=this.coordinates.length,T,C,L,F,q;switch(_){case"MultiPolygon":T=e.getOrientedFlatCoordinates(),F=[];let K=e.getEndss();q=0;for(let he=0,W=K.length;he<W;++he){let H=[];q=this.drawCustomCoordinates_(T,q,K[he],v,H),F.push(H)}this.instructions.push([gt.CUSTOM,w,F,e,a,Zh,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,F,e,l||a,Zh,o]);break;case"Polygon":case"MultiLineString":L=[],T=_=="Polygon"?e.getOrientedFlatCoordinates():e.getFlatCoordinates(),q=this.drawCustomCoordinates_(T,0,e.getEnds(),v,L),this.instructions.push([gt.CUSTOM,w,L,e,a,oa,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,L,e,l||a,oa,o]);break;case"LineString":case"Circle":T=e.getFlatCoordinates(),C=this.appendFlatLineCoordinates(T,0,T.length,v,!1,!1),this.instructions.push([gt.CUSTOM,w,C,e,a,Qn,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,C,e,l||a,Qn,o]);break;case"MultiPoint":T=e.getFlatCoordinates(),C=this.appendFlatPointCoordinates(T,v),C>w&&(this.instructions.push([gt.CUSTOM,w,C,e,a,Qn,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,C,e,l||a,Qn,o]));break;case"Point":T=e.getFlatCoordinates(),this.coordinates.push(T[0],T[1]),C=this.coordinates.length,this.instructions.push([gt.CUSTOM,w,C,e,a,void 0,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,C,e,l||a,void 0,o]);break;default:}this.endGeometry(n)}beginGeometry(e,n,a){this.beginGeometryInstruction1_=[gt.BEGIN_GEOMETRY,n,0,e,a],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[gt.BEGIN_GEOMETRY,n,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 n,a=e.length,l,o,_=-1;for(n=0;n<a;++n)l=e[n],o=l[0],o==gt.END_GEOMETRY?_=n:o==gt.BEGIN_GEOMETRY&&(l[2]=n,Ix(this.hitDetectionInstructions,_,n),_=-1)}setFillStrokeStyle(e,n){let a=this.state;if(e){let l=e.getColor();a.fillPatternScale=l&&typeof l=="object"&&"src"in l?this.pixelRatio:1,a.fillStyle=vn(l||tr)}else a.fillStyle=void 0;if(n){let l=n.getColor();a.strokeStyle=vn(l||Io);let o=n.getLineCap();a.lineCap=o!==void 0?o:Us;let _=n.getLineDash();a.lineDash=_?_.slice():bn;let v=n.getLineDashOffset();a.lineDashOffset=v||wn;let w=n.getLineJoin();a.lineJoin=w!==void 0?w:qs;let T=n.getWidth();a.lineWidth=T!==void 0?T:Eo;let C=n.getMiterLimit();a.miterLimit=C!==void 0?C:So,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 n=e.fillStyle,a=[gt.SET_FILL_STYLE,n];return typeof n!="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,n){let a=e.fillStyle;(typeof a!="string"||e.currentFillStyle!=a)&&(a!==void 0&&this.instructions.push(n.call(this,e)),e.currentFillStyle=a)}updateStrokeStyle(e,n){let a=e.strokeStyle,l=e.lineCap,o=e.lineDash,_=e.lineDashOffset,v=e.lineJoin,w=e.lineWidth,T=e.miterLimit;(e.currentStrokeStyle!=a||e.currentLineCap!=l||o!=e.currentLineDash&&!pn(e.currentLineDash,o)||e.currentLineDashOffset!=_||e.currentLineJoin!=v||e.currentLineWidth!=w||e.currentMiterLimit!=T)&&(a!==void 0&&n.call(this,e),e.currentStrokeStyle=a,e.currentLineCap=l,e.currentLineDash=o,e.currentLineDashOffset=_,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 n=[gt.END_GEOMETRY,e];this.instructions.push(n),this.hitDetectionInstructions.push(n)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=Cx(this.maxExtent),this.maxLineWidth>0)){let e=this.resolution*(this.maxLineWidth+1)/2;fn(this.bufferedMaxExtent_,e,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}},Hs=uy;var dy=class extends Hs{constructor(e,n,a,l){super(e,n,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,n,a){if(!this.image_||this.maxExtent&&!yo(this.maxExtent,e.getFlatCoordinates()))return;this.beginGeometry(e,n,a);let l=e.getFlatCoordinates(),o=e.getStride(),_=this.coordinates.length,v=this.appendFlatPointCoordinates(l,o);this.instructions.push([gt.DRAW_IMAGE,_,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,_,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(n)}drawMultiPoint(e,n,a){if(!this.image_)return;this.beginGeometry(e,n,a);let l=e.getFlatCoordinates(),o=[];for(let w=0,T=l.length;w<T;w+=e.getStride())(!this.maxExtent||yo(this.maxExtent,l.slice(w,w+2)))&&o.push(l[w],l[w+1]);let _=this.coordinates.length,v=this.appendFlatPointCoordinates(o,2);this.instructions.push([gt.DRAW_IMAGE,_,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,_,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(n)}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,n){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_=n}},gb=dy;var py=class extends Hs{constructor(e,n,a,l){super(e,n,a,l)}drawFlatCoordinates_(e,n,a,l){let o=this.coordinates.length,_=this.appendFlatLineCoordinates(e,n,a,l,!1,!1),v=[gt.MOVE_TO_LINE_TO,o,_];return this.instructions.push(v),this.hitDetectionInstructions.push(v),a}drawLineString(e,n,a){let l=this.state,o=l.strokeStyle,_=l.lineWidth;if(o===void 0||_===void 0)return;this.updateStrokeStyle(l,this.applyStroke),this.beginGeometry(e,n,a),this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,bn,wn],Mo);let v=e.getFlatCoordinates(),w=e.getStride();this.drawFlatCoordinates_(v,0,v.length,w),this.hitDetectionInstructions.push(Zs),this.endGeometry(n)}drawMultiLineString(e,n,a){let l=this.state,o=l.strokeStyle,_=l.lineWidth;if(o===void 0||_===void 0)return;this.updateStrokeStyle(l,this.applyStroke),this.beginGeometry(e,n,a),this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,bn,wn],Mo);let v=e.getEnds(),w=e.getFlatCoordinates(),T=e.getStride(),C=0;for(let L=0,F=v.length;L<F;++L)C=this.drawFlatCoordinates_(w,C,v[L],T);this.hitDetectionInstructions.push(Zs),this.endGeometry(n)}finish(){let e=this.state;return e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&this.instructions.push(Zs),this.reverseHitDetectionInstructions(),this.state=null,super.finish()}applyStroke(e){e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&(this.instructions.push(Zs),e.lastStroke=this.coordinates.length),e.lastStroke=0,super.applyStroke(e),this.instructions.push(Mo)}},yb=py;var fy=class extends Hs{constructor(e,n,a,l){super(e,n,a,l)}drawFlatCoordinatess_(e,n,a,l){let o=this.state,_=o.fillStyle!==void 0,v=o.strokeStyle!==void 0,w=a.length;this.instructions.push(Mo),this.hitDetectionInstructions.push(Mo);for(let T=0;T<w;++T){let C=a[T],L=this.coordinates.length,F=this.appendFlatLineCoordinates(e,n,C,l,!0,!v),q=[gt.MOVE_TO_LINE_TO,L,F];this.instructions.push(q),this.hitDetectionInstructions.push(q),v&&(this.instructions.push(cy),this.hitDetectionInstructions.push(cy)),n=C}return _&&(this.instructions.push(_u),this.hitDetectionInstructions.push(_u)),v&&(this.instructions.push(Zs),this.hitDetectionInstructions.push(Zs)),n}drawCircle(e,n,a){let l=this.state,o=l.fillStyle,_=l.strokeStyle;if(o===void 0&&_===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,n,a),l.fillStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_FILL_STYLE,tr]),l.strokeStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,bn,wn]);let v=e.getFlatCoordinates(),w=e.getStride(),T=this.coordinates.length;this.appendFlatLineCoordinates(v,0,v.length,w,!1,!1);let C=[gt.CIRCLE,T];this.instructions.push(Mo,C),this.hitDetectionInstructions.push(Mo,C),l.fillStyle!==void 0&&(this.instructions.push(_u),this.hitDetectionInstructions.push(_u)),l.strokeStyle!==void 0&&(this.instructions.push(Zs),this.hitDetectionInstructions.push(Zs)),this.endGeometry(n)}drawPolygon(e,n,a){let l=this.state,o=l.fillStyle,_=l.strokeStyle;if(o===void 0&&_===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,n,a),l.fillStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_FILL_STYLE,tr]),l.strokeStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,bn,wn]);let v=e.getEnds(),w=e.getOrientedFlatCoordinates(),T=e.getStride();this.drawFlatCoordinatess_(w,0,v,T),this.endGeometry(n)}drawMultiPolygon(e,n,a){let l=this.state,o=l.fillStyle,_=l.strokeStyle;if(o===void 0&&_===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(e,n,a),l.fillStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_FILL_STYLE,tr]),l.strokeStyle!==void 0&&this.hitDetectionInstructions.push([gt.SET_STROKE_STYLE,l.strokeStyle,l.lineWidth,l.lineCap,l.lineJoin,l.miterLimit,bn,wn]);let v=e.getEndss(),w=e.getOrientedFlatCoordinates(),T=e.getStride(),C=0;for(let L=0,F=v.length;L<F;++L)C=this.drawFlatCoordinatess_(w,C,v[L],T);this.endGeometry(n)}finish(){this.reverseHitDetectionInstructions(),this.state=null;let e=this.tolerance;if(e!==0){let n=this.coordinates;for(let a=0,l=n.length;a<l;++a)n[a]=sa(n[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)}},my=fy;function _b(h,e,n,a,l){let o=[],_=n,v=0,w=e.slice(n,2);for(;v<h&&_+l<a;){let[T,C]=w.slice(-2),L=e[_+l],F=e[_+l+1],q=Math.sqrt((L-T)*(L-T)+(F-C)*(F-C));if(v+=q,v>=h){let K=(h-v+q)/q,he=Mr(T,L,K),W=Mr(C,F,K);w.push(he,W),o.push(w),w=[he,W],v==h&&(_+=l),v=0}else if(v<h)w.push(e[_+l],e[_+l+1]),_+=l;else{let K=q-v,he=Mr(T,L,K/q),W=Mr(C,F,K/q);w.push(he,W),o.push(w),w=[he,W],v=0,_+=l}}return v>0&&o.push(w),o}function xb(h,e,n,a,l){let o=n,_=n,v=0,w=0,T=n,C,L,F,q,K,he,W,H,se,ge;for(L=n;L<a;L+=l){let _e=e[L],fe=e[L+1];K!==void 0&&(se=_e-K,ge=fe-he,q=Math.sqrt(se*se+ge*ge),W!==void 0&&(w+=F,C=Math.acos((W*se+H*ge)/(F*q)),C>h&&(w>v&&(v=w,o=T,_=L),w=0,T=L-l)),F=q,W=se,H=ge),K=_e,he=fe}return w+=q,w>v?[T,L]:[o,_]}var xu={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},gy=class extends Hs{constructor(e,n,a,l){super(e,n,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[tr]={fillStyle:tr},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,n,a){let l=this.textFillState_,o=this.textStrokeState_,_=this.textState_;if(this.text_===""||!_||!l&&!o)return;let v=this.coordinates,w=v.length,T=e.getType(),C=null,L=e.getStride();if(_.placement==="line"&&(T=="LineString"||T=="MultiLineString"||T=="Polygon"||T=="MultiPolygon")){if(!Zi(this.maxExtent,e.getExtent()))return;let F;if(C=e.getFlatCoordinates(),T=="LineString")F=[C.length];else if(T=="MultiLineString")F=e.getEnds();else if(T=="Polygon")F=e.getEnds().slice(0,1);else if(T=="MultiPolygon"){let W=e.getEndss();F=[];for(let H=0,se=W.length;H<se;++H)F.push(W[H][0])}this.beginGeometry(e,n,a);let q=_.repeat,K=q?void 0:_.textAlign,he=0;for(let W=0,H=F.length;W<H;++W){let se;q?se=_b(q*this.resolution,C,he,F[W],L):se=[C.slice(he,F[W])];for(let ge=0,_e=se.length;ge<_e;++ge){let fe=se[ge],xe=0,Me=fe.length;if(K==null){let Ie=xb(_.maxAngle,fe,0,fe.length,2);xe=Ie[0],Me=Ie[1]}for(let Ie=xe;Ie<Me;Ie+=L)v.push(fe[Ie],fe[Ie+1]);let Re=v.length;he=F[W],this.drawChars_(w,Re),w=Re}}this.endGeometry(n)}else{let F=_.overflow?null:[];switch(T){case"Point":case"MultiPoint":C=e.getFlatCoordinates();break;case"LineString":C=e.getFlatMidpoint();break;case"Circle":C=e.getCenter();break;case"MultiLineString":C=e.getFlatMidpoints(),L=2;break;case"Polygon":C=e.getFlatInteriorPoint(),_.overflow||F.push(C[2]/this.resolution),L=3;break;case"MultiPolygon":let se=e.getFlatInteriorPoints();C=[];for(let ge=0,_e=se.length;ge<_e;ge+=3)_.overflow||F.push(se[ge+2]/this.resolution),C.push(se[ge],se[ge+1]);if(C.length===0)return;L=2;break;default:}let q=this.appendFlatPointCoordinates(C,L);if(q===w)return;if(F&&(q-w)/2!==C.length/L){let se=w/2;F=F.filter((ge,_e)=>{let fe=v[(se+_e)*2]===C[_e*L]&&v[(se+_e)*2+1]===C[_e*L+1];return fe||--se,fe})}this.saveTextStates_(),(_.backgroundFill||_.backgroundStroke)&&(this.setFillStrokeStyle(_.backgroundFill,_.backgroundStroke),_.backgroundFill&&this.updateFillStyle(this.state,this.createFill),_.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(e,n,a);let K=_.padding;if(K!=Co&&(_.scale[0]<0||_.scale[1]<0)){let se=_.padding[0],ge=_.padding[1],_e=_.padding[2],fe=_.padding[3];_.scale[0]<0&&(ge=-ge,fe=-fe),_.scale[1]<0&&(se=-se,_e=-_e),K=[se,ge,_e,fe]}let he=this.pixelRatio;this.instructions.push([gt.DRAW_IMAGE,w,q,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,K==Co?Co:K.map(function(se){return se*he}),!!_.backgroundFill,!!_.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,F]);let W=1/he,H=this.state.fillStyle;_.backgroundFill&&(this.state.fillStyle=tr,this.hitDetectionInstructions.push(this.createFill(this.state))),this.hitDetectionInstructions.push([gt.DRAW_IMAGE,w,q,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[W,W],NaN,this.declutterMode_,this.declutterImageWithText_,K,!!_.backgroundFill,!!_.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?tr:this.fillKey_,this.textOffsetX_,this.textOffsetY_,F]),_.backgroundFill&&(this.state.fillStyle=H,this.hitDetectionInstructions.push(this.createFill(this.state))),this.endGeometry(n)}}saveTextStates_(){let e=this.textStrokeState_,n=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:n.font,textAlign:n.textAlign||ua,justify:n.justify,textBaseline:n.textBaseline||al,scale:n.scale});let _=this.fillKey_;a&&(_ in this.fillStates||(this.fillStates[_]={fillStyle:a.fillStyle}))}drawChars_(e,n){let a=this.textStrokeState_,l=this.textState_,o=this.strokeKey_,_=this.textKey_,v=this.fillKey_;this.saveTextStates_();let w=this.pixelRatio,T=xu[l.textBaseline],C=this.textOffsetY_*w,L=this.text_,F=a?a.lineWidth*Math.abs(l.scale[0])/2:0;this.instructions.push([gt.DRAW_CHARS,e,n,T,l.overflow,v,l.maxAngle,w,C,o,F*w,L,_,1,this.declutterMode_]),this.hitDetectionInstructions.push([gt.DRAW_CHARS,e,n,T,l.overflow,v&&tr,l.maxAngle,w,C,o,F*w,L,_,1/w,this.declutterMode_])}setTextStyle(e,n){let a,l,o;if(!e)this.text_="";else{let _=e.getFill();_?(l=this.textFillState_,l||(l={},this.textFillState_=l),l.fillStyle=vn(_.getColor()||tr)):(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 K=v.getLineDash(),he=v.getLineDashOffset(),W=v.getWidth(),H=v.getMiterLimit();o.lineCap=v.getLineCap()||Us,o.lineDash=K?K.slice():bn,o.lineDashOffset=he===void 0?wn:he,o.lineJoin=v.getLineJoin()||qs,o.lineWidth=W===void 0?Eo:W,o.miterLimit=H===void 0?So:H,o.strokeStyle=vn(v.getColor()||Io)}a=this.textState_;let w=e.getFont()||_p;Zv(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()||al,a.backgroundFill=e.getBackgroundFill(),a.backgroundStroke=e.getBackgroundStroke(),a.padding=e.getPadding()||Co,a.scale=T===void 0?[1,1]:T;let C=e.getOffsetX(),L=e.getOffsetY(),F=e.getRotateWithView(),q=e.getRotation();this.text_=e.getText()||"",this.textOffsetX_=C===void 0?0:C,this.textOffsetY_=L===void 0?0:L,this.textRotateWithView_=F===void 0?!1:F,this.textRotation_=q===void 0?0:q,this.strokeKey_=o?(typeof o.strokeStyle=="string"?o.strokeStyle:Vt(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:"|"+Vt(l.fillStyle):""}this.declutterMode_=e.getDeclutterMode(),this.declutterImageWithText_=n}},vb=gy;var FI={Circle:my,Default:Hs,Image:gb,LineString:yb,Polygon:my,Text:vb},yy=class{constructor(e,n,a,l){this.tolerance_=e,this.maxExtent_=n,this.pixelRatio_=l,this.resolution_=a,this.buildersByZIndex_={}}finish(){let e={};for(let n in this.buildersByZIndex_){e[n]=e[n]||{};let a=this.buildersByZIndex_[n];for(let l in a){let o=a[l].finish();e[n][l]=o}}return e}getBuilder(e,n){let a=e!==void 0?e.toString():"0",l=this.buildersByZIndex_[a];l===void 0&&(l={},this.buildersByZIndex_[a]=l);let o=l[n];if(o===void 0){let _=FI[n];o=new _(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),l[n]=o}return o}},bb=yy;var _y=class extends qd{constructor(e){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=e,this.declutterExecutorGroup=null}getFeatures(e){return wt()}getData(e){return null}prepareFrame(e){return wt()}renderFrame(e,n){return wt()}loadedTileCallback(e,n,a){e[n]||(e[n]={}),e[n][a.tileCoord.toString()]=a}createLoadedTileFinder(e,n,a){return(l,o)=>{let _=this.loadedTileCallback.bind(this,a,l);return e.forEachLoadedTile(n,l,o,_)}}forEachFeatureAtCoordinate(e,n,a,l,o){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(e){let n=e.target;(n.getState()===Mt.LOADED||n.getState()===Mt.ERROR)&&this.renderIfReadyAndVisible()}loadImage(e){let n=e.getState();return n!=Mt.LOADED&&n!=Mt.ERROR&&e.addEventListener(li.CHANGE,this.boundHandleImageChange_),n==Mt.IDLE&&(e.load(),n=e.getState()),n==Mt.LOADED}renderIfReadyAndVisible(){let e=this.getLayer();e&&e.getVisible()&&e.getSourceState()==="ready"&&e.changed()}renderDeferred(e){}disposeInternal(){delete this.layer_,super.disposeInternal()}},hc=_y;var xy=class extends xi{constructor(e,n,a,l){super(e),this.inversePixelTransform=n,this.frameState=a,this.context=l}},wb=xy;var vy=class{constructor(){this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(CanvasRenderingContext2D.prototype,{get:(e,n)=>{if(typeof su()[n]=="function")return this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(n),this.pushMethodArgs_},set:(e,n,a)=>(this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(n,a),!0)})}pushMethodArgs_=(...e)=>(this.instructions_[this.zIndex+this.offset_].push(e),this);getContext(){return this.context_}draw(e){this.instructions_.forEach(n=>{for(let a=0,l=n.length;a<l;a+=2){let o=n[a],_=n[a+1];if(typeof e[o]=="function")e[o](..._);else{if(typeof _=="function"){e[o]=_(e);continue}e[o]=_}}})}clear(){this.instructions_.length=0,this.zIndex=0,this.offset_=0}offset(){this.offset_=this.instructions_.length,this.zIndex=0}},Ep=vy;var wy=[],uc=null;function zI(){uc=Ni(1,1,void 0,{willReadFrequently:!0})}var by=class extends hc{constructor(e){super(e),this.container=null,this.renderedResolution,this.tempTransform=hr(),this.pixelTransform=hr(),this.inversePixelTransform=hr(),this.context=null,this.deferredContext_=null,this.containerReused=!1,this.pixelContext_=null,this.frameState=null}getImageData(e,n,a){uc||zI(),uc.clearRect(0,0,1,1);let l;try{uc.drawImage(e,n,a,1,1,0,0,1,1),l=uc.getImageData(0,0,1,1).data}catch{return uc=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,n,a){let l=this.getLayer().getClassName(),o,_;if(e&&e.className===l&&(!a||e&&e.style.backgroundColor&&pn(wo(e.style.backgroundColor),wo(a)))){let v=e.firstElementChild;v instanceof HTMLCanvasElement&&(_=v.getContext("2d"))}if(_&&_.canvas.style.transform===n?(this.container=e,this.context=_,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%",_=Ni();let w=_.canvas;o.appendChild(w),v=w.style,v.position="absolute",v.left="0",v.transformOrigin="top left",this.container=o,this.context=_}!this.containerReused&&a&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=a)}clipUnrotated(e,n,a){let l=Sm(a),o=Im(a),_=wm(a),v=bm(a);Qi(n.coordinateToPixelTransform,l),Qi(n.coordinateToPixelTransform,o),Qi(n.coordinateToPixelTransform,_),Qi(n.coordinateToPixelTransform,v);let w=this.inversePixelTransform;Qi(w,l),Qi(w,o),Qi(w,_),Qi(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(_[0]),Math.round(_[1])),e.lineTo(Math.round(v[0]),Math.round(v[1])),e.clip()}dispatchRenderEvent_(e,n,a){let l=this.getLayer();if(l.hasListener(e)){let o=new wb(e,this.inversePixelTransform,a,n);l.dispatchEvent(o)}}preRender(e,n){this.frameState=n,!n.declutter&&this.dispatchRenderEvent_(Gs.PRERENDER,e,n)}postRender(e,n){n.declutter||this.dispatchRenderEvent_(Gs.POSTRENDER,e,n)}renderDeferredInternal(e){}getRenderContext(e){return e.declutter&&!this.deferredContext_&&(this.deferredContext_=new Ep),e.declutter?this.deferredContext_.getContext():this.context}renderDeferred(e){e.declutter&&(this.dispatchRenderEvent_(Gs.PRERENDER,this.context,e),e.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(e),this.dispatchRenderEvent_(Gs.POSTRENDER,this.context,e))}getRenderTransform(e,n,a,l,o,_,v){let w=o/2,T=_/2,C=l/n,L=-C,F=-e[0]+v,q=-e[1];return Cr(this.tempTransform,w,T,C,L,-a,F,q)}disposeInternal(){delete this.frameState,super.disposeInternal()}},Tp=by;function Sb(h,e,n,a,l,o,_,v,w,T,C,L){let F=h[e],q=h[e+1],K=0,he=0,W=0,H=0;function se(){K=F,he=q,e+=a,F=h[e],q=h[e+1],H+=W,W=Math.sqrt((F-K)*(F-K)+(q-he)*(q-he))}do se();while(e<n-a&&H+W<o);let ge=W===0?0:(o-H)/W,_e=Mr(K,F,ge),fe=Mr(he,q,ge),xe=e-a,Me=H,Re=o+v*w(T,l,C);for(;e<n-a&&H+W<Re;)se();ge=W===0?0:(Re-H)/W;let Ie=Mr(K,F,ge),at=Mr(he,q,ge),Ge;if(L){let nt=[_e,fe,Ie,at];Jd(nt,0,4,2,L,nt,nt),Ge=nt[0]>nt[2]}else Ge=_e>Ie;let Ze=Math.PI,ft=[],zt=xe+a===e;e=xe,W=0,H=Me,F=h[e],q=h[e+1];let Ke;if(zt){se(),Ke=Math.atan2(q-he,F-K),Ge&&(Ke+=Ke>0?-Ze:Ze);let nt=(Ie+_e)/2,dt=(at+fe)/2;return ft[0]=[nt,dt,(Re-o)/2,Ke,l],ft}l=l.replace(/\n/g," ");for(let nt=0,dt=l.length;nt<dt;){se();let ct=Math.atan2(q-he,F-K);if(Ge&&(ct+=ct>0?-Ze:Ze),Ke!==void 0){let je=ct-Ke;if(je+=je>Ze?-2*Ze:je<-Ze?2*Ze:0,Math.abs(je)>_)return null}Ke=ct;let At=nt,mt=0;for(;nt<dt;++nt){let je=Ge?dt-nt-1:nt,Ai=v*w(T,l[je],C);if(e+a<n&&H+W<o+mt+Ai/2)break;mt+=Ai}if(nt===At)continue;let kt=Ge?l.substring(dt-At,dt-nt):l.substring(At,nt);ge=W===0?0:(o+mt/2-H)/W;let Gt=Mr(K,F,ge),hi=Mr(he,q,ge);ft.push([Gt,hi,mt/2,ct,kt]),o+=mt}return ft}var dc=gn(),fa=[],Ao=[],Po=[],ma=[];function Ib(h){return h[3].declutterBox}var Cb=new RegExp("[\u0591-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFC\u0800-\u0FFF\uE800-\uEFFF]");function Sy(h,e){return e==="start"?e=Cb.test(h)?"right":"left":e==="end"&&(e=Cb.test(h)?"left":"right"),xu[e]}function OI(h,e,n){return n>0&&h.push(`
583
583
  `,""),h.push(e,""),h}var Iy=class{constructor(e,n,a,l,o){this.overlaps=a,this.pixelRatio=n,this.resolution=e,this.alignAndScaleFill_,this.instructions=l.instructions,this.coordinates=l.coordinates,this.coordinateCache_={},this.renderedTransform_=hr(),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 Ep:null}getZIndexContext(){return this.zIndexContext_}createLabel(e,n,a,l){let o=e+n+a+l;if(this.labels_[o])return this.labels_[o];let _=l?this.strokeStates[l]:null,v=a?this.fillStates[a]:null,w=this.textStates[n],T=this.pixelRatio,C=[w.scale[0]*T,w.scale[1]*T],L=Array.isArray(e),F=w.justify?xu[w.justify]:Sy(Array.isArray(e)?e[0]:e,w.textAlign||ua),q=l&&_.lineWidth?_.lineWidth:0,K=L?e:e.split(`
584
584
  `).reduce(OI,[]),{width:he,height:W,widths:H,heights:se,lineWidths:ge}=Xv(w,K),_e=he+q,fe=[],xe=(_e+2)*C[0],Me=(W+q)*C[1],Re={width:xe<0?Math.floor(xe):Math.ceil(xe),height:Me<0?Math.floor(Me):Math.ceil(Me),contextInstructions:fe};(C[0]!=1||C[1]!=1)&&fe.push("scale",C),l&&(fe.push("strokeStyle",_.strokeStyle),fe.push("lineWidth",q),fe.push("lineCap",_.lineCap),fe.push("lineJoin",_.lineJoin),fe.push("miterLimit",_.miterLimit),fe.push("setLineDash",[_.lineDash]),fe.push("lineDashOffset",_.lineDashOffset)),a&&fe.push("fillStyle",v.fillStyle),fe.push("textBaseline","middle"),fe.push("textAlign","center");let Ie=.5-F,at=F*_e+Ie*q,Ge=[],Ze=[],ft=0,zt=0,Ke=0,nt=0,dt;for(let ct=0,At=K.length;ct<At;ct+=2){let mt=K[ct];if(mt===`
585
- `){zt+=ft,ft=0,at=F*_e+Ie*q,++nt;continue}let kt=K[ct+1]||w.font;kt!==dt&&(l&&Ge.push("font",kt),a&&Ze.push("font",kt),dt=kt),ft=Math.max(ft,se[Ke]);let Gt=[mt,at+Ie*H[Ke]+F*(H[Ke]-ge[nt]),.5*(q+ft)+zt];at+=H[Ke],l&&Ge.push("strokeText",Gt),a&&Ze.push("fillText",Gt),++Ke}return Array.prototype.push.apply(fe,Ge),Array.prototype.push.apply(fe,Ze),this.labels_[o]=Re,Re}replayTextBackground_(e,n,a,l,o,_,v){e.beginPath(),e.moveTo.apply(e,n),e.lineTo.apply(e,a),e.lineTo.apply(e,l),e.lineTo.apply(e,o),e.lineTo.apply(e,n),_&&(this.alignAndScaleFill_=_[2],this.fill_(e)),v&&(this.setStrokeStyle_(e,v),e.stroke())}calculateImageOrLabelDimensions_(e,n,a,l,o,_,v,w,T,C,L,F,q,K,he,W){v*=F[0],w*=F[1];let H=a-v,se=l-w,ge=o+T>e?e-T:o,_e=_+C>n?n-C:_,fe=K[3]+ge*F[0]+K[1],xe=K[0]+_e*F[1]+K[2],Me=H-K[3],Re=se-K[0];(he||L!==0)&&(fa[0]=Me,ma[0]=Me,fa[1]=Re,Ao[1]=Re,Ao[0]=Me+fe,Po[0]=Ao[0],Po[1]=Re+xe,ma[1]=Po[1]);let Ie;return L!==0?(Ie=Cr(hr(),a,l,1,1,L,-a,-l),Qi(Ie,fa),Qi(Ie,Ao),Qi(Ie,Po),Qi(Ie,ma),xo(Math.min(fa[0],Ao[0],Po[0],ma[0]),Math.min(fa[1],Ao[1],Po[1],ma[1]),Math.max(fa[0],Ao[0],Po[0],ma[0]),Math.max(fa[1],Ao[1],Po[1],ma[1]),dc)):xo(Math.min(Me,Me+fe),Math.min(Re,Re+xe),Math.max(Me,Me+fe),Math.max(Re,Re+xe),dc),q&&(H=Math.round(H),se=Math.round(se)),{drawImageX:H,drawImageY:se,drawImageW:ge,drawImageH:_e,originX:T,originY:C,declutterBox:{minX:dc[0],minY:dc[1],maxX:dc[2],maxY:dc[3],value:W},canvasTransform:Ie,scale:F}}replayImageOrLabel_(e,n,a,l,o,_,v){let w=!!(_||v),T=l.declutterBox,C=v?v[2]*l.scale[0]/2:0;return T.minX-C<=n[0]&&T.maxX+C>=0&&T.minY-C<=n[1]&&T.maxY+C>=0&&(w&&this.replayTextBackground_(e,fa,Ao,Po,ma,_,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 n=this.alignAndScaleFill_;if(n){let a=Qi(this.renderedTransform_,[0,0]),l=512*this.pixelRatio;e.save(),e.translate(a[0]%l,a[1]%l),n!==1&&e.scale(n,n),e.rotate(this.viewRotation_)}e.fill(),n&&e.restore()}setStrokeStyle_(e,n){e.strokeStyle=n[1],e.lineWidth=n[2],e.lineCap=n[3],e.lineJoin=n[4],e.miterLimit=n[5],e.lineDashOffset=n[7],e.setLineDash(n[6])}drawLabelWithPointPlacement_(e,n,a,l){let o=this.textStates[n],_=this.createLabel(e,n,l,a),v=this.strokeStates[a],w=this.pixelRatio,T=Sy(Array.isArray(e)?e[0]:e,o.textAlign||ua),C=xu[o.textBaseline||al],L=v&&v.lineWidth?v.lineWidth:0,F=_.width/w-2*o.scale[0],q=T*F+2*(.5-T)*L,K=C*_.height/w+2*(.5-C)*L;return{label:_,anchorX:q,anchorY:K}}execute_(e,n,a,l,o,_,v,w){let T=this.zIndexContext_,C;this.pixelCoordinates_&&pn(a,this.renderedTransform_)?C=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),C=yn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),xx(this.renderedTransform_,a));let L=0,F=l.length,q=0,K,he,W,H,se,ge,_e,fe,xe,Me,Re,Ie,at,Ge=0,Ze=0,ft=null,zt=null,Ke=this.coordinateCache_,nt=this.viewRotation_,dt=Math.round(Math.atan2(-a[1],a[0])*1e12)/1e12,ct={context:e,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:nt},At=this.instructions!=l||this.overlaps?0:200,mt,kt,Gt,hi;for(;L<F;){let je=l[L];switch(je[0]){case gt.BEGIN_GEOMETRY:mt=je[1],hi=je[3],mt.getGeometry()?v!==void 0&&!Zi(v,hi.getExtent())?L=je[2]+1:++L:L=je[2],T&&(T.zIndex=je[4]);break;case gt.BEGIN_PATH:Ge>At&&(this.fill_(e),Ge=0),Ze>At&&(e.stroke(),Ze=0),!Ge&&!Ze&&(e.beginPath(),se=NaN,ge=NaN),++L;break;case gt.CIRCLE:q=je[1];let Pi=C[q],Fr=C[q+1],zr=C[q+2],En=C[q+3],Vi=zr-Pi,rn=En-Fr,ni=Math.sqrt(Vi*Vi+rn*rn);e.moveTo(Pi+ni,Fr),e.arc(Pi,Fr,ni,0,2*Math.PI,!0),++L;break;case gt.CLOSE_PATH:e.closePath(),++L;break;case gt.CUSTOM:q=je[1],K=je[2];let Tn=je[3],Te=je[4],nn=je[5];ct.geometry=Tn,ct.feature=mt,L in Ke||(Ke[L]=[]);let gr=Ke[L];nn?nn(C,q,K,2,gr):(gr[0]=C[q],gr[1]=C[q+1],gr.length=2),T&&(T.zIndex=je[6]),Te(gr,ct),++L;break;case gt.DRAW_IMAGE:q=je[1],K=je[2],xe=je[3],he=je[4],W=je[5];let Et=je[6],jt=je[7],yr=je[8],Gn=je[9],jn=je[10],sn=je[11],on=je[12],Mn=je[13];H=je[14]||"declutter";let Un=je[15];if(!xe&&je.length>=20){Me=je[19],Re=je[20],Ie=je[21],at=je[22];let le=this.drawLabelWithPointPlacement_(Me,Re,Ie,at);xe=le.label,je[3]=xe;let ue=je[23];he=(le.anchorX-ue)*this.pixelRatio,je[4]=he;let ne=je[24];W=(le.anchorY-ne)*this.pixelRatio,je[5]=W,Et=xe.height,je[6]=Et,Mn=xe.width,je[13]=Mn}let Ne;je.length>25&&(Ne=je[25]);let Gi,Ri,An;je.length>17?(Gi=je[16],Ri=je[17],An=je[18]):(Gi=Co,Ri=!1,An=!1),jn&&dt?sn+=nt:!jn&&!dt&&(sn-=nt);let rs=0;for(;q<K;q+=2){if(Ne&&Ne[rs++]<Mn/this.pixelRatio)continue;let le=this.calculateImageOrLabelDimensions_(xe.width,xe.height,C[q],C[q+1],Mn,Et,he,W,yr,Gn,sn,on,o,Gi,Ri||An,mt),ue=[e,n,xe,le,jt,Ri?ft:null,An?zt:null];if(w){let ne,ye,Ae;if(Un){let qe=K-q;if(!Un[qe]){Un[qe]={args:ue,declutterMode:H};continue}let Je=Un[qe];ne=Je.args,ye=Je.declutterMode,delete Un[qe],Ae=Ib(ne)}let Ce,Se;if(ne&&(ye!=="declutter"||!w.collides(Ae))&&(Ce=!0),(H!=="declutter"||!w.collides(le.declutterBox))&&(Se=!0),ye==="declutter"&&H==="declutter"){let qe=Ce&&Se;Ce=qe,Se=qe}Ce&&(ye!=="none"&&w.insert(Ae),this.replayImageOrLabel_.apply(this,ne)),Se&&(H!=="none"&&w.insert(le.declutterBox),this.replayImageOrLabel_.apply(this,ue))}else this.replayImageOrLabel_.apply(this,ue)}++L;break;case gt.DRAW_CHARS:let Be=je[1],St=je[2],yt=je[3],Yi=je[4];at=je[5];let Ki=je[6],xt=je[7],an=je[8];Ie=je[9];let ln=je[10];Me=je[11],Re=je[12];let yi=[je[13],je[13]];H=je[14]||"declutter";let Q=this.textStates[Re],B=Q.font,V=[Q.scale[0]*xt,Q.scale[1]*xt],U;B in this.widths_?U=this.widths_[B]:(U={},this.widths_[B]=U);let te=np(C,Be,St,2),ce=Math.abs(V[0])*Wg(B,Me,U);if(Yi||ce<=te){let le=this.textStates[Re].textAlign,ue=(te-ce)*Sy(Me,le),ne=Sb(C,Be,St,2,Me,ue,Ki,Math.abs(V[0]),Wg,B,U,dt?0:this.viewRotation_);e:if(ne){let ye=[],Ae,Ce,Se,qe,Je;if(Ie)for(Ae=0,Ce=ne.length;Ae<Ce;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,"",Ie),he=Je[2]+(V[0]<0?-ln:ln),W=yt*qe.height+(.5-yt)*2*ln*V[1]/V[0]-an;let ht=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Je[0],Je[1],qe.width,qe.height,he,W,0,0,Je[3],yi,!1,Co,!1,mt);if(w&&H==="declutter"&&w.collides(ht.declutterBox))break e;ye.push([e,n,qe,ht,1,null,null])}if(at)for(Ae=0,Ce=ne.length;Ae<Ce;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,at,""),he=Je[2],W=yt*qe.height-an;let ht=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Je[0],Je[1],qe.width,qe.height,he,W,0,0,Je[3],yi,!1,Co,!1,mt);if(w&&H==="declutter"&&w.collides(ht.declutterBox))break e;ye.push([e,n,qe,ht,1,null,null])}w&&H!=="none"&&w.load(ye.map(Ib));for(let ht=0,_t=ye.length;ht<_t;++ht)this.replayImageOrLabel_.apply(this,ye[ht])}}++L;break;case gt.END_GEOMETRY:if(_!==void 0){mt=je[1];let le=_(mt,hi);if(le)return le}++L;break;case gt.FILL:At?Ge++:this.fill_(e),++L;break;case gt.MOVE_TO_LINE_TO:for(q=je[1],K=je[2],kt=C[q],Gt=C[q+1],_e=kt+.5|0,fe=Gt+.5|0,(_e!==se||fe!==ge)&&(e.moveTo(kt,Gt),se=_e,ge=fe),q+=2;q<K;q+=2)kt=C[q],Gt=C[q+1],_e=kt+.5|0,fe=Gt+.5|0,(q==K-2||_e!==se||fe!==ge)&&(e.lineTo(kt,Gt),se=_e,ge=fe);++L;break;case gt.SET_FILL_STYLE:ft=je,this.alignAndScaleFill_=je[2],Ge&&(this.fill_(e),Ge=0,Ze&&(e.stroke(),Ze=0)),e.fillStyle=je[1],++L;break;case gt.SET_STROKE_STYLE:zt=je,Ze&&(e.stroke(),Ze=0),this.setStrokeStyle_(e,je),++L;break;case gt.STROKE:At?Ze++:e.stroke(),++L;break;default:++L;break}}Ge&&this.fill_(e),Ze&&e.stroke()}execute(e,n,a,l,o,_){this.viewRotation_=l,this.execute_(e,n,a,this.instructions,o,void 0,void 0,_)}executeHitDetection(e,n,a,l,o){return this.viewRotation_=a,this.execute_(e,[e.canvas.width,e.canvas.height],n,this.hitDetectionInstructions,!0,l,o)}},Eb=Iy;var pc=["Polygon","Circle","LineString","Image","Text","Default"],Ty=["Image","Text"],Tb=pc.filter(h=>!Ty.includes(h)),Ey=class{constructor(e,n,a,l,o,_,v){this.maxExtent_=e,this.overlaps_=l,this.pixelRatio_=a,this.resolution_=n,this.renderBuffer_=_,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=hr(),this.renderedContext_=null,this.deferredZIndexContexts_={},this.createExecutors_(o,v)}clip(e,n){let a=this.getClipCoords(n);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,n){for(let a in e){let l=this.executorsByZIndex_[a];l===void 0&&(l={},this.executorsByZIndex_[a]=l);let o=e[a];for(let _ in o){let v=o[_];l[_]=new Eb(this.resolution_,this.pixelRatio_,this.overlaps_,v,n)}}}hasExecutors(e){for(let n in this.executorsByZIndex_){let a=this.executorsByZIndex_[n];for(let l=0,o=e.length;l<o;++l)if(e[l]in a)return!0}return!1}forEachFeatureAtCoordinate(e,n,a,l,o,_){l=Math.round(l);let v=l*2+1,w=Cr(this.hitDetectionTransform_,l+.5,l+.5,1/n,-1/n,-a,-e[0],-e[1]),T=!this.hitDetectionContext_;T&&(this.hitDetectionContext_=Ni(v,v,void 0,{willReadFrequently:!0}));let C=this.hitDetectionContext_;C.canvas.width!==v||C.canvas.height!==v?(C.canvas.width=v,C.canvas.height=v):T||C.clearRect(0,0,v,v);let L;this.renderBuffer_!==void 0&&(L=gn(),xm(L,e),fn(L,n*(this.renderBuffer_+l),L));let F=BI(l),q;function K(fe,xe){let Me=C.getImageData(0,0,v,v).data;for(let Re=0,Ie=F.length;Re<Ie;Re++)if(Me[F[Re]]>0){if(!_||q!=="Image"&&q!=="Text"||_.includes(fe)){let at=(F[Re]-3)/4,Ge=l-at%v,Ze=l-(at/v|0),ft=o(fe,xe,Ge*Ge+Ze*Ze);if(ft)return ft}C.clearRect(0,0,v,v);break}}let he=Object.keys(this.executorsByZIndex_).map(Number);he.sort(fs);let W,H,se,ge,_e;for(W=he.length-1;W>=0;--W){let fe=he[W].toString();for(se=this.executorsByZIndex_[fe],H=pc.length-1;H>=0;--H)if(q=pc[H],ge=se[q],ge!==void 0&&(_e=ge.executeHitDetection(C,w,a,K,L),_e))return _e}}getClipCoords(e){let n=this.maxExtent_;if(!n)return null;let a=n[0],l=n[1],o=n[2],_=n[3],v=[a,l,a,_,o,_,o,l];return yn(v,0,8,2,e,v),v}isEmpty(){return Bn(this.executorsByZIndex_)}execute(e,n,a,l,o,_,v){let w=Object.keys(this.executorsByZIndex_).map(Number);w.sort(fs),_=_||pc;let T,C,L,F,q,K;for(v&&w.reverse(),T=0,C=w.length;T<C;++T){let he=w[T].toString();for(q=this.executorsByZIndex_[he],L=0,F=_.length;L<F;++L){let W=_[L];if(K=q[W],K!==void 0){let H=v===null?void 0:K.getZIndexContext(),se=H?H.getContext():e,ge=this.maxExtent_&&W!=="Image"&&W!=="Text";if(ge&&(se.save(),this.clip(se,a)),K.execute(se,n,a,l,o,v),ge&&se.restore(),H){H.offset();let _e=w[T];this.deferredZIndexContexts_[_e]||(this.deferredZIndexContexts_[_e]=[]),this.deferredZIndexContexts_[_e].push(H)}}}}this.renderedContext_=e}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){let e=this.deferredZIndexContexts_,n=Object.keys(e).map(Number).sort(fs);for(let a=0,l=n.length;a<l;++a)e[n[a]].forEach(o=>{o.draw(this.renderedContext_),o.clear()})}},Cy={};function BI(h){if(Cy[h]!==void 0)return Cy[h];let e=h*2+1,n=h*h,a=new Array(n+1);for(let o=0;o<=h;++o)for(let _=0;_<=h;++_){let v=o*o+_*_;if(v>n)break;let w=a[v];w||(w=[],a[v]=w),w.push(((h+o)*e+(h+_))*4+3),o>0&&w.push(((h-o)*e+(h+_))*4+3),_>0&&(w.push(((h+o)*e+(h-_))*4+3),o>0&&w.push(((h-o)*e+(h-_))*4+3))}let l=[];for(let o=0,_=a.length;o<_;++o)a[o]&&l.push(...a[o]);return Cy[h]=l,l}var Mb=Ey;var My=class extends Cp{constructor(e,n,a,l,o,_,v){super(),this.context_=e,this.pixelRatio_=n,this.extent_=a,this.transform_=l,this.transformRotation_=l?jx(Math.atan2(l[1],l[0]),10):0,this.viewRotation_=o,this.squaredTolerance_=_,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_=hr()}drawImages_(e,n,a,l){if(!this.image_)return;let o=yn(e,n,a,l,this.transform_,this.pixelCoordinates_),_=this.context_,v=this.tmpLocalTransform_,w=_.globalAlpha;this.imageOpacity_!=1&&(_.globalAlpha=w*this.imageOpacity_);let T=this.imageRotation_;this.transformRotation_===0&&(T-=this.viewRotation_),this.imageRotateWithView_&&(T+=this.viewRotation_);for(let C=0,L=o.length;C<L;C+=2){let F=o[C]-this.imageAnchorX_,q=o[C+1]-this.imageAnchorY_;if(T!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let K=F+this.imageAnchorX_,he=q+this.imageAnchorY_;Cr(v,K,he,1,1,T,-K,-he),_.save(),_.transform.apply(_,v),_.translate(K,he),_.scale(this.imageScale_[0],this.imageScale_[1]),_.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),_.restore()}else _.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,F,q,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(_.globalAlpha=w)}drawText_(e,n,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=yn(e,n,a,l,this.transform_,this.pixelCoordinates_),_=this.context_,v=this.textRotation_;for(this.transformRotation_===0&&(v-=this.viewRotation_),this.textRotateWithView_&&(v+=this.viewRotation_);n<a;n+=l){let w=o[n]+this.textOffsetX_,T=o[n+1]+this.textOffsetY_;v!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(_.save(),_.translate(w-this.textOffsetX_,T-this.textOffsetY_),_.rotate(v),_.translate(this.textOffsetX_,this.textOffsetY_),_.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&_.strokeText(this.text_,0,0),this.textFillState_&&_.fillText(this.text_,0,0),_.restore()):(this.textStrokeState_&&_.strokeText(this.text_,w,T),this.textFillState_&&_.fillText(this.text_,w,T))}}moveToLineTo_(e,n,a,l,o){let _=this.context_,v=yn(e,n,a,l,this.transform_,this.pixelCoordinates_);_.moveTo(v[0],v[1]);let w=v.length;o&&(w-=2);for(let T=2;T<w;T+=2)_.lineTo(v[T],v[T+1]);return o&&_.closePath(),a}drawRings_(e,n,a,l){for(let o=0,_=a.length;o<_;++o)n=this.moveToLineTo_(e,n,a[o],l,!0);return n}drawCircle(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Zi(this.extent_,e.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let n=rv(e,this.transform_,this.pixelCoordinates_),a=n[2]-n[0],l=n[3]-n[1],o=Math.sqrt(a*a+l*l),_=this.context_;_.beginPath(),_.arc(n[0],n[1],o,0,2*Math.PI),this.fillState_&&_.fill(),this.strokeState_&&_.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,n){let a=n.getGeometryFunction()(e);a&&(this.setStyle(n),this.drawGeometry(a))}drawGeometryCollection(e){let n=e.getGeometriesArray();for(let a=0,l=n.length;a<l;++a)this.drawGeometry(n[a])}drawPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let n=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(n,0,n.length,a),this.text_!==""&&this.drawText_(n,0,n.length,a)}drawMultiPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let n=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(n,0,n.length,a),this.text_!==""&&this.drawText_(n,0,n.length,a)}drawLineString(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Zi(this.extent_,e.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let n=this.context_,a=e.getFlatCoordinates();n.beginPath(),this.moveToLineTo_(a,0,a.length,e.getStride(),!1),n.stroke()}if(this.text_!==""){let n=e.getFlatMidpoint();this.drawText_(n,0,2,2)}}}drawMultiLineString(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let n=e.getExtent();if(Zi(this.extent_,n)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let a=this.context_,l=e.getFlatCoordinates(),o=0,_=e.getEnds(),v=e.getStride();a.beginPath();for(let w=0,T=_.length;w<T;++w)o=this.moveToLineTo_(l,o,_[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_)),!!Zi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let n=this.context_;n.beginPath(),this.drawRings_(e.getOrientedFlatCoordinates(),0,e.getEnds(),e.getStride()),this.fillState_&&n.fill(),this.strokeState_&&n.stroke()}if(this.text_!==""){let n=e.getFlatInteriorPoint();this.drawText_(n,0,2,2)}}}drawMultiPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Zi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let n=this.context_,a=e.getOrientedFlatCoordinates(),l=0,o=e.getEndss(),_=e.getStride();n.beginPath();for(let v=0,w=o.length;v<w;++v){let T=o[v];l=this.drawRings_(a,l,T,_)}this.fillState_&&n.fill(),this.strokeState_&&n.stroke()}if(this.text_!==""){let n=e.getFlatInteriorPoints();this.drawText_(n,0,n.length,2)}}}setContextFillState_(e){let n=this.context_,a=this.contextFillState_;a?a.fillStyle!=e.fillStyle&&(a.fillStyle=e.fillStyle,n.fillStyle=e.fillStyle):(n.fillStyle=e.fillStyle,this.contextFillState_={fillStyle:e.fillStyle})}setContextStrokeState_(e){let n=this.context_,a=this.contextStrokeState_;a?(a.lineCap!=e.lineCap&&(a.lineCap=e.lineCap,n.lineCap=e.lineCap),pn(a.lineDash,e.lineDash)||n.setLineDash(a.lineDash=e.lineDash),a.lineDashOffset!=e.lineDashOffset&&(a.lineDashOffset=e.lineDashOffset,n.lineDashOffset=e.lineDashOffset),a.lineJoin!=e.lineJoin&&(a.lineJoin=e.lineJoin,n.lineJoin=e.lineJoin),a.lineWidth!=e.lineWidth&&(a.lineWidth=e.lineWidth,n.lineWidth=e.lineWidth),a.miterLimit!=e.miterLimit&&(a.miterLimit=e.miterLimit,n.miterLimit=e.miterLimit),a.strokeStyle!=e.strokeStyle&&(a.strokeStyle=e.strokeStyle,n.strokeStyle=e.strokeStyle)):(n.lineCap=e.lineCap,n.setLineDash(e.lineDash),n.lineDashOffset=e.lineDashOffset,n.lineJoin=e.lineJoin,n.lineWidth=e.lineWidth,n.miterLimit=e.miterLimit,n.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 n=this.context_,a=this.contextTextState_,l=e.textAlign?e.textAlign:ua;a?(a.font!=e.font&&(a.font=e.font,n.font=e.font),a.textAlign!=l&&(a.textAlign=l,n.textAlign=l),a.textBaseline!=e.textBaseline&&(a.textBaseline=e.textBaseline,n.textBaseline=e.textBaseline)):(n.font=e.font,n.textAlign=l,n.textBaseline=e.textBaseline,this.contextTextState_={font:e.font,textAlign:l,textBaseline:e.textBaseline})}setFillStrokeStyle(e,n){if(!e)this.fillState_=null;else{let a=e.getColor();this.fillState_={fillStyle:vn(a||tr)}}if(!n)this.strokeState_=null;else{let a=n.getColor(),l=n.getLineCap(),o=n.getLineDash(),_=n.getLineDashOffset(),v=n.getLineJoin(),w=n.getWidth(),T=n.getMiterLimit(),C=o||bn;this.strokeState_={lineCap:l!==void 0?l:Us,lineDash:this.pixelRatio_===1?C:C.map(L=>L*this.pixelRatio_),lineDashOffset:(_||wn)*this.pixelRatio_,lineJoin:v!==void 0?v:qs,lineWidth:(w!==void 0?w:Eo)*this.pixelRatio_,miterLimit:T!==void 0?T:So,strokeStyle:vn(a||Io)}}}setImageStyle(e){let n;if(!e||!(n=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_=n[1]*a,this.imageOpacity_=e.getOpacity(),this.imageOriginX_=o[0],this.imageOriginY_=o[1],this.imageRotateWithView_=e.getRotateWithView(),this.imageRotation_=e.getRotation();let _=e.getScaleArray();this.imageScale_=[_[0]*this.pixelRatio_/a,_[1]*this.pixelRatio_/a],this.imageWidth_=n[0]*a}setTextStyle(e){if(!e)this.text_="";else{let n=e.getFill();if(!n)this.textFillState_=null;else{let q=n.getColor();this.textFillState_={fillStyle:vn(q||tr)}}let a=e.getStroke();if(!a)this.textStrokeState_=null;else{let q=a.getColor(),K=a.getLineCap(),he=a.getLineDash(),W=a.getLineDashOffset(),H=a.getLineJoin(),se=a.getWidth(),ge=a.getMiterLimit();this.textStrokeState_={lineCap:K!==void 0?K:Us,lineDash:he||bn,lineDashOffset:W||wn,lineJoin:H!==void 0?H:qs,lineWidth:se!==void 0?se:Eo,miterLimit:ge!==void 0?ge:So,strokeStyle:vn(q||Io)}}let l=e.getFont(),o=e.getOffsetX(),_=e.getOffsetY(),v=e.getRotateWithView(),w=e.getRotation(),T=e.getScaleArray(),C=e.getText(),L=e.getTextAlign(),F=e.getTextBaseline();this.textState_={font:l!==void 0?l:_p,textAlign:L!==void 0?L:ua,textBaseline:F!==void 0?F:al},this.text_=C!==void 0?Array.isArray(C)?C.reduce((q,K,he)=>q+=he%2?" ":K,""):C:"",this.textOffsetX_=o!==void 0?this.pixelRatio_*o:0,this.textOffsetY_=_!==void 0?this.pixelRatio_*_: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]]}}},Ab=My;var Es=.5;function Pb(h,e,n,a,l,o,_,v,w){let T=w?Ns(l,w):l,C=h[0]*Es,L=h[1]*Es,F=Ni(C,L);F.imageSmoothingEnabled=!1;let q=F.canvas,K=new Ab(F,Es,l,null,_,v,w?Ql(Nn(),w):null),he=n.length,W=Math.floor((256*256*256-1)/he),H={};for(let ge=1;ge<=he;++ge){let _e=n[ge-1],fe=_e.getStyleFunction()||a;if(!fe)continue;let xe=fe(_e,o);if(!xe)continue;Array.isArray(xe)||(xe=[xe]);let Re=(ge*W).toString(16).padStart(7,"#00000");for(let Ie=0,at=xe.length;Ie<at;++Ie){let Ge=xe[Ie],Ze=Ge.getGeometryFunction()(_e);if(!Ze||!Zi(T,Ze.getExtent()))continue;let ft=Ge.clone(),zt=ft.getFill();zt&&zt.setColor(Re);let Ke=ft.getStroke();Ke&&(Ke.setColor(Re),Ke.setLineDash(null)),ft.setText(void 0);let nt=Ge.getImage();if(nt){let mt=nt.getImageSize();if(!mt)continue;let kt=Ni(mt[0],mt[1],void 0,{alpha:!1}),Gt=kt.canvas;kt.fillStyle=Re,kt.fillRect(0,0,Gt.width,Gt.height),ft.setImage(new hu({img:Gt,anchor:nt.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:nt.getOrigin(),opacity:1,size:nt.getSize(),scale:nt.getScale(),rotation:nt.getRotation(),rotateWithView:nt.getRotateWithView()}))}let dt=ft.getZIndex()||0,ct=H[dt];ct||(ct={},H[dt]=ct,ct.Polygon=[],ct.Circle=[],ct.LineString=[],ct.Point=[]);let At=Ze.getType();if(At==="GeometryCollection"){let mt=Ze.getGeometriesArrayRecursive();for(let kt=0,Gt=mt.length;kt<Gt;++kt){let hi=mt[kt];ct[hi.getType().replace("Multi","")].push(hi,ft)}}else ct[At.replace("Multi","")].push(Ze,ft)}}let se=Object.keys(H).map(Number).sort(fs);for(let ge=0,_e=se.length;ge<_e;++ge){let fe=H[se[ge]];for(let xe in fe){let Me=fe[xe];for(let Re=0,Ie=Me.length;Re<Ie;Re+=2){K.setStyle(Me[Re+1]);for(let at=0,Ge=e.length;at<Ge;++at)K.setTransform(e[at]),K.drawGeometry(Me[Re])}}}return F.getImageData(0,0,q.width,q.height)}function Rb(h,e,n){let a=[];if(n){let l=Math.floor(Math.round(h[0])*Es),o=Math.floor(Math.round(h[1])*Es),_=(bi(l,0,n.width-1)+bi(o,0,n.height-1)*n.width)*4,v=n.data[_],w=n.data[_+1],C=n.data[_+2]+256*(w+256*v),L=Math.floor((256*256*256-1)/e.length);C&&C%L===0&&a.push(e[C/L-1])}return a}var NI=.5,Lb={Point:$I,LineString:UI,Polygon:HI,MultiPoint:ZI,MultiLineString:qI,MultiPolygon:WI,GeometryCollection:jI,Circle:VI};function kb(h,e){return parseInt(Vt(h),10)-parseInt(Vt(e),10)}function Ay(h,e){let n=Py(h,e);return n*n}function Py(h,e){return NI*h/e}function VI(h,e,n,a,l){let o=n.getFill(),_=n.getStroke();if(o||_){let w=h.getBuilder(n.getZIndex(),"Circle");w.setFillStrokeStyle(o,_),w.drawCircle(e,a,l)}let v=n.getText();if(v&&v.getText()){let w=h.getBuilder(n.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a)}}function Ry(h,e,n,a,l,o,_,v){let w=[],T=n.getImage();if(T){let F=!0,q=T.getImageState();q==Mt.LOADED||q==Mt.ERROR?F=!1:q==Mt.IDLE&&T.load(),F&&w.push(T.ready())}let C=n.getFill();C&&C.loading()&&w.push(C.ready());let L=w.length>0;return L&&Promise.all(w).then(()=>l(null)),GI(h,e,n,a,o,_,v),L}function GI(h,e,n,a,l,o,_){let v=n.getGeometryFunction()(e);if(!v)return;let w=v.simplifyTransformed(a,l);if(n.getRenderer())Db(h,w,n,e,_);else{let C=Lb[w.getType()];C(h,w,n,e,_,o)}}function Db(h,e,n,a,l){if(e.getType()=="GeometryCollection"){let _=e.getGeometries();for(let v=0,w=_.length;v<w;++v)Db(h,_[v],n,a,l);return}h.getBuilder(n.getZIndex(),"Default").drawCustom(e,a,n.getRenderer(),n.getHitDetectionRenderer(),l)}function jI(h,e,n,a,l,o){let _=e.getGeometriesArray(),v,w;for(v=0,w=_.length;v<w;++v){let T=Lb[_[v].getType()];T(h,_[v],n,a,l,o)}}function UI(h,e,n,a,l){let o=n.getStroke();if(o){let v=h.getBuilder(n.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawLineString(e,a,l)}let _=n.getText();if(_&&_.getText()){let v=h.getBuilder(n.getZIndex(),"Text");v.setTextStyle(_),v.drawText(e,a,l)}}function qI(h,e,n,a,l){let o=n.getStroke();if(o){let v=h.getBuilder(n.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawMultiLineString(e,a,l)}let _=n.getText();if(_&&_.getText()){let v=h.getBuilder(n.getZIndex(),"Text");v.setTextStyle(_),v.drawText(e,a,l)}}function WI(h,e,n,a,l){let o=n.getFill(),_=n.getStroke();if(_||o){let w=h.getBuilder(n.getZIndex(),"Polygon");w.setFillStrokeStyle(o,_),w.drawMultiPolygon(e,a,l)}let v=n.getText();if(v&&v.getText()){let w=h.getBuilder(n.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}function $I(h,e,n,a,l,o){let _=n.getImage(),v=n.getText(),w=v&&v.getText(),T=o&&_&&w?{}:void 0;if(_){if(_.getImageState()!=Mt.LOADED)return;let C=h.getBuilder(n.getZIndex(),"Image");C.setImageStyle(_,T),C.drawPoint(e,a,l)}if(w){let C=h.getBuilder(n.getZIndex(),"Text");C.setTextStyle(v,T),C.drawText(e,a,l)}}function ZI(h,e,n,a,l,o){let _=n.getImage(),v=_&&_.getOpacity()!==0,w=n.getText(),T=w&&w.getText(),C=o&&v&&T?{}:void 0;if(v){if(_.getImageState()!=Mt.LOADED)return;let L=h.getBuilder(n.getZIndex(),"Image");L.setImageStyle(_,C),L.drawMultiPoint(e,a,l)}if(T){let L=h.getBuilder(n.getZIndex(),"Text");L.setTextStyle(w,C),L.drawText(e,a,l)}}function HI(h,e,n,a,l){let o=n.getFill(),_=n.getStroke();if(o||_){let w=h.getBuilder(n.getZIndex(),"Polygon");w.setFillStrokeStyle(o,_),w.drawPolygon(e,a,l)}let v=n.getText();if(v&&v.getText()){let w=h.getBuilder(n.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}var Ly=class extends Tp{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_=gn(),this.wrappedRenderedExtent_=gn(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.targetContext_=null,this.opacity_=1}renderWorlds(e,n,a){let l=n.extent,o=n.viewState,_=o.center,v=o.resolution,w=o.projection,T=o.rotation,C=w.getExtent(),L=this.getLayer().getSource(),F=this.getLayer().getDeclutter(),q=n.pixelRatio,K=n.viewHints,he=!(K[_n.ANIMATING]||K[_n.INTERACTING]),W=this.context,H=Math.round(vi(l)/v*q),se=Math.round(dr(l)/v*q),ge=L.getWrapX()&&w.canWrapX(),_e=ge?vi(C):null,fe=ge?Math.ceil((l[2]-C[2])/_e)+1:1,xe=ge?Math.floor((l[0]-C[0])/_e):0;do{let Me=this.getRenderTransform(_,v,T,q,H,se,xe*_e);e.execute(W,[W.canvas.width,W.canvas.height],Me,T,he,a===void 0?pc:a?Ty:Tb,a?F&&n.declutter[F]:void 0)}while(++xe<fe)}setDrawContext_(){this.opacity_!==1&&(this.targetContext_=this.context,this.context=Ni(this.context.canvas.width,this.context.canvas.height,wy))}resetDrawContext_(){if(this.opacity_!==1){let e=this.targetContext_.globalAlpha;this.targetContext_.globalAlpha=this.opacity_,this.targetContext_.drawImage(this.context.canvas,0,0),this.targetContext_.globalAlpha=e,Rv(this.context),wy.push(this.context.canvas),this.context=this.targetContext_,this.targetContext_=null}}renderDeclutter(e){!this.replayGroup_||!this.getLayer().getDeclutter()||this.renderWorlds(this.replayGroup_,e,!0)}renderDeferredInternal(e){this.replayGroup_&&(this.replayGroup_.renderDeferred(),this.resetDrawContext_())}renderFrame(e,n){let a=e.pixelRatio,l=e.layerStatesArray[e.layerIndex];this.opacity_=l.opacity;let o=e.extent,_=e.viewState.resolution,v=Math.round(vi(o)/_*a),w=Math.round(dr(o)/_*a);Cr(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/a,1/a,0,-v/2,-w/2),bx(this.inversePixelTransform,this.pixelTransform);let T=pm(this.pixelTransform);this.useContainer(n,T,this.getBackground(e));let C=this.context,L=C.canvas,F=this.replayGroup_,q=F&&!F.isEmpty();if(!q&&!(this.getLayer().hasListener(Gs.PRERENDER)||this.getLayer().hasListener(Gs.POSTRENDER)))return null;L.width!=v||L.height!=w?(L.width=v,L.height=w,L.style.transform!==T&&(L.style.transform=T)):this.containerReused||C.clearRect(0,0,v,w),this.setDrawContext_(),this.preRender(C,e);let K=e.viewState,he=K.projection,W=!1;if(q&&l.extent&&this.clipping){let H=Vs(l.extent,he);q=Zi(H,e.extent),W=q&&!_o(H,e.extent),W&&this.clipUnrotated(C,e,H)}return q&&this.renderWorlds(F,e,this.getLayer().getDeclutter()?!1:void 0),W&&C.restore(),this.postRender(C,e),this.renderedRotation_!==K.rotation&&(this.renderedRotation_=K.rotation,this.hitDetectionImageData_=null),e.declutter||this.resetDrawContext_(),this.container}getFeatures(e){return new Promise(n=>{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let a=[this.context.canvas.width,this.context.canvas.height];Qi(this.pixelTransform,a);let l=this.renderedCenter_,o=this.renderedResolution_,_=this.renderedRotation_,v=this.renderedProjection_,w=this.wrappedRenderedExtent_,T=this.getLayer(),C=[],L=a[0]*Es,F=a[1]*Es;C.push(this.getRenderTransform(l,o,_,Es,L,F,0).slice());let q=T.getSource(),K=v.getExtent();if(q.getWrapX()&&v.canWrapX()&&!_o(K,w)){let W=w[0],H=vi(K),se=0,ge;for(;W<K[0];)--se,ge=H*se,C.push(this.getRenderTransform(l,o,_,Es,L,F,ge).slice()),W+=H;for(se=0,W=w[2];W>K[2];)++se,ge=H*se,C.push(this.getRenderTransform(l,o,_,Es,L,F,ge).slice()),W-=H}let he=Nn();this.hitDetectionImageData_=Pb(a,C,this.renderedFeatures_,T.getStyleFunction(),w,o,_,Ay(o,this.renderedPixelRatio_),he?v:null)}n(Rb(e,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(e,n,a,l,o){if(!this.replayGroup_)return;let _=n.viewState.resolution,v=n.viewState.rotation,w=this.getLayer(),T={},C=function(K,he,W){let H=Vt(K),se=T[H];if(se){if(se!==!0&&W<se.distanceSq){if(W===0)return T[H]=!0,o.splice(o.lastIndexOf(se),1),l(K,w,he);se.geometry=he,se.distanceSq=W}}else{if(W===0)return T[H]=!0,l(K,w,he);o.push(T[H]={feature:K,layer:w,geometry:he,distanceSq:W,callback:l})}},L,F=[this.replayGroup_],q=this.getLayer().getDeclutter();return F.some(K=>L=K.forEachFeatureAtCoordinate(e,_,v,a,C,q&&n.declutter[q]?n.declutter[q].all().map(he=>he.value):null)),L}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let n=this.getLayer(),a=n.getSource();if(!a)return!1;let l=e.viewHints[_n.ANIMATING],o=e.viewHints[_n.INTERACTING],_=n.getUpdateWhileAnimating(),v=n.getUpdateWhileInteracting();if(this.ready&&!_&&l||!v&&o)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let w=e.extent,T=e.viewState,C=T.projection,L=T.resolution,F=e.pixelRatio,q=n.getRevision(),K=n.getRenderBuffer(),he=n.getRenderOrder();he===void 0&&(he=kb);let W=T.center.slice(),H=fn(w,K*L),se=H.slice(),ge=[H.slice()],_e=C.getExtent();if(a.getWrapX()&&C.canWrapX()&&!_o(_e,e.extent)){let Ke=vi(_e),nt=Math.max(vi(H)/2,Ke);H[0]=_e[0]-nt,H[2]=_e[2]+nt,$x(W,C);let dt=Cm(ge[0],C);dt[0]<_e[0]&&dt[2]<_e[2]?ge.push([dt[0]+Ke,dt[1],dt[2]+Ke,dt[3]]):dt[0]>_e[0]&&dt[2]>_e[2]&&ge.push([dt[0]-Ke,dt[1],dt[2]-Ke,dt[3]])}if(this.ready&&this.renderedResolution_==L&&this.renderedRevision_==q&&this.renderedRenderOrder_==he&&_o(this.wrappedRenderedExtent_,H))return pn(this.renderedExtent_,se)||(this.hitDetectionImageData_=null,this.renderedExtent_=se),this.renderedCenter_=W,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let fe=new bb(Py(L,F),H,L,F),xe=Nn(),Me;if(xe){for(let Ke=0,nt=ge.length;Ke<nt;++Ke){let dt=ge[Ke],ct=Ns(dt,C);a.loadFeatures(ct,Jx(L,C),xe)}Me=Ql(xe,C)}else for(let Ke=0,nt=ge.length;Ke<nt;++Ke)a.loadFeatures(ge[Ke],L,C);let Re=Ay(L,F),Ie=!0,at=(Ke,nt)=>{let dt,ct=Ke.getStyleFunction()||n.getStyleFunction();if(ct&&(dt=ct(Ke,L)),dt){let At=this.renderFeature(Ke,Re,dt,fe,Me,this.getLayer().getDeclutter(),nt);Ie=Ie&&!At}},Ge=Ns(H,C),Ze=a.getFeaturesInExtent(Ge);he&&Ze.sort(he);for(let Ke=0,nt=Ze.length;Ke<nt;++Ke)at(Ze[Ke],Ke);this.renderedFeatures_=Ze,this.ready=Ie;let ft=fe.finish(),zt=new Mb(H,L,F,a.getOverlaps(),ft,n.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=L,this.renderedRevision_=q,this.renderedRenderOrder_=he,this.renderedExtent_=se,this.wrappedRenderedExtent_=H,this.renderedCenter_=W,this.renderedProjection_=C,this.renderedPixelRatio_=F,this.replayGroup_=zt,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(e,n,a,l,o,_,v){if(!a)return!1;let w=!1;if(Array.isArray(a))for(let T=0,C=a.length;T<C;++T)w=Ry(l,e,a[T],n,this.boundHandleStyleImageChange_,o,_,v)||w;else w=Ry(l,e,a,n,this.boundHandleStyleImageChange_,o,_,v);return w}},Fb=Ly;var ky=class extends mb{constructor(e){super(e)}createRenderer(){return new Fb(this)}},ll=ky;var zb=Os(Jg(),1);var Dy=class{constructor(e){this.rbush_=new zb.default(e),this.items_={}}insert(e,n){let a={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3],value:n};this.rbush_.insert(a),this.items_[Vt(n)]=a}load(e,n){let a=new Array(n.length);for(let l=0,o=n.length;l<o;l++){let _=e[l],v=n[l],w={minX:_[0],minY:_[1],maxX:_[2],maxY:_[3],value:v};a[l]=w,this.items_[Vt(v)]=w}this.rbush_.load(a)}remove(e){let n=Vt(e),a=this.items_[n];return delete this.items_[n],this.rbush_.remove(a)!==null}update(e,n){let a=this.items_[Vt(n)],l=[a.minX,a.minY,a.maxX,a.maxY];Zd(l,e)||(this.remove(n),this.insert(e,n))}getAll(){return this.rbush_.all().map(function(n){return n.value})}getInExtent(e){let n={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]};return this.rbush_.search(n).map(function(l){return l.value})}forEach(e){return this.forEach_(this.getAll(),e)}forEachInExtent(e,n){return this.forEach_(this.getInExtent(e),n)}forEach_(e,n){let a;for(let l=0,o=e.length;l<o;l++)if(a=n(e[l]),a)return a;return a}isEmpty(){return Bn(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let n=this.rbush_.toJSON();return xo(n.minX,n.minY,n.maxX,n.maxY,e)}concat(e){this.rbush_.load(e.rbush_.all());for(let n in e.items_)this.items_[n]=e.items_[n]}},vu=Dy;var Ob=hr(),bu=class h{constructor(e,n,a,l,o,_){this.styleFunction,this.extent_,this.id_=_,this.type_=e,this.flatCoordinates_=n,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"?ta(this.flatCoordinates_):Xl(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=Jn(this.getExtent());this.flatInteriorPoints_=Kh(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=gv(this.flatCoordinates_,this.ends_),n=ap(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=sp(this.flatCoordinates_,0,e,2,n)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=nl(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];let e=this.flatCoordinates_,n=0,a=this.ends_;for(let l=0,o=a.length;l<o;++l){let _=a[l],v=nl(e,n,_,2,.5);Er(this.flatMidpoints_,v),n=_}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(e){return this}simplifyTransformed(e,n){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=Bi(e);let n=e.getExtent(),a=e.getWorldExtent();if(n&&a){let l=dr(a)/dr(n);Cr(Ob,a[0],a[3],l,-l,0,0,0),yn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,Ob,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=jd((e,n)=>{if(e===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),n&&this.simplifiedGeometry_.applyTransform(n);let a=this.simplifiedGeometry_.getFlatCoordinates(),l;switch(this.type_){case"LineString":a.length=rl(a,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,e,a,0),l=[a.length];break;case"MultiLineString":l=[],a.length=tp(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,l);break;case"Polygon":l=[],a.length=$h(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}};bu.prototype.getFlatCoordinates=bu.prototype.getOrientedFlatCoordinates;var is=bu;var Fy=class extends ur{constructor(e){super(),this.projection=Bi(e.projection),this.attributions_=Bb(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 n=this;this.viewPromise_=new Promise(function(a,l){n.viewResolver=a,n.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_=Bb(e),this.changed()}setState(e){this.state_=e,this.changed()}};function Bb(h){return h?Array.isArray(h)?function(e){return h}:typeof h=="function"?h:function(e){return[h]}:null}var Ro=Fy;var qr={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function Nb(h,e){return[[-1/0,-1/0,1/0,1/0]]}var XI=!1;function YI(h,e,n,a,l,o,_){let v=new XMLHttpRequest;v.open("GET",typeof h=="function"?h(n,a,l):h,!0),e.getType()=="arraybuffer"&&(v.responseType="arraybuffer"),v.withCredentials=XI,v.onload=function(w){if(!v.status||v.status>=200&&v.status<300){let T=e.getType(),C;T=="json"?C=JSON.parse(v.responseText):T=="text"?C=v.responseText:T=="xml"?(C=v.responseXML,C||(C=new DOMParser().parseFromString(v.responseText,"application/xml"))):T=="arraybuffer"&&(C=v.response),C?o(e.readFeatures(C,{extent:n,featureProjection:l}),e.readProjection(C)):_()}else _()},v.onerror=_,v.send()}function zy(h,e){return function(n,a,l,o,_){let v=this;YI(h,e,n,a,l,function(w,T){v.addFeatures(w),o!==void 0&&o(w)},_||ms)}}var Xs=class extends xi{constructor(e,n,a){super(e),this.feature=n,this.features=a}},Oy=class extends Ro{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&&(ri(this.format_,"`format` must be set when `url` is set"),this.loader_=zy(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:Nb;let n=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=n?new vu:null,this.loadedExtentsRtree_=new vu,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()),!n&&a===void 0&&(a=new ou(l)),l!==void 0&&this.addFeaturesInternal(l),a!==void 0&&this.bindFeaturesCollection_(a)}addFeature(e){this.addFeatureInternal(e),this.changed()}addFeatureInternal(e){let n=Vt(e);if(!this.addToIndex_(n,e)){this.featuresCollection_&&this.featuresCollection_.remove(e);return}this.setupChangeEvents_(n,e);let a=e.getGeometry();if(a){let l=a.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(l,e)}else this.nullGeometryFeatures_[n]=e;this.dispatchEvent(new Xs(qr.ADDFEATURE,e))}setupChangeEvents_(e,n){n instanceof is||(this.featureChangeKeys_[e]=[Tr(n,li.CHANGE,this.handleFeatureChange_,this),Tr(n,Nd.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(e,n){let a=!0;if(n.getId()!==void 0){let l=String(n.getId());if(!(l in this.idIndex_))this.idIndex_[l]=n;else if(n instanceof is){let o=this.idIndex_[l];o instanceof is?Array.isArray(o)?o.push(n):this.idIndex_[l]=[o,n]:a=!1}else a=!1}return a&&(ri(!(e in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[e]=n),a}addFeatures(e){this.addFeaturesInternal(e),this.changed()}addFeaturesInternal(e){let n=[],a=[],l=[];for(let o=0,_=e.length;o<_;o++){let v=e[o],w=Vt(v);this.addToIndex_(w,v)&&a.push(v)}for(let o=0,_=a.length;o<_;o++){let v=a[o],w=Vt(v);this.setupChangeEvents_(w,v);let T=v.getGeometry();if(T){let C=T.getExtent();n.push(C),l.push(v)}else this.nullGeometryFeatures_[w]=v}if(this.featuresRtree_&&this.featuresRtree_.load(n,l),this.hasListener(qr.ADDFEATURE))for(let o=0,_=a.length;o<_;o++)this.dispatchEvent(new Xs(qr.ADDFEATURE,a[o]))}bindFeaturesCollection_(e){let n=!1;this.addEventListener(qr.ADDFEATURE,function(a){n||(n=!0,e.push(a.feature),n=!1)}),this.addEventListener(qr.REMOVEFEATURE,function(a){n||(n=!0,e.remove(a.feature),n=!1)}),e.addEventListener(ws.ADD,a=>{n||(n=!0,this.addFeature(a.element),n=!1)}),e.addEventListener(ws.REMOVE,a=>{n||(n=!0,this.removeFeature(a.element),n=!1)}),this.featuresCollection_=e}clear(e){if(e){for(let a in this.featureChangeKeys_)this.featureChangeKeys_[a].forEach(jr);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 n=new Xs(qr.CLEAR);this.dispatchEvent(n),this.changed()}forEachFeature(e){if(this.featuresRtree_)return this.featuresRtree_.forEach(e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureAtCoordinateDirect(e,n){let a=[e[0],e[1],e[0],e[1]];return this.forEachFeatureInExtent(a,function(l){let o=l.getGeometry();if(o instanceof is||o.intersectsCoordinate(e))return n(l)})}forEachFeatureInExtent(e,n){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(e,n);this.featuresCollection_&&this.featuresCollection_.forEach(n)}forEachFeatureIntersectingExtent(e,n){return this.forEachFeatureInExtent(e,function(a){let l=a.getGeometry();if(l instanceof is||l.intersectsExtent(e)){let o=n(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(),Bn(this.nullGeometryFeatures_)||Er(e,Object.values(this.nullGeometryFeatures_))),e}getFeaturesAtCoordinate(e){let n=[];return this.forEachFeatureAtCoordinateDirect(e,function(a){n.push(a)}),n}getFeaturesInExtent(e,n){if(this.featuresRtree_){if(!(n&&n.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(e);let l=Lx(e,n);return[].concat(...l.map(o=>this.featuresRtree_.getInExtent(o)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(e,n){let a=e[0],l=e[1],o=null,_=[NaN,NaN],v=1/0,w=[-1/0,-1/0,1/0,1/0];return n=n||Gd,this.featuresRtree_.forEachInExtent(w,function(T){if(n(T)){let C=T.getGeometry(),L=v;if(v=C instanceof is?0:C.closestPointXY(a,l,_,v),v<L){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 n=this.idIndex_[e.toString()];return n!==void 0?n:null}getFeatureByUid(e){let n=this.uidIndex_[e];return n!==void 0?n:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(e){let n=e.target,a=Vt(n),l=n.getGeometry();if(!l)a in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(n),this.nullGeometryFeatures_[a]=n);else{let _=l.getExtent();a in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[a],this.featuresRtree_&&this.featuresRtree_.insert(_,n)):this.featuresRtree_&&this.featuresRtree_.update(_,n)}let o=n.getId();if(o!==void 0){let _=o.toString();this.idIndex_[_]!==n&&(this.removeFromIdIndex_(n),this.idIndex_[_]=n)}else this.removeFromIdIndex_(n),this.uidIndex_[a]=n;this.changed(),this.dispatchEvent(new Xs(qr.CHANGEFEATURE,n))}hasFeature(e){let n=e.getId();return n!==void 0?n in this.idIndex_:Vt(e)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&Bn(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(e,n,a){let l=this.loadedExtentsRtree_,o=this.strategy_(e,n,a);for(let _=0,v=o.length;_<v;++_){let w=o[_];l.forEachInExtent(w,function(C){return _o(C.extent,w)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Xs(qr.FEATURESLOADSTART)),this.loader_.call(this,w,n,a,C=>{--this.loadingExtentsCount_,this.dispatchEvent(new Xs(qr.FEATURESLOADEND,void 0,C))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Xs(qr.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 n=this.loadedExtentsRtree_,a;n.forEachInExtent(e,function(l){if(Zd(l.extent,e))return a=l,!0}),a&&n.remove(a)}removeFeatures(e){let n=[];for(let a=0,l=e.length;a<l;++a){let o=e[a],_=this.removeFeatureInternal(o);_&&n.push(_)}n.length>0&&this.changed()}removeFeature(e){if(!e)return;this.removeFeatureInternal(e)&&this.changed()}removeFeatureInternal(e){let n=Vt(e);n in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[n]:this.featuresRtree_&&this.featuresRtree_.remove(e);let a=this.featureChangeKeys_[n];if(!a)return;a.forEach(jr),delete this.featureChangeKeys_[n];let l=e.getId();return l!==void 0&&delete this.idIndex_[l.toString()],delete this.uidIndex_[n],this.hasListener(qr.REMOVEFEATURE)&&this.dispatchEvent(new Xs(qr.REMOVEFEATURE,e)),e}removeFromIdIndex_(e){let n=!1;for(let a in this.idIndex_){let l=this.idIndex_[a];if(e instanceof is&&Array.isArray(l)&&l.includes(e))l.splice(l.indexOf(e),1);else if(this.idIndex_[a]===e){delete this.idIndex_[a],n=!0;break}}return n}setLoader(e){this.loader_=e}setUrl(e){ri(this.format_,"`format` must be set when `url` is set"),this.url_=e,this.setLoader(zy(e,this.format_))}},cl=Oy;var Vn={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 By={ACTIVE:"active"};var Ny=class extends ur{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(By.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(By.ACTIVE,e)}setMap(e){this.map_=e}};var Vb=Ny;var Vy=class extends Vb{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 n=!1;if(this.updateTrackedPointers_(e),this.handlingDownUpSequence){if(e.type==Vn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Vn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Vn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,n=this.stopDown(a)}else e.type==Vn.POINTERMOVE&&this.handleMoveEvent(e);return!n}handleMoveEvent(e){}handleUpEvent(e){return!1}stopDown(e){return e}updateTrackedPointers_(e){e.activePointers&&(this.targetPointers=e.activePointers)}};var Gb=Vy;var jb=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var Ub=Gd,qb=function(h){return h.type==Vn.CLICK};var Wb=function(h){return h.type==Vn.SINGLECLICK};var $b=function(h){let e=h.originalEvent;return ri(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var Zb=0,wu=1,Hb=[0,0,0,0],fc=[],Gy={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},Su=class extends xi{constructor(e,n,a){super(e),this.features=n,this.mapBrowserEvent=a}},jy=class extends Gb{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:$b,this.defaultDeleteCondition_=function(a){return jb(a)&&Wb(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:Ub,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new vu,this.pixelTolerance_=e.pixelTolerance!==void 0?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new ll({source:new cl({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:JI(),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 n;if(e.features?n=e.features:e.source&&(this.source_=e.source,n=new ou(this.source_.getFeatures()),this.source_.addEventListener(qr.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(qr.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!n)throw new Error("The modify interaction requires features, a source or a layer");e.hitDetection&&(this.hitDetection_=e.hitDetection),this.features_=n,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(ws.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(ws.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 n=e.getGeometry();if(n){let l=this.SEGMENT_WRITERS_[n.getType()];l&&l(e,n)}let a=this.getMap();a&&a.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,a),e.addEventListener(li.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(e,n){if(!this.featuresBeingModified_){this.featuresBeingModified_=new ou;let a=this.featuresBeingModified_.getArray();for(let l=0,o=n.length;l<o;++l){let _=n[l];for(let v=0,w=_.length;v<w;++v){let T=_[v].feature;T&&!a.includes(T)&&this.featuresBeingModified_.push(T)}}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new Su(Gy.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 n=this.rBush_,a=[];n.forEach(function(l){e===l.feature&&a.push(l)});for(let l=a.length-1;l>=0;--l){let o=a[l];for(let _=this.dragSegments_.length-1;_>=0;--_)this.dragSegments_[_][0]===o&&this.dragSegments_.splice(_,1);n.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 n=e.target;this.removeFeature_(n),this.addFeature_(n)}}handleFeatureRemove_(e){this.removeFeature_(e.element)}writePointGeometry_(e,n){let a=n.getCoordinates(),l={feature:e,geometry:n,segment:[a,a]};this.rBush_.insert(n.getExtent(),l)}writeMultiPointGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l],v={feature:e,geometry:n,depth:[l],index:l,segment:[_,_]};this.rBush_.insert(n.getExtent(),v)}}writeLineStringGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length-1;l<o;++l){let _=a.slice(l,l+2),v={feature:e,geometry:n,index:l,segment:_};this.rBush_.insert(Bs(_),v)}}writeMultiLineStringGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l];for(let v=0,w=_.length-1;v<w;++v){let T=_.slice(v,v+2),C={feature:e,geometry:n,depth:[l],index:v,segment:T};this.rBush_.insert(Bs(T),C)}}}writePolygonGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l];for(let v=0,w=_.length-1;v<w;++v){let T=_.slice(v,v+2),C={feature:e,geometry:n,depth:[l],index:v,segment:T};this.rBush_.insert(Bs(T),C)}}}writeMultiPolygonGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l];for(let v=0,w=_.length;v<w;++v){let T=_[v];for(let C=0,L=T.length-1;C<L;++C){let F=T.slice(C,C+2),q={feature:e,geometry:n,depth:[v,l],index:C,segment:F};this.rBush_.insert(Bs(F),q)}}}}writeCircleGeometry_(e,n){let a=n.getCenter(),l={feature:e,geometry:n,index:Zb,segment:[a,a]},o={feature:e,geometry:n,index:wu,segment:[a,a]},_=[l,o];l.featureSegments=_,o.featureSegments=_,this.rBush_.insert(ta(a),l);let v=n,w=Nn();if(w&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(w,T),v=Jm(v).transform(T,w)}this.rBush_.insert(v.getExtent(),o)}writeGeometryCollectionGeometry_(e,n){let a=n.getGeometriesArray();for(let l=0;l<a.length;++l){let o=a[l],_=this.SEGMENT_WRITERS_[o.getType()];_(e,o)}}createOrUpdateVertexFeature_(e,n,a){let l=this.vertexFeature_;return l?l.getGeometry().setCoordinates(e):(l=new ts(new fr(e)),this.vertexFeature_=l,this.overlay_.getSource().addFeature(l)),l.set("features",n),l.set("geometries",a),l}handleEvent(e){if(!e.originalEvent)return!0;this.lastPointerEvent_=e;let n;return!e.map.getView().getInteracting()&&e.type==Vn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Vn.SINGLECLICK||!this.ignoreNextSingleClick_?n=this.removePoint():n=!0),e.type==Vn.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(e)&&!n}handleDragEvent(e){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(e,this.dragSegments_);let n=[e.coordinate[0]+this.delta_[0],e.coordinate[1]+this.delta_[1]],a=[],l=[];for(let o=0,_=this.dragSegments_.length;o<_;++o){let v=this.dragSegments_[o],w=v[0],T=w.feature;a.includes(T)||a.push(T);let C=w.geometry;l.includes(C)||l.push(C);let L=w.depth,F,q=w.segment,K=v[1];for(;n.length<C.getStride();)n.push(q[K][n.length]);switch(C.getType()){case"Point":F=n,q[0]=n,q[1]=n;break;case"MultiPoint":F=C.getCoordinates(),F[w.index]=n,q[0]=n,q[1]=n;break;case"LineString":F=C.getCoordinates(),F[w.index+K]=n,q[K]=n;break;case"MultiLineString":F=C.getCoordinates(),F[L[0]][w.index+K]=n,q[K]=n;break;case"Polygon":F=C.getCoordinates(),F[L[0]][w.index+K]=n,q[K]=n;break;case"MultiPolygon":F=C.getCoordinates(),F[L[1]][L[0]][w.index+K]=n,q[K]=n;break;case"Circle":if(q[0]=n,q[1]=n,w.index===Zb)this.changingFeature_=!0,C.setCenter(n),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),W=Rm(Hi(C.getCenter(),he),Hi(n,he)),H=Nn();if(H){let se=C.clone().transform(H,he);se.setRadius(W),W=se.transform(he,H).getRadius()}C.setRadius(W),this.changingFeature_=!1}break;default:}F&&this.setGeometryCoordinates_(C,F)}this.createOrUpdateVertexFeature_(n,a,l)}handleDownEvent(e){if(!this.condition_(e))return!1;let n=e.coordinate;this.handlePointerAtPixel_(e.pixel,e.map,n),this.dragSegments_.length=0,this.featuresBeingModified_=null;let a=this.vertexFeature_;if(a){let l=e.map.getView().getProjection(),o=[],_=a.getGeometry().getCoordinates(),v=Bs([_]),w=this.rBush_.getInExtent(v),T={};w.sort(KI);for(let C=0,L=w.length;C<L;++C){let F=w[C],q=F.segment,K=Vt(F.geometry),he=F.depth;if(he&&(K+="-"+he.join("-")),T[K]||(T[K]=new Array(2)),F.geometry.getType()==="Circle"&&F.index===wu){let W=Yb(n,F,l);tn(W,_)&&!T[K][0]&&(this.dragSegments_.push([F,0]),T[K][0]=F);continue}if(tn(q[0],_)&&!T[K][0]){this.dragSegments_.push([F,0]),T[K][0]=F;continue}if(tn(q[1],_)&&!T[K][1]){if(T[K][0]&&T[K][0].index===0){let W=F.geometry.getCoordinates();switch(F.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":W=W[he[1]];case"Polygon":if(F.index!==W[he[0]].length-2)continue;break;default:}}this.dragSegments_.push([F,1]),T[K][1]=F;continue}Vt(q)in this.vertexSegments_&&!T[K][0]&&!T[K][1]&&this.insertVertexCondition_(e)&&o.push(F)}o.length&&this.willModifyFeatures_(e,[o]);for(let C=o.length-1;C>=0;--C)this.insertVertex_(o[C],_)}return!!this.vertexFeature_}handleUpEvent(e){for(let n=this.dragSegments_.length-1;n>=0;--n){let a=this.dragSegments_[n][0],l=a.geometry;if(l.getType()==="Circle"){let o=l.getCenter(),_=a.featureSegments[0],v=a.featureSegments[1];_.segment[0]=o,_.segment[1]=o,v.segment[0]=o,v.segment[1]=o,this.rBush_.update(ta(o),_);let w=l,T=Nn();if(T){let C=e.map.getView().getProjection();w=w.clone().transform(T,C),w=Jm(w).transform(C,T)}this.rBush_.update(w.getExtent(),v)}else this.rBush_.update(Bs(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new Su(Gy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null),!1}handlePointerMove_(e){this.lastPixel_=e.pixel,this.handlePointerAtPixel_(e.pixel,e.map,e.coordinate)}handlePointerAtPixel_(e,n,a){let l=a||n.getCoordinateFromPixel(e),o=n.getView().getProjection(),_=function(T,C){return Xb(l,T,o)-Xb(l,C,o)},v,w;if(this.hitDetection_){let T=typeof this.hitDetection_=="object"?C=>C===this.hitDetection_:void 0;n.forEachFeatureAtPixel(e,(C,L,F)=>{F&&F.getType()==="Point"&&(F=new fr(tl(F.getCoordinates(),o)));let q=F||C.getGeometry();if(C instanceof ts&&this.features_.getArray().includes(C)){w=q;let K=C.getGeometry().getFlatCoordinates().slice(0,2);v=[{feature:C,geometry:w,segment:[K,K]}]}return!0},{layerFilter:T})}if(!v){let T=Vs(ta(l,Hb),o),C=n.getView().getResolution()*this.pixelTolerance_,L=Ns(fn(T,C,Hb),o);v=this.rBush_.getInExtent(L)}if(v&&v.length>0){let T=v.sort(_)[0],C=T.segment,L=Yb(l,T,o),F=n.getPixelFromCoordinate(L),q=Rm(e,F);if(w||q<=this.pixelTolerance_){let K={};if(K[Vt(C)]=!0,this.snapToPointer_||(this.delta_[0]=L[0]-l[0],this.delta_[1]=L[1]-l[1]),T.geometry.getType()==="Circle"&&T.index===wu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(L,[T.feature],[T.geometry]);else{let he=n.getPixelFromCoordinate(C[0]),W=n.getPixelFromCoordinate(C[1]),H=Jl(F,he),se=Jl(F,W);q=Math.sqrt(Math.min(H,se)),this.snappedToVertex_=q<=this.pixelTolerance_,this.snappedToVertex_&&(L=H>se?C[1]:C[0]),this.createOrUpdateVertexFeature_(L,[T.feature],[T.geometry]);let ge={};ge[Vt(T.geometry)]=!0;for(let _e=1,fe=v.length;_e<fe;++_e){let xe=v[_e].segment;if(tn(C[0],xe[0])&&tn(C[1],xe[1])||tn(C[0],xe[1])&&tn(C[1],xe[0])){let Me=Vt(v[_e].geometry);Me in ge||(ge[Me]=!0,K[Vt(xe)]=!0)}else break}}this.vertexSegments_=K;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(e,n){let a=e.segment,l=e.feature,o=e.geometry,_=e.depth,v=e.index,w;for(;n.length<o.getStride();)n.push(0);switch(o.getType()){case"MultiLineString":w=o.getCoordinates(),w[_[0]].splice(v+1,0,n);break;case"Polygon":w=o.getCoordinates(),w[_[0]].splice(v+1,0,n);break;case"MultiPolygon":w=o.getCoordinates(),w[_[1]][_[0]].splice(v+1,0,n);break;case"LineString":w=o.getCoordinates(),w.splice(v+1,0,n);break;default:return}this.setGeometryCoordinates_(o,w);let T=this.rBush_;T.remove(e),this.updateSegmentIndices_(o,v,_,1);let C={segment:[a[0],n],feature:l,geometry:o,depth:_,index:v};T.insert(Bs(C.segment),C),this.dragSegments_.push([C,1]);let L={segment:[n,a[1]],feature:l,geometry:o,depth:_,index:v+1};T.insert(Bs(L.segment),L),this.dragSegments_.push([L,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Vn.POINTERDRAG){let e=this.lastPointerEvent_;this.willModifyFeatures_(e,this.dragSegments_);let n=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Su(Gy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null,n}return!1}removeVertex_(){let e=this.dragSegments_,n={},a=!1,l,o,_,v,w,T,C,L,F,q,K;for(w=e.length-1;w>=0;--w)_=e[w],q=_[0],K=Vt(q.feature),q.depth&&(K+="-"+q.depth.join("-")),K in n||(n[K]={}),_[1]===0?(n[K].right=q,n[K].index=q.index):_[1]==1&&(n[K].left=q,n[K].index=q.index+1);for(K in n){switch(F=n[K].right,C=n[K].left,T=n[K].index,L=T-1,C!==void 0?q=C:q=F,L<0&&(L=0),v=q.geometry,o=v.getCoordinates(),l=o,a=!1,v.getType()){case"MultiLineString":o[q.depth[0]].length>2&&(o[q.depth[0]].splice(T,1),a=!0);break;case"LineString":o.length>2&&(o.splice(T,1),a=!0);break;case"MultiPolygon":l=l[q.depth[1]];case"Polygon":l=l[q.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]),L=l.length-1));break;default:}if(a){this.setGeometryCoordinates_(v,o);let he=[];if(C!==void 0&&(this.rBush_.remove(C),he.push(C.segment[0])),F!==void 0&&(this.rBush_.remove(F),he.push(F.segment[1])),C!==void 0&&F!==void 0){let W={depth:q.depth,feature:q.feature,geometry:q.geometry,index:L,segment:he};this.rBush_.insert(Bs(W.segment),W)}this.updateSegmentIndices_(v,T,q.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.length=0}}return a}setGeometryCoordinates_(e,n){this.changingFeature_=!0,e.setCoordinates(n),this.changingFeature_=!1}updateSegmentIndices_(e,n,a,l){this.rBush_.forEachInExtent(e.getExtent(),function(o){o.geometry===e&&(a===void 0||o.depth===void 0||pn(o.depth,a))&&o.index>n&&(o.index+=l)})}};function KI(h,e){return h.index-e.index}function Xb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"){let o=a;if(e.index===wu){let _=Nn();_&&(o=o.clone().transform(_,n));let v=Jl(o.getCenter(),Hi(h,n)),w=Math.sqrt(v)-o.getRadius();return w*w}}let l=Hi(h,n);return fc[0]=Hi(e.segment[0],n),fc[1]=Hi(e.segment[1],n),Wx(l,fc)}function Yb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"&&e.index===wu){let o=a,_=Nn();return _&&(o=o.clone().transform(_,n)),tl(o.getClosestPoint(Hi(h,n)),n)}let l=Hi(h,n);return fc[0]=Hi(e.segment[0],n),fc[1]=Hi(e.segment[1],n),tl(Pm(l,fc),n)}function JI(){let h=eb();return function(e,n){return h.Point}}var Uy=jy;var qy=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=ts,this.supportedMediaTypes=null}getReadOptions(e,n){if(n){let a=n.dataProjection?Bi(n.dataProjection):this.readProjection(e);n.extent&&a&&a.getUnits()==="tile-pixels"&&(a=Bi(a),a.setWorldExtent(n.extent)),n={dataProjection:a,featureProjection:n.featureProjection}}return this.adaptOptions(n)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return wt()}readFeature(e,n){return wt()}readFeatures(e,n){return wt()}readGeometry(e,n){return wt()}readProjection(e){return wt()}writeFeature(e,n){return wt()}writeFeatures(e,n){return wt()}writeGeometry(e,n){return wt()}},Kb=qy;function Mp(h,e,n){let a=n?Bi(n.featureProjection):null,l=n?Bi(n.dataProjection):null,o=h;if(a&&l&&!Kx(a,l)){e&&(o=h.clone());let _=e?a:l,v=e?l:a;_.getUnits()==="tile-pixels"?o.transform(_,v):o.applyTransform(el(_,v))}if(e&&n&&n.decimals!==void 0){let _=Math.pow(10,n.decimals),v=function(w){for(let T=0,C=w.length;T<C;++T)w[T]=Math.round(w[T]*_)/_;return w};o===h&&(o=h.clone()),o.applyTransform(v)}return o}var QI={Point:fr,LineString:_s,Polygon:tc,MultiPoint:Yh,MultiLineString:Zm,MultiPolygon:eg};function eC(h,e,n){return Array.isArray(e[0])?(op(h,0,e,n)||(h=h.slice(),Qh(h,0,e,n)),h):(Jh(h,0,e,n)||(h=h.slice(),ec(h,0,e,n)),h)}function Wy(h,e){let n=h.geometry;if(!n)return[];if(Array.isArray(n))return n.map(o=>Wy({...h,geometry:o})).flat();let a=n.type==="MultiPolygon"?"Polygon":n.type;if(a==="GeometryCollection"||a==="Circle")throw new Error("Unsupported geometry type: "+a);let l=n.layout.length;return Mp(new is(a,a==="Polygon"?eC(n.flatCoordinates,n.ends,l):n.flatCoordinates,n.ends?.flat(),l,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function Ap(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(l=>Ap(l,e));return new Nm(a)}let n=QI[h.type];return Mp(new n(h.flatCoordinates,h.layout,h.ends),!1,e)}var $y=class extends Kb{constructor(){super()}getType(){return"json"}readFeature(e,n){return this.readFeatureFromObject(Pp(e),this.getReadOptions(e,n))}readFeatures(e,n){return this.readFeaturesFromObject(Pp(e),this.getReadOptions(e,n))}readFeatureFromObject(e,n){return wt()}readFeaturesFromObject(e,n){return wt()}readGeometry(e,n){return this.readGeometryFromObject(Pp(e),this.getReadOptions(e,n))}readGeometryFromObject(e,n){return wt()}readProjection(e){return this.readProjectionFromObject(Pp(e))}readProjectionFromObject(e){return wt()}writeFeature(e,n){return JSON.stringify(this.writeFeatureObject(e,n))}writeFeatureObject(e,n){return wt()}writeFeatures(e,n){return JSON.stringify(this.writeFeaturesObject(e,n))}writeFeaturesObject(e,n){return wt()}writeGeometry(e,n){return JSON.stringify(this.writeGeometryObject(e,n))}writeGeometryObject(e,n){return wt()}};function Pp(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var Jb=$y;var Zy=class extends Jb{constructor(e){e=e||{},super(),this.dataProjection=Bi(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=Bi(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,n){let a=null;e.type==="Feature"?a=e:a={type:"Feature",geometry:e,properties:null};let l=Xy(a.geometry,n);if(this.featureClass===is)return Wy({geometry:l,id:a.id,properties:a.properties},n);let o=new ts;return this.geometryName_?o.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&o.setGeometryName(a.geometry_name),o.setGeometry(Ap(l,n)),"id"in a&&o.setId(a.id),a.properties&&o.setProperties(a.properties,!0),o}readFeaturesFromObject(e,n){let a=e,l=null;if(a.type==="FeatureCollection"){let o=e;l=[];let _=o.features;for(let v=0,w=_.length;v<w;++v){let T=this.readFeatureFromObject(_[v],n);T&&l.push(T)}}else l=[this.readFeatureFromObject(e,n)];return l.flat()}readGeometryFromObject(e,n){return tC(e,n)}readProjectionFromObject(e){let n=e.crs,a;if(n)if(n.type=="name")a=Bi(n.properties.name);else if(n.type==="EPSG")a=Bi("EPSG:"+n.properties.code);else throw new Error("Unknown SRS type");else a=this.dataProjection;return a}writeFeatureObject(e,n){n=this.adaptOptions(n);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(),_=e.getGeometry();return _&&(a.geometry=Hy(_,n),delete o[e.getGeometryName()]),Bn(o)||(a.properties=o),a}writeFeaturesObject(e,n){n=this.adaptOptions(n);let a=[];for(let l=0,o=e.length;l<o;++l)a.push(this.writeFeatureObject(e[l],n));return{type:"FeatureCollection",features:a}}writeGeometryObject(e,n){return Hy(e,this.adaptOptions(n))}};function Xy(h,e){if(!h)return null;let n;switch(h.type){case"Point":{n=rC(h);break}case"LineString":{n=nC(h);break}case"Polygon":{n=lC(h);break}case"MultiPoint":{n=oC(h);break}case"MultiLineString":{n=sC(h);break}case"MultiPolygon":{n=aC(h);break}case"GeometryCollection":{n=iC(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return n}function tC(h,e){let n=Xy(h,e);return Ap(n,e)}function iC(h,e){return h.geometries.map(function(a){return Xy(a,e)})}function rC(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:ra(e.length)}}function nC(h){let e=h.coordinates,n=e.flat();return{type:"LineString",flatCoordinates:n,ends:[n.length],layout:ra(e[0]?.length||2)}}function sC(h){let e=h.coordinates,n=e[0]?.[0]?.length||2,a=[],l=na(a,0,e,n);return{type:"MultiLineString",flatCoordinates:a,ends:l,layout:ra(n)}}function oC(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:ra(e[0]?.length||2)}}function aC(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.[0].length||2,l=ep(n,0,e,a);return{type:"MultiPolygon",flatCoordinates:n,ends:l,layout:ra(a)}}function lC(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.length,l=na(n,0,e,a);return{type:"Polygon",flatCoordinates:n,ends:l,layout:ra(a)}}function Hy(h,e){h=Mp(h,!0,e);let n=h.getType(),a;switch(n){case"Point":{a=fC(h,e);break}case"LineString":{a=hC(h,e);break}case"Polygon":{a=mC(h,e);break}case"MultiPoint":{a=dC(h,e);break}case"MultiLineString":{a=uC(h,e);break}case"MultiPolygon":{a=pC(h,e);break}case"GeometryCollection":{a=cC(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+n)}return a}function cC(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return Hy(a,e)})}}function hC(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function uC(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function dC(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function pC(h,e){let n;return e&&(n=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(n)}}function fC(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function mC(h,e){let n;return e&&(n=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(n)}}var mr=Zy;var gC=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,Qb=/^([\d.]+),([\d.]+)$/,e1=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,Rp="stop-fetch",t1=h=>{let e=[];return h.forEach(n=>{let a=n.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},Yy=class h extends nc{constructor(n={}){super(n);this.viaPoints=[];this.graphs=[];this.useRawViaPoints=!1;this.snapToClosestStation=!1;this.cacheStationData={};this.abortControllers={};this.segments=[];this.format=new mr({featureProjection:"EPSG:3857"});this.initialRouteDrag={};this.element||this.createDefaultElement(),this.loading=!1,this.active=n.active||!0,this.graphs=n.graphs||[["osm",0,99]],this.mot=n.mot||"bus",this.modify=n.modify!==!1,this.routingApiParams=n.routingApiParams,this.useRawViaPoints=n.useRawViaPoints||!1,this.snapToClosestStation=n.snapToClosestStation||!1,this.apiKey=n.apiKey,this.stopsApiKey=n.stopsApiKey||this.apiKey,this.stopsApiUrl=n.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new Rh({...n}),this.routingLayer=n.routingLayer||new ll({source:new cl,style:n.style}),this.onRouteError=n.onRouteError||(a=>{this.dispatchEvent(new xi("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(n){this.set("active",n)}get loading(){return this.get("loading")}set loading(n){this.set("loading",n)}get modify(){return this.get("modify")}set modify(n){this.set("modify",n)}get mot(){return this.get("mot")}set mot(n){this.set("mot",n)}static getGraphsResolutions(n,a){let l=a.getView();return n.map(([,o,_])=>[l.getResolutionForZoom(o),l.getResolutionForZoom(_||o+1)])}onActiveChange(){this.get("active")?this.activate():this.deactivate(),this.render()}addViaPoint(n,a=-1,l=0){this.viaPoints.splice(a===-1?this.viaPoints.length:a,l,n),this.drawRoute(),this.dispatchEvent(new xi("change:route"))}removeViaPoint(n=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[n]&&this.viaPoints.splice(n,1),this.drawRoute(),this.dispatchEvent(new xi("change:route"))}setViaPoints(n){this.viaPoints=[...n],this.drawRoute(),this.dispatchEvent(new xi("change:route"))}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.getSource()?.clear(),this.dispatchEvent(new xi("change:route"))}abortRequests(){this.graphs.forEach(n=>{let a=n[0];this.abortControllers[a]&&this.abortControllers[a].abort(),this.abortControllers[a]=new AbortController}),this.abortControllers[Rp]?.abort(),this.abortControllers[Rp]=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[Rp]);let n=this.viaPoints.map(a=>{if(Array.isArray(a)){let l=this.getMap()?.getView().getProjection(),[o,_]=Qa(a,l);return this.snapToClosestStation?[`@${_}`,o]:[_,o]}return this.useRawViaPoints?a:`!${a}`});return this.loading=!0,this.viaPoints.forEach((a,l)=>this.drawViaPoint(a,l,this.abortControllers[Rp])),Promise.all(this.graphs.map(([a],l)=>{let{signal:o}=this.abortControllers[a];return this.api?this.api.route({graph:a,via:`${n.join("|")}`,mot:this.mot,"resolve-hops":!1,elevation:!1,"coord-radius":100,"coord-punish":1e3,...this.routingApiParams||{}},{signal:o}).then(_=>{if(this.segments=this.format.readFeatures(_),this.mot==="foot"){let T=this.segments.reduce((C,L)=>{let F=L.get("trg");return C.find(q=>q[0]===F[0]&&q[1]===F[1])?C:[...C,F]},[]);this.segments=T.map(C=>{let L=this.segments.filter(q=>{let K=q.get("trg");return K[0]===C[0]&&K[1]===C[1]}),F=t1(L);return new ts({geometry:new _s(F)})})}let v=t1(this.segments),w=new ts({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(_=>{/AbortError/.test(_.message)||(this.segments=[],this.dispatchEvent(new xi("error")),this.onRouteError(_,this),this.routingLayer?.getSource()?.clear(),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(n,a,l){let o=new ts;if(o.set("viaPointIdx",a),Array.isArray(n))return o.setGeometry(new fr(n)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o);if(!this.useRawViaPoints||e1.test(n)){let C,L;return this.useRawViaPoints?[,C,,L]=e1.exec(n)||[]:[C,L]=n.split("$"),fetch(`${this.stopsApiUrl}lookup/${C}?key=${this.stopsApiKey}`,{signal:l.signal}).then(F=>F.json()).then(F=>{let{coordinates:q}=F.features[0].geometry;return this.cacheStationData[n]=pr(q),o.set("viaPointTrack",L),o.setGeometry(new fr(pr(q))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(F=>{/AbortError/.test(F.message)||(this.dispatchEvent(new xi("error")),this.onRouteError(F,this),this.loading=!1)})}if(this.useRawViaPoints&&Qb.test(n)){let[C,L]=Qb.exec(n)||[];if(L&&C){let F=parseFloat(L),q=parseFloat(C),K=pr([F,q],this.getMap()?.getView().getProjection());return o.setGeometry(new fr(K)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}}let[,_,,v,w,,T]=gC.exec(n)||[];if(w&&v){let C=pr([parseFloat(w),parseFloat(v)],this.getMap()?.getView().getProjection());return o.set("viaPointTrack",T),o.setGeometry(new fr(C)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}return _?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${_}&limit=1`,{signal:l.signal}).then(C=>C.json()).then(C=>{let{coordinates:L}=C.features[0].geometry;return this.cacheStationData[n]=pr(L),o.set("viaPointTrack",T),o.setGeometry(new fr(pr(L))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(C=>(this.dispatchEvent(new xi("error")),this.onRouteError(C,this),this.loading=!1,null)):Promise.resolve(null)}onMapClick(n){let l=n.target.getFeaturesAtPixel(n.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(n.coordinate)}onModifyStart(n){let a=-1,l=n.features.getArray().find(_=>_.getGeometry()?.getType()==="LineString");if(l&&l.getGeometry()&&n.mapBrowserEvent.coordinate){let _=fn(new fr(l.getGeometry()?.getClosestPoint(n.mapBrowserEvent.coordinate)).getExtent(),.001);a=this.segments.findIndex(v=>v.getGeometry()?.intersectsExtent(_))}let o=(n.features.getArray().filter(_=>_.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={viaPoint:o,oldRoute:l&&l.clone(),segmentIndex:a}}onModifyEnd(n){let a=n.mapBrowserEvent.coordinate,{oldRoute:l,viaPoint:o,segmentIndex:_}=this.initialRouteDrag||{};return o?this.addViaPoint(a,o.get("viaPointIdx"),1):l?_===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(a,(_||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 Uy({source:this.routingLayer?.getSource()||void 0,pixelTolerance:6,deleteCondition:n=>{let l=(n.target?.getFeaturesAtPixel(n.pixel,{hitTolerance:5})).find(o=>o.getGeometry()?.getType()==="Point"&&o.get("index"));return qb(n)&&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&&Ka(this.onMapClickKey)}setMap(n){super.setMap(n),n&&this.active?this.activate():n||(this.active=!1)}activate(){let n=this.getMap();n&&(this.format=new mr({featureProjection:n.getView().getProjection()}),this.graphsResolutions=h.getGraphsResolutions(this.graphs,n),this.modifyInteraction&&n.removeInteraction(this.modifyInteraction),this.modifyInteraction&&n.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}deactivate(){let n=this.getMap();n&&(this.modifyInteraction&&n.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}render(){}},i1=Yy;var Ky=class{constructor(e){let{apiParams:n,apiKey:a,url:l,placeholder:o}=e||{};this.apiParams={limit:20,...n||{}},this.placeholder=o||"Search for a stop...";let _={apiKey:a};l&&(_.url=l),this.api=new Lh(_),this.abortController=new AbortController,this.createElement(e),this.options=e}render(e){let n=e?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=n.length?"block":"none",this.suggestionsElt.innerHTML="",n.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=n=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(n.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,n){return(e!==void 0||e!==null)&&(this.apiParams.q=e),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,n&&{signal:n.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}},r1=Ky;var yC=()=>{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},n1=yC;var Jy=class extends nc{constructor(e){let n=n1();n.className=e?.className||"mbt-stop-finder";let a={element:n,...e||{}};super(a),this.controller=new r1({onSuggestionClick:this.onSuggestionClick.bind(this),...a})}onSuggestionClick(e){let n=pr(e.geometry.coordinates);this.getMap()?.getView().setCenter(n)}search(e,n){return this.controller.search(e,n)}},s1=Jy;var f1=Os(Iu());var h1=Os(r_(),1);var FC="vectorTileFeature",n_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},mc=class extends hc{getFeaturesAtCoordinate(e,n=5){let a=this.getMapLibrePixels(e,n);if(!a)return[];let l=this.getLayer().get("queryRenderedFeaturesOptions")||{};return this.getLayer().mapLibreMap?.queryRenderedFeatures(a,l).map(_=>this.toOlFeature(_))||[]}prepareFrame(){return!0}renderFrame(e){let n=this.getLayer(),{mapLibreMap:a}=n,l=n.getMapInternal();if(!n||!l||!a)return null;let o=a.getCanvas(),{viewState:_}=e;a.jumpTo({center:Qa(_.center),zoom:_.zoom-1,bearing:Vx(-_.rotation)});let v=n.getOpacity().toString();return o&&v!==o.style.opacity&&(o.style.opacity=v),o.isConnected?zC(o,e)||a.resize():l.render(),a.redraw(),a.getContainer()}getFeatures(e){let n=this.getLayer().getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(n))}forEachFeatureAtCoordinate(e,n,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(_=>{let v=_.getGeometry();v instanceof Ar&&l(_,this.layer_,v)}),o?.[0]}getMapLibrePixels(e,n){if(!e)return;let a=this.getLayer().mapLibreMap?.project(Qa(e));if(a?.x===void 0||a?.y===void 0)return;let l=[a.x,a.y];if(n){let[o,_]=l;l=[[o-n,_-n],[o+n,_+n]]}return l}toOlFeature(e){let l=this.getLayer().getMapInternal()?.getView()?.getProjection()?.getCode()||"EPSG:3857";n_[l]||(n_[l]=new mr({featureProjection:l}));let o=n_[l].readFeature(e);return o&&o.set(FC,e,!0),o}};function zC(h,e){return h.width===Math.floor(e.size[0]*e.pixelRatio)&&h.height===Math.floor(e.size[1]*e.pixelRatio)}var OC=h=>{if(!h)return[];let{style:e}=h;if(!e)return[];let{sourceCaches:n}=e,a=[];return Object.values(n).forEach(l=>{if(l.used){let{attribution:o}=l.getSource();o&&(a=a.concat(o.replace(/&copy;/g,"\xA9").split(/(<a.*?<\/a>)/)))}}),BC(a)},BC=h=>{let e=h.filter(l=>l!=null&&l.trim&&l.trim()),n=e.map(l=>l.toLowerCase());return[...new Set(n)].map(l=>e.find(o=>o.toLowerCase()===l))},s_=OC;var gc=class extends bs{mapLibreMap;loaded=!1;olListenersKeys=[];constructor(e){super({source:new Ro({attributions:()=>s_(this.mapLibreMap)}),...e})}disposeInternal(){Ka(this.olListenersKeys),this.loaded=!1,this.mapLibreMap&&(this.mapLibreMap.triggerRepaint=()=>{},this.mapLibreMap.remove()),super.disposeInternal()}setMapInternal(e){super.setMapInternal(e),e?this.loadMapLibreMap():this.dispose()}loadMapLibreMap(){this.loaded=!1;let e=this.getMapInternal();if(e&&this.olListenersKeys.push(e.on("change:target",this.loadMapLibreMap.bind(this))),!e?.getTargetElement())return;if(!this.getVisible()){this.olListenersKeys.push(this.once("change:visible",this.loadMapLibreMap.bind(this)));return}let n=document.createElement("div");n.style.position="absolute",n.style.width="100%",n.style.height="100%";let a=this.get("mapLibreOptions");this.mapLibreMap=new h1.Map(Object.assign({},a,{container:n,attributionControl:!1,interactive:!1,trackResize:!1})),this.mapLibreMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.mapLibreMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new xi("load"))})}createRenderer(){return new mc(this)}};var u1=Os(Iu());var kr=(0,u1.default)(h=>{console.warn(h)},1e3);function NC(h){return class extends h{constructor(...a){let l=a[0];super(l);this.options={};this.olEventsKeys=[];l.properties&&(kr("Deprecated. Don't use properties options. Pass the values directly in options object."),this.setProperties(l.properties)),this.olEventsKeys?.push(this.on("propertychange",o=>{o.key==="children"&&this.onChildrenChange(o.oldValue)})),this.options=l,this.set("children",l.children||[])}get children(){return kr("Layer.children is deprecated. Use the Layer.get('children') method instead."),this.get("children")||[]}set children(a){kr("Layer.children is deprecated. Use the Layer.set('children', children) method instead."),this.set("children",a||[])}get copyrights(){return kr("Layer.copyrights is deprecated. Get the attributions from the source object"),this.get("copyrights")}set copyrights(a){kr("Layer.copyrights is deprecated. Set the attributions to the source object.");let l=a&&!Array.isArray(a)?[a]:a;this.set("copyrights",l||[])}get disabled(){return kr("Layer.disabled is deprecated. Use the Layer.get('disabled') method instead."),this.get("disabled")}set disabled(a){kr("Layer.disabled is deprecated. Use the Layer.set('disabled', newValue) method instead."),this.set("disabled",a)}get group(){return kr("Layer.group is deprecated. Use the Layer.get('group') method instead."),this.get("group")}get hitTolerance(){return kr("Layer.hitTolerance is deprecated.Pass the hitTolerance when you request the features."),this.get("hitTolerance")||5}get key(){return this.get("key")||this.get("name")||Vt(this)}get map(){return this.getMapInternal()}get name(){return kr("Layer.name is deprecated. Use the Layer.get('name') method instead."),this.get("name")}get olLayer(){return kr("Layer.olLayer is deprecated. 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(a){kr("Layer.olLayer is deprecated. mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This setter has no effect.")}get parent(){return kr("Layer.parent is deprecated. Use the Layer.get('parent') method instead."),this.get("parent")}set parent(a){kr("Layer.parent is deprecated. Use the Layer.set('parent', parent) method instead."),this.set("parent",a)}get visible(){return kr("Layer.visible is deprecated. Use the Layer.getVisible() method instead."),this.getVisible()}set visible(a){kr("Layer.visible is deprecated. Use the Layer.setVisible(newValue) method instead."),this.setVisible(a)}setMapInternal(a){super.setMapInternal(a),a?this.attachToMap(a):this.detachFromMap()}onChildrenChange(a){(a||[]).forEach(l=>{l.set("parent",void 0)}),(this.get("children")||[]).forEach(l=>{l.set("parent",this)})}attachToMap(a){(super.attachToMap||(()=>{}))(a),(this.get("children")||[]).forEach(l=>{a.addLayer(l)})}detachFromMap(){(this.get("children")||[]).forEach(a=>{this.map.removeLayer(a)}),(super.detachFromMap||(()=>{}))()}flat(){return kr("Layer.flat is deprecated. Use getLayersAsFlatArray utils method instead."),Ya(this)}}}var d1=NC;function VC(h){return class extends d1(h){}}var Ys=VC;var p1=(h,e,n,a)=>Ha(`${h}/styles/${e}/style.json`,{[a]:n}).toString(),o_=class h extends Ys(gc){get mbMap(){return console.warn(".mbMap deprecated. Use layer.maplibreMap."),this.maplibreMap}get maplibreMap(){return console.warn(".maplibreMap eprecated. Use layer.mapLibreMap."),this.mapLibreMap}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)}constructor(e){let n={apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...e||{},mapLibreOptions:{...e.mapLibreOptions||{}}};!n.mapLibreOptions.style&&n.apiKey&&(n.mapLibreOptions.style=p1(n.url,n.style,n.apiKey,n.apiKeyName)),super(n)}attachToMap(e){super.attachToMap(e),this.updateMaplibreMap();let n=(0,f1.default)(this.updateMaplibreMap.bind(this),150);this.olEventsKeys.push(this.on("propertychange",a=>{/(url|style)/.test(a.key)&&n()}))}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:p1(this.url,this.style,this.get("apiKey"),this.get("apiKeyName"))}updateMaplibreMap(){this.mapLibreMap?.setStyle(this.getStyle(),{diff:!1})}clone(e){return new h({...this.options||{},...e||{}})}},m1=o_;var a_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},Cu=class extends hc{getFeaturesAtCoordinate(e,n=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{maplibreMap:o}=a.maplibreLayer,_=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(a_[_]||(a_[_]=new mr({featureProjection:_})),o?.isStyleLoaded()){let w=e&&o.project(Qa(e));if(w?.x&&w?.y){let T=[w.x,w.y];if(n){let[L,F]=T;T=[[L-n,F-n],[L+n,F+n]]}let C=a.layers||[];a.layersFilter&&(C=o.getStyle().layers.filter(a.layersFilter)),a.queryRenderedLayersFilter&&(C=o.getStyle().layers.filter(a.queryRenderedLayersFilter)),v=o.queryRenderedFeatures(T,{layers:C.map(L=>L.id),validate:!1}).map(L=>{let F=a_[_].readFeature(L);return F&&F.set(rc,L),F})}}return v}prepareFrame(){return!0}renderFrame(){return null}getFeatures(e){let n=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(n))}forEachFeatureAtCoordinate(e,n,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(_=>{l(_,this.layer_,_.getGeometry())}),o?.[0]}};var l_=class h extends Ys(bs){constructor(n={mapLibreOptions:{style:{version:8,sources:{},layers:[]}}}){n.mapboxLayer&&(console.warn("options.mapboxLayer is deprecated. Use options.maplibreLayer instead."),n.maplibreLayer=n.mapboxLayer,delete n.mapboxLayer);super({source:new Ro({}),...n});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(n){this.set("beforeId",n)}get layers(){return this.get("layers")}set layers(n){this.set("layers",n)}get layersFilter(){return this.get("layersFilter")}set layersFilter(n){this.set("layersFilter",n)}get mapboxLayer(){return console.warn("Deprecated. Use maplibreLayer instead."),this.get("maplibreLayer")}get maplibreLayer(){return this.get("maplibreLayer")}set maplibreLayer(n){this.set("maplibreLayer",n)}get queryRenderedLayersFilter(){return this.get("queryRenderedLayersFilter")}set queryRenderedLayersFilter(n){this.set("queryRenderedLayersFilter",n)}get sources(){return this.get("sources")}set sources(n){this.set("sources",n)}get styleLayer(){return console.warn("Deprecated. Use layers instead."),this.layers[0]}set styleLayer(n){console.warn("Deprecated. Use layers instead."),this.layers=[n]}get styleLayers(){return console.warn("Deprecated. Use layers instead."),this.layers}set styleLayers(n){console.warn("Deprecated. Use layers instead."),this.layers=n}createRenderer(){return new Cu(this)}attachToMap(n){if(this.maplibreLayer&&!this.maplibreLayer.map&&n.addLayer(this.maplibreLayer),super.attachToMap(n),!this.map||!this.maplibreLayer)return;if(!this.map.getTargetElement()){this.olEventsKeys.push(this.map.on("change:target",()=>{this.attachToMap(n)}));return}let{maplibreMap:a}=this.maplibreLayer;a&&(a.loaded()?this.onLoad():a.once("load",this.onLoad)),this.olEventsKeys.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(n))}))}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:n}=this.maplibreLayer;n&&Object.entries(this.sources).forEach(([a,l])=>{n.getSource(a)||n.addSource(a,l)})}removeSources(){if(!this.maplibreLayer?.maplibreMap||!this.sources)return;let{maplibreMap:n}=this.maplibreLayer;n&&Object.keys(this.sources).forEach(a=>{n.getSource(a)&&n.removeSource(a)})}addLayers(){if(!this.maplibreLayer?.maplibreMap||!Array.isArray(this.layers))return;let{maplibreMap:n}=this.maplibreLayer;n&&(this.layers.forEach(a=>{let{id:l,source:o}=a;(!o||o&&n.getSource(o))&&l&&!n.getLayer(l)&&n.addLayer(a,this.beforeId)}),this.applyLayoutVisibility())}removeLayers(){if(!this.maplibreLayer?.maplibreMap||!Array.isArray(this.layers))return;let{maplibreMap:n}=this.maplibreLayer;n&&this.layers.forEach(a=>{let{id:l}=a;l&&n.getLayer(l)&&n.removeLayer(l)})}onLoad(){if(!this.maplibreLayer?.maplibreMap)return;this.addSources(),this.addLayers();let{maplibreMap:n}=this.maplibreLayer,a=n.getStyle();if(a?.layers&&this.layersFilter){let l=a.layers.filter(this.layersFilter);this.disabled=!l.length}}setFeatureState(n,a){if(!this.maplibreLayer?.maplibreMap||!n.length)return;let{maplibreMap:l}=this.maplibreLayer;n.forEach(o=>{let{source:_,sourceLayer:v}=o.get(rc)||{};if(!_&&!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:_,sourceLayer:v},a)})}getFeatureInfoAtCoordinate(n){if(console.warn("Deprecated. getFeatureInfoAtCoordinate([layer], coordinate) from ol package instead."),!this.maplibreLayer?.maplibreMap)return Promise.resolve({coordinate:n,features:[],layer:this});let{maplibreMap:a}=this.maplibreLayer;if(!a.isStyleLoaded())return Promise.resolve({coordinate:n,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:n})}setHoverState(n,a){console.warn(`Deprecated. Use layer.setFeatureState(features, {hover: ${a}}) instead.`),this.setFeatureState(n,{hover:a})}select(n=[]){console.warn("Deprecated. Use layer.setFeatureState(features, {selected: true}) instead."),this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=n,this.setHoverState(this.selectedFeatures||[],!0)}highlight(n=[]){console.warn("Deprecated. Use layer.setFeatureState(features, {highlighted: true}) instead.");let a=this.highlightedFeatures?.filter(l=>!(this.selectedFeatures||[]).map(o=>o.getId()).includes(l.getId()))||[];this.setHoverState(a,!1),this.highlightedFeatures=n,this.setHoverState(this.highlightedFeatures,!0)}applyLayoutVisibility(n){if(!this.maplibreLayer?.maplibreMap?.getStyle()||!this.layersFilter)return;let{maplibreMap:a}=this.maplibreLayer,l=a.getStyle(),o=this.getVisible()?"visible":"none",_=l.layers||[];for(let v=0;v<_.length;v+=1){let w=_[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(n){return new h({...this.options,...n})}},g1=l_;var d_=Os(Iu());var h_=Os(Iu()),u_=Os(b1());function nE(h){return class extends h{constructor(n){super({hitTolerance:10,...n}),this.defineProperties(n),this.debug=n.debug||!1,this.mode=n.mode||Wi.TOPOGRAPHIC,this.api=n.api||new Dh(n),this.tenant=n.tenant||"",this.minZoomInterpolation=n.minZoomInterpolation||8,this.format=new mr,this.onStart=n.onStart,this.onStop=n.onStop,this.motsByZoom=n.motsByZoom||[vs,vs,vs,vs,vs,vs,vs,vs,vs,lp,lp],this.getMotsByZoom=a=>n.getMotsByZoom?n.getMotsByZoom(a,this.motsByZoom):this.motsByZoom[a],this.generalizationLevelByZoom=n.generalizationLevelByZoom||[],this.getGeneralizationLevelByZoom=a=>n.getGeneralizationLevelByZoom?n.getGeneralizationLevelByZoom(a,this.generalizationLevelByZoom):this.generalizationLevelByZoom[a],this.renderTimeIntervalByZoom=n.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=>n.getRenderTimeIntervalByZoom?n.getRenderTimeIntervalByZoom(a,this.renderTimeIntervalByZoom):this.renderTimeIntervalByZoom[a],this.isUpdateBboxOnMoveEnd=n.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,u_.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,h_.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(n){(super.defineProperties||(()=>{}))(n);let{style:a,speed:l,pixelRatio:o,hoverVehicleId:_,selectedVehicleId:v,filter:w,sort:T,time:C,live:L,canvas:F,styleOptions:q,mode:K,bboxParameters:he}=n,W=F,H=l||1,se=C||new Date,ge=K||Wi.TOPOGRAPHIC,_e=a||sl;Object.defineProperties(this,{isTrackerLayer:{value:!0},canvas:{get:()=>(W||(W=document.createElement("canvas")),W),set:fe=>{W=fe}},mode:{get:()=>ge,set:fe=>{fe!==ge&&(ge=fe,this.api?.wsApi?.open&&(this.stop(),this.start()))}},style:{get:()=>_e,set:fe=>{_e=fe,this.renderTrajectories()}},styleOptions:{value:{...ic,...q||{}}},speed:{get:()=>H,set:fe=>{H=fe,this.start()}},bboxParameters:{value:he,writable:!0},filter:{value:w,writable:!0},sort:{value:T,writable:!0},live:{value:L===!1?L:!0,writable:!0},time:{get:()=>se,set:fe=>{se=fe&&fe.getTime?fe:new Date(fe),this.renderTrajectories()}},trajectories:{value:{},writable:!0},hoverVehicleId:{value:_,writable:!0},selectedVehicleId:{value:v,writable:!0},pixelRatio:{value:o||(typeof window<"u"?window.devicePixelRatio:1),writable:!0},useRequestAnimationFrame:{value:n.useRequestAnimationFrame||!1,writable:!0},useThrottle:{value:n.useThrottle!==!1,writable:!0},useDebounce:{value:n.useDebounce||!1,writable:!0}})}attachToMap(n){super.attachToMap(n),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),Ka(this.visibilityRef),this.canvas){let n=this.canvas.getContext("2d");n&&n.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(n,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=iu(this.canvas,o,this.style,{...n,pixelRatio:this.pixelRatio||1,time:l},{filter:this.filter,noInterpolate:(n.zoom||0)<this.minZoomInterpolation?!0:a,hoverVehicleId:this.hoverVehicleId,selectedVehicleId:this.selectedVehicleId,...this.styleOptions})),!0}renderTrajectories(n,a){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),n&&(!a&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(n,a)}):!a&&this.useDebounce?this.debounceRenderTrajectories(n,a):!a&&this.useThrottle?this.throttleRenderTrajectories(n,a):this.renderTrajectoriesInternal(n,a))}setBbox(n,a){if(this.trajectories&&n&&a){let L=Object.keys(this.trajectories);for(let F=L.length-1;F>=0;F-=1)this.purgeTrajectory(this.trajectories[L[F]],n,a)}let l=Math.floor(a);if(!n||Number.isNaN(l))return;let[o,_,v,w]=n,T=[Math.floor(o),Math.floor(_),Math.ceil(v),Math.ceil(w),l],C=this.getGeneralizationLevelByZoom(l);this.generalizationLevel&&T.push(`gen=${C}`),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(([L,F])=>{T.push(`${L}=${F}`)}),this.api.bbox=T}getRefreshTimeInMs(n=0){let a=n!==void 0?Math.round(n):-1,l=this.getRenderTimeIntervalByZoom(a)||25,o=Math.max(25,l/(this.speed||1)),_=Math.min(o,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,u_.default)(this.renderTrajectoriesInternal,_,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,h_.default)(this.renderTrajectoriesInternal,_,{leading:!0,trailing:!0,maxWait:5e3})),this.api?.buffer){let[,v]=this.api.buffer;this.api.buffer=[_,v]}return o}getVehicle(n){return this.trajectories&&Object.values(this.trajectories).filter(n)||[]}getFeatureInfoAtCoordinate(n,a){let{resolution:l,nb:o}=a,_=fn([...n,...n],this.hitTolerance*l),v=Object.values(this.trajectories||{});this.sort&&(v=v.sort(this.sort));let w=[];for(let T=0;T<v.length;T+=1){let{coordinate:C}=v[T].properties;if(C&&yo(_,C)&&w.push(v[T]),w.length===o)break}return Promise.resolve({layer:this,features:w.map(T=>this.format.readFeature(T)),coordinate:n})}getTrajectoryInfos(n){let a=[this.api.getStopSequence(n),this.api.getFullTrajectory(n,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(([n,a])=>{let l=a?.properties?.time_intervals;this.time&&l?.length&&l[l.length-1][0]<this.time.getTime()&&this.removeTrajectory(n)})}purgeTrajectory(n,a,l){let{type:o,bounds:_}=n.properties;return this.isUpdateBboxOnMoveEnd&&!Zi(a,_)||this.mots&&!this.mots.includes(o)?(this.removeTrajectory(n),!0):!1}addTrajectory(n){this.trajectories||(this.trajectories={});let a=n.properties.train_id;a!==void 0&&(this.trajectories[a]=n),this.renderTrajectories()}removeTrajectory(n){let a;typeof n!="string"?a=n?.properties?.train_id:a=n,a!==void 0&&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(n){if(!n.content)return;let a=n.content,{geometry:l,properties:{train_id:o,time_since_update:_,raw_coordinates:v}}=a;_<0||this.purgeTrajectory(a)||(this.debug&&this.mode===Wi.TOPOGRAPHIC&&v?a.properties.olGeometry=this.format.readGeometry({type:"Point",coordinates:pr(v,this.map.getView().getProjection())}):a.properties.olGeometry=this.format.readGeometry(l),a.properties.timeOffset=Date.now()-n.timestamp,this.addTrajectory(a))}onDeleteTrajectoryMessage(n){n.content&&this.removeTrajectory(n.content)}highlightVehicle(n){this.hoverVehicleId!==n&&(this.hoverVehicleId=n,this.renderTrajectories(!0))}selectVehicle(n){this.selectedVehicleId!==n&&(this.selectedVehicleId=n,this.renderTrajectories(!0))}}}var kp=nE;var sE=new Rr({zIndex:2,image:new Sn({radius:5,fill:new Pr({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),oE=(h,e,n)=>{let a="#ffffff",l=h.get("type"),o=h.get("stroke");return o&&o[0]!=="#"&&(o=`#${o}`),a=o||n?.getBgColor(l),a=/#ffffff/i.test(a)?"#ff0000":a,[sE,new Rr({zIndex:3,image:new Sn({radius:4,fill:new Pr({color:a})}),stroke:new er({color:a,width:4})})]},Dp=oE;var aE=new Rr({zIndex:2,image:new Sn({radius:5,fill:new Pr({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),lE=new Rr({zIndex:3,image:new Sn({radius:4,fill:new Pr({color:"#a0a0a0"})}),stroke:new er({color:"#a0a0a0",width:4})}),cE=()=>[aE,lE],w1=cE;var S1=new Sn({radius:6,fill:new Pr({color:[255,0,0,1]}),stroke:new er({color:[0,0,0,1],width:1})}),hE=new Rr({stroke:new er({color:[0,0,0,1],width:5})}),uE=new Rr({image:S1,stroke:new er({color:[255,0,0,1],width:3})}),dE=new Rr({image:S1,stroke:new er({color:[255,0,0,1],width:3,lineDash:[1,10]})}),pE=(h,e)=>{let n=h.get("minResolution"),a=h.get("maxResolution"),l=e<=n&&e>a;return n&&a&&!l?[]:h.get("mot")!=="foot"?[hE,uE]:[dE]},I1=pE;var fE=new mr,Eu=class extends Tp{prepareFrame(){return!0}renderFrame(e){let{canvas:n,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%",n instanceof HTMLCanvasElement&&(n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.transformOrigin="top left",this.container.appendChild(n))),a){let{center:l,resolution:o,rotation:_}=e.viewState,{center:v,resolution:w,rotation:T}=a;if(w/o>=3)n?.getContext("2d")?.clearRect(0,0,n?.width,n?.height);else{let C=this.getLayer().getMapInternal(),L=C?.getPixelFromCoordinate(v),F=C?.getPixelFromCoordinate(l);L&&F&&(this.container.style.transform=vx(L[0]-F[0],L[1]-F[1],w/o,w/o,_-T,0,0))}}return this.container}getData(e){let n;try{let{pixelRatio:a}=this.getLayer();return n=this.canvas?.getContext("2d",{willReadFrequently:!0})?.getImageData(e[0]*(a||1),e[1]*(a||1),1,1).data||null,n}catch(a){console.error("error getting data",a)}return null}getFeatures(e){let n=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(n))}forEachFeatureAtCoordinate(e,n,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(_=>{l(_,this.layer_,_.getGeometry())}),o?.[0]}getFeaturesAtCoordinate(e,n=5){if(!e)return[];let a=this.getLayer(),o=a.getMapInternal()?.getView()?.getResolution()||1,_=10,v=fn([...e,...e],n*o),w=[],T=Object.values(a.trajectories||{});a.sort&&(T=T.sort(this.sort));let C=[];for(let L=0;L<T.length;L+=1){let F=T[L];if(F.properties.coordinate&&yo(v,F.properties.coordinate)&&C.push(T[L]),C.length===_)break}return w=C.map(L=>fE.readFeature(L)),w}};var mE=new mr,p_=class h extends kp(Ys(bs)){constructor(n){super({source:new Ro({}),...n});this.allowRenderWhenAnimating=!1;this.allowRenderWhenAnimating=!!n.allowRenderWhenAnimating,this.vectorLayer=new ll({updateWhileAnimating:this.allowRenderWhenAnimating,updateWhileInteracting:!0,source:new cl({features:[]}),style:(a,l)=>(n.fullTrajectoryStyle||Dp)(a,l,this.styleOptions)}),this.renderState={center:[0,0],zoom:void 0,rotation:0},this.onZoomEndDebounced=(0,d_.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,d_.default)(this.onMoveEnd,100)}createRenderer(){return new Eu(this)}attachToMap(n){if(super.attachToMap(n),this.map){this.visible&&this.start();let a=this.map.getLayers().getArray().indexOf(this);this.map.getLayers().insertAt(a,this.vectorLayer),this.olEventsKeys.push(...this.map.on(["moveend","change:target"],l=>{let o=(l.map||l.target).getView();if(o.getAnimating()||o.getInteracting())return;let _=o.getZoom();this.currentZoom!==_&&this.onZoomEndDebounced(l),this.currentZoom=_,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(n){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},n)}renderTrajectoriesInternal(n,a){if(!this.map)return!1;let l=!1;if(l=(this.allowRenderWhenAnimating?!1:this.map.getView().getAnimating()||this.map.getView().getInteracting())?!1:super.renderTrajectoriesInternal(n,a),l){this.renderedViewState={...n};let{container:_}=this.getRenderer();_&&(_.style.transform="")}return l}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getView().getZoom())}onMoveEnd(n){!this.isUpdateBboxOnMoveEnd||!this.visible||this.setBbox()}onZoomEnd(){super.onZoomEnd(),!(!this.isUpdateBboxOnMoveEnd||!this.visible)&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}highlight(n){this.highlightVehicle(n?.get("train_id"))}select(n){this.selectVehicle(n?.get("train_id")),this.highlightTrajectory(n?.get("train_id"))}purgeTrajectory(n,a,l){let o=this.map.getView().getCenter();return!a&&!o?!1:super.purgeTrajectory(n,a||this.map.getView().calculateExtent(),l||this.map.getView().getZoom()||0)}setBbox(n,a){super.setBbox(n||this.map.getView().calculateExtent(),a||this.map.getView().getZoom()||0)}highlightTrajectory(n){return n?this.api.getFullTrajectory(n,this.mode,this.getGeneralizationLevelByZoom(Math.floor(this.map?.getView()?.getZoom()||0))).then(a=>{let l=a.content;if(!l?.features?.length)return[];let o=mE.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(n){return new h({...this.options,...n})}},C1=p_;var f_=class h extends Ys(bs){constructor(e){super(e),console.warn("Layer is deprecated. Use an OpenLayers Layer instead.")}clone(e){return new h({...this.options||{},...e||{}})}},Fp=f_;var m_=class h extends Fp{getFeatureInfoAtCoordinate(e){let n=[];if(this.map){let a=this.map.getPixelFromCoordinate(e);n=this.map.getFeaturesAtPixel(a,{layerFilter:l=>l===this.olLayer,hitTolerance:this.hitTolerance||5})}return Promise.resolve({features:n,layer:this,coordinate:e})}clone(e){return new h({...this.options,...e})}},E1=m_;var gE=new mr,yE=(h,e,n)=>{let a,{coordinate:l,resolution:o,projection:_,params:v}=e;return h&&o&&_&&(a=h.getFeatureInfoUrl(l,o,_,{info_format:"application/json",query_layers:h.getParams().layers,...v})),fetch(a,{signal:n.signal}).then(w=>w.json()).then(w=>gE.readFeatures(w)).catch(()=>[])},Tu={},_E=async(h,e,n=5)=>{Object.values(Tu).forEach(o=>{o?.abort()}),Tu={};let l=Ya(e).map(o=>{let _=o.getMapInternal(),v=_?.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=Vt(o);Tu[F]?.abort(),Tu[F]=new AbortController;let q=_?.getView()?.getResolution();return yE(T,{coordinate:h,resolution:q,projection:v,params:{info_format:"application/json",query_layers:T.getParams().layers}},Tu[F]).then(K=>({features:K,layer:o,coordinate:h})).catch(()=>({features:[],layer:o,coordinate:h}))}let C=_?.getPixelFromCoordinate(h);if(!C)return Promise.resolve(w);let L=_?.getFeaturesAtPixel(C,{layerFilter:F=>F===o,hitTolerance:o.get("hitTolerance")||n||5});return Promise.resolve({features:L,layer:o,coordinate:h})});return Promise.all(l)},T1=_E;var Gp={};sm(Gp,{CopyrightControl:()=>M1,Layer:()=>Bp,RealtimeAPI:()=>Dh,RealtimeLayer:()=>W1,RealtimeModes:()=>Wi,RoutingAPI:()=>Rh,StopsAPI:()=>Lh,VECTOR_TILE_FEATURE_PROPERTY:()=>rc,compareDepartures:()=>ru,createCanvas:()=>xs,createRealtimeFilters:()=>um,debounceDeparturesMessages:()=>tg,debounceWebsocketMessages:()=>kh,getCircleCanvas:()=>cg,getDelayBgCanvas:()=>ag,getDelayTextCanvas:()=>lg,getHoursAndMinutes:()=>yx,getLayersAsFlatArray:()=>Ya,getMapGlCopyrights:()=>Fh,getMercatorResolution:()=>q1,getSourceCoordinates:()=>Vp,getTextCanvas:()=>hg,getUTCDateString:()=>mx,getUTCTimeString:()=>gx,getUrlWithParams:()=>Ha,getVehiclePosition:()=>tu,pad:()=>Bd,realtimeConfig:()=>ic,realtimeDefaultStyle:()=>sl,realtimeDelayStyle:()=>ug,realtimeSimpleStyle:()=>dg,removeDuplicate:()=>Xa,renderTrajectories:()=>iu,sortAndFilterDepartures:()=>nu,sortByDelay:()=>dm});var xE=" | ",g_=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||xE,n=this.options?.customAttribution||Fh(this.map),a=(Array.isArray(n)?n:[n]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},M1=g_;var Op,vE=new Uint8Array(16);function y_(){if(!Op&&(Op=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Op))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Op(vE)}var Dr=[];for(let h=0;h<256;++h)Dr.push((h+256).toString(16).slice(1));function A1(h,e=0){return Dr[h[e+0]]+Dr[h[e+1]]+Dr[h[e+2]]+Dr[h[e+3]]+"-"+Dr[h[e+4]]+Dr[h[e+5]]+"-"+Dr[h[e+6]]+Dr[h[e+7]]+"-"+Dr[h[e+8]]+Dr[h[e+9]]+"-"+Dr[h[e+10]]+Dr[h[e+11]]+Dr[h[e+12]]+Dr[h[e+13]]+Dr[h[e+14]]+Dr[h[e+15]]}var bE=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),__={randomUUID:bE};function wE(h,e,n){if(__.randomUUID&&!e&&!h)return __.randomUUID();h=h||{};let a=h.random||(h.rng||y_)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){n=n||0;for(let l=0;l<16;++l)e[n+l]=a[l];return e}return A1(a)}var x_=wE;var P1=Os(r_()),v_=class extends P1.Evented{constructor(n={}){super();this.options={};this.type="custom";this.options=n,this.id=n.id||x_(),this.type="custom"}onAdd(n,a){this.map=n}onRemove(n,a){this.map=void 0}render(n){}},Bp=v_;var ir=63710088e-1,R1={centimeters:ir*100,centimetres:ir*100,degrees:ir/111325,feet:ir*3.28084,inches:ir*39.37,kilometers:ir/1e3,kilometres:ir/1e3,meters:ir,metres:ir,miles:ir/1609.344,millimeters:ir*1e3,millimetres:ir*1e3,nauticalmiles:ir/1852,radians:1,yards:ir*1.0936},P6={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/ir,yards:1.0936133};function L1(h,e,n){n===void 0&&(n={});var a={type:"Feature"};return(n.id===0||n.id)&&(a.id=n.id),n.bbox&&(a.bbox=n.bbox),a.properties=e||{},a.geometry=h,a}function ga(h,e,n){if(n===void 0&&(n={}),!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(!b_(h[0])||!b_(h[1]))throw new Error("coordinates must contain numbers");var a={type:"Point",coordinates:h};return L1(a,e,n)}function SE(h,e){e===void 0&&(e="kilometers");var n=R1[e];if(!n)throw new Error(e+" units is invalid");return h*n}function IE(h,e){e===void 0&&(e="kilometers");var n=R1[e];if(!n)throw new Error(e+" units is invalid");return h/n}function k1(h){var e=h%(2*Math.PI);return e*180/Math.PI}function hl(h){var e=h%360;return e*Math.PI/180}function Np(h,e,n){if(e===void 0&&(e="kilometers"),n===void 0&&(n="kilometers"),!(h>=0))throw new Error("length must be a positive number");return SE(IE(h,e),n)}function b_(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function w_(h){return!!h&&h.constructor===Object}function Mu(h,e,n){if(h!==null)for(var a,l,o,_,v,w,T,C=0,L=0,F,q=h.type,K=q==="FeatureCollection",he=q==="Feature",W=K?h.features.length:1,H=0;H<W;H++){T=K?h.features[H].geometry:he?h.geometry:h,F=T?T.type==="GeometryCollection":!1,v=F?T.geometries.length:1;for(var se=0;se<v;se++){var ge=0,_e=0;if(_=F?T.geometries[se]:T,_!==null){w=_.coordinates;var fe=_.type;switch(C=n&&(fe==="Polygon"||fe==="MultiPolygon")?1:0,fe){case null:break;case"Point":if(e(w,L,H,ge,_e)===!1)return!1;L++,ge++;break;case"LineString":case"MultiPoint":for(a=0;a<w.length;a++){if(e(w[a],L,H,ge,_e)===!1)return!1;L++,fe==="MultiPoint"&&ge++}fe==="LineString"&&ge++;break;case"Polygon":case"MultiLineString":for(a=0;a<w.length;a++){for(l=0;l<w[a].length-C;l++){if(e(w[a][l],L,H,ge,_e)===!1)return!1;L++}fe==="MultiLineString"&&ge++,fe==="Polygon"&&_e++}fe==="Polygon"&&ge++;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-C;o++){if(e(w[a][l][o],L,H,ge,_e)===!1)return!1;L++}_e++}ge++}break;case"GeometryCollection":for(a=0;a<_.geometries.length;a++)if(Mu(_.geometries[a],e,n)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function CE(h,e){e===void 0&&(e={});var n=0,a=0,l=0;return Mu(h,function(o){n+=o[0],a+=o[1],l++},!0),ga([n/l,a/l],e.properties)}var D1=CE;function Ks(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 F1(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 EE(h,e,n){n===void 0&&(n={});var a;n.final?a=z1(Ks(e),Ks(h)):a=z1(Ks(h),Ks(e));var l=a>180?-(360-a):a;return l}function z1(h,e){var n=hl(h[1]),a=hl(e[1]),l=hl(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(n/2+Math.PI/4)),_=Math.atan2(l,o);return(k1(_)+360)%360}var O1=EE;function TE(h,e,n){n===void 0&&(n={});var a=Ks(h),l=Ks(e);l[0]+=l[0]-a[0]>180?-360:a[0]-l[0]>180?360:0;var o=ME(a,l),_=Np(o,"meters",n.units);return _}function ME(h,e,n){n=n===void 0?ir:Number(n);var a=n,l=h[1]*Math.PI/180,o=e[1]*Math.PI/180,_=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?_/w:Math.cos(l),C=Math.sqrt(_*_+T*T*v*v),L=C*a;return L}var B1=TE;function AE(h,e,n,a){a===void 0&&(a={});var l=e<0,o=Np(Math.abs(e),a.units,"meters");l&&(o=-Math.abs(o));var _=Ks(h),v=PE(_,o,n);return v[0]+=v[0]-_[0]>180?-360:_[0]-v[0]>180?360:0,ga(v,a.properties)}function PE(h,e,n,a){a=a===void 0?ir:Number(a);var l=e/a,o=h[0]*Math.PI/180,_=hl(h[1]),v=hl(n),w=l*Math.cos(v),T=_+w;Math.abs(T)>Math.PI/2&&(T=T>0?Math.PI-T:-Math.PI-T);var C=Math.log(Math.tan(T/2+Math.PI/4)/Math.tan(_/2+Math.PI/4)),L=Math.abs(C)>1e-11?w/C:Math.cos(_),F=l*Math.sin(v)/L,q=o+F;return[(q*180/Math.PI+540)%360-180,T*180/Math.PI]}var N1=AE;function RE(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return V1(h);case"FeatureCollection":return LE(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return S_(h);default:throw new Error("unknown GeoJSON type")}}function V1(h){var e={type:"Feature"};return Object.keys(h).forEach(function(n){switch(n){case"type":case"properties":case"geometry":return;default:e[n]=h[n]}}),e.properties=G1(h.properties),e.geometry=S_(h.geometry),e}function G1(h){var e={};return h&&Object.keys(h).forEach(function(n){var a=h[n];typeof a=="object"?a===null?e[n]=null:Array.isArray(a)?e[n]=a.map(function(l){return l}):e[n]=G1(a):e[n]=a}),e}function LE(h){var e={type:"FeatureCollection"};return Object.keys(h).forEach(function(n){switch(n){case"type":case"features":return;default:e[n]=h[n]}}),e.features=h.features.map(function(n){return V1(n)}),e}function S_(h){var e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(function(n){return S_(n)}),e):(e.coordinates=j1(h.coordinates),e)}function j1(h){var e=h;return typeof e[0]!="object"?e.slice():e.map(function(n){return j1(n)})}var U1=RE;function kE(h,e,n){if(n=n||{},!w_(n))throw new Error("options is invalid");var a=n.pivot,l=n.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=D1(h)),(l===!1||l===void 0)&&(h=U1(h)),Mu(h,function(o){var _=O1(a,o),v=_+e,w=B1(a,o),T=F1(N1(a,w,v));o[0]=T[0],o[1]=T[1]})),h}var I_=kE;var DE=(h,e=1)=>{let{width:n,height:a}=h.getCanvas(),l=h.unproject({x:0,y:0}),o=h.unproject({x:0,y:a/e}),_=h.unproject({x:n/e,y:a/e}),v=h.unproject({x:n/e,y:0});return[[l.lng,l.lat],[v.lng,v.lat],[_.lng,_.lat],[o.lng,o.lat]]},Vp=DE;var FE=h=>{let e=h.getBounds().toArray(),n=pr(e[0]),a=pr(e[1]),l=[...n,...a],{width:o,height:_}=h.getCanvas(),v=vi(l)/o,w=dr(l)/_;return Math.max(v,w)},q1=FE;var zE=h=>Gh(h.toArray().flat(),"EPSG:4326","EPSG:3857"),C_=zE;var E_=class extends kp(Bp){constructor(e={}){let n=document.createElement("canvas");super({canvas:n,id:"realtime",...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,n){super.onAdd(e,n),e.isStyleLoaded()&&this.onLoad(),e.on("load",this.onLoad)}onRemove(e,n){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,n)}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:n,height:a}=this.map.getCanvas(),l=this.map.getCenter(),o=this.map.unproject({x:0,y:a/this.pixelRatio}),_=this.map.unproject({x:n/this.pixelRatio,y:0}),v=I_(ga([o.lng,o.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,w=I_(ga([_.lng,_.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,T=[...pr(v),...pr(w)],C=vi(T)/(n/this.pixelRatio),L=dr(T)/(a/this.pixelRatio),F=Math.max(C,L),q={size:[n/this.pixelRatio,a/this.pixelRatio],center:pr([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(q,e)}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getZoom())}purgeTrajectory(e,n,a){return super.purgeTrajectory(e,n||C_(this.map.getBounds()),a||Math.floor(this.map.getZoom()-1))}setBbox(e,n){super.setBbox(e||C_(this.map.getBounds()),n||this.map.getZoom()-1)}renderTrajectoriesInternal(e,n=!1){let a=super.renderTrajectoriesInternal(e,n);if(a&&this.map.style){let l=Vp(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()}},W1=E_;var T_={ol:zp,maplibre:Gp};typeof window<"u"&&(window.mbt=T_);var FN=T_;})();
585
+ `){zt+=ft,ft=0,at=F*_e+Ie*q,++nt;continue}let kt=K[ct+1]||w.font;kt!==dt&&(l&&Ge.push("font",kt),a&&Ze.push("font",kt),dt=kt),ft=Math.max(ft,se[Ke]);let Gt=[mt,at+Ie*H[Ke]+F*(H[Ke]-ge[nt]),.5*(q+ft)+zt];at+=H[Ke],l&&Ge.push("strokeText",Gt),a&&Ze.push("fillText",Gt),++Ke}return Array.prototype.push.apply(fe,Ge),Array.prototype.push.apply(fe,Ze),this.labels_[o]=Re,Re}replayTextBackground_(e,n,a,l,o,_,v){e.beginPath(),e.moveTo.apply(e,n),e.lineTo.apply(e,a),e.lineTo.apply(e,l),e.lineTo.apply(e,o),e.lineTo.apply(e,n),_&&(this.alignAndScaleFill_=_[2],this.fill_(e)),v&&(this.setStrokeStyle_(e,v),e.stroke())}calculateImageOrLabelDimensions_(e,n,a,l,o,_,v,w,T,C,L,F,q,K,he,W){v*=F[0],w*=F[1];let H=a-v,se=l-w,ge=o+T>e?e-T:o,_e=_+C>n?n-C:_,fe=K[3]+ge*F[0]+K[1],xe=K[0]+_e*F[1]+K[2],Me=H-K[3],Re=se-K[0];(he||L!==0)&&(fa[0]=Me,ma[0]=Me,fa[1]=Re,Ao[1]=Re,Ao[0]=Me+fe,Po[0]=Ao[0],Po[1]=Re+xe,ma[1]=Po[1]);let Ie;return L!==0?(Ie=Cr(hr(),a,l,1,1,L,-a,-l),Qi(Ie,fa),Qi(Ie,Ao),Qi(Ie,Po),Qi(Ie,ma),xo(Math.min(fa[0],Ao[0],Po[0],ma[0]),Math.min(fa[1],Ao[1],Po[1],ma[1]),Math.max(fa[0],Ao[0],Po[0],ma[0]),Math.max(fa[1],Ao[1],Po[1],ma[1]),dc)):xo(Math.min(Me,Me+fe),Math.min(Re,Re+xe),Math.max(Me,Me+fe),Math.max(Re,Re+xe),dc),q&&(H=Math.round(H),se=Math.round(se)),{drawImageX:H,drawImageY:se,drawImageW:ge,drawImageH:_e,originX:T,originY:C,declutterBox:{minX:dc[0],minY:dc[1],maxX:dc[2],maxY:dc[3],value:W},canvasTransform:Ie,scale:F}}replayImageOrLabel_(e,n,a,l,o,_,v){let w=!!(_||v),T=l.declutterBox,C=v?v[2]*l.scale[0]/2:0;return T.minX-C<=n[0]&&T.maxX+C>=0&&T.minY-C<=n[1]&&T.maxY+C>=0&&(w&&this.replayTextBackground_(e,fa,Ao,Po,ma,_,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 n=this.alignAndScaleFill_;if(n){let a=Qi(this.renderedTransform_,[0,0]),l=512*this.pixelRatio;e.save(),e.translate(a[0]%l,a[1]%l),n!==1&&e.scale(n,n),e.rotate(this.viewRotation_)}e.fill(),n&&e.restore()}setStrokeStyle_(e,n){e.strokeStyle=n[1],e.lineWidth=n[2],e.lineCap=n[3],e.lineJoin=n[4],e.miterLimit=n[5],e.lineDashOffset=n[7],e.setLineDash(n[6])}drawLabelWithPointPlacement_(e,n,a,l){let o=this.textStates[n],_=this.createLabel(e,n,l,a),v=this.strokeStates[a],w=this.pixelRatio,T=Sy(Array.isArray(e)?e[0]:e,o.textAlign||ua),C=xu[o.textBaseline||al],L=v&&v.lineWidth?v.lineWidth:0,F=_.width/w-2*o.scale[0],q=T*F+2*(.5-T)*L,K=C*_.height/w+2*(.5-C)*L;return{label:_,anchorX:q,anchorY:K}}execute_(e,n,a,l,o,_,v,w){let T=this.zIndexContext_,C;this.pixelCoordinates_&&pn(a,this.renderedTransform_)?C=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),C=yn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),xx(this.renderedTransform_,a));let L=0,F=l.length,q=0,K,he,W,H,se,ge,_e,fe,xe,Me,Re,Ie,at,Ge=0,Ze=0,ft=null,zt=null,Ke=this.coordinateCache_,nt=this.viewRotation_,dt=Math.round(Math.atan2(-a[1],a[0])*1e12)/1e12,ct={context:e,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:nt},At=this.instructions!=l||this.overlaps?0:200,mt,kt,Gt,hi;for(;L<F;){let je=l[L];switch(je[0]){case gt.BEGIN_GEOMETRY:mt=je[1],hi=je[3],mt.getGeometry()?v!==void 0&&!Zi(v,hi.getExtent())?L=je[2]+1:++L:L=je[2],T&&(T.zIndex=je[4]);break;case gt.BEGIN_PATH:Ge>At&&(this.fill_(e),Ge=0),Ze>At&&(e.stroke(),Ze=0),!Ge&&!Ze&&(e.beginPath(),se=NaN,ge=NaN),++L;break;case gt.CIRCLE:q=je[1];let Pi=C[q],Fr=C[q+1],zr=C[q+2],En=C[q+3],Vi=zr-Pi,rn=En-Fr,ni=Math.sqrt(Vi*Vi+rn*rn);e.moveTo(Pi+ni,Fr),e.arc(Pi,Fr,ni,0,2*Math.PI,!0),++L;break;case gt.CLOSE_PATH:e.closePath(),++L;break;case gt.CUSTOM:q=je[1],K=je[2];let Tn=je[3],Te=je[4],nn=je[5];ct.geometry=Tn,ct.feature=mt,L in Ke||(Ke[L]=[]);let gr=Ke[L];nn?nn(C,q,K,2,gr):(gr[0]=C[q],gr[1]=C[q+1],gr.length=2),T&&(T.zIndex=je[6]),Te(gr,ct),++L;break;case gt.DRAW_IMAGE:q=je[1],K=je[2],xe=je[3],he=je[4],W=je[5];let Et=je[6],jt=je[7],yr=je[8],Gn=je[9],jn=je[10],sn=je[11],on=je[12],Mn=je[13];H=je[14]||"declutter";let Un=je[15];if(!xe&&je.length>=20){Me=je[19],Re=je[20],Ie=je[21],at=je[22];let le=this.drawLabelWithPointPlacement_(Me,Re,Ie,at);xe=le.label,je[3]=xe;let ue=je[23];he=(le.anchorX-ue)*this.pixelRatio,je[4]=he;let ne=je[24];W=(le.anchorY-ne)*this.pixelRatio,je[5]=W,Et=xe.height,je[6]=Et,Mn=xe.width,je[13]=Mn}let Ne;je.length>25&&(Ne=je[25]);let Gi,Ri,An;je.length>17?(Gi=je[16],Ri=je[17],An=je[18]):(Gi=Co,Ri=!1,An=!1),jn&&dt?sn+=nt:!jn&&!dt&&(sn-=nt);let rs=0;for(;q<K;q+=2){if(Ne&&Ne[rs++]<Mn/this.pixelRatio)continue;let le=this.calculateImageOrLabelDimensions_(xe.width,xe.height,C[q],C[q+1],Mn,Et,he,W,yr,Gn,sn,on,o,Gi,Ri||An,mt),ue=[e,n,xe,le,jt,Ri?ft:null,An?zt:null];if(w){let ne,ye,Ae;if(Un){let qe=K-q;if(!Un[qe]){Un[qe]={args:ue,declutterMode:H};continue}let Je=Un[qe];ne=Je.args,ye=Je.declutterMode,delete Un[qe],Ae=Ib(ne)}let Ce,Se;if(ne&&(ye!=="declutter"||!w.collides(Ae))&&(Ce=!0),(H!=="declutter"||!w.collides(le.declutterBox))&&(Se=!0),ye==="declutter"&&H==="declutter"){let qe=Ce&&Se;Ce=qe,Se=qe}Ce&&(ye!=="none"&&w.insert(Ae),this.replayImageOrLabel_.apply(this,ne)),Se&&(H!=="none"&&w.insert(le.declutterBox),this.replayImageOrLabel_.apply(this,ue))}else this.replayImageOrLabel_.apply(this,ue)}++L;break;case gt.DRAW_CHARS:let Be=je[1],St=je[2],yt=je[3],Yi=je[4];at=je[5];let Ki=je[6],xt=je[7],an=je[8];Ie=je[9];let ln=je[10];Me=je[11],Re=je[12];let yi=[je[13],je[13]];H=je[14]||"declutter";let Q=this.textStates[Re],B=Q.font,V=[Q.scale[0]*xt,Q.scale[1]*xt],U;B in this.widths_?U=this.widths_[B]:(U={},this.widths_[B]=U);let te=np(C,Be,St,2),ce=Math.abs(V[0])*Wg(B,Me,U);if(Yi||ce<=te){let le=this.textStates[Re].textAlign,ue=(te-ce)*Sy(Me,le),ne=Sb(C,Be,St,2,Me,ue,Ki,Math.abs(V[0]),Wg,B,U,dt?0:this.viewRotation_);e:if(ne){let ye=[],Ae,Ce,Se,qe,Je;if(Ie)for(Ae=0,Ce=ne.length;Ae<Ce;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,"",Ie),he=Je[2]+(V[0]<0?-ln:ln),W=yt*qe.height+(.5-yt)*2*ln*V[1]/V[0]-an;let ht=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Je[0],Je[1],qe.width,qe.height,he,W,0,0,Je[3],yi,!1,Co,!1,mt);if(w&&H==="declutter"&&w.collides(ht.declutterBox))break e;ye.push([e,n,qe,ht,1,null,null])}if(at)for(Ae=0,Ce=ne.length;Ae<Ce;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,at,""),he=Je[2],W=yt*qe.height-an;let ht=this.calculateImageOrLabelDimensions_(qe.width,qe.height,Je[0],Je[1],qe.width,qe.height,he,W,0,0,Je[3],yi,!1,Co,!1,mt);if(w&&H==="declutter"&&w.collides(ht.declutterBox))break e;ye.push([e,n,qe,ht,1,null,null])}w&&H!=="none"&&w.load(ye.map(Ib));for(let ht=0,_t=ye.length;ht<_t;++ht)this.replayImageOrLabel_.apply(this,ye[ht])}}++L;break;case gt.END_GEOMETRY:if(_!==void 0){mt=je[1];let le=_(mt,hi);if(le)return le}++L;break;case gt.FILL:At?Ge++:this.fill_(e),++L;break;case gt.MOVE_TO_LINE_TO:for(q=je[1],K=je[2],kt=C[q],Gt=C[q+1],_e=kt+.5|0,fe=Gt+.5|0,(_e!==se||fe!==ge)&&(e.moveTo(kt,Gt),se=_e,ge=fe),q+=2;q<K;q+=2)kt=C[q],Gt=C[q+1],_e=kt+.5|0,fe=Gt+.5|0,(q==K-2||_e!==se||fe!==ge)&&(e.lineTo(kt,Gt),se=_e,ge=fe);++L;break;case gt.SET_FILL_STYLE:ft=je,this.alignAndScaleFill_=je[2],Ge&&(this.fill_(e),Ge=0,Ze&&(e.stroke(),Ze=0)),e.fillStyle=je[1],++L;break;case gt.SET_STROKE_STYLE:zt=je,Ze&&(e.stroke(),Ze=0),this.setStrokeStyle_(e,je),++L;break;case gt.STROKE:At?Ze++:e.stroke(),++L;break;default:++L;break}}Ge&&this.fill_(e),Ze&&e.stroke()}execute(e,n,a,l,o,_){this.viewRotation_=l,this.execute_(e,n,a,this.instructions,o,void 0,void 0,_)}executeHitDetection(e,n,a,l,o){return this.viewRotation_=a,this.execute_(e,[e.canvas.width,e.canvas.height],n,this.hitDetectionInstructions,!0,l,o)}},Eb=Iy;var pc=["Polygon","Circle","LineString","Image","Text","Default"],Ty=["Image","Text"],Tb=pc.filter(h=>!Ty.includes(h)),Ey=class{constructor(e,n,a,l,o,_,v){this.maxExtent_=e,this.overlaps_=l,this.pixelRatio_=a,this.resolution_=n,this.renderBuffer_=_,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=hr(),this.renderedContext_=null,this.deferredZIndexContexts_={},this.createExecutors_(o,v)}clip(e,n){let a=this.getClipCoords(n);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,n){for(let a in e){let l=this.executorsByZIndex_[a];l===void 0&&(l={},this.executorsByZIndex_[a]=l);let o=e[a];for(let _ in o){let v=o[_];l[_]=new Eb(this.resolution_,this.pixelRatio_,this.overlaps_,v,n)}}}hasExecutors(e){for(let n in this.executorsByZIndex_){let a=this.executorsByZIndex_[n];for(let l=0,o=e.length;l<o;++l)if(e[l]in a)return!0}return!1}forEachFeatureAtCoordinate(e,n,a,l,o,_){l=Math.round(l);let v=l*2+1,w=Cr(this.hitDetectionTransform_,l+.5,l+.5,1/n,-1/n,-a,-e[0],-e[1]),T=!this.hitDetectionContext_;T&&(this.hitDetectionContext_=Ni(v,v,void 0,{willReadFrequently:!0}));let C=this.hitDetectionContext_;C.canvas.width!==v||C.canvas.height!==v?(C.canvas.width=v,C.canvas.height=v):T||C.clearRect(0,0,v,v);let L;this.renderBuffer_!==void 0&&(L=gn(),xm(L,e),fn(L,n*(this.renderBuffer_+l),L));let F=BI(l),q;function K(fe,xe){let Me=C.getImageData(0,0,v,v).data;for(let Re=0,Ie=F.length;Re<Ie;Re++)if(Me[F[Re]]>0){if(!_||q!=="Image"&&q!=="Text"||_.includes(fe)){let at=(F[Re]-3)/4,Ge=l-at%v,Ze=l-(at/v|0),ft=o(fe,xe,Ge*Ge+Ze*Ze);if(ft)return ft}C.clearRect(0,0,v,v);break}}let he=Object.keys(this.executorsByZIndex_).map(Number);he.sort(fs);let W,H,se,ge,_e;for(W=he.length-1;W>=0;--W){let fe=he[W].toString();for(se=this.executorsByZIndex_[fe],H=pc.length-1;H>=0;--H)if(q=pc[H],ge=se[q],ge!==void 0&&(_e=ge.executeHitDetection(C,w,a,K,L),_e))return _e}}getClipCoords(e){let n=this.maxExtent_;if(!n)return null;let a=n[0],l=n[1],o=n[2],_=n[3],v=[a,l,a,_,o,_,o,l];return yn(v,0,8,2,e,v),v}isEmpty(){return Bn(this.executorsByZIndex_)}execute(e,n,a,l,o,_,v){let w=Object.keys(this.executorsByZIndex_).map(Number);w.sort(fs),_=_||pc;let T,C,L,F,q,K;for(v&&w.reverse(),T=0,C=w.length;T<C;++T){let he=w[T].toString();for(q=this.executorsByZIndex_[he],L=0,F=_.length;L<F;++L){let W=_[L];if(K=q[W],K!==void 0){let H=v===null?void 0:K.getZIndexContext(),se=H?H.getContext():e,ge=this.maxExtent_&&W!=="Image"&&W!=="Text";if(ge&&(se.save(),this.clip(se,a)),K.execute(se,n,a,l,o,v),ge&&se.restore(),H){H.offset();let _e=w[T];this.deferredZIndexContexts_[_e]||(this.deferredZIndexContexts_[_e]=[]),this.deferredZIndexContexts_[_e].push(H)}}}}this.renderedContext_=e}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){let e=this.deferredZIndexContexts_,n=Object.keys(e).map(Number).sort(fs);for(let a=0,l=n.length;a<l;++a)e[n[a]].forEach(o=>{o.draw(this.renderedContext_),o.clear()})}},Cy={};function BI(h){if(Cy[h]!==void 0)return Cy[h];let e=h*2+1,n=h*h,a=new Array(n+1);for(let o=0;o<=h;++o)for(let _=0;_<=h;++_){let v=o*o+_*_;if(v>n)break;let w=a[v];w||(w=[],a[v]=w),w.push(((h+o)*e+(h+_))*4+3),o>0&&w.push(((h-o)*e+(h+_))*4+3),_>0&&(w.push(((h+o)*e+(h-_))*4+3),o>0&&w.push(((h-o)*e+(h-_))*4+3))}let l=[];for(let o=0,_=a.length;o<_;++o)a[o]&&l.push(...a[o]);return Cy[h]=l,l}var Mb=Ey;var My=class extends Cp{constructor(e,n,a,l,o,_,v){super(),this.context_=e,this.pixelRatio_=n,this.extent_=a,this.transform_=l,this.transformRotation_=l?jx(Math.atan2(l[1],l[0]),10):0,this.viewRotation_=o,this.squaredTolerance_=_,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_=hr()}drawImages_(e,n,a,l){if(!this.image_)return;let o=yn(e,n,a,l,this.transform_,this.pixelCoordinates_),_=this.context_,v=this.tmpLocalTransform_,w=_.globalAlpha;this.imageOpacity_!=1&&(_.globalAlpha=w*this.imageOpacity_);let T=this.imageRotation_;this.transformRotation_===0&&(T-=this.viewRotation_),this.imageRotateWithView_&&(T+=this.viewRotation_);for(let C=0,L=o.length;C<L;C+=2){let F=o[C]-this.imageAnchorX_,q=o[C+1]-this.imageAnchorY_;if(T!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let K=F+this.imageAnchorX_,he=q+this.imageAnchorY_;Cr(v,K,he,1,1,T,-K,-he),_.save(),_.transform.apply(_,v),_.translate(K,he),_.scale(this.imageScale_[0],this.imageScale_[1]),_.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),_.restore()}else _.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,F,q,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(_.globalAlpha=w)}drawText_(e,n,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=yn(e,n,a,l,this.transform_,this.pixelCoordinates_),_=this.context_,v=this.textRotation_;for(this.transformRotation_===0&&(v-=this.viewRotation_),this.textRotateWithView_&&(v+=this.viewRotation_);n<a;n+=l){let w=o[n]+this.textOffsetX_,T=o[n+1]+this.textOffsetY_;v!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(_.save(),_.translate(w-this.textOffsetX_,T-this.textOffsetY_),_.rotate(v),_.translate(this.textOffsetX_,this.textOffsetY_),_.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&_.strokeText(this.text_,0,0),this.textFillState_&&_.fillText(this.text_,0,0),_.restore()):(this.textStrokeState_&&_.strokeText(this.text_,w,T),this.textFillState_&&_.fillText(this.text_,w,T))}}moveToLineTo_(e,n,a,l,o){let _=this.context_,v=yn(e,n,a,l,this.transform_,this.pixelCoordinates_);_.moveTo(v[0],v[1]);let w=v.length;o&&(w-=2);for(let T=2;T<w;T+=2)_.lineTo(v[T],v[T+1]);return o&&_.closePath(),a}drawRings_(e,n,a,l){for(let o=0,_=a.length;o<_;++o)n=this.moveToLineTo_(e,n,a[o],l,!0);return n}drawCircle(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Zi(this.extent_,e.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let n=rv(e,this.transform_,this.pixelCoordinates_),a=n[2]-n[0],l=n[3]-n[1],o=Math.sqrt(a*a+l*l),_=this.context_;_.beginPath(),_.arc(n[0],n[1],o,0,2*Math.PI),this.fillState_&&_.fill(),this.strokeState_&&_.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,n){let a=n.getGeometryFunction()(e);a&&(this.setStyle(n),this.drawGeometry(a))}drawGeometryCollection(e){let n=e.getGeometriesArray();for(let a=0,l=n.length;a<l;++a)this.drawGeometry(n[a])}drawPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let n=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(n,0,n.length,a),this.text_!==""&&this.drawText_(n,0,n.length,a)}drawMultiPoint(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let n=e.getFlatCoordinates(),a=e.getStride();this.image_&&this.drawImages_(n,0,n.length,a),this.text_!==""&&this.drawText_(n,0,n.length,a)}drawLineString(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Zi(this.extent_,e.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let n=this.context_,a=e.getFlatCoordinates();n.beginPath(),this.moveToLineTo_(a,0,a.length,e.getStride(),!1),n.stroke()}if(this.text_!==""){let n=e.getFlatMidpoint();this.drawText_(n,0,2,2)}}}drawMultiLineString(e){this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let n=e.getExtent();if(Zi(this.extent_,n)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let a=this.context_,l=e.getFlatCoordinates(),o=0,_=e.getEnds(),v=e.getStride();a.beginPath();for(let w=0,T=_.length;w<T;++w)o=this.moveToLineTo_(l,o,_[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_)),!!Zi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let n=this.context_;n.beginPath(),this.drawRings_(e.getOrientedFlatCoordinates(),0,e.getEnds(),e.getStride()),this.fillState_&&n.fill(),this.strokeState_&&n.stroke()}if(this.text_!==""){let n=e.getFlatInteriorPoint();this.drawText_(n,0,2,2)}}}drawMultiPolygon(e){if(this.squaredTolerance_&&(e=e.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!Zi(this.extent_,e.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let n=this.context_,a=e.getOrientedFlatCoordinates(),l=0,o=e.getEndss(),_=e.getStride();n.beginPath();for(let v=0,w=o.length;v<w;++v){let T=o[v];l=this.drawRings_(a,l,T,_)}this.fillState_&&n.fill(),this.strokeState_&&n.stroke()}if(this.text_!==""){let n=e.getFlatInteriorPoints();this.drawText_(n,0,n.length,2)}}}setContextFillState_(e){let n=this.context_,a=this.contextFillState_;a?a.fillStyle!=e.fillStyle&&(a.fillStyle=e.fillStyle,n.fillStyle=e.fillStyle):(n.fillStyle=e.fillStyle,this.contextFillState_={fillStyle:e.fillStyle})}setContextStrokeState_(e){let n=this.context_,a=this.contextStrokeState_;a?(a.lineCap!=e.lineCap&&(a.lineCap=e.lineCap,n.lineCap=e.lineCap),pn(a.lineDash,e.lineDash)||n.setLineDash(a.lineDash=e.lineDash),a.lineDashOffset!=e.lineDashOffset&&(a.lineDashOffset=e.lineDashOffset,n.lineDashOffset=e.lineDashOffset),a.lineJoin!=e.lineJoin&&(a.lineJoin=e.lineJoin,n.lineJoin=e.lineJoin),a.lineWidth!=e.lineWidth&&(a.lineWidth=e.lineWidth,n.lineWidth=e.lineWidth),a.miterLimit!=e.miterLimit&&(a.miterLimit=e.miterLimit,n.miterLimit=e.miterLimit),a.strokeStyle!=e.strokeStyle&&(a.strokeStyle=e.strokeStyle,n.strokeStyle=e.strokeStyle)):(n.lineCap=e.lineCap,n.setLineDash(e.lineDash),n.lineDashOffset=e.lineDashOffset,n.lineJoin=e.lineJoin,n.lineWidth=e.lineWidth,n.miterLimit=e.miterLimit,n.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 n=this.context_,a=this.contextTextState_,l=e.textAlign?e.textAlign:ua;a?(a.font!=e.font&&(a.font=e.font,n.font=e.font),a.textAlign!=l&&(a.textAlign=l,n.textAlign=l),a.textBaseline!=e.textBaseline&&(a.textBaseline=e.textBaseline,n.textBaseline=e.textBaseline)):(n.font=e.font,n.textAlign=l,n.textBaseline=e.textBaseline,this.contextTextState_={font:e.font,textAlign:l,textBaseline:e.textBaseline})}setFillStrokeStyle(e,n){if(!e)this.fillState_=null;else{let a=e.getColor();this.fillState_={fillStyle:vn(a||tr)}}if(!n)this.strokeState_=null;else{let a=n.getColor(),l=n.getLineCap(),o=n.getLineDash(),_=n.getLineDashOffset(),v=n.getLineJoin(),w=n.getWidth(),T=n.getMiterLimit(),C=o||bn;this.strokeState_={lineCap:l!==void 0?l:Us,lineDash:this.pixelRatio_===1?C:C.map(L=>L*this.pixelRatio_),lineDashOffset:(_||wn)*this.pixelRatio_,lineJoin:v!==void 0?v:qs,lineWidth:(w!==void 0?w:Eo)*this.pixelRatio_,miterLimit:T!==void 0?T:So,strokeStyle:vn(a||Io)}}}setImageStyle(e){let n;if(!e||!(n=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_=n[1]*a,this.imageOpacity_=e.getOpacity(),this.imageOriginX_=o[0],this.imageOriginY_=o[1],this.imageRotateWithView_=e.getRotateWithView(),this.imageRotation_=e.getRotation();let _=e.getScaleArray();this.imageScale_=[_[0]*this.pixelRatio_/a,_[1]*this.pixelRatio_/a],this.imageWidth_=n[0]*a}setTextStyle(e){if(!e)this.text_="";else{let n=e.getFill();if(!n)this.textFillState_=null;else{let q=n.getColor();this.textFillState_={fillStyle:vn(q||tr)}}let a=e.getStroke();if(!a)this.textStrokeState_=null;else{let q=a.getColor(),K=a.getLineCap(),he=a.getLineDash(),W=a.getLineDashOffset(),H=a.getLineJoin(),se=a.getWidth(),ge=a.getMiterLimit();this.textStrokeState_={lineCap:K!==void 0?K:Us,lineDash:he||bn,lineDashOffset:W||wn,lineJoin:H!==void 0?H:qs,lineWidth:se!==void 0?se:Eo,miterLimit:ge!==void 0?ge:So,strokeStyle:vn(q||Io)}}let l=e.getFont(),o=e.getOffsetX(),_=e.getOffsetY(),v=e.getRotateWithView(),w=e.getRotation(),T=e.getScaleArray(),C=e.getText(),L=e.getTextAlign(),F=e.getTextBaseline();this.textState_={font:l!==void 0?l:_p,textAlign:L!==void 0?L:ua,textBaseline:F!==void 0?F:al},this.text_=C!==void 0?Array.isArray(C)?C.reduce((q,K,he)=>q+=he%2?" ":K,""):C:"",this.textOffsetX_=o!==void 0?this.pixelRatio_*o:0,this.textOffsetY_=_!==void 0?this.pixelRatio_*_: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]]}}},Ab=My;var Es=.5;function Pb(h,e,n,a,l,o,_,v,w){let T=w?Ns(l,w):l,C=h[0]*Es,L=h[1]*Es,F=Ni(C,L);F.imageSmoothingEnabled=!1;let q=F.canvas,K=new Ab(F,Es,l,null,_,v,w?Ql(Nn(),w):null),he=n.length,W=Math.floor((256*256*256-1)/he),H={};for(let ge=1;ge<=he;++ge){let _e=n[ge-1],fe=_e.getStyleFunction()||a;if(!fe)continue;let xe=fe(_e,o);if(!xe)continue;Array.isArray(xe)||(xe=[xe]);let Re=(ge*W).toString(16).padStart(7,"#00000");for(let Ie=0,at=xe.length;Ie<at;++Ie){let Ge=xe[Ie],Ze=Ge.getGeometryFunction()(_e);if(!Ze||!Zi(T,Ze.getExtent()))continue;let ft=Ge.clone(),zt=ft.getFill();zt&&zt.setColor(Re);let Ke=ft.getStroke();Ke&&(Ke.setColor(Re),Ke.setLineDash(null)),ft.setText(void 0);let nt=Ge.getImage();if(nt){let mt=nt.getImageSize();if(!mt)continue;let kt=Ni(mt[0],mt[1],void 0,{alpha:!1}),Gt=kt.canvas;kt.fillStyle=Re,kt.fillRect(0,0,Gt.width,Gt.height),ft.setImage(new hu({img:Gt,anchor:nt.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:nt.getOrigin(),opacity:1,size:nt.getSize(),scale:nt.getScale(),rotation:nt.getRotation(),rotateWithView:nt.getRotateWithView()}))}let dt=ft.getZIndex()||0,ct=H[dt];ct||(ct={},H[dt]=ct,ct.Polygon=[],ct.Circle=[],ct.LineString=[],ct.Point=[]);let At=Ze.getType();if(At==="GeometryCollection"){let mt=Ze.getGeometriesArrayRecursive();for(let kt=0,Gt=mt.length;kt<Gt;++kt){let hi=mt[kt];ct[hi.getType().replace("Multi","")].push(hi,ft)}}else ct[At.replace("Multi","")].push(Ze,ft)}}let se=Object.keys(H).map(Number).sort(fs);for(let ge=0,_e=se.length;ge<_e;++ge){let fe=H[se[ge]];for(let xe in fe){let Me=fe[xe];for(let Re=0,Ie=Me.length;Re<Ie;Re+=2){K.setStyle(Me[Re+1]);for(let at=0,Ge=e.length;at<Ge;++at)K.setTransform(e[at]),K.drawGeometry(Me[Re])}}}return F.getImageData(0,0,q.width,q.height)}function Rb(h,e,n){let a=[];if(n){let l=Math.floor(Math.round(h[0])*Es),o=Math.floor(Math.round(h[1])*Es),_=(bi(l,0,n.width-1)+bi(o,0,n.height-1)*n.width)*4,v=n.data[_],w=n.data[_+1],C=n.data[_+2]+256*(w+256*v),L=Math.floor((256*256*256-1)/e.length);C&&C%L===0&&a.push(e[C/L-1])}return a}var NI=.5,Lb={Point:$I,LineString:UI,Polygon:HI,MultiPoint:ZI,MultiLineString:qI,MultiPolygon:WI,GeometryCollection:jI,Circle:VI};function kb(h,e){return parseInt(Vt(h),10)-parseInt(Vt(e),10)}function Ay(h,e){let n=Py(h,e);return n*n}function Py(h,e){return NI*h/e}function VI(h,e,n,a,l){let o=n.getFill(),_=n.getStroke();if(o||_){let w=h.getBuilder(n.getZIndex(),"Circle");w.setFillStrokeStyle(o,_),w.drawCircle(e,a,l)}let v=n.getText();if(v&&v.getText()){let w=h.getBuilder(n.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a)}}function Ry(h,e,n,a,l,o,_,v){let w=[],T=n.getImage();if(T){let F=!0,q=T.getImageState();q==Mt.LOADED||q==Mt.ERROR?F=!1:q==Mt.IDLE&&T.load(),F&&w.push(T.ready())}let C=n.getFill();C&&C.loading()&&w.push(C.ready());let L=w.length>0;return L&&Promise.all(w).then(()=>l(null)),GI(h,e,n,a,o,_,v),L}function GI(h,e,n,a,l,o,_){let v=n.getGeometryFunction()(e);if(!v)return;let w=v.simplifyTransformed(a,l);if(n.getRenderer())Db(h,w,n,e,_);else{let C=Lb[w.getType()];C(h,w,n,e,_,o)}}function Db(h,e,n,a,l){if(e.getType()=="GeometryCollection"){let _=e.getGeometries();for(let v=0,w=_.length;v<w;++v)Db(h,_[v],n,a,l);return}h.getBuilder(n.getZIndex(),"Default").drawCustom(e,a,n.getRenderer(),n.getHitDetectionRenderer(),l)}function jI(h,e,n,a,l,o){let _=e.getGeometriesArray(),v,w;for(v=0,w=_.length;v<w;++v){let T=Lb[_[v].getType()];T(h,_[v],n,a,l,o)}}function UI(h,e,n,a,l){let o=n.getStroke();if(o){let v=h.getBuilder(n.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawLineString(e,a,l)}let _=n.getText();if(_&&_.getText()){let v=h.getBuilder(n.getZIndex(),"Text");v.setTextStyle(_),v.drawText(e,a,l)}}function qI(h,e,n,a,l){let o=n.getStroke();if(o){let v=h.getBuilder(n.getZIndex(),"LineString");v.setFillStrokeStyle(null,o),v.drawMultiLineString(e,a,l)}let _=n.getText();if(_&&_.getText()){let v=h.getBuilder(n.getZIndex(),"Text");v.setTextStyle(_),v.drawText(e,a,l)}}function WI(h,e,n,a,l){let o=n.getFill(),_=n.getStroke();if(_||o){let w=h.getBuilder(n.getZIndex(),"Polygon");w.setFillStrokeStyle(o,_),w.drawMultiPolygon(e,a,l)}let v=n.getText();if(v&&v.getText()){let w=h.getBuilder(n.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}function $I(h,e,n,a,l,o){let _=n.getImage(),v=n.getText(),w=v&&v.getText(),T=o&&_&&w?{}:void 0;if(_){if(_.getImageState()!=Mt.LOADED)return;let C=h.getBuilder(n.getZIndex(),"Image");C.setImageStyle(_,T),C.drawPoint(e,a,l)}if(w){let C=h.getBuilder(n.getZIndex(),"Text");C.setTextStyle(v,T),C.drawText(e,a,l)}}function ZI(h,e,n,a,l,o){let _=n.getImage(),v=_&&_.getOpacity()!==0,w=n.getText(),T=w&&w.getText(),C=o&&v&&T?{}:void 0;if(v){if(_.getImageState()!=Mt.LOADED)return;let L=h.getBuilder(n.getZIndex(),"Image");L.setImageStyle(_,C),L.drawMultiPoint(e,a,l)}if(T){let L=h.getBuilder(n.getZIndex(),"Text");L.setTextStyle(w,C),L.drawText(e,a,l)}}function HI(h,e,n,a,l){let o=n.getFill(),_=n.getStroke();if(o||_){let w=h.getBuilder(n.getZIndex(),"Polygon");w.setFillStrokeStyle(o,_),w.drawPolygon(e,a,l)}let v=n.getText();if(v&&v.getText()){let w=h.getBuilder(n.getZIndex(),"Text");w.setTextStyle(v),w.drawText(e,a,l)}}var Ly=class extends Tp{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_=gn(),this.wrappedRenderedExtent_=gn(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.targetContext_=null,this.opacity_=1}renderWorlds(e,n,a){let l=n.extent,o=n.viewState,_=o.center,v=o.resolution,w=o.projection,T=o.rotation,C=w.getExtent(),L=this.getLayer().getSource(),F=this.getLayer().getDeclutter(),q=n.pixelRatio,K=n.viewHints,he=!(K[_n.ANIMATING]||K[_n.INTERACTING]),W=this.context,H=Math.round(vi(l)/v*q),se=Math.round(dr(l)/v*q),ge=L.getWrapX()&&w.canWrapX(),_e=ge?vi(C):null,fe=ge?Math.ceil((l[2]-C[2])/_e)+1:1,xe=ge?Math.floor((l[0]-C[0])/_e):0;do{let Me=this.getRenderTransform(_,v,T,q,H,se,xe*_e);e.execute(W,[W.canvas.width,W.canvas.height],Me,T,he,a===void 0?pc:a?Ty:Tb,a?F&&n.declutter[F]:void 0)}while(++xe<fe)}setDrawContext_(){this.opacity_!==1&&(this.targetContext_=this.context,this.context=Ni(this.context.canvas.width,this.context.canvas.height,wy))}resetDrawContext_(){if(this.opacity_!==1){let e=this.targetContext_.globalAlpha;this.targetContext_.globalAlpha=this.opacity_,this.targetContext_.drawImage(this.context.canvas,0,0),this.targetContext_.globalAlpha=e,Rv(this.context),wy.push(this.context.canvas),this.context=this.targetContext_,this.targetContext_=null}}renderDeclutter(e){!this.replayGroup_||!this.getLayer().getDeclutter()||this.renderWorlds(this.replayGroup_,e,!0)}renderDeferredInternal(e){this.replayGroup_&&(this.replayGroup_.renderDeferred(),this.resetDrawContext_())}renderFrame(e,n){let a=e.pixelRatio,l=e.layerStatesArray[e.layerIndex];this.opacity_=l.opacity;let o=e.extent,_=e.viewState.resolution,v=Math.round(vi(o)/_*a),w=Math.round(dr(o)/_*a);Cr(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/a,1/a,0,-v/2,-w/2),bx(this.inversePixelTransform,this.pixelTransform);let T=pm(this.pixelTransform);this.useContainer(n,T,this.getBackground(e));let C=this.context,L=C.canvas,F=this.replayGroup_,q=F&&!F.isEmpty();if(!q&&!(this.getLayer().hasListener(Gs.PRERENDER)||this.getLayer().hasListener(Gs.POSTRENDER)))return null;L.width!=v||L.height!=w?(L.width=v,L.height=w,L.style.transform!==T&&(L.style.transform=T)):this.containerReused||C.clearRect(0,0,v,w),this.setDrawContext_(),this.preRender(C,e);let K=e.viewState,he=K.projection,W=!1;if(q&&l.extent&&this.clipping){let H=Vs(l.extent,he);q=Zi(H,e.extent),W=q&&!_o(H,e.extent),W&&this.clipUnrotated(C,e,H)}return q&&this.renderWorlds(F,e,this.getLayer().getDeclutter()?!1:void 0),W&&C.restore(),this.postRender(C,e),this.renderedRotation_!==K.rotation&&(this.renderedRotation_=K.rotation,this.hitDetectionImageData_=null),e.declutter||this.resetDrawContext_(),this.container}getFeatures(e){return new Promise(n=>{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let a=[this.context.canvas.width,this.context.canvas.height];Qi(this.pixelTransform,a);let l=this.renderedCenter_,o=this.renderedResolution_,_=this.renderedRotation_,v=this.renderedProjection_,w=this.wrappedRenderedExtent_,T=this.getLayer(),C=[],L=a[0]*Es,F=a[1]*Es;C.push(this.getRenderTransform(l,o,_,Es,L,F,0).slice());let q=T.getSource(),K=v.getExtent();if(q.getWrapX()&&v.canWrapX()&&!_o(K,w)){let W=w[0],H=vi(K),se=0,ge;for(;W<K[0];)--se,ge=H*se,C.push(this.getRenderTransform(l,o,_,Es,L,F,ge).slice()),W+=H;for(se=0,W=w[2];W>K[2];)++se,ge=H*se,C.push(this.getRenderTransform(l,o,_,Es,L,F,ge).slice()),W-=H}let he=Nn();this.hitDetectionImageData_=Pb(a,C,this.renderedFeatures_,T.getStyleFunction(),w,o,_,Ay(o,this.renderedPixelRatio_),he?v:null)}n(Rb(e,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(e,n,a,l,o){if(!this.replayGroup_)return;let _=n.viewState.resolution,v=n.viewState.rotation,w=this.getLayer(),T={},C=function(K,he,W){let H=Vt(K),se=T[H];if(se){if(se!==!0&&W<se.distanceSq){if(W===0)return T[H]=!0,o.splice(o.lastIndexOf(se),1),l(K,w,he);se.geometry=he,se.distanceSq=W}}else{if(W===0)return T[H]=!0,l(K,w,he);o.push(T[H]={feature:K,layer:w,geometry:he,distanceSq:W,callback:l})}},L,F=[this.replayGroup_],q=this.getLayer().getDeclutter();return F.some(K=>L=K.forEachFeatureAtCoordinate(e,_,v,a,C,q&&n.declutter[q]?n.declutter[q].all().map(he=>he.value):null)),L}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let n=this.getLayer(),a=n.getSource();if(!a)return!1;let l=e.viewHints[_n.ANIMATING],o=e.viewHints[_n.INTERACTING],_=n.getUpdateWhileAnimating(),v=n.getUpdateWhileInteracting();if(this.ready&&!_&&l||!v&&o)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let w=e.extent,T=e.viewState,C=T.projection,L=T.resolution,F=e.pixelRatio,q=n.getRevision(),K=n.getRenderBuffer(),he=n.getRenderOrder();he===void 0&&(he=kb);let W=T.center.slice(),H=fn(w,K*L),se=H.slice(),ge=[H.slice()],_e=C.getExtent();if(a.getWrapX()&&C.canWrapX()&&!_o(_e,e.extent)){let Ke=vi(_e),nt=Math.max(vi(H)/2,Ke);H[0]=_e[0]-nt,H[2]=_e[2]+nt,$x(W,C);let dt=Cm(ge[0],C);dt[0]<_e[0]&&dt[2]<_e[2]?ge.push([dt[0]+Ke,dt[1],dt[2]+Ke,dt[3]]):dt[0]>_e[0]&&dt[2]>_e[2]&&ge.push([dt[0]-Ke,dt[1],dt[2]-Ke,dt[3]])}if(this.ready&&this.renderedResolution_==L&&this.renderedRevision_==q&&this.renderedRenderOrder_==he&&_o(this.wrappedRenderedExtent_,H))return pn(this.renderedExtent_,se)||(this.hitDetectionImageData_=null,this.renderedExtent_=se),this.renderedCenter_=W,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let fe=new bb(Py(L,F),H,L,F),xe=Nn(),Me;if(xe){for(let Ke=0,nt=ge.length;Ke<nt;++Ke){let dt=ge[Ke],ct=Ns(dt,C);a.loadFeatures(ct,Jx(L,C),xe)}Me=Ql(xe,C)}else for(let Ke=0,nt=ge.length;Ke<nt;++Ke)a.loadFeatures(ge[Ke],L,C);let Re=Ay(L,F),Ie=!0,at=(Ke,nt)=>{let dt,ct=Ke.getStyleFunction()||n.getStyleFunction();if(ct&&(dt=ct(Ke,L)),dt){let At=this.renderFeature(Ke,Re,dt,fe,Me,this.getLayer().getDeclutter(),nt);Ie=Ie&&!At}},Ge=Ns(H,C),Ze=a.getFeaturesInExtent(Ge);he&&Ze.sort(he);for(let Ke=0,nt=Ze.length;Ke<nt;++Ke)at(Ze[Ke],Ke);this.renderedFeatures_=Ze,this.ready=Ie;let ft=fe.finish(),zt=new Mb(H,L,F,a.getOverlaps(),ft,n.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=L,this.renderedRevision_=q,this.renderedRenderOrder_=he,this.renderedExtent_=se,this.wrappedRenderedExtent_=H,this.renderedCenter_=W,this.renderedProjection_=C,this.renderedPixelRatio_=F,this.replayGroup_=zt,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(e,n,a,l,o,_,v){if(!a)return!1;let w=!1;if(Array.isArray(a))for(let T=0,C=a.length;T<C;++T)w=Ry(l,e,a[T],n,this.boundHandleStyleImageChange_,o,_,v)||w;else w=Ry(l,e,a,n,this.boundHandleStyleImageChange_,o,_,v);return w}},Fb=Ly;var ky=class extends mb{constructor(e){super(e)}createRenderer(){return new Fb(this)}},ll=ky;var zb=Os(Jg(),1);var Dy=class{constructor(e){this.rbush_=new zb.default(e),this.items_={}}insert(e,n){let a={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3],value:n};this.rbush_.insert(a),this.items_[Vt(n)]=a}load(e,n){let a=new Array(n.length);for(let l=0,o=n.length;l<o;l++){let _=e[l],v=n[l],w={minX:_[0],minY:_[1],maxX:_[2],maxY:_[3],value:v};a[l]=w,this.items_[Vt(v)]=w}this.rbush_.load(a)}remove(e){let n=Vt(e),a=this.items_[n];return delete this.items_[n],this.rbush_.remove(a)!==null}update(e,n){let a=this.items_[Vt(n)],l=[a.minX,a.minY,a.maxX,a.maxY];Zd(l,e)||(this.remove(n),this.insert(e,n))}getAll(){return this.rbush_.all().map(function(n){return n.value})}getInExtent(e){let n={minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]};return this.rbush_.search(n).map(function(l){return l.value})}forEach(e){return this.forEach_(this.getAll(),e)}forEachInExtent(e,n){return this.forEach_(this.getInExtent(e),n)}forEach_(e,n){let a;for(let l=0,o=e.length;l<o;l++)if(a=n(e[l]),a)return a;return a}isEmpty(){return Bn(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let n=this.rbush_.toJSON();return xo(n.minX,n.minY,n.maxX,n.maxY,e)}concat(e){this.rbush_.load(e.rbush_.all());for(let n in e.items_)this.items_[n]=e.items_[n]}},vu=Dy;var Ob=hr(),bu=class h{constructor(e,n,a,l,o,_){this.styleFunction,this.extent_,this.id_=_,this.type_=e,this.flatCoordinates_=n,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"?ta(this.flatCoordinates_):Xl(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=Jn(this.getExtent());this.flatInteriorPoints_=Kh(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=gv(this.flatCoordinates_,this.ends_),n=ap(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=sp(this.flatCoordinates_,0,e,2,n)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=nl(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];let e=this.flatCoordinates_,n=0,a=this.ends_;for(let l=0,o=a.length;l<o;++l){let _=a[l],v=nl(e,n,_,2,.5);Er(this.flatMidpoints_,v),n=_}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(e){return this}simplifyTransformed(e,n){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=Bi(e);let n=e.getExtent(),a=e.getWorldExtent();if(n&&a){let l=dr(a)/dr(n);Cr(Ob,a[0],a[3],l,-l,0,0,0),yn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,Ob,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=jd((e,n)=>{if(e===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),n&&this.simplifiedGeometry_.applyTransform(n);let a=this.simplifiedGeometry_.getFlatCoordinates(),l;switch(this.type_){case"LineString":a.length=rl(a,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,e,a,0),l=[a.length];break;case"MultiLineString":l=[],a.length=tp(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,l);break;case"Polygon":l=[],a.length=$h(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}};bu.prototype.getFlatCoordinates=bu.prototype.getOrientedFlatCoordinates;var is=bu;var Fy=class extends ur{constructor(e){super(),this.projection=Bi(e.projection),this.attributions_=Bb(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 n=this;this.viewPromise_=new Promise(function(a,l){n.viewResolver=a,n.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_=Bb(e),this.changed()}setState(e){this.state_=e,this.changed()}};function Bb(h){return h?Array.isArray(h)?function(e){return h}:typeof h=="function"?h:function(e){return[h]}:null}var Ro=Fy;var qr={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function Nb(h,e){return[[-1/0,-1/0,1/0,1/0]]}var XI=!1;function YI(h,e,n,a,l,o,_){let v=new XMLHttpRequest;v.open("GET",typeof h=="function"?h(n,a,l):h,!0),e.getType()=="arraybuffer"&&(v.responseType="arraybuffer"),v.withCredentials=XI,v.onload=function(w){if(!v.status||v.status>=200&&v.status<300){let T=e.getType(),C;T=="json"?C=JSON.parse(v.responseText):T=="text"?C=v.responseText:T=="xml"?(C=v.responseXML,C||(C=new DOMParser().parseFromString(v.responseText,"application/xml"))):T=="arraybuffer"&&(C=v.response),C?o(e.readFeatures(C,{extent:n,featureProjection:l}),e.readProjection(C)):_()}else _()},v.onerror=_,v.send()}function zy(h,e){return function(n,a,l,o,_){let v=this;YI(h,e,n,a,l,function(w,T){v.addFeatures(w),o!==void 0&&o(w)},_||ms)}}var Xs=class extends xi{constructor(e,n,a){super(e),this.feature=n,this.features=a}},Oy=class extends Ro{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&&(ri(this.format_,"`format` must be set when `url` is set"),this.loader_=zy(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:Nb;let n=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=n?new vu:null,this.loadedExtentsRtree_=new vu,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()),!n&&a===void 0&&(a=new ou(l)),l!==void 0&&this.addFeaturesInternal(l),a!==void 0&&this.bindFeaturesCollection_(a)}addFeature(e){this.addFeatureInternal(e),this.changed()}addFeatureInternal(e){let n=Vt(e);if(!this.addToIndex_(n,e)){this.featuresCollection_&&this.featuresCollection_.remove(e);return}this.setupChangeEvents_(n,e);let a=e.getGeometry();if(a){let l=a.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(l,e)}else this.nullGeometryFeatures_[n]=e;this.dispatchEvent(new Xs(qr.ADDFEATURE,e))}setupChangeEvents_(e,n){n instanceof is||(this.featureChangeKeys_[e]=[Tr(n,li.CHANGE,this.handleFeatureChange_,this),Tr(n,Nd.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(e,n){let a=!0;if(n.getId()!==void 0){let l=String(n.getId());if(!(l in this.idIndex_))this.idIndex_[l]=n;else if(n instanceof is){let o=this.idIndex_[l];o instanceof is?Array.isArray(o)?o.push(n):this.idIndex_[l]=[o,n]:a=!1}else a=!1}return a&&(ri(!(e in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[e]=n),a}addFeatures(e){this.addFeaturesInternal(e),this.changed()}addFeaturesInternal(e){let n=[],a=[],l=[];for(let o=0,_=e.length;o<_;o++){let v=e[o],w=Vt(v);this.addToIndex_(w,v)&&a.push(v)}for(let o=0,_=a.length;o<_;o++){let v=a[o],w=Vt(v);this.setupChangeEvents_(w,v);let T=v.getGeometry();if(T){let C=T.getExtent();n.push(C),l.push(v)}else this.nullGeometryFeatures_[w]=v}if(this.featuresRtree_&&this.featuresRtree_.load(n,l),this.hasListener(qr.ADDFEATURE))for(let o=0,_=a.length;o<_;o++)this.dispatchEvent(new Xs(qr.ADDFEATURE,a[o]))}bindFeaturesCollection_(e){let n=!1;this.addEventListener(qr.ADDFEATURE,function(a){n||(n=!0,e.push(a.feature),n=!1)}),this.addEventListener(qr.REMOVEFEATURE,function(a){n||(n=!0,e.remove(a.feature),n=!1)}),e.addEventListener(ws.ADD,a=>{n||(n=!0,this.addFeature(a.element),n=!1)}),e.addEventListener(ws.REMOVE,a=>{n||(n=!0,this.removeFeature(a.element),n=!1)}),this.featuresCollection_=e}clear(e){if(e){for(let a in this.featureChangeKeys_)this.featureChangeKeys_[a].forEach(jr);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 n=new Xs(qr.CLEAR);this.dispatchEvent(n),this.changed()}forEachFeature(e){if(this.featuresRtree_)return this.featuresRtree_.forEach(e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureAtCoordinateDirect(e,n){let a=[e[0],e[1],e[0],e[1]];return this.forEachFeatureInExtent(a,function(l){let o=l.getGeometry();if(o instanceof is||o.intersectsCoordinate(e))return n(l)})}forEachFeatureInExtent(e,n){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(e,n);this.featuresCollection_&&this.featuresCollection_.forEach(n)}forEachFeatureIntersectingExtent(e,n){return this.forEachFeatureInExtent(e,function(a){let l=a.getGeometry();if(l instanceof is||l.intersectsExtent(e)){let o=n(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(),Bn(this.nullGeometryFeatures_)||Er(e,Object.values(this.nullGeometryFeatures_))),e}getFeaturesAtCoordinate(e){let n=[];return this.forEachFeatureAtCoordinateDirect(e,function(a){n.push(a)}),n}getFeaturesInExtent(e,n){if(this.featuresRtree_){if(!(n&&n.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(e);let l=Lx(e,n);return[].concat(...l.map(o=>this.featuresRtree_.getInExtent(o)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(e,n){let a=e[0],l=e[1],o=null,_=[NaN,NaN],v=1/0,w=[-1/0,-1/0,1/0,1/0];return n=n||Gd,this.featuresRtree_.forEachInExtent(w,function(T){if(n(T)){let C=T.getGeometry(),L=v;if(v=C instanceof is?0:C.closestPointXY(a,l,_,v),v<L){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 n=this.idIndex_[e.toString()];return n!==void 0?n:null}getFeatureByUid(e){let n=this.uidIndex_[e];return n!==void 0?n:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(e){let n=e.target,a=Vt(n),l=n.getGeometry();if(!l)a in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(n),this.nullGeometryFeatures_[a]=n);else{let _=l.getExtent();a in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[a],this.featuresRtree_&&this.featuresRtree_.insert(_,n)):this.featuresRtree_&&this.featuresRtree_.update(_,n)}let o=n.getId();if(o!==void 0){let _=o.toString();this.idIndex_[_]!==n&&(this.removeFromIdIndex_(n),this.idIndex_[_]=n)}else this.removeFromIdIndex_(n),this.uidIndex_[a]=n;this.changed(),this.dispatchEvent(new Xs(qr.CHANGEFEATURE,n))}hasFeature(e){let n=e.getId();return n!==void 0?n in this.idIndex_:Vt(e)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&Bn(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(e,n,a){let l=this.loadedExtentsRtree_,o=this.strategy_(e,n,a);for(let _=0,v=o.length;_<v;++_){let w=o[_];l.forEachInExtent(w,function(C){return _o(C.extent,w)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Xs(qr.FEATURESLOADSTART)),this.loader_.call(this,w,n,a,C=>{--this.loadingExtentsCount_,this.dispatchEvent(new Xs(qr.FEATURESLOADEND,void 0,C))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Xs(qr.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 n=this.loadedExtentsRtree_,a;n.forEachInExtent(e,function(l){if(Zd(l.extent,e))return a=l,!0}),a&&n.remove(a)}removeFeatures(e){let n=[];for(let a=0,l=e.length;a<l;++a){let o=e[a],_=this.removeFeatureInternal(o);_&&n.push(_)}n.length>0&&this.changed()}removeFeature(e){if(!e)return;this.removeFeatureInternal(e)&&this.changed()}removeFeatureInternal(e){let n=Vt(e);n in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[n]:this.featuresRtree_&&this.featuresRtree_.remove(e);let a=this.featureChangeKeys_[n];if(!a)return;a.forEach(jr),delete this.featureChangeKeys_[n];let l=e.getId();return l!==void 0&&delete this.idIndex_[l.toString()],delete this.uidIndex_[n],this.hasListener(qr.REMOVEFEATURE)&&this.dispatchEvent(new Xs(qr.REMOVEFEATURE,e)),e}removeFromIdIndex_(e){let n=!1;for(let a in this.idIndex_){let l=this.idIndex_[a];if(e instanceof is&&Array.isArray(l)&&l.includes(e))l.splice(l.indexOf(e),1);else if(this.idIndex_[a]===e){delete this.idIndex_[a],n=!0;break}}return n}setLoader(e){this.loader_=e}setUrl(e){ri(this.format_,"`format` must be set when `url` is set"),this.url_=e,this.setLoader(zy(e,this.format_))}},cl=Oy;var Vn={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 By={ACTIVE:"active"};var Ny=class extends ur{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(By.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(By.ACTIVE,e)}setMap(e){this.map_=e}};var Vb=Ny;var Vy=class extends Vb{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 n=!1;if(this.updateTrackedPointers_(e),this.handlingDownUpSequence){if(e.type==Vn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Vn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Vn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,n=this.stopDown(a)}else e.type==Vn.POINTERMOVE&&this.handleMoveEvent(e);return!n}handleMoveEvent(e){}handleUpEvent(e){return!1}stopDown(e){return e}updateTrackedPointers_(e){e.activePointers&&(this.targetPointers=e.activePointers)}};var Gb=Vy;var jb=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var Ub=Gd,qb=function(h){return h.type==Vn.CLICK};var Wb=function(h){return h.type==Vn.SINGLECLICK};var $b=function(h){let e=h.originalEvent;return ri(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var Zb=0,wu=1,Hb=[0,0,0,0],fc=[],Gy={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},Su=class extends xi{constructor(e,n,a){super(e),this.features=n,this.mapBrowserEvent=a}},jy=class extends Gb{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:$b,this.defaultDeleteCondition_=function(a){return jb(a)&&Wb(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:Ub,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new vu,this.pixelTolerance_=e.pixelTolerance!==void 0?e.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new ll({source:new cl({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:JI(),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 n;if(e.features?n=e.features:e.source&&(this.source_=e.source,n=new ou(this.source_.getFeatures()),this.source_.addEventListener(qr.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(qr.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!n)throw new Error("The modify interaction requires features, a source or a layer");e.hitDetection&&(this.hitDetection_=e.hitDetection),this.features_=n,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(ws.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(ws.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 n=e.getGeometry();if(n){let l=this.SEGMENT_WRITERS_[n.getType()];l&&l(e,n)}let a=this.getMap();a&&a.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,a),e.addEventListener(li.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(e,n){if(!this.featuresBeingModified_){this.featuresBeingModified_=new ou;let a=this.featuresBeingModified_.getArray();for(let l=0,o=n.length;l<o;++l){let _=n[l];for(let v=0,w=_.length;v<w;++v){let T=_[v].feature;T&&!a.includes(T)&&this.featuresBeingModified_.push(T)}}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new Su(Gy.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 n=this.rBush_,a=[];n.forEach(function(l){e===l.feature&&a.push(l)});for(let l=a.length-1;l>=0;--l){let o=a[l];for(let _=this.dragSegments_.length-1;_>=0;--_)this.dragSegments_[_][0]===o&&this.dragSegments_.splice(_,1);n.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 n=e.target;this.removeFeature_(n),this.addFeature_(n)}}handleFeatureRemove_(e){this.removeFeature_(e.element)}writePointGeometry_(e,n){let a=n.getCoordinates(),l={feature:e,geometry:n,segment:[a,a]};this.rBush_.insert(n.getExtent(),l)}writeMultiPointGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l],v={feature:e,geometry:n,depth:[l],index:l,segment:[_,_]};this.rBush_.insert(n.getExtent(),v)}}writeLineStringGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length-1;l<o;++l){let _=a.slice(l,l+2),v={feature:e,geometry:n,index:l,segment:_};this.rBush_.insert(Bs(_),v)}}writeMultiLineStringGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l];for(let v=0,w=_.length-1;v<w;++v){let T=_.slice(v,v+2),C={feature:e,geometry:n,depth:[l],index:v,segment:T};this.rBush_.insert(Bs(T),C)}}}writePolygonGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l];for(let v=0,w=_.length-1;v<w;++v){let T=_.slice(v,v+2),C={feature:e,geometry:n,depth:[l],index:v,segment:T};this.rBush_.insert(Bs(T),C)}}}writeMultiPolygonGeometry_(e,n){let a=n.getCoordinates();for(let l=0,o=a.length;l<o;++l){let _=a[l];for(let v=0,w=_.length;v<w;++v){let T=_[v];for(let C=0,L=T.length-1;C<L;++C){let F=T.slice(C,C+2),q={feature:e,geometry:n,depth:[v,l],index:C,segment:F};this.rBush_.insert(Bs(F),q)}}}}writeCircleGeometry_(e,n){let a=n.getCenter(),l={feature:e,geometry:n,index:Zb,segment:[a,a]},o={feature:e,geometry:n,index:wu,segment:[a,a]},_=[l,o];l.featureSegments=_,o.featureSegments=_,this.rBush_.insert(ta(a),l);let v=n,w=Nn();if(w&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(w,T),v=Jm(v).transform(T,w)}this.rBush_.insert(v.getExtent(),o)}writeGeometryCollectionGeometry_(e,n){let a=n.getGeometriesArray();for(let l=0;l<a.length;++l){let o=a[l],_=this.SEGMENT_WRITERS_[o.getType()];_(e,o)}}createOrUpdateVertexFeature_(e,n,a){let l=this.vertexFeature_;return l?l.getGeometry().setCoordinates(e):(l=new ts(new fr(e)),this.vertexFeature_=l,this.overlay_.getSource().addFeature(l)),l.set("features",n),l.set("geometries",a),l}handleEvent(e){if(!e.originalEvent)return!0;this.lastPointerEvent_=e;let n;return!e.map.getView().getInteracting()&&e.type==Vn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Vn.SINGLECLICK||!this.ignoreNextSingleClick_?n=this.removePoint():n=!0),e.type==Vn.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(e)&&!n}handleDragEvent(e){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(e,this.dragSegments_);let n=[e.coordinate[0]+this.delta_[0],e.coordinate[1]+this.delta_[1]],a=[],l=[];for(let o=0,_=this.dragSegments_.length;o<_;++o){let v=this.dragSegments_[o],w=v[0],T=w.feature;a.includes(T)||a.push(T);let C=w.geometry;l.includes(C)||l.push(C);let L=w.depth,F,q=w.segment,K=v[1];for(;n.length<C.getStride();)n.push(q[K][n.length]);switch(C.getType()){case"Point":F=n,q[0]=n,q[1]=n;break;case"MultiPoint":F=C.getCoordinates(),F[w.index]=n,q[0]=n,q[1]=n;break;case"LineString":F=C.getCoordinates(),F[w.index+K]=n,q[K]=n;break;case"MultiLineString":F=C.getCoordinates(),F[L[0]][w.index+K]=n,q[K]=n;break;case"Polygon":F=C.getCoordinates(),F[L[0]][w.index+K]=n,q[K]=n;break;case"MultiPolygon":F=C.getCoordinates(),F[L[1]][L[0]][w.index+K]=n,q[K]=n;break;case"Circle":if(q[0]=n,q[1]=n,w.index===Zb)this.changingFeature_=!0,C.setCenter(n),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),W=Rm(Hi(C.getCenter(),he),Hi(n,he)),H=Nn();if(H){let se=C.clone().transform(H,he);se.setRadius(W),W=se.transform(he,H).getRadius()}C.setRadius(W),this.changingFeature_=!1}break;default:}F&&this.setGeometryCoordinates_(C,F)}this.createOrUpdateVertexFeature_(n,a,l)}handleDownEvent(e){if(!this.condition_(e))return!1;let n=e.coordinate;this.handlePointerAtPixel_(e.pixel,e.map,n),this.dragSegments_.length=0,this.featuresBeingModified_=null;let a=this.vertexFeature_;if(a){let l=e.map.getView().getProjection(),o=[],_=a.getGeometry().getCoordinates(),v=Bs([_]),w=this.rBush_.getInExtent(v),T={};w.sort(KI);for(let C=0,L=w.length;C<L;++C){let F=w[C],q=F.segment,K=Vt(F.geometry),he=F.depth;if(he&&(K+="-"+he.join("-")),T[K]||(T[K]=new Array(2)),F.geometry.getType()==="Circle"&&F.index===wu){let W=Yb(n,F,l);tn(W,_)&&!T[K][0]&&(this.dragSegments_.push([F,0]),T[K][0]=F);continue}if(tn(q[0],_)&&!T[K][0]){this.dragSegments_.push([F,0]),T[K][0]=F;continue}if(tn(q[1],_)&&!T[K][1]){if(T[K][0]&&T[K][0].index===0){let W=F.geometry.getCoordinates();switch(F.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":W=W[he[1]];case"Polygon":if(F.index!==W[he[0]].length-2)continue;break;default:}}this.dragSegments_.push([F,1]),T[K][1]=F;continue}Vt(q)in this.vertexSegments_&&!T[K][0]&&!T[K][1]&&this.insertVertexCondition_(e)&&o.push(F)}o.length&&this.willModifyFeatures_(e,[o]);for(let C=o.length-1;C>=0;--C)this.insertVertex_(o[C],_)}return!!this.vertexFeature_}handleUpEvent(e){for(let n=this.dragSegments_.length-1;n>=0;--n){let a=this.dragSegments_[n][0],l=a.geometry;if(l.getType()==="Circle"){let o=l.getCenter(),_=a.featureSegments[0],v=a.featureSegments[1];_.segment[0]=o,_.segment[1]=o,v.segment[0]=o,v.segment[1]=o,this.rBush_.update(ta(o),_);let w=l,T=Nn();if(T){let C=e.map.getView().getProjection();w=w.clone().transform(T,C),w=Jm(w).transform(C,T)}this.rBush_.update(w.getExtent(),v)}else this.rBush_.update(Bs(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new Su(Gy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null),!1}handlePointerMove_(e){this.lastPixel_=e.pixel,this.handlePointerAtPixel_(e.pixel,e.map,e.coordinate)}handlePointerAtPixel_(e,n,a){let l=a||n.getCoordinateFromPixel(e),o=n.getView().getProjection(),_=function(T,C){return Xb(l,T,o)-Xb(l,C,o)},v,w;if(this.hitDetection_){let T=typeof this.hitDetection_=="object"?C=>C===this.hitDetection_:void 0;n.forEachFeatureAtPixel(e,(C,L,F)=>{F&&F.getType()==="Point"&&(F=new fr(tl(F.getCoordinates(),o)));let q=F||C.getGeometry();if(C instanceof ts&&this.features_.getArray().includes(C)){w=q;let K=C.getGeometry().getFlatCoordinates().slice(0,2);v=[{feature:C,geometry:w,segment:[K,K]}]}return!0},{layerFilter:T})}if(!v){let T=Vs(ta(l,Hb),o),C=n.getView().getResolution()*this.pixelTolerance_,L=Ns(fn(T,C,Hb),o);v=this.rBush_.getInExtent(L)}if(v&&v.length>0){let T=v.sort(_)[0],C=T.segment,L=Yb(l,T,o),F=n.getPixelFromCoordinate(L),q=Rm(e,F);if(w||q<=this.pixelTolerance_){let K={};if(K[Vt(C)]=!0,this.snapToPointer_||(this.delta_[0]=L[0]-l[0],this.delta_[1]=L[1]-l[1]),T.geometry.getType()==="Circle"&&T.index===wu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(L,[T.feature],[T.geometry]);else{let he=n.getPixelFromCoordinate(C[0]),W=n.getPixelFromCoordinate(C[1]),H=Jl(F,he),se=Jl(F,W);q=Math.sqrt(Math.min(H,se)),this.snappedToVertex_=q<=this.pixelTolerance_,this.snappedToVertex_&&(L=H>se?C[1]:C[0]),this.createOrUpdateVertexFeature_(L,[T.feature],[T.geometry]);let ge={};ge[Vt(T.geometry)]=!0;for(let _e=1,fe=v.length;_e<fe;++_e){let xe=v[_e].segment;if(tn(C[0],xe[0])&&tn(C[1],xe[1])||tn(C[0],xe[1])&&tn(C[1],xe[0])){let Me=Vt(v[_e].geometry);Me in ge||(ge[Me]=!0,K[Vt(xe)]=!0)}else break}}this.vertexSegments_=K;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(e,n){let a=e.segment,l=e.feature,o=e.geometry,_=e.depth,v=e.index,w;for(;n.length<o.getStride();)n.push(0);switch(o.getType()){case"MultiLineString":w=o.getCoordinates(),w[_[0]].splice(v+1,0,n);break;case"Polygon":w=o.getCoordinates(),w[_[0]].splice(v+1,0,n);break;case"MultiPolygon":w=o.getCoordinates(),w[_[1]][_[0]].splice(v+1,0,n);break;case"LineString":w=o.getCoordinates(),w.splice(v+1,0,n);break;default:return}this.setGeometryCoordinates_(o,w);let T=this.rBush_;T.remove(e),this.updateSegmentIndices_(o,v,_,1);let C={segment:[a[0],n],feature:l,geometry:o,depth:_,index:v};T.insert(Bs(C.segment),C),this.dragSegments_.push([C,1]);let L={segment:[n,a[1]],feature:l,geometry:o,depth:_,index:v+1};T.insert(Bs(L.segment),L),this.dragSegments_.push([L,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Vn.POINTERDRAG){let e=this.lastPointerEvent_;this.willModifyFeatures_(e,this.dragSegments_);let n=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Su(Gy.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null,n}return!1}removeVertex_(){let e=this.dragSegments_,n={},a=!1,l,o,_,v,w,T,C,L,F,q,K;for(w=e.length-1;w>=0;--w)_=e[w],q=_[0],K=Vt(q.feature),q.depth&&(K+="-"+q.depth.join("-")),K in n||(n[K]={}),_[1]===0?(n[K].right=q,n[K].index=q.index):_[1]==1&&(n[K].left=q,n[K].index=q.index+1);for(K in n){switch(F=n[K].right,C=n[K].left,T=n[K].index,L=T-1,C!==void 0?q=C:q=F,L<0&&(L=0),v=q.geometry,o=v.getCoordinates(),l=o,a=!1,v.getType()){case"MultiLineString":o[q.depth[0]].length>2&&(o[q.depth[0]].splice(T,1),a=!0);break;case"LineString":o.length>2&&(o.splice(T,1),a=!0);break;case"MultiPolygon":l=l[q.depth[1]];case"Polygon":l=l[q.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]),L=l.length-1));break;default:}if(a){this.setGeometryCoordinates_(v,o);let he=[];if(C!==void 0&&(this.rBush_.remove(C),he.push(C.segment[0])),F!==void 0&&(this.rBush_.remove(F),he.push(F.segment[1])),C!==void 0&&F!==void 0){let W={depth:q.depth,feature:q.feature,geometry:q.geometry,index:L,segment:he};this.rBush_.insert(Bs(W.segment),W)}this.updateSegmentIndices_(v,T,q.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),e.length=0}}return a}setGeometryCoordinates_(e,n){this.changingFeature_=!0,e.setCoordinates(n),this.changingFeature_=!1}updateSegmentIndices_(e,n,a,l){this.rBush_.forEachInExtent(e.getExtent(),function(o){o.geometry===e&&(a===void 0||o.depth===void 0||pn(o.depth,a))&&o.index>n&&(o.index+=l)})}};function KI(h,e){return h.index-e.index}function Xb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"){let o=a;if(e.index===wu){let _=Nn();_&&(o=o.clone().transform(_,n));let v=Jl(o.getCenter(),Hi(h,n)),w=Math.sqrt(v)-o.getRadius();return w*w}}let l=Hi(h,n);return fc[0]=Hi(e.segment[0],n),fc[1]=Hi(e.segment[1],n),Wx(l,fc)}function Yb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"&&e.index===wu){let o=a,_=Nn();return _&&(o=o.clone().transform(_,n)),tl(o.getClosestPoint(Hi(h,n)),n)}let l=Hi(h,n);return fc[0]=Hi(e.segment[0],n),fc[1]=Hi(e.segment[1],n),tl(Pm(l,fc),n)}function JI(){let h=eb();return function(e,n){return h.Point}}var Uy=jy;var qy=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=ts,this.supportedMediaTypes=null}getReadOptions(e,n){if(n){let a=n.dataProjection?Bi(n.dataProjection):this.readProjection(e);n.extent&&a&&a.getUnits()==="tile-pixels"&&(a=Bi(a),a.setWorldExtent(n.extent)),n={dataProjection:a,featureProjection:n.featureProjection}}return this.adaptOptions(n)}adaptOptions(e){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},e)}getType(){return wt()}readFeature(e,n){return wt()}readFeatures(e,n){return wt()}readGeometry(e,n){return wt()}readProjection(e){return wt()}writeFeature(e,n){return wt()}writeFeatures(e,n){return wt()}writeGeometry(e,n){return wt()}},Kb=qy;function Mp(h,e,n){let a=n?Bi(n.featureProjection):null,l=n?Bi(n.dataProjection):null,o=h;if(a&&l&&!Kx(a,l)){e&&(o=h.clone());let _=e?a:l,v=e?l:a;_.getUnits()==="tile-pixels"?o.transform(_,v):o.applyTransform(el(_,v))}if(e&&n&&n.decimals!==void 0){let _=Math.pow(10,n.decimals),v=function(w){for(let T=0,C=w.length;T<C;++T)w[T]=Math.round(w[T]*_)/_;return w};o===h&&(o=h.clone()),o.applyTransform(v)}return o}var QI={Point:fr,LineString:_s,Polygon:tc,MultiPoint:Yh,MultiLineString:Zm,MultiPolygon:eg};function eC(h,e,n){return Array.isArray(e[0])?(op(h,0,e,n)||(h=h.slice(),Qh(h,0,e,n)),h):(Jh(h,0,e,n)||(h=h.slice(),ec(h,0,e,n)),h)}function Wy(h,e){let n=h.geometry;if(!n)return[];if(Array.isArray(n))return n.map(o=>Wy({...h,geometry:o})).flat();let a=n.type==="MultiPolygon"?"Polygon":n.type;if(a==="GeometryCollection"||a==="Circle")throw new Error("Unsupported geometry type: "+a);let l=n.layout.length;return Mp(new is(a,a==="Polygon"?eC(n.flatCoordinates,n.ends,l):n.flatCoordinates,n.ends?.flat(),l,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function Ap(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(l=>Ap(l,e));return new Nm(a)}let n=QI[h.type];return Mp(new n(h.flatCoordinates,h.layout,h.ends),!1,e)}var $y=class extends Kb{constructor(){super()}getType(){return"json"}readFeature(e,n){return this.readFeatureFromObject(Pp(e),this.getReadOptions(e,n))}readFeatures(e,n){return this.readFeaturesFromObject(Pp(e),this.getReadOptions(e,n))}readFeatureFromObject(e,n){return wt()}readFeaturesFromObject(e,n){return wt()}readGeometry(e,n){return this.readGeometryFromObject(Pp(e),this.getReadOptions(e,n))}readGeometryFromObject(e,n){return wt()}readProjection(e){return this.readProjectionFromObject(Pp(e))}readProjectionFromObject(e){return wt()}writeFeature(e,n){return JSON.stringify(this.writeFeatureObject(e,n))}writeFeatureObject(e,n){return wt()}writeFeatures(e,n){return JSON.stringify(this.writeFeaturesObject(e,n))}writeFeaturesObject(e,n){return wt()}writeGeometry(e,n){return JSON.stringify(this.writeGeometryObject(e,n))}writeGeometryObject(e,n){return wt()}};function Pp(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var Jb=$y;var Zy=class extends Jb{constructor(e){e=e||{},super(),this.dataProjection=Bi(e.dataProjection?e.dataProjection:"EPSG:4326"),e.featureProjection&&(this.defaultFeatureProjection=Bi(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,n){let a=null;e.type==="Feature"?a=e:a={type:"Feature",geometry:e,properties:null};let l=Xy(a.geometry,n);if(this.featureClass===is)return Wy({geometry:l,id:a.id,properties:a.properties},n);let o=new ts;return this.geometryName_?o.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&o.setGeometryName(a.geometry_name),o.setGeometry(Ap(l,n)),"id"in a&&o.setId(a.id),a.properties&&o.setProperties(a.properties,!0),o}readFeaturesFromObject(e,n){let a=e,l=null;if(a.type==="FeatureCollection"){let o=e;l=[];let _=o.features;for(let v=0,w=_.length;v<w;++v){let T=this.readFeatureFromObject(_[v],n);T&&l.push(T)}}else l=[this.readFeatureFromObject(e,n)];return l.flat()}readGeometryFromObject(e,n){return tC(e,n)}readProjectionFromObject(e){let n=e.crs,a;if(n)if(n.type=="name")a=Bi(n.properties.name);else if(n.type==="EPSG")a=Bi("EPSG:"+n.properties.code);else throw new Error("Unknown SRS type");else a=this.dataProjection;return a}writeFeatureObject(e,n){n=this.adaptOptions(n);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(),_=e.getGeometry();return _&&(a.geometry=Hy(_,n),delete o[e.getGeometryName()]),Bn(o)||(a.properties=o),a}writeFeaturesObject(e,n){n=this.adaptOptions(n);let a=[];for(let l=0,o=e.length;l<o;++l)a.push(this.writeFeatureObject(e[l],n));return{type:"FeatureCollection",features:a}}writeGeometryObject(e,n){return Hy(e,this.adaptOptions(n))}};function Xy(h,e){if(!h)return null;let n;switch(h.type){case"Point":{n=rC(h);break}case"LineString":{n=nC(h);break}case"Polygon":{n=lC(h);break}case"MultiPoint":{n=oC(h);break}case"MultiLineString":{n=sC(h);break}case"MultiPolygon":{n=aC(h);break}case"GeometryCollection":{n=iC(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return n}function tC(h,e){let n=Xy(h,e);return Ap(n,e)}function iC(h,e){return h.geometries.map(function(a){return Xy(a,e)})}function rC(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:ra(e.length)}}function nC(h){let e=h.coordinates,n=e.flat();return{type:"LineString",flatCoordinates:n,ends:[n.length],layout:ra(e[0]?.length||2)}}function sC(h){let e=h.coordinates,n=e[0]?.[0]?.length||2,a=[],l=na(a,0,e,n);return{type:"MultiLineString",flatCoordinates:a,ends:l,layout:ra(n)}}function oC(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:ra(e[0]?.length||2)}}function aC(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.[0].length||2,l=ep(n,0,e,a);return{type:"MultiPolygon",flatCoordinates:n,ends:l,layout:ra(a)}}function lC(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.length,l=na(n,0,e,a);return{type:"Polygon",flatCoordinates:n,ends:l,layout:ra(a)}}function Hy(h,e){h=Mp(h,!0,e);let n=h.getType(),a;switch(n){case"Point":{a=fC(h,e);break}case"LineString":{a=hC(h,e);break}case"Polygon":{a=mC(h,e);break}case"MultiPoint":{a=dC(h,e);break}case"MultiLineString":{a=uC(h,e);break}case"MultiPolygon":{a=pC(h,e);break}case"GeometryCollection":{a=cC(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+n)}return a}function cC(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return Hy(a,e)})}}function hC(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function uC(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function dC(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function pC(h,e){let n;return e&&(n=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(n)}}function fC(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function mC(h,e){let n;return e&&(n=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(n)}}var mr=Zy;var gC=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,Qb=/^([\d.]+),([\d.]+)$/,e1=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,Rp="stop-fetch",t1=h=>{let e=[];return h.forEach(n=>{let a=n.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},Yy=class h extends nc{constructor(n={}){super(n);this.viaPoints=[];this.graphs=[];this.useRawViaPoints=!1;this.snapToClosestStation=!1;this.cacheStationData={};this.abortControllers={};this.segments=[];this.format=new mr({featureProjection:"EPSG:3857"});this.initialRouteDrag={};this.element||this.createDefaultElement(),this.loading=!1,this.active=n.active||!0,this.graphs=n.graphs||[["osm",0,99]],this.mot=n.mot||"bus",this.modify=n.modify!==!1,this.routingApiParams=n.routingApiParams,this.useRawViaPoints=n.useRawViaPoints||!1,this.snapToClosestStation=n.snapToClosestStation||!1,this.apiKey=n.apiKey,this.stopsApiKey=n.stopsApiKey||this.apiKey,this.stopsApiUrl=n.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new Rh({...n}),this.routingLayer=n.routingLayer||new ll({source:new cl,style:n.style}),this.onRouteError=n.onRouteError||(a=>{this.dispatchEvent(new xi("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(n){this.set("active",n)}get loading(){return this.get("loading")}set loading(n){this.set("loading",n)}get modify(){return this.get("modify")}set modify(n){this.set("modify",n)}get mot(){return this.get("mot")}set mot(n){this.set("mot",n)}static getGraphsResolutions(n,a){let l=a.getView();return n.map(([,o,_])=>[l.getResolutionForZoom(o),l.getResolutionForZoom(_||o+1)])}onActiveChange(){this.get("active")?this.activate():this.deactivate(),this.render()}addViaPoint(n,a=-1,l=0){this.viaPoints.splice(a===-1?this.viaPoints.length:a,l,n),this.drawRoute(),this.dispatchEvent(new xi("change:route"))}removeViaPoint(n=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[n]&&this.viaPoints.splice(n,1),this.drawRoute(),this.dispatchEvent(new xi("change:route"))}setViaPoints(n){this.viaPoints=[...n],this.drawRoute(),this.dispatchEvent(new xi("change:route"))}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.getSource()?.clear(),this.dispatchEvent(new xi("change:route"))}abortRequests(){this.graphs.forEach(n=>{let a=n[0];this.abortControllers[a]&&this.abortControllers[a].abort(),this.abortControllers[a]=new AbortController}),this.abortControllers[Rp]?.abort(),this.abortControllers[Rp]=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[Rp]);let n=this.viaPoints.map(a=>{if(Array.isArray(a)){let l=this.getMap()?.getView().getProjection(),[o,_]=Qa(a,l);return this.snapToClosestStation?[`@${_}`,o]:[_,o]}return this.useRawViaPoints?a:`!${a}`});return this.loading=!0,this.viaPoints.forEach((a,l)=>this.drawViaPoint(a,l,this.abortControllers[Rp])),Promise.all(this.graphs.map(([a],l)=>{let{signal:o}=this.abortControllers[a];return this.api?this.api.route({graph:a,via:`${n.join("|")}`,mot:this.mot,"resolve-hops":!1,elevation:!1,"coord-radius":100,"coord-punish":1e3,...this.routingApiParams||{}},{signal:o}).then(_=>{if(this.segments=this.format.readFeatures(_),this.mot==="foot"){let T=this.segments.reduce((C,L)=>{let F=L.get("trg");return C.find(q=>q[0]===F[0]&&q[1]===F[1])?C:[...C,F]},[]);this.segments=T.map(C=>{let L=this.segments.filter(q=>{let K=q.get("trg");return K[0]===C[0]&&K[1]===C[1]}),F=t1(L);return new ts({geometry:new _s(F)})})}let v=t1(this.segments),w=new ts({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(_=>{/AbortError/.test(_.message)||(this.segments=[],this.dispatchEvent(new xi("error")),this.onRouteError(_,this),this.routingLayer?.getSource()?.clear(),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(n,a,l){let o=new ts;if(o.set("viaPointIdx",a),Array.isArray(n))return o.setGeometry(new fr(n)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o);if(!this.useRawViaPoints||e1.test(n)){let C,L;return this.useRawViaPoints?[,C,,L]=e1.exec(n)||[]:[C,L]=n.split("$"),fetch(`${this.stopsApiUrl}lookup/${C}?key=${this.stopsApiKey}`,{signal:l.signal}).then(F=>F.json()).then(F=>{let{coordinates:q}=F.features[0].geometry;return this.cacheStationData[n]=pr(q),o.set("viaPointTrack",L),o.setGeometry(new fr(pr(q))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(F=>{/AbortError/.test(F.message)||(this.dispatchEvent(new xi("error")),this.onRouteError(F,this),this.loading=!1)})}if(this.useRawViaPoints&&Qb.test(n)){let[C,L]=Qb.exec(n)||[];if(L&&C){let F=parseFloat(L),q=parseFloat(C),K=pr([F,q],this.getMap()?.getView().getProjection());return o.setGeometry(new fr(K)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}}let[,_,,v,w,,T]=gC.exec(n)||[];if(w&&v){let C=pr([parseFloat(w),parseFloat(v)],this.getMap()?.getView().getProjection());return o.set("viaPointTrack",T),o.setGeometry(new fr(C)),this.routingLayer?.getSource()?.addFeature(o),Promise.resolve(o)}return _?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${_}&limit=1`,{signal:l.signal}).then(C=>C.json()).then(C=>{let{coordinates:L}=C.features[0].geometry;return this.cacheStationData[n]=pr(L),o.set("viaPointTrack",T),o.setGeometry(new fr(pr(L))),this.routingLayer?.getSource()?.addFeature(o),o}).catch(C=>(this.dispatchEvent(new xi("error")),this.onRouteError(C,this),this.loading=!1,null)):Promise.resolve(null)}onMapClick(n){let l=n.target.getFeaturesAtPixel(n.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(n.coordinate)}onModifyStart(n){let a=-1,l=n.features.getArray().find(_=>_.getGeometry()?.getType()==="LineString");if(l&&l.getGeometry()&&n.mapBrowserEvent.coordinate){let _=fn(new fr(l.getGeometry()?.getClosestPoint(n.mapBrowserEvent.coordinate)).getExtent(),.001);a=this.segments.findIndex(v=>v.getGeometry()?.intersectsExtent(_))}let o=(n.features.getArray().filter(_=>_.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={viaPoint:o,oldRoute:l&&l.clone(),segmentIndex:a}}onModifyEnd(n){let a=n.mapBrowserEvent.coordinate,{oldRoute:l,viaPoint:o,segmentIndex:_}=this.initialRouteDrag||{};return o?this.addViaPoint(a,o.get("viaPointIdx"),1):l?_===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(a,(_||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 Uy({source:this.routingLayer?.getSource()||void 0,pixelTolerance:6,deleteCondition:n=>{let l=(n.target?.getFeaturesAtPixel(n.pixel,{hitTolerance:5})).find(o=>o.getGeometry()?.getType()==="Point"&&o.get("index"));return qb(n)&&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&&Ka(this.onMapClickKey)}setMap(n){super.setMap(n),n&&this.active?this.activate():n||(this.active=!1)}activate(){let n=this.getMap();n&&(this.format=new mr({featureProjection:n.getView().getProjection()}),this.graphsResolutions=h.getGraphsResolutions(this.graphs,n),this.modifyInteraction&&n.removeInteraction(this.modifyInteraction),this.modifyInteraction&&n.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}deactivate(){let n=this.getMap();n&&(this.modifyInteraction&&n.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}render(){}},i1=Yy;var Ky=class{constructor(e){let{apiParams:n,apiKey:a,url:l,placeholder:o}=e||{};this.apiParams={limit:20,...n||{}},this.placeholder=o||"Search for a stop...";let _={apiKey:a};l&&(_.url=l),this.api=new Lh(_),this.abortController=new AbortController,this.createElement(e),this.options=e}render(e){let n=e?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=n.length?"block":"none",this.suggestionsElt.innerHTML="",n.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=n=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(n.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,n){return(e!==void 0||e!==null)&&(this.apiParams.q=e),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,n&&{signal:n.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}},r1=Ky;var yC=()=>{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},n1=yC;var Jy=class extends nc{constructor(e){let n=n1();n.className=e?.className||"mbt-stop-finder";let a={element:n,...e||{}};super(a),this.controller=new r1({onSuggestionClick:this.onSuggestionClick.bind(this),...a})}onSuggestionClick(e){let n=pr(e.geometry.coordinates);this.getMap()?.getView().setCenter(n)}search(e,n){return this.controller.search(e,n)}},s1=Jy;var f1=Os(Iu());var h1=Os(r_(),1);var FC="vectorTileFeature",n_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},mc=class extends hc{getFeaturesAtCoordinate(e,n=5){let a=this.getMapLibrePixels(e,n);if(!a)return[];let l=this.getLayer().get("queryRenderedFeaturesOptions")||{};return this.getLayer().mapLibreMap?.queryRenderedFeatures(a,l).map(_=>this.toOlFeature(_))||[]}prepareFrame(){return!0}renderFrame(e){let n=this.getLayer(),{mapLibreMap:a}=n,l=n.getMapInternal();if(!n||!l||!a)return null;let o=a.getCanvas(),{viewState:_}=e;a.jumpTo({center:Qa(_.center),zoom:_.zoom-1,bearing:Vx(-_.rotation)});let v=n.getOpacity().toString();return o&&v!==o.style.opacity&&(o.style.opacity=v),o.isConnected?zC(o,e)||a.resize():l.render(),a.redraw(),a.getContainer()}getFeatures(e){let n=this.getLayer().getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(n))}forEachFeatureAtCoordinate(e,n,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(_=>{let v=_.getGeometry();v instanceof Ar&&l(_,this.layer_,v)}),o?.[0]}getMapLibrePixels(e,n){if(!e)return;let a=this.getLayer().mapLibreMap?.project(Qa(e));if(a?.x===void 0||a?.y===void 0)return;let l=[a.x,a.y];if(n){let[o,_]=l;l=[[o-n,_-n],[o+n,_+n]]}return l}toOlFeature(e){let l=this.getLayer().getMapInternal()?.getView()?.getProjection()?.getCode()||"EPSG:3857";n_[l]||(n_[l]=new mr({featureProjection:l}));let o=n_[l].readFeature(e);return o&&o.set(FC,e,!0),o}};function zC(h,e){return h.width===Math.floor(e.size[0]*e.pixelRatio)&&h.height===Math.floor(e.size[1]*e.pixelRatio)}var OC=h=>{if(!h)return[];let{style:e}=h;if(!e)return[];let{sourceCaches:n}=e,a=[];return Object.values(n).forEach(l=>{if(l.used){let{attribution:o}=l.getSource();o&&(a=a.concat(o.replace(/&copy;/g,"\xA9").split(/(<a.*?<\/a>)/)))}}),BC(a)},BC=h=>{let e=h.filter(l=>l!=null&&l.trim&&l.trim()),n=e.map(l=>l.toLowerCase());return[...new Set(n)].map(l=>e.find(o=>o.toLowerCase()===l))},s_=OC;var gc=class extends bs{mapLibreMap;loaded=!1;olListenersKeys=[];constructor(e){super({source:new Ro({attributions:()=>s_(this.mapLibreMap)}),...e})}disposeInternal(){Ka(this.olListenersKeys),this.loaded=!1,this.mapLibreMap&&(this.mapLibreMap.triggerRepaint=()=>{},this.mapLibreMap.remove()),super.disposeInternal()}setMapInternal(e){super.setMapInternal(e),e?this.loadMapLibreMap():this.dispose()}loadMapLibreMap(){this.loaded=!1;let e=this.getMapInternal();if(e&&this.olListenersKeys.push(e.on("change:target",this.loadMapLibreMap.bind(this))),!e?.getTargetElement())return;if(!this.getVisible()){this.olListenersKeys.push(this.once("change:visible",this.loadMapLibreMap.bind(this)));return}let n=document.createElement("div");n.style.position="absolute",n.style.width="100%",n.style.height="100%";let a=this.get("mapLibreOptions");this.mapLibreMap=new h1.Map(Object.assign({},a,{container:n,attributionControl:!1,interactive:!1,trackResize:!1})),this.mapLibreMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.mapLibreMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new xi("load"))})}createRenderer(){return new mc(this)}};var u1=Os(Iu());var kr=(0,u1.default)(h=>{console.warn(h)},1e3);function NC(h){return class extends h{constructor(...a){let l=a[0];super(l);this.options={};this.olEventsKeys=[];l.properties&&(kr("Deprecated. Don't use properties options. Pass the values directly in options object."),this.setProperties(l.properties)),this.olEventsKeys?.push(this.on("propertychange",o=>{o.key==="children"&&this.onChildrenChange(o.oldValue)})),this.options=l,this.set("children",l.children||[])}get children(){return kr("Layer.children is deprecated. Use the Layer.get('children') method instead."),this.get("children")||[]}set children(a){kr("Layer.children is deprecated. Use the Layer.set('children', children) method instead."),this.set("children",a||[])}get copyrights(){return kr("Layer.copyrights is deprecated. Get the attributions from the source object"),this.get("copyrights")}set copyrights(a){kr("Layer.copyrights is deprecated. Set the attributions to the source object.");let l=a&&!Array.isArray(a)?[a]:a;this.set("copyrights",l||[])}get disabled(){return kr("Layer.disabled is deprecated. Use the Layer.get('disabled') method instead."),this.get("disabled")}set disabled(a){kr("Layer.disabled is deprecated. Use the Layer.set('disabled', newValue) method instead."),this.set("disabled",a)}get group(){return kr("Layer.group is deprecated. Use the Layer.get('group') method instead."),this.get("group")}get hitTolerance(){return kr("Layer.hitTolerance is deprecated.Pass the hitTolerance when you request the features."),this.get("hitTolerance")||5}get key(){return this.get("key")||this.get("name")||Vt(this)}get map(){return this.getMapInternal()}get name(){return kr("Layer.name is deprecated. Use the Layer.get('name') method instead."),this.get("name")}get olLayer(){return kr("Layer.olLayer is deprecated. 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(a){kr("Layer.olLayer is deprecated. mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This setter has no effect.")}get parent(){return kr("Layer.parent is deprecated. Use the Layer.get('parent') method instead."),this.get("parent")}set parent(a){kr("Layer.parent is deprecated. Use the Layer.set('parent', parent) method instead."),this.set("parent",a)}get visible(){return kr("Layer.visible is deprecated. Use the Layer.getVisible() method instead."),this.getVisible()}set visible(a){kr("Layer.visible is deprecated. Use the Layer.setVisible(newValue) method instead."),this.setVisible(a)}setMapInternal(a){super.setMapInternal(a),a?this.attachToMap(a):this.detachFromMap()}onChildrenChange(a){(a||[]).forEach(l=>{l.set("parent",void 0)}),(this.get("children")||[]).forEach(l=>{l.set("parent",this)})}attachToMap(a){(super.attachToMap||(()=>{}))(a),(this.get("children")||[]).forEach(l=>{a.addLayer(l)})}detachFromMap(){(this.get("children")||[]).forEach(a=>{this.map.removeLayer(a)}),(super.detachFromMap||(()=>{}))()}flat(){return kr("Layer.flat is deprecated. Use getLayersAsFlatArray utils method instead."),Ya(this)}}}var d1=NC;function VC(h){return class extends d1(h){}}var Ys=VC;var p1=(h,e,n,a)=>Ha(`${h}/styles/${e}/style.json`,{[a]:n}).toString(),o_=class h extends Ys(gc){get mbMap(){return console.warn("MaplibreLayer.mbMap is deprecated. Use layer.maplibreMap."),this.maplibreMap}get maplibreMap(){return console.warn("MaplibreLayer.maplibreMap is deprecated. Use layer.mapLibreMap."),this.mapLibreMap}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)}constructor(e){let n={apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...e||{},mapLibreOptions:{...e.mapLibreOptions||{}}};!n.mapLibreOptions.style&&n.apiKey&&(n.mapLibreOptions.style=p1(n.url,n.style,n.apiKey,n.apiKeyName)),super(n)}attachToMap(e){super.attachToMap(e),this.updateMaplibreMap();let n=(0,f1.default)(this.updateMaplibreMap.bind(this),150);this.olEventsKeys.push(this.on("propertychange",a=>{/(url|style)/.test(a.key)&&n()}))}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:p1(this.url,this.style,this.get("apiKey"),this.get("apiKeyName"))}updateMaplibreMap(){this.mapLibreMap?.setStyle(this.getStyle(),{diff:!1})}clone(e){return new h({...this.options||{},...e||{}})}},m1=o_;var a_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},Cu=class extends hc{getFeaturesAtCoordinate(e,n=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{maplibreMap:o}=a.maplibreLayer,_=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(a_[_]||(a_[_]=new mr({featureProjection:_})),o?.isStyleLoaded()){let w=e&&o.project(Qa(e));if(w?.x&&w?.y){let T=[w.x,w.y];if(n){let[L,F]=T;T=[[L-n,F-n],[L+n,F+n]]}let C=a.layers||[];a.layersFilter&&(C=o.getStyle().layers.filter(a.layersFilter)),a.queryRenderedLayersFilter&&(C=o.getStyle().layers.filter(a.queryRenderedLayersFilter)),v=o.queryRenderedFeatures(T,{layers:C.map(L=>L.id),validate:!1}).map(L=>{let F=a_[_].readFeature(L);return F&&F.set(rc,L),F})}}return v}prepareFrame(){return!0}renderFrame(){return null}getFeatures(e){let n=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(n))}forEachFeatureAtCoordinate(e,n,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(_=>{l(_,this.layer_,_.getGeometry())}),o?.[0]}};var l_=class h extends Ys(bs){constructor(n={mapLibreOptions:{style:{version:8,sources:{},layers:[]}}}){n.mapboxLayer&&(console.warn("options.mapboxLayer is deprecated. Use options.maplibreLayer instead."),n.maplibreLayer=n.mapboxLayer,delete n.mapboxLayer);super({source:new Ro({}),...n});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(n){this.set("beforeId",n)}get layers(){return this.get("layers")}set layers(n){this.set("layers",n)}get layersFilter(){return this.get("layersFilter")}set layersFilter(n){this.set("layersFilter",n)}get mapboxLayer(){return console.warn("Deprecated. Use maplibreLayer instead."),this.get("maplibreLayer")}get maplibreLayer(){return this.get("maplibreLayer")}set maplibreLayer(n){this.set("maplibreLayer",n)}get queryRenderedLayersFilter(){return this.get("queryRenderedLayersFilter")}set queryRenderedLayersFilter(n){this.set("queryRenderedLayersFilter",n)}get sources(){return this.get("sources")}set sources(n){this.set("sources",n)}get styleLayer(){return console.warn("Deprecated. Use layers instead."),this.layers[0]}set styleLayer(n){console.warn("Deprecated. Use layers instead."),this.layers=[n]}get styleLayers(){return console.warn("Deprecated. Use layers instead."),this.layers}set styleLayers(n){console.warn("Deprecated. Use layers instead."),this.layers=n}createRenderer(){return new Cu(this)}attachToMap(n){if(this.maplibreLayer&&!this.maplibreLayer.map&&n.addLayer(this.maplibreLayer),super.attachToMap(n),!this.map||!this.maplibreLayer)return;if(!this.map.getTargetElement()){this.olEventsKeys.push(this.map.on("change:target",()=>{this.attachToMap(n)}));return}let{mapLibreMap:a}=this.maplibreLayer;a&&(a.loaded()?this.onLoad():a.once("load",this.onLoad)),this.olEventsKeys.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(n))}))}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:n}=this.maplibreLayer;n&&Object.entries(this.sources).forEach(([a,l])=>{n.getSource(a)||n.addSource(a,l)})}removeSources(){if(!this.maplibreLayer?.mapLibreMap||!this.sources)return;let{mapLibreMap:n}=this.maplibreLayer;n&&Object.keys(this.sources).forEach(a=>{n.getSource(a)&&n.removeSource(a)})}addLayers(){if(!this.maplibreLayer?.mapLibreMap||!Array.isArray(this.layers))return;let{mapLibreMap:n}=this.maplibreLayer;n&&(this.layers.forEach(a=>{let{id:l,source:o}=a;(!o||o&&n.getSource(o))&&l&&!n.getLayer(l)&&n.addLayer(a,this.beforeId)}),this.applyLayoutVisibility())}removeLayers(){if(!this.maplibreLayer?.mapLibreMap||!Array.isArray(this.layers))return;let{mapLibreMap:n}=this.maplibreLayer;n&&this.layers.forEach(a=>{let{id:l}=a;l&&n.getLayer(l)&&n.removeLayer(l)})}onLoad(){if(!this.maplibreLayer?.mapLibreMap)return;this.addSources(),this.addLayers();let{mapLibreMap:n}=this.maplibreLayer,a=n.getStyle();if(a?.layers&&this.layersFilter){let l=a.layers.filter(this.layersFilter);this.set("disabled",!l.length)}this.applyLayoutVisibility()}setFeatureState(n,a){if(!this.maplibreLayer?.mapLibreMap||!n.length)return;let{mapLibreMap:l}=this.maplibreLayer;n.forEach(o=>{let{source:_,sourceLayer:v}=o.get(rc)||{};if(!_&&!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:_,sourceLayer:v},a)})}getFeatureInfoAtCoordinate(n){if(console.warn("Deprecated. getFeatureInfoAtCoordinate([layer], coordinate) from ol package instead."),!this.maplibreLayer?.mapLibreMap)return Promise.resolve({coordinate:n,features:[],layer:this});let{mapLibreMap:a}=this.maplibreLayer;if(!a.isStyleLoaded())return Promise.resolve({coordinate:n,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:n})}setHoverState(n,a){console.warn(`Deprecated. Use layer.setFeatureState(features, {hover: ${a}}) instead.`),this.setFeatureState(n,{hover:a})}select(n=[]){console.warn("Deprecated. Use layer.setFeatureState(features, {selected: true}) instead."),this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=n,this.setHoverState(this.selectedFeatures||[],!0)}highlight(n=[]){console.warn("Deprecated. Use layer.setFeatureState(features, {highlighted: true}) instead.");let a=this.highlightedFeatures?.filter(l=>!(this.selectedFeatures||[]).map(o=>o.getId()).includes(l.getId()))||[];this.setHoverState(a,!1),this.highlightedFeatures=n,this.setHoverState(this.highlightedFeatures,!0)}applyLayoutVisibility(n){if(!this.maplibreLayer?.mapLibreMap?.getStyle()||!this.layersFilter)return;let{mapLibreMap:a}=this.maplibreLayer,l=a.getStyle(),o=this.getVisible()?"visible":"none",_=l.layers||[];for(let v=0;v<_.length;v+=1){let w=_[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(n){return new h({...this.options,...n})}},g1=l_;var d_=Os(Iu());var h_=Os(Iu()),u_=Os(b1());function nE(h){return class extends h{constructor(n){super({hitTolerance:10,...n}),this.defineProperties(n),this.debug=n.debug||!1,this.mode=n.mode||Wi.TOPOGRAPHIC,this.api=n.api||new Dh(n),this.tenant=n.tenant||"",this.minZoomInterpolation=n.minZoomInterpolation||8,this.format=new mr,this.onStart=n.onStart,this.onStop=n.onStop,this.motsByZoom=n.motsByZoom||[vs,vs,vs,vs,vs,vs,vs,vs,vs,lp,lp],this.getMotsByZoom=a=>n.getMotsByZoom?n.getMotsByZoom(a,this.motsByZoom):this.motsByZoom[a],this.generalizationLevelByZoom=n.generalizationLevelByZoom||[],this.getGeneralizationLevelByZoom=a=>n.getGeneralizationLevelByZoom?n.getGeneralizationLevelByZoom(a,this.generalizationLevelByZoom):this.generalizationLevelByZoom[a],this.renderTimeIntervalByZoom=n.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=>n.getRenderTimeIntervalByZoom?n.getRenderTimeIntervalByZoom(a,this.renderTimeIntervalByZoom):this.renderTimeIntervalByZoom[a],this.isUpdateBboxOnMoveEnd=n.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,u_.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,h_.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(n){(super.defineProperties||(()=>{}))(n);let{style:a,speed:l,pixelRatio:o,hoverVehicleId:_,selectedVehicleId:v,filter:w,sort:T,time:C,live:L,canvas:F,styleOptions:q,mode:K,bboxParameters:he}=n,W=F,H=l||1,se=C||new Date,ge=K||Wi.TOPOGRAPHIC,_e=a||sl;Object.defineProperties(this,{isTrackerLayer:{value:!0},canvas:{get:()=>(W||(W=document.createElement("canvas")),W),set:fe=>{W=fe}},mode:{get:()=>ge,set:fe=>{fe!==ge&&(ge=fe,this.api?.wsApi?.open&&(this.stop(),this.start()))}},style:{get:()=>_e,set:fe=>{_e=fe,this.renderTrajectories()}},styleOptions:{value:{...ic,...q||{}}},speed:{get:()=>H,set:fe=>{H=fe,this.start()}},bboxParameters:{value:he,writable:!0},filter:{value:w,writable:!0},sort:{value:T,writable:!0},live:{value:L===!1?L:!0,writable:!0},time:{get:()=>se,set:fe=>{se=fe&&fe.getTime?fe:new Date(fe),this.renderTrajectories()}},trajectories:{value:{},writable:!0},hoverVehicleId:{value:_,writable:!0},selectedVehicleId:{value:v,writable:!0},pixelRatio:{value:o||(typeof window<"u"?window.devicePixelRatio:1),writable:!0},useRequestAnimationFrame:{value:n.useRequestAnimationFrame||!1,writable:!0},useThrottle:{value:n.useThrottle!==!1,writable:!0},useDebounce:{value:n.useDebounce||!1,writable:!0}})}attachToMap(n){super.attachToMap(n),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),Ka(this.visibilityRef),this.canvas){let n=this.canvas.getContext("2d");n&&n.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(n,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=iu(this.canvas,o,this.style,{...n,pixelRatio:this.pixelRatio||1,time:l},{filter:this.filter,noInterpolate:(n.zoom||0)<this.minZoomInterpolation?!0:a,hoverVehicleId:this.hoverVehicleId,selectedVehicleId:this.selectedVehicleId,...this.styleOptions})),!0}renderTrajectories(n,a){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),n&&(!a&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(n,a)}):!a&&this.useDebounce?this.debounceRenderTrajectories(n,a):!a&&this.useThrottle?this.throttleRenderTrajectories(n,a):this.renderTrajectoriesInternal(n,a))}setBbox(n,a){if(this.trajectories&&n&&a){let L=Object.keys(this.trajectories);for(let F=L.length-1;F>=0;F-=1)this.purgeTrajectory(this.trajectories[L[F]],n,a)}let l=Math.floor(a);if(!n||Number.isNaN(l))return;let[o,_,v,w]=n,T=[Math.floor(o),Math.floor(_),Math.ceil(v),Math.ceil(w),l],C=this.getGeneralizationLevelByZoom(l);this.generalizationLevel&&T.push(`gen=${C}`),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(([L,F])=>{T.push(`${L}=${F}`)}),this.api.bbox=T}getRefreshTimeInMs(n=0){let a=n!==void 0?Math.round(n):-1,l=this.getRenderTimeIntervalByZoom(a)||25,o=Math.max(25,l/(this.speed||1)),_=Math.min(o,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,u_.default)(this.renderTrajectoriesInternal,_,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,h_.default)(this.renderTrajectoriesInternal,_,{leading:!0,trailing:!0,maxWait:5e3})),this.api?.buffer){let[,v]=this.api.buffer;this.api.buffer=[_,v]}return o}getVehicle(n){return this.trajectories&&Object.values(this.trajectories).filter(n)||[]}getFeatureInfoAtCoordinate(n,a){let{resolution:l,nb:o}=a,_=fn([...n,...n],this.hitTolerance*l),v=Object.values(this.trajectories||{});this.sort&&(v=v.sort(this.sort));let w=[];for(let T=0;T<v.length;T+=1){let{coordinate:C}=v[T].properties;if(C&&yo(_,C)&&w.push(v[T]),w.length===o)break}return Promise.resolve({layer:this,features:w.map(T=>this.format.readFeature(T)),coordinate:n})}getTrajectoryInfos(n){let a=[this.api.getStopSequence(n),this.api.getFullTrajectory(n,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(([n,a])=>{let l=a?.properties?.time_intervals;this.time&&l?.length&&l[l.length-1][0]<this.time.getTime()&&this.removeTrajectory(n)})}purgeTrajectory(n,a,l){let{type:o,bounds:_}=n.properties;return this.isUpdateBboxOnMoveEnd&&!Zi(a,_)||this.mots&&!this.mots.includes(o)?(this.removeTrajectory(n),!0):!1}addTrajectory(n){this.trajectories||(this.trajectories={});let a=n.properties.train_id;a!==void 0&&(this.trajectories[a]=n),this.renderTrajectories()}removeTrajectory(n){let a;typeof n!="string"?a=n?.properties?.train_id:a=n,a!==void 0&&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(n){if(!n.content)return;let a=n.content,{geometry:l,properties:{train_id:o,time_since_update:_,raw_coordinates:v}}=a;_<0||this.purgeTrajectory(a)||(this.debug&&this.mode===Wi.TOPOGRAPHIC&&v?a.properties.olGeometry=this.format.readGeometry({type:"Point",coordinates:pr(v,this.map.getView().getProjection())}):a.properties.olGeometry=this.format.readGeometry(l),a.properties.timeOffset=Date.now()-n.timestamp,this.addTrajectory(a))}onDeleteTrajectoryMessage(n){n.content&&this.removeTrajectory(n.content)}highlightVehicle(n){this.hoverVehicleId!==n&&(this.hoverVehicleId=n,this.renderTrajectories(!0))}selectVehicle(n){this.selectedVehicleId!==n&&(this.selectedVehicleId=n,this.renderTrajectories(!0))}}}var kp=nE;var sE=new Rr({zIndex:2,image:new Sn({radius:5,fill:new Pr({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),oE=(h,e,n)=>{let a="#ffffff",l=h.get("type"),o=h.get("stroke");return o&&o[0]!=="#"&&(o=`#${o}`),a=o||n?.getBgColor(l),a=/#ffffff/i.test(a)?"#ff0000":a,[sE,new Rr({zIndex:3,image:new Sn({radius:4,fill:new Pr({color:a})}),stroke:new er({color:a,width:4})})]},Dp=oE;var aE=new Rr({zIndex:2,image:new Sn({radius:5,fill:new Pr({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),lE=new Rr({zIndex:3,image:new Sn({radius:4,fill:new Pr({color:"#a0a0a0"})}),stroke:new er({color:"#a0a0a0",width:4})}),cE=()=>[aE,lE],w1=cE;var S1=new Sn({radius:6,fill:new Pr({color:[255,0,0,1]}),stroke:new er({color:[0,0,0,1],width:1})}),hE=new Rr({stroke:new er({color:[0,0,0,1],width:5})}),uE=new Rr({image:S1,stroke:new er({color:[255,0,0,1],width:3})}),dE=new Rr({image:S1,stroke:new er({color:[255,0,0,1],width:3,lineDash:[1,10]})}),pE=(h,e)=>{let n=h.get("minResolution"),a=h.get("maxResolution"),l=e<=n&&e>a;return n&&a&&!l?[]:h.get("mot")!=="foot"?[hE,uE]:[dE]},I1=pE;var fE=new mr,Eu=class extends Tp{prepareFrame(){return!0}renderFrame(e){let{canvas:n,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%",n instanceof HTMLCanvasElement&&(n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.transformOrigin="top left",this.container.appendChild(n))),a){let{center:l,resolution:o,rotation:_}=e.viewState,{center:v,resolution:w,rotation:T}=a;if(w/o>=3)n?.getContext("2d")?.clearRect(0,0,n?.width,n?.height);else{let C=this.getLayer().getMapInternal(),L=C?.getPixelFromCoordinate(v),F=C?.getPixelFromCoordinate(l);L&&F&&(this.container.style.transform=vx(L[0]-F[0],L[1]-F[1],w/o,w/o,_-T,0,0))}}return this.container}getData(e){let n;try{let{pixelRatio:a}=this.getLayer();return n=this.canvas?.getContext("2d",{willReadFrequently:!0})?.getImageData(e[0]*(a||1),e[1]*(a||1),1,1).data||null,n}catch(a){console.error("error getting data",a)}return null}getFeatures(e){let n=this.getLayer()?.getMapInternal()?.getCoordinateFromPixel(e);return Promise.resolve(this.getFeaturesAtCoordinate(n))}forEachFeatureAtCoordinate(e,n,a,l){let o=this.getFeaturesAtCoordinate(e,a);return o.forEach(_=>{l(_,this.layer_,_.getGeometry())}),o?.[0]}getFeaturesAtCoordinate(e,n=5){if(!e)return[];let a=this.getLayer(),o=a.getMapInternal()?.getView()?.getResolution()||1,_=10,v=fn([...e,...e],n*o),w=[],T=Object.values(a.trajectories||{});a.sort&&(T=T.sort(this.sort));let C=[];for(let L=0;L<T.length;L+=1){let F=T[L];if(F.properties.coordinate&&yo(v,F.properties.coordinate)&&C.push(T[L]),C.length===_)break}return w=C.map(L=>fE.readFeature(L)),w}};var mE=new mr,p_=class h extends kp(Ys(bs)){constructor(n){super({source:new Ro({}),...n});this.allowRenderWhenAnimating=!1;this.allowRenderWhenAnimating=!!n.allowRenderWhenAnimating,this.vectorLayer=new ll({updateWhileAnimating:this.allowRenderWhenAnimating,updateWhileInteracting:!0,source:new cl({features:[]}),style:(a,l)=>(n.fullTrajectoryStyle||Dp)(a,l,this.styleOptions)}),this.renderState={center:[0,0],zoom:void 0,rotation:0},this.onZoomEndDebounced=(0,d_.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,d_.default)(this.onMoveEnd,100)}createRenderer(){return new Eu(this)}attachToMap(n){if(super.attachToMap(n),this.map){this.visible&&this.start();let a=this.map.getLayers().getArray().indexOf(this);this.map.getLayers().insertAt(a,this.vectorLayer),this.olEventsKeys.push(...this.map.on(["moveend","change:target"],l=>{let o=(l.map||l.target).getView();if(o.getAnimating()||o.getInteracting())return;let _=o.getZoom();this.currentZoom!==_&&this.onZoomEndDebounced(l),this.currentZoom=_,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(n){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},n)}renderTrajectoriesInternal(n,a){if(!this.map)return!1;let l=!1;if(l=(this.allowRenderWhenAnimating?!1:this.map.getView().getAnimating()||this.map.getView().getInteracting())?!1:super.renderTrajectoriesInternal(n,a),l){this.renderedViewState={...n};let{container:_}=this.getRenderer();_&&(_.style.transform="")}return l}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getView().getZoom())}onMoveEnd(n){!this.isUpdateBboxOnMoveEnd||!this.visible||this.setBbox()}onZoomEnd(){super.onZoomEnd(),!(!this.isUpdateBboxOnMoveEnd||!this.visible)&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}highlight(n){this.highlightVehicle(n?.get("train_id"))}select(n){this.selectVehicle(n?.get("train_id")),this.highlightTrajectory(n?.get("train_id"))}purgeTrajectory(n,a,l){let o=this.map.getView().getCenter();return!a&&!o?!1:super.purgeTrajectory(n,a||this.map.getView().calculateExtent(),l||this.map.getView().getZoom()||0)}setBbox(n,a){super.setBbox(n||this.map.getView().calculateExtent(),a||this.map.getView().getZoom()||0)}highlightTrajectory(n){return n?this.api.getFullTrajectory(n,this.mode,this.getGeneralizationLevelByZoom(Math.floor(this.map?.getView()?.getZoom()||0))).then(a=>{let l=a.content;if(!l?.features?.length)return[];let o=mE.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(n){return new h({...this.options,...n})}},C1=p_;var f_=class h extends Ys(bs){constructor(e){super(e),console.warn("Layer is deprecated. Use an OpenLayers Layer instead.")}clone(e){return new h({...this.options||{},...e||{}})}},Fp=f_;var m_=class h extends Fp{getFeatureInfoAtCoordinate(e){let n=[];if(this.map){let a=this.map.getPixelFromCoordinate(e);n=this.map.getFeaturesAtPixel(a,{layerFilter:l=>l===this.olLayer,hitTolerance:this.hitTolerance||5})}return Promise.resolve({features:n,layer:this,coordinate:e})}clone(e){return new h({...this.options,...e})}},E1=m_;var gE=new mr,yE=(h,e,n)=>{let a,{coordinate:l,resolution:o,projection:_,params:v}=e;return h&&o&&_&&(a=h.getFeatureInfoUrl(l,o,_,{info_format:"application/json",query_layers:h.getParams().layers,...v})),fetch(a,{signal:n.signal}).then(w=>w.json()).then(w=>gE.readFeatures(w)).catch(()=>[])},Tu={},_E=async(h,e,n=5)=>{Object.values(Tu).forEach(o=>{o?.abort()}),Tu={};let l=Ya(e).map(o=>{let _=o.getMapInternal(),v=_?.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=Vt(o);Tu[F]?.abort(),Tu[F]=new AbortController;let q=_?.getView()?.getResolution();return yE(T,{coordinate:h,resolution:q,projection:v,params:{info_format:"application/json",query_layers:T.getParams().layers}},Tu[F]).then(K=>({features:K,layer:o,coordinate:h})).catch(()=>({features:[],layer:o,coordinate:h}))}let C=_?.getPixelFromCoordinate(h);if(!C)return Promise.resolve(w);let L=_?.getFeaturesAtPixel(C,{layerFilter:F=>F===o,hitTolerance:o.get("hitTolerance")||n||5});return Promise.resolve({features:L,layer:o,coordinate:h})});return Promise.all(l)},T1=_E;var Gp={};sm(Gp,{CopyrightControl:()=>M1,Layer:()=>Bp,RealtimeAPI:()=>Dh,RealtimeLayer:()=>W1,RealtimeModes:()=>Wi,RoutingAPI:()=>Rh,StopsAPI:()=>Lh,VECTOR_TILE_FEATURE_PROPERTY:()=>rc,compareDepartures:()=>ru,createCanvas:()=>xs,createRealtimeFilters:()=>um,debounceDeparturesMessages:()=>tg,debounceWebsocketMessages:()=>kh,getCircleCanvas:()=>cg,getDelayBgCanvas:()=>ag,getDelayTextCanvas:()=>lg,getHoursAndMinutes:()=>yx,getLayersAsFlatArray:()=>Ya,getMapGlCopyrights:()=>Fh,getMercatorResolution:()=>q1,getSourceCoordinates:()=>Vp,getTextCanvas:()=>hg,getUTCDateString:()=>mx,getUTCTimeString:()=>gx,getUrlWithParams:()=>Ha,getVehiclePosition:()=>tu,pad:()=>Bd,realtimeConfig:()=>ic,realtimeDefaultStyle:()=>sl,realtimeDelayStyle:()=>ug,realtimeSimpleStyle:()=>dg,removeDuplicate:()=>Xa,renderTrajectories:()=>iu,sortAndFilterDepartures:()=>nu,sortByDelay:()=>dm});var xE=" | ",g_=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||xE,n=this.options?.customAttribution||Fh(this.map),a=(Array.isArray(n)?n:[n]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},M1=g_;var Op,vE=new Uint8Array(16);function y_(){if(!Op&&(Op=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Op))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Op(vE)}var Dr=[];for(let h=0;h<256;++h)Dr.push((h+256).toString(16).slice(1));function A1(h,e=0){return Dr[h[e+0]]+Dr[h[e+1]]+Dr[h[e+2]]+Dr[h[e+3]]+"-"+Dr[h[e+4]]+Dr[h[e+5]]+"-"+Dr[h[e+6]]+Dr[h[e+7]]+"-"+Dr[h[e+8]]+Dr[h[e+9]]+"-"+Dr[h[e+10]]+Dr[h[e+11]]+Dr[h[e+12]]+Dr[h[e+13]]+Dr[h[e+14]]+Dr[h[e+15]]}var bE=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),__={randomUUID:bE};function wE(h,e,n){if(__.randomUUID&&!e&&!h)return __.randomUUID();h=h||{};let a=h.random||(h.rng||y_)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,e){n=n||0;for(let l=0;l<16;++l)e[n+l]=a[l];return e}return A1(a)}var x_=wE;var P1=Os(r_()),v_=class extends P1.Evented{constructor(n={}){super();this.options={};this.type="custom";this.options=n,this.id=n.id||x_(),this.type="custom"}onAdd(n,a){this.map=n}onRemove(n,a){this.map=void 0}render(n){}},Bp=v_;var ir=63710088e-1,R1={centimeters:ir*100,centimetres:ir*100,degrees:ir/111325,feet:ir*3.28084,inches:ir*39.37,kilometers:ir/1e3,kilometres:ir/1e3,meters:ir,metres:ir,miles:ir/1609.344,millimeters:ir*1e3,millimetres:ir*1e3,nauticalmiles:ir/1852,radians:1,yards:ir*1.0936},P6={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/ir,yards:1.0936133};function L1(h,e,n){n===void 0&&(n={});var a={type:"Feature"};return(n.id===0||n.id)&&(a.id=n.id),n.bbox&&(a.bbox=n.bbox),a.properties=e||{},a.geometry=h,a}function ga(h,e,n){if(n===void 0&&(n={}),!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(!b_(h[0])||!b_(h[1]))throw new Error("coordinates must contain numbers");var a={type:"Point",coordinates:h};return L1(a,e,n)}function SE(h,e){e===void 0&&(e="kilometers");var n=R1[e];if(!n)throw new Error(e+" units is invalid");return h*n}function IE(h,e){e===void 0&&(e="kilometers");var n=R1[e];if(!n)throw new Error(e+" units is invalid");return h/n}function k1(h){var e=h%(2*Math.PI);return e*180/Math.PI}function hl(h){var e=h%360;return e*Math.PI/180}function Np(h,e,n){if(e===void 0&&(e="kilometers"),n===void 0&&(n="kilometers"),!(h>=0))throw new Error("length must be a positive number");return SE(IE(h,e),n)}function b_(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function w_(h){return!!h&&h.constructor===Object}function Mu(h,e,n){if(h!==null)for(var a,l,o,_,v,w,T,C=0,L=0,F,q=h.type,K=q==="FeatureCollection",he=q==="Feature",W=K?h.features.length:1,H=0;H<W;H++){T=K?h.features[H].geometry:he?h.geometry:h,F=T?T.type==="GeometryCollection":!1,v=F?T.geometries.length:1;for(var se=0;se<v;se++){var ge=0,_e=0;if(_=F?T.geometries[se]:T,_!==null){w=_.coordinates;var fe=_.type;switch(C=n&&(fe==="Polygon"||fe==="MultiPolygon")?1:0,fe){case null:break;case"Point":if(e(w,L,H,ge,_e)===!1)return!1;L++,ge++;break;case"LineString":case"MultiPoint":for(a=0;a<w.length;a++){if(e(w[a],L,H,ge,_e)===!1)return!1;L++,fe==="MultiPoint"&&ge++}fe==="LineString"&&ge++;break;case"Polygon":case"MultiLineString":for(a=0;a<w.length;a++){for(l=0;l<w[a].length-C;l++){if(e(w[a][l],L,H,ge,_e)===!1)return!1;L++}fe==="MultiLineString"&&ge++,fe==="Polygon"&&_e++}fe==="Polygon"&&ge++;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-C;o++){if(e(w[a][l][o],L,H,ge,_e)===!1)return!1;L++}_e++}ge++}break;case"GeometryCollection":for(a=0;a<_.geometries.length;a++)if(Mu(_.geometries[a],e,n)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function CE(h,e){e===void 0&&(e={});var n=0,a=0,l=0;return Mu(h,function(o){n+=o[0],a+=o[1],l++},!0),ga([n/l,a/l],e.properties)}var D1=CE;function Ks(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 F1(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 EE(h,e,n){n===void 0&&(n={});var a;n.final?a=z1(Ks(e),Ks(h)):a=z1(Ks(h),Ks(e));var l=a>180?-(360-a):a;return l}function z1(h,e){var n=hl(h[1]),a=hl(e[1]),l=hl(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(n/2+Math.PI/4)),_=Math.atan2(l,o);return(k1(_)+360)%360}var O1=EE;function TE(h,e,n){n===void 0&&(n={});var a=Ks(h),l=Ks(e);l[0]+=l[0]-a[0]>180?-360:a[0]-l[0]>180?360:0;var o=ME(a,l),_=Np(o,"meters",n.units);return _}function ME(h,e,n){n=n===void 0?ir:Number(n);var a=n,l=h[1]*Math.PI/180,o=e[1]*Math.PI/180,_=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?_/w:Math.cos(l),C=Math.sqrt(_*_+T*T*v*v),L=C*a;return L}var B1=TE;function AE(h,e,n,a){a===void 0&&(a={});var l=e<0,o=Np(Math.abs(e),a.units,"meters");l&&(o=-Math.abs(o));var _=Ks(h),v=PE(_,o,n);return v[0]+=v[0]-_[0]>180?-360:_[0]-v[0]>180?360:0,ga(v,a.properties)}function PE(h,e,n,a){a=a===void 0?ir:Number(a);var l=e/a,o=h[0]*Math.PI/180,_=hl(h[1]),v=hl(n),w=l*Math.cos(v),T=_+w;Math.abs(T)>Math.PI/2&&(T=T>0?Math.PI-T:-Math.PI-T);var C=Math.log(Math.tan(T/2+Math.PI/4)/Math.tan(_/2+Math.PI/4)),L=Math.abs(C)>1e-11?w/C:Math.cos(_),F=l*Math.sin(v)/L,q=o+F;return[(q*180/Math.PI+540)%360-180,T*180/Math.PI]}var N1=AE;function RE(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return V1(h);case"FeatureCollection":return LE(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return S_(h);default:throw new Error("unknown GeoJSON type")}}function V1(h){var e={type:"Feature"};return Object.keys(h).forEach(function(n){switch(n){case"type":case"properties":case"geometry":return;default:e[n]=h[n]}}),e.properties=G1(h.properties),e.geometry=S_(h.geometry),e}function G1(h){var e={};return h&&Object.keys(h).forEach(function(n){var a=h[n];typeof a=="object"?a===null?e[n]=null:Array.isArray(a)?e[n]=a.map(function(l){return l}):e[n]=G1(a):e[n]=a}),e}function LE(h){var e={type:"FeatureCollection"};return Object.keys(h).forEach(function(n){switch(n){case"type":case"features":return;default:e[n]=h[n]}}),e.features=h.features.map(function(n){return V1(n)}),e}function S_(h){var e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(function(n){return S_(n)}),e):(e.coordinates=j1(h.coordinates),e)}function j1(h){var e=h;return typeof e[0]!="object"?e.slice():e.map(function(n){return j1(n)})}var U1=RE;function kE(h,e,n){if(n=n||{},!w_(n))throw new Error("options is invalid");var a=n.pivot,l=n.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=D1(h)),(l===!1||l===void 0)&&(h=U1(h)),Mu(h,function(o){var _=O1(a,o),v=_+e,w=B1(a,o),T=F1(N1(a,w,v));o[0]=T[0],o[1]=T[1]})),h}var I_=kE;var DE=(h,e=1)=>{let{width:n,height:a}=h.getCanvas(),l=h.unproject({x:0,y:0}),o=h.unproject({x:0,y:a/e}),_=h.unproject({x:n/e,y:a/e}),v=h.unproject({x:n/e,y:0});return[[l.lng,l.lat],[v.lng,v.lat],[_.lng,_.lat],[o.lng,o.lat]]},Vp=DE;var FE=h=>{let e=h.getBounds().toArray(),n=pr(e[0]),a=pr(e[1]),l=[...n,...a],{width:o,height:_}=h.getCanvas(),v=vi(l)/o,w=dr(l)/_;return Math.max(v,w)},q1=FE;var zE=h=>Gh(h.toArray().flat(),"EPSG:4326","EPSG:3857"),C_=zE;var E_=class extends kp(Bp){constructor(e={}){let n=document.createElement("canvas");super({canvas:n,id:"realtime",...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,n){super.onAdd(e,n),e.isStyleLoaded()&&this.onLoad(),e.on("load",this.onLoad)}onRemove(e,n){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,n)}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:n,height:a}=this.map.getCanvas(),l=this.map.getCenter(),o=this.map.unproject({x:0,y:a/this.pixelRatio}),_=this.map.unproject({x:n/this.pixelRatio,y:0}),v=I_(ga([o.lng,o.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,w=I_(ga([_.lng,_.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,T=[...pr(v),...pr(w)],C=vi(T)/(n/this.pixelRatio),L=dr(T)/(a/this.pixelRatio),F=Math.max(C,L),q={size:[n/this.pixelRatio,a/this.pixelRatio],center:pr([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(q,e)}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getZoom())}purgeTrajectory(e,n,a){return super.purgeTrajectory(e,n||C_(this.map.getBounds()),a||Math.floor(this.map.getZoom()-1))}setBbox(e,n){super.setBbox(e||C_(this.map.getBounds()),n||this.map.getZoom()-1)}renderTrajectoriesInternal(e,n=!1){let a=super.renderTrajectoriesInternal(e,n);if(a&&this.map.style){let l=Vp(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()}},W1=E_;var T_={ol:zp,maplibre:Gp};typeof window<"u"&&(window.mbt=T_);var FN=T_;})();
586
586
  /*! Bundled license information:
587
587
 
588
588
  maplibre-gl/dist/maplibre-gl.js: