mobility-toolbox-js 3.0.0-beta.13 → 3.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/mbt.js +9 -2
- package/mbt.js.map +2 -2
- package/mbt.min.js +1 -1
- package/mbt.min.js.map +2 -2
- package/ol/layers/MaplibreStyleLayer.d.ts +1 -1
- package/ol/layers/MaplibreStyleLayer.js +11 -2
- package/package.json +1 -1
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=fp(F,k);n.push(q),_+=q;let K=VS(F);a.push(K),w=Math.max(w,K)}return{width:o,height:v,widths:n,heights:a,lineWidths:l}}function Wv(h,e,n,a,l,o,_,v,w,T,C){h.save(),n!==1&&(h.globalAlpha===void 0?h.globalAlpha=k=>k.globalAlpha*=n:h.globalAlpha*=n),e&&h.transform.apply(h,e),a.contextInstructions?(h.translate(w,T),h.scale(C[0],C[1]),GS(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 GS(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 Ug=class h extends pp{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,k=Math.sqrt(w*w+C*C),F=k/w;if(e==="miter"&&F<=a)return F*n;let q=n/2/F,K=n/2*(C/k),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=Gs,n=js,a=0,l=null,o=0,_,v=0;this.stroke_&&(_=xn(this.stroke_.getColor()??So),v=this.stroke_.getWidth()??Io,l=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset()??0,n=this.stroke_.getLineJoin()??js,e=this.stroke_.getLineCap()??Gs,a=this.stroke_.getMiterLimit()??wo);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=xn(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=bo(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()}},gp=Ug;var qg=class h extends gp{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()}},wn=qg;var da=class h{constructor(e){e=e||{},this.geometry_=null,this.geometryFunction_=$v,e.geometry!==void 0&&this.setGeometry(e.geometry),this.fill_=e.fill!==void 0?e.fill:null,this.image_=e.image!==void 0?e.image:null,this.renderer_=e.renderer!==void 0?e.renderer:null,this.hitDetectionRenderer_=e.hitDetectionRenderer!==void 0?e.hitDetectionRenderer:null,this.stroke_=e.stroke!==void 0?e.stroke:null,this.text_=e.text!==void 0?e.text:null,this.zIndex_=e.zIndex}clone(){let e=this.getGeometry();return e&&typeof e=="object"&&(e=e.clone()),new h({geometry:e??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(e){this.renderer_=e}setHitDetectionRenderer(e){this.hitDetectionRenderer_=e}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(e){this.fill_=e}getImage(){return this.image_}setImage(e){this.image_=e}getStroke(){return this.stroke_}setStroke(e){this.stroke_=e}getText(){return this.text_}setText(e){this.text_=e}getZIndex(){return this.zIndex_}setGeometry(e){typeof e=="function"?this.geometryFunction_=e:typeof e=="string"?this.geometryFunction_=function(n){return n.get(e)}:e?e!==void 0&&(this.geometryFunction_=function(){return e}):this.geometryFunction_=$v,this.geometry_=e}setZIndex(e){this.zIndex_=e}};function Zv(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 Wg=null;function Hv(h,e){if(!Wg){let n=new Ar({color:"rgba(255,255,255,0.4)"}),a=new er({color:"#3399CC",width:1.25});Wg=[new da({image:new wn({fill:n,stroke:a,radius:5}),fill:n,stroke:a})]}return Wg}function Xv(){let h={},e=[255,255,255,1],n=[0,153,255,1],a=3;return h.Polygon=[new da({fill:new Ar({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 wn({radius:a*2,fill:new Ar({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 $v(h){return h.getGeometry()}var Pr=da;var jS="#333",$g=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 Ar({color:jS}),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}},Yv=$g;var cb=mo(Xg(),1);function Kv(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 Yg=class h extends pp{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?bo(e.color):null,this.iconImage_=sc(_,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 k=this.getImage(1);if(k.width&&k.height)T=k.width,C=k.height;else if(k instanceof HTMLImageElement){this.initialOptions_=e;let F=()=>{if(this.unlistenImageChange(F),!this.initialOptions_)return;let q=this.iconImage_.getSize();this.setScale(Kv(q[0],q[1],e.width,e.height))};this.listenImageChange(F);return}}T!==void 0&&this.setScale(Kv(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()}},au=Yg;var ac=0,lc=0,wi=1<<ac++,ut=1<<ac++,Sn=1<<ac++,Xi=1<<ac++,Us=1<<ac++,Gr=Math.pow(2,ac)-1,Qv={[wi]:"boolean",[ut]:"number",[Sn]:"string",[Xi]:"color",[Us]:"number[]"},US=Object.keys(Qv).map(Number).sort(ps);function Rr(h){let e=[];for(let n of US)qS(h,n)&&e.push(Qv[n]);return e.length===0?"untyped":e.length<3?e.join(" or "):e.slice(0,-1).join(", ")+", or "+e[e.length-1]}function qS(h,e){return(h&e)===e}function Ss(h,e){return!!(h&e)}function yp(h,e){return h===e}var ws=class{constructor(e,n){this.type=e,this.value=n}},Kg=class{constructor(e,n,...a){this.type=e,this.operator=n,this.args=a}};function Jg(){return{variables:new Set,properties:new Set,featureId:!1,geometryType:!1,style:{}}}function WS(h){switch(h){case"string":return Sn;case"color":return Xi;case"number":return ut;case"boolean":return wi;case"number[]":return Us;default:throw new Error(`Unrecognized type hint: ${h}`)}}function Jt(h,e,n){switch(typeof h){case"boolean":return new ws(wi,h);case"number":return new ws(ut,h);case"string":{let l=Sn;return Nv(h)&&(l|=Xi),yp(l&n,lc)||(l&=n),new ws(l,h)}default:}if(!Array.isArray(h))throw new Error("Expression must be an array or a primitive value");if(h.length===0)throw new Error("Empty expression");if(typeof h[0]=="string")return rC(h,e,n);for(let l of h)if(typeof l!="number")throw new Error("Expected an array of numbers");let a=Us;return(h.length===3||h.length===4)&&(a|=Xi),n&&(a&=n),new ws(a,h)}var Fe={Get:"get",Var:"var",Concat:"concat",GeometryType:"geometry-type",Any:"any",All:"all",Not:"!",Resolution:"resolution",Zoom:"zoom",Time:"time",Equal:"==",NotEqual:"!=",GreaterThan:">",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match",Between:"between",Interpolate:"interpolate",Coalesce:"coalesce",Case:"case",In:"in",Number:"number",String:"string",Array:"array",Color:"color",Id:"id",Band:"band",Palette:"palette",ToString:"to-string"},$S={[Fe.Get]:kt(([h,e])=>e!==void 0?WS(e.value):Gr,Bt(1,2),ZS),[Fe.Var]:kt(([h])=>h.type,Bt(1,1),HS),[Fe.Id]:kt(ut|Sn,lu,XS),[Fe.Concat]:kt(Sn,Bt(2,1/0),Wt(Gr)),[Fe.GeometryType]:kt(Sn,lu,YS),[Fe.Resolution]:kt(ut,lu),[Fe.Zoom]:kt(ut,lu),[Fe.Time]:kt(ut,lu),[Fe.Any]:kt(wi,Bt(2,1/0),Wt(wi)),[Fe.All]:kt(wi,Bt(2,1/0),Wt(wi)),[Fe.Not]:kt(wi,Bt(1,1),Wt(wi)),[Fe.Equal]:kt(wi,Bt(2,2),Wt(Gr),pa),[Fe.NotEqual]:kt(wi,Bt(2,2),Wt(Gr),pa),[Fe.GreaterThan]:kt(wi,Bt(2,2),Wt(Gr),pa),[Fe.GreaterThanOrEqualTo]:kt(wi,Bt(2,2),Wt(Gr),pa),[Fe.LessThan]:kt(wi,Bt(2,2),Wt(Gr),pa),[Fe.LessThanOrEqualTo]:kt(wi,Bt(2,2),Wt(Gr),pa),[Fe.Multiply]:kt(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]:kt(h=>{let e=Gr;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(Gr),pa),[Fe.Divide]:kt(ut,Bt(2,2),Wt(ut)),[Fe.Add]:kt(ut,Bt(2,1/0),Wt(ut)),[Fe.Subtract]:kt(ut,Bt(2,2),Wt(ut)),[Fe.Clamp]:kt(ut,Bt(3,3),Wt(ut)),[Fe.Mod]:kt(ut,Bt(2,2),Wt(ut)),[Fe.Pow]:kt(ut,Bt(2,2),Wt(ut)),[Fe.Abs]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Floor]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Ceil]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Round]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Sin]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Cos]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Atan]:kt(ut,Bt(1,2),Wt(ut)),[Fe.Sqrt]:kt(ut,Bt(1,1),Wt(ut)),[Fe.Match]:kt(h=>{let e=Gr;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),Jv,JS),[Fe.Between]:kt(wi,Bt(3,3),Wt(ut)),[Fe.Interpolate]:kt(h=>{let e=Xi|ut;for(let n=3;n<h.length;n+=2)e&=h[n].type;return e},Bt(6,1/0),Jv,QS),[Fe.Case]:kt(h=>{let e=Gr;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),KS,eC),[Fe.In]:kt(wi,Bt(2,2),tC),[Fe.Number]:kt(ut,Bt(1,1/0),Wt(Gr)),[Fe.String]:kt(Sn,Bt(1,1/0),Wt(Gr)),[Fe.Array]:kt(h=>h.length===3||h.length===4?Us|Xi:Us,Bt(1,1/0),Wt(ut)),[Fe.Color]:kt(Xi,Bt(1,4),Wt(ut)),[Fe.Band]:kt(ut,Bt(1,3),Wt(ut)),[Fe.Palette]:kt(Xi,Bt(2,2),iC),[Fe.ToString]:kt(Sn,Bt(1,1),Wt(wi|ut|Sn|Xi))};function ZS(h,e){let n=Jt(h[1],e);if(!(n instanceof ws))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 HS(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 ws(Gr,l)];let o=e.style.variables[l],_=Jt(o,e);if(_.value=l,a&&!Ss(a,_.type))throw new Error(`The variable ${l} has type ${Rr(_.type)} but the following type was expected: ${Rr(a)}`);return[_]}function XS(h,e){e.featureId=!0}function YS(h,e){e.geometryType=!0}function lu(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(!Ss(h,v.type)){let w=Rr(h),T=Rr(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=Gr;for(let v=0;v<n.length;++v)o&=n[v].type;if(o===lc)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 KS(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 Jv(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 JS(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 k=0;k<l-2;k+=2){let F=Jt(h[k+2],e),q=Jt(h[k+3],e);_&=F.type,w&=q.type,T[k]=F,T[k+1]=q}let C=Sn|ut|wi;if(!Ss(C,_))throw new Error(`Expected an input of type ${Rr(C)} for the interpolate operation, got ${Rr(_)} instead`);if(yp(w,lc))throw new Error("Could not find a common output type for the following match operation: "+JSON.stringify(h));for(let k=0;k<l-2;k+=2){let F=Jt(h[k+2],e,_),q=Jt(h[k+3],e,w);T[k]=F,T[k+1]=q}return[Jt(h[1],e,_),...T,Jt(h[h.length-1],e,w)]}function QS(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(!Ss(ut,_.type))throw new Error(`Expected an input of type number for the interpolate operation, got ${Rr(_.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(!Ss(ut,T.type))throw new Error(`Expected all stop input values in the interpolate operation to be of type number, got ${Rr(T.type)} at position ${w+2} instead`);let C=Jt(h[w+4],e);if(!Ss(ut|Xi,C.type))throw new Error(`Expected all stop output values in the interpolate operation to be a number or color, got ${Rr(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 eC(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(!Ss(wi,w.type))throw new Error(`Expected all conditions in the case operation to be of type boolean, got ${Rr(w.type)} at position ${v} instead`);o&=T.type,_[v]=w,_[v+1]=T}if(yp(o,lc))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 tC(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=Sn|ut,l=new Array(n.length);for(let _=0;_<l.length;_++){let v=Jt(n[_],e);a&=v.type,l[_]=v}if(yp(a,lc))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 iC(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 ${Rr(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 ws))throw new Error(`The palette color at index ${o} must be a literal value`);if(!Ss(_.type,Xi))throw new Error(`The palette color at index ${o} should be of type color, got ${Rr(_.type)} instead`);l[o]=_}return[n,...l]}function kt(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(!Ss(v,l))throw new Error(`The following expression was expected to return ${Rr(l)}, but returns ${Rr(v)} instead: ${JSON.stringify(n)}`);v&=l}if(v===lc)throw new Error(`No matching type was found for the following expression: ${JSON.stringify(n)}`);return new Kg(v,o,..._)}}function rC(h,e,n){let a=h[0],l=$S[a];if(!l)throw new Error(`Unknown operator: ${a}`);return l(h,e,n)}function Qg(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 Qg(h.getGeometries()[0]);default:return""}}function ey(){return{variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""}}function qs(h,e,n){let a=Jt(h,n);if(!Ss(e,a.type)){let l=Rr(e),o=Rr(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 ws){if(h.type===Xi&&typeof h.value=="string"){let a=dp(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 nC(h,e);case Fe.Get:case Fe.Var:return sC(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 aC(h,e);case Fe.Equal:case Fe.NotEqual:case Fe.LessThan:case Fe.LessThanOrEqualTo:case Fe.GreaterThan:case Fe.GreaterThanOrEqualTo:return oC(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 lC(h,e);case Fe.Case:return cC(h,e);case Fe.Match:return hC(h,e);case Fe.Interpolate:return uC(h,e);case Fe.ToString:return dC(h,e);default:throw new Error(`Unsupported operator ${n}`)}}function nC(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 sC(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 oC(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 aC(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 lC(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 cC(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 hC(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 uC(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),k=a[T+1](l),F=Array.isArray(k);if(F&&(k=Ov(k)),C>=_)return T===2?k:F?pC(o,_,v,w,C,k):cu(o,_,v,w,C,k);v=C,w=k}return w}}function dC(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?su(_):_.toString()};default:throw new Error(`Unsupported convert operator ${n}`)}}function cu(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 pC(h,e,n,a,l,o){if(l-n===0)return a;let v=Rg(a),w=Rg(o),T=w[2]-v[2];T>180?T-=360:T<-180&&(T+=360);let C=[cu(h,e,n,v[0],l,w[0]),cu(h,e,n,v[1],l,w[1]),v[2]+cu(h,e,n,0,l,T),cu(h,e,n,a[3],l,o[3])];return kg(Bv(C))}function fC(h){return!0}function rb(h){let e=Jg(),n=mC(h,e),a=ey();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=Qg(l.getGeometry())),n(a)}}function ry(h){let e=Jg(),n=h.length,a=new Array(n);for(let _=0;_<n;++_)a[_]=ty(h[_],e);let l=ey(),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 mC(h,e){let n=h.length,a=new Array(n);for(let l=0;l<n;++l){let o=h[l],_="filter"in o?qs(o.filter,wi,e):fC,v;if(Array.isArray(o.style)){let w=o.style.length;v=new Array(w);for(let T=0;T<w;++T)v[T]=ty(o.style[T],e)}else v=[ty(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 ty(h,e){let n=hu(h,"",e),a=uu(h,"",e),l=gC(h,e),o=yC(h,e),_=Cn(h,"z-index",e);if(!n&&!a&&!l&&!o&&!On(h))throw new Error("No fill, stroke, point, or text symbolizer properties in style: "+JSON.stringify(h));let v=new Pr;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 hu(h,e,n){let a;if(e+"fill-pattern-src"in h?a=bC(h,e+"fill-",n):a=ny(h,e+"fill-color",n),!a)return null;let l=new Ar;return function(o){let _=a(o);return _==="none"?null:(l.setColor(_),l)}}function uu(h,e,n){let a=Cn(h,e+"stroke-width",n),l=ny(h,e+"stroke-color",n);if(!a&&!l)return null;let o=Eo(h,e+"stroke-line-cap",n),_=Eo(h,e+"stroke-line-join",n),v=nb(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(k){if(l){let F=l(k);if(F==="none")return null;C.setColor(F)}if(a&&C.setWidth(a(k)),o){let F=o(k);if(F!=="butt"&&F!=="round"&&F!=="square")throw new Error("Expected butt, round, or square line cap");C.setLineCap(F)}if(_){let F=_(k);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(k)),w&&C.setLineDashOffset(w(k)),T&&C.setMiterLimit(T(k)),C}}function gC(h,e){let n="text-",a=Eo(h,n+"value",e);if(!a)return null;let l=hu(h,n,e),o=hu(h,n+"background-",e),_=uu(h,n,e),v=uu(h,n+"background-",e),w=Eo(h,n+"font",e),T=Cn(h,n+"max-angle",e),C=Cn(h,n+"offset-x",e),k=Cn(h,n+"offset-y",e),F=du(h,n+"overflow",e),q=Eo(h,n+"placement",e),K=Cn(h,n+"repeat",e),he=vp(h,n+"scale",e),W=du(h,n+"rotate-with-view",e),H=Cn(h,n+"rotation",e),se=Eo(h,n+"align",e),ge=Eo(h,n+"justify",e),_e=Eo(h,n+"baseline",e),fe=nb(h,n+"padding",e),xe=bp(h,n+"declutter-mode"),Me=new Yv({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)),k&&Me.setOffsetY(k(Re)),F&&Me.setOverflow(F(Re)),q){let Ce=q(Re);if(Ce!=="point"&&Ce!=="line")throw new Error("Expected point or line for text-placement");Me.setPlacement(Ce)}if(K&&Me.setRepeat(K(Re)),he&&Me.setScale(he(Re)),W&&Me.setRotateWithView(W(Re)),H&&Me.setRotation(H(Re)),se){let Ce=se(Re);if(Ce!=="left"&&Ce!=="center"&&Ce!=="right"&&Ce!=="end"&&Ce!=="start")throw new Error("Expected left, right, center, start, or end for text-align");Me.setTextAlign(Ce)}if(ge){let Ce=ge(Re);if(Ce!=="left"&&Ce!=="right"&&Ce!=="center")throw new Error("Expected left, right, or center for text-justify");Me.setJustify(Ce)}if(_e){let Ce=_e(Re);if(Ce!=="bottom"&&Ce!=="top"&&Ce!=="middle"&&Ce!=="alphabetic"&&Ce!=="hanging")throw new Error("Expected bottom, top, middle, alphabetic, or hanging for text-baseline");Me.setTextBaseline(Ce)}return fe&&Me.setPadding(fe(Re)),Me}}function yC(h,e){return"icon-src"in h?_C(h,e):"shape-points"in h?xC(h,e):"circle-radius"in h?vC(h,e):null}function _C(h,e){let n="icon-",a=n+"src",l=sb(h[a],a),o=_p(h,n+"anchor",e),_=vp(h,n+"scale",e),v=Cn(h,n+"opacity",e),w=_p(h,n+"displacement",e),T=Cn(h,n+"rotation",e),C=du(h,n+"rotate-with-view",e),k=tb(h,n+"anchor-origin"),F=ib(h,n+"anchor-x-units"),q=ib(h,n+"anchor-y-units"),K=IC(h,n+"color"),he=SC(h,n+"cross-origin"),W=CC(h,n+"offset"),H=tb(h,n+"offset-origin"),se=xp(h,n+"width"),ge=xp(h,n+"height"),_e=wC(h,n+"size"),fe=bp(h,n+"declutter-mode"),xe=new au({src:l,anchorOrigin:k,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 xC(h,e){let n="shape-",a=n+"points",l=n+"radius",o=iy(h[a],a),_=iy(h[l],l),v=hu(h,n,e),w=uu(h,n,e),T=vp(h,n+"scale",e),C=_p(h,n+"displacement",e),k=Cn(h,n+"rotation",e),F=du(h,n+"rotate-with-view",e),q=xp(h,n+"radius2"),K=xp(h,n+"angle"),he=bp(h,n+"declutter-mode"),W=new gp({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)),k&&W.setRotation(k(H)),F&&W.setRotateWithView(F(H)),T&&W.setScale(T(H)),W}}function vC(h,e){let n="circle-",a=hu(h,n,e),l=uu(h,n,e),o=Cn(h,n+"radius",e),_=vp(h,n+"scale",e),v=_p(h,n+"displacement",e),w=Cn(h,n+"rotation",e),T=du(h,n+"rotate-with-view",e),C=bp(h,n+"declutter-mode"),k=new wn({radius:5,declutterMode:C});return function(F){return o&&k.setRadius(o(F)),a&&k.setFill(a(F)),l&&k.setStroke(l(F)),v&&k.setDisplacement(v(F)),w&&k.setRotation(w(F)),T&&k.setRotateWithView(T(F)),_&&k.setScale(_(F)),k}}function Cn(h,e,n){if(!(e in h))return;let a=qs(h[e],ut,n);return function(l){return iy(a(l),e)}}function Eo(h,e,n){if(!(e in h))return null;let a=qs(h[e],Sn,n);return function(l){return sb(a(l),e)}}function bC(h,e,n){let a=Eo(h,e+"pattern-src",n),l=eb(h,e+"pattern-offset",n),o=eb(h,e+"pattern-size",n),_=ny(h,e+"color",n);return function(v){return{src:a(v),offset:l&&l(v),size:o&&o(v),color:_&&_(v)}}}function du(h,e,n){if(!(e in h))return null;let a=qs(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 ny(h,e,n){if(!(e in h))return null;let a=qs(h[e],Xi|Sn,n);return function(l){return ob(a(l),e)}}function nb(h,e,n){if(!(e in h))return null;let a=qs(h[e],Us,n);return function(l){return pu(a(l),e)}}function _p(h,e,n){if(!(e in h))return null;let a=qs(h[e],Us,n);return function(l){let o=pu(a(l),e);if(o.length!==2)throw new Error(`Expected two numbers for ${e}`);return o}}function eb(h,e,n){if(!(e in h))return null;let a=qs(h[e],Us,n);return function(l){return ab(a(l),e)}}function vp(h,e,n){if(!(e in h))return null;let a=qs(h[e],Us|ut,n);return function(l){return EC(a(l),e)}}function xp(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 wC(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 SC(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 tb(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 ib(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 CC(h,e){let n=h[e];if(n!==void 0)return pu(n,e)}function bp(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 IC(h,e){let n=h[e];if(n!==void 0)return ob(n,e)}function pu(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 sb(h,e){if(typeof h!="string")throw new Error(`Expected a string for ${e}`);return h}function iy(h,e){if(typeof h!="number")throw new Error(`Expected a number for ${e}`);return h}function ob(h,e){if(typeof h=="string")return h;let n=pu(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 ab(h,e){let n=pu(h,e);if(n.length!==2)throw new Error(`Expected an array of two numbers for ${e}`);return n}function EC(h,e){return typeof h=="number"?h:ab(h,e)}var lb={RENDER_ORDER:"renderOrder"},sy=class extends vs{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(lb.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 cb.default(9)),this.getRenderer().renderDeclutter(e,n)}setRenderOrder(e){this.set(lb.RENDER_ORDER,e)}setStyle(e){this.style_=TC(e),this.styleFunction_=e===null?void 0:Zv(this.style_),this.changed()}};function TC(h){if(h===void 0)return Hv;if(!h)return null;if(typeof h=="function"||h instanceof Pr)return h;if(!Array.isArray(h))return ry([h]);if(h.length===0)return[];let e=h.length,n=h[0];if(n instanceof Pr){let l=new Array(e);for(let o=0;o<e;++o){let _=h[o];if(!(_ instanceof Pr))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 rb(l)}return ry(h)}var hb=sy;var fu={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},mu=[fu.FILL],Ws=[fu.STROKE],To=[fu.BEGIN_PATH],oy=[fu.CLOSE_PATH],gt=fu;var ay=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){}},wp=ay;var ly=class extends wp{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],go(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],k=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=Ud(T,F),W!==he?(q&&(v[w++]=C,v[w++]=k,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],k=F[1],he=W;return(o&&q||K===n+l)&&(v[w++]=C,v[w++]=k),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,k,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,qh,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,F,e,l||a,qh,o]);break;case"Polygon":case"MultiLineString":k=[],T=_=="Polygon"?e.getOrientedFlatCoordinates():e.getFlatCoordinates(),q=this.drawCustomCoordinates_(T,0,e.getEnds(),v,k),this.instructions.push([gt.CUSTOM,w,k,e,a,sa,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,k,e,l||a,sa,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,Jn,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,C,e,l||a,Jn,o]);break;case"MultiPoint":T=e.getFlatCoordinates(),C=this.appendFlatPointCoordinates(T,v),C>w&&(this.instructions.push([gt.CUSTOM,w,C,e,a,Jn,o]),this.hitDetectionInstructions.push([gt.CUSTOM,w,C,e,l||a,Jn,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,xx(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=xn(l||tr)}else a.fillStyle=void 0;if(n){let l=n.getColor();a.strokeStyle=xn(l||So);let o=n.getLineCap();a.lineCap=o!==void 0?o:Gs;let _=n.getLineDash();a.lineDash=_?_.slice():vn;let v=n.getLineDashOffset();a.lineDashOffset=v||bn;let w=n.getLineJoin();a.lineJoin=w!==void 0?w:js;let T=n.getWidth();a.lineWidth=T!==void 0?T:Io;let C=n.getMiterLimit();a.miterLimit=C!==void 0?C:wo,a.lineWidth>this.maxLineWidth&&(this.maxLineWidth=a.lineWidth,this.bufferedMaxExtent_=null)}else a.strokeStyle=void 0,a.lineCap=void 0,a.lineDash=null,a.lineDashOffset=void 0,a.lineJoin=void 0,a.lineWidth=void 0,a.miterLimit=void 0}createFill(e){let 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&&!un(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_=vx(this.maxExtent),this.maxLineWidth>0)){let e=this.resolution*(this.maxLineWidth+1)/2;dn(this.bufferedMaxExtent_,e,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}},$s=ly;var cy=class extends $s{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&&!go(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||go(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}},ub=cy;var hy=class extends $s{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,vn,bn],To);let v=e.getFlatCoordinates(),w=e.getStride();this.drawFlatCoordinates_(v,0,v.length,w),this.hitDetectionInstructions.push(Ws),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,vn,bn],To);let v=e.getEnds(),w=e.getFlatCoordinates(),T=e.getStride(),C=0;for(let k=0,F=v.length;k<F;++k)C=this.drawFlatCoordinates_(w,C,v[k],T);this.hitDetectionInstructions.push(Ws),this.endGeometry(n)}finish(){let e=this.state;return e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&this.instructions.push(Ws),this.reverseHitDetectionInstructions(),this.state=null,super.finish()}applyStroke(e){e.lastStroke!=null&&e.lastStroke!=this.coordinates.length&&(this.instructions.push(Ws),e.lastStroke=this.coordinates.length),e.lastStroke=0,super.applyStroke(e),this.instructions.push(To)}},db=hy;var uy=class extends $s{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(To),this.hitDetectionInstructions.push(To);for(let T=0;T<w;++T){let C=a[T],k=this.coordinates.length,F=this.appendFlatLineCoordinates(e,n,C,l,!0,!v),q=[gt.MOVE_TO_LINE_TO,k,F];this.instructions.push(q),this.hitDetectionInstructions.push(q),v&&(this.instructions.push(oy),this.hitDetectionInstructions.push(oy)),n=C}return _&&(this.instructions.push(mu),this.hitDetectionInstructions.push(mu)),v&&(this.instructions.push(Ws),this.hitDetectionInstructions.push(Ws)),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,vn,bn]);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(To,C),this.hitDetectionInstructions.push(To,C),l.fillStyle!==void 0&&(this.instructions.push(mu),this.hitDetectionInstructions.push(mu)),l.strokeStyle!==void 0&&(this.instructions.push(Ws),this.hitDetectionInstructions.push(Ws)),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,vn,bn]);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,vn,bn]);let v=e.getEndss(),w=e.getOrientedFlatCoordinates(),T=e.getStride(),C=0;for(let k=0,F=v.length;k<F;++k)C=this.drawFlatCoordinatess_(w,C,v[k],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]=na(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)}},dy=uy;function pb(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),k=e[_+l],F=e[_+l+1],q=Math.sqrt((k-T)*(k-T)+(F-C)*(F-C));if(v+=q,v>=h){let K=(h-v+q)/q,he=Mr(T,k,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,k,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 fb(h,e,n,a,l){let o=n,_=n,v=0,w=0,T=n,C,k,F,q,K,he,W,H,se,ge;for(k=n;k<a;k+=l){let _e=e[k],fe=e[k+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,_=k),w=0,T=k-l)),F=q,W=se,H=ge),K=_e,he=fe}return w+=q,w>v?[T,k]:[o,_]}var gu={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},py=class extends $s{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,k=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=pb(q*this.resolution,C,he,F[W],k):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 Ce=fb(_.maxAngle,fe,0,fe.length,2);xe=Ce[0],Me=Ce[1]}for(let Ce=xe;Ce<Me;Ce+=k)v.push(fe[Ce],fe[Ce+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(),k=2;break;case"Polygon":C=e.getFlatInteriorPoint(),_.overflow||F.push(C[2]/this.resolution),k=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;k=2;break;default:}let q=this.appendFlatPointCoordinates(C,k);if(q===w)return;if(F&&(q-w)/2!==C.length/k){let se=w/2;F=F.filter((ge,_e)=>{let fe=v[(se+_e)*2]===C[_e*k]&&v[(se+_e)*2+1]===C[_e*k+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=gu[l.textBaseline],C=this.textOffsetY_*w,k=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,k,_,1,this.declutterMode_]),this.hitDetectionInstructions.push([gt.DRAW_CHARS,e,n,T,l.overflow,v&&tr,l.maxAngle,w,C,o,F*w,k,_,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=xn(_.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()||Gs,o.lineDash=K?K.slice():vn,o.lineDashOffset=he===void 0?bn:he,o.lineJoin=v.getLineJoin()||js,o.lineWidth=W===void 0?Io:W,o.miterLimit=H===void 0?wo:H,o.strokeStyle=xn(v.getColor()||So)}a=this.textState_;let w=e.getFont()||mp;jv(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(),k=e.getOffsetY(),F=e.getRotateWithView(),q=e.getRotation();this.text_=e.getText()||"",this.textOffsetX_=C===void 0?0:C,this.textOffsetY_=k===void 0?0:k,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}},mb=py;var MC={Circle:dy,Default:$s,Image:ub,LineString:db,Polygon:dy,Text:mb},fy=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 _=MC[n];o=new _(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),l[n]=o}return o}},gb=fy;var my=class extends Gd{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()}},cc=my;var gy=class extends xi{constructor(e,n,a,l){super(e),this.inversePixelTransform=n,this.frameState=a,this.context=l}},yb=gy;var yy=class{constructor(){this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(CanvasRenderingContext2D.prototype,{get:(e,n)=>{if(typeof iu()[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}},Sp=yy;var xy=[],hc=null;function AC(){hc=Ni(1,1,void 0,{willReadFrequently:!0})}var _y=class extends cc{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){hc||AC(),hc.clearRect(0,0,1,1);let l;try{hc.drawImage(e,n,a,1,1,0,0,1,1),l=hc.getImageData(0,0,1,1).data}catch{return hc=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&&un(bo(e.style.backgroundColor),bo(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=vm(a),o=bm(a),_=xm(a),v=_m(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 yb(e,this.inversePixelTransform,a,n);l.dispatchEvent(o)}}preRender(e,n){this.frameState=n,!n.declutter&&this.dispatchRenderEvent_(Ns.PRERENDER,e,n)}postRender(e,n){n.declutter||this.dispatchRenderEvent_(Ns.POSTRENDER,e,n)}renderDeferredInternal(e){}getRenderContext(e){return e.declutter&&!this.deferredContext_&&(this.deferredContext_=new Sp),e.declutter?this.deferredContext_.getContext():this.context}renderDeferred(e){e.declutter&&(this.dispatchRenderEvent_(Ns.PRERENDER,this.context,e),e.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(e),this.dispatchRenderEvent_(Ns.POSTRENDER,this.context,e))}getRenderTransform(e,n,a,l,o,_,v){let w=o/2,T=_/2,C=l/n,k=-C,F=-e[0]+v,q=-e[1];return Ir(this.tempTransform,w,T,C,k,-a,F,q)}disposeInternal(){delete this.frameState,super.disposeInternal()}},Cp=_y;function _b(h,e,n,a,l,o,_,v,w,T,C,k){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 Ce=Mr(K,F,ge),at=Mr(he,q,ge),Ge;if(k){let nt=[_e,fe,Ce,at];Xd(nt,0,4,2,k,nt,nt),Ge=nt[0]>nt[2]}else Ge=_e>Ce;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=(Ce+_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 Lt=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,Lt]),o+=mt}return ft}var uc=fn(),fa=[],Mo=[],Ao=[],ma=[];function xb(h){return h[3].declutterBox}var vb=new RegExp("[\u0591-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFC\u0800-\u0FFF\uE800-\uEFFF]");function vy(h,e){return e==="start"?e=vb.test(h)?"right":"left":e==="end"&&(e=vb.test(h)?"left":"right"),gu[e]}function PC(h,e,n){return n>0&&h.push(`
|
|
583
583
|
`,""),h.push(e,""),h}var by=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 Sp: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],k=Array.isArray(e),F=w.justify?gu[w.justify]:vy(Array.isArray(e)?e[0]:e,w.textAlign||ua),q=l&&_.lineWidth?_.lineWidth:0,K=k?e:e.split(`
|
|
584
584
|
`).reduce(PC,[]),{width:he,height:W,widths:H,heights:se,lineWidths:ge}=qv(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 Ce=.5-F,at=F*_e+Ce*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+Ce*q,++nt;continue}let Lt=K[ct+1]||w.font;Lt!==dt&&(l&&Ge.push("font",Lt),a&&Ze.push("font",Lt),dt=Lt),ft=Math.max(ft,se[Ke]);let Gt=[mt,at+Ce*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,k,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||k!==0)&&(fa[0]=Me,ma[0]=Me,fa[1]=Re,Mo[1]=Re,Mo[0]=Me+fe,Ao[0]=Mo[0],Ao[1]=Re+xe,ma[1]=Ao[1]);let Ce;return k!==0?(Ce=Ir(hr(),a,l,1,1,k,-a,-l),Qi(Ce,fa),Qi(Ce,Mo),Qi(Ce,Ao),Qi(Ce,ma),_o(Math.min(fa[0],Mo[0],Ao[0],ma[0]),Math.min(fa[1],Mo[1],Ao[1],ma[1]),Math.max(fa[0],Mo[0],Ao[0],ma[0]),Math.max(fa[1],Mo[1],Ao[1],ma[1]),uc)):_o(Math.min(Me,Me+fe),Math.min(Re,Re+xe),Math.max(Me,Me+fe),Math.max(Re,Re+xe),uc),q&&(H=Math.round(H),se=Math.round(se)),{drawImageX:H,drawImageY:se,drawImageW:ge,drawImageH:_e,originX:T,originY:C,declutterBox:{minX:uc[0],minY:uc[1],maxX:uc[2],maxY:uc[3],value:W},canvasTransform:Ce,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,Mo,Ao,ma,_,v),Wv(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=vy(Array.isArray(e)?e[0]:e,o.textAlign||ua),C=gu[o.textBaseline||al],k=v&&v.lineWidth?v.lineWidth:0,F=_.width/w-2*o.scale[0],q=T*F+2*(.5-T)*k,K=C*_.height/w+2*(.5-C)*k;return{label:_,anchorX:q,anchorY:K}}execute_(e,n,a,l,o,_,v,w){let T=this.zIndexContext_,C;this.pixelCoordinates_&&un(a,this.renderedTransform_)?C=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),C=mn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),fx(this.renderedTransform_,a));let k=0,F=l.length,q=0,K,he,W,H,se,ge,_e,fe,xe,Me,Re,Ce,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,Lt,Gt,hi;for(;k<F;){let je=l[k];switch(je[0]){case gt.BEGIN_GEOMETRY:mt=je[1],hi=je[3],mt.getGeometry()?v!==void 0&&!Zi(v,hi.getExtent())?k=je[2]+1:++k:k=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),++k;break;case gt.CIRCLE:q=je[1];let Pi=C[q],Lr=C[q+1],Dr=C[q+2],In=C[q+3],Vi=Dr-Pi,en=In-Lr,ni=Math.sqrt(Vi*Vi+en*en);e.moveTo(Pi+ni,Lr),e.arc(Pi,Lr,ni,0,2*Math.PI,!0),++k;break;case gt.CLOSE_PATH:e.closePath(),++k;break;case gt.CUSTOM:q=je[1],K=je[2];let En=je[3],Te=je[4],tn=je[5];ct.geometry=En,ct.feature=mt,k in Ke||(Ke[k]=[]);let gr=Ke[k];tn?tn(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),++k;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],Vn=je[9],Gn=je[10],rn=je[11],nn=je[12],Tn=je[13];H=je[14]||"declutter";let jn=je[15];if(!xe&&je.length>=20){Me=je[19],Re=je[20],Ce=je[21],at=je[22];let le=this.drawLabelWithPointPlacement_(Me,Re,Ce,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,Tn=xe.width,je[13]=Tn}let Ne;je.length>25&&(Ne=je[25]);let Gi,Ri,Mn;je.length>17?(Gi=je[16],Ri=je[17],Mn=je[18]):(Gi=Co,Ri=!1,Mn=!1),Gn&&dt?rn+=nt:!Gn&&!dt&&(rn-=nt);let is=0;for(;q<K;q+=2){if(Ne&&Ne[is++]<Tn/this.pixelRatio)continue;let le=this.calculateImageOrLabelDimensions_(xe.width,xe.height,C[q],C[q+1],Tn,Et,he,W,yr,Vn,rn,nn,o,Gi,Ri||Mn,mt),ue=[e,n,xe,le,jt,Ri?ft:null,Mn?zt:null];if(w){let ne,ye,Ae;if(jn){let qe=K-q;if(!jn[qe]){jn[qe]={args:ue,declutterMode:H};continue}let Je=jn[qe];ne=Je.args,ye=Je.declutterMode,delete jn[qe],Ae=xb(ne)}let Ie,Se;if(ne&&(ye!=="declutter"||!w.collides(Ae))&&(Ie=!0),(H!=="declutter"||!w.collides(le.declutterBox))&&(Se=!0),ye==="declutter"&&H==="declutter"){let qe=Ie&&Se;Ie=qe,Se=qe}Ie&&(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)}++k;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],sn=je[8];Ce=je[9];let on=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=tp(C,Be,St,2),ce=Math.abs(V[0])*jg(B,Me,U);if(Yi||ce<=te){let le=this.textStates[Re].textAlign,ue=(te-ce)*vy(Me,le),ne=_b(C,Be,St,2,Me,ue,Ki,Math.abs(V[0]),jg,B,U,dt?0:this.viewRotation_);e:if(ne){let ye=[],Ae,Ie,Se,qe,Je;if(Ce)for(Ae=0,Ie=ne.length;Ae<Ie;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,"",Ce),he=Je[2]+(V[0]<0?-on:on),W=yt*qe.height+(.5-yt)*2*on*V[1]/V[0]-sn;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,Ie=ne.length;Ae<Ie;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,at,""),he=Je[2],W=yt*qe.height-sn;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(xb));for(let ht=0,_t=ye.length;ht<_t;++ht)this.replayImageOrLabel_.apply(this,ye[ht])}}++k;break;case gt.END_GEOMETRY:if(_!==void 0){mt=je[1];let le=_(mt,hi);if(le)return le}++k;break;case gt.FILL:At?Ge++:this.fill_(e),++k;break;case gt.MOVE_TO_LINE_TO:for(q=je[1],K=je[2],Lt=C[q],Gt=C[q+1],_e=Lt+.5|0,fe=Gt+.5|0,(_e!==se||fe!==ge)&&(e.moveTo(Lt,Gt),se=_e,ge=fe),q+=2;q<K;q+=2)Lt=C[q],Gt=C[q+1],_e=Lt+.5|0,fe=Gt+.5|0,(q==K-2||_e!==se||fe!==ge)&&(e.lineTo(Lt,Gt),se=_e,ge=fe);++k;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],++k;break;case gt.SET_STROKE_STYLE:zt=je,Ze&&(e.stroke(),Ze=0),this.setStrokeStyle_(e,je),++k;break;case gt.STROKE:At?Ze++:e.stroke(),++k;break;default:++k;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)}},bb=by;var dc=["Polygon","Circle","LineString","Image","Text","Default"],Cy=["Image","Text"],wb=dc.filter(h=>!Cy.includes(h)),Sy=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 bb(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=Ir(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 k;this.renderBuffer_!==void 0&&(k=fn(),gm(k,e),dn(k,n*(this.renderBuffer_+l),k));let F=RC(l),q;function K(fe,xe){let Me=C.getImageData(0,0,v,v).data;for(let Re=0,Ce=F.length;Re<Ce;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(ps);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=dc.length-1;H>=0;--H)if(q=dc[H],ge=se[q],ge!==void 0&&(_e=ge.executeHitDetection(C,w,a,K,k),_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 mn(v,0,8,2,e,v),v}isEmpty(){return On(this.executorsByZIndex_)}execute(e,n,a,l,o,_,v){let w=Object.keys(this.executorsByZIndex_).map(Number);w.sort(ps),_=_||dc;let T,C,k,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],k=0,F=_.length;k<F;++k){let W=_[k];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(ps);for(let a=0,l=n.length;a<l;++a)e[n[a]].forEach(o=>{o.draw(this.renderedContext_),o.clear()})}},wy={};function RC(h){if(wy[h]!==void 0)return wy[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 wy[h]=l,l}var Sb=Sy;var Iy=class extends wp{constructor(e,n,a,l,o,_,v){super(),this.context_=e,this.pixelRatio_=n,this.extent_=a,this.transform_=l,this.transformRotation_=l?Ox(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=mn(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,k=o.length;C<k;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_;Ir(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=mn(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=mn(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=Jx(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),un(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:xn(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||vn;this.strokeState_={lineCap:l!==void 0?l:Gs,lineDash:this.pixelRatio_===1?C:C.map(k=>k*this.pixelRatio_),lineDashOffset:(_||bn)*this.pixelRatio_,lineJoin:v!==void 0?v:js,lineWidth:(w!==void 0?w:Io)*this.pixelRatio_,miterLimit:T!==void 0?T:wo,strokeStyle:xn(a||So)}}}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:xn(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:Gs,lineDash:he||vn,lineDashOffset:W||bn,lineJoin:H!==void 0?H:js,lineWidth:se!==void 0?se:Io,miterLimit:ge!==void 0?ge:wo,strokeStyle:xn(q||So)}}let l=e.getFont(),o=e.getOffsetX(),_=e.getOffsetY(),v=e.getRotateWithView(),w=e.getRotation(),T=e.getScaleArray(),C=e.getText(),k=e.getTextAlign(),F=e.getTextBaseline();this.textState_={font:l!==void 0?l:mp,textAlign:k!==void 0?k: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]]}}},Cb=Iy;var Is=.5;function Ib(h,e,n,a,l,o,_,v,w){let T=w?Os(l,w):l,C=h[0]*Is,k=h[1]*Is,F=Ni(C,k);F.imageSmoothingEnabled=!1;let q=F.canvas,K=new Cb(F,Is,l,null,_,v,w?Ql(Bn(),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 Ce=0,at=xe.length;Ce<at;++Ce){let Ge=xe[Ce],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 Lt=Ni(mt[0],mt[1],void 0,{alpha:!1}),Gt=Lt.canvas;Lt.fillStyle=Re,Lt.fillRect(0,0,Gt.width,Gt.height),ft.setImage(new au({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 Lt=0,Gt=mt.length;Lt<Gt;++Lt){let hi=mt[Lt];ct[hi.getType().replace("Multi","")].push(hi,ft)}}else ct[At.replace("Multi","")].push(Ze,ft)}}let se=Object.keys(H).map(Number).sort(ps);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,Ce=Me.length;Re<Ce;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 Eb(h,e,n){let a=[];if(n){let l=Math.floor(Math.round(h[0])*Is),o=Math.floor(Math.round(h[1])*Is),_=(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),k=Math.floor((256*256*256-1)/e.length);C&&C%k===0&&a.push(e[C/k-1])}return a}var kC=.5,Tb={Point:NC,LineString:zC,Polygon:GC,MultiPoint:VC,MultiLineString:OC,MultiPolygon:BC,GeometryCollection:FC,Circle:LC};function Mb(h,e){return parseInt(Vt(h),10)-parseInt(Vt(e),10)}function Ey(h,e){let n=Ty(h,e);return n*n}function Ty(h,e){return kC*h/e}function LC(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 My(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 k=w.length>0;return k&&Promise.all(w).then(()=>l(null)),DC(h,e,n,a,o,_,v),k}function DC(h,e,n,a,l,o,_){let v=n.getGeometryFunction()(e);if(!v)return;let w=v.simplifyTransformed(a,l);if(n.getRenderer())Ab(h,w,n,e,_);else{let C=Tb[w.getType()];C(h,w,n,e,_,o)}}function Ab(h,e,n,a,l){if(e.getType()=="GeometryCollection"){let _=e.getGeometries();for(let v=0,w=_.length;v<w;++v)Ab(h,_[v],n,a,l);return}h.getBuilder(n.getZIndex(),"Default").drawCustom(e,a,n.getRenderer(),n.getHitDetectionRenderer(),l)}function FC(h,e,n,a,l,o){let _=e.getGeometriesArray(),v,w;for(v=0,w=_.length;v<w;++v){let T=Tb[_[v].getType()];T(h,_[v],n,a,l,o)}}function zC(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 OC(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 BC(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 NC(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 VC(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 k=h.getBuilder(n.getZIndex(),"Image");k.setImageStyle(_,C),k.drawMultiPoint(e,a,l)}if(T){let k=h.getBuilder(n.getZIndex(),"Text");k.setTextStyle(w,C),k.drawText(e,a,l)}}function GC(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 Ay=class extends Cp{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_=fn(),this.wrappedRenderedExtent_=fn(),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(),k=this.getLayer().getSource(),F=this.getLayer().getDeclutter(),q=n.pixelRatio,K=n.viewHints,he=!(K[yn.ANIMATING]||K[yn.INTERACTING]),W=this.context,H=Math.round(vi(l)/v*q),se=Math.round(dr(l)/v*q),ge=k.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?dc:a?Cy:wb,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,xy))}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,Ev(this.context),xy.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);Ir(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/a,1/a,0,-v/2,-w/2),gx(this.inversePixelTransform,this.pixelTransform);let T=hm(this.pixelTransform);this.useContainer(n,T,this.getBackground(e));let C=this.context,k=C.canvas,F=this.replayGroup_,q=F&&!F.isEmpty();if(!q&&!(this.getLayer().hasListener(Ns.PRERENDER)||this.getLayer().hasListener(Ns.POSTRENDER)))return null;k.width!=v||k.height!=w?(k.width=v,k.height=w,k.style.transform!==T&&(k.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=Bs(l.extent,he);q=Zi(H,e.extent),W=q&&!yo(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=[],k=a[0]*Is,F=a[1]*Is;C.push(this.getRenderTransform(l,o,_,Is,k,F,0).slice());let q=T.getSource(),K=v.getExtent();if(q.getWrapX()&&v.canWrapX()&&!yo(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,_,Is,k,F,ge).slice()),W+=H;for(se=0,W=w[2];W>K[2];)++se,ge=H*se,C.push(this.getRenderTransform(l,o,_,Is,k,F,ge).slice()),W-=H}let he=Bn();this.hitDetectionImageData_=Ib(a,C,this.renderedFeatures_,T.getStyleFunction(),w,o,_,Ey(o,this.renderedPixelRatio_),he?v:null)}n(Eb(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})}},k,F=[this.replayGroup_],q=this.getLayer().getDeclutter();return F.some(K=>k=K.forEachFeatureAtCoordinate(e,_,v,a,C,q&&n.declutter[q]?n.declutter[q].all().map(he=>he.value):null)),k}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let n=this.getLayer(),a=n.getSource();if(!a)return!1;let l=e.viewHints[yn.ANIMATING],o=e.viewHints[yn.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,k=T.resolution,F=e.pixelRatio,q=n.getRevision(),K=n.getRenderBuffer(),he=n.getRenderOrder();he===void 0&&(he=Mb);let W=T.center.slice(),H=dn(w,K*k),se=H.slice(),ge=[H.slice()],_e=C.getExtent();if(a.getWrapX()&&C.canWrapX()&&!yo(_e,e.extent)){let Ke=vi(_e),nt=Math.max(vi(H)/2,Ke);H[0]=_e[0]-nt,H[2]=_e[2]+nt,Gx(W,C);let dt=wm(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_==k&&this.renderedRevision_==q&&this.renderedRenderOrder_==he&&yo(this.wrappedRenderedExtent_,H))return un(this.renderedExtent_,se)||(this.hitDetectionImageData_=null,this.renderedExtent_=se),this.renderedCenter_=W,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let fe=new gb(Ty(k,F),H,k,F),xe=Bn(),Me;if(xe){for(let Ke=0,nt=ge.length;Ke<nt;++Ke){let dt=ge[Ke],ct=Os(dt,C);a.loadFeatures(ct,Zx(k,C),xe)}Me=Ql(xe,C)}else for(let Ke=0,nt=ge.length;Ke<nt;++Ke)a.loadFeatures(ge[Ke],k,C);let Re=Ey(k,F),Ce=!0,at=(Ke,nt)=>{let dt,ct=Ke.getStyleFunction()||n.getStyleFunction();if(ct&&(dt=ct(Ke,k)),dt){let At=this.renderFeature(Ke,Re,dt,fe,Me,this.getLayer().getDeclutter(),nt);Ce=Ce&&!At}},Ge=Os(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=Ce;let ft=fe.finish(),zt=new Sb(H,k,F,a.getOverlaps(),ft,n.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=k,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=My(l,e,a[T],n,this.boundHandleStyleImageChange_,o,_,v)||w;else w=My(l,e,a,n,this.boundHandleStyleImageChange_,o,_,v);return w}},Pb=Ay;var Py=class extends hb{constructor(e){super(e)}createRenderer(){return new Pb(this)}},ll=Py;var Rb=mo(Xg(),1);var Ry=class{constructor(e){this.rbush_=new Rb.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];qd(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 On(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let n=this.rbush_.toJSON();return _o(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]}},yu=Ry;var kb=hr(),_u=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"?ea(this.flatCoordinates_):Xl(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=Kn(this.getExtent());this.flatInteriorPoints_=Hh(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=uv(this.flatCoordinates_,this.ends_),n=np(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=ip(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);Ir(kb,a[0],a[3],l,-l,0,0,0),mn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,kb,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=Nd((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=Jd(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,l);break;case"Polygon":l=[],a.length=Uh(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}};_u.prototype.getFlatCoordinates=_u.prototype.getOrientedFlatCoordinates;var ts=_u;var ky=class extends ur{constructor(e){super(),this.projection=Bi(e.projection),this.attributions_=Lb(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_=Lb(e),this.changed()}setState(e){this.state_=e,this.changed()}};function Lb(h){return h?Array.isArray(h)?function(e){return h}:typeof h=="function"?h:function(e){return[h]}:null}var Po=ky;var jr={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function Db(h,e){return[[-1/0,-1/0,1/0,1/0]]}var jC=!1;function UC(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=jC,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 Ly(h,e){return function(n,a,l,o,_){let v=this;UC(h,e,n,a,l,function(w,T){v.addFeatures(w),o!==void 0&&o(w)},_||fs)}}var Zs=class extends xi{constructor(e,n,a){super(e),this.feature=n,this.features=a}},Dy=class extends Po{constructor(e){e=e||{},super({attributions:e.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:e.wrapX!==void 0?e.wrapX:!0}),this.on,this.once,this.un,this.loader_=fs,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_=Ly(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:Db;let n=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=n?new yu:null,this.loadedExtentsRtree_=new yu,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 ru(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 Zs(jr.ADDFEATURE,e))}setupChangeEvents_(e,n){n instanceof ts||(this.featureChangeKeys_[e]=[Tr(n,li.CHANGE,this.handleFeatureChange_,this),Tr(n,zd.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 ts){let o=this.idIndex_[l];o instanceof ts?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(jr.ADDFEATURE))for(let o=0,_=a.length;o<_;o++)this.dispatchEvent(new Zs(jr.ADDFEATURE,a[o]))}bindFeaturesCollection_(e){let n=!1;this.addEventListener(jr.ADDFEATURE,function(a){n||(n=!0,e.push(a.feature),n=!1)}),this.addEventListener(jr.REMOVEFEATURE,function(a){n||(n=!0,e.remove(a.feature),n=!1)}),e.addEventListener(bs.ADD,a=>{n||(n=!0,this.addFeature(a.element),n=!1)}),e.addEventListener(bs.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(Vr);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 Zs(jr.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 ts||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 ts||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(),On(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=Tx(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||Bd,this.featuresRtree_.forEachInExtent(w,function(T){if(n(T)){let C=T.getGeometry(),k=v;if(v=C instanceof ts?0:C.closestPointXY(a,l,_,v),v<k){o=T;let F=Math.sqrt(v);w[0]=a-F,w[1]=l-F,w[2]=a+F,w[3]=l+F}}}),o}getExtent(e){return this.featuresRtree_.getExtent(e)}getFeatureById(e){let 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 Zs(jr.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()&&On(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 yo(C.extent,w)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Zs(jr.FEATURESLOADSTART)),this.loader_.call(this,w,n,a,C=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(jr.FEATURESLOADEND,void 0,C))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(jr.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(qd(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(Vr),delete this.featureChangeKeys_[n];let l=e.getId();return l!==void 0&&delete this.idIndex_[l.toString()],delete this.uidIndex_[n],this.hasListener(jr.REMOVEFEATURE)&&this.dispatchEvent(new Zs(jr.REMOVEFEATURE,e)),e}removeFromIdIndex_(e){let n=!1;for(let a in this.idIndex_){let l=this.idIndex_[a];if(e instanceof ts&&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(Ly(e,this.format_))}},cl=Dy;var Nn={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 Fy={ACTIVE:"active"};var zy=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(Fy.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(Fy.ACTIVE,e)}setMap(e){this.map_=e}};var Fb=zy;var Oy=class extends Fb{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==Nn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Nn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Nn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,n=this.stopDown(a)}else e.type==Nn.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 zb=Oy;var Ob=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var Bb=Bd,Nb=function(h){return h.type==Nn.CLICK};var Vb=function(h){return h.type==Nn.SINGLECLICK};var Gb=function(h){let e=h.originalEvent;return ri(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var jb=0,xu=1,Ub=[0,0,0,0],pc=[],By={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},vu=class extends xi{constructor(e,n,a){super(e),this.features=n,this.mapBrowserEvent=a}},Ny=class extends zb{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:Gb,this.defaultDeleteCondition_=function(a){return Ob(a)&&Vb(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:Bb,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new yu,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:WC(),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 ru(this.source_.getFeatures()),this.source_.addEventListener(jr.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(jr.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(bs.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(bs.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=e.snapToPointer===void 0?!this.hitDetection_:e.snapToPointer}addFeature_(e){let 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 ru;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 vu(By.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(zs(_),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(zs(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(zs(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,k=T.length-1;C<k;++C){let F=T.slice(C,C+2),q={feature:e,geometry:n,depth:[v,l],index:C,segment:F};this.rBush_.insert(zs(F),q)}}}}writeCircleGeometry_(e,n){let a=n.getCenter(),l={feature:e,geometry:n,index:jb,segment:[a,a]},o={feature:e,geometry:n,index:xu,segment:[a,a]},_=[l,o];l.featureSegments=_,o.featureSegments=_,this.rBush_.insert(ea(a),l);let v=n,w=Bn();if(w&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(w,T),v=Xm(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 es(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==Nn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Nn.SINGLECLICK||!this.ignoreNextSingleClick_?n=this.removePoint():n=!0),e.type==Nn.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 k=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[k[0]][w.index+K]=n,q[K]=n;break;case"Polygon":F=C.getCoordinates(),F[k[0]][w.index+K]=n,q[K]=n;break;case"MultiPolygon":F=C.getCoordinates(),F[k[1]][k[0]][w.index+K]=n,q[K]=n;break;case"Circle":if(q[0]=n,q[1]=n,w.index===jb)this.changingFeature_=!0,C.setCenter(n),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),W=Mm(Hi(C.getCenter(),he),Hi(n,he)),H=Bn();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=zs([_]),w=this.rBush_.getInExtent(v),T={};w.sort(qC);for(let C=0,k=w.length;C<k;++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===xu){let W=Wb(n,F,l);Qr(W,_)&&!T[K][0]&&(this.dragSegments_.push([F,0]),T[K][0]=F);continue}if(Qr(q[0],_)&&!T[K][0]){this.dragSegments_.push([F,0]),T[K][0]=F;continue}if(Qr(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(ea(o),_);let w=l,T=Bn();if(T){let C=e.map.getView().getProjection();w=w.clone().transform(T,C),w=Xm(w).transform(C,T)}this.rBush_.update(w.getExtent(),v)}else this.rBush_.update(zs(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new vu(By.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 qb(l,T,o)-qb(l,C,o)},v,w;if(this.hitDetection_){let T=typeof this.hitDetection_=="object"?C=>C===this.hitDetection_:void 0;n.forEachFeatureAtPixel(e,(C,k,F)=>{F&&F.getType()==="Point"&&(F=new fr(tl(F.getCoordinates(),o)));let q=F||C.getGeometry();if(C instanceof es&&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=Bs(ea(l,Ub),o),C=n.getView().getResolution()*this.pixelTolerance_,k=Os(dn(T,C,Ub),o);v=this.rBush_.getInExtent(k)}if(v&&v.length>0){let T=v.sort(_)[0],C=T.segment,k=Wb(l,T,o),F=n.getPixelFromCoordinate(k),q=Mm(e,F);if(w||q<=this.pixelTolerance_){let K={};if(K[Vt(C)]=!0,this.snapToPointer_||(this.delta_[0]=k[0]-l[0],this.delta_[1]=k[1]-l[1]),T.geometry.getType()==="Circle"&&T.index===xu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(k,[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_&&(k=H>se?C[1]:C[0]),this.createOrUpdateVertexFeature_(k,[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(Qr(C[0],xe[0])&&Qr(C[1],xe[1])||Qr(C[0],xe[1])&&Qr(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(zs(C.segment),C),this.dragSegments_.push([C,1]);let k={segment:[n,a[1]],feature:l,geometry:o,depth:_,index:v+1};T.insert(zs(k.segment),k),this.dragSegments_.push([k,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Nn.POINTERDRAG){let e=this.lastPointerEvent_;this.willModifyFeatures_(e,this.dragSegments_);let n=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new vu(By.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null,n}return!1}removeVertex_(){let e=this.dragSegments_,n={},a=!1,l,o,_,v,w,T,C,k,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,k=T-1,C!==void 0?q=C:q=F,k<0&&(k=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]),k=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:k,segment:he};this.rBush_.insert(zs(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||un(o.depth,a))&&o.index>n&&(o.index+=l)})}};function qC(h,e){return h.index-e.index}function qb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"){let o=a;if(e.index===xu){let _=Bn();_&&(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 pc[0]=Hi(e.segment[0],n),pc[1]=Hi(e.segment[1],n),Vx(l,pc)}function Wb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"&&e.index===xu){let o=a,_=Bn();return _&&(o=o.clone().transform(_,n)),tl(o.getClosestPoint(Hi(h,n)),n)}let l=Hi(h,n);return pc[0]=Hi(e.segment[0],n),pc[1]=Hi(e.segment[1],n),tl(Tm(l,pc),n)}function WC(){let h=Xv();return function(e,n){return h.Point}}var Vy=Ny;var Gy=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=es,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()}},$b=Gy;function Ip(h,e,n){let a=n?Bi(n.featureProjection):null,l=n?Bi(n.dataProjection):null,o=h;if(a&&l&&!$x(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 $C={Point:fr,LineString:ys,Polygon:tc,MultiPoint:Zh,MultiLineString:qm,MultiPolygon:Km};function ZC(h,e,n){return Array.isArray(e[0])?(rp(h,0,e,n)||(h=h.slice(),Yh(h,0,e,n)),h):(Xh(h,0,e,n)||(h=h.slice(),ec(h,0,e,n)),h)}function jy(h,e){let n=h.geometry;if(!n)return[];if(Array.isArray(n))return n.map(o=>jy({...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 Ip(new ts(a,a==="Polygon"?ZC(n.flatCoordinates,n.ends,l):n.flatCoordinates,n.ends?.flat(),l,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function Ep(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(l=>Ep(l,e));return new zm(a)}let n=$C[h.type];return Ip(new n(h.flatCoordinates,h.layout,h.ends),!1,e)}var Uy=class extends $b{constructor(){super()}getType(){return"json"}readFeature(e,n){return this.readFeatureFromObject(Tp(e),this.getReadOptions(e,n))}readFeatures(e,n){return this.readFeaturesFromObject(Tp(e),this.getReadOptions(e,n))}readFeatureFromObject(e,n){return wt()}readFeaturesFromObject(e,n){return wt()}readGeometry(e,n){return this.readGeometryFromObject(Tp(e),this.getReadOptions(e,n))}readGeometryFromObject(e,n){return wt()}readProjection(e){return this.readProjectionFromObject(Tp(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 Tp(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var Zb=Uy;var qy=class extends Zb{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=$y(a.geometry,n);if(this.featureClass===ts)return jy({geometry:l,id:a.id,properties:a.properties},n);let o=new es;return this.geometryName_?o.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&o.setGeometryName(a.geometry_name),o.setGeometry(Ep(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 HC(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=Wy(_,n),delete o[e.getGeometryName()]),On(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 Wy(e,this.adaptOptions(n))}};function $y(h,e){if(!h)return null;let n;switch(h.type){case"Point":{n=YC(h);break}case"LineString":{n=KC(h);break}case"Polygon":{n=tI(h);break}case"MultiPoint":{n=QC(h);break}case"MultiLineString":{n=JC(h);break}case"MultiPolygon":{n=eI(h);break}case"GeometryCollection":{n=XC(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return n}function HC(h,e){let n=$y(h,e);return Ep(n,e)}function XC(h,e){return h.geometries.map(function(a){return $y(a,e)})}function YC(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:ia(e.length)}}function KC(h){let e=h.coordinates,n=e.flat();return{type:"LineString",flatCoordinates:n,ends:[n.length],layout:ia(e[0]?.length||2)}}function JC(h){let e=h.coordinates,n=e[0]?.[0]?.length||2,a=[],l=ra(a,0,e,n);return{type:"MultiLineString",flatCoordinates:a,ends:l,layout:ia(n)}}function QC(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:ia(e[0]?.length||2)}}function eI(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.[0].length||2,l=Kd(n,0,e,a);return{type:"MultiPolygon",flatCoordinates:n,ends:l,layout:ia(a)}}function tI(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.length,l=ra(n,0,e,a);return{type:"Polygon",flatCoordinates:n,ends:l,layout:ia(a)}}function Wy(h,e){h=Ip(h,!0,e);let n=h.getType(),a;switch(n){case"Point":{a=aI(h,e);break}case"LineString":{a=rI(h,e);break}case"Polygon":{a=lI(h,e);break}case"MultiPoint":{a=sI(h,e);break}case"MultiLineString":{a=nI(h,e);break}case"MultiPolygon":{a=oI(h,e);break}case"GeometryCollection":{a=iI(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+n)}return a}function iI(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return Wy(a,e)})}}function rI(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function nI(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function sI(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function oI(h,e){let n;return e&&(n=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(n)}}function aI(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function lI(h,e){let n;return e&&(n=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(n)}}var mr=qy;var cI=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,Hb=/^([\d.]+),([\d.]+)$/,Xb=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,Mp="stop-fetch",Yb=h=>{let e=[];return h.forEach(n=>{let a=n.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},Zy=class h extends rc{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 Mh({...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[Mp]?.abort(),this.abortControllers[Mp]=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[Mp]);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[Mp])),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,k)=>{let F=k.get("trg");return C.find(q=>q[0]===F[0]&&q[1]===F[1])?C:[...C,F]},[]);this.segments=T.map(C=>{let k=this.segments.filter(q=>{let K=q.get("trg");return K[0]===C[0]&&K[1]===C[1]}),F=Yb(k);return new es({geometry:new ys(F)})})}let v=Yb(this.segments),w=new es({geometry:new ys(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 es;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||Xb.test(n)){let C,k;return this.useRawViaPoints?[,C,,k]=Xb.exec(n)||[]:[C,k]=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",k),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&&Hb.test(n)){let[C,k]=Hb.exec(n)||[];if(k&&C){let F=parseFloat(k),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]=cI.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:k}=C.features[0].geometry;return this.cacheStationData[n]=pr(k),o.set("viaPointTrack",T),o.setGeometry(new fr(pr(k))),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 _=dn(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 Vy({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 Nb(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&&kh(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(){}},Kb=Zy;var Hy=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 Ah(_),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()})}},Jb=Hy;var hI=()=>{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},Qb=hI;var Xy=class extends rc{constructor(e){let n=Qb();n.className=e?.className||"mbt-stop-finder";let a={element:n,...e||{}};super(a),this.controller=new Jb({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)}},e1=Xy;var o1=mo(Ap()),a1=mo(e_());function MI(h){return class extends h{constructor(...a){let l=a[0];super(l);this.options={};this.olListenersKeys=[];l.properties&&(console.warn("Deprecated. Don't use properties options. Pass the values directly in options object."),this.setProperties(l.properties)),this.olListenersKeys?.push(this.on("propertychange",o=>{o.key==="children"&&this.onChildrenChange(o.oldValue)})),this.options=l,this.children=l.children||[]}get children(){return this.get("children")||[]}set children(a){this.set("children",a||[])}get copyrights(){return console.warn("Deprecated. Use the source object to get the attributions"),this.get("copyrights")}set copyrights(a){console.warn("Deprecated. Use the source object to set the attributions");let l=a&&!Array.isArray(a)?[a]:a;this.set("copyrights",l||[])}get disabled(){return this.get("disabled")}set disabled(a){this.set("disabled",a)}get group(){return this.get("group")}get hitTolerance(){return console.warn("Deprecated. Pass the pixelTolerance when you request the features."),this.get("hitTolerance")||5}get key(){return this.get("key")||this.get("name")||Vt(this)}get map(){return this.getMapInternal()}get name(){return this.get("name")}get olLayer(){return console.warn("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This getter is only a redirect to the current 'this' object."),this}set olLayer(a){console.log("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This setter has no effect.")}get parent(){return this.get("parent")}set parent(a){this.set("parent",a)}get visible(){return this.getVisible()}set visible(a){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.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 Ka(this)}}}var s1=MI;function AI(h){return class extends s1(h){}}var Hs=AI;var t_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},bu=class extends cc{getFeaturesAtCoordinate(e,n=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{mbMap:o}=a,_=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(t_[_]||(t_[_]=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[C,k]=T;T=[[C-n,k-n],[C+n,k+n]]}v=o.queryRenderedFeatures(T,a.queryRenderedFeaturesOptions||{}).map(C=>{let k=t_[_].readFeature(C);return k&&k.set(aa,C),k})}}return v}prepareFrame(){return!0}renderFrame(e){let n=this.getLayer(),{map:a,mbMap:l}=n;if(!n||!a||!l)return null;let o=l.getCanvas(),{viewState:_}=e,v=n.getOpacity()||1;return o.style.opacity=`${v}`,l.jumpTo({center:Qa(_.center),zoom:_.zoom-1,bearing:Fx(-_.rotation)}),o.isConnected?(o.width!==e.size[0]||o.height!==e.size[1])&&l.resize():a.render(),l.redraw(),l.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(_=>{l(_,this.layer_,_.getGeometry())}),o?.[0]}};var i_=class h extends Hs(vs){get apiKey(){return this.get("apiKey")}set apiKey(e){this.set("apiKey",e)}get apiKeyName(){return this.get("apiKeyName")}set apiKeyName(e){this.set("apiKeyName",e)}get mbMap(){return console.warn("Deprecated. Use layer.maplibreMap."),this.maplibreMap}get queryRenderedFeaturesOptions(){return this.get("queryRenderedFeaturesOptions")}set queryRenderedFeaturesOptions(e){this.set("queryRenderedFeaturesOptions",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}constructor(e){super({source:new Po({attributions:()=>this.maplibreMap&&Ya(this.maplibreMap)||[]}),apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...e||{},mapOptions:{interactive:!1,trackResize:!1,attributionControl:!1,...e?.mapOptions||{}},queryRenderedFeaturesOptions:{...e?.queryRenderedFeaturesOptions||{}}})}attachToMap(e){super.attachToMap(e),this.loadMbMap();let n=(0,o1.default)(this.updateMaplibreMap.bind(this),150);this.olListenersKeys.push(this.on("propertychange",a=>{/(apiKey|apiKeyName|url|style)/.test(a.key)&&n()}))}detachFromMap(){this.maplibreMap&&(this.maplibreMap.triggerRepaint=()=>{},this.maplibreMap.remove(),this.maplibreMap=void 0),this.loaded=!1,super.detachFromMap()}loadMbMap(){if(this.loaded=!1,this.olListenersKeys.push(this.map?.on("change:target",this.loadMbMap.bind(this))),!this.map?.getTargetElement())return;if(!this.visible){this.olListenersKeys.push(this.once("change:visible",this.loadMbMap.bind(this)));return}let e=document.createElement("div");e.style.position="absolute",e.style.width="100%",e.style.height="100%",this.maplibreMap=this.createMap({style:this.getStyle(),container:e,...this.options?.mapOptions||{}}),this.maplibreMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.maplibreMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new xi("load"))})}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:Ha(`${this.url}/styles/${this.style}/style.json`,{[this.apiKeyName]:this.apiKey}).toString()}createMap(e){return new a1.Map(e)}createRenderer(){return new bu(this)}updateMaplibreMap(){this.maplibreMap?.setStyle(this.getStyle(),{diff:!1})}clone(e){return new h({...this.options||{},...e||{}})}},l1=i_;var r_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},wu=class extends cc{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(r_[_]||(r_[_]=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[k,F]=T;T=[[k-n,F-n],[k+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(k=>k.id),validate:!1}).map(k=>{let F=r_[_].readFeature(k);return F&&F.set(aa,k),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 n_=class h extends Hs(vs){constructor(n){super({source:new Po({}),...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 wu(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.olListenersKeys.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.olListenersKeys.push(this.maplibreLayer.on("load",this.onLoad.bind(this)),this.on("change:visible",l=>{this.applyLayoutVisibility(l)}),this.on("propertychange",l=>{/(sources|layers|layersFilter|maplibreLayer|beforeId)/.test(l.key)&&(this.detachFromMap(),this.attachToMap(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(aa)||{};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})}},c1=n_;var l_=mo(Ap());var o_=mo(Ap()),a_=mo(f1());function ZI(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 Rh(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||[xs,xs,xs,xs,xs,xs,xs,xs,xs,sp,sp],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,a_.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,o_.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:k,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:k===!1?k:!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(),kh(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=Qh(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 k=Object.keys(this.trajectories);for(let F=k.length-1;F>=0;F-=1)this.purgeTrajectory(this.trajectories[k[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(([k,F])=>{T.push(`${k}=${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,a_.default)(this.renderTrajectoriesInternal,_,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,o_.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,_=dn([...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&&go(_,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 Rp=ZI;var HI=new Pr({zIndex:2,image:new wn({radius:5,fill:new Ar({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),XI=(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,[HI,new Pr({zIndex:3,image:new wn({radius:4,fill:new Ar({color:a})}),stroke:new er({color:a,width:4})})]},kp=XI;var YI=new Pr({zIndex:2,image:new wn({radius:5,fill:new Ar({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),KI=new Pr({zIndex:3,image:new wn({radius:4,fill:new Ar({color:"#a0a0a0"})}),stroke:new er({color:"#a0a0a0",width:4})}),JI=()=>[YI,KI],m1=JI;var g1=new wn({radius:6,fill:new Ar({color:[255,0,0,1]}),stroke:new er({color:[0,0,0,1],width:1})}),QI=new Pr({stroke:new er({color:[0,0,0,1],width:5})}),eE=new Pr({image:g1,stroke:new er({color:[255,0,0,1],width:3})}),tE=new Pr({image:g1,stroke:new er({color:[255,0,0,1],width:3,lineDash:[1,10]})}),iE=(h,e)=>{let n=h.get("minResolution"),a=h.get("maxResolution"),l=e<=n&&e>a;return n&&a&&!l?[]:h.get("mot")!=="foot"?[QI,eE]:[tE]},y1=iE;var rE=new mr,Su=class extends Cp{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(),k=C?.getPixelFromCoordinate(v),F=C?.getPixelFromCoordinate(l);k&&F&&(this.container.style.transform=mx(k[0]-F[0],k[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=dn([...e,...e],n*o),w=[],T=Object.values(a.trajectories||{});a.sort&&(T=T.sort(this.sort));let C=[];for(let k=0;k<T.length;k+=1){let F=T[k];if(F.properties.coordinate&&go(v,F.properties.coordinate)&&C.push(T[k]),C.length===_)break}return w=C.map(k=>rE.readFeature(k)),w}};var nE=new mr,c_=class h extends Rp(Hs(vs)){constructor(n){super({source:new Po({}),...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||kp)(a,l,this.styleOptions)}),this.renderState={center:[0,0],zoom:void 0,rotation:0},this.onZoomEndDebounced=(0,l_.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,l_.default)(this.onMoveEnd,100)}createRenderer(){return new Su(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.olListenersKeys.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=nE.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})}},_1=c_;var h_=class h extends Hs(vs){constructor(e){super(e),console.warn("Layer is deprecated. Use an OpenLayers Layer instead.")}clone(e){return new h({...this.options||{},...e||{}})}},x1=h_;var sE=new mr,oE=(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=>sE.readFeatures(w)).catch(()=>[])},Cu={},aE=async(h,e,n=5)=>{Object.values(Cu).forEach(o=>{o?.abort()}),Cu={};let l=Ka(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);Cu[F]?.abort(),Cu[F]=new AbortController;let q=_?.getView()?.getResolution();return oE(T,{coordinate:h,resolution:q,projection:v,params:{info_format:"application/json",query_layers:T.getParams().layers}},Cu[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 k=_?.getFeaturesAtPixel(C,{layerFilter:F=>F===o,hitTolerance:o.get("hitTolerance")||n||5});return Promise.resolve({features:k,layer:o,coordinate:h})});return Promise.all(l)},v1=aE;var Bp={};im(Bp,{CopyrightControl:()=>b1,Layer:()=>Fp,RealtimeAPI:()=>Rh,RealtimeLayer:()=>B1,RealtimeModes:()=>Wi,RoutingAPI:()=>Mh,StopsAPI:()=>Ah,VECTOR_TILE_FEATURE_PROPERTY:()=>aa,compareDepartures:()=>eu,createCanvas:()=>_s,createRealtimeFilters:()=>lm,debounceDeparturesMessages:()=>Jm,debounceWebsocketMessages:()=>Ph,getCircleCanvas:()=>og,getDelayBgCanvas:()=>ng,getDelayTextCanvas:()=>sg,getHoursAndMinutes:()=>dx,getLayersAsFlatArray:()=>Ka,getMapGlCopyrights:()=>Ya,getMercatorResolution:()=>O1,getSourceCoordinates:()=>Op,getTextCanvas:()=>ag,getUTCDateString:()=>hx,getUTCTimeString:()=>ux,getUrlWithParams:()=>Ha,getVehiclePosition:()=>Jh,pad:()=>Fd,realtimeConfig:()=>ic,realtimeDefaultStyle:()=>sl,realtimeDelayStyle:()=>lg,realtimeSimpleStyle:()=>cg,removeDuplicate:()=>Xa,renderTrajectories:()=>Qh,sortAndFilterDepartures:()=>tu,sortByDelay:()=>cm});var lE=" | ",u_=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||lE,n=this.options?.customAttribution||Ya(this.map),a=(Array.isArray(n)?n:[n]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},b1=u_;var Dp,cE=new Uint8Array(16);function d_(){if(!Dp&&(Dp=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Dp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Dp(cE)}var kr=[];for(let h=0;h<256;++h)kr.push((h+256).toString(16).slice(1));function w1(h,e=0){return kr[h[e+0]]+kr[h[e+1]]+kr[h[e+2]]+kr[h[e+3]]+"-"+kr[h[e+4]]+kr[h[e+5]]+"-"+kr[h[e+6]]+kr[h[e+7]]+"-"+kr[h[e+8]]+kr[h[e+9]]+"-"+kr[h[e+10]]+kr[h[e+11]]+kr[h[e+12]]+kr[h[e+13]]+kr[h[e+14]]+kr[h[e+15]]}var hE=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),p_={randomUUID:hE};function uE(h,e,n){if(p_.randomUUID&&!e&&!h)return p_.randomUUID();h=h||{};let a=h.random||(h.rng||d_)();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 w1(a)}var f_=uE;var S1=mo(e_()),m_=class extends S1.Evented{constructor(n={}){super();this.options={};this.type="custom";this.options=n,this.id=n.id||f_(),this.type="custom"}onAdd(n,a){this.map=n}onRemove(n,a){this.map=void 0}render(n){}},Fp=m_;var ir=63710088e-1,C1={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},a6={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 I1(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(!g_(h[0])||!g_(h[1]))throw new Error("coordinates must contain numbers");var a={type:"Point",coordinates:h};return I1(a,e,n)}function dE(h,e){e===void 0&&(e="kilometers");var n=C1[e];if(!n)throw new Error(e+" units is invalid");return h*n}function pE(h,e){e===void 0&&(e="kilometers");var n=C1[e];if(!n)throw new Error(e+" units is invalid");return h/n}function E1(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 zp(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 dE(pE(h,e),n)}function g_(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function y_(h){return!!h&&h.constructor===Object}function Iu(h,e,n){if(h!==null)for(var a,l,o,_,v,w,T,C=0,k=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,k,H,ge,_e)===!1)return!1;k++,ge++;break;case"LineString":case"MultiPoint":for(a=0;a<w.length;a++){if(e(w[a],k,H,ge,_e)===!1)return!1;k++,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],k,H,ge,_e)===!1)return!1;k++}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],k,H,ge,_e)===!1)return!1;k++}_e++}ge++}break;case"GeometryCollection":for(a=0;a<_.geometries.length;a++)if(Iu(_.geometries[a],e,n)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function fE(h,e){e===void 0&&(e={});var n=0,a=0,l=0;return Iu(h,function(o){n+=o[0],a+=o[1],l++},!0),ga([n/l,a/l],e.properties)}var T1=fE;function Xs(h){if(!h)throw new Error("coord is required");if(!Array.isArray(h)){if(h.type==="Feature"&&h.geometry!==null&&h.geometry.type==="Point")return h.geometry.coordinates;if(h.type==="Point")return h.coordinates}if(Array.isArray(h)&&h.length>=2&&!Array.isArray(h[0])&&!Array.isArray(h[1]))return h;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function M1(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 mE(h,e,n){n===void 0&&(n={});var a;n.final?a=A1(Xs(e),Xs(h)):a=A1(Xs(h),Xs(e));var l=a>180?-(360-a):a;return l}function A1(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(E1(_)+360)%360}var P1=mE;function gE(h,e,n){n===void 0&&(n={});var a=Xs(h),l=Xs(e);l[0]+=l[0]-a[0]>180?-360:a[0]-l[0]>180?360:0;var o=yE(a,l),_=zp(o,"meters",n.units);return _}function yE(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),k=C*a;return k}var R1=gE;function _E(h,e,n,a){a===void 0&&(a={});var l=e<0,o=zp(Math.abs(e),a.units,"meters");l&&(o=-Math.abs(o));var _=Xs(h),v=xE(_,o,n);return v[0]+=v[0]-_[0]>180?-360:_[0]-v[0]>180?360:0,ga(v,a.properties)}function xE(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)),k=Math.abs(C)>1e-11?w/C:Math.cos(_),F=l*Math.sin(v)/k,q=o+F;return[(q*180/Math.PI+540)%360-180,T*180/Math.PI]}var k1=_E;function vE(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return L1(h);case"FeatureCollection":return bE(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return __(h);default:throw new Error("unknown GeoJSON type")}}function L1(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=D1(h.properties),e.geometry=__(h.geometry),e}function D1(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]=D1(a):e[n]=a}),e}function bE(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 L1(n)}),e}function __(h){var e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(function(n){return __(n)}),e):(e.coordinates=F1(h.coordinates),e)}function F1(h){var e=h;return typeof e[0]!="object"?e.slice():e.map(function(n){return F1(n)})}var z1=vE;function wE(h,e,n){if(n=n||{},!y_(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=T1(h)),(l===!1||l===void 0)&&(h=z1(h)),Iu(h,function(o){var _=P1(a,o),v=_+e,w=R1(a,o),T=M1(k1(a,w,v));o[0]=T[0],o[1]=T[1]})),h}var x_=wE;var SE=(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]]},Op=SE;var CE=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)},O1=CE;var IE=h=>Bh(h.toArray().flat(),"EPSG:4326","EPSG:3857"),v_=IE;var b_=class extends Rp(Fp){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=x_(ga([o.lng,o.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,w=x_(ga([_.lng,_.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,T=[...pr(v),...pr(w)],C=vi(T)/(n/this.pixelRatio),k=dr(T)/(a/this.pixelRatio),F=Math.max(C,k),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||v_(this.map.getBounds()),a||Math.floor(this.map.getZoom()-1))}setBbox(e,n){super.setBbox(e||v_(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=Op(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()}},B1=b_;var w_={ol:Lp,maplibre:Bp};typeof window<"u"&&(window.mbt=w_);var dN=w_;})();
|
|
585
|
+
`){zt+=ft,ft=0,at=F*_e+Ce*q,++nt;continue}let Lt=K[ct+1]||w.font;Lt!==dt&&(l&&Ge.push("font",Lt),a&&Ze.push("font",Lt),dt=Lt),ft=Math.max(ft,se[Ke]);let Gt=[mt,at+Ce*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,k,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||k!==0)&&(fa[0]=Me,ma[0]=Me,fa[1]=Re,Mo[1]=Re,Mo[0]=Me+fe,Ao[0]=Mo[0],Ao[1]=Re+xe,ma[1]=Ao[1]);let Ce;return k!==0?(Ce=Ir(hr(),a,l,1,1,k,-a,-l),Qi(Ce,fa),Qi(Ce,Mo),Qi(Ce,Ao),Qi(Ce,ma),_o(Math.min(fa[0],Mo[0],Ao[0],ma[0]),Math.min(fa[1],Mo[1],Ao[1],ma[1]),Math.max(fa[0],Mo[0],Ao[0],ma[0]),Math.max(fa[1],Mo[1],Ao[1],ma[1]),uc)):_o(Math.min(Me,Me+fe),Math.min(Re,Re+xe),Math.max(Me,Me+fe),Math.max(Re,Re+xe),uc),q&&(H=Math.round(H),se=Math.round(se)),{drawImageX:H,drawImageY:se,drawImageW:ge,drawImageH:_e,originX:T,originY:C,declutterBox:{minX:uc[0],minY:uc[1],maxX:uc[2],maxY:uc[3],value:W},canvasTransform:Ce,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,Mo,Ao,ma,_,v),Wv(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=vy(Array.isArray(e)?e[0]:e,o.textAlign||ua),C=gu[o.textBaseline||al],k=v&&v.lineWidth?v.lineWidth:0,F=_.width/w-2*o.scale[0],q=T*F+2*(.5-T)*k,K=C*_.height/w+2*(.5-C)*k;return{label:_,anchorX:q,anchorY:K}}execute_(e,n,a,l,o,_,v,w){let T=this.zIndexContext_,C;this.pixelCoordinates_&&un(a,this.renderedTransform_)?C=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),C=mn(this.coordinates,0,this.coordinates.length,2,a,this.pixelCoordinates_),fx(this.renderedTransform_,a));let k=0,F=l.length,q=0,K,he,W,H,se,ge,_e,fe,xe,Me,Re,Ce,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,Lt,Gt,hi;for(;k<F;){let je=l[k];switch(je[0]){case gt.BEGIN_GEOMETRY:mt=je[1],hi=je[3],mt.getGeometry()?v!==void 0&&!Zi(v,hi.getExtent())?k=je[2]+1:++k:k=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),++k;break;case gt.CIRCLE:q=je[1];let Pi=C[q],Lr=C[q+1],Dr=C[q+2],In=C[q+3],Vi=Dr-Pi,en=In-Lr,ni=Math.sqrt(Vi*Vi+en*en);e.moveTo(Pi+ni,Lr),e.arc(Pi,Lr,ni,0,2*Math.PI,!0),++k;break;case gt.CLOSE_PATH:e.closePath(),++k;break;case gt.CUSTOM:q=je[1],K=je[2];let En=je[3],Te=je[4],tn=je[5];ct.geometry=En,ct.feature=mt,k in Ke||(Ke[k]=[]);let gr=Ke[k];tn?tn(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),++k;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],Vn=je[9],Gn=je[10],rn=je[11],nn=je[12],Tn=je[13];H=je[14]||"declutter";let jn=je[15];if(!xe&&je.length>=20){Me=je[19],Re=je[20],Ce=je[21],at=je[22];let le=this.drawLabelWithPointPlacement_(Me,Re,Ce,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,Tn=xe.width,je[13]=Tn}let Ne;je.length>25&&(Ne=je[25]);let Gi,Ri,Mn;je.length>17?(Gi=je[16],Ri=je[17],Mn=je[18]):(Gi=Co,Ri=!1,Mn=!1),Gn&&dt?rn+=nt:!Gn&&!dt&&(rn-=nt);let is=0;for(;q<K;q+=2){if(Ne&&Ne[is++]<Tn/this.pixelRatio)continue;let le=this.calculateImageOrLabelDimensions_(xe.width,xe.height,C[q],C[q+1],Tn,Et,he,W,yr,Vn,rn,nn,o,Gi,Ri||Mn,mt),ue=[e,n,xe,le,jt,Ri?ft:null,Mn?zt:null];if(w){let ne,ye,Ae;if(jn){let qe=K-q;if(!jn[qe]){jn[qe]={args:ue,declutterMode:H};continue}let Je=jn[qe];ne=Je.args,ye=Je.declutterMode,delete jn[qe],Ae=xb(ne)}let Ie,Se;if(ne&&(ye!=="declutter"||!w.collides(Ae))&&(Ie=!0),(H!=="declutter"||!w.collides(le.declutterBox))&&(Se=!0),ye==="declutter"&&H==="declutter"){let qe=Ie&&Se;Ie=qe,Se=qe}Ie&&(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)}++k;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],sn=je[8];Ce=je[9];let on=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=tp(C,Be,St,2),ce=Math.abs(V[0])*jg(B,Me,U);if(Yi||ce<=te){let le=this.textStates[Re].textAlign,ue=(te-ce)*vy(Me,le),ne=_b(C,Be,St,2,Me,ue,Ki,Math.abs(V[0]),jg,B,U,dt?0:this.viewRotation_);e:if(ne){let ye=[],Ae,Ie,Se,qe,Je;if(Ce)for(Ae=0,Ie=ne.length;Ae<Ie;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,"",Ce),he=Je[2]+(V[0]<0?-on:on),W=yt*qe.height+(.5-yt)*2*on*V[1]/V[0]-sn;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,Ie=ne.length;Ae<Ie;++Ae){Je=ne[Ae],Se=Je[4],qe=this.createLabel(Se,Re,at,""),he=Je[2],W=yt*qe.height-sn;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(xb));for(let ht=0,_t=ye.length;ht<_t;++ht)this.replayImageOrLabel_.apply(this,ye[ht])}}++k;break;case gt.END_GEOMETRY:if(_!==void 0){mt=je[1];let le=_(mt,hi);if(le)return le}++k;break;case gt.FILL:At?Ge++:this.fill_(e),++k;break;case gt.MOVE_TO_LINE_TO:for(q=je[1],K=je[2],Lt=C[q],Gt=C[q+1],_e=Lt+.5|0,fe=Gt+.5|0,(_e!==se||fe!==ge)&&(e.moveTo(Lt,Gt),se=_e,ge=fe),q+=2;q<K;q+=2)Lt=C[q],Gt=C[q+1],_e=Lt+.5|0,fe=Gt+.5|0,(q==K-2||_e!==se||fe!==ge)&&(e.lineTo(Lt,Gt),se=_e,ge=fe);++k;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],++k;break;case gt.SET_STROKE_STYLE:zt=je,Ze&&(e.stroke(),Ze=0),this.setStrokeStyle_(e,je),++k;break;case gt.STROKE:At?Ze++:e.stroke(),++k;break;default:++k;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)}},bb=by;var dc=["Polygon","Circle","LineString","Image","Text","Default"],Cy=["Image","Text"],wb=dc.filter(h=>!Cy.includes(h)),Sy=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 bb(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=Ir(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 k;this.renderBuffer_!==void 0&&(k=fn(),gm(k,e),dn(k,n*(this.renderBuffer_+l),k));let F=RC(l),q;function K(fe,xe){let Me=C.getImageData(0,0,v,v).data;for(let Re=0,Ce=F.length;Re<Ce;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(ps);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=dc.length-1;H>=0;--H)if(q=dc[H],ge=se[q],ge!==void 0&&(_e=ge.executeHitDetection(C,w,a,K,k),_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 mn(v,0,8,2,e,v),v}isEmpty(){return On(this.executorsByZIndex_)}execute(e,n,a,l,o,_,v){let w=Object.keys(this.executorsByZIndex_).map(Number);w.sort(ps),_=_||dc;let T,C,k,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],k=0,F=_.length;k<F;++k){let W=_[k];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(ps);for(let a=0,l=n.length;a<l;++a)e[n[a]].forEach(o=>{o.draw(this.renderedContext_),o.clear()})}},wy={};function RC(h){if(wy[h]!==void 0)return wy[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 wy[h]=l,l}var Sb=Sy;var Iy=class extends wp{constructor(e,n,a,l,o,_,v){super(),this.context_=e,this.pixelRatio_=n,this.extent_=a,this.transform_=l,this.transformRotation_=l?Ox(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=mn(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,k=o.length;C<k;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_;Ir(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=mn(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=mn(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=Jx(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),un(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:xn(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||vn;this.strokeState_={lineCap:l!==void 0?l:Gs,lineDash:this.pixelRatio_===1?C:C.map(k=>k*this.pixelRatio_),lineDashOffset:(_||bn)*this.pixelRatio_,lineJoin:v!==void 0?v:js,lineWidth:(w!==void 0?w:Io)*this.pixelRatio_,miterLimit:T!==void 0?T:wo,strokeStyle:xn(a||So)}}}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:xn(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:Gs,lineDash:he||vn,lineDashOffset:W||bn,lineJoin:H!==void 0?H:js,lineWidth:se!==void 0?se:Io,miterLimit:ge!==void 0?ge:wo,strokeStyle:xn(q||So)}}let l=e.getFont(),o=e.getOffsetX(),_=e.getOffsetY(),v=e.getRotateWithView(),w=e.getRotation(),T=e.getScaleArray(),C=e.getText(),k=e.getTextAlign(),F=e.getTextBaseline();this.textState_={font:l!==void 0?l:mp,textAlign:k!==void 0?k: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]]}}},Cb=Iy;var Is=.5;function Ib(h,e,n,a,l,o,_,v,w){let T=w?Os(l,w):l,C=h[0]*Is,k=h[1]*Is,F=Ni(C,k);F.imageSmoothingEnabled=!1;let q=F.canvas,K=new Cb(F,Is,l,null,_,v,w?Ql(Bn(),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 Ce=0,at=xe.length;Ce<at;++Ce){let Ge=xe[Ce],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 Lt=Ni(mt[0],mt[1],void 0,{alpha:!1}),Gt=Lt.canvas;Lt.fillStyle=Re,Lt.fillRect(0,0,Gt.width,Gt.height),ft.setImage(new au({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 Lt=0,Gt=mt.length;Lt<Gt;++Lt){let hi=mt[Lt];ct[hi.getType().replace("Multi","")].push(hi,ft)}}else ct[At.replace("Multi","")].push(Ze,ft)}}let se=Object.keys(H).map(Number).sort(ps);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,Ce=Me.length;Re<Ce;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 Eb(h,e,n){let a=[];if(n){let l=Math.floor(Math.round(h[0])*Is),o=Math.floor(Math.round(h[1])*Is),_=(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),k=Math.floor((256*256*256-1)/e.length);C&&C%k===0&&a.push(e[C/k-1])}return a}var kC=.5,Tb={Point:NC,LineString:zC,Polygon:GC,MultiPoint:VC,MultiLineString:OC,MultiPolygon:BC,GeometryCollection:FC,Circle:LC};function Mb(h,e){return parseInt(Vt(h),10)-parseInt(Vt(e),10)}function Ey(h,e){let n=Ty(h,e);return n*n}function Ty(h,e){return kC*h/e}function LC(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 My(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 k=w.length>0;return k&&Promise.all(w).then(()=>l(null)),DC(h,e,n,a,o,_,v),k}function DC(h,e,n,a,l,o,_){let v=n.getGeometryFunction()(e);if(!v)return;let w=v.simplifyTransformed(a,l);if(n.getRenderer())Ab(h,w,n,e,_);else{let C=Tb[w.getType()];C(h,w,n,e,_,o)}}function Ab(h,e,n,a,l){if(e.getType()=="GeometryCollection"){let _=e.getGeometries();for(let v=0,w=_.length;v<w;++v)Ab(h,_[v],n,a,l);return}h.getBuilder(n.getZIndex(),"Default").drawCustom(e,a,n.getRenderer(),n.getHitDetectionRenderer(),l)}function FC(h,e,n,a,l,o){let _=e.getGeometriesArray(),v,w;for(v=0,w=_.length;v<w;++v){let T=Tb[_[v].getType()];T(h,_[v],n,a,l,o)}}function zC(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 OC(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 BC(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 NC(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 VC(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 k=h.getBuilder(n.getZIndex(),"Image");k.setImageStyle(_,C),k.drawMultiPoint(e,a,l)}if(T){let k=h.getBuilder(n.getZIndex(),"Text");k.setTextStyle(w,C),k.drawText(e,a,l)}}function GC(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 Ay=class extends Cp{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_=fn(),this.wrappedRenderedExtent_=fn(),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(),k=this.getLayer().getSource(),F=this.getLayer().getDeclutter(),q=n.pixelRatio,K=n.viewHints,he=!(K[yn.ANIMATING]||K[yn.INTERACTING]),W=this.context,H=Math.round(vi(l)/v*q),se=Math.round(dr(l)/v*q),ge=k.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?dc:a?Cy:wb,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,xy))}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,Ev(this.context),xy.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);Ir(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/a,1/a,0,-v/2,-w/2),gx(this.inversePixelTransform,this.pixelTransform);let T=hm(this.pixelTransform);this.useContainer(n,T,this.getBackground(e));let C=this.context,k=C.canvas,F=this.replayGroup_,q=F&&!F.isEmpty();if(!q&&!(this.getLayer().hasListener(Ns.PRERENDER)||this.getLayer().hasListener(Ns.POSTRENDER)))return null;k.width!=v||k.height!=w?(k.width=v,k.height=w,k.style.transform!==T&&(k.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=Bs(l.extent,he);q=Zi(H,e.extent),W=q&&!yo(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=[],k=a[0]*Is,F=a[1]*Is;C.push(this.getRenderTransform(l,o,_,Is,k,F,0).slice());let q=T.getSource(),K=v.getExtent();if(q.getWrapX()&&v.canWrapX()&&!yo(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,_,Is,k,F,ge).slice()),W+=H;for(se=0,W=w[2];W>K[2];)++se,ge=H*se,C.push(this.getRenderTransform(l,o,_,Is,k,F,ge).slice()),W-=H}let he=Bn();this.hitDetectionImageData_=Ib(a,C,this.renderedFeatures_,T.getStyleFunction(),w,o,_,Ey(o,this.renderedPixelRatio_),he?v:null)}n(Eb(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})}},k,F=[this.replayGroup_],q=this.getLayer().getDeclutter();return F.some(K=>k=K.forEachFeatureAtCoordinate(e,_,v,a,C,q&&n.declutter[q]?n.declutter[q].all().map(he=>he.value):null)),k}handleFontsChanged(){let e=this.getLayer();e.getVisible()&&this.replayGroup_&&e.changed()}handleStyleImageChange_(e){this.renderIfReadyAndVisible()}prepareFrame(e){let n=this.getLayer(),a=n.getSource();if(!a)return!1;let l=e.viewHints[yn.ANIMATING],o=e.viewHints[yn.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,k=T.resolution,F=e.pixelRatio,q=n.getRevision(),K=n.getRenderBuffer(),he=n.getRenderOrder();he===void 0&&(he=Mb);let W=T.center.slice(),H=dn(w,K*k),se=H.slice(),ge=[H.slice()],_e=C.getExtent();if(a.getWrapX()&&C.canWrapX()&&!yo(_e,e.extent)){let Ke=vi(_e),nt=Math.max(vi(H)/2,Ke);H[0]=_e[0]-nt,H[2]=_e[2]+nt,Gx(W,C);let dt=wm(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_==k&&this.renderedRevision_==q&&this.renderedRenderOrder_==he&&yo(this.wrappedRenderedExtent_,H))return un(this.renderedExtent_,se)||(this.hitDetectionImageData_=null,this.renderedExtent_=se),this.renderedCenter_=W,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let fe=new gb(Ty(k,F),H,k,F),xe=Bn(),Me;if(xe){for(let Ke=0,nt=ge.length;Ke<nt;++Ke){let dt=ge[Ke],ct=Os(dt,C);a.loadFeatures(ct,Zx(k,C),xe)}Me=Ql(xe,C)}else for(let Ke=0,nt=ge.length;Ke<nt;++Ke)a.loadFeatures(ge[Ke],k,C);let Re=Ey(k,F),Ce=!0,at=(Ke,nt)=>{let dt,ct=Ke.getStyleFunction()||n.getStyleFunction();if(ct&&(dt=ct(Ke,k)),dt){let At=this.renderFeature(Ke,Re,dt,fe,Me,this.getLayer().getDeclutter(),nt);Ce=Ce&&!At}},Ge=Os(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=Ce;let ft=fe.finish(),zt=new Sb(H,k,F,a.getOverlaps(),ft,n.getRenderBuffer(),!!e.declutter);return this.renderedResolution_=k,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=My(l,e,a[T],n,this.boundHandleStyleImageChange_,o,_,v)||w;else w=My(l,e,a,n,this.boundHandleStyleImageChange_,o,_,v);return w}},Pb=Ay;var Py=class extends hb{constructor(e){super(e)}createRenderer(){return new Pb(this)}},ll=Py;var Rb=mo(Xg(),1);var Ry=class{constructor(e){this.rbush_=new Rb.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];qd(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 On(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(e){let n=this.rbush_.toJSON();return _o(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]}},yu=Ry;var kb=hr(),_u=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"?ea(this.flatCoordinates_):Xl(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){let e=Kn(this.getExtent());this.flatInteriorPoints_=Hh(this.flatCoordinates_,0,this.ends_,2,e,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){let e=uv(this.flatCoordinates_,this.ends_),n=np(this.flatCoordinates_,0,e,2);this.flatInteriorPoints_=ip(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);Ir(kb,a[0],a[3],l,-l,0,0,0),mn(this.flatCoordinates_,0,this.flatCoordinates_.length,2,kb,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=Nd((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=Jd(a,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,e,a,0,l);break;case"Polygon":l=[],a.length=Uh(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}};_u.prototype.getFlatCoordinates=_u.prototype.getOrientedFlatCoordinates;var ts=_u;var ky=class extends ur{constructor(e){super(),this.projection=Bi(e.projection),this.attributions_=Lb(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_=Lb(e),this.changed()}setState(e){this.state_=e,this.changed()}};function Lb(h){return h?Array.isArray(h)?function(e){return h}:typeof h=="function"?h:function(e){return[h]}:null}var Po=ky;var jr={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function Db(h,e){return[[-1/0,-1/0,1/0,1/0]]}var jC=!1;function UC(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=jC,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 Ly(h,e){return function(n,a,l,o,_){let v=this;UC(h,e,n,a,l,function(w,T){v.addFeatures(w),o!==void 0&&o(w)},_||fs)}}var Zs=class extends xi{constructor(e,n,a){super(e),this.feature=n,this.features=a}},Dy=class extends Po{constructor(e){e=e||{},super({attributions:e.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:e.wrapX!==void 0?e.wrapX:!0}),this.on,this.once,this.un,this.loader_=fs,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_=Ly(this.url_,this.format_)),this.strategy_=e.strategy!==void 0?e.strategy:Db;let n=e.useSpatialIndex!==void 0?e.useSpatialIndex:!0;this.featuresRtree_=n?new yu:null,this.loadedExtentsRtree_=new yu,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 ru(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 Zs(jr.ADDFEATURE,e))}setupChangeEvents_(e,n){n instanceof ts||(this.featureChangeKeys_[e]=[Tr(n,li.CHANGE,this.handleFeatureChange_,this),Tr(n,zd.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 ts){let o=this.idIndex_[l];o instanceof ts?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(jr.ADDFEATURE))for(let o=0,_=a.length;o<_;o++)this.dispatchEvent(new Zs(jr.ADDFEATURE,a[o]))}bindFeaturesCollection_(e){let n=!1;this.addEventListener(jr.ADDFEATURE,function(a){n||(n=!0,e.push(a.feature),n=!1)}),this.addEventListener(jr.REMOVEFEATURE,function(a){n||(n=!0,e.remove(a.feature),n=!1)}),e.addEventListener(bs.ADD,a=>{n||(n=!0,this.addFeature(a.element),n=!1)}),e.addEventListener(bs.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(Vr);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 Zs(jr.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 ts||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 ts||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(),On(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=Tx(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||Bd,this.featuresRtree_.forEachInExtent(w,function(T){if(n(T)){let C=T.getGeometry(),k=v;if(v=C instanceof ts?0:C.closestPointXY(a,l,_,v),v<k){o=T;let F=Math.sqrt(v);w[0]=a-F,w[1]=l-F,w[2]=a+F,w[3]=l+F}}}),o}getExtent(e){return this.featuresRtree_.getExtent(e)}getFeatureById(e){let 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 Zs(jr.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()&&On(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 yo(C.extent,w)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Zs(jr.FEATURESLOADSTART)),this.loader_.call(this,w,n,a,C=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(jr.FEATURESLOADEND,void 0,C))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Zs(jr.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(qd(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(Vr),delete this.featureChangeKeys_[n];let l=e.getId();return l!==void 0&&delete this.idIndex_[l.toString()],delete this.uidIndex_[n],this.hasListener(jr.REMOVEFEATURE)&&this.dispatchEvent(new Zs(jr.REMOVEFEATURE,e)),e}removeFromIdIndex_(e){let n=!1;for(let a in this.idIndex_){let l=this.idIndex_[a];if(e instanceof ts&&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(Ly(e,this.format_))}},cl=Dy;var Nn={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 Fy={ACTIVE:"active"};var zy=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(Fy.ACTIVE)}getMap(){return this.map_}handleEvent(e){return!0}setActive(e){this.set(Fy.ACTIVE,e)}setMap(e){this.map_=e}};var Fb=zy;var Oy=class extends Fb{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==Nn.POINTERDRAG)this.handleDragEvent(e),e.originalEvent.preventDefault();else if(e.type==Nn.POINTERUP){let a=this.handleUpEvent(e);this.handlingDownUpSequence=a&&this.targetPointers.length>0}}else if(e.type==Nn.POINTERDOWN){let a=this.handleDownEvent(e);this.handlingDownUpSequence=a,n=this.stopDown(a)}else e.type==Nn.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 zb=Oy;var Ob=function(h){let e=h.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey};var Bb=Bd,Nb=function(h){return h.type==Nn.CLICK};var Vb=function(h){return h.type==Nn.SINGLECLICK};var Gb=function(h){let e=h.originalEvent;return ri(e!==void 0,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&e.button===0};var jb=0,xu=1,Ub=[0,0,0,0],pc=[],By={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},vu=class extends xi{constructor(e,n,a){super(e),this.features=n,this.mapBrowserEvent=a}},Ny=class extends zb{constructor(e){super(e),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=e.condition?e.condition:Gb,this.defaultDeleteCondition_=function(a){return Ob(a)&&Vb(a)},this.deleteCondition_=e.deleteCondition?e.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:Bb,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new yu,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:WC(),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 ru(this.source_.getFeatures()),this.source_.addEventListener(jr.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(jr.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(bs.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(bs.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=e.snapToPointer===void 0?!this.hitDetection_:e.snapToPointer}addFeature_(e){let 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 ru;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 vu(By.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(zs(_),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(zs(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(zs(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,k=T.length-1;C<k;++C){let F=T.slice(C,C+2),q={feature:e,geometry:n,depth:[v,l],index:C,segment:F};this.rBush_.insert(zs(F),q)}}}}writeCircleGeometry_(e,n){let a=n.getCenter(),l={feature:e,geometry:n,index:jb,segment:[a,a]},o={feature:e,geometry:n,index:xu,segment:[a,a]},_=[l,o];l.featureSegments=_,o.featureSegments=_,this.rBush_.insert(ea(a),l);let v=n,w=Bn();if(w&&this.getMap()){let T=this.getMap().getView().getProjection();v=v.clone().transform(w,T),v=Xm(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 es(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==Nn.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(e),this.vertexFeature_&&this.deleteCondition_(e)&&(e.type!=Nn.SINGLECLICK||!this.ignoreNextSingleClick_?n=this.removePoint():n=!0),e.type==Nn.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 k=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[k[0]][w.index+K]=n,q[K]=n;break;case"Polygon":F=C.getCoordinates(),F[k[0]][w.index+K]=n,q[K]=n;break;case"MultiPolygon":F=C.getCoordinates(),F[k[1]][k[0]][w.index+K]=n,q[K]=n;break;case"Circle":if(q[0]=n,q[1]=n,w.index===jb)this.changingFeature_=!0,C.setCenter(n),this.changingFeature_=!1;else{this.changingFeature_=!0;let he=e.map.getView().getProjection(),W=Mm(Hi(C.getCenter(),he),Hi(n,he)),H=Bn();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=zs([_]),w=this.rBush_.getInExtent(v),T={};w.sort(qC);for(let C=0,k=w.length;C<k;++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===xu){let W=Wb(n,F,l);Qr(W,_)&&!T[K][0]&&(this.dragSegments_.push([F,0]),T[K][0]=F);continue}if(Qr(q[0],_)&&!T[K][0]){this.dragSegments_.push([F,0]),T[K][0]=F;continue}if(Qr(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(ea(o),_);let w=l,T=Bn();if(T){let C=e.map.getView().getProjection();w=w.clone().transform(T,C),w=Xm(w).transform(C,T)}this.rBush_.update(w.getExtent(),v)}else this.rBush_.update(zs(a.segment),a)}return this.featuresBeingModified_&&(this.dispatchEvent(new vu(By.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 qb(l,T,o)-qb(l,C,o)},v,w;if(this.hitDetection_){let T=typeof this.hitDetection_=="object"?C=>C===this.hitDetection_:void 0;n.forEachFeatureAtPixel(e,(C,k,F)=>{F&&F.getType()==="Point"&&(F=new fr(tl(F.getCoordinates(),o)));let q=F||C.getGeometry();if(C instanceof es&&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=Bs(ea(l,Ub),o),C=n.getView().getResolution()*this.pixelTolerance_,k=Os(dn(T,C,Ub),o);v=this.rBush_.getInExtent(k)}if(v&&v.length>0){let T=v.sort(_)[0],C=T.segment,k=Wb(l,T,o),F=n.getPixelFromCoordinate(k),q=Mm(e,F);if(w||q<=this.pixelTolerance_){let K={};if(K[Vt(C)]=!0,this.snapToPointer_||(this.delta_[0]=k[0]-l[0],this.delta_[1]=k[1]-l[1]),T.geometry.getType()==="Circle"&&T.index===xu)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(k,[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_&&(k=H>se?C[1]:C[0]),this.createOrUpdateVertexFeature_(k,[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(Qr(C[0],xe[0])&&Qr(C[1],xe[1])||Qr(C[0],xe[1])&&Qr(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(zs(C.segment),C),this.dragSegments_.push([C,1]);let k={segment:[n,a[1]],feature:l,geometry:o,depth:_,index:v+1};T.insert(zs(k.segment),k),this.dragSegments_.push([k,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Nn.POINTERDRAG){let e=this.lastPointerEvent_;this.willModifyFeatures_(e,this.dragSegments_);let n=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new vu(By.MODIFYEND,this.featuresBeingModified_,e)),this.featuresBeingModified_=null,n}return!1}removeVertex_(){let e=this.dragSegments_,n={},a=!1,l,o,_,v,w,T,C,k,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,k=T-1,C!==void 0?q=C:q=F,k<0&&(k=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]),k=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:k,segment:he};this.rBush_.insert(zs(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||un(o.depth,a))&&o.index>n&&(o.index+=l)})}};function qC(h,e){return h.index-e.index}function qb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"){let o=a;if(e.index===xu){let _=Bn();_&&(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 pc[0]=Hi(e.segment[0],n),pc[1]=Hi(e.segment[1],n),Vx(l,pc)}function Wb(h,e,n){let a=e.geometry;if(a.getType()==="Circle"&&e.index===xu){let o=a,_=Bn();return _&&(o=o.clone().transform(_,n)),tl(o.getClosestPoint(Hi(h,n)),n)}let l=Hi(h,n);return pc[0]=Hi(e.segment[0],n),pc[1]=Hi(e.segment[1],n),tl(Tm(l,pc),n)}function WC(){let h=Xv();return function(e,n){return h.Point}}var Vy=Ny;var Gy=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=es,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()}},$b=Gy;function Ip(h,e,n){let a=n?Bi(n.featureProjection):null,l=n?Bi(n.dataProjection):null,o=h;if(a&&l&&!$x(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 $C={Point:fr,LineString:ys,Polygon:tc,MultiPoint:Zh,MultiLineString:qm,MultiPolygon:Km};function ZC(h,e,n){return Array.isArray(e[0])?(rp(h,0,e,n)||(h=h.slice(),Yh(h,0,e,n)),h):(Xh(h,0,e,n)||(h=h.slice(),ec(h,0,e,n)),h)}function jy(h,e){let n=h.geometry;if(!n)return[];if(Array.isArray(n))return n.map(o=>jy({...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 Ip(new ts(a,a==="Polygon"?ZC(n.flatCoordinates,n.ends,l):n.flatCoordinates,n.ends?.flat(),l,h.properties||{},h.id).enableSimplifyTransformed(),!1,e)}function Ep(h,e){if(!h)return null;if(Array.isArray(h)){let a=h.map(l=>Ep(l,e));return new zm(a)}let n=$C[h.type];return Ip(new n(h.flatCoordinates,h.layout,h.ends),!1,e)}var Uy=class extends $b{constructor(){super()}getType(){return"json"}readFeature(e,n){return this.readFeatureFromObject(Tp(e),this.getReadOptions(e,n))}readFeatures(e,n){return this.readFeaturesFromObject(Tp(e),this.getReadOptions(e,n))}readFeatureFromObject(e,n){return wt()}readFeaturesFromObject(e,n){return wt()}readGeometry(e,n){return this.readGeometryFromObject(Tp(e),this.getReadOptions(e,n))}readGeometryFromObject(e,n){return wt()}readProjection(e){return this.readProjectionFromObject(Tp(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 Tp(h){if(typeof h=="string"){let e=JSON.parse(h);return e||null}return h!==null?h:null}var Zb=Uy;var qy=class extends Zb{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=$y(a.geometry,n);if(this.featureClass===ts)return jy({geometry:l,id:a.id,properties:a.properties},n);let o=new es;return this.geometryName_?o.setGeometryName(this.geometryName_):this.extractGeometryName_&&a.geometry_name&&o.setGeometryName(a.geometry_name),o.setGeometry(Ep(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 HC(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=Wy(_,n),delete o[e.getGeometryName()]),On(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 Wy(e,this.adaptOptions(n))}};function $y(h,e){if(!h)return null;let n;switch(h.type){case"Point":{n=YC(h);break}case"LineString":{n=KC(h);break}case"Polygon":{n=tI(h);break}case"MultiPoint":{n=QC(h);break}case"MultiLineString":{n=JC(h);break}case"MultiPolygon":{n=eI(h);break}case"GeometryCollection":{n=XC(h);break}default:throw new Error("Unsupported GeoJSON type: "+h.type)}return n}function HC(h,e){let n=$y(h,e);return Ep(n,e)}function XC(h,e){return h.geometries.map(function(a){return $y(a,e)})}function YC(h){let e=h.coordinates;return{type:"Point",flatCoordinates:e,layout:ia(e.length)}}function KC(h){let e=h.coordinates,n=e.flat();return{type:"LineString",flatCoordinates:n,ends:[n.length],layout:ia(e[0]?.length||2)}}function JC(h){let e=h.coordinates,n=e[0]?.[0]?.length||2,a=[],l=ra(a,0,e,n);return{type:"MultiLineString",flatCoordinates:a,ends:l,layout:ia(n)}}function QC(h){let e=h.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:ia(e[0]?.length||2)}}function eI(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.[0].length||2,l=Kd(n,0,e,a);return{type:"MultiPolygon",flatCoordinates:n,ends:l,layout:ia(a)}}function tI(h){let e=h.coordinates,n=[],a=e[0]?.[0]?.length,l=ra(n,0,e,a);return{type:"Polygon",flatCoordinates:n,ends:l,layout:ia(a)}}function Wy(h,e){h=Ip(h,!0,e);let n=h.getType(),a;switch(n){case"Point":{a=aI(h,e);break}case"LineString":{a=rI(h,e);break}case"Polygon":{a=lI(h,e);break}case"MultiPoint":{a=sI(h,e);break}case"MultiLineString":{a=nI(h,e);break}case"MultiPolygon":{a=oI(h,e);break}case"GeometryCollection":{a=iI(h,e);break}case"Circle":{a={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+n)}return a}function iI(h,e){return e=Object.assign({},e),delete e.featureProjection,{type:"GeometryCollection",geometries:h.getGeometriesArray().map(function(a){return Wy(a,e)})}}function rI(h,e){return{type:"LineString",coordinates:h.getCoordinates()}}function nI(h,e){return{type:"MultiLineString",coordinates:h.getCoordinates()}}function sI(h,e){return{type:"MultiPoint",coordinates:h.getCoordinates()}}function oI(h,e){let n;return e&&(n=e.rightHanded),{type:"MultiPolygon",coordinates:h.getCoordinates(n)}}function aI(h,e){return{type:"Point",coordinates:h.getCoordinates()}}function lI(h,e){let n;return e&&(n=e.rightHanded),{type:"Polygon",coordinates:h.getCoordinates(n)}}var mr=qy;var cI=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,Hb=/^([\d.]+),([\d.]+)$/,Xb=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,Mp="stop-fetch",Yb=h=>{let e=[];return h.forEach(n=>{let a=n.getGeometry()?.getCoordinates();a?.length&&e.push(...a)}),e},Zy=class h extends rc{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 Mh({...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[Mp]?.abort(),this.abortControllers[Mp]=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[Mp]);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[Mp])),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,k)=>{let F=k.get("trg");return C.find(q=>q[0]===F[0]&&q[1]===F[1])?C:[...C,F]},[]);this.segments=T.map(C=>{let k=this.segments.filter(q=>{let K=q.get("trg");return K[0]===C[0]&&K[1]===C[1]}),F=Yb(k);return new es({geometry:new ys(F)})})}let v=Yb(this.segments),w=new es({geometry:new ys(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 es;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||Xb.test(n)){let C,k;return this.useRawViaPoints?[,C,,k]=Xb.exec(n)||[]:[C,k]=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",k),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&&Hb.test(n)){let[C,k]=Hb.exec(n)||[];if(k&&C){let F=parseFloat(k),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]=cI.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:k}=C.features[0].geometry;return this.cacheStationData[n]=pr(k),o.set("viaPointTrack",T),o.setGeometry(new fr(pr(k))),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 _=dn(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 Vy({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 Nb(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&&kh(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(){}},Kb=Zy;var Hy=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 Ah(_),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()})}},Jb=Hy;var hI=()=>{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},Qb=hI;var Xy=class extends rc{constructor(e){let n=Qb();n.className=e?.className||"mbt-stop-finder";let a={element:n,...e||{}};super(a),this.controller=new Jb({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)}},e1=Xy;var o1=mo(Ap()),a1=mo(e_());function MI(h){return class extends h{constructor(...a){let l=a[0];super(l);this.options={};this.olListenersKeys=[];l.properties&&(console.warn("Deprecated. Don't use properties options. Pass the values directly in options object."),this.setProperties(l.properties)),this.olListenersKeys?.push(this.on("propertychange",o=>{o.key==="children"&&this.onChildrenChange(o.oldValue)})),this.options=l,this.children=l.children||[]}get children(){return this.get("children")||[]}set children(a){this.set("children",a||[])}get copyrights(){return console.warn("Deprecated. Use the source object to get the attributions"),this.get("copyrights")}set copyrights(a){console.warn("Deprecated. Use the source object to set the attributions");let l=a&&!Array.isArray(a)?[a]:a;this.set("copyrights",l||[])}get disabled(){return this.get("disabled")}set disabled(a){this.set("disabled",a)}get group(){return this.get("group")}get hitTolerance(){return console.warn("Deprecated. Pass the pixelTolerance when you request the features."),this.get("hitTolerance")||5}get key(){return this.get("key")||this.get("name")||Vt(this)}get map(){return this.getMapInternal()}get name(){return this.get("name")}get olLayer(){return console.warn("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This getter is only a redirect to the current 'this' object."),this}set olLayer(a){console.log("Deprecated property: mobility-toolbox-js/ol layers inherits now from ol/layer/Layer class. This setter has no effect.")}get parent(){return this.get("parent")}set parent(a){this.set("parent",a)}get visible(){return this.getVisible()}set visible(a){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.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 Ka(this)}}}var s1=MI;function AI(h){return class extends s1(h){}}var Hs=AI;var t_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},bu=class extends cc{getFeaturesAtCoordinate(e,n=5){if(!e)return[];let a=this.getLayer(),l=a.getMapInternal(),{mbMap:o}=a,_=l?.getView()?.getProjection()?.getCode()||"EPSG:3857",v=[];if(t_[_]||(t_[_]=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[C,k]=T;T=[[C-n,k-n],[C+n,k+n]]}v=o.queryRenderedFeatures(T,a.queryRenderedFeaturesOptions||{}).map(C=>{let k=t_[_].readFeature(C);return k&&k.set(aa,C),k})}}return v}prepareFrame(){return!0}renderFrame(e){let n=this.getLayer(),{map:a,mbMap:l}=n;if(!n||!a||!l)return null;let o=l.getCanvas(),{viewState:_}=e,v=n.getOpacity()||1;return o.style.opacity=`${v}`,l.jumpTo({center:Qa(_.center),zoom:_.zoom-1,bearing:Fx(-_.rotation)}),o.isConnected?(o.width!==e.size[0]||o.height!==e.size[1])&&l.resize():a.render(),l.redraw(),l.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(_=>{l(_,this.layer_,_.getGeometry())}),o?.[0]}};var i_=class h extends Hs(vs){get apiKey(){return this.get("apiKey")}set apiKey(e){this.set("apiKey",e)}get apiKeyName(){return this.get("apiKeyName")}set apiKeyName(e){this.set("apiKeyName",e)}get mbMap(){return console.warn("Deprecated. Use layer.maplibreMap."),this.maplibreMap}get queryRenderedFeaturesOptions(){return this.get("queryRenderedFeaturesOptions")}set queryRenderedFeaturesOptions(e){this.set("queryRenderedFeaturesOptions",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}constructor(e){super({source:new Po({attributions:()=>this.maplibreMap&&Ya(this.maplibreMap)||[]}),apiKeyName:"key",style:"travic_v2",url:"https://maps.geops.io",...e||{},mapOptions:{interactive:!1,trackResize:!1,attributionControl:!1,...e?.mapOptions||{}},queryRenderedFeaturesOptions:{...e?.queryRenderedFeaturesOptions||{}}})}attachToMap(e){super.attachToMap(e),this.loadMbMap();let n=(0,o1.default)(this.updateMaplibreMap.bind(this),150);this.olListenersKeys.push(this.on("propertychange",a=>{/(apiKey|apiKeyName|url|style)/.test(a.key)&&n()}))}detachFromMap(){this.maplibreMap&&(this.maplibreMap.triggerRepaint=()=>{},this.maplibreMap.remove(),this.maplibreMap=void 0),this.loaded=!1,super.detachFromMap()}loadMbMap(){if(this.loaded=!1,this.olListenersKeys.push(this.map?.on("change:target",this.loadMbMap.bind(this))),!this.map?.getTargetElement())return;if(!this.visible){this.olListenersKeys.push(this.once("change:visible",this.loadMbMap.bind(this)));return}let e=document.createElement("div");e.style.position="absolute",e.style.width="100%",e.style.height="100%",this.maplibreMap=this.createMap({style:this.getStyle(),container:e,...this.options?.mapOptions||{}}),this.maplibreMap.on("sourcedata",()=>{this.getSource()?.refresh()}),this.maplibreMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new xi("load"))})}getStyle(){return this.style&&typeof this.style=="object"&&this.style.name&&this.style.version?this.style:this.url.includes("style.json")?this.url:Ha(`${this.url}/styles/${this.style}/style.json`,{[this.apiKeyName]:this.apiKey}).toString()}createMap(e){return new a1.Map(e)}createRenderer(){return new bu(this)}updateMaplibreMap(){this.maplibreMap?.setStyle(this.getStyle(),{diff:!1})}clone(e){return new h({...this.options||{},...e||{}})}},l1=i_;var r_={"EPSG:3857":new mr({featureProjection:"EPSG:3857"})},wu=class extends cc{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(r_[_]||(r_[_]=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[k,F]=T;T=[[k-n,F-n],[k+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(k=>k.id),validate:!1}).map(k=>{let F=r_[_].readFeature(k);return F&&F.set(aa,k),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 n_=class h extends Hs(vs){constructor(n={}){n.mapboxLayer&&(console.warn("options.mapboxLayer is deprecated. Use options.maplibreLayer instead."),n.maplibreLayer=n.mapboxLayer,delete n.mapboxLayer);super({source:new Po({}),...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 wu(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.olListenersKeys.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.olListenersKeys.push(this.maplibreLayer.on("load",this.onLoad.bind(this)),this.on("change:visible",l=>{this.applyLayoutVisibility(l)}),this.on("propertychange",l=>{/(sources|layers|layersFilter|maplibreLayer|beforeId)/.test(l.key)&&(this.detachFromMap(),this.attachToMap(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(aa)||{};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})}},c1=n_;var l_=mo(Ap());var o_=mo(Ap()),a_=mo(f1());function ZI(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 Rh(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||[xs,xs,xs,xs,xs,xs,xs,xs,xs,sp,sp],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,a_.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,o_.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:k,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:k===!1?k:!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(),kh(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=Qh(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 k=Object.keys(this.trajectories);for(let F=k.length-1;F>=0;F-=1)this.purgeTrajectory(this.trajectories[k[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(([k,F])=>{T.push(`${k}=${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,a_.default)(this.renderTrajectoriesInternal,_,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,o_.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,_=dn([...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&&go(_,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 Rp=ZI;var HI=new Pr({zIndex:2,image:new wn({radius:5,fill:new Ar({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),XI=(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,[HI,new Pr({zIndex:3,image:new wn({radius:4,fill:new Ar({color:a})}),stroke:new er({color:a,width:4})})]},kp=XI;var YI=new Pr({zIndex:2,image:new wn({radius:5,fill:new Ar({color:"#000000"})}),stroke:new er({color:"#000000",width:6})}),KI=new Pr({zIndex:3,image:new wn({radius:4,fill:new Ar({color:"#a0a0a0"})}),stroke:new er({color:"#a0a0a0",width:4})}),JI=()=>[YI,KI],m1=JI;var g1=new wn({radius:6,fill:new Ar({color:[255,0,0,1]}),stroke:new er({color:[0,0,0,1],width:1})}),QI=new Pr({stroke:new er({color:[0,0,0,1],width:5})}),eE=new Pr({image:g1,stroke:new er({color:[255,0,0,1],width:3})}),tE=new Pr({image:g1,stroke:new er({color:[255,0,0,1],width:3,lineDash:[1,10]})}),iE=(h,e)=>{let n=h.get("minResolution"),a=h.get("maxResolution"),l=e<=n&&e>a;return n&&a&&!l?[]:h.get("mot")!=="foot"?[QI,eE]:[tE]},y1=iE;var rE=new mr,Su=class extends Cp{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(),k=C?.getPixelFromCoordinate(v),F=C?.getPixelFromCoordinate(l);k&&F&&(this.container.style.transform=mx(k[0]-F[0],k[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=dn([...e,...e],n*o),w=[],T=Object.values(a.trajectories||{});a.sort&&(T=T.sort(this.sort));let C=[];for(let k=0;k<T.length;k+=1){let F=T[k];if(F.properties.coordinate&&go(v,F.properties.coordinate)&&C.push(T[k]),C.length===_)break}return w=C.map(k=>rE.readFeature(k)),w}};var nE=new mr,c_=class h extends Rp(Hs(vs)){constructor(n){super({source:new Po({}),...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||kp)(a,l,this.styleOptions)}),this.renderState={center:[0,0],zoom:void 0,rotation:0},this.onZoomEndDebounced=(0,l_.default)(this.onZoomEnd,100),this.onMoveEndDebounced=(0,l_.default)(this.onMoveEnd,100)}createRenderer(){return new Su(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.olListenersKeys.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=nE.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})}},_1=c_;var h_=class h extends Hs(vs){constructor(e){super(e),console.warn("Layer is deprecated. Use an OpenLayers Layer instead.")}clone(e){return new h({...this.options||{},...e||{}})}},x1=h_;var sE=new mr,oE=(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=>sE.readFeatures(w)).catch(()=>[])},Cu={},aE=async(h,e,n=5)=>{Object.values(Cu).forEach(o=>{o?.abort()}),Cu={};let l=Ka(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);Cu[F]?.abort(),Cu[F]=new AbortController;let q=_?.getView()?.getResolution();return oE(T,{coordinate:h,resolution:q,projection:v,params:{info_format:"application/json",query_layers:T.getParams().layers}},Cu[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 k=_?.getFeaturesAtPixel(C,{layerFilter:F=>F===o,hitTolerance:o.get("hitTolerance")||n||5});return Promise.resolve({features:k,layer:o,coordinate:h})});return Promise.all(l)},v1=aE;var Bp={};im(Bp,{CopyrightControl:()=>b1,Layer:()=>Fp,RealtimeAPI:()=>Rh,RealtimeLayer:()=>B1,RealtimeModes:()=>Wi,RoutingAPI:()=>Mh,StopsAPI:()=>Ah,VECTOR_TILE_FEATURE_PROPERTY:()=>aa,compareDepartures:()=>eu,createCanvas:()=>_s,createRealtimeFilters:()=>lm,debounceDeparturesMessages:()=>Jm,debounceWebsocketMessages:()=>Ph,getCircleCanvas:()=>og,getDelayBgCanvas:()=>ng,getDelayTextCanvas:()=>sg,getHoursAndMinutes:()=>dx,getLayersAsFlatArray:()=>Ka,getMapGlCopyrights:()=>Ya,getMercatorResolution:()=>O1,getSourceCoordinates:()=>Op,getTextCanvas:()=>ag,getUTCDateString:()=>hx,getUTCTimeString:()=>ux,getUrlWithParams:()=>Ha,getVehiclePosition:()=>Jh,pad:()=>Fd,realtimeConfig:()=>ic,realtimeDefaultStyle:()=>sl,realtimeDelayStyle:()=>lg,realtimeSimpleStyle:()=>cg,removeDuplicate:()=>Xa,renderTrajectories:()=>Qh,sortAndFilterDepartures:()=>tu,sortByDelay:()=>cm});var lE=" | ",u_=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||lE,n=this.options?.customAttribution||Ya(this.map),a=(Array.isArray(n)?n:[n]).join(e);this.container.innerHTML!==a&&(this.content=a,this.container.innerHTML=this.content)}}},b1=u_;var Dp,cE=new Uint8Array(16);function d_(){if(!Dp&&(Dp=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Dp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Dp(cE)}var kr=[];for(let h=0;h<256;++h)kr.push((h+256).toString(16).slice(1));function w1(h,e=0){return kr[h[e+0]]+kr[h[e+1]]+kr[h[e+2]]+kr[h[e+3]]+"-"+kr[h[e+4]]+kr[h[e+5]]+"-"+kr[h[e+6]]+kr[h[e+7]]+"-"+kr[h[e+8]]+kr[h[e+9]]+"-"+kr[h[e+10]]+kr[h[e+11]]+kr[h[e+12]]+kr[h[e+13]]+kr[h[e+14]]+kr[h[e+15]]}var hE=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),p_={randomUUID:hE};function uE(h,e,n){if(p_.randomUUID&&!e&&!h)return p_.randomUUID();h=h||{};let a=h.random||(h.rng||d_)();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 w1(a)}var f_=uE;var S1=mo(e_()),m_=class extends S1.Evented{constructor(n={}){super();this.options={};this.type="custom";this.options=n,this.id=n.id||f_(),this.type="custom"}onAdd(n,a){this.map=n}onRemove(n,a){this.map=void 0}render(n){}},Fp=m_;var ir=63710088e-1,C1={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},a6={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 I1(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(!g_(h[0])||!g_(h[1]))throw new Error("coordinates must contain numbers");var a={type:"Point",coordinates:h};return I1(a,e,n)}function dE(h,e){e===void 0&&(e="kilometers");var n=C1[e];if(!n)throw new Error(e+" units is invalid");return h*n}function pE(h,e){e===void 0&&(e="kilometers");var n=C1[e];if(!n)throw new Error(e+" units is invalid");return h/n}function E1(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 zp(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 dE(pE(h,e),n)}function g_(h){return!isNaN(h)&&h!==null&&!Array.isArray(h)}function y_(h){return!!h&&h.constructor===Object}function Iu(h,e,n){if(h!==null)for(var a,l,o,_,v,w,T,C=0,k=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,k,H,ge,_e)===!1)return!1;k++,ge++;break;case"LineString":case"MultiPoint":for(a=0;a<w.length;a++){if(e(w[a],k,H,ge,_e)===!1)return!1;k++,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],k,H,ge,_e)===!1)return!1;k++}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],k,H,ge,_e)===!1)return!1;k++}_e++}ge++}break;case"GeometryCollection":for(a=0;a<_.geometries.length;a++)if(Iu(_.geometries[a],e,n)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function fE(h,e){e===void 0&&(e={});var n=0,a=0,l=0;return Iu(h,function(o){n+=o[0],a+=o[1],l++},!0),ga([n/l,a/l],e.properties)}var T1=fE;function Xs(h){if(!h)throw new Error("coord is required");if(!Array.isArray(h)){if(h.type==="Feature"&&h.geometry!==null&&h.geometry.type==="Point")return h.geometry.coordinates;if(h.type==="Point")return h.coordinates}if(Array.isArray(h)&&h.length>=2&&!Array.isArray(h[0])&&!Array.isArray(h[1]))return h;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function M1(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 mE(h,e,n){n===void 0&&(n={});var a;n.final?a=A1(Xs(e),Xs(h)):a=A1(Xs(h),Xs(e));var l=a>180?-(360-a):a;return l}function A1(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(E1(_)+360)%360}var P1=mE;function gE(h,e,n){n===void 0&&(n={});var a=Xs(h),l=Xs(e);l[0]+=l[0]-a[0]>180?-360:a[0]-l[0]>180?360:0;var o=yE(a,l),_=zp(o,"meters",n.units);return _}function yE(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),k=C*a;return k}var R1=gE;function _E(h,e,n,a){a===void 0&&(a={});var l=e<0,o=zp(Math.abs(e),a.units,"meters");l&&(o=-Math.abs(o));var _=Xs(h),v=xE(_,o,n);return v[0]+=v[0]-_[0]>180?-360:_[0]-v[0]>180?360:0,ga(v,a.properties)}function xE(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)),k=Math.abs(C)>1e-11?w/C:Math.cos(_),F=l*Math.sin(v)/k,q=o+F;return[(q*180/Math.PI+540)%360-180,T*180/Math.PI]}var k1=_E;function vE(h){if(!h)throw new Error("geojson is required");switch(h.type){case"Feature":return L1(h);case"FeatureCollection":return bE(h);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return __(h);default:throw new Error("unknown GeoJSON type")}}function L1(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=D1(h.properties),e.geometry=__(h.geometry),e}function D1(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]=D1(a):e[n]=a}),e}function bE(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 L1(n)}),e}function __(h){var e={type:h.type};return h.bbox&&(e.bbox=h.bbox),h.type==="GeometryCollection"?(e.geometries=h.geometries.map(function(n){return __(n)}),e):(e.coordinates=F1(h.coordinates),e)}function F1(h){var e=h;return typeof e[0]!="object"?e.slice():e.map(function(n){return F1(n)})}var z1=vE;function wE(h,e,n){if(n=n||{},!y_(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=T1(h)),(l===!1||l===void 0)&&(h=z1(h)),Iu(h,function(o){var _=P1(a,o),v=_+e,w=R1(a,o),T=M1(k1(a,w,v));o[0]=T[0],o[1]=T[1]})),h}var x_=wE;var SE=(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]]},Op=SE;var CE=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)},O1=CE;var IE=h=>Bh(h.toArray().flat(),"EPSG:4326","EPSG:3857"),v_=IE;var b_=class extends Rp(Fp){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=x_(ga([o.lng,o.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,w=x_(ga([_.lng,_.lat]),-this.map.getBearing(),{pivot:[l.lng,l.lat]}).geometry.coordinates,T=[...pr(v),...pr(w)],C=vi(T)/(n/this.pixelRatio),k=dr(T)/(a/this.pixelRatio),F=Math.max(C,k),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||v_(this.map.getBounds()),a||Math.floor(this.map.getZoom()-1))}setBbox(e,n){super.setBbox(e||v_(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=Op(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()}},B1=b_;var w_={ol:Lp,maplibre:Bp};typeof window<"u"&&(window.mbt=w_);var dN=w_;})();
|
|
586
586
|
/*! Bundled license information:
|
|
587
587
|
|
|
588
588
|
maplibre-gl/dist/maplibre-gl.js:
|