mobility-toolbox-js 2.0.0-beta.80 → 2.0.0-beta.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/mbt.min.js CHANGED
@@ -1080,5 +1080,5 @@ uniform ${se} ${fe} u_${xe};
1080
1080
  `||q===V){l=Math.max(l,M),a.push(M),M=0,z+=D;continue}let pe=i[q+1]||v.font,Ie=xg(pe,de);u.push(Ie),M+=Ie;let Ne=f2(pe);m.push(Ne),D=Math.max(D,Ne)}return{width:l,height:z,widths:u,heights:m,lineWidths:a}}function p1(v,i,u,m,a,l,M,z,D,q,V){v.save(),u!==1&&(v.globalAlpha*=u),i&&v.setTransform.apply(v,i),m.contextInstructions?(v.translate(D,q),v.scale(V[0],V[1]),m2(m,v)):V[0]<0||V[1]<0?(v.translate(D,q),v.scale(V[0],V[1]),v.drawImage(m,a,l,M,z,0,0,M,z)):v.drawImage(m,a,l,M,z,D,q,M*V[0],z*V[1]),v.restore()}function m2(v,i){let u=v.contextInstructions;for(let m=0,a=u.length;m<a;m+=2)Array.isArray(u[m+1])?i[u[m]].apply(i,u[m+1]):i[u[m]]=u[m+1]}var Ef=class extends _g{constructor(i){let u=i.rotateWithView!==void 0?i.rotateWithView:!1;super({opacity:1,rotateWithView:u,rotation:i.rotation!==void 0?i.rotation:0,scale:i.scale!==void 0?i.scale:1,displacement:i.displacement!==void 0?i.displacement:[0,0],declutterMode:i.declutterMode}),this.canvas_=void 0,this.hitDetectionCanvas_=null,this.fill_=i.fill!==void 0?i.fill:null,this.origin_=[0,0],this.points_=i.points,this.radius_=i.radius!==void 0?i.radius:i.radius1,this.radius2_=i.radius2,this.angle_=i.angle!==void 0?i.angle:0,this.stroke_=i.stroke!==void 0?i.stroke:null,this.size_=null,this.renderOptions_=null,this.render()}clone(){let i=this.getScale(),u=new Ef({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(i)?i.slice():i,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return u.setOpacity(this.getOpacity()),u}getAnchor(){let i=this.size_;if(!i)return null;let u=this.getDisplacement(),m=this.getScaleArray();return[i[0]/2-u[0]/m[0],i[1]/2+u[1]/m[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(i){this.fill_=i,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||this.createHitDetectionCanvas_(this.renderOptions_),this.hitDetectionCanvas_}getImage(i){let u=this.canvas_[i];if(!u){let m=this.renderOptions_,a=aa(m.size*i,m.size*i);this.draw_(m,a,i),u=a.canvas,this.canvas_[i]=u}return u}getPixelRatio(i){return i}getImageSize(){return this.size_}getImageState(){return Zn.LOADED}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(i){this.stroke_=i,this.render()}listenImageChange(i){}load(){}unlistenImageChange(i){}calculateLineJoinSize_(i,u,m){if(u===0||this.points_===1/0||i!=="bevel"&&i!=="miter")return u;let a=this.radius_,l=this.radius2_===void 0?a:this.radius2_;if(a<l){let ft=a;a=l,l=ft}let M=this.radius2_===void 0?this.points_:this.points_*2,z=2*Math.PI/M,D=l*Math.sin(z),q=Math.sqrt(l*l-D*D),V=a-q,de=Math.sqrt(D*D+V*V),pe=de/D;if(i==="miter"&&pe<=m)return pe*u;let Ie=u/2/pe,Ne=u/2*(V/de),we=Math.sqrt((a+Ie)*(a+Ie)+Ne*Ne)-a;if(this.radius2_===void 0||i==="bevel")return we*2;let Pe=a*Math.sin(z),et=Math.sqrt(a*a-Pe*Pe),ut=l-et,ct=Math.sqrt(Pe*Pe+ut*ut)/Pe;if(ct<=m){let ft=ct*u/2-l-a;return 2*Math.max(we,ft)}return we*2}createRenderOptions(){let i=Iu,u=0,m=null,a=0,l,M=0;this.stroke_&&(l=this.stroke_.getColor(),l===null&&(l=fc),l=Ts(l),M=this.stroke_.getWidth(),M===void 0&&(M=gc),m=this.stroke_.getLineDash(),a=this.stroke_.getLineDashOffset(),i=this.stroke_.getLineJoin(),i===void 0&&(i=Iu),u=this.stroke_.getMiterLimit(),u===void 0&&(u=dc));let z=this.calculateLineJoinSize_(i,M,u),D=Math.max(this.radius_,this.radius2_||0),q=Math.ceil(2*D+z);return{strokeStyle:l,strokeWidth:M,size:q,lineDash:m,lineDashOffset:a,lineJoin:i,miterLimit:u}}render(){this.renderOptions_=this.createRenderOptions();let i=this.renderOptions_.size;this.canvas_={},this.size_=[i,i]}draw_(i,u,m){if(u.scale(m,m),u.translate(i.size/2,i.size/2),this.createPath_(u),this.fill_){let a=this.fill_.getColor();a===null&&(a=Is),u.fillStyle=Ts(a),u.fill()}this.stroke_&&(u.strokeStyle=i.strokeStyle,u.lineWidth=i.strokeWidth,i.lineDash&&(u.setLineDash(i.lineDash),u.lineDashOffset=i.lineDashOffset),u.lineJoin=i.lineJoin,u.miterLimit=i.miterLimit,u.stroke())}createHitDetectionCanvas_(i){if(this.fill_){let u=this.fill_.getColor(),m=0;if(typeof u=="string"&&(u=Hh(u)),u===null?m=1:Array.isArray(u)&&(m=u.length===4?u[3]:1),m===0){let a=aa(i.size,i.size);this.hitDetectionCanvas_=a.canvas,this.drawHitDetectionCanvas_(i,a)}}this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.getImage(1))}createPath_(i){let u=this.points_,m=this.radius_;if(u===1/0)i.arc(0,0,m,0,2*Math.PI);else{let a=this.radius2_===void 0?m:this.radius2_;this.radius2_!==void 0&&(u*=2);let l=this.angle_-Math.PI/2,M=2*Math.PI/u;for(let z=0;z<u;z++){let D=l+z*M,q=z%2===0?m:a;i.lineTo(q*Math.cos(D),q*Math.sin(D))}i.closePath()}}drawHitDetectionCanvas_(i,u){u.translate(i.size/2,i.size/2),this.createPath_(u),u.fillStyle=Is,u.fill(),this.stroke_&&(u.strokeStyle=i.strokeStyle,u.lineWidth=i.strokeWidth,i.lineDash&&(u.setLineDash(i.lineDash),u.lineDashOffset=i.lineDashOffset),u.lineJoin=i.lineJoin,u.miterLimit=i.miterLimit,u.stroke())}},wg=Ef;var Tf=class extends wg{constructor(i){i=i||{radius:5},super({points:1/0,fill:i.fill,radius:i.radius,stroke:i.stroke,scale:i.scale!==void 0?i.scale:1,rotation:i.rotation!==void 0?i.rotation:0,rotateWithView:i.rotateWithView!==void 0?i.rotateWithView:!1,displacement:i.displacement!==void 0?i.displacement:[0,0],declutterMode:i.declutterMode})}clone(){let i=this.getScale(),u=new Tf({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(i)?i.slice():i,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return u.setOpacity(this.getOpacity()),u}setRadius(i){this.radius_=i,this.render()}},Cs=Tf;var Cu=class{constructor(i){i=i||{},this.geometry_=null,this.geometryFunction_=d1,i.geometry!==void 0&&this.setGeometry(i.geometry),this.fill_=i.fill!==void 0?i.fill:null,this.image_=i.image!==void 0?i.image:null,this.renderer_=i.renderer!==void 0?i.renderer:null,this.hitDetectionRenderer_=i.hitDetectionRenderer!==void 0?i.hitDetectionRenderer:null,this.stroke_=i.stroke!==void 0?i.stroke:null,this.text_=i.text!==void 0?i.text:null,this.zIndex_=i.zIndex}clone(){let i=this.getGeometry();return i&&typeof i=="object"&&(i=i.clone()),new Cu({geometry:i,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer(),stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(i){this.renderer_=i}setHitDetectionRenderer(i){this.hitDetectionRenderer_=i}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(i){this.fill_=i}getImage(){return this.image_}setImage(i){this.image_=i}getStroke(){return this.stroke_}setStroke(i){this.stroke_=i}getText(){return this.text_}setText(i){this.text_=i}getZIndex(){return this.zIndex_}setGeometry(i){typeof i=="function"?this.geometryFunction_=i:typeof i=="string"?this.geometryFunction_=function(u){return u.get(i)}:i?i!==void 0&&(this.geometryFunction_=function(){return i}):this.geometryFunction_=d1,this.geometry_=i}setZIndex(i){this.zIndex_=i}};function f1(v){let i;if(typeof v=="function")i=v;else{let u;Array.isArray(v)?u=v:(zr(typeof v.getZIndex=="function",41),u=[v]),i=function(){return u}}return i}var j_=null;function m1(v,i){if(!j_){let u=new ba({color:"rgba(255,255,255,0.4)"}),m=new Wo({color:"#3399CC",width:1.25});j_=[new Cu({image:new Cs({fill:u,stroke:m,radius:5}),fill:u,stroke:m})]}return j_}function g1(){let v={},i=[255,255,255,1],u=[0,153,255,1],m=3;return v.Polygon=[new Cu({fill:new ba({color:[255,255,255,.5]})})],v.MultiPolygon=v.Polygon,v.LineString=[new Cu({stroke:new Wo({color:i,width:m+2})}),new Cu({stroke:new Wo({color:u,width:m})})],v.MultiLineString=v.LineString,v.Circle=v.Polygon.concat(v.LineString),v.Point=[new Cu({image:new Cs({radius:m*2,fill:new ba({color:u}),stroke:new Wo({color:i,width:m/2})}),zIndex:1/0})],v.MultiPoint=v.Point,v.GeometryCollection=v.Polygon.concat(v.LineString,v.Point),v}function d1(v){return v.getGeometry()}var Fa=Cu;var g2="#333",If=class{constructor(i){i=i||{},this.font_=i.font,this.rotation_=i.rotation,this.rotateWithView_=i.rotateWithView,this.scale_=i.scale,this.scaleArray_=ld(i.scale!==void 0?i.scale:1),this.text_=i.text,this.textAlign_=i.textAlign,this.justify_=i.justify,this.repeat_=i.repeat,this.textBaseline_=i.textBaseline,this.fill_=i.fill!==void 0?i.fill:new ba({color:g2}),this.maxAngle_=i.maxAngle!==void 0?i.maxAngle:Math.PI/4,this.placement_=i.placement!==void 0?i.placement:"point",this.overflow_=!!i.overflow,this.stroke_=i.stroke!==void 0?i.stroke:null,this.offsetX_=i.offsetX!==void 0?i.offsetX:0,this.offsetY_=i.offsetY!==void 0?i.offsetY:0,this.backgroundFill_=i.backgroundFill?i.backgroundFill:null,this.backgroundStroke_=i.backgroundStroke?i.backgroundStroke:null,this.padding_=i.padding===void 0?null:i.padding}clone(){let i=this.getScale();return new If({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(i)?i.slice():i,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})}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_}setOverflow(i){this.overflow_=i}setFont(i){this.font_=i}setMaxAngle(i){this.maxAngle_=i}setOffsetX(i){this.offsetX_=i}setOffsetY(i){this.offsetY_=i}setPlacement(i){this.placement_=i}setRepeat(i){this.repeat_=i}setRotateWithView(i){this.rotateWithView_=i}setFill(i){this.fill_=i}setRotation(i){this.rotation_=i}setScale(i){this.scale_=i,this.scaleArray_=ld(i!==void 0?i:1)}setStroke(i){this.stroke_=i}setText(i){this.text_=i}setTextAlign(i){this.textAlign_=i}setJustify(i){this.justify_=i}setTextBaseline(i){this.textBaseline_=i}setBackgroundFill(i){this.backgroundFill_=i}setBackgroundStroke(i){this.backgroundStroke_=i}setPadding(i){this.padding_=i}},y1=If;var w1=Vp(Z_(),1);var W_=class{constructor(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}clear(){this.cache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let i=0;for(let u in this.cache_){let m=this.cache_[u];!(i++&3)&&!m.hasListener()&&(delete this.cache_[u],--this.cacheSize_)}}}get(i,u,m){let a=_1(i,u,m);return a in this.cache_?this.cache_[a]:null}set(i,u,m,a){let l=_1(i,u,m);this.cache_[l]=a,++this.cacheSize_}setSize(i){this.maxCacheSize_=i,this.expire()}};function _1(v,i,u){let m=u?vg(u):"null";return i+":"+v+":"+m}var X_=new W_;function v1(v,i,u){let m=v,a=!0,l=!1,M=!1,z=[jp(m,cn.LOAD,function(){M=!0,l||i()})];return m.src&&Ox?(l=!0,m.decode().then(function(){a&&i()}).catch(function(D){a&&(M?i():u())})):z.push(jp(m,cn.ERROR,u)),function(){a=!1,z.forEach(Po)}}var Cf=null,$_=class extends qm{constructor(i,u,m,a,l,M){super(),this.hitDetectionImage_=null,this.image_=i,this.crossOrigin_=a,this.canvas_={},this.color_=M,this.unlisten_=null,this.imageState_=l,this.size_=m,this.src_=u,this.tainted_}initializeImage_(){this.image_=new Image,this.crossOrigin_!==null&&(this.image_.crossOrigin=this.crossOrigin_)}isTainted_(){if(this.tainted_===void 0&&this.imageState_===Zn.LOADED){Cf||(Cf=aa(1,1,void 0,{willReadFrequently:!0})),Cf.drawImage(this.image_,0,0);try{Cf.getImageData(0,0,1,1),this.tainted_=!1}catch{Cf=null,this.tainted_=!0}}return this.tainted_===!0}dispatchChangeEvent_(){this.dispatchEvent(cn.CHANGE)}handleImageError_(){this.imageState_=Zn.ERROR,this.unlistenImage_(),this.dispatchChangeEvent_()}handleImageLoad_(){this.imageState_=Zn.LOADED,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()}getImage(i){return this.image_||this.initializeImage_(),this.replaceColor_(i),this.canvas_[i]?this.canvas_[i]:this.image_}getPixelRatio(i){return this.replaceColor_(i),this.canvas_[i]?i:1}getImageState(){return this.imageState_}getHitDetectionImage(){if(this.image_||this.initializeImage_(),!this.hitDetectionImage_)if(this.isTainted_()){let i=this.size_[0],u=this.size_[1],m=aa(i,u);m.fillRect(0,0,i,u),this.hitDetectionImage_=m.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_}getSize(){return this.size_}getSrc(){return this.src_}load(){if(this.imageState_===Zn.IDLE){this.image_||this.initializeImage_(),this.imageState_=Zn.LOADING;try{this.image_.src=this.src_}catch{this.handleImageError_()}this.unlisten_=v1(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}}replaceColor_(i){if(!this.color_||this.canvas_[i]||this.imageState_!==Zn.LOADED)return;let u=this.image_,m=document.createElement("canvas");m.width=Math.ceil(u.width*i),m.height=Math.ceil(u.height*i);let a=m.getContext("2d");a.scale(i,i),a.drawImage(u,0,0),a.globalCompositeOperation="multiply",a.fillStyle=vg(this.color_),a.fillRect(0,0,m.width/i,m.height/i),a.globalCompositeOperation="destination-in",a.drawImage(u,0,0),this.canvas_[i]=m}unlistenImage_(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}};function x1(v,i,u,m,a,l){let M=X_.get(i,m,l);return M||(M=new $_(v,i,u,m,a,l),X_.set(i,m,l,M)),M}var Af=class extends _g{constructor(i){i=i||{};let u=i.opacity!==void 0?i.opacity:1,m=i.rotation!==void 0?i.rotation:0,a=i.scale!==void 0?i.scale:1,l=i.rotateWithView!==void 0?i.rotateWithView:!1;super({opacity:u,rotation:m,scale:a,displacement:i.displacement!==void 0?i.displacement:[0,0],rotateWithView:l,declutterMode:i.declutterMode}),this.anchor_=i.anchor!==void 0?i.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=i.anchorOrigin!==void 0?i.anchorOrigin:"top-left",this.anchorXUnits_=i.anchorXUnits!==void 0?i.anchorXUnits:"fraction",this.anchorYUnits_=i.anchorYUnits!==void 0?i.anchorYUnits:"fraction",this.crossOrigin_=i.crossOrigin!==void 0?i.crossOrigin:null;let M=i.img!==void 0?i.img:null;this.imgSize_=i.imgSize;let z=i.src;zr(!(z!==void 0&&M),4),zr(!M||M&&this.imgSize_,5),(z===void 0||z.length===0)&&M&&(z=M.src||Tr(M)),zr(z!==void 0&&z.length>0,6),zr(!((i.width!==void 0||i.height!==void 0)&&i.scale!==void 0),69);let D=i.src!==void 0?Zn.IDLE:Zn.LOADED;if(this.color_=i.color!==void 0?Hh(i.color):null,this.iconImage_=x1(M,z,this.imgSize_!==void 0?this.imgSize_:null,this.crossOrigin_,D,this.color_),this.offset_=i.offset!==void 0?i.offset:[0,0],this.offsetOrigin_=i.offsetOrigin!==void 0?i.offsetOrigin:"top-left",this.origin_=null,this.size_=i.size!==void 0?i.size:null,this.width_=i.width,this.height_=i.height,this.width_!==void 0||this.height_!==void 0){let q=this.getImage(1),V=()=>{this.updateScaleFromWidthAndHeight(this.width_,this.height_)};q.width>0?this.updateScaleFromWidthAndHeight(this.width_,this.height_):q.addEventListener("load",V)}}clone(){let i=this.getScale();return i=Array.isArray(i)?i.slice():i,(this.width_!==void 0||this.height_!==void 0)&&(i=void 0),new Af({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_,imgSize:this.imgSize_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:i,size:this.size_!==null?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode(),width:this.width_,height:this.height_})}updateScaleFromWidthAndHeight(i,u){let m=this.getImage(1);i!==void 0&&u!==void 0?super.setScale([i/m.width,u/m.height]):i!==void 0?super.setScale([i/m.width,i/m.width]):u!==void 0?super.setScale([u/m.height,u/m.height]):super.setScale([1,1])}getAnchor(){let i=this.normalizedAnchor_;if(!i){i=this.anchor_;let a=this.getSize();if(this.anchorXUnits_=="fraction"||this.anchorYUnits_=="fraction"){if(!a)return null;i=this.anchor_.slice(),this.anchorXUnits_=="fraction"&&(i[0]*=a[0]),this.anchorYUnits_=="fraction"&&(i[1]*=a[1])}if(this.anchorOrigin_!="top-left"){if(!a)return null;i===this.anchor_&&(i=this.anchor_.slice()),(this.anchorOrigin_=="top-right"||this.anchorOrigin_=="bottom-right")&&(i[0]=-i[0]+a[0]),(this.anchorOrigin_=="bottom-left"||this.anchorOrigin_=="bottom-right")&&(i[1]=-i[1]+a[1])}this.normalizedAnchor_=i}let u=this.getDisplacement(),m=this.getScaleArray();return[i[0]-u[0]/m[0],i[1]+u[1]/m[1]]}setAnchor(i){this.anchor_=i,this.normalizedAnchor_=null}getColor(){return this.color_}getImage(i){return this.iconImage_.getImage(i)}getPixelRatio(i){return this.iconImage_.getPixelRatio(i)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let i=this.offset_;if(this.offsetOrigin_!="top-left"){let u=this.getSize(),m=this.iconImage_.getSize();if(!u||!m)return null;i=i.slice(),(this.offsetOrigin_=="top-right"||this.offsetOrigin_=="bottom-right")&&(i[0]=m[0]-u[0]-i[0]),(this.offsetOrigin_=="bottom-left"||this.offsetOrigin_=="bottom-right")&&(i[1]=m[1]-u[1]-i[1])}return this.origin_=i,this.origin_}getSrc(){return this.iconImage_.getSrc()}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){return this.width_}getHeight(){return this.height_}setWidth(i){this.width_=i,this.updateScaleFromWidthAndHeight(i,this.height_)}setHeight(i){this.height_=i,this.updateScaleFromWidthAndHeight(this.width_,i)}setScale(i){super.setScale(i);let u=this.getImage(1);if(u){let m=Array.isArray(i)?i[0]:i;m!==void 0&&(this.width_=m*u.width);let a=Array.isArray(i)?i[1]:i;a!==void 0&&(this.height_=a*u.height)}}listenImageChange(i){this.iconImage_.addEventListener(cn.CHANGE,i)}load(){this.iconImage_.load()}unlistenImageChange(i){this.iconImage_.removeEventListener(cn.CHANGE,i)}},Mf=Af;function K_(v){return new Fa({fill:Pf(v,""),stroke:kf(v,""),text:y2(v),image:_2(v)})}function Pf(v,i){let u=v[i+"fill-color"];if(u)return new ba({color:u})}function kf(v,i){let u=v[i+"stroke-width"],m=v[i+"stroke-color"];if(!(!u&&!m))return new Wo({width:u,color:m,lineCap:v[i+"stroke-line-cap"],lineJoin:v[i+"stroke-line-join"],lineDash:v[i+"stroke-line-dash"],lineDashOffset:v[i+"stroke-line-dash-offset"],miterLimit:v[i+"stroke-miter-limit"]})}function y2(v){let i=v["text-value"];return i?new y1({text:i,font:v["text-font"],maxAngle:v["text-max-angle"],offsetX:v["text-offset-x"],offsetY:v["text-offset-y"],overflow:v["text-overflow"],placement:v["text-placement"],repeat:v["text-repeat"],scale:v["text-scale"],rotateWithView:v["text-rotate-with-view"],rotation:v["text-rotation"],textAlign:v["text-align"],justify:v["text-justify"],textBaseline:v["text-baseline"],padding:v["text-padding"],fill:Pf(v,"text-"),backgroundFill:Pf(v,"text-background-"),stroke:kf(v,"text-"),backgroundStroke:kf(v,"text-background-")}):void 0}function _2(v){let i=v["icon-src"],u=v["icon-img"];if(i||u)return new Mf({src:i,img:u,imgSize:v["icon-img-size"],anchor:v["icon-anchor"],anchorOrigin:v["icon-anchor-origin"],anchorXUnits:v["icon-anchor-x-units"],anchorYUnits:v["icon-anchor-y-units"],color:v["icon-color"],crossOrigin:v["icon-cross-origin"],offset:v["icon-offset"],displacement:v["icon-displacement"],opacity:v["icon-opacity"],scale:v["icon-scale"],rotation:v["icon-rotation"],rotateWithView:v["icon-rotate-with-view"],size:v["icon-size"],declutterMode:v["icon-declutter-mode"]});let m=v["shape-points"];if(m){let l="shape-";return new wg({points:m,fill:Pf(v,l),stroke:kf(v,l),radius:v["shape-radius"],radius1:v["shape-radius1"],radius2:v["shape-radius2"],angle:v["shape-angle"],displacement:v["shape-displacement"],rotation:v["shape-rotation"],rotateWithView:v["shape-rotate-with-view"],scale:v["shape-scale"],declutterMode:v["shape-declutter-mode"]})}let a=v["circle-radius"];if(a){let l="circle-";return new Cs({radius:a,fill:Pf(v,l),stroke:kf(v,l),displacement:v["circle-displacement"],scale:v["circle-scale"],rotation:v["circle-rotation"],rotateWithView:v["circle-rotate-with-view"],declutterMode:v["circle-declutter-mode"]})}}var b1={RENDER_ORDER:"renderOrder"},H_=class extends Kh{constructor(i){i=i||{};let u=Object.assign({},i);delete u.style,delete u.renderBuffer,delete u.updateWhileAnimating,delete u.updateWhileInteracting,super(u),this.declutter_=i.declutter!==void 0?i.declutter:!1,this.renderBuffer_=i.renderBuffer!==void 0?i.renderBuffer:100,this.style_=null,this.styleFunction_=void 0,this.setStyle(i.style),this.updateWhileAnimating_=i.updateWhileAnimating!==void 0?i.updateWhileAnimating:!1,this.updateWhileInteracting_=i.updateWhileInteracting!==void 0?i.updateWhileInteracting:!1}getDeclutter(){return this.declutter_}getFeatures(i){return super.getFeatures(i)}getRenderBuffer(){return this.renderBuffer_}getRenderOrder(){return this.get(b1.RENDER_ORDER)}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(i){i.declutterTree||(i.declutterTree=new w1.default(9)),this.getRenderer().renderDeclutter(i)}setRenderOrder(i){this.set(b1.RENDER_ORDER,i)}setStyle(i){let u;if(i===void 0)u=m1;else if(i===null)u=null;else if(typeof i=="function")u=i;else if(i instanceof Fa)u=i;else if(Array.isArray(i)){let m=i.length,a=new Array(m);for(let l=0;l<m;++l){let M=i[l];M instanceof Fa?a[l]=M:a[l]=K_(M)}u=a}else u=K_(i);this.style_=u,this.styleFunction_=i===null?void 0:f1(this.style_),this.changed()}},S1=H_;var Rf={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},Lf=[Rf.FILL],Au=[Rf.STROKE],yc=[Rf.BEGIN_PATH],Y_=[Rf.CLOSE_PATH],ji=Rf;var J_=class{drawCustom(i,u,m,a){}drawGeometry(i){}setStyle(i){}drawCircle(i,u){}drawFeature(i,u){}drawGeometryCollection(i,u){}drawLineString(i,u){}drawMultiLineString(i,u){}drawMultiPoint(i,u){}drawMultiPolygon(i,u){}drawPoint(i,u){}drawPolygon(i,u){}drawText(i,u){}setFillStrokeStyle(i,u){}setImageStyle(i,u){}setTextStyle(i,u){}},Sg=J_;var Q_=class extends Sg{constructor(i,u,m,a){super(),this.tolerance=i,this.maxExtent=u,this.pixelRatio=a,this.maxLineWidth=0,this.resolution=m,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.tmpCoordinate_=[],this.hitDetectionInstructions=[],this.state={}}applyPixelRatio(i){let u=this.pixelRatio;return u==1?i:i.map(function(m){return m*u})}appendFlatPointCoordinates(i,u){let m=this.getBufferedMaxExtent(),a=this.tmpCoordinate_,l=this.coordinates,M=l.length;for(let z=0,D=i.length;z<D;z+=u)a[0]=i[z],a[1]=i[z+1],Ym(m,a)&&(l[M++]=a[0],l[M++]=a[1]);return M}appendFlatLineCoordinates(i,u,m,a,l,M){let z=this.coordinates,D=z.length,q=this.getBufferedMaxExtent();M&&(u+=a);let V=i[u],de=i[u+1],pe=this.tmpCoordinate_,Ie=!0,Ne,nt,we;for(Ne=u+a;Ne<m;Ne+=a)pe[0]=i[Ne],pe[1]=i[Ne+1],we=Hm(q,pe),we!==nt?(Ie&&(z[D++]=V,z[D++]=de,Ie=!1),z[D++]=pe[0],z[D++]=pe[1]):we===ko.INTERSECTING?(z[D++]=pe[0],z[D++]=pe[1],Ie=!1):Ie=!0,V=pe[0],de=pe[1],nt=we;return(l&&Ie||Ne===u+a)&&(z[D++]=V,z[D++]=de),D}drawCustomCoordinates_(i,u,m,a,l){for(let M=0,z=m.length;M<z;++M){let D=m[M],q=this.appendFlatLineCoordinates(i,u,D,a,!1,!1);l.push(q),u=D}return u}drawCustom(i,u,m,a){this.beginGeometry(i,u);let l=i.getType(),M=i.getStride(),z=this.coordinates.length,D,q,V,de,pe;switch(l){case"MultiPolygon":D=i.getOrientedFlatCoordinates(),de=[];let Ie=i.getEndss();pe=0;for(let Ne=0,nt=Ie.length;Ne<nt;++Ne){let we=[];pe=this.drawCustomCoordinates_(D,pe,Ie[Ne],M,we),de.push(we)}this.instructions.push([ji.CUSTOM,z,de,i,m,cf]),this.hitDetectionInstructions.push([ji.CUSTOM,z,de,i,a||m,cf]);break;case"Polygon":case"MultiLineString":V=[],D=l=="Polygon"?i.getOrientedFlatCoordinates():i.getFlatCoordinates(),pe=this.drawCustomCoordinates_(D,0,i.getEnds(),M,V),this.instructions.push([ji.CUSTOM,z,V,i,m,ch]),this.hitDetectionInstructions.push([ji.CUSTOM,z,V,i,a||m,ch]);break;case"LineString":case"Circle":D=i.getFlatCoordinates(),q=this.appendFlatLineCoordinates(D,0,D.length,M,!1,!1),this.instructions.push([ji.CUSTOM,z,q,i,m,bl]),this.hitDetectionInstructions.push([ji.CUSTOM,z,q,i,a||m,bl]);break;case"MultiPoint":D=i.getFlatCoordinates(),q=this.appendFlatPointCoordinates(D,M),q>z&&(this.instructions.push([ji.CUSTOM,z,q,i,m,bl]),this.hitDetectionInstructions.push([ji.CUSTOM,z,q,i,a||m,bl]));break;case"Point":D=i.getFlatCoordinates(),this.coordinates.push(D[0],D[1]),q=this.coordinates.length,this.instructions.push([ji.CUSTOM,z,q,i,m]),this.hitDetectionInstructions.push([ji.CUSTOM,z,q,i,a||m]);break;default:}this.endGeometry(u)}beginGeometry(i,u){this.beginGeometryInstruction1_=[ji.BEGIN_GEOMETRY,u,0,i],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[ji.BEGIN_GEOMETRY,u,0,i],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){let i=this.hitDetectionInstructions;i.reverse();let u,m=i.length,a,l,M=-1;for(u=0;u<m;++u)a=i[u],l=a[0],l==ji.END_GEOMETRY?M=u:l==ji.BEGIN_GEOMETRY&&(a[2]=u,Px(this.hitDetectionInstructions,M,u),M=-1)}setFillStrokeStyle(i,u){let m=this.state;if(i){let a=i.getColor();m.fillStyle=Ts(a||Is)}else m.fillStyle=void 0;if(u){let a=u.getColor();m.strokeStyle=Ts(a||fc);let l=u.getLineCap();m.lineCap=l!==void 0?l:Yh;let M=u.getLineDash();m.lineDash=M?M.slice():hc;let z=u.getLineDashOffset();m.lineDashOffset=z||pc;let D=u.getLineJoin();m.lineJoin=D!==void 0?D:Iu;let q=u.getWidth();m.lineWidth=q!==void 0?q:gc;let V=u.getMiterLimit();m.miterLimit=V!==void 0?V:dc,m.lineWidth>this.maxLineWidth&&(this.maxLineWidth=m.lineWidth,this.bufferedMaxExtent_=null)}else m.strokeStyle=void 0,m.lineCap=void 0,m.lineDash=null,m.lineDashOffset=void 0,m.lineJoin=void 0,m.lineWidth=void 0,m.miterLimit=void 0}createFill(i){let u=i.fillStyle,m=[ji.SET_FILL_STYLE,u];return typeof u!="string"&&m.push(!0),m}applyStroke(i){this.instructions.push(this.createStroke(i))}createStroke(i){return[ji.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth*this.pixelRatio,i.lineCap,i.lineJoin,i.miterLimit,this.applyPixelRatio(i.lineDash),i.lineDashOffset*this.pixelRatio]}updateFillStyle(i,u){let m=i.fillStyle;(typeof m!="string"||i.currentFillStyle!=m)&&(m!==void 0&&this.instructions.push(u.call(this,i)),i.currentFillStyle=m)}updateStrokeStyle(i,u){let m=i.strokeStyle,a=i.lineCap,l=i.lineDash,M=i.lineDashOffset,z=i.lineJoin,D=i.lineWidth,q=i.miterLimit;(i.currentStrokeStyle!=m||i.currentLineCap!=a||l!=i.currentLineDash&&!xs(i.currentLineDash,l)||i.currentLineDashOffset!=M||i.currentLineJoin!=z||i.currentLineWidth!=D||i.currentMiterLimit!=q)&&(m!==void 0&&u.call(this,i),i.currentStrokeStyle=m,i.currentLineCap=a,i.currentLineDash=l,i.currentLineDashOffset=M,i.currentLineJoin=z,i.currentLineWidth=D,i.currentMiterLimit=q)}endGeometry(i){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;let u=[ji.END_GEOMETRY,i];this.instructions.push(u),this.hitDetectionInstructions.push(u)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=Gx(this.maxExtent),this.maxLineWidth>0)){let i=this.resolution*(this.maxLineWidth+1)/2;_l(this.bufferedMaxExtent_,i,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}},Mu=Q_;var ev=class extends Mu{constructor(i,u,m,a){super(i,u,m,a),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(i,u){if(!this.image_)return;this.beginGeometry(i,u);let m=i.getFlatCoordinates(),a=i.getStride(),l=this.coordinates.length,M=this.appendFlatPointCoordinates(m,a);this.instructions.push([ji.DRAW_IMAGE,l,M,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([ji.DRAW_IMAGE,l,M,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(u)}drawMultiPoint(i,u){if(!this.image_)return;this.beginGeometry(i,u);let m=i.getFlatCoordinates(),a=i.getStride(),l=this.coordinates.length,M=this.appendFlatPointCoordinates(m,a);this.instructions.push([ji.DRAW_IMAGE,l,M,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([ji.DRAW_IMAGE,l,M,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(u)}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(i,u){let m=i.getAnchor(),a=i.getSize(),l=i.getOrigin();this.imagePixelRatio_=i.getPixelRatio(this.pixelRatio),this.anchorX_=m[0],this.anchorY_=m[1],this.hitDetectionImage_=i.getHitDetectionImage(),this.image_=i.getImage(this.pixelRatio),this.height_=a[1],this.opacity_=i.getOpacity(),this.originX_=l[0],this.originY_=l[1],this.rotateWithView_=i.getRotateWithView(),this.rotation_=i.getRotation(),this.scale_=i.getScaleArray(),this.width_=a[0],this.declutterMode_=i.getDeclutterMode(),this.declutterImageWithText_=u}},E1=ev;var tv=class extends Mu{constructor(i,u,m,a){super(i,u,m,a)}drawFlatCoordinates_(i,u,m,a){let l=this.coordinates.length,M=this.appendFlatLineCoordinates(i,u,m,a,!1,!1),z=[ji.MOVE_TO_LINE_TO,l,M];return this.instructions.push(z),this.hitDetectionInstructions.push(z),m}drawLineString(i,u){let m=this.state,a=m.strokeStyle,l=m.lineWidth;if(a===void 0||l===void 0)return;this.updateStrokeStyle(m,this.applyStroke),this.beginGeometry(i,u),this.hitDetectionInstructions.push([ji.SET_STROKE_STYLE,m.strokeStyle,m.lineWidth,m.lineCap,m.lineJoin,m.miterLimit,hc,pc],yc);let M=i.getFlatCoordinates(),z=i.getStride();this.drawFlatCoordinates_(M,0,M.length,z),this.hitDetectionInstructions.push(Au),this.endGeometry(u)}drawMultiLineString(i,u){let m=this.state,a=m.strokeStyle,l=m.lineWidth;if(a===void 0||l===void 0)return;this.updateStrokeStyle(m,this.applyStroke),this.beginGeometry(i,u),this.hitDetectionInstructions.push([ji.SET_STROKE_STYLE,m.strokeStyle,m.lineWidth,m.lineCap,m.lineJoin,m.miterLimit,m.lineDash,m.lineDashOffset],yc);let M=i.getEnds(),z=i.getFlatCoordinates(),D=i.getStride(),q=0;for(let V=0,de=M.length;V<de;++V)q=this.drawFlatCoordinates_(z,q,M[V],D);this.hitDetectionInstructions.push(Au),this.endGeometry(u)}finish(){let i=this.state;return i.lastStroke!=null&&i.lastStroke!=this.coordinates.length&&this.instructions.push(Au),this.reverseHitDetectionInstructions(),this.state=null,super.finish()}applyStroke(i){i.lastStroke!=null&&i.lastStroke!=this.coordinates.length&&(this.instructions.push(Au),i.lastStroke=this.coordinates.length),i.lastStroke=0,super.applyStroke(i),this.instructions.push(yc)}},T1=tv;var iv=class extends Mu{constructor(i,u,m,a){super(i,u,m,a)}drawFlatCoordinatess_(i,u,m,a){let l=this.state,M=l.fillStyle!==void 0,z=l.strokeStyle!==void 0,D=m.length;this.instructions.push(yc),this.hitDetectionInstructions.push(yc);for(let q=0;q<D;++q){let V=m[q],de=this.coordinates.length,pe=this.appendFlatLineCoordinates(i,u,V,a,!0,!z),Ie=[ji.MOVE_TO_LINE_TO,de,pe];this.instructions.push(Ie),this.hitDetectionInstructions.push(Ie),z&&(this.instructions.push(Y_),this.hitDetectionInstructions.push(Y_)),u=V}return M&&(this.instructions.push(Lf),this.hitDetectionInstructions.push(Lf)),z&&(this.instructions.push(Au),this.hitDetectionInstructions.push(Au)),u}drawCircle(i,u){let m=this.state,a=m.fillStyle,l=m.strokeStyle;if(a===void 0&&l===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(i,u),m.fillStyle!==void 0&&this.hitDetectionInstructions.push([ji.SET_FILL_STYLE,Is]),m.strokeStyle!==void 0&&this.hitDetectionInstructions.push([ji.SET_STROKE_STYLE,m.strokeStyle,m.lineWidth,m.lineCap,m.lineJoin,m.miterLimit,m.lineDash,m.lineDashOffset]);let M=i.getFlatCoordinates(),z=i.getStride(),D=this.coordinates.length;this.appendFlatLineCoordinates(M,0,M.length,z,!1,!1);let q=[ji.CIRCLE,D];this.instructions.push(yc,q),this.hitDetectionInstructions.push(yc,q),m.fillStyle!==void 0&&(this.instructions.push(Lf),this.hitDetectionInstructions.push(Lf)),m.strokeStyle!==void 0&&(this.instructions.push(Au),this.hitDetectionInstructions.push(Au)),this.endGeometry(u)}drawPolygon(i,u){let m=this.state,a=m.fillStyle,l=m.strokeStyle;if(a===void 0&&l===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(i,u),m.fillStyle!==void 0&&this.hitDetectionInstructions.push([ji.SET_FILL_STYLE,Is]),m.strokeStyle!==void 0&&this.hitDetectionInstructions.push([ji.SET_STROKE_STYLE,m.strokeStyle,m.lineWidth,m.lineCap,m.lineJoin,m.miterLimit,m.lineDash,m.lineDashOffset]);let M=i.getEnds(),z=i.getOrientedFlatCoordinates(),D=i.getStride();this.drawFlatCoordinatess_(z,0,M,D),this.endGeometry(u)}drawMultiPolygon(i,u){let m=this.state,a=m.fillStyle,l=m.strokeStyle;if(a===void 0&&l===void 0)return;this.setFillStrokeStyles_(),this.beginGeometry(i,u),m.fillStyle!==void 0&&this.hitDetectionInstructions.push([ji.SET_FILL_STYLE,Is]),m.strokeStyle!==void 0&&this.hitDetectionInstructions.push([ji.SET_STROKE_STYLE,m.strokeStyle,m.lineWidth,m.lineCap,m.lineJoin,m.miterLimit,m.lineDash,m.lineDashOffset]);let M=i.getEndss(),z=i.getOrientedFlatCoordinates(),D=i.getStride(),q=0;for(let V=0,de=M.length;V<de;++V)q=this.drawFlatCoordinatess_(z,q,M[V],D);this.endGeometry(u)}finish(){this.reverseHitDetectionInstructions(),this.state=null;let i=this.tolerance;if(i!==0){let u=this.coordinates;for(let m=0,a=u.length;m<a;++m)u[m]=uh(u[m],i)}return super.finish()}setFillStrokeStyles_(){let i=this.state;i.fillStyle!==void 0&&this.updateFillStyle(i,this.createFill),i.strokeStyle!==void 0&&this.updateStrokeStyle(i,this.applyStroke)}},rv=iv;function I1(v,i,u,m,a){let l=[],M=u,z=0,D=i.slice(u,2);for(;z<v&&M+a<m;){let[q,V]=D.slice(-2),de=i[M+a],pe=i[M+a+1],Ie=Math.sqrt((de-q)*(de-q)+(pe-V)*(pe-V));if(z+=Ie,z>=v){let Ne=(v-z+Ie)/Ie,nt=va(q,de,Ne),we=va(V,pe,Ne);D.push(nt,we),l.push(D),D=[nt,we],z==v&&(M+=a),z=0}else if(z<v)D.push(i[M+a],i[M+a+1]),M+=a;else{let Ne=Ie-z,nt=va(q,de,Ne/Ie),we=va(V,pe,Ne/Ie);D.push(nt,we),l.push(D),D=[nt,we],z=0,M+=a}}return z>0&&l.push(D),l}function C1(v,i,u,m,a){let l=u,M=u,z=0,D=0,q=u,V,de,pe,Ie,Ne,nt,we,Pe,et,ut;for(de=u;de<m;de+=a){let mt=i[de],ct=i[de+1];Ne!==void 0&&(et=mt-Ne,ut=ct-nt,Ie=Math.sqrt(et*et+ut*ut),we!==void 0&&(D+=pe,V=Math.acos((we*et+Pe*ut)/(pe*Ie)),V>v&&(D>z&&(z=D,l=q,M=de),D=0,q=de-a)),pe=Ie,we=et,Pe=ut),Ne=mt,nt=ct}return D+=Ie,D>z?[q,de]:[l,M]}var cd={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},nv=class extends Mu{constructor(i,u,m,a){super(i,u,m,a),this.labels_=null,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_="",this.fillKey_="",this.strokeKey_="",this.declutterImageWithText_=void 0}finish(){let i=super.finish();return i.textStates=this.textStates,i.fillStates=this.fillStates,i.strokeStates=this.strokeStates,i}drawText(i,u){let m=this.textFillState_,a=this.textStrokeState_,l=this.textState_;if(this.text_===""||!l||!m&&!a)return;let M=this.coordinates,z=M.length,D=i.getType(),q=null,V=i.getStride();if(l.placement==="line"&&(D=="LineString"||D=="MultiLineString"||D=="Polygon"||D=="MultiPolygon")){if(!uo(this.getBufferedMaxExtent(),i.getExtent()))return;let de;if(q=i.getFlatCoordinates(),D=="LineString")de=[q.length];else if(D=="MultiLineString")de=i.getEnds();else if(D=="Polygon")de=i.getEnds().slice(0,1);else if(D=="MultiPolygon"){let nt=i.getEndss();de=[];for(let we=0,Pe=nt.length;we<Pe;++we)de.push(nt[we][0])}this.beginGeometry(i,u);let pe=l.repeat,Ie=pe?void 0:l.textAlign,Ne=0;for(let nt=0,we=de.length;nt<we;++nt){let Pe;pe?Pe=I1(pe*this.resolution,q,Ne,de[nt],V):Pe=[q.slice(Ne,de[nt])];for(let et=0,ut=Pe.length;et<ut;++et){let mt=Pe[et],ct=0,ft=mt.length;if(Ie==null){let Mt=C1(l.maxAngle,mt,0,mt.length,2);ct=Mt[0],ft=Mt[1]}for(let Mt=ct;Mt<ft;Mt+=V)M.push(mt[Mt],mt[Mt+1]);let It=M.length;Ne=de[nt],this.drawChars_(z,It),z=It}}this.endGeometry(u)}else{let de=l.overflow?null:[];switch(D){case"Point":case"MultiPoint":q=i.getFlatCoordinates();break;case"LineString":q=i.getFlatMidpoint();break;case"Circle":q=i.getCenter();break;case"MultiLineString":q=i.getFlatMidpoints(),V=2;break;case"Polygon":q=i.getFlatInteriorPoint(),l.overflow||de.push(q[2]/this.resolution),V=3;break;case"MultiPolygon":let we=i.getFlatInteriorPoints();q=[];for(let Pe=0,et=we.length;Pe<et;Pe+=3)l.overflow||de.push(we[Pe+2]/this.resolution),q.push(we[Pe],we[Pe+1]);if(q.length===0)return;V=2;break;default:}let pe=this.appendFlatPointCoordinates(q,V);if(pe===z)return;if(de&&(pe-z)/2!==q.length/V){let we=z/2;de=de.filter((Pe,et)=>{let ut=M[(we+et)*2]===q[et*V]&&M[(we+et)*2+1]===q[et*V+1];return ut||--we,ut})}this.saveTextStates_(),(l.backgroundFill||l.backgroundStroke)&&(this.setFillStrokeStyle(l.backgroundFill,l.backgroundStroke),l.backgroundFill&&(this.updateFillStyle(this.state,this.createFill),this.hitDetectionInstructions.push(this.createFill(this.state))),l.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(i,u);let Ie=l.padding;if(Ie!=mc&&(l.scale[0]<0||l.scale[1]<0)){let we=l.padding[0],Pe=l.padding[1],et=l.padding[2],ut=l.padding[3];l.scale[0]<0&&(Pe=-Pe,ut=-ut),l.scale[1]<0&&(we=-we,et=-et),Ie=[we,Pe,et,ut]}let Ne=this.pixelRatio;this.instructions.push([ji.DRAW_IMAGE,z,pe,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,void 0,this.declutterImageWithText_,Ie==mc?mc:Ie.map(function(we){return we*Ne}),!!l.backgroundFill,!!l.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,de]);let nt=1/Ne;this.hitDetectionInstructions.push([ji.DRAW_IMAGE,z,pe,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[nt,nt],NaN,void 0,this.declutterImageWithText_,Ie,!!l.backgroundFill,!!l.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,de]),this.endGeometry(u)}}saveTextStates_(){let i=this.textStrokeState_,u=this.textState_,m=this.textFillState_,a=this.strokeKey_;i&&(a in this.strokeStates||(this.strokeStates[a]={strokeStyle:i.strokeStyle,lineCap:i.lineCap,lineDashOffset:i.lineDashOffset,lineWidth:i.lineWidth,lineJoin:i.lineJoin,miterLimit:i.miterLimit,lineDash:i.lineDash}));let l=this.textKey_;l in this.textStates||(this.textStates[l]={font:u.font,textAlign:u.textAlign||mh,justify:u.justify,textBaseline:u.textBaseline||Jh,scale:u.scale});let M=this.fillKey_;m&&(M in this.fillStates||(this.fillStates[M]={fillStyle:m.fillStyle}))}drawChars_(i,u){let m=this.textStrokeState_,a=this.textState_,l=this.strokeKey_,M=this.textKey_,z=this.fillKey_;this.saveTextStates_();let D=this.pixelRatio,q=cd[a.textBaseline],V=this.textOffsetY_*D,de=this.text_,pe=m?m.lineWidth*Math.abs(a.scale[0])/2:0;this.instructions.push([ji.DRAW_CHARS,i,u,q,a.overflow,z,a.maxAngle,D,V,l,pe*D,de,M,1]),this.hitDetectionInstructions.push([ji.DRAW_CHARS,i,u,q,a.overflow,z,a.maxAngle,1,V,l,pe,de,M,1/D])}setTextStyle(i,u){let m,a,l;if(!i)this.text_="";else{let M=i.getFill();M?(a=this.textFillState_,a||(a={},this.textFillState_=a),a.fillStyle=Ts(M.getColor()||Is)):(a=null,this.textFillState_=a);let z=i.getStroke();if(!z)l=null,this.textStrokeState_=l;else{l=this.textStrokeState_,l||(l={},this.textStrokeState_=l);let Ne=z.getLineDash(),nt=z.getLineDashOffset(),we=z.getWidth(),Pe=z.getMiterLimit();l.lineCap=z.getLineCap()||Yh,l.lineDash=Ne?Ne.slice():hc,l.lineDashOffset=nt===void 0?pc:nt,l.lineJoin=z.getLineJoin()||Iu,l.lineWidth=we===void 0?gc:we,l.miterLimit=Pe===void 0?dc:Pe,l.strokeStyle=Ts(z.getColor()||fc)}m=this.textState_;let D=i.getFont()||bg;u1(D);let q=i.getScaleArray();m.overflow=i.getOverflow(),m.font=D,m.maxAngle=i.getMaxAngle(),m.placement=i.getPlacement(),m.textAlign=i.getTextAlign(),m.repeat=i.getRepeat(),m.justify=i.getJustify(),m.textBaseline=i.getTextBaseline()||Jh,m.backgroundFill=i.getBackgroundFill(),m.backgroundStroke=i.getBackgroundStroke(),m.padding=i.getPadding()||mc,m.scale=q===void 0?[1,1]:q;let V=i.getOffsetX(),de=i.getOffsetY(),pe=i.getRotateWithView(),Ie=i.getRotation();this.text_=i.getText()||"",this.textOffsetX_=V===void 0?0:V,this.textOffsetY_=de===void 0?0:de,this.textRotateWithView_=pe===void 0?!1:pe,this.textRotation_=Ie===void 0?0:Ie,this.strokeKey_=l?(typeof l.strokeStyle=="string"?l.strokeStyle:Tr(l.strokeStyle))+l.lineCap+l.lineDashOffset+"|"+l.lineWidth+l.lineJoin+l.miterLimit+"["+l.lineDash.join()+"]":"",this.textKey_=m.font+m.scale+(m.textAlign||"?")+(m.repeat||"?")+(m.justify||"?")+(m.textBaseline||"?"),this.fillKey_=a?typeof a.fillStyle=="string"?a.fillStyle:"|"+Tr(a.fillStyle):""}this.declutterImageWithText_=u}},A1=nv;var v2={Circle:rv,Default:Mu,Image:E1,LineString:T1,Polygon:rv,Text:A1},ov=class{constructor(i,u,m,a){this.tolerance_=i,this.maxExtent_=u,this.pixelRatio_=a,this.resolution_=m,this.buildersByZIndex_={}}finish(){let i={};for(let u in this.buildersByZIndex_){i[u]=i[u]||{};let m=this.buildersByZIndex_[u];for(let a in m){let l=m[a].finish();i[u][a]=l}}return i}getBuilder(i,u){let m=i!==void 0?i.toString():"0",a=this.buildersByZIndex_[m];a===void 0&&(a={},this.buildersByZIndex_[m]=a);let l=a[u];if(l===void 0){let M=v2[u];l=new M(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),a[u]=l}return l}},av=ov;var sv=class extends Zm{constructor(i){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=i,this.declutterExecutorGroup=null}getFeatures(i){return Xi()}getData(i){return null}prepareFrame(i){return Xi()}renderFrame(i,u){return Xi()}loadedTileCallback(i,u,m){i[u]||(i[u]={}),i[u][m.tileCoord.toString()]=m}createLoadedTileFinder(i,u,m){return(a,l)=>{let M=this.loadedTileCallback.bind(this,m,a);return i.forEachLoadedTile(u,a,l,M)}}forEachFeatureAtCoordinate(i,u,m,a,l){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(i){i.target.getState()===Zn.LOADED&&this.renderIfReadyAndVisible()}loadImage(i){let u=i.getState();return u!=Zn.LOADED&&u!=Zn.ERROR&&i.addEventListener(cn.CHANGE,this.boundHandleImageChange_),u==Zn.IDLE&&(i.load(),u=i.getState()),u==Zn.LOADED}renderIfReadyAndVisible(){let i=this.getLayer();i&&i.getVisible()&&i.getSourceState()==="ready"&&i.changed()}disposeInternal(){delete this.layer_,super.disposeInternal()}},M1=sv;var lv=class extends nn{constructor(i,u,m,a){super(i),this.inversePixelTransform=u,this.frameState=m,this.context=a}},P1=lv;var cv=[],hd=null;function x2(){hd=aa(1,1,void 0,{willReadFrequently:!0})}var uv=class extends M1{constructor(i){super(i),this.container=null,this.renderedResolution,this.tempTransform=Da(),this.pixelTransform=Da(),this.inversePixelTransform=Da(),this.context=null,this.containerReused=!1,this.pixelContext_=null,this.frameState=null}getImageData(i,u,m){hd||x2(),hd.clearRect(0,0,1,1);let a;try{hd.drawImage(i,u,m,1,1,0,0,1,1),a=hd.getImageData(0,0,1,1).data}catch{return hd=null,null}return a}getBackground(i){let m=this.getLayer().getBackground();return typeof m=="function"&&(m=m(i.viewState.resolution)),m||void 0}useContainer(i,u,m){let a=this.getLayer().getClassName(),l,M;if(i&&i.className===a&&(!m||i&&i.style.backgroundColor&&xs(Hh(i.style.backgroundColor),Hh(m)))){let z=i.firstElementChild;z instanceof HTMLCanvasElement&&(M=z.getContext("2d"))}if(M&&M.canvas.style.transform===u?(this.container=i,this.context=M,this.containerReused=!0):this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1),!this.container){l=document.createElement("div"),l.className=a;let z=l.style;z.position="absolute",z.width="100%",z.height="100%",M=aa();let D=M.canvas;l.appendChild(D),z=D.style,z.position="absolute",z.left="0",z.transformOrigin="top left",this.container=l,this.context=M}!this.containerReused&&m&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=m)}clipUnrotated(i,u,m){let a=Uy(m),l=Vy(m),M=By(m),z=Oy(m);qo(u.coordinateToPixelTransform,a),qo(u.coordinateToPixelTransform,l),qo(u.coordinateToPixelTransform,M),qo(u.coordinateToPixelTransform,z);let D=this.inversePixelTransform;qo(D,a),qo(D,l),qo(D,M),qo(D,z),i.save(),i.beginPath(),i.moveTo(Math.round(a[0]),Math.round(a[1])),i.lineTo(Math.round(l[0]),Math.round(l[1])),i.lineTo(Math.round(M[0]),Math.round(M[1])),i.lineTo(Math.round(z[0]),Math.round(z[1])),i.clip()}dispatchRenderEvent_(i,u,m){let a=this.getLayer();if(a.hasListener(i)){let l=new P1(i,this.inversePixelTransform,m,u);a.dispatchEvent(l)}}preRender(i,u){this.frameState=u,this.dispatchRenderEvent_(vf.PRERENDER,i,u)}postRender(i,u){this.dispatchRenderEvent_(vf.POSTRENDER,i,u)}getRenderTransform(i,u,m,a,l,M,z){let D=l/2,q=M/2,V=a/u,de=-V,pe=-i[0]+z,Ie=-i[1];return Ys(this.tempTransform,D,q,V,de,-m,pe,Ie)}disposeInternal(){delete this.frameState,super.disposeInternal()}},k1=uv;function R1(v,i,u,m,a,l,M,z,D,q,V,de){let pe=v[i],Ie=v[i+1],Ne=0,nt=0,we=0,Pe=0;function et(){Ne=pe,nt=Ie,i+=m,pe=v[i],Ie=v[i+1],Pe+=we,we=Math.sqrt((pe-Ne)*(pe-Ne)+(Ie-nt)*(Ie-nt))}do et();while(i<u-m&&Pe+we<l);let ut=we===0?0:(l-Pe)/we,mt=va(Ne,pe,ut),ct=va(nt,Ie,ut),ft=i-m,It=Pe,Mt=l+z*D(q,a,V);for(;i<u-m&&Pe+we<Mt;)et();ut=we===0?0:(Mt-Pe)/we;let zt=va(Ne,pe,ut),Qt=va(nt,Ie,ut),Vt;if(de){let Jt=[mt,ct,zt,Qt];og(Jt,0,4,2,de,Jt,Jt),Vt=Jt[0]>Jt[2]}else Vt=mt>zt;let mi=Math.PI,Ii=[],$t=ft+m===i;i=ft,we=0,Pe=It,pe=v[i],Ie=v[i+1];let ci;if($t){et(),ci=Math.atan2(Ie-nt,pe-Ne),Vt&&(ci+=ci>0?-mi:mi);let Jt=(zt+mt)/2,Ei=(Qt+ct)/2;return Ii[0]=[Jt,Ei,(Mt-l)/2,ci,a],Ii}a=a.replace(/\n/g," ");for(let Jt=0,Ei=a.length;Jt<Ei;){et();let ni=Math.atan2(Ie-nt,pe-Ne);if(Vt&&(ni+=ni>0?-mi:mi),ci!==void 0){let Gr=ni-ci;if(Gr+=Gr>mi?-2*mi:Gr<-mi?2*mi:0,Math.abs(Gr)>M)return null}ci=ni;let Ui=Jt,Bi=0;for(;Jt<Ei;++Jt){let Gr=Vt?Ei-Jt-1:Jt,or=z*D(q,a[Gr],V);if(i+m<u&&Pe+we<l+Bi+or/2)break;Bi+=or}if(Jt===Ui)continue;let jr=Vt?a.substring(Ei-Ui,Ei-Jt):a.substring(Ui,Jt);ut=we===0?0:(l+Bi/2-Pe)/we;let Ht=va(Ne,pe,ut),Br=va(nt,Ie,ut);Ii.push([Ht,Br,Bi/2,ni,jr]),l+=Bi}return Ii}var pd=Qa(),gh=[],_c=[],vc=[],yh=[];function L1(v){return v[3].declutterBox}var b2=new RegExp("["+String.fromCharCode(1425)+"-"+String.fromCharCode(2303)+String.fromCharCode(64285)+"-"+String.fromCharCode(65023)+String.fromCharCode(65136)+"-"+String.fromCharCode(65276)+String.fromCharCode(67584)+"-"+String.fromCharCode(69631)+String.fromCharCode(124928)+"-"+String.fromCharCode(126975)+"]");function z1(v,i){return(i==="start"||i==="end")&&!b2.test(v)&&(i=i==="start"?"left":"right"),cd[i]}function w2(v,i,u){return u>0&&v.push(`
1081
1081
  `,""),v.push(i,""),v}var hv=class{constructor(i,u,m,a){this.overlaps=m,this.pixelRatio=u,this.resolution=i,this.alignFill_,this.instructions=a.instructions,this.coordinates=a.coordinates,this.coordinateCache_={},this.renderedTransform_=Da(),this.hitDetectionInstructions=a.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=a.fillStates||{},this.strokeStates=a.strokeStates||{},this.textStates=a.textStates||{},this.widths_={},this.labels_={}}createLabel(i,u,m,a){let l=i+u+m+a;if(this.labels_[l])return this.labels_[l];let M=a?this.strokeStates[a]:null,z=m?this.fillStates[m]:null,D=this.textStates[u],q=this.pixelRatio,V=[D.scale[0]*q,D.scale[1]*q],de=Array.isArray(i),pe=D.justify?cd[D.justify]:z1(Array.isArray(i)?i[0]:i,D.textAlign||mh),Ie=a&&M.lineWidth?M.lineWidth:0,Ne=de?i:i.split(`
1082
1082
  `).reduce(w2,[]),{width:nt,height:we,widths:Pe,heights:et,lineWidths:ut}=h1(D,Ne),mt=nt+Ie,ct=[],ft=(mt+2)*V[0],It=(we+Ie)*V[1],Mt={width:ft<0?Math.floor(ft):Math.ceil(ft),height:It<0?Math.floor(It):Math.ceil(It),contextInstructions:ct};(V[0]!=1||V[1]!=1)&&ct.push("scale",V),a&&(ct.push("strokeStyle",M.strokeStyle),ct.push("lineWidth",Ie),ct.push("lineCap",M.lineCap),ct.push("lineJoin",M.lineJoin),ct.push("miterLimit",M.miterLimit),ct.push("setLineDash",[M.lineDash]),ct.push("lineDashOffset",M.lineDashOffset)),m&&ct.push("fillStyle",z.fillStyle),ct.push("textBaseline","middle"),ct.push("textAlign","center");let zt=.5-pe,Qt=pe*mt+zt*Ie,Vt=[],mi=[],Ii=0,$t=0,ci=0,Jt=0,Ei;for(let ni=0,Ui=Ne.length;ni<Ui;ni+=2){let Bi=Ne[ni];if(Bi===`
1083
- `){$t+=Ii,Ii=0,Qt=pe*mt+zt*Ie,++Jt;continue}let jr=Ne[ni+1]||D.font;jr!==Ei&&(a&&Vt.push("font",jr),m&&mi.push("font",jr),Ei=jr),Ii=Math.max(Ii,et[ci]);let Ht=[Bi,Qt+zt*Pe[ci]+pe*(Pe[ci]-ut[Jt]),.5*(Ie+Ii)+$t];Qt+=Pe[ci],a&&Vt.push("strokeText",Ht),m&&mi.push("fillText",Ht),++ci}return Array.prototype.push.apply(ct,Vt),Array.prototype.push.apply(ct,mi),this.labels_[l]=Mt,Mt}replayTextBackground_(i,u,m,a,l,M,z){i.beginPath(),i.moveTo.apply(i,u),i.lineTo.apply(i,m),i.lineTo.apply(i,a),i.lineTo.apply(i,l),i.lineTo.apply(i,u),M&&(this.alignFill_=M[2],this.fill_(i)),z&&(this.setStrokeStyle_(i,z),i.stroke())}calculateImageOrLabelDimensions_(i,u,m,a,l,M,z,D,q,V,de,pe,Ie,Ne,nt,we){z*=pe[0],D*=pe[1];let Pe=m-z,et=a-D,ut=l+q>i?i-q:l,mt=M+V>u?u-V:M,ct=Ne[3]+ut*pe[0]+Ne[1],ft=Ne[0]+mt*pe[1]+Ne[2],It=Pe-Ne[3],Mt=et-Ne[0];(nt||de!==0)&&(gh[0]=It,yh[0]=It,gh[1]=Mt,_c[1]=Mt,_c[0]=It+ct,vc[0]=_c[0],vc[1]=Mt+ft,yh[1]=vc[1]);let zt;return de!==0?(zt=Ys(Da(),m,a,1,1,de,-m,-a),qo(zt,gh),qo(zt,_c),qo(zt,vc),qo(zt,yh),uc(Math.min(gh[0],_c[0],vc[0],yh[0]),Math.min(gh[1],_c[1],vc[1],yh[1]),Math.max(gh[0],_c[0],vc[0],yh[0]),Math.max(gh[1],_c[1],vc[1],yh[1]),pd)):uc(Math.min(It,It+ct),Math.min(Mt,Mt+ft),Math.max(It,It+ct),Math.max(Mt,Mt+ft),pd),Ie&&(Pe=Math.round(Pe),et=Math.round(et)),{drawImageX:Pe,drawImageY:et,drawImageW:ut,drawImageH:mt,originX:q,originY:V,declutterBox:{minX:pd[0],minY:pd[1],maxX:pd[2],maxY:pd[3],value:we},canvasTransform:zt,scale:pe}}replayImageOrLabel_(i,u,m,a,l,M,z){let D=!!(M||z),q=a.declutterBox,V=i.canvas,de=z?z[2]*a.scale[0]/2:0;return q.minX-de<=V.width/u&&q.maxX+de>=0&&q.minY-de<=V.height/u&&q.maxY+de>=0&&(D&&this.replayTextBackground_(i,gh,_c,vc,yh,M,z),p1(i,a.canvasTransform,l,m,a.originX,a.originY,a.drawImageW,a.drawImageH,a.drawImageX,a.drawImageY,a.scale)),!0}fill_(i){if(this.alignFill_){let u=qo(this.renderedTransform_,[0,0]),m=512*this.pixelRatio;i.save(),i.translate(u[0]%m,u[1]%m),i.rotate(this.viewRotation_)}i.fill(),this.alignFill_&&i.restore()}setStrokeStyle_(i,u){i.strokeStyle=u[1],i.lineWidth=u[2],i.lineCap=u[3],i.lineJoin=u[4],i.miterLimit=u[5],i.lineDashOffset=u[7],i.setLineDash(u[6])}drawLabelWithPointPlacement_(i,u,m,a){let l=this.textStates[u],M=this.createLabel(i,u,a,m),z=this.strokeStates[m],D=this.pixelRatio,q=z1(Array.isArray(i)?i[0]:i,l.textAlign||mh),V=cd[l.textBaseline||Jh],de=z&&z.lineWidth?z.lineWidth:0,pe=M.width/D-2*l.scale[0],Ie=q*pe+2*(.5-q)*de,Ne=V*M.height/D+2*(.5-V)*de;return{label:M,anchorX:Ie,anchorY:Ne}}execute_(i,u,m,a,l,M,z,D){let q;this.pixelCoordinates_&&xs(m,this.renderedTransform_)?q=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),q=xl(this.coordinates,0,this.coordinates.length,2,m,this.pixelCoordinates_),Ux(this.renderedTransform_,m));let V=0,de=a.length,pe=0,Ie,Ne,nt,we,Pe,et,ut,mt,ct,ft,It,Mt,zt=0,Qt=0,Vt=null,mi=null,Ii=this.coordinateCache_,$t=this.viewRotation_,ci=Math.round(Math.atan2(-m[1],m[0])*1e12)/1e12,Jt={context:i,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:$t},Ei=this.instructions!=a||this.overlaps?0:200,ni,Ui,Bi,jr;for(;V<de;){let Ht=a[V];switch(Ht[0]){case ji.BEGIN_GEOMETRY:ni=Ht[1],jr=Ht[3],ni.getGeometry()?z!==void 0&&!uo(z,jr.getExtent())?V=Ht[2]+1:++V:V=Ht[2];break;case ji.BEGIN_PATH:zt>Ei&&(this.fill_(i),zt=0),Qt>Ei&&(i.stroke(),Qt=0),!zt&&!Qt&&(i.beginPath(),we=NaN,Pe=NaN),++V;break;case ji.CIRCLE:pe=Ht[1];let Gr=q[pe],or=q[pe+1],on=q[pe+2],Fi=q[pe+3],Cn=on-Gr,wo=Fi-or,qr=Math.sqrt(Cn*Cn+wo*wo);i.moveTo(Gr+qr,or),i.arc(Gr,or,qr,0,2*Math.PI,!0),++V;break;case ji.CLOSE_PATH:i.closePath(),++V;break;case ji.CUSTOM:pe=Ht[1],Ie=Ht[2];let Ai=Ht[3],ho=Ht[4],Ir=Ht.length==6?Ht[5]:void 0;Jt.geometry=Ai,Jt.feature=ni,V in Ii||(Ii[V]=[]);let pr=Ii[V];Ir?Ir(q,pe,Ie,2,pr):(pr[0]=q[pe],pr[1]=q[pe+1],pr.length=2),ho(pr,Jt),++V;break;case ji.DRAW_IMAGE:pe=Ht[1],Ie=Ht[2],mt=Ht[3],Ne=Ht[4],nt=Ht[5];let Wn=Ht[6],dn=Ht[7],qi=Ht[8],Zr=Ht[9],An=Ht[10],Ln=Ht[11],zn=Ht[12],Wr=Ht[13],Dn=Ht[14],hn=Ht[15];if(!mt&&Ht.length>=20){ct=Ht[19],ft=Ht[20],It=Ht[21],Mt=Ht[22];let ue=this.drawLabelWithPointPlacement_(ct,ft,It,Mt);mt=ue.label,Ht[3]=mt;let ge=Ht[23];Ne=(ue.anchorX-ge)*this.pixelRatio,Ht[4]=Ne;let Te=Ht[24];nt=(ue.anchorY-Te)*this.pixelRatio,Ht[5]=nt,Wn=mt.height,Ht[6]=Wn,Wr=mt.width,Ht[13]=Wr}let Qn;Ht.length>25&&(Qn=Ht[25]);let bt,jt,eo;Ht.length>17?(bt=Ht[16],jt=Ht[17],eo=Ht[18]):(bt=mc,jt=!1,eo=!1),An&&ci?Ln+=$t:!An&&!ci&&(Ln-=$t);let Fn=0;for(;pe<Ie;pe+=2){if(Qn&&Qn[Fn++]<Wr/this.pixelRatio)continue;let ue=this.calculateImageOrLabelDimensions_(mt.width,mt.height,q[pe],q[pe+1],Wr,Wn,Ne,nt,qi,Zr,Ln,zn,l,bt,jt||eo,ni),ge=[i,u,mt,ue,dn,jt?Vt:null,eo?mi:null];if(D){if(Dn==="none")continue;if(Dn==="obstacle"){D.insert(ue.declutterBox);continue}else{let Te,Re;if(hn){let Xe=Ie-pe;if(!hn[Xe]){hn[Xe]=ge;continue}if(Te=hn[Xe],delete hn[Xe],Re=L1(Te),D.collides(Re))continue}if(D.collides(ue.declutterBox))continue;Te&&(D.insert(Re),this.replayImageOrLabel_.apply(this,Te)),D.insert(ue.declutterBox)}}this.replayImageOrLabel_.apply(this,ge)}++V;break;case ji.DRAW_CHARS:let Hi=Ht[1],bn=Ht[2],fn=Ht[3],mn=Ht[4];Mt=Ht[5];let So=Ht[6],Gt=Ht[7],Vi=Ht[8];It=Ht[9];let Ri=Ht[10];ct=Ht[11],ft=Ht[12];let Ur=[Ht[13],Ht[13]],wn=this.textStates[ft],bi=wn.font,Sn=[wn.scale[0]*Gt,wn.scale[1]*Gt],Pr;bi in this.widths_?Pr=this.widths_[bi]:(Pr={},this.widths_[bi]=Pr);let _r=cg(q,Hi,bn,2),ie=Math.abs(Sn[0])*N_(bi,ct,Pr);if(mn||ie<=_r){let ue=this.textStates[ft].textAlign,ge=(_r-ie)*cd[ue],Te=R1(q,Hi,bn,2,ct,ge,So,Math.abs(Sn[0]),N_,bi,Pr,ci?0:this.viewRotation_);e:if(Te){let Re=[],Xe,Ye,Se,Oe,te;if(It)for(Xe=0,Ye=Te.length;Xe<Ye;++Xe){te=Te[Xe],Se=te[4],Oe=this.createLabel(Se,ft,"",It),Ne=te[2]+(Sn[0]<0?-Ri:Ri),nt=fn*Oe.height+(.5-fn)*2*Ri*Sn[1]/Sn[0]-Vi;let W=this.calculateImageOrLabelDimensions_(Oe.width,Oe.height,te[0],te[1],Oe.width,Oe.height,Ne,nt,0,0,te[3],Ur,!1,mc,!1,ni);if(D&&D.collides(W.declutterBox))break e;Re.push([i,u,Oe,W,1,null,null])}if(Mt)for(Xe=0,Ye=Te.length;Xe<Ye;++Xe){te=Te[Xe],Se=te[4],Oe=this.createLabel(Se,ft,Mt,""),Ne=te[2],nt=fn*Oe.height-Vi;let W=this.calculateImageOrLabelDimensions_(Oe.width,Oe.height,te[0],te[1],Oe.width,Oe.height,Ne,nt,0,0,te[3],Ur,!1,mc,!1,ni);if(D&&D.collides(W.declutterBox))break e;Re.push([i,u,Oe,W,1,null,null])}D&&D.load(Re.map(L1));for(let W=0,J=Re.length;W<J;++W)this.replayImageOrLabel_.apply(this,Re[W])}}++V;break;case ji.END_GEOMETRY:if(M!==void 0){ni=Ht[1];let ue=M(ni,jr);if(ue)return ue}++V;break;case ji.FILL:Ei?zt++:this.fill_(i),++V;break;case ji.MOVE_TO_LINE_TO:for(pe=Ht[1],Ie=Ht[2],Ui=q[pe],Bi=q[pe+1],et=Ui+.5|0,ut=Bi+.5|0,(et!==we||ut!==Pe)&&(i.moveTo(Ui,Bi),we=et,Pe=ut),pe+=2;pe<Ie;pe+=2)Ui=q[pe],Bi=q[pe+1],et=Ui+.5|0,ut=Bi+.5|0,(pe==Ie-2||et!==we||ut!==Pe)&&(i.lineTo(Ui,Bi),we=et,Pe=ut);++V;break;case ji.SET_FILL_STYLE:Vt=Ht,this.alignFill_=Ht[2],zt&&(this.fill_(i),zt=0,Qt&&(i.stroke(),Qt=0)),i.fillStyle=Ht[1],++V;break;case ji.SET_STROKE_STYLE:mi=Ht,Qt&&(i.stroke(),Qt=0),this.setStrokeStyle_(i,Ht),++V;break;case ji.STROKE:Ei?Qt++:i.stroke(),++V;break;default:++V;break}}zt&&this.fill_(i),Qt&&i.stroke()}execute(i,u,m,a,l,M){this.viewRotation_=a,this.execute_(i,u,m,this.instructions,l,void 0,void 0,M)}executeHitDetection(i,u,m,a,l){return this.viewRotation_=m,this.execute_(i,1,u,this.hitDetectionInstructions,!0,a,l)}},D1=hv;var pv=["Polygon","Circle","LineString","Image","Text","Default"],fv=class{constructor(i,u,m,a,l,M){this.maxExtent_=i,this.overlaps_=a,this.pixelRatio_=m,this.resolution_=u,this.renderBuffer_=M,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=Da(),this.createExecutors_(l)}clip(i,u){let m=this.getClipCoords(u);i.beginPath(),i.moveTo(m[0],m[1]),i.lineTo(m[2],m[3]),i.lineTo(m[4],m[5]),i.lineTo(m[6],m[7]),i.clip()}createExecutors_(i){for(let u in i){let m=this.executorsByZIndex_[u];m===void 0&&(m={},this.executorsByZIndex_[u]=m);let a=i[u];for(let l in a){let M=a[l];m[l]=new D1(this.resolution_,this.pixelRatio_,this.overlaps_,M)}}}hasExecutors(i){for(let u in this.executorsByZIndex_){let m=this.executorsByZIndex_[u];for(let a=0,l=i.length;a<l;++a)if(i[a]in m)return!0}return!1}forEachFeatureAtCoordinate(i,u,m,a,l,M){a=Math.round(a);let z=a*2+1,D=Ys(this.hitDetectionTransform_,a+.5,a+.5,1/u,-1/u,-m,-i[0],-i[1]),q=!this.hitDetectionContext_;q&&(this.hitDetectionContext_=aa(z,z,void 0,{willReadFrequently:!0}));let V=this.hitDetectionContext_;V.canvas.width!==z||V.canvas.height!==z?(V.canvas.width=z,V.canvas.height=z):q||V.clearRect(0,0,z,z);let de;this.renderBuffer_!==void 0&&(de=Qa(),Dy(de,i),_l(de,u*(this.renderBuffer_+a),de));let pe=S2(a),Ie;function Ne(ct,ft){let It=V.getImageData(0,0,z,z).data;for(let Mt=0,zt=pe.length;Mt<zt;Mt++)if(It[pe[Mt]]>0){if(!M||Ie!=="Image"&&Ie!=="Text"||M.includes(ct)){let Qt=(pe[Mt]-3)/4,Vt=a-Qt%z,mi=a-(Qt/z|0),Ii=l(ct,ft,Vt*Vt+mi*mi);if(Ii)return Ii}V.clearRect(0,0,z,z);break}}let nt=Object.keys(this.executorsByZIndex_).map(Number);nt.sort(rh);let we,Pe,et,ut,mt;for(we=nt.length-1;we>=0;--we){let ct=nt[we].toString();for(et=this.executorsByZIndex_[ct],Pe=pv.length-1;Pe>=0;--Pe)if(Ie=pv[Pe],ut=et[Ie],ut!==void 0&&(mt=ut.executeHitDetection(V,D,m,Ne,de),mt))return mt}}getClipCoords(i){let u=this.maxExtent_;if(!u)return null;let m=u[0],a=u[1],l=u[2],M=u[3],z=[m,a,m,M,l,M,l,a];return xl(z,0,8,2,i,z),z}isEmpty(){return Gl(this.executorsByZIndex_)}execute(i,u,m,a,l,M,z){let D=Object.keys(this.executorsByZIndex_).map(Number);D.sort(rh),this.maxExtent_&&(i.save(),this.clip(i,m)),M=M||pv;let q,V,de,pe,Ie,Ne;for(z&&D.reverse(),q=0,V=D.length;q<V;++q){let nt=D[q].toString();for(Ie=this.executorsByZIndex_[nt],de=0,pe=M.length;de<pe;++de){let we=M[de];Ne=Ie[we],Ne!==void 0&&Ne.execute(i,u,m,a,l,z)}}this.maxExtent_&&i.restore()}},dv={};function S2(v){if(dv[v]!==void 0)return dv[v];let i=v*2+1,u=v*v,m=new Array(u+1);for(let l=0;l<=v;++l)for(let M=0;M<=v;++M){let z=l*l+M*M;if(z>u)break;let D=m[z];D||(D=[],m[z]=D),D.push(((v+l)*i+(v+M))*4+3),l>0&&D.push(((v-l)*i+(v+M))*4+3),M>0&&(D.push(((v+l)*i+(v-M))*4+3),l>0&&D.push(((v-l)*i+(v-M))*4+3))}let a=[];for(let l=0,M=m.length;l<M;++l)m[l]&&a.push(...m[l]);return dv[v]=a,a}var mv=fv;var gv=class extends Sg{constructor(i,u,m,a,l,M,z){super(),this.context_=i,this.pixelRatio_=u,this.extent_=m,this.transform_=a,this.transformRotation_=a?l0(Math.atan2(a[1],a[0]),10):0,this.viewRotation_=l,this.squaredTolerance_=M,this.userTransform_=z,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_=Da()}drawImages_(i,u,m,a){if(!this.image_)return;let l=xl(i,u,m,a,this.transform_,this.pixelCoordinates_),M=this.context_,z=this.tmpLocalTransform_,D=M.globalAlpha;this.imageOpacity_!=1&&(M.globalAlpha=D*this.imageOpacity_);let q=this.imageRotation_;this.transformRotation_===0&&(q-=this.viewRotation_),this.imageRotateWithView_&&(q+=this.viewRotation_);for(let V=0,de=l.length;V<de;V+=2){let pe=l[V]-this.imageAnchorX_,Ie=l[V+1]-this.imageAnchorY_;if(q!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let Ne=pe+this.imageAnchorX_,nt=Ie+this.imageAnchorY_;Ys(z,Ne,nt,1,1,q,-Ne,-nt),M.setTransform.apply(M,z),M.translate(Ne,nt),M.scale(this.imageScale_[0],this.imageScale_[1]),M.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),M.setTransform(1,0,0,1,0,0)}else M.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,pe,Ie,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(M.globalAlpha=D)}drawText_(i,u,m,a){if(!this.textState_||this.text_==="")return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);let l=xl(i,u,m,a,this.transform_,this.pixelCoordinates_),M=this.context_,z=this.textRotation_;for(this.transformRotation_===0&&(z-=this.viewRotation_),this.textRotateWithView_&&(z+=this.viewRotation_);u<m;u+=a){let D=l[u]+this.textOffsetX_,q=l[u+1]+this.textOffsetY_;z!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(M.translate(D-this.textOffsetX_,q-this.textOffsetY_),M.rotate(z),M.translate(this.textOffsetX_,this.textOffsetY_),M.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&M.strokeText(this.text_,0,0),this.textFillState_&&M.fillText(this.text_,0,0),M.setTransform(1,0,0,1,0,0)):(this.textStrokeState_&&M.strokeText(this.text_,D,q),this.textFillState_&&M.fillText(this.text_,D,q))}}moveToLineTo_(i,u,m,a,l){let M=this.context_,z=xl(i,u,m,a,this.transform_,this.pixelCoordinates_);M.moveTo(z[0],z[1]);let D=z.length;l&&(D-=2);for(let q=2;q<D;q+=2)M.lineTo(z[q],z[q+1]);return l&&M.closePath(),m}drawRings_(i,u,m,a){for(let l=0,M=m.length;l<M;++l)u=this.moveToLineTo_(i,u,m[l],a,!0);return u}drawCircle(i){if(uo(this.extent_,i.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let u=S0(i,this.transform_,this.pixelCoordinates_),m=u[2]-u[0],a=u[3]-u[1],l=Math.sqrt(m*m+a*a),M=this.context_;M.beginPath(),M.arc(u[0],u[1],l,0,2*Math.PI),this.fillState_&&M.fill(),this.strokeState_&&M.stroke()}this.text_!==""&&this.drawText_(i.getCenter(),0,2,2)}}setStyle(i){this.setFillStrokeStyle(i.getFill(),i.getStroke()),this.setImageStyle(i.getImage()),this.setTextStyle(i.getText())}setTransform(i){this.transform_=i}drawGeometry(i){switch(i.getType()){case"Point":this.drawPoint(i);break;case"LineString":this.drawLineString(i);break;case"Polygon":this.drawPolygon(i);break;case"MultiPoint":this.drawMultiPoint(i);break;case"MultiLineString":this.drawMultiLineString(i);break;case"MultiPolygon":this.drawMultiPolygon(i);break;case"GeometryCollection":this.drawGeometryCollection(i);break;case"Circle":this.drawCircle(i);break;default:}}drawFeature(i,u){let m=u.getGeometryFunction()(i);!m||!uo(this.extent_,m.getExtent())||(this.setStyle(u),this.drawGeometry(m))}drawGeometryCollection(i){let u=i.getGeometriesArray();for(let m=0,a=u.length;m<a;++m)this.drawGeometry(u[m])}drawPoint(i){this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let u=i.getFlatCoordinates(),m=i.getStride();this.image_&&this.drawImages_(u,0,u.length,m),this.text_!==""&&this.drawText_(u,0,u.length,m)}drawMultiPoint(i){this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let u=i.getFlatCoordinates(),m=i.getStride();this.image_&&this.drawImages_(u,0,u.length,m),this.text_!==""&&this.drawText_(u,0,u.length,m)}drawLineString(i){if(this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!uo(this.extent_,i.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let u=this.context_,m=i.getFlatCoordinates();u.beginPath(),this.moveToLineTo_(m,0,m.length,i.getStride(),!1),u.stroke()}if(this.text_!==""){let u=i.getFlatMidpoint();this.drawText_(u,0,2,2)}}}drawMultiLineString(i){this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let u=i.getExtent();if(uo(this.extent_,u)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let m=this.context_,a=i.getFlatCoordinates(),l=0,M=i.getEnds(),z=i.getStride();m.beginPath();for(let D=0,q=M.length;D<q;++D)l=this.moveToLineTo_(a,l,M[D],z,!1);m.stroke()}if(this.text_!==""){let m=i.getFlatMidpoints();this.drawText_(m,0,m.length,2)}}}drawPolygon(i){if(this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!uo(this.extent_,i.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let u=this.context_;u.beginPath(),this.drawRings_(i.getOrientedFlatCoordinates(),0,i.getEnds(),i.getStride()),this.fillState_&&u.fill(),this.strokeState_&&u.stroke()}if(this.text_!==""){let u=i.getFlatInteriorPoint();this.drawText_(u,0,2,2)}}}drawMultiPolygon(i){if(this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!uo(this.extent_,i.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let u=this.context_,m=i.getOrientedFlatCoordinates(),a=0,l=i.getEndss(),M=i.getStride();u.beginPath();for(let z=0,D=l.length;z<D;++z){let q=l[z];a=this.drawRings_(m,a,q,M)}this.fillState_&&u.fill(),this.strokeState_&&u.stroke()}if(this.text_!==""){let u=i.getFlatInteriorPoints();this.drawText_(u,0,u.length,2)}}}setContextFillState_(i){let u=this.context_,m=this.contextFillState_;m?m.fillStyle!=i.fillStyle&&(m.fillStyle=i.fillStyle,u.fillStyle=i.fillStyle):(u.fillStyle=i.fillStyle,this.contextFillState_={fillStyle:i.fillStyle})}setContextStrokeState_(i){let u=this.context_,m=this.contextStrokeState_;m?(m.lineCap!=i.lineCap&&(m.lineCap=i.lineCap,u.lineCap=i.lineCap),xs(m.lineDash,i.lineDash)||u.setLineDash(m.lineDash=i.lineDash),m.lineDashOffset!=i.lineDashOffset&&(m.lineDashOffset=i.lineDashOffset,u.lineDashOffset=i.lineDashOffset),m.lineJoin!=i.lineJoin&&(m.lineJoin=i.lineJoin,u.lineJoin=i.lineJoin),m.lineWidth!=i.lineWidth&&(m.lineWidth=i.lineWidth,u.lineWidth=i.lineWidth),m.miterLimit!=i.miterLimit&&(m.miterLimit=i.miterLimit,u.miterLimit=i.miterLimit),m.strokeStyle!=i.strokeStyle&&(m.strokeStyle=i.strokeStyle,u.strokeStyle=i.strokeStyle)):(u.lineCap=i.lineCap,u.setLineDash(i.lineDash),u.lineDashOffset=i.lineDashOffset,u.lineJoin=i.lineJoin,u.lineWidth=i.lineWidth,u.miterLimit=i.miterLimit,u.strokeStyle=i.strokeStyle,this.contextStrokeState_={lineCap:i.lineCap,lineDash:i.lineDash,lineDashOffset:i.lineDashOffset,lineJoin:i.lineJoin,lineWidth:i.lineWidth,miterLimit:i.miterLimit,strokeStyle:i.strokeStyle})}setContextTextState_(i){let u=this.context_,m=this.contextTextState_,a=i.textAlign?i.textAlign:mh;m?(m.font!=i.font&&(m.font=i.font,u.font=i.font),m.textAlign!=a&&(m.textAlign=a,u.textAlign=a),m.textBaseline!=i.textBaseline&&(m.textBaseline=i.textBaseline,u.textBaseline=i.textBaseline)):(u.font=i.font,u.textAlign=a,u.textBaseline=i.textBaseline,this.contextTextState_={font:i.font,textAlign:a,textBaseline:i.textBaseline})}setFillStrokeStyle(i,u){if(!i)this.fillState_=null;else{let m=i.getColor();this.fillState_={fillStyle:Ts(m||Is)}}if(!u)this.strokeState_=null;else{let m=u.getColor(),a=u.getLineCap(),l=u.getLineDash(),M=u.getLineDashOffset(),z=u.getLineJoin(),D=u.getWidth(),q=u.getMiterLimit(),V=l||hc;this.strokeState_={lineCap:a!==void 0?a:Yh,lineDash:this.pixelRatio_===1?V:V.map(de=>de*this.pixelRatio_),lineDashOffset:(M||pc)*this.pixelRatio_,lineJoin:z!==void 0?z:Iu,lineWidth:(D!==void 0?D:gc)*this.pixelRatio_,miterLimit:q!==void 0?q:dc,strokeStyle:Ts(m||fc)}}}setImageStyle(i){let u;if(!i||!(u=i.getSize())){this.image_=null;return}let m=i.getPixelRatio(this.pixelRatio_),a=i.getAnchor(),l=i.getOrigin();this.image_=i.getImage(this.pixelRatio_),this.imageAnchorX_=a[0]*m,this.imageAnchorY_=a[1]*m,this.imageHeight_=u[1]*m,this.imageOpacity_=i.getOpacity(),this.imageOriginX_=l[0],this.imageOriginY_=l[1],this.imageRotateWithView_=i.getRotateWithView(),this.imageRotation_=i.getRotation();let M=i.getScaleArray();this.imageScale_=[M[0]*this.pixelRatio_/m,M[1]*this.pixelRatio_/m],this.imageWidth_=u[0]*m}setTextStyle(i){if(!i)this.text_="";else{let u=i.getFill();if(!u)this.textFillState_=null;else{let Ie=u.getColor();this.textFillState_={fillStyle:Ts(Ie||Is)}}let m=i.getStroke();if(!m)this.textStrokeState_=null;else{let Ie=m.getColor(),Ne=m.getLineCap(),nt=m.getLineDash(),we=m.getLineDashOffset(),Pe=m.getLineJoin(),et=m.getWidth(),ut=m.getMiterLimit();this.textStrokeState_={lineCap:Ne!==void 0?Ne:Yh,lineDash:nt||hc,lineDashOffset:we||pc,lineJoin:Pe!==void 0?Pe:Iu,lineWidth:et!==void 0?et:gc,miterLimit:ut!==void 0?ut:dc,strokeStyle:Ts(Ie||fc)}}let a=i.getFont(),l=i.getOffsetX(),M=i.getOffsetY(),z=i.getRotateWithView(),D=i.getRotation(),q=i.getScaleArray(),V=i.getText(),de=i.getTextAlign(),pe=i.getTextBaseline();this.textState_={font:a!==void 0?a:bg,textAlign:de!==void 0?de:mh,textBaseline:pe!==void 0?pe:Jh},this.text_=V!==void 0?Array.isArray(V)?V.reduce((Ie,Ne,nt)=>Ie+=nt%2?" ":Ne,""):V:"",this.textOffsetX_=l!==void 0?this.pixelRatio_*l:0,this.textOffsetY_=M!==void 0?this.pixelRatio_*M:0,this.textRotateWithView_=z!==void 0?z:!1,this.textRotation_=D!==void 0?D:0,this.textScale_=[this.pixelRatio_*q[0],this.pixelRatio_*q[1]]}}},F1=gv;var $l=.5;function O1(v,i,u,m,a,l,M){let z=v[0]*$l,D=v[1]*$l,q=aa(z,D);q.imageSmoothingEnabled=!1;let V=q.canvas,de=new F1(q,$l,a,null,M),pe=u.length,Ie=Math.floor((256*256*256-1)/pe),Ne={};for(let we=1;we<=pe;++we){let Pe=u[we-1],et=Pe.getStyleFunction()||m;if(!m)continue;let ut=et(Pe,l);if(!ut)continue;Array.isArray(ut)||(ut=[ut]);let ct=(we*Ie).toString(16).padStart(7,"#00000");for(let ft=0,It=ut.length;ft<It;++ft){let Mt=ut[ft],zt=Mt.getGeometryFunction()(Pe);if(!zt||!uo(a,zt.getExtent()))continue;let Qt=Mt.clone(),Vt=Qt.getFill();Vt&&Vt.setColor(ct);let mi=Qt.getStroke();mi&&(mi.setColor(ct),mi.setLineDash(null)),Qt.setText(void 0);let Ii=Mt.getImage();if(Ii&&Ii.getOpacity()!==0){let Ei=Ii.getImageSize();if(!Ei)continue;let ni=aa(Ei[0],Ei[1],void 0,{alpha:!1}),Ui=ni.canvas;ni.fillStyle=ct,ni.fillRect(0,0,Ui.width,Ui.height),Qt.setImage(new Mf({img:Ui,imgSize:Ei,anchor:Ii.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:Ii.getOrigin(),opacity:1,size:Ii.getSize(),scale:Ii.getScale(),rotation:Ii.getRotation(),rotateWithView:Ii.getRotateWithView()}))}let $t=Qt.getZIndex()||0,ci=Ne[$t];ci||(ci={},Ne[$t]=ci,ci.Polygon=[],ci.Circle=[],ci.LineString=[],ci.Point=[]);let Jt=zt.getType();if(Jt==="GeometryCollection"){let Ei=zt.getGeometriesArrayRecursive();for(let ni=0,Ui=Ei.length;ni<Ui;++ni){let Bi=Ei[ni];ci[Bi.getType().replace("Multi","")].push(Bi,Qt)}}else ci[Jt.replace("Multi","")].push(zt,Qt)}}let nt=Object.keys(Ne).map(Number).sort(rh);for(let we=0,Pe=nt.length;we<Pe;++we){let et=Ne[nt[we]];for(let ut in et){let mt=et[ut];for(let ct=0,ft=mt.length;ct<ft;ct+=2){de.setStyle(mt[ct+1]);for(let It=0,Mt=i.length;It<Mt;++It)de.setTransform(i[It]),de.drawGeometry(mt[ct])}}}return q.getImageData(0,0,V.width,V.height)}function B1(v,i,u){let m=[];if(u){let a=Math.floor(Math.round(v[0])*$l),l=Math.floor(Math.round(v[1])*$l),M=(Jn(a,0,u.width-1)+Jn(l,0,u.height-1)*u.width)*4,z=u.data[M],D=u.data[M+1],V=u.data[M+2]+256*(D+256*z),de=Math.floor((256*256*256-1)/i.length);V&&V%de===0&&m.push(i[V/de-1])}return m}var E2=.5,U1={Point:k2,LineString:A2,Polygon:L2,MultiPoint:R2,MultiLineString:M2,MultiPolygon:P2,GeometryCollection:C2,Circle:T2};function V1(v,i){return parseInt(Tr(v),10)-parseInt(Tr(i),10)}function N1(v,i){let u=Eg(v,i);return u*u}function Eg(v,i){return E2*v/i}function T2(v,i,u,m,a){let l=u.getFill(),M=u.getStroke();if(l||M){let D=v.getBuilder(u.getZIndex(),"Circle");D.setFillStrokeStyle(l,M),D.drawCircle(i,m)}let z=u.getText();if(z&&z.getText()){let D=(a||v).getBuilder(u.getZIndex(),"Text");D.setTextStyle(z),D.drawText(i,m)}}function yv(v,i,u,m,a,l,M){let z=!1,D=u.getImage();if(D){let q=D.getImageState();q==Zn.LOADED||q==Zn.ERROR?D.unlistenImageChange(a):(q==Zn.IDLE&&D.load(),D.listenImageChange(a),z=!0)}return I2(v,i,u,m,l,M),z}function I2(v,i,u,m,a,l){let M=u.getGeometryFunction()(i);if(!M)return;let z=M.simplifyTransformed(m,a);if(u.getRenderer())j1(v,z,u,i);else{let q=U1[z.getType()];q(v,z,u,i,l)}}function j1(v,i,u,m){if(i.getType()=="GeometryCollection"){let l=i.getGeometries();for(let M=0,z=l.length;M<z;++M)j1(v,l[M],u,m);return}v.getBuilder(u.getZIndex(),"Default").drawCustom(i,m,u.getRenderer(),u.getHitDetectionRenderer())}function C2(v,i,u,m,a){let l=i.getGeometriesArray(),M,z;for(M=0,z=l.length;M<z;++M){let D=U1[l[M].getType()];D(v,l[M],u,m,a)}}function A2(v,i,u,m,a){let l=u.getStroke();if(l){let z=v.getBuilder(u.getZIndex(),"LineString");z.setFillStrokeStyle(null,l),z.drawLineString(i,m)}let M=u.getText();if(M&&M.getText()){let z=(a||v).getBuilder(u.getZIndex(),"Text");z.setTextStyle(M),z.drawText(i,m)}}function M2(v,i,u,m,a){let l=u.getStroke();if(l){let z=v.getBuilder(u.getZIndex(),"LineString");z.setFillStrokeStyle(null,l),z.drawMultiLineString(i,m)}let M=u.getText();if(M&&M.getText()){let z=(a||v).getBuilder(u.getZIndex(),"Text");z.setTextStyle(M),z.drawText(i,m)}}function P2(v,i,u,m,a){let l=u.getFill(),M=u.getStroke();if(M||l){let D=v.getBuilder(u.getZIndex(),"Polygon");D.setFillStrokeStyle(l,M),D.drawMultiPolygon(i,m)}let z=u.getText();if(z&&z.getText()){let D=(a||v).getBuilder(u.getZIndex(),"Text");D.setTextStyle(z),D.drawText(i,m)}}function k2(v,i,u,m,a){let l=u.getImage(),M=u.getText(),z;if(l){if(l.getImageState()!=Zn.LOADED)return;let D=v;if(a){let V=l.getDeclutterMode();if(V!=="none")if(D=a,V==="obstacle"){let de=v.getBuilder(u.getZIndex(),"Image");de.setImageStyle(l,z),de.drawPoint(i,m)}else M&&M.getText()&&(z={})}let q=D.getBuilder(u.getZIndex(),"Image");q.setImageStyle(l,z),q.drawPoint(i,m)}if(M&&M.getText()){let D=v;a&&(D=a);let q=D.getBuilder(u.getZIndex(),"Text");q.setTextStyle(M,z),q.drawText(i,m)}}function R2(v,i,u,m,a){let l=u.getImage(),M=u.getText(),z;if(l){if(l.getImageState()!=Zn.LOADED)return;let D=v;if(a){let V=l.getDeclutterMode();if(V!=="none")if(D=a,V==="obstacle"){let de=v.getBuilder(u.getZIndex(),"Image");de.setImageStyle(l,z),de.drawMultiPoint(i,m)}else M&&M.getText()&&(z={})}let q=D.getBuilder(u.getZIndex(),"Image");q.setImageStyle(l,z),q.drawMultiPoint(i,m)}if(M&&M.getText()){let D=v;a&&(D=a);let q=D.getBuilder(u.getZIndex(),"Text");q.setTextStyle(M,z),q.drawText(i,m)}}function L2(v,i,u,m,a){let l=u.getFill(),M=u.getStroke();if(l||M){let D=v.getBuilder(u.getZIndex(),"Polygon");D.setFillStrokeStyle(l,M),D.drawPolygon(i,m)}let z=u.getText();if(z&&z.getText()){let D=(a||v).getBuilder(u.getZIndex(),"Text");D.setTextStyle(z),D.drawText(i,m)}}var _v=class extends k1{constructor(i){super(i),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=Qa(),this.wrappedRenderedExtent_=Qa(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedRenderOrder_=null,this.replayGroup_=null,this.replayGroupChanged=!0,this.declutterExecutorGroup=null,this.clipping=!0,this.compositionContext_=null,this.opacity_=1}renderWorlds(i,u,m){let a=u.extent,l=u.viewState,M=l.center,z=l.resolution,D=l.projection,q=l.rotation,V=D.getExtent(),de=this.getLayer().getSource(),pe=u.pixelRatio,Ie=u.viewHints,Ne=!(Ie[Ss.ANIMATING]||Ie[Ss.INTERACTING]),nt=this.compositionContext_,we=Math.round(u.size[0]*pe),Pe=Math.round(u.size[1]*pe),et=de.getWrapX()&&D.canWrapX(),ut=et?bo(V):null,mt=et?Math.ceil((a[2]-V[2])/ut)+1:1,ct=et?Math.floor((a[0]-V[0])/ut):0;do{let ft=this.getRenderTransform(M,z,q,pe,we,Pe,ct*ut);i.execute(nt,1,ft,q,Ne,void 0,m)}while(++ct<mt)}setupCompositionContext_(){if(this.opacity_!==1){let i=aa(this.context.canvas.width,this.context.canvas.height,cv);this.compositionContext_=i}else this.compositionContext_=this.context}releaseCompositionContext_(){if(this.opacity_!==1){let i=this.context.globalAlpha;this.context.globalAlpha=this.opacity_,this.context.drawImage(this.compositionContext_.canvas,0,0),this.context.globalAlpha=i,s1(this.compositionContext_),cv.push(this.compositionContext_.canvas),this.compositionContext_=null}}renderDeclutter(i){this.declutterExecutorGroup&&(this.setupCompositionContext_(),this.renderWorlds(this.declutterExecutorGroup,i,i.declutterTree),this.releaseCompositionContext_())}renderFrame(i,u){let m=i.pixelRatio,a=i.layerStatesArray[i.layerIndex];Vx(this.pixelTransform,1/m,1/m),jx(this.inversePixelTransform,this.pixelTransform);let l=zy(this.pixelTransform);this.useContainer(u,l,this.getBackground(i));let M=this.context,z=M.canvas,D=this.replayGroup_,q=this.declutterExecutorGroup;if((!D||D.isEmpty())&&(!q||q.isEmpty()))return null;let V=Math.round(i.size[0]*m),de=Math.round(i.size[1]*m);z.width!=V||z.height!=de?(z.width=V,z.height=de,z.style.transform!==l&&(z.style.transform=l)):this.containerReused||M.clearRect(0,0,V,de),this.preRender(M,i);let pe=i.viewState,Ie=pe.projection;this.opacity_=a.opacity,this.setupCompositionContext_();let Ne=!1,nt=!0;if(a.extent&&this.clipping){let we=Eu(a.extent,Ie);nt=uo(we,i.extent),Ne=nt&&!lc(we,i.extent),Ne&&this.clipUnrotated(this.compositionContext_,i,we)}return nt&&this.renderWorlds(D,i),Ne&&this.compositionContext_.restore(),this.releaseCompositionContext_(),this.postRender(M,i),this.renderedRotation_!==pe.rotation&&(this.renderedRotation_=pe.rotation,this.hitDetectionImageData_=null),this.container}getFeatures(i){return new Promise(u=>{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let m=[this.context.canvas.width,this.context.canvas.height];qo(this.pixelTransform,m);let a=this.renderedCenter_,l=this.renderedResolution_,M=this.renderedRotation_,z=this.renderedProjection_,D=this.wrappedRenderedExtent_,q=this.getLayer(),V=[],de=m[0]*$l,pe=m[1]*$l;V.push(this.getRenderTransform(a,l,M,$l,de,pe,0).slice());let Ie=q.getSource(),Ne=z.getExtent();if(Ie.getWrapX()&&z.canWrapX()&&!lc(Ne,D)){let nt=D[0],we=bo(Ne),Pe=0,et;for(;nt<Ne[0];)--Pe,et=we*Pe,V.push(this.getRenderTransform(a,l,M,$l,de,pe,et).slice()),nt+=we;for(Pe=0,nt=D[2];nt>Ne[2];)++Pe,et=we*Pe,V.push(this.getRenderTransform(a,l,M,$l,de,pe,et).slice()),nt-=we}this.hitDetectionImageData_=O1(m,V,this.renderedFeatures_,q.getStyleFunction(),D,l,M)}u(B1(i,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(i,u,m,a,l){if(!this.replayGroup_)return;let M=u.viewState.resolution,z=u.viewState.rotation,D=this.getLayer(),q={},V=function(Ie,Ne,nt){let we=Tr(Ie),Pe=q[we];if(Pe){if(Pe!==!0&&nt<Pe.distanceSq){if(nt===0)return q[we]=!0,l.splice(l.lastIndexOf(Pe),1),a(Ie,D,Ne);Pe.geometry=Ne,Pe.distanceSq=nt}}else{if(nt===0)return q[we]=!0,a(Ie,D,Ne);l.push(q[we]={feature:Ie,layer:D,geometry:Ne,distanceSq:nt,callback:a})}},de,pe=[this.replayGroup_];return this.declutterExecutorGroup&&pe.push(this.declutterExecutorGroup),pe.some(Ie=>de=Ie.forEachFeatureAtCoordinate(i,M,z,m,V,Ie===this.declutterExecutorGroup&&u.declutterTree?u.declutterTree.all().map(Ne=>Ne.value):null)),de}handleFontsChanged(){let i=this.getLayer();i.getVisible()&&this.replayGroup_&&i.changed()}handleStyleImageChange_(i){this.renderIfReadyAndVisible()}prepareFrame(i){let u=this.getLayer(),m=u.getSource();if(!m)return!1;let a=i.viewHints[Ss.ANIMATING],l=i.viewHints[Ss.INTERACTING],M=u.getUpdateWhileAnimating(),z=u.getUpdateWhileInteracting();if(this.ready&&!M&&a||!z&&l)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let D=i.extent,q=i.viewState,V=q.projection,de=q.resolution,pe=i.pixelRatio,Ie=u.getRevision(),Ne=u.getRenderBuffer(),nt=u.getRenderOrder();nt===void 0&&(nt=V1);let we=q.center.slice(),Pe=_l(D,Ne*de),et=Pe.slice(),ut=[Pe.slice()],mt=V.getExtent();if(m.getWrapX()&&V.canWrapX()&&!lc(mt,i.extent)){let Jt=bo(mt),Ei=Math.max(bo(Pe)/2,Jt);Pe[0]=mt[0]-Ei,Pe[2]=mt[2]+Ei,p0(we,V);let ni=Ny(ut[0],V);ni[0]<mt[0]&&ni[2]<mt[2]?ut.push([ni[0]+Jt,ni[1],ni[2]+Jt,ni[3]]):ni[0]>mt[0]&&ni[2]>mt[2]&&ut.push([ni[0]-Jt,ni[1],ni[2]-Jt,ni[3]])}if(this.ready&&this.renderedResolution_==de&&this.renderedRevision_==Ie&&this.renderedRenderOrder_==nt&&lc(this.wrappedRenderedExtent_,Pe))return xs(this.renderedExtent_,et)||(this.hitDetectionImageData_=null,this.renderedExtent_=et),this.renderedCenter_=we,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let ct=new av(Eg(de,pe),Pe,de,pe),ft;this.getLayer().getDeclutter()&&(ft=new av(Eg(de,pe),Pe,de,pe));let It=Su(),Mt;if(It){for(let Jt=0,Ei=ut.length;Jt<Ei;++Jt){let ni=ut[Jt],Ui=lh(ni,V);m.loadFeatures(Ui,_0(de,V),It)}Mt=rg(It,V)}else for(let Jt=0,Ei=ut.length;Jt<Ei;++Jt)m.loadFeatures(ut[Jt],de,V);let zt=N1(de,pe),Qt=!0,Vt=Jt=>{let Ei,ni=Jt.getStyleFunction()||u.getStyleFunction();if(ni&&(Ei=ni(Jt,de)),Ei){let Ui=this.renderFeature(Jt,zt,Ei,ct,Mt,ft);Qt=Qt&&!Ui}},mi=lh(Pe,V),Ii=m.getFeaturesInExtent(mi);nt&&Ii.sort(nt);for(let Jt=0,Ei=Ii.length;Jt<Ei;++Jt)Vt(Ii[Jt]);this.renderedFeatures_=Ii,this.ready=Qt;let $t=ct.finish(),ci=new mv(Pe,de,pe,m.getOverlaps(),$t,u.getRenderBuffer());return ft&&(this.declutterExecutorGroup=new mv(Pe,de,pe,m.getOverlaps(),ft.finish(),u.getRenderBuffer())),this.renderedResolution_=de,this.renderedRevision_=Ie,this.renderedRenderOrder_=nt,this.renderedExtent_=et,this.wrappedRenderedExtent_=Pe,this.renderedCenter_=we,this.renderedProjection_=V,this.replayGroup_=ci,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(i,u,m,a,l,M){if(!m)return!1;let z=!1;if(Array.isArray(m))for(let D=0,q=m.length;D<q;++D)z=yv(a,i,m[D],u,this.boundHandleStyleImageChange_,l,M)||z;else z=yv(a,i,m,u,this.boundHandleStyleImageChange_,l,M);return z}},G1=_v;var vv=class extends S1{constructor(i){super(i)}createRenderer(){return new G1(this)}},Qh=vv;var q1=Vp(Z_(),1);var xv=class{constructor(i){this.rbush_=new q1.default(i),this.items_={}}insert(i,u){let m={minX:i[0],minY:i[1],maxX:i[2],maxY:i[3],value:u};this.rbush_.insert(m),this.items_[Tr(u)]=m}load(i,u){let m=new Array(u.length);for(let a=0,l=u.length;a<l;a++){let M=i[a],z=u[a],D={minX:M[0],minY:M[1],maxX:M[2],maxY:M[3],value:z};m[a]=D,this.items_[Tr(z)]=D}this.rbush_.load(m)}remove(i){let u=Tr(i),m=this.items_[u];return delete this.items_[u],this.rbush_.remove(m)!==null}update(i,u){let m=this.items_[Tr(u)],a=[m.minX,m.minY,m.maxX,m.maxY];Qm(a,i)||(this.remove(u),this.insert(i,u))}getAll(){return this.rbush_.all().map(function(u){return u.value})}getInExtent(i){let u={minX:i[0],minY:i[1],maxX:i[2],maxY:i[3]};return this.rbush_.search(u).map(function(a){return a.value})}forEach(i){return this.forEach_(this.getAll(),i)}forEachInExtent(i,u){return this.forEach_(this.getInExtent(i),u)}forEach_(i,u){let m;for(let a=0,l=i.length;a<l;a++)if(m=u(i[a]),m)return m;return m}isEmpty(){return Gl(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(i){let u=this.rbush_.toJSON();return uc(u.minX,u.minY,u.maxX,u.maxY,i)}concat(i){this.rbush_.load(i.rbush_.all());for(let u in i.items_)this.items_[u]=i.items_[u]}},zf=xv;var bv=class extends lo{constructor(i){super(),this.projection=Zo(i.projection),this.attributions_=Z1(i.attributions),this.attributionsCollapsible_=i.attributionsCollapsible!==void 0?i.attributionsCollapsible:!0,this.loading=!1,this.state_=i.state!==void 0?i.state:"ready",this.wrapX_=i.wrapX!==void 0?i.wrapX:!1,this.interpolate_=!!i.interpolate,this.viewResolver=null,this.viewRejector=null;let u=this;this.viewPromise_=new Promise(function(m,a){u.viewResolver=m,u.viewRejector=a})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(i){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(i){this.attributions_=Z1(i),this.changed()}setState(i){this.state_=i,this.changed()}};function Z1(v){return v?Array.isArray(v)?function(i){return v}:typeof v=="function"?v:function(i){return[v]}:null}var dd=bv;var ts={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function W1(v,i){return[[-1/0,-1/0,1/0,1/0]]}var z2=!1;function D2(v,i,u,m,a,l,M){let z=new XMLHttpRequest;z.open("GET",typeof v=="function"?v(u,m,a):v,!0),i.getType()=="arraybuffer"&&(z.responseType="arraybuffer"),z.withCredentials=z2,z.onload=function(D){if(!z.status||z.status>=200&&z.status<300){let q=i.getType(),V;q=="json"||q=="text"?V=z.responseText:q=="xml"?(V=z.responseXML,V||(V=new DOMParser().parseFromString(z.responseText,"application/xml"))):q=="arraybuffer"&&(V=z.response),V?l(i.readFeatures(V,{extent:u,featureProjection:a}),i.readProjection(V)):M()}else M()},z.onerror=M,z.send()}function wv(v,i){return function(u,m,a,l,M){let z=this;D2(v,i,u,m,a,function(D,q){z.addFeatures(D),l!==void 0&&l(D)},M||ac)}}var Pu=class extends nn{constructor(i,u,m){super(i),this.feature=u,this.features=m}},Sv=class extends dd{constructor(i){i=i||{},super({attributions:i.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:i.wrapX!==void 0?i.wrapX:!0}),this.on,this.once,this.un,this.loader_=ac,this.format_=i.format,this.overlaps_=i.overlaps===void 0?!0:i.overlaps,this.url_=i.url,i.loader!==void 0?this.loader_=i.loader:this.url_!==void 0&&(zr(this.format_,7),this.loader_=wv(this.url_,this.format_)),this.strategy_=i.strategy!==void 0?i.strategy:W1;let u=i.useSpatialIndex!==void 0?i.useSpatialIndex:!0;this.featuresRtree_=u?new zf:null,this.loadedExtentsRtree_=new zf,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null;let m,a;Array.isArray(i.features)?a=i.features:i.features&&(m=i.features,a=m.getArray()),!u&&m===void 0&&(m=new dh(a)),a!==void 0&&this.addFeaturesInternal(a),m!==void 0&&this.bindFeaturesCollection_(m)}addFeature(i){this.addFeatureInternal(i),this.changed()}addFeatureInternal(i){let u=Tr(i);if(!this.addToIndex_(u,i)){this.featuresCollection_&&this.featuresCollection_.remove(i);return}this.setupChangeEvents_(u,i);let m=i.getGeometry();if(m){let a=m.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(a,i)}else this.nullGeometryFeatures_[u]=i;this.dispatchEvent(new Pu(ts.ADDFEATURE,i))}setupChangeEvents_(i,u){this.featureChangeKeys_[i]=[so(u,cn.CHANGE,this.handleFeatureChange_,this),so(u,Np.PROPERTYCHANGE,this.handleFeatureChange_,this)]}addToIndex_(i,u){let m=!0,a=u.getId();return a!==void 0&&(a.toString()in this.idIndex_?m=!1:this.idIndex_[a.toString()]=u),m&&(zr(!(i in this.uidIndex_),30),this.uidIndex_[i]=u),m}addFeatures(i){this.addFeaturesInternal(i),this.changed()}addFeaturesInternal(i){let u=[],m=[],a=[];for(let l=0,M=i.length;l<M;l++){let z=i[l],D=Tr(z);this.addToIndex_(D,z)&&m.push(z)}for(let l=0,M=m.length;l<M;l++){let z=m[l],D=Tr(z);this.setupChangeEvents_(D,z);let q=z.getGeometry();if(q){let V=q.getExtent();u.push(V),a.push(z)}else this.nullGeometryFeatures_[D]=z}if(this.featuresRtree_&&this.featuresRtree_.load(u,a),this.hasListener(ts.ADDFEATURE))for(let l=0,M=m.length;l<M;l++)this.dispatchEvent(new Pu(ts.ADDFEATURE,m[l]))}bindFeaturesCollection_(i){let u=!1;this.addEventListener(ts.ADDFEATURE,function(m){u||(u=!0,i.push(m.feature),u=!1)}),this.addEventListener(ts.REMOVEFEATURE,function(m){u||(u=!0,i.remove(m.feature),u=!1)}),i.addEventListener(Es.ADD,m=>{u||(u=!0,this.addFeature(m.element),u=!1)}),i.addEventListener(Es.REMOVE,m=>{u||(u=!0,this.removeFeature(m.element),u=!1)}),this.featuresCollection_=i}clear(i){if(i){for(let m in this.featureChangeKeys_)this.featureChangeKeys_[m].forEach(Po);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){let m=a=>{this.removeFeatureInternal(a)};this.featuresRtree_.forEach(m);for(let a in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[a])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};let u=new Pu(ts.CLEAR);this.dispatchEvent(u),this.changed()}forEachFeature(i){if(this.featuresRtree_)return this.featuresRtree_.forEach(i);this.featuresCollection_&&this.featuresCollection_.forEach(i)}forEachFeatureAtCoordinateDirect(i,u){let m=[i[0],i[1],i[0],i[1]];return this.forEachFeatureInExtent(m,function(a){if(a.getGeometry().intersectsCoordinate(i))return u(a)})}forEachFeatureInExtent(i,u){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(i,u);this.featuresCollection_&&this.featuresCollection_.forEach(u)}forEachFeatureIntersectingExtent(i,u){return this.forEachFeatureInExtent(i,function(m){if(m.getGeometry().intersectsExtent(i)){let l=u(m);if(l)return l}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let i;return this.featuresCollection_?i=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(i=this.featuresRtree_.getAll(),Gl(this.nullGeometryFeatures_)||Ya(i,Object.values(this.nullGeometryFeatures_))),i}getFeaturesAtCoordinate(i){let u=[];return this.forEachFeatureAtCoordinateDirect(i,function(m){u.push(m)}),u}getFeaturesInExtent(i,u){if(this.featuresRtree_){if(!(u&&u.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(i);let a=Jx(i,u);return[].concat(...a.map(l=>this.featuresRtree_.getInExtent(l)))}else if(this.featuresCollection_)return this.featuresCollection_.getArray().slice(0);return[]}getClosestFeatureToCoordinate(i,u){let m=i[0],a=i[1],l=null,M=[NaN,NaN],z=1/0,D=[-1/0,-1/0,1/0,1/0];return u=u||Gm,this.featuresRtree_.forEachInExtent(D,function(q){if(u(q)){let V=q.getGeometry(),de=z;if(z=V.closestPointXY(m,a,M,z),z<de){l=q;let pe=Math.sqrt(z);D[0]=m-pe,D[1]=a-pe,D[2]=m+pe,D[3]=a+pe}}}),l}getExtent(i){return this.featuresRtree_.getExtent(i)}getFeatureById(i){let u=this.idIndex_[i.toString()];return u!==void 0?u:null}getFeatureByUid(i){let u=this.uidIndex_[i];return u!==void 0?u:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(i){let u=i.target,m=Tr(u),a=u.getGeometry();if(!a)m in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(u),this.nullGeometryFeatures_[m]=u);else{let M=a.getExtent();m in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[m],this.featuresRtree_&&this.featuresRtree_.insert(M,u)):this.featuresRtree_&&this.featuresRtree_.update(M,u)}let l=u.getId();if(l!==void 0){let M=l.toString();this.idIndex_[M]!==u&&(this.removeFromIdIndex_(u),this.idIndex_[M]=u)}else this.removeFromIdIndex_(u),this.uidIndex_[m]=u;this.changed(),this.dispatchEvent(new Pu(ts.CHANGEFEATURE,u))}hasFeature(i){let u=i.getId();return u!==void 0?u in this.idIndex_:Tr(i)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&Gl(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(i,u,m){let a=this.loadedExtentsRtree_,l=this.strategy_(i,u,m);for(let M=0,z=l.length;M<z;++M){let D=l[M];a.forEachInExtent(D,function(V){return lc(V.extent,D)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Pu(ts.FEATURESLOADSTART)),this.loader_.call(this,D,u,m,V=>{--this.loadingExtentsCount_,this.dispatchEvent(new Pu(ts.FEATURESLOADEND,void 0,V))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Pu(ts.FEATURESLOADERROR))}),a.insert(D,{extent:D.slice()}))}this.loading=this.loader_.length<4?!1:this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(i){let u=this.loadedExtentsRtree_,m;u.forEachInExtent(i,function(a){if(Qm(a.extent,i))return m=a,!0}),m&&u.remove(m)}removeFeature(i){if(!i)return;let u=Tr(i);u in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[u]:this.featuresRtree_&&this.featuresRtree_.remove(i),this.removeFeatureInternal(i)&&this.changed()}removeFeatureInternal(i){let u=Tr(i),m=this.featureChangeKeys_[u];if(!m)return;m.forEach(Po),delete this.featureChangeKeys_[u];let a=i.getId();return a!==void 0&&delete this.idIndex_[a.toString()],delete this.uidIndex_[u],this.dispatchEvent(new Pu(ts.REMOVEFEATURE,i)),i}removeFromIdIndex_(i){let u=!1;for(let m in this.idIndex_)if(this.idIndex_[m]===i){delete this.idIndex_[m],u=!0;break}return u}setLoader(i){this.loader_=i}setUrl(i){zr(this.format_,7),this.url_=i,this.setLoader(wv(i,this.format_))}},ep=Sv;var _h=class extends nn{constructor(i,u){super(i),this.layer=u}},Ev={LAYERS:"layers"},Df=class extends mg{constructor(i){i=i||{};let u=Object.assign({},i);delete u.layers;let m=i.layers;super(u),this.on,this.once,this.un,this.layersListenerKeys_=[],this.listenerKeys_={},this.addChangeListener(Ev.LAYERS,this.handleLayersChanged_),m?Array.isArray(m)?m=new dh(m.slice(),{unique:!0}):zr(typeof m.getArray=="function",43):m=new dh(void 0,{unique:!0}),this.setLayers(m)}handleLayerChange_(){this.changed()}handleLayersChanged_(){this.layersListenerKeys_.forEach(Po),this.layersListenerKeys_.length=0;let i=this.getLayers();this.layersListenerKeys_.push(so(i,Es.ADD,this.handleLayersAdd_,this),so(i,Es.REMOVE,this.handleLayersRemove_,this));for(let m in this.listenerKeys_)this.listenerKeys_[m].forEach(Po);nh(this.listenerKeys_);let u=i.getArray();for(let m=0,a=u.length;m<a;m++){let l=u[m];this.registerLayerListeners_(l),this.dispatchEvent(new _h("addlayer",l))}this.changed()}registerLayerListeners_(i){let u=[so(i,Np.PROPERTYCHANGE,this.handleLayerChange_,this),so(i,cn.CHANGE,this.handleLayerChange_,this)];i instanceof Df&&u.push(so(i,"addlayer",this.handleLayerGroupAdd_,this),so(i,"removelayer",this.handleLayerGroupRemove_,this)),this.listenerKeys_[Tr(i)]=u}handleLayerGroupAdd_(i){this.dispatchEvent(new _h("addlayer",i.layer))}handleLayerGroupRemove_(i){this.dispatchEvent(new _h("removelayer",i.layer))}handleLayersAdd_(i){let u=i.element;this.registerLayerListeners_(u),this.dispatchEvent(new _h("addlayer",u)),this.changed()}handleLayersRemove_(i){let u=i.element,m=Tr(u);this.listenerKeys_[m].forEach(Po),delete this.listenerKeys_[m],this.dispatchEvent(new _h("removelayer",u)),this.changed()}getLayers(){return this.get(Ev.LAYERS)}setLayers(i){let u=this.getLayers();if(u){let m=u.getArray();for(let a=0,l=m.length;a<l;++a)this.dispatchEvent(new _h("removelayer",m[a]))}this.set(Ev.LAYERS,i)}getLayersArray(i){return i=i!==void 0?i:[],this.getLayers().forEach(function(u){u.getLayersArray(i)}),i}getLayerStatesArray(i){let u=i!==void 0?i:[],m=u.length;this.getLayers().forEach(function(M){M.getLayerStatesArray(u)});let a=this.getLayerState(),l=a.zIndex;!i&&a.zIndex===void 0&&(l=0);for(let M=m,z=u.length;M<z;M++){let D=u[M];D.opacity*=a.opacity,D.visible=D.visible&&a.visible,D.maxResolution=Math.min(D.maxResolution,a.maxResolution),D.minResolution=Math.max(D.minResolution,a.minResolution),D.minZoom=Math.max(D.minZoom,a.minZoom),D.maxZoom=Math.min(D.maxZoom,a.maxZoom),a.extent!==void 0&&(D.extent!==void 0?D.extent=Xx(D.extent,a.extent):D.extent=a.extent),D.zIndex===void 0&&(D.zIndex=l)}return u}getSourceState(){return"ready"}},Tv=Df;var Js={SINGLECLICK:"singleclick",CLICK:cn.CLICK,DBLCLICK:cn.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"};var Iv={ACTIVE:"active"};var Cv=class extends lo{constructor(i){super(),this.on,this.once,this.un,i&&i.handleEvent&&(this.handleEvent=i.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(Iv.ACTIVE)}getMap(){return this.map_}handleEvent(i){return!0}setActive(i){this.set(Iv.ACTIVE,i)}setMap(i){this.map_=i}};var X1=Cv;var Av=class extends X1{constructor(i){i=i||{},super(i),i.handleDownEvent&&(this.handleDownEvent=i.handleDownEvent),i.handleDragEvent&&(this.handleDragEvent=i.handleDragEvent),i.handleMoveEvent&&(this.handleMoveEvent=i.handleMoveEvent),i.handleUpEvent&&(this.handleUpEvent=i.handleUpEvent),i.stopDown&&(this.stopDown=i.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(i){return!1}handleDragEvent(i){}handleEvent(i){if(!i.originalEvent)return!0;let u=!1;if(this.updateTrackedPointers_(i),this.handlingDownUpSequence){if(i.type==Js.POINTERDRAG)this.handleDragEvent(i),i.originalEvent.preventDefault();else if(i.type==Js.POINTERUP){let m=this.handleUpEvent(i);this.handlingDownUpSequence=m&&this.targetPointers.length>0}}else if(i.type==Js.POINTERDOWN){let m=this.handleDownEvent(i);this.handlingDownUpSequence=m,u=this.stopDown(m)}else i.type==Js.POINTERMOVE&&this.handleMoveEvent(i);return!u}handleMoveEvent(i){}handleUpEvent(i){return!1}stopDown(i){return i}updateTrackedPointers_(i){i.activePointers&&(this.targetPointers=i.activePointers)}};var $1=Av;var K1=function(v){let i=v.originalEvent;return i.altKey&&!(i.metaKey||i.ctrlKey)&&!i.shiftKey};var H1=Gm,Y1=function(v){return v.type==Js.CLICK};var J1=function(v){return v.type==Js.SINGLECLICK};var Q1=function(v){let i=v.originalEvent;return zr(i!==void 0,56),i.isPrimary&&i.button===0};var eb=0,Ff=1,tb=[0,0,0,0],fd=[],Mv={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},Of=class extends nn{constructor(i,u,m){super(i),this.features=u,this.mapBrowserEvent=m}},Pv=class extends $1{constructor(i){super(i),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=i.condition?i.condition:Q1,this.defaultDeleteCondition_=function(m){return K1(m)&&J1(m)},this.deleteCondition_=i.deleteCondition?i.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=i.insertVertexCondition?i.insertVertexCondition:H1,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new zf,this.pixelTolerance_=i.pixelTolerance!==void 0?i.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new Qh({source:new ep({useSpatialIndex:!1,wrapX:!!i.wrapX}),style:i.style?i.style:O2(),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 u;if(i.features?u=i.features:i.source&&(this.source_=i.source,u=new dh(this.source_.getFeatures()),this.source_.addEventListener(ts.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(ts.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!u)throw new Error("The modify interaction requires features, a source or a layer");i.hitDetection&&(this.hitDetection_=i.hitDetection),this.features_=u,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(Es.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(Es.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=i.snapToPointer===void 0?!this.hitDetection_:i.snapToPointer}addFeature_(i){let u=i.getGeometry();if(u){let a=this.SEGMENT_WRITERS_[u.getType()];a&&a(i,u)}let m=this.getMap();m&&m.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,m),i.addEventListener(cn.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(i,u){if(!this.featuresBeingModified_){this.featuresBeingModified_=new dh;let m=this.featuresBeingModified_.getArray();for(let a=0,l=u.length;a<l;++a){let M=u[a];for(let z=0,D=M.length;z<D;++z){let q=M[z].feature;q&&!m.includes(q)&&this.featuresBeingModified_.push(q)}}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new Of(Mv.MODIFYSTART,this.featuresBeingModified_,i))}}removeFeature_(i){this.removeFeatureSegmentData_(i),this.vertexFeature_&&this.features_.getLength()===0&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),i.removeEventListener(cn.CHANGE,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(i){let u=this.rBush_,m=[];u.forEach(function(a){i===a.feature&&m.push(a)});for(let a=m.length-1;a>=0;--a){let l=m[a];for(let M=this.dragSegments_.length-1;M>=0;--M)this.dragSegments_[M][0]===l&&this.dragSegments_.splice(M,1);u.remove(l)}}setActive(i){this.vertexFeature_&&!i&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(i)}setMap(i){this.overlay_.setMap(i),super.setMap(i)}getOverlay(){return this.overlay_}handleSourceAdd_(i){i.feature&&this.features_.push(i.feature)}handleSourceRemove_(i){i.feature&&this.features_.remove(i.feature)}handleFeatureAdd_(i){this.addFeature_(i.element)}handleFeatureChange_(i){if(!this.changingFeature_){let u=i.target;this.removeFeature_(u),this.addFeature_(u)}}handleFeatureRemove_(i){this.removeFeature_(i.element)}writePointGeometry_(i,u){let m=u.getCoordinates(),a={feature:i,geometry:u,segment:[m,m]};this.rBush_.insert(u.getExtent(),a)}writeMultiPointGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a],z={feature:i,geometry:u,depth:[a],index:a,segment:[M,M]};this.rBush_.insert(u.getExtent(),z)}}writeLineStringGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length-1;a<l;++a){let M=m.slice(a,a+2),z={feature:i,geometry:u,index:a,segment:M};this.rBush_.insert(bu(M),z)}}writeMultiLineStringGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a];for(let z=0,D=M.length-1;z<D;++z){let q=M.slice(z,z+2),V={feature:i,geometry:u,depth:[a],index:z,segment:q};this.rBush_.insert(bu(q),V)}}}writePolygonGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a];for(let z=0,D=M.length-1;z<D;++z){let q=M.slice(z,z+2),V={feature:i,geometry:u,depth:[a],index:z,segment:q};this.rBush_.insert(bu(q),V)}}}writeMultiPolygonGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a];for(let z=0,D=M.length;z<D;++z){let q=M[z];for(let V=0,de=q.length-1;V<de;++V){let pe=q.slice(V,V+2),Ie={feature:i,geometry:u,depth:[z,a],index:V,segment:pe};this.rBush_.insert(bu(pe),Ie)}}}}writeCircleGeometry_(i,u){let m=u.getCenter(),a={feature:i,geometry:u,index:eb,segment:[m,m]},l={feature:i,geometry:u,index:Ff,segment:[m,m]},M=[a,l];a.featureSegments=M,l.featureSegments=M,this.rBush_.insert(Xp(m),a);let z=u,D=Su();if(D&&this.getMap()){let q=this.getMap().getView().getProjection();z=z.clone().transform(D,q),z=l_(z).transform(q,D)}this.rBush_.insert(z.getExtent(),l)}writeGeometryCollectionGeometry_(i,u){let m=u.getGeometriesArray();for(let a=0;a<m.length;++a){let l=m[a],M=this.SEGMENT_WRITERS_[l.getType()];M(i,l)}}createOrUpdateVertexFeature_(i,u,m){let a=this.vertexFeature_;return a?a.getGeometry().setCoordinates(i):(a=new Tu(new xa(i)),this.vertexFeature_=a,this.overlay_.getSource().addFeature(a)),a.set("features",u),a.set("geometries",m),a}handleEvent(i){if(!i.originalEvent)return!0;this.lastPointerEvent_=i;let u;return!i.map.getView().getInteracting()&&i.type==Js.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(i),this.vertexFeature_&&this.deleteCondition_(i)&&(i.type!=Js.SINGLECLICK||!this.ignoreNextSingleClick_?u=this.removePoint():u=!0),i.type==Js.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(i)&&!u}handleDragEvent(i){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(i,this.dragSegments_);let u=[i.coordinate[0]+this.delta_[0],i.coordinate[1]+this.delta_[1]],m=[],a=[];for(let l=0,M=this.dragSegments_.length;l<M;++l){let z=this.dragSegments_[l],D=z[0],q=D.feature;m.includes(q)||m.push(q);let V=D.geometry;a.includes(V)||a.push(V);let de=D.depth,pe,Ie=D.segment,Ne=z[1];for(;u.length<V.getStride();)u.push(Ie[Ne][u.length]);switch(V.getType()){case"Point":pe=u,Ie[0]=u,Ie[1]=u;break;case"MultiPoint":pe=V.getCoordinates(),pe[D.index]=u,Ie[0]=u,Ie[1]=u;break;case"LineString":pe=V.getCoordinates(),pe[D.index+Ne]=u,Ie[Ne]=u;break;case"MultiLineString":pe=V.getCoordinates(),pe[de[0]][D.index+Ne]=u,Ie[Ne]=u;break;case"Polygon":pe=V.getCoordinates(),pe[de[0]][D.index+Ne]=u,Ie[Ne]=u;break;case"MultiPolygon":pe=V.getCoordinates(),pe[de[1]][de[0]][D.index+Ne]=u,Ie[Ne]=u;break;case"Circle":if(Ie[0]=u,Ie[1]=u,D.index===eb)this.changingFeature_=!0,V.setCenter(u),this.changingFeature_=!1;else{this.changingFeature_=!0;let nt=i.map.getView().getProjection(),we=Xy(Ro(V.getCenter(),nt),Ro(u,nt)),Pe=Su();if(Pe){let et=V.clone().transform(Pe,nt);et.setRadius(we),we=et.transform(nt,Pe).getRadius()}V.setRadius(we),this.changingFeature_=!1}break;default:}pe&&this.setGeometryCoordinates_(V,pe)}this.createOrUpdateVertexFeature_(u,m,a)}handleDownEvent(i){if(!this.condition_(i))return!1;let u=i.coordinate;this.handlePointerAtPixel_(i.pixel,i.map,u),this.dragSegments_.length=0,this.featuresBeingModified_=null;let m=this.vertexFeature_;if(m){let a=i.map.getView().getProjection(),l=[],M=m.getGeometry().getCoordinates(),z=bu([M]),D=this.rBush_.getInExtent(z),q={};D.sort(F2);for(let V=0,de=D.length;V<de;++V){let pe=D[V],Ie=pe.segment,Ne=Tr(pe.geometry),nt=pe.depth;if(nt&&(Ne+="-"+nt.join("-")),q[Ne]||(q[Ne]=new Array(2)),pe.geometry.getType()==="Circle"&&pe.index===Ff){let we=rb(u,pe,a);es(we,M)&&!q[Ne][0]&&(this.dragSegments_.push([pe,0]),q[Ne][0]=pe);continue}if(es(Ie[0],M)&&!q[Ne][0]){this.dragSegments_.push([pe,0]),q[Ne][0]=pe;continue}if(es(Ie[1],M)&&!q[Ne][1]){if(q[Ne][0]&&q[Ne][0].index===0){let we=pe.geometry.getCoordinates();switch(pe.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":we=we[nt[1]];case"Polygon":if(pe.index!==we[nt[0]].length-2)continue;break;default:}}this.dragSegments_.push([pe,1]),q[Ne][1]=pe;continue}Tr(Ie)in this.vertexSegments_&&!q[Ne][0]&&!q[Ne][1]&&this.insertVertexCondition_(i)&&l.push(pe)}l.length&&this.willModifyFeatures_(i,[l]);for(let V=l.length-1;V>=0;--V)this.insertVertex_(l[V],M)}return!!this.vertexFeature_}handleUpEvent(i){for(let u=this.dragSegments_.length-1;u>=0;--u){let m=this.dragSegments_[u][0],a=m.geometry;if(a.getType()==="Circle"){let l=a.getCenter(),M=m.featureSegments[0],z=m.featureSegments[1];M.segment[0]=l,M.segment[1]=l,z.segment[0]=l,z.segment[1]=l,this.rBush_.update(Xp(l),M);let D=a,q=Su();if(q){let V=i.map.getView().getProjection();D=D.clone().transform(q,V),D=l_(D).transform(V,q)}this.rBush_.update(D.getExtent(),z)}else this.rBush_.update(bu(m.segment),m)}return this.featuresBeingModified_&&(this.dispatchEvent(new Of(Mv.MODIFYEND,this.featuresBeingModified_,i)),this.featuresBeingModified_=null),!1}handlePointerMove_(i){this.lastPixel_=i.pixel,this.handlePointerAtPixel_(i.pixel,i.map,i.coordinate)}handlePointerAtPixel_(i,u,m){let a=m||u.getCoordinateFromPixel(i),l=u.getView().getProjection(),M=function(q,V){return ib(a,q,l)-ib(a,V,l)},z,D;if(this.hitDetection_){let q=typeof this.hitDetection_=="object"?V=>V===this.hitDetection_:void 0;u.forEachFeatureAtPixel(i,(V,de,pe)=>{let Ie=pe||V.getGeometry();if(Ie.getType()==="Point"&&V instanceof Tu&&this.features_.getArray().includes(V)){D=Ie;let Ne=D.getFlatCoordinates().slice(0,2);z=[{feature:V,geometry:D,segment:[Ne,Ne]}]}return!0},{layerFilter:q})}if(!z){let q=Eu(Xp(a,tb),l),V=u.getView().getResolution()*this.pixelTolerance_,de=lh(_l(q,V,tb),l);z=this.rBush_.getInExtent(de)}if(z&&z.length>0){let q=z.sort(M)[0],V=q.segment,de=rb(a,q,l),pe=u.getPixelFromCoordinate(de),Ie=Xy(i,pe);if(D||Ie<=this.pixelTolerance_){let Ne={};if(Ne[Tr(V)]=!0,this.snapToPointer_||(this.delta_[0]=de[0]-a[0],this.delta_[1]=de[1]-a[1]),q.geometry.getType()==="Circle"&&q.index===Ff)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(de,[q.feature],[q.geometry]);else{let nt=u.getPixelFromCoordinate(V[0]),we=u.getPixelFromCoordinate(V[1]),Pe=Hp(pe,nt),et=Hp(pe,we);Ie=Math.sqrt(Math.min(Pe,et)),this.snappedToVertex_=Ie<=this.pixelTolerance_,this.snappedToVertex_&&(de=Pe>et?V[1]:V[0]),this.createOrUpdateVertexFeature_(de,[q.feature],[q.geometry]);let ut={};ut[Tr(q.geometry)]=!0;for(let mt=1,ct=z.length;mt<ct;++mt){let ft=z[mt].segment;if(es(V[0],ft[0])&&es(V[1],ft[1])||es(V[0],ft[1])&&es(V[1],ft[0])){let It=Tr(z[mt].geometry);It in ut||(ut[It]=!0,Ne[Tr(ft)]=!0)}else break}}this.vertexSegments_=Ne;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(i,u){let m=i.segment,a=i.feature,l=i.geometry,M=i.depth,z=i.index,D;for(;u.length<l.getStride();)u.push(0);switch(l.getType()){case"MultiLineString":D=l.getCoordinates(),D[M[0]].splice(z+1,0,u);break;case"Polygon":D=l.getCoordinates(),D[M[0]].splice(z+1,0,u);break;case"MultiPolygon":D=l.getCoordinates(),D[M[1]][M[0]].splice(z+1,0,u);break;case"LineString":D=l.getCoordinates(),D.splice(z+1,0,u);break;default:return}this.setGeometryCoordinates_(l,D);let q=this.rBush_;q.remove(i),this.updateSegmentIndices_(l,z,M,1);let V={segment:[m[0],u],feature:a,geometry:l,depth:M,index:z};q.insert(bu(V.segment),V),this.dragSegments_.push([V,1]);let de={segment:[u,m[1]],feature:a,geometry:l,depth:M,index:z+1};q.insert(bu(de.segment),de),this.dragSegments_.push([de,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Js.POINTERDRAG){let i=this.lastPointerEvent_;this.willModifyFeatures_(i,this.dragSegments_);let u=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Of(Mv.MODIFYEND,this.featuresBeingModified_,i)),this.featuresBeingModified_=null,u}return!1}removeVertex_(){let i=this.dragSegments_,u={},m=!1,a,l,M,z,D,q,V,de,pe,Ie,Ne;for(D=i.length-1;D>=0;--D)M=i[D],Ie=M[0],Ne=Tr(Ie.feature),Ie.depth&&(Ne+="-"+Ie.depth.join("-")),Ne in u||(u[Ne]={}),M[1]===0?(u[Ne].right=Ie,u[Ne].index=Ie.index):M[1]==1&&(u[Ne].left=Ie,u[Ne].index=Ie.index+1);for(Ne in u){switch(pe=u[Ne].right,V=u[Ne].left,q=u[Ne].index,de=q-1,V!==void 0?Ie=V:Ie=pe,de<0&&(de=0),z=Ie.geometry,l=z.getCoordinates(),a=l,m=!1,z.getType()){case"MultiLineString":l[Ie.depth[0]].length>2&&(l[Ie.depth[0]].splice(q,1),m=!0);break;case"LineString":l.length>2&&(l.splice(q,1),m=!0);break;case"MultiPolygon":a=a[Ie.depth[1]];case"Polygon":a=a[Ie.depth[0]],a.length>4&&(q==a.length-1&&(q=0),a.splice(q,1),m=!0,q===0&&(a.pop(),a.push(a[0]),de=a.length-1));break;default:}if(m){this.setGeometryCoordinates_(z,l);let nt=[];if(V!==void 0&&(this.rBush_.remove(V),nt.push(V.segment[0])),pe!==void 0&&(this.rBush_.remove(pe),nt.push(pe.segment[1])),V!==void 0&&pe!==void 0){let we={depth:Ie.depth,feature:Ie.feature,geometry:Ie.geometry,index:de,segment:nt};this.rBush_.insert(bu(we.segment),we)}this.updateSegmentIndices_(z,q,Ie.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),i.length=0}}return m}setGeometryCoordinates_(i,u){this.changingFeature_=!0,i.setCoordinates(u),this.changingFeature_=!1}updateSegmentIndices_(i,u,m,a){this.rBush_.forEachInExtent(i.getExtent(),function(l){l.geometry===i&&(m===void 0||l.depth===void 0||xs(l.depth,m))&&l.index>u&&(l.index+=a)})}};function F2(v,i){return v.index-i.index}function ib(v,i,u){let m=i.geometry;if(m.getType()==="Circle"){let l=m;if(i.index===Ff){let M=Su();M&&(l=l.clone().transform(M,u));let z=Hp(l.getCenter(),Ro(v,u)),D=Math.sqrt(z)-l.getRadius();return D*D}}let a=Ro(v,u);return fd[0]=Ro(i.segment[0],u),fd[1]=Ro(i.segment[1],u),h0(a,fd)}function rb(v,i,u){let m=i.geometry;if(m.getType()==="Circle"&&i.index===Ff){let l=m,M=Su();return M&&(l=l.clone().transform(M,u)),Yp(l.getClosestPoint(Ro(v,u)),u)}let a=Ro(v,u);return fd[0]=Ro(i.segment[0],u),fd[1]=Ro(i.segment[1],u),Yp(Wy(a,fd),u)}function O2(){let v=g1();return function(i,u){return v.Point}}var kv=Pv;var Rv=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.supportedMediaTypes=null}getReadOptions(i,u){if(u){let m=u.dataProjection?Zo(u.dataProjection):this.readProjection(i);u.extent&&m&&m.getUnits()==="tile-pixels"&&(m=Zo(m),m.setWorldExtent(u.extent)),u={dataProjection:m,featureProjection:u.featureProjection}}return this.adaptOptions(u)}adaptOptions(i){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection},i)}getType(){return Xi()}readFeature(i,u){return Xi()}readFeatures(i,u){return Xi()}readGeometry(i,u){return Xi()}readProjection(i){return Xi()}writeFeature(i,u){return Xi()}writeFeatures(i,u){return Xi()}writeGeometry(i,u){return Xi()}},nb=Rv;function Lv(v,i,u){let m=u?Zo(u.featureProjection):null,a=u?Zo(u.dataProjection):null,l;if(m&&a&&!y0(m,a)?l=(i?v.clone():v).transform(i?m:a,i?a:m):l=v,i&&u&&u.decimals!==void 0){let M=Math.pow(10,u.decimals),z=function(D){for(let q=0,V=D.length;q<V;++q)D[q]=Math.round(D[q]*M)/M;return D};l===v&&(l=v.clone()),l.applyTransform(z)}return l}var zv=class extends nb{constructor(){super()}getType(){return"json"}readFeature(i,u){return this.readFeatureFromObject(Tg(i),this.getReadOptions(i,u))}readFeatures(i,u){return this.readFeaturesFromObject(Tg(i),this.getReadOptions(i,u))}readFeatureFromObject(i,u){return Xi()}readFeaturesFromObject(i,u){return Xi()}readGeometry(i,u){return this.readGeometryFromObject(Tg(i),this.getReadOptions(i,u))}readGeometryFromObject(i,u){return Xi()}readProjection(i){return this.readProjectionFromObject(Tg(i))}readProjectionFromObject(i){return Xi()}writeFeature(i,u){return JSON.stringify(this.writeFeatureObject(i,u))}writeFeatureObject(i,u){return Xi()}writeFeatures(i,u){return JSON.stringify(this.writeFeaturesObject(i,u))}writeFeaturesObject(i,u){return Xi()}writeGeometry(i,u){return JSON.stringify(this.writeGeometryObject(i,u))}writeGeometryObject(i,u){return Xi()}};function Tg(v){if(typeof v=="string"){let i=JSON.parse(v);return i||null}else if(v!==null)return v;return null}var ob=zv;var Dv=class extends ob{constructor(i){i=i||{},super(),this.dataProjection=Zo(i.dataProjection?i.dataProjection:"EPSG:4326"),i.featureProjection&&(this.defaultFeatureProjection=Zo(i.featureProjection)),this.geometryName_=i.geometryName,this.extractGeometryName_=i.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(i,u){let m=null;i.type==="Feature"?m=i:m={type:"Feature",geometry:i,properties:null};let a=Fv(m.geometry,u),l=new Tu;return this.geometryName_?l.setGeometryName(this.geometryName_):this.extractGeometryName_&&"geometry_name"in m!==void 0&&l.setGeometryName(m.geometry_name),l.setGeometry(a),"id"in m&&l.setId(m.id),m.properties&&l.setProperties(m.properties,!0),l}readFeaturesFromObject(i,u){let m=i,a=null;if(m.type==="FeatureCollection"){let l=i;a=[];let M=l.features;for(let z=0,D=M.length;z<D;++z)a.push(this.readFeatureFromObject(M[z],u))}else a=[this.readFeatureFromObject(i,u)];return a}readGeometryFromObject(i,u){return Fv(i,u)}readProjectionFromObject(i){let u=i.crs,m;return u?u.type=="name"?m=Zo(u.properties.name):u.type==="EPSG"?m=Zo("EPSG:"+u.properties.code):zr(!1,36):m=this.dataProjection,m}writeFeatureObject(i,u){u=this.adaptOptions(u);let m={type:"Feature",geometry:null,properties:null},a=i.getId();if(a!==void 0&&(m.id=a),!i.hasProperties())return m;let l=i.getProperties(),M=i.getGeometry();return M&&(m.geometry=Ov(M,u),delete l[i.getGeometryName()]),Gl(l)||(m.properties=l),m}writeFeaturesObject(i,u){u=this.adaptOptions(u);let m=[];for(let a=0,l=i.length;a<l;++a)m.push(this.writeFeatureObject(i[a],u));return{type:"FeatureCollection",features:m}}writeGeometryObject(i,u){return Ov(i,this.adaptOptions(u))}};function Fv(v,i){if(!v)return null;let u;switch(v.type){case"Point":{u=U2(v);break}case"LineString":{u=V2(v);break}case"Polygon":{u=q2(v);break}case"MultiPoint":{u=j2(v);break}case"MultiLineString":{u=N2(v);break}case"MultiPolygon":{u=G2(v);break}case"GeometryCollection":{u=B2(v);break}default:throw new Error("Unsupported GeoJSON type: "+v.type)}return Lv(u,!1,i)}function B2(v,i){let u=v.geometries.map(function(m){return Fv(m,i)});return new C0(u)}function U2(v){return new xa(v.coordinates)}function V2(v){return new Wl(v.coordinates)}function N2(v){return new U0(v.coordinates)}function j2(v){return new hg(v.coordinates)}function G2(v){return new Z0(v.coordinates)}function q2(v){return new mf(v.coordinates)}function Ov(v,i){v=Lv(v,!0,i);let u=v.getType(),m;switch(u){case"Point":{m=H2(v,i);break}case"LineString":{m=W2(v,i);break}case"Polygon":{m=Y2(v,i);break}case"MultiPoint":{m=$2(v,i);break}case"MultiLineString":{m=X2(v,i);break}case"MultiPolygon":{m=K2(v,i);break}case"GeometryCollection":{m=Z2(v,i);break}case"Circle":{m={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+u)}return m}function Z2(v,i){return i=Object.assign({},i),delete i.featureProjection,{type:"GeometryCollection",geometries:v.getGeometriesArray().map(function(m){return Ov(m,i)})}}function W2(v,i){return{type:"LineString",coordinates:v.getCoordinates()}}function X2(v,i){return{type:"MultiLineString",coordinates:v.getCoordinates()}}function $2(v,i){return{type:"MultiPoint",coordinates:v.getCoordinates()}}function K2(v,i){let u;return i&&(u=i.rightHanded),{type:"MultiPolygon",coordinates:v.getCoordinates(u)}}function H2(v,i){return{type:"Point",coordinates:v.getCoordinates()}}function Y2(v,i){let u;return i&&(u=i.rightHanded),{type:"Polygon",coordinates:v.getCoordinates(u)}}var Sl=Dv;var Ig,J2=new Uint8Array(16);function Bv(){if(!Ig&&(Ig=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ig))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ig(J2)}var wa=[];for(let v=0;v<256;++v)wa.push((v+256).toString(16).slice(1));function ab(v,i=0){return(wa[v[i+0]]+wa[v[i+1]]+wa[v[i+2]]+wa[v[i+3]]+"-"+wa[v[i+4]]+wa[v[i+5]]+"-"+wa[v[i+6]]+wa[v[i+7]]+"-"+wa[v[i+8]]+wa[v[i+9]]+"-"+wa[v[i+10]]+wa[v[i+11]]+wa[v[i+12]]+wa[v[i+13]]+wa[v[i+14]]+wa[v[i+15]]).toLowerCase()}var Q2=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Uv={randomUUID:Q2};function eS(v,i,u){if(Uv.randomUUID&&!i&&!v)return Uv.randomUUID();v=v||{};let m=v.random||(v.rng||Bv)();if(m[6]=m[6]&15|64,m[8]=m[8]&63|128,i){u=u||0;for(let a=0;a<16;++a)i[u+a]=m[a];return i}return ab(m)}var Vv=eS;var tp=class extends lo{constructor(u={}){super();this.properties={};this.options={};this.defineProperties(u),u.properties&&this.setProperties(u.properties),this.options=u,this.visible=u.visible===void 0?!0:!!u.visible,this.group=u.group,this.copyrights=u.copyrights,this.children=u.children,this.on("change:visible:group",m=>{this.group===m.target.group&&this!==m.target&&this.visible?this.visible=!1:this.children&&this.children.forEach(a=>a.dispatchEvent(m))})}defineProperties(u={}){let{name:m,key:a,properties:l,hitTolerance:M}={...u},z=Vv();Object.defineProperties(this,{name:{value:m},key:{value:a||m||z},group:{get:()=>this.get("group"),set:D=>{this.set("group",D)}},copyrights:{get:()=>this.get("copyrights"),set:D=>{let q=D&&!Array.isArray(D)?[D]:D;this.set("copyrights",q||[])}},options:{value:u},map:{writable:!0},visible:{get:()=>this.get("visible"),set:D=>{if(D!==this.visible)if(this.set("visible",D),this.visible){if(this.parent&&(this.parent.visible=!0),this.children&&!this.children.some(q=>q.visible)&&this.children.forEach(q=>{q.visible=!0}),this.parent&&this.group){let q=this.parent;for(;q.parent;)q=q.parent;let V=new nn("change:visible:group");V.target=this,q.dispatchEvent(V)}}else this.visible||(this.children&&this.children.forEach(q=>{q.visible=!1}),this.parent&&this.parent.visible&&this.parent.children&&!this.parent.children.find(q=>q.visible)&&(this.parent.visible=!1))}},disabled:{get:()=>this.get("disabled"),set:D=>{this.set("disabled",D)}},parent:{value:null,writable:!0},children:{get:()=>this.get("children")||[],set:D=>{(this.children||[]).forEach(q=>{q.parent=void 0}),Array.isArray(D)&&D.forEach(q=>{q.parent=this}),this.set("children",D||[])}},hitTolerance:{value:M||5,writable:!0},properties:{value:{...l||{}}}})}attachToMap(u){this.detachFromMap(),this.map=u,this.children&&this.children.forEach(m=>{m.attachToMap(u)})}detachFromMap(){this.map=void 0}getFeatureInfoAtCoordinate(u,m){return console.error("getFeatureInfoAtCoordinate must be implemented by inheriting layers",this.key),Promise.resolve({layer:this,features:[],coordinate:u})}flat(){return Yd(this)}};function tS(v){return class extends v{constructor(u={}){super(u);let{userInteractions:m=!0,userClickInteractions:a=!0,userHoverInteractions:l=!0,defaultUserInteractions:M=!0}=u;this.userInteractions=m,this.userClickInteractions=a,this.userHoverInteractions=l,this.defaultUserInteractions=M,this.userClickCallbacks=[],this.userHoverCallbacks=[],this.userClickEventsKeys=[],this.userHoverEventsKeys=[],this.onUserClickCallback=this.onUserClickCallback.bind(this),this.onUserMoveCallback=this.onUserMoveCallback.bind(this);let{onClick:z,onHover:D}=u;this.userInteractions&&this.userClickInteractions&&z&&this.onClick(z),this.userInteractions&&this.userHoverInteractions&&D&&this.onHover(D)}attachToMap(u){super.attachToMap(u),this.userInteractions&&this.defaultUserInteractions&&this.userClickInteractions&&this.onFeatureClick&&this.onClick(this.onFeatureClick),this.userInteractions&&this.defaultUserInteractions&&this.userHoverInteractions&&this.onFeatureHover&&this.onHover(this.onFeatureHover),this.listenEvents()}detachFromMap(){this.unlistenEvents(),super.detachFromMap()}listenEvents(){this.unlistenEvents(),this.userClickCallbacks.forEach(u=>{this.userClickEventsKeys.push(this.on("user:click",({target:{features:m,layer:a,coordinate:l,event:M}})=>{u(m,a,l,M)}))}),this.userHoverCallbacks.forEach(u=>{this.userHoverEventsKeys.push(this.on("user:hover",({target:{features:m,layer:a,coordinate:l,event:M}})=>{u(m,a,l,M)}))})}unlistenEvents(){Ja(this.userClickEventsKeys),Ja(this.userHoverEventsKeys),this.userClickEventsKeys=[],this.userHoverEventsKeys=[]}onClick(u){this.userClickCallbacks.push(u),this.activateUserInteractions(),this.map&&this.listenEvents()}onHover(u){this.userHoverCallbacks.push(u),this.activateUserInteractions(),this.map&&this.listenEvents()}unClick(u){let m=this.userClickCallbacks.indexOf(u);m===-1&&(this.userClickCallbacks=this.userClickCallbacks.slice(m,1),this.map&&this.listenEvents())}unHover(u){let m=this.userHoverCallbacks.indexOf(u);m===-1&&(this.userHoverCallbacks=this.userHoverCallbacks.slice(m,1),this.map&&this.listenEvents())}onUserClickCallback(u){let m=u.coordinate||co(u.lngLat.toArray()),a={features:[],layer:this,coordinate:m,event:u};return this.getFeatureInfoAtCoordinate(m).then(l=>{let M=new nn("user:click");return M.target=l,this.dispatchEvent(M),l}).catch(()=>a)}onUserMoveCallback(u){let m=u.coordinate||co(u.lngLat.toArray()),a={features:[],layer:this,coordinate:m,event:u};return this.getFeatureInfoAtCoordinate(m).then(l=>{let M=new nn("user:hover");return M.target=l,this.dispatchEvent(M),l}).catch(()=>a)}activateUserInteractions(){}deactivateUserInteractions(){}}}var Cg=tS;var Bf=class extends Cg(tp){constructor(u){super(u);this.olLayer?.setVisible(this.visible)}defineProperties(u){super.defineProperties(u),Object.defineProperties(this,{olLayer:{value:u.olLayer,writable:!0},olListenersKeys:{value:[]}})}attachToMap(u){if(super.attachToMap(u),!!this.map&&(this.olLayer?.setVisible(this.visible),this.olLayer&&!this.map?.getLayers()?.getArray()?.includes(this.olLayer)&&this.map.addLayer(this.olLayer),this.olListenersKeys.push(this.on("change:visible",()=>{this.olLayer&&this.olLayer.setVisible(this.visible)})),this.olListenersKeys.push(this.map.getLayers().on("remove",m=>{m.element===this.olLayer&&this.detachFromMap()})),this.toggleVisibleListeners(),this.olListenersKeys.push(this.on("change:visible",this.toggleVisibleListeners)),this.copyrights&&this.olLayer)){let m=this.copyrights||[];this.olLayer.getLayers?this.olLayer.getLayers().getArray().forEach(a=>{a.getSource&&a.getSource()?.setAttributions(m)}):this.olLayer.getSource&&this.olLayer.getSource()?.setAttributions(m)}}detachFromMap(){this.deactivateUserInteractions(),Ja(this.olListenersKeys),this.olLayer&&this.map?.getLayers()?.getArray()?.includes(this.olLayer)&&this.map.removeLayer(this.olLayer),super.detachFromMap()}activateUserInteractions(){this.deactivateUserInteractions(),this.map&&this.userInteractions&&this.userClickInteractions&&this.userClickCallbacks?.length&&(this.singleClickListenerKey=this.map.on("singleclick",this.onUserClickCallback),this.olListenersKeys.push(this.singleClickListenerKey)),this.map&&this.userInteractions&&this.userHoverInteractions&&this.userHoverCallbacks?.length&&(this.pointerMoveListenerKey=this.map.on("pointermove",this.onUserMoveCallback))}deactivateUserInteractions(){Ja([this.pointerMoveListenerKey,this.singleClickListenerKey])}toggleVisibleListeners(){this.visible?this.activateUserInteractions():this.deactivateUserInteractions()}clone(u){return new Bf({...this.options,...u})}},As=Bf;var sb=new Cs({radius:6,fill:new ba({color:[255,0,0,1]}),stroke:new Wo({color:[0,0,0,1],width:1})}),iS=new Fa({stroke:new Wo({color:[0,0,0,1],width:5})}),rS=new Fa({image:sb,stroke:new Wo({color:[255,0,0,1],width:3})}),nS=new Fa({image:sb,stroke:new Wo({color:[255,0,0,1],width:3,lineDash:[1,10]})}),oS=(v,i)=>{let u=v.get("minResolution"),m=v.get("maxResolution"),a=i<=u&&i>m;return u&&m&&!a?[]:v.get("mot")!=="foot"?[iS,rS]:[nS]},Uf=class extends As{constructor(u){super(u);this.options={};this.olLayer=u.olLayer||new Qh({source:new ep,style:u.style||oS})}clone(u){return new Uf({...this.options,...u})}},Ag=Uf;var aS=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,lb=/^([\d.]+),([\d.]+)$/,ub=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,Mg="stop-fetch",cb=v=>{let i=[];return v.forEach(u=>{let m=u.getGeometry()?.getCoordinates();m?.length&&i.push(...m)}),i},Vf=class extends ad{constructor(u={}){super(u);this.viaPoints=[];this.loading=!1;this.graphs=[];this.modify=!0;this.useRawViaPoints=!1;this.snapToClosestStation=!1;this.cacheStationData={};this.abortControllers={};this.segments=[];this.format=new Sl({featureProjection:"EPSG:3857"});this.initialRouteDrag={};Object.defineProperties(this,{mot:{get:()=>this.get("mot"),set:m=>{m&&(this.set("mot",m),this.viaPoints&&this.drawRoute())}},loading:{get:()=>this.get("loading"),set:m=>{this.set("loading",m)}},modify:{get:()=>this.get("modify"),set:m=>{this.set("modify",m)}}}),this.loading=!1,this.graphs=u.graphs||[["osm",0,99]],this.mot=u.mot||"bus",this.modify=u.modify!==!1,this.routingApiParams=u.routingApiParams,this.useRawViaPoints=u.useRawViaPoints||!1,this.snapToClosestStation=u.snapToClosestStation||!1,this.apiKey=u.apiKey,this.stopsApiKey=u.stopsApiKey||this.apiKey,this.stopsApiUrl=u.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new Xd({...u}),this.routingLayer=u.routingLayer||new Ag({name:"routing-layer",style:u.style}),this.onRouteError=u.onRouteError||(m=>{this.dispatchEvent(new nn("change:route")),this.reset(),console.error(m)}),this.onMapClick=this.onMapClick.bind(this),this.onModifyEnd=this.onModifyEnd.bind(this),this.onModifyStart=this.onModifyStart.bind(this),this.createModifyInteraction()}static getGraphsResolutions(u,m){let a=m.getView();return u.map(([,l,M])=>[a.getResolutionForZoom(l),a.getResolutionForZoom(M||l+1)])}addViaPoint(u,m=-1,a=0){this.viaPoints.splice(m===-1?this.viaPoints.length:m,a,u),this.drawRoute(),this.dispatchEvent(new nn("change:route"))}removeViaPoint(u=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[u]&&this.viaPoints.splice(u,1),this.drawRoute(),this.dispatchEvent(new nn("change:route"))}setViaPoints(u){this.viaPoints=[...u],this.drawRoute(),this.dispatchEvent(new nn("change:route"))}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.olLayer?.getSource()?.clear(),this.dispatchEvent(new nn("change:route"))}abortRequests(){this.graphs.forEach(u=>{let m=u[0];this.abortControllers[m]&&this.abortControllers[m].abort(),this.abortControllers[m]=new AbortController}),this.abortControllers[Mg]?.abort(),this.abortControllers[Mg]=new AbortController,this.loading=!1}drawRoute(){if(this.abortRequests(),this.routingLayer?.olLayer?.getSource()?.clear(),!this.viaPoints.length)return null;if(this.viaPoints.length===1)return this.drawViaPoint(this.viaPoints[0],0,this.abortControllers[Mg]);let u=this.viaPoints.map(m=>{if(Array.isArray(m)){let a=this.map?.getView().getProjection(),[l,M]=sh(m,a);return this.snapToClosestStation?[`@${M}`,l]:[M,l]}return this.useRawViaPoints?m:`!${m}`});return this.loading=!0,this.routingLayer?.olLayer?.getSource()?.clear(),this.viaPoints.forEach((m,a)=>this.drawViaPoint(m,a,this.abortControllers[Mg])),Promise.all(this.graphs.map(([m],a)=>{let{signal:l}=this.abortControllers[m];return this.api?this.api.route({graph:m,via:`${u.join("|")}`,mot:this.mot,"resolve-hops":!1,elevation:!1,"coord-radius":100,"coord-punish":1e3,...this.routingApiParams||{}},{signal:l}).then(M=>{if(this.segments=this.format.readFeatures(M),this.mot==="foot"){let q=this.segments.reduce((V,de)=>{let pe=de.get("trg");return V.find(Ie=>Ie[0]===pe[0]&&Ie[1]===pe[1])?V:[...V,pe]},[]);this.segments=q.map(V=>{let de=this.segments.filter(Ie=>{let Ne=Ie.get("trg");return Ne[0]===V[0]&&Ne[1]===V[1]}),pe=cb(de);return new Tu({geometry:new Wl(pe)})})}let z=cb(this.segments),D=new Tu({geometry:new Wl(z)});D.set("graph",m),D.set("mot",this.mot),this.graphsResolutions&&this.graphsResolutions[a]?.length>=2&&(D.set("minResolution",this.graphsResolutions[a][0]),D.set("maxResolution",this.graphsResolutions[a][1])),this.routingLayer?.olLayer?.getSource()?.addFeature(D),this.loading=!1}).catch(M=>{M.name!=="AbortError"&&(this.segments=[],this.dispatchEvent(new nn("error")),this.onRouteError(M,this),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(u,m,a){let l=new Tu;if(l.set("viaPointIdx",m),Array.isArray(u))return l.setGeometry(new xa(u)),this.routingLayer?.olLayer?.getSource()?.addFeature(l),Promise.resolve(l);if(!this.useRawViaPoints||ub.test(u)){let V,de;return this.useRawViaPoints?[,V,,de]=ub.exec(u)||[]:[V,de]=u.split("$"),fetch(`${this.stopsApiUrl}lookup/${V}?key=${this.stopsApiKey}`,{signal:a.signal}).then(pe=>pe.json()).then(pe=>{let{coordinates:Ie}=pe.features[0].geometry;return this.cacheStationData[u]=co(Ie),l.set("viaPointTrack",de),l.setGeometry(new xa(co(Ie))),this.routingLayer?.olLayer?.getSource()?.addFeature(l),l}).catch(pe=>{pe.name!=="AbortError"&&(this.dispatchEvent(new nn("error")),this.onRouteError(pe,this),this.loading=!1)})}if(this.useRawViaPoints&&lb.test(u)){let[V,de]=lb.exec(u)||[];if(de&&V){let pe=parseFloat(de),Ie=parseFloat(V),Ne=co([pe,Ie],this.map?.getView().getProjection());return l.setGeometry(new xa(Ne)),this.routingLayer?.olLayer?.getSource()?.addFeature(l),Promise.resolve(l)}}let[,M,,z,D,,q]=aS.exec(u)||[];if(D&&z){let V=co([parseFloat(D),parseFloat(z)],this.map?.getView().getProjection());return l.set("viaPointTrack",q),l.setGeometry(new xa(V)),this.routingLayer?.olLayer?.getSource()?.addFeature(l),Promise.resolve(l)}return M?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${M}&limit=1`,{signal:a.signal}).then(V=>V.json()).then(V=>{let{coordinates:de}=V.features[0].geometry;return this.cacheStationData[u]=co(de),l.set("viaPointTrack",q),l.setGeometry(new xa(co(de))),this.routingLayer?.olLayer?.getSource()?.addFeature(l),l}).catch(V=>(this.dispatchEvent(new nn("error")),this.onRouteError(V,this),this.loading=!1,null)):Promise.resolve(null)}onMapClick(u){let a=u.target.getFeaturesAtPixel(u.pixel).find(l=>l.getGeometry()?.getType()==="Point"&&l.get("viaPointIdx")!==void 0);if(a){this.removeViaPoint(a.get("viaPointIdx"));return}this.addViaPoint(u.coordinate)}onModifyStart(u){let m=-1,a=u.features.getArray().find(M=>M.getGeometry()?.getType()==="LineString");if(a&&a.getGeometry()&&u.mapBrowserEvent.coordinate){let M=_l(new xa(a.getGeometry()?.getClosestPoint(u.mapBrowserEvent.coordinate)).getExtent(),.001);m=this.segments.findIndex(z=>z.getGeometry()?.intersectsExtent(M))}let l=(u.features.getArray().filter(M=>M.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={viaPoint:l,oldRoute:a&&a.clone(),segmentIndex:m}}onModifyEnd(u){let m=u.mapBrowserEvent.coordinate,{oldRoute:a,viaPoint:l,segmentIndex:M}=this.initialRouteDrag||{};return l?this.addViaPoint(m,l.get("viaPointIdx"),1):a?M===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(m,(M||0)+1):this.addViaPoint(m,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 kv({source:this.routingLayer?.olLayer?.getSource()||void 0,pixelTolerance:4,hitDetection:this.routingLayer?.olLayer,deleteCondition:u=>{let a=u.target.getFeaturesAtPixel(u.pixel,{hitTolerance:5}).find(l=>l.getGeometry()?.getType()==="Point"&&l.get("index"));return Y1(u)&&a?(this.removeViaPoint(a.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.map?.on("singleclick",this.onMapClick))}removeListeners(){this.onMapClickKey&&Ja(this.onMapClickKey)}activate(){super.activate(),this.map&&(this.format=new Sl({featureProjection:this.map.getView().getProjection()}),this.graphsResolutions=Vf.getGraphsResolutions(this.graphs,this.map),this.modifyInteraction&&this.map.removeInteraction(this.modifyInteraction),this.routingLayer?.attachToMap(this.map),this.modifyInteraction&&this.map.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}deactivate(){this.map&&(this.routingLayer?.detachFromMap(),this.modifyInteraction&&this.map.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}render(){}},hb=Vf;var Nv=class extends ad{constructor(u){super(u);let{apiParams:m,apiKey:a,url:l,placeholder:M}=u||{};this.apiParams={limit:20,...m||{}},this.placeholder=M||"Search for a stop...";let z={apiKey:a};l&&(z.url=l),this.api=new $d(z),this.abortController=new AbortController}deactivate(){}render(u){let m=u?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=m.length?"block":"none",this.suggestionsElt.innerHTML="",m.forEach(a=>{let l=document.createElement("div");l.innerHTML=a?.properties?.name,l.onclick=()=>{this.onSuggestionClick(a)},Object.assign(l.style,{padding:"5px 12px"}),this.suggestionsElt?.appendChild(l)}))}createDefaultElement(){this.element=document.createElement("div"),this.element.id="mbt-search",Object.assign(this.element.style,{position:"absolute",top:0,left:"50px",margin:"10px",display:"flex",flexDirection:"column",width:"320px"}),this.inputElt=document.createElement("input"),this.inputElt.type="text",this.inputElt.placeholder=this.placeholder,this.inputElt.autocomplete="off",this.inputElt.onkeyup=u=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(u.target.value,this.abortController)},Object.assign(this.inputElt.style,{padding:"10px 30px 10px 10px"}),this.element.appendChild(this.inputElt),this.suggestionsElt=document.createElement("div"),Object.assign(this.suggestionsElt.style,{backgroundColor:"white",overflowY:"auto",cursor:"pointer"}),this.element.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(),this.element.appendChild(this.clearElt)}search(u,m){return(u!==void 0||u!==null)&&(this.apiParams.q=u),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,m&&{signal:m.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}onSuggestionClick(u){}clear(){!this.suggestionsElt||!this.inputElt||!this.clearElt||(this.inputElt.value="",this.suggestionsElt.innerHTML="",this.clearElt.style.display="none")}},pb=Nv;var jv=class extends pb{onSuggestionClick(i){let u=co(i.geometry.coordinates);this.map.getView().setCenter(u)}},db=jv;var mb=Vp(fb());var Zv=class extends As{constructor(u){super(u);this.olLayer=new Kh({source:new dd({}),render:this.getOlLayerRender()}),this.styleUrl=u.url,this.apiKey=u.apiKey,this.apiKeyName=u.apiKeyName||"key",this.updateAttribution=this.updateAttribution.bind(this)}attachToMap(u){super.attachToMap(u),this.map&&(this.format=new Sl({featureProjection:this.map.getView().getProjection()}),this.loadMbMap())}detachFromMap(){this.mbMap&&(this.mbMap.off("idle",this.updateAttribution),this.mbMap.triggerRepaint=()=>{},this.mbMap.remove(),this.mbMap=void 0),this.loaded=!1,super.detachFromMap()}loadMbMap(){if(this.olListenersKeys.push(this.map?.on("change:target",()=>{this.loadMbMap()})),!this.map?.getTargetElement())return;if(!this.visible){this.olListenersKeys.push(this.once("change:visible",()=>{this.loadMbMap()}));return}let u=document.createElement("div");if(u.style.position="absolute",u.style.width="100%",u.style.height="100%",!this.styleUrl){console.error(`No styleUrl defined for mapbox layer: ${this.styleUrl}`);return}!this.apiKey&&!this.styleUrl?.includes(this.apiKeyName)&&console.error(`No apiKey defined for mapbox layer with style url to ${this.styleUrl}`);let m=this.getMapboxMapClass();this.mbMap=new m({style:Gh(this.styleUrl,{[this.apiKeyName]:this.apiKey}).toString(),container:u,interactive:!1,trackResize:!1,attributionControl:!1,...this.options.mapOptions||{}}),this.mbMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new nn("load"))}),this.mbMap.on("idle",this.updateAttribution)}updateAttribution(u){let m=sc(u.target)||[];this.copyrights?.toString()!==m.toString()&&(this.copyrights=m,this.olLayer?.getSource()?.setAttributions(m))}getFeatureInfoAtCoordinate(u,m){if(!m||!this.format||!this.mbMap||!this.mbMap.isStyleLoaded())return Promise.resolve({coordinate:u,features:[],layer:this});let a=u&&this.mbMap.project(sh(u)),l;if(this.hitTolerance){let{x:z,y:D}=a;l=[{x:z-this.hitTolerance,y:D-this.hitTolerance},{x:z+this.hitTolerance,y:D+this.hitTolerance}]}let M=this.mbMap.queryRenderedFeatures(l||a,m).map(z=>{let D=this.format.readFeature(z);return D&&D.set("mapboxFeature",z),D});return Promise.resolve({layer:this,features:M,coordinate:u})}getOlLayerRender(){console.error("This function must be implemented in subclasses");let u=document.createElement("div");return()=>u}getMapboxMapClass(){return console.error("This function must be implemented in subclasses"),null}},Pg=Zv;var ip=class extends Pg{attachToMap(u){super.attachToMap(u),this.map&&this.olListenersKeys.push(this.map.on("change:size",()=>{try{this.mbMap&&this.mbMap.resize()}catch(m){console.warn(m)}}))}loadMbMap(){let[u,m]=this.map?.getView().getCenter()||[];if((!u||!m)&&(u=0,m=0),this.renderState={center:[u,m],zoom:void 0,rotation:void 0,visible:void 0,opacity:void 0,size:[0,0]},super.loadMbMap(),!this.mbMap)return;this.mbMap.once("load",()=>{this.mbMap&&(this.mbMap.resize(),this.copyrights=sc(this.mbMap)||[],this.olLayer?.getSource()?.setAttributions(this.copyrights))});let a=this.mbMap.getCanvas();a&&(this.options.tabIndex?a.setAttribute("tabindex",`${this.options.tabIndex}`):a.removeAttribute("tabindex"))}getOlLayerRender(){return nd(this)}getMapboxMapClass(){return mb.Map}clone(u){return new ip({...this.options,...u})}};var _b=Vp(yb());var rp=class extends Pg{getOlLayerRender(){return rd(this)}getMapboxMapClass(){return _b.Map}clone(u){return new rp({...this.options,...u})}};var Nf=class extends As{constructor(u){super(u);this.mapboxLayer=u.mapboxLayer,this.disabled=!1,this.styleLayersFilter=u.styleLayersFilter,this.beforeId=u.beforeId,this.featureInfoFilter=u.featureInfoFilter||(m=>m),this.queryRenderedLayersFilter=u.queryRenderedLayersFilter,this.highlightedFeatures=[],this.selectedFeatures=[],this.styleLayers=(u.styleLayer?[u.styleLayer]:u.styleLayers)||[],this.addStyleLayers=this.addStyleLayers.bind(this),this.onLoad=this.onLoad.bind(this),u.filters&&(this.addDynamicFilters=()=>{this.setFilter(typeof u.filters=="function"?u.filters(this):u.filters)}),!this.styleLayersFilter&&this.styleLayers&&(this.styleLayersFilter=m=>!!this.styleLayers?.find(a=>m.id===a.id))}attachToMap(u){if(this.mapboxLayer&&!this.mapboxLayer.map&&this.mapboxLayer?.attachToMap(u),super.attachToMap(u),!this.map||!this.mapboxLayer)return;let{mbMap:m}=this.mapboxLayer;if(!m){this.olListenersKeys.push(this.map.on("change:target",()=>{this.attachToMap(u)}));return}this.mapboxLayer.loaded||m.isStyleLoaded()||m.loaded()?this.onLoad():m.once("load",this.onLoad),this.olListenersKeys.push(this.on("change:visible",a=>{this.applyLayoutVisibility(a)})),this.olListenersKeys.push(this.mapboxLayer.on("load",()=>{this.onLoad()}))}detachFromMap(){if(this.mapboxLayer?.mbMap){let{mbMap:u}=this.mapboxLayer;u.off("load",this.onLoad),this.removeStyleLayers()}super.detachFromMap()}addStyleLayers(){if(!this.mapboxLayer?.mbMap)return;let{mbMap:u}=this.mapboxLayer;this.styleLayers.forEach(m=>{let{id:a,source:l}=m;u.getSource(l)&&a&&!u.getLayer(a)&&u.addLayer(m,this.beforeId)}),this.applyLayoutVisibility()}removeStyleLayers(){if(!this.mapboxLayer?.mbMap)return;let{mbMap:u}=this.mapboxLayer;this.styleLayers.forEach(m=>{let{id:a}=m;a&&u.getLayer(a)&&u.removeLayer(a)})}onLoad(){if(this.addStyleLayers(),this.addDynamicFilters&&this.addDynamicFilters(),!this.mapboxLayer?.mbMap)return;let{mbMap:u}=this.mapboxLayer,m=u.getStyle();if(m&&this.styleLayersFilter){let a=m.layers.filter(this.styleLayersFilter);this.disabled=!a.length}}getFeatureInfoAtCoordinate(u){if(!this.mapboxLayer?.mbMap)return Promise.resolve({coordinate:u,features:[],layer:this});let{mbMap:m}=this.mapboxLayer;if(!m.isStyleLoaded())return Promise.resolve({coordinate:u,features:[],layer:this});let a=this.styleLayers||[];return this.styleLayersFilter&&(a=m.getStyle().layers.filter(this.styleLayersFilter)),this.queryRenderedLayersFilter&&(a=m.getStyle().layers.filter(this.queryRenderedLayersFilter)),this.mapboxLayer.getFeatureInfoAtCoordinate(u,{layers:a.map(l=>l&&l.id),validate:!1}).then(l=>{let M=l.features.filter(z=>this.featureInfoFilter(z,this.map?.getView().getResolution()));return this.highlight(M),{...l,features:M,layer:this}})}setFilter(u){if(!this.mapboxLayer?.mbMap)return;let{mbMap:m}=this.mapboxLayer;this.styleLayers.forEach(({id:a})=>{a&&u&&m.getLayer(a)&&m.setFilter(a,u)})}setHoverState(u,m){if(!this.mapboxLayer?.mbMap)return;let{mbMap:a}=this.mapboxLayer;!u||!a||u.forEach(l=>{let{source:M,sourceLayer:z}=l.get("mapboxFeature")||{};if(!M&&!z||!l.getId()){l.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/mapbox/tippecanoe#adding-calculated-attributes.",l.getId(),l.getProperties());return}a.setFeatureState({id:l.getId(),source:M,sourceLayer:z},{hover:m})})}select(u=[]){this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=u,this.setHoverState(this.selectedFeatures||[],!0)}highlight(u=[]){let m=this.highlightedFeatures?.filter(a=>!(this.selectedFeatures||[]).map(l=>l.getId()).includes(a.getId()))||[];this.setHoverState(m,!1),this.highlightedFeatures=u,this.setHoverState(this.highlightedFeatures,!0)}applyLayoutVisibility(u){let{visible:m}=this,a=this.styleLayersFilter;if(!this.mapboxLayer?.mbMap)return;let{mbMap:l}=this.mapboxLayer,M=l.getStyle();if(M&&a){let z=m?"visible":"none",D=M.layers||[];for(let q=0;q<D.length;q+=1){let V=D[q];a(V)&&l.getLayer(V.id)&&l.setLayoutProperty(V.id,"visibility",z)}}}clone(u){return new Nf({...this.options,...u})}},vb=Nf;var Yv=Vp(Sb()),Jv=Vp(Ab());function NS(v){return class extends v{constructor(m){super({hitTolerance:10,...m});this.debug=m.debug||!1,this.mode=m.mode||Go.TOPOGRAPHIC,this.api=m.api||new Hd(m),this.tenant=m.tenant||"",this.minZoomInterpolation=m.minZoomInterpolation||8,this.format=new Sl,this.onStart=m.onStart,this.onStop=m.onStop;let a=["tram","subway","rail","bus","ferry","cablecar","gondola","funicular","coach"],l=["rail"],M=["tram","subway","rail","bus"];this.motsByZoom=m.motsByZoom||[l,l,l,l,l,l,l,l,l,M,M,a,a,a,a],this.getMotsByZoom=z=>m.getMotsByZoom&&m.getMotsByZoom(z,this.motsByZoom)||this.motsByZoom[z]||this.motsByZoom[this.motsByZoom.length-1],this.generalizationLevelByZoom=m.generalizationLevelByZoom||[5,5,5,5,5,5,5,5,10,30,30,100,100,100],this.getGeneralizationLevelByZoom=z=>m.getGeneralizationLevelByZoom&&m.getGeneralizationLevelByZoom(z,this.generalizationLevelByZoom)||this.generalizationLevelByZoom[z],this.renderTimeIntervalByZoom=m.renderTimeIntervalByZoom||[1e5,5e4,4e4,3e4,2e4,15e3,1e4,5e3,2e3,1e3,400,300,250,180,90,60,50,50,50,50,50],this.getRenderTimeIntervalByZoom=z=>m.getRenderTimeIntervalByZoom&&m.getRenderTimeIntervalByZoom(z,this.renderTimeIntervalByZoom)||this.renderTimeIntervalByZoom[z],this.isUpdateBboxOnMoveEnd=m.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,Jv.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,Yv.default)(this.renderTrajectoriesInternal,50,{leading:!0,trailing:!0,maxWait:5e3}),this.onFeatureHover=this.onFeatureHover.bind(this),this.onFeatureClick=this.onFeatureClick.bind(this),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(m){let{style:a,speed:l,pixelRatio:M,hoverVehicleId:z,selectedVehicleId:D,filter:q,sort:V,time:de,live:pe,canvas:Ie,styleOptions:Ne,mode:nt}=m,we=Ie,Pe=l||1,et=de||new Date,ut=nt||Go.TOPOGRAPHIC,mt=a||$h;super.defineProperties(m),Object.defineProperties(this,{isTrackerLayer:{value:!0},canvas:{get:()=>(we||(we=document.createElement("canvas")),we),set:ct=>{we=ct}},mode:{get:()=>ut,set:ct=>{ct!==ut&&(ut=ct,this.api?.wsApi?.open&&(this.stop(),this.start()))}},style:{get:()=>mt,set:ct=>{mt=ct,this.renderTrajectories()}},styleOptions:{value:{...od,...Ne||{}}},speed:{get:()=>Pe,set:ct=>{Pe=ct,this.start()}},filter:{value:q,writable:!0},sort:{value:V,writable:!0},live:{value:pe===!1?pe:!0,writable:!0},time:{get:()=>et,set:ct=>{et=ct&&ct.getTime?ct:new Date(ct),this.renderTrajectories()}},trajectories:{value:{},writable:!0},hoverVehicleId:{value:z,writable:!0},selectedVehicleId:{value:D,writable:!0},pixelRatio:{value:M||(typeof window<"u"?window.devicePixelRatio:1),writable:!0},useRequestAnimationFrame:{value:m.useRequestAnimationFrame||!1,writable:!0},useThrottle:{value:m.useThrottle!==!1,writable:!0},useDebounce:{value:m.useDebounce||!1,writable:!0}})}attachToMap(m){super.attachToMap(m),this.visible&&this.start(),this.visibilityRef=this.on("change:visible",a=>{a.target.visible?this.start():this.stop()}),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),Ja(this.visibilityRef),this.canvas){let m=this.canvas.getContext("2d");m&&m.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(m,a=!1){if(!this.map||!this.trajectories)return!1;let l=this.live?Date.now():this.time?.getTime(),M=Object.values(this.trajectories);return this.sort&&M.sort(this.sort),!this.canvas||!this.style||(this.renderState=gf(this.canvas,M,this.style,{...m,pixelRatio:this.pixelRatio||1,time:l},{filter:this.filter,noInterpolate:(m.zoom||0)<this.minZoomInterpolation?!0:a,hoverVehicleId:this.hoverVehicleId,selectedVehicleId:this.selectedVehicleId,...this.styleOptions})),!0}renderTrajectories(m,a){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),m&&(!a&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(m,a)}):!a&&this.useDebounce?this.debounceRenderTrajectories(m,a):!a&&this.useThrottle?this.throttleRenderTrajectories(m,a):this.renderTrajectoriesInternal(m,a))}setBbox(m,a){if(this.trajectories&&m&&a){let M=Object.keys(this.trajectories);for(let z=M.length-1;z>=0;z-=1)this.purgeTrajectory(this.trajectories[M[z]],m,a)}if(!m)return;let l=[...m];this.isUpdateBboxOnMoveEnd&&a&&(l.push(a),this.tenant&&l.push(`tenant=${this.tenant}`),this.generalizationLevel=this.getGeneralizationLevelByZoom(a),this.generalizationLevel&&l.push(`gen=${this.generalizationLevel}`),this.mots=this.getMotsByZoom(a),this.mots&&l.push(`mots=${this.mots}`)),this.api.bbox=l}getRefreshTimeInMs(m=0){let a=m!==void 0?Math.round(m):-1,l=this.getRenderTimeIntervalByZoom(a)||25,M=Math.max(25,l/(this.speed||1)),z=Math.min(M,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,Jv.default)(this.renderTrajectoriesInternal,z,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,Yv.default)(this.renderTrajectoriesInternal,z,{leading:!0,trailing:!0,maxWait:5e3})),this.api?.buffer){let[,D]=this.api.buffer;this.api.buffer=[z,D]}return M}getVehicle(m){return this.trajectories&&Object.values(this.trajectories).filter(m)||[]}getFeatureInfoAtCoordinate(m,a){let{resolution:l,nb:M}=a,z=_l([...m,...m],this.hitTolerance*l),D=Object.values(this.trajectories||{});this.sort&&(D=D.sort(this.sort));let q=[];for(let V=0;V<D.length&&(D[V].properties.coordinate&&Ym(z,D[V].properties.coordinate)&&q.push(D[V]),q.length!==M);V+=1);return Promise.resolve({layer:this,features:q.map(V=>this.format.readFeature(V)),coordinate:m})}getTrajectoryInfos(m){let a=[this.api.getStopSequence(m),this.api.getFullTrajectory(m,this.mode,this.generalizationLevel)];return Promise.all(a).then(([l,M])=>({stopSequence:l,fullTrajectory:M}))}purgeOutOfDateTrajectories(){Object.entries(this.trajectories||{}).forEach(([m,a])=>{let l=a?.properties?.time_intervals;this.time&&l.length&&l[l.length-1][0]<this.time&&this.removeTrajectory(m)})}purgeTrajectory(m,a,l){let{type:M,bounds:z}=m.properties;return!uo(a,z)||this.mots&&!this.mots.includes(M)?(this.removeTrajectory(m),!0):!1}addTrajectory(m){this.filter&&!this.filter(m)||(this.trajectories||(this.trajectories={}),this.trajectories[m.properties.train_id]=m,this.renderTrajectories())}removeTrajectory(m){let a;typeof m!="string"?a=m?.properties?.train_id:a=m,this.trajectories&&delete this.trajectories[a]}onZoomEnd(){this.startUpdateTime()}onDocumentVisibilityChange(){this.visible&&(document.hidden?(this.stop(),this.trajectories={}):this.start())}onTrajectoryMessage(m){if(!m.content)return;let a=m.content,{geometry:l,properties:{train_id:M,time_since_update:z,raw_coordinates:D}}=a;z<0||this.purgeTrajectory(a)||(this.debug&&this.mode===Go.TOPOGRAPHIC&&D?a.properties.olGeometry=this.format.readGeometry({type:"Point",coordinates:co(D,this.map.getView().getProjection())}):a.properties.olGeometry=this.format.readGeometry(l),a.properties.timeOffset=Date.now()-m.timestamp,this.addTrajectory(a))}onDeleteTrajectoryMessage(m){m.content&&this.removeTrajectory(m.content)}onFeatureHover(m,a,l){let[M]=m,z=null;M&&(z=M.get("train_id")),this.hoverVehicleId!==z&&(this.hoverVehicleId=z,this.renderTrajectories(!0))}onFeatureClick(m,a,l){let[M]=m,z=null;M&&(z=M.get("train_id")),this.selectedVehicleId!==z&&(this.selectedVehicleId=z,this.selectedVehicle=M,this.renderTrajectories(!0))}}}var Rg=NS;var jS=new Fa({zIndex:2,image:new Cs({radius:5,fill:new ba({color:"#000000"})}),stroke:new Wo({color:"#000000",width:6})}),GS=(v,i,u)=>{let m="#ffffff",a=v.get("type"),l=v.get("stroke");return l&&l[0]!=="#"&&(l=`#${l}`),m=l||u?.getBgColor(a),m=/#ffffff/i.test(m)?"#ff0000":m,[jS,new Fa({zIndex:3,image:new Cs({radius:4,fill:new ba({color:m})}),stroke:new Wo({color:m,width:4})})]},Lg=GS;var qS=new Fa({zIndex:2,image:new Cs({radius:5,fill:new ba({color:"#000000"})}),stroke:new Wo({color:"#000000",width:6})}),ZS=new Fa({zIndex:3,image:new Cs({radius:4,fill:new ba({color:"#a0a0a0"})}),stroke:new Wo({color:"#a0a0a0",width:4})}),WS=()=>[qS,ZS],Mb=WS;var XS=new Sl,jf=class extends Rg(As){constructor(u){super({...u});this.allowRenderWhenAnimating=!1;this.allowRenderWhenAnimating=!!u.allowRenderWhenAnimating,this.olLayer=u.olLayer||new Tv({layers:[new Qh({source:new ep({features:[]}),style:(m,a)=>(u.fullTrajectoryStyle||Lg)(m,a,this.styleOptions)}),new Kh({source:new dd({}),render:m=>{if(this.container||(this.container=document.createElement("div"),this.container.style.position="absolute",this.container.style.width="100%",this.container.style.height="100%",this.transformContainer=document.createElement("div"),this.transformContainer.style.position="absolute",this.transformContainer.style.width="100%",this.transformContainer.style.height="100%",this.container.appendChild(this.transformContainer),this.canvas&&(this.canvas.style.position="absolute",this.canvas.style.top="0",this.canvas.style.left="0",this.canvas.style.transformOrigin="top left",this.transformContainer.appendChild(this.canvas))),this.renderedViewState){let{center:a,resolution:l,rotation:M}=m.viewState,{center:z,resolution:D,rotation:q}=this.renderedViewState;if(D/l>=3)this.canvas?.getContext("2d")?.clearRect(0,0,this.canvas?.width,this.canvas?.height);else{let V=this.map.getPixelFromCoordinate(z),de=this.map.getPixelFromCoordinate(a);this.transformContainer.style.transform=Nx(V[0]-de[0],V[1]-de[1],D/l,D/l,M-q,0,0)}}return this.container}})]}),this.vectorLayer=this.olLayer.getLayers().item(0),this.renderState={center:[0,0],zoom:void 0,rotation:0}}attachToMap(u){super.attachToMap(u),this.map&&this.olListenersKeys.push(...this.map.on(["moveend","change:target"],m=>{let a=(m.map||m.target).getView();if(a.getAnimating()||a.getInteracting())return;let l=a.getZoom();this.currentZoom!==l&&this.onZoomEnd(),this.currentZoom=l,this.onMoveEnd(m)}))}detachFromMap(){super.detachFromMap(),this.container=null}hasFeatureInfoAtCoordinate(u){if(this.map&&this.canvas){let m=this.canvas.getContext("2d",{willReadFrequently:!0}),a=this.map.getPixelFromCoordinate(u);return!!m?.getImageData(a[0]*(this.pixelRatio||1),a[1]*(this.pixelRatio||1),1,1).data[3]}return!1}renderTrajectories(u){if(!this.map)return;let m=this.map.getView();m.getCenter()&&super.renderTrajectories({size:this.map.getSize(),center:m.getCenter(),extent:m.calculateExtent(),resolution:m.getResolution(),rotation:m.getRotation(),zoom:m.getZoom(),pixelRatio:this.pixelRatio},u)}renderTrajectoriesInternal(u,m){if(!this.map)return!1;let a=!1;return a=(this.allowRenderWhenAnimating?!1:this.map.getView().getAnimating()||this.map.getView().getInteracting())?!1:super.renderTrajectoriesInternal(u,m),a&&(this.renderedViewState={...u},this.transformContainer&&(this.transformContainer.style.transform="")),a}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getView().getZoom())}getFeatureInfoAtCoordinate(u,m={}){if(!this.map||!this.map.getView())return Promise.resolve({layer:this,features:[],coordinate:u});let a=this.map.getView().getResolution();return super.getFeatureInfoAtCoordinate(u,{resolution:a,...m})}onMoveEnd(u){this.visible&&this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.userClickInteractions&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}onZoomEnd(){super.onZoomEnd(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.userClickInteractions&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}onFeatureHover(u,m,a){super.onFeatureHover(u,m,a),this.map.getTargetElement().style.cursor=u.length?"pointer":"auto"}onFeatureClick(u,m,a){super.onFeatureClick(u,m,a),!u.length&&this.vectorLayer&&this.vectorLayer.getSource().clear(),this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}purgeTrajectory(u,m,a){let l=this.map.getView().getCenter();return!m&&!l?!1:super.purgeTrajectory(u,m||this.map.getView().calculateExtent(),a||this.map.getView().getZoom())}setBbox(u,m){let a=u,l=m;!a&&this.isUpdateBboxOnMoveEnd&&(a=u||this.map.getView().calculateExtent(),l=Math.floor(this.map.getView().getZoom())),super.setBbox(a,l)}highlightTrajectory(u){return this.api.getFullTrajectory(u,this.mode,this.generalizationLevel).then(m=>{let a=m.content;if(this.vectorLayer.getSource().clear(),!a||!a.features||!a.features.length)return;let l=XS.readFeatures(a);return this.vectorLayer.getSource().addFeatures(l),l})}clone(u){return new jf({...this.options,...u})}},Pb=jf;var Gf=class extends As{getFeatureInfoAtCoordinate(i){let u=[];if(this.map){let m=this.map.getPixelFromCoordinate(i);u=this.map.getFeaturesAtPixel(m,{layerFilter:a=>a===this.olLayer,hitTolerance:this.hitTolerance})}return Promise.resolve({features:u,layer:this,coordinate:i})}clone(i){return new Gf({...this.options,...i})}},kb=Gf;var qf=class extends As{constructor(u){super(u);this.abortController=new AbortController,this.format=new Sl}getFeatureInfoUrl(u){if(!this.map)return;let m=this.map.getView().getProjection(),a=this.map.getView().getResolution();if(a&&m&&this.olLayer?.getSource()?.getFeatureInfoUrl)return this.olLayer?.getSource()?.getFeatureInfoUrl(u,a,m,{info_format:"application/json",query_layers:this.olLayer?.getSource()?.getParams().layers})}getFeatureInfoAtCoordinate(u){this.abortController?.abort(),this.abortController=new AbortController;let{signal:m}=this.abortController,a=this.getFeatureInfoUrl(u);return a?fetch(a,{signal:m}).then(l=>l.json()).then(l=>l.features).then(l=>({layer:this,coordinate:u,features:l.map(M=>this.format.readFeature(M))})).catch(()=>Promise.resolve({features:[],coordinate:u,layer:this})):(console.error("No url for the WMS layer."),Promise.resolve({features:[],coordinate:u,layer:this}))}clone(u){return new qf({...this.options,...u})}},Rb=qf;var Bg={};wy(Bg,{CopyrightControl:()=>Lb,Layer:()=>Dg,RealtimeAPI:()=>Hd,RealtimeLayer:()=>Xb,RealtimeModes:()=>Go,RoutingAPI:()=>Xd,StopsAPI:()=>$d,compareDepartures:()=>yf,createCanvas:()=>Xl,createRealtimeFilters:()=>ky,debounceDeparturesMessages:()=>u_,debounceWebsocketMessages:()=>Kd,getCircleCanvas:()=>y_,getDelayBgCanvas:()=>m_,getDelayTextCanvas:()=>g_,getHoursAndMinutes:()=>Fx,getLayersAsFlatArray:()=>Yd,getMapboxMapCopyrights:()=>sc,getMapboxRender:()=>nd,getMaplibreRender:()=>rd,getMercatorResolution:()=>Og,getSourceCoordinates:()=>Xf,getTextCanvas:()=>__,getUTCDateString:()=>zx,getUTCTimeString:()=>Dx,getUrlWithParams:()=>Gh,pad:()=>$m,realtimeConfig:()=>od,realtimeDefaultStyle:()=>$h,realtimeDelayStyle:()=>v_,realtimeSimpleStyle:()=>x_,removeDuplicate:()=>qh,renderTrajectories:()=>gf,sortAndFilterDepartures:()=>_f,sortByDelay:()=>Ry});var Qv=class extends yg{constructor(i){super(i),this.render=this.render.bind(this)}activate(){super.activate(),this.map&&(this.map.on("sourcedata",this.render),this.map.on("styledata",this.render),this.map.on("idle",this.render))}deactivate(){this.map&&(this.map.off("sourcedata",this.render),this.map.off("styledata",this.render),this.map.off("idle",this.render)),super.deactivate()}getCopyrights(){return sc(this.map)}},Lb=Qv;var Zf=class extends Cg(tp){attachToMap(u){super.attachToMap(u),this.map&&this.userInteractions&&(this.toggleVisibleListeners(),this.onChangeVisibleKey=this.on("change:visible",this.toggleVisibleListeners))}detachFromMap(){this.map&&(this.deactivateUserInteractions(),Ja(this.onChangeVisibleKey)),super.detachFromMap()}activateUserInteractions(){this.deactivateUserInteractions(),this.map&&this.userInteractions&&this.userClickInteractions&&this.userClickCallbacks?.length&&this.map.on("click",this.onUserClickCallback),this.map&&this.userInteractions&&this.userHoverInteractions&&this.userHoverCallbacks?.length&&this.map.on("mousemove",this.onUserMoveCallback)}deactivateUserInteractions(){this.map&&(this.map.off("mousemove",this.onUserMoveCallback),this.map.off("click",this.onUserClickCallback))}toggleVisibleListeners(){this.visible?this.activateUserInteractions():this.deactivateUserInteractions()}getMercatorExtent(){let u=this.map.getBounds().toArray();return rf([...u[0],...u[1]],"EPSG:4326","EPSG:3857")}getOlZoom(){return this.map.getZoom()+1}clone(u){return new Zf({...this.options,...u})}},Dg=Zf;var Xo=63710088e-1,zb={centimeters:Xo*100,centimetres:Xo*100,degrees:Xo/111325,feet:Xo*3.28084,inches:Xo*39.37,kilometers:Xo/1e3,kilometres:Xo/1e3,meters:Xo,metres:Xo,miles:Xo/1609.344,millimeters:Xo*1e3,millimetres:Xo*1e3,nauticalmiles:Xo/1852,radians:1,yards:Xo*1.0936},GB={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/Xo,yards:1.0936133};function Db(v,i,u){u===void 0&&(u={});var m={type:"Feature"};return(u.id===0||u.id)&&(m.id=u.id),u.bbox&&(m.bbox=u.bbox),m.properties=i||{},m.geometry=v,m}function vh(v,i,u){if(u===void 0&&(u={}),!v)throw new Error("coordinates is required");if(!Array.isArray(v))throw new Error("coordinates must be an Array");if(v.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!ex(v[0])||!ex(v[1]))throw new Error("coordinates must contain numbers");var m={type:"Point",coordinates:v};return Db(m,i,u)}function $S(v,i){i===void 0&&(i="kilometers");var u=zb[i];if(!u)throw new Error(i+" units is invalid");return v*u}function KS(v,i){i===void 0&&(i="kilometers");var u=zb[i];if(!u)throw new Error(i+" units is invalid");return v/u}function Fb(v){var i=v%(2*Math.PI);return i*180/Math.PI}function np(v){var i=v%360;return i*Math.PI/180}function Fg(v,i,u){if(i===void 0&&(i="kilometers"),u===void 0&&(u="kilometers"),!(v>=0))throw new Error("length must be a positive number");return $S(KS(v,i),u)}function ex(v){return!isNaN(v)&&v!==null&&!Array.isArray(v)}function tx(v){return!!v&&v.constructor===Object}function Wf(v,i,u){if(v!==null)for(var m,a,l,M,z,D,q,V=0,de=0,pe,Ie=v.type,Ne=Ie==="FeatureCollection",nt=Ie==="Feature",we=Ne?v.features.length:1,Pe=0;Pe<we;Pe++){q=Ne?v.features[Pe].geometry:nt?v.geometry:v,pe=q?q.type==="GeometryCollection":!1,z=pe?q.geometries.length:1;for(var et=0;et<z;et++){var ut=0,mt=0;if(M=pe?q.geometries[et]:q,M!==null){D=M.coordinates;var ct=M.type;switch(V=u&&(ct==="Polygon"||ct==="MultiPolygon")?1:0,ct){case null:break;case"Point":if(i(D,de,Pe,ut,mt)===!1)return!1;de++,ut++;break;case"LineString":case"MultiPoint":for(m=0;m<D.length;m++){if(i(D[m],de,Pe,ut,mt)===!1)return!1;de++,ct==="MultiPoint"&&ut++}ct==="LineString"&&ut++;break;case"Polygon":case"MultiLineString":for(m=0;m<D.length;m++){for(a=0;a<D[m].length-V;a++){if(i(D[m][a],de,Pe,ut,mt)===!1)return!1;de++}ct==="MultiLineString"&&ut++,ct==="Polygon"&&mt++}ct==="Polygon"&&ut++;break;case"MultiPolygon":for(m=0;m<D.length;m++){for(mt=0,a=0;a<D[m].length;a++){for(l=0;l<D[m][a].length-V;l++){if(i(D[m][a][l],de,Pe,ut,mt)===!1)return!1;de++}mt++}ut++}break;case"GeometryCollection":for(m=0;m<M.geometries.length;m++)if(Wf(M.geometries[m],i,u)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function HS(v,i){i===void 0&&(i={});var u=0,m=0,a=0;return Wf(v,function(l){u+=l[0],m+=l[1],a++},!0),vh([u/a,m/a],i.properties)}var Ob=HS;function ku(v){if(!v)throw new Error("coord is required");if(!Array.isArray(v)){if(v.type==="Feature"&&v.geometry!==null&&v.geometry.type==="Point")return v.geometry.coordinates;if(v.type==="Point")return v.coordinates}if(Array.isArray(v)&&v.length>=2&&!Array.isArray(v[0])&&!Array.isArray(v[1]))return v;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Bb(v){if(Array.isArray(v))return v;if(v.type==="Feature"){if(v.geometry!==null)return v.geometry.coordinates}else if(v.coordinates)return v.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function YS(v,i,u){u===void 0&&(u={});var m;u.final?m=Ub(ku(i),ku(v)):m=Ub(ku(v),ku(i));var a=m>180?-(360-m):m;return a}function Ub(v,i){var u=np(v[1]),m=np(i[1]),a=np(i[0]-v[0]);a>Math.PI&&(a-=2*Math.PI),a<-Math.PI&&(a+=2*Math.PI);var l=Math.log(Math.tan(m/2+Math.PI/4)/Math.tan(u/2+Math.PI/4)),M=Math.atan2(a,l);return(Fb(M)+360)%360}var Vb=YS;function JS(v,i,u){u===void 0&&(u={});var m=ku(v),a=ku(i);a[0]+=a[0]-m[0]>180?-360:m[0]-a[0]>180?360:0;var l=QS(m,a),M=Fg(l,"meters",u.units);return M}function QS(v,i,u){u=u===void 0?Xo:Number(u);var m=u,a=v[1]*Math.PI/180,l=i[1]*Math.PI/180,M=l-a,z=Math.abs(i[0]-v[0])*Math.PI/180;z>Math.PI&&(z-=2*Math.PI);var D=Math.log(Math.tan(l/2+Math.PI/4)/Math.tan(a/2+Math.PI/4)),q=Math.abs(D)>1e-11?M/D:Math.cos(a),V=Math.sqrt(M*M+q*q*z*z),de=V*m;return de}var Nb=JS;function eE(v,i,u,m){m===void 0&&(m={});var a=i<0,l=Fg(Math.abs(i),m.units,"meters");a&&(l=-Math.abs(l));var M=ku(v),z=tE(M,l,u);return z[0]+=z[0]-M[0]>180?-360:M[0]-z[0]>180?360:0,vh(z,m.properties)}function tE(v,i,u,m){m=m===void 0?Xo:Number(m);var a=i/m,l=v[0]*Math.PI/180,M=np(v[1]),z=np(u),D=a*Math.cos(z),q=M+D;Math.abs(q)>Math.PI/2&&(q=q>0?Math.PI-q:-Math.PI-q);var V=Math.log(Math.tan(q/2+Math.PI/4)/Math.tan(M/2+Math.PI/4)),de=Math.abs(V)>1e-11?D/V:Math.cos(M),pe=a*Math.sin(z)/de,Ie=l+pe;return[(Ie*180/Math.PI+540)%360-180,q*180/Math.PI]}var jb=eE;function iE(v){if(!v)throw new Error("geojson is required");switch(v.type){case"Feature":return Gb(v);case"FeatureCollection":return rE(v);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return ix(v);default:throw new Error("unknown GeoJSON type")}}function Gb(v){var i={type:"Feature"};return Object.keys(v).forEach(function(u){switch(u){case"type":case"properties":case"geometry":return;default:i[u]=v[u]}}),i.properties=qb(v.properties),i.geometry=ix(v.geometry),i}function qb(v){var i={};return v&&Object.keys(v).forEach(function(u){var m=v[u];typeof m=="object"?m===null?i[u]=null:Array.isArray(m)?i[u]=m.map(function(a){return a}):i[u]=qb(m):i[u]=m}),i}function rE(v){var i={type:"FeatureCollection"};return Object.keys(v).forEach(function(u){switch(u){case"type":case"features":return;default:i[u]=v[u]}}),i.features=v.features.map(function(u){return Gb(u)}),i}function ix(v){var i={type:v.type};return v.bbox&&(i.bbox=v.bbox),v.type==="GeometryCollection"?(i.geometries=v.geometries.map(function(u){return ix(u)}),i):(i.coordinates=Zb(v.coordinates),i)}function Zb(v){var i=v;return typeof i[0]!="object"?i.slice():i.map(function(u){return Zb(u)})}var Wb=iE;function nE(v,i,u){if(u=u||{},!tx(u))throw new Error("options is invalid");var m=u.pivot,a=u.mutate;if(!v)throw new Error("geojson is required");if(i==null||isNaN(i))throw new Error("angle is required");return i===0||(m||(m=Ob(v)),(a===!1||a===void 0)&&(v=Wb(v)),Wf(v,function(l){var M=Vb(m,l),z=M+i,D=Nb(m,l),q=Bb(jb(m,D,z));l[0]=q[0],l[1]=q[1]})),v}var rx=nE;var oE=(v,i=1)=>{let{width:u,height:m}=v.getCanvas(),a=v.unproject({x:0,y:0}),l=v.unproject({x:0,y:m/i}),M=v.unproject({x:u/i,y:m/i}),z=v.unproject({x:u/i,y:0});return[[a.lng,a.lat],[z.lng,z.lat],[M.lng,M.lat],[l.lng,l.lat]]},Xf=oE;var aE=v=>{let i=v.getBounds().toArray(),u=co(i[0]),m=co(i[1]),a=[...u,...m],{width:l,height:M}=v.getCanvas(),z=bo(a)/l,D=vl(a)/M;return Math.max(z,D)},Og=aE;var nx=class extends Rg(Dg){constructor(i={}){super({...i}),this.onLoad=this.onLoad.bind(this),this.onMove=this.onMove.bind(this),this.onMoveEnd=this.onMoveEnd.bind(this),this.onZoomEnd=this.onZoomEnd.bind(this),this.onVisibilityChange=this.onVisibilityChange.bind(this)}attachToMap(i,u){i&&(super.attachToMap(i),this.source={type:"canvas",canvas:this.canvas,coordinates:Xf(i,this.pixelRatio),animate:!0,attribution:this.copyrights&&this.copyrights.join(", ")},this.beforeId=u,this.layer={id:this.key,type:"raster",source:this.key,layout:{visibility:this.visible?"visible":"none"},paint:{"raster-opacity":1,"raster-fade-duration":0,"raster-resampling":"nearest"}},i.isStyleLoaded()&&this.onLoad(),this.map.on("load",this.onLoad),this.listeners=[this.on("change:visible",this.onVisibilityChange)])}detachFromMap(){this.map&&(this.map.off("load",this.onLoad),this.listeners.forEach(i=>{Ja(i)}),this.map.style&&this.map.getLayer(this.key)&&this.map.removeLayer(this.key),this.map.style&&this.map.getSource(this.key)&&this.map.removeSource(this.key)),super.detachFromMap()}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&&(this.map.off("move",this.onMove),this.map.off("moveend",this.onMoveEnd),this.map.off("zoomend",this.onZoomEnd))}onLoad(){this.map.getSource(this.key)||this.map.addSource(this.key,this.source),this.map.getLayer(this.key)||this.map.addLayer(this.layer,this.beforeId)}onUserMoveCallback(i){super.onUserMoveCallback({coordinate:co(i.lngLat.toArray()),...i})}renderTrajectories(i=!1){if(!this.map)return;this.pixelRatio||(this.pixelRatio=1);let{width:u,height:m}=this.map.getCanvas(),a=this.map.getCenter(),l=this.map.unproject({x:0,y:m/this.pixelRatio}),M=this.map.unproject({x:u/this.pixelRatio,y:0}),z=rx(vh([l.lng,l.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,D=rx(vh([M.lng,M.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,q=[...co(z),...co(D)],V=bo(q)/(u/this.pixelRatio),de=vl(q)/(m/this.pixelRatio),pe=Math.max(V,de),Ie={size:[u/this.pixelRatio,m/this.pixelRatio],center:co([a.lng,a.lat]),extent:q,resolution:pe,zoom:this.getOlZoom(),rotation:-(this.map.getBearing()*Math.PI)/180,pixelRatio:this.pixelRatio};super.renderTrajectories(Ie,i)}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getZoom())}getFeatureInfoAtCoordinate(i,u={}){let m=Og(this.map);return super.getFeatureInfoAtCoordinate(i,{resolution:m,...u})}onVisibilityChange(){this.visible&&!this.map.getLayer(this.key)?this.map.addLayer(this.layer,this.beforeId):this.map.getLayer(this.key)&&this.map.removeLayer(this.key)}purgeTrajectory(i,u,m){return super.purgeTrajectory(i,u||this.getMercatorExtent(),m||Math.floor(this.getOlZoom()))}setBbox(i,u){let m=i,a=u;!m&&this.isUpdateBboxOnMoveEnd&&(m=i||this.getMercatorExtent(),a=Math.floor(this.getOlZoom())),super.setBbox(m,a)}onMove(){this.renderTrajectories()}renderTrajectoriesInternal(i,u=!1){let m=super.renderTrajectoriesInternal(i,u);if(m&&this.map.style){let a=Xf(this.map,this.pixelRatio),l=this.map.getSource(this.key);l&&l.setCoordinates(a)}return m}onMoveEnd(){this.renderTrajectories(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.setBbox()}onFeatureHover(i,u,m){super.onFeatureHover(i,u,m),this.map.getCanvasContainer().style.cursor=i.length?"pointer":"auto"}},Xb=nx;var ox={ol:zg,mapbox:Bg};typeof window<"u"&&(window.mbt=ox);var q5=ox;})();
1083
+ `){$t+=Ii,Ii=0,Qt=pe*mt+zt*Ie,++Jt;continue}let jr=Ne[ni+1]||D.font;jr!==Ei&&(a&&Vt.push("font",jr),m&&mi.push("font",jr),Ei=jr),Ii=Math.max(Ii,et[ci]);let Ht=[Bi,Qt+zt*Pe[ci]+pe*(Pe[ci]-ut[Jt]),.5*(Ie+Ii)+$t];Qt+=Pe[ci],a&&Vt.push("strokeText",Ht),m&&mi.push("fillText",Ht),++ci}return Array.prototype.push.apply(ct,Vt),Array.prototype.push.apply(ct,mi),this.labels_[l]=Mt,Mt}replayTextBackground_(i,u,m,a,l,M,z){i.beginPath(),i.moveTo.apply(i,u),i.lineTo.apply(i,m),i.lineTo.apply(i,a),i.lineTo.apply(i,l),i.lineTo.apply(i,u),M&&(this.alignFill_=M[2],this.fill_(i)),z&&(this.setStrokeStyle_(i,z),i.stroke())}calculateImageOrLabelDimensions_(i,u,m,a,l,M,z,D,q,V,de,pe,Ie,Ne,nt,we){z*=pe[0],D*=pe[1];let Pe=m-z,et=a-D,ut=l+q>i?i-q:l,mt=M+V>u?u-V:M,ct=Ne[3]+ut*pe[0]+Ne[1],ft=Ne[0]+mt*pe[1]+Ne[2],It=Pe-Ne[3],Mt=et-Ne[0];(nt||de!==0)&&(gh[0]=It,yh[0]=It,gh[1]=Mt,_c[1]=Mt,_c[0]=It+ct,vc[0]=_c[0],vc[1]=Mt+ft,yh[1]=vc[1]);let zt;return de!==0?(zt=Ys(Da(),m,a,1,1,de,-m,-a),qo(zt,gh),qo(zt,_c),qo(zt,vc),qo(zt,yh),uc(Math.min(gh[0],_c[0],vc[0],yh[0]),Math.min(gh[1],_c[1],vc[1],yh[1]),Math.max(gh[0],_c[0],vc[0],yh[0]),Math.max(gh[1],_c[1],vc[1],yh[1]),pd)):uc(Math.min(It,It+ct),Math.min(Mt,Mt+ft),Math.max(It,It+ct),Math.max(Mt,Mt+ft),pd),Ie&&(Pe=Math.round(Pe),et=Math.round(et)),{drawImageX:Pe,drawImageY:et,drawImageW:ut,drawImageH:mt,originX:q,originY:V,declutterBox:{minX:pd[0],minY:pd[1],maxX:pd[2],maxY:pd[3],value:we},canvasTransform:zt,scale:pe}}replayImageOrLabel_(i,u,m,a,l,M,z){let D=!!(M||z),q=a.declutterBox,V=i.canvas,de=z?z[2]*a.scale[0]/2:0;return q.minX-de<=V.width/u&&q.maxX+de>=0&&q.minY-de<=V.height/u&&q.maxY+de>=0&&(D&&this.replayTextBackground_(i,gh,_c,vc,yh,M,z),p1(i,a.canvasTransform,l,m,a.originX,a.originY,a.drawImageW,a.drawImageH,a.drawImageX,a.drawImageY,a.scale)),!0}fill_(i){if(this.alignFill_){let u=qo(this.renderedTransform_,[0,0]),m=512*this.pixelRatio;i.save(),i.translate(u[0]%m,u[1]%m),i.rotate(this.viewRotation_)}i.fill(),this.alignFill_&&i.restore()}setStrokeStyle_(i,u){i.strokeStyle=u[1],i.lineWidth=u[2],i.lineCap=u[3],i.lineJoin=u[4],i.miterLimit=u[5],i.lineDashOffset=u[7],i.setLineDash(u[6])}drawLabelWithPointPlacement_(i,u,m,a){let l=this.textStates[u],M=this.createLabel(i,u,a,m),z=this.strokeStates[m],D=this.pixelRatio,q=z1(Array.isArray(i)?i[0]:i,l.textAlign||mh),V=cd[l.textBaseline||Jh],de=z&&z.lineWidth?z.lineWidth:0,pe=M.width/D-2*l.scale[0],Ie=q*pe+2*(.5-q)*de,Ne=V*M.height/D+2*(.5-V)*de;return{label:M,anchorX:Ie,anchorY:Ne}}execute_(i,u,m,a,l,M,z,D){let q;this.pixelCoordinates_&&xs(m,this.renderedTransform_)?q=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),q=xl(this.coordinates,0,this.coordinates.length,2,m,this.pixelCoordinates_),Ux(this.renderedTransform_,m));let V=0,de=a.length,pe=0,Ie,Ne,nt,we,Pe,et,ut,mt,ct,ft,It,Mt,zt=0,Qt=0,Vt=null,mi=null,Ii=this.coordinateCache_,$t=this.viewRotation_,ci=Math.round(Math.atan2(-m[1],m[0])*1e12)/1e12,Jt={context:i,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:$t},Ei=this.instructions!=a||this.overlaps?0:200,ni,Ui,Bi,jr;for(;V<de;){let Ht=a[V];switch(Ht[0]){case ji.BEGIN_GEOMETRY:ni=Ht[1],jr=Ht[3],ni.getGeometry()?z!==void 0&&!uo(z,jr.getExtent())?V=Ht[2]+1:++V:V=Ht[2];break;case ji.BEGIN_PATH:zt>Ei&&(this.fill_(i),zt=0),Qt>Ei&&(i.stroke(),Qt=0),!zt&&!Qt&&(i.beginPath(),we=NaN,Pe=NaN),++V;break;case ji.CIRCLE:pe=Ht[1];let Gr=q[pe],or=q[pe+1],on=q[pe+2],Fi=q[pe+3],Cn=on-Gr,wo=Fi-or,qr=Math.sqrt(Cn*Cn+wo*wo);i.moveTo(Gr+qr,or),i.arc(Gr,or,qr,0,2*Math.PI,!0),++V;break;case ji.CLOSE_PATH:i.closePath(),++V;break;case ji.CUSTOM:pe=Ht[1],Ie=Ht[2];let Ai=Ht[3],ho=Ht[4],Ir=Ht.length==6?Ht[5]:void 0;Jt.geometry=Ai,Jt.feature=ni,V in Ii||(Ii[V]=[]);let pr=Ii[V];Ir?Ir(q,pe,Ie,2,pr):(pr[0]=q[pe],pr[1]=q[pe+1],pr.length=2),ho(pr,Jt),++V;break;case ji.DRAW_IMAGE:pe=Ht[1],Ie=Ht[2],mt=Ht[3],Ne=Ht[4],nt=Ht[5];let Wn=Ht[6],dn=Ht[7],qi=Ht[8],Zr=Ht[9],An=Ht[10],Ln=Ht[11],zn=Ht[12],Wr=Ht[13],Dn=Ht[14],hn=Ht[15];if(!mt&&Ht.length>=20){ct=Ht[19],ft=Ht[20],It=Ht[21],Mt=Ht[22];let ue=this.drawLabelWithPointPlacement_(ct,ft,It,Mt);mt=ue.label,Ht[3]=mt;let ge=Ht[23];Ne=(ue.anchorX-ge)*this.pixelRatio,Ht[4]=Ne;let Te=Ht[24];nt=(ue.anchorY-Te)*this.pixelRatio,Ht[5]=nt,Wn=mt.height,Ht[6]=Wn,Wr=mt.width,Ht[13]=Wr}let Qn;Ht.length>25&&(Qn=Ht[25]);let bt,jt,eo;Ht.length>17?(bt=Ht[16],jt=Ht[17],eo=Ht[18]):(bt=mc,jt=!1,eo=!1),An&&ci?Ln+=$t:!An&&!ci&&(Ln-=$t);let Fn=0;for(;pe<Ie;pe+=2){if(Qn&&Qn[Fn++]<Wr/this.pixelRatio)continue;let ue=this.calculateImageOrLabelDimensions_(mt.width,mt.height,q[pe],q[pe+1],Wr,Wn,Ne,nt,qi,Zr,Ln,zn,l,bt,jt||eo,ni),ge=[i,u,mt,ue,dn,jt?Vt:null,eo?mi:null];if(D){if(Dn==="none")continue;if(Dn==="obstacle"){D.insert(ue.declutterBox);continue}else{let Te,Re;if(hn){let Xe=Ie-pe;if(!hn[Xe]){hn[Xe]=ge;continue}if(Te=hn[Xe],delete hn[Xe],Re=L1(Te),D.collides(Re))continue}if(D.collides(ue.declutterBox))continue;Te&&(D.insert(Re),this.replayImageOrLabel_.apply(this,Te)),D.insert(ue.declutterBox)}}this.replayImageOrLabel_.apply(this,ge)}++V;break;case ji.DRAW_CHARS:let Hi=Ht[1],bn=Ht[2],fn=Ht[3],mn=Ht[4];Mt=Ht[5];let So=Ht[6],Gt=Ht[7],Vi=Ht[8];It=Ht[9];let Ri=Ht[10];ct=Ht[11],ft=Ht[12];let Ur=[Ht[13],Ht[13]],wn=this.textStates[ft],bi=wn.font,Sn=[wn.scale[0]*Gt,wn.scale[1]*Gt],Pr;bi in this.widths_?Pr=this.widths_[bi]:(Pr={},this.widths_[bi]=Pr);let _r=cg(q,Hi,bn,2),ie=Math.abs(Sn[0])*N_(bi,ct,Pr);if(mn||ie<=_r){let ue=this.textStates[ft].textAlign,ge=(_r-ie)*cd[ue],Te=R1(q,Hi,bn,2,ct,ge,So,Math.abs(Sn[0]),N_,bi,Pr,ci?0:this.viewRotation_);e:if(Te){let Re=[],Xe,Ye,Se,Oe,te;if(It)for(Xe=0,Ye=Te.length;Xe<Ye;++Xe){te=Te[Xe],Se=te[4],Oe=this.createLabel(Se,ft,"",It),Ne=te[2]+(Sn[0]<0?-Ri:Ri),nt=fn*Oe.height+(.5-fn)*2*Ri*Sn[1]/Sn[0]-Vi;let W=this.calculateImageOrLabelDimensions_(Oe.width,Oe.height,te[0],te[1],Oe.width,Oe.height,Ne,nt,0,0,te[3],Ur,!1,mc,!1,ni);if(D&&D.collides(W.declutterBox))break e;Re.push([i,u,Oe,W,1,null,null])}if(Mt)for(Xe=0,Ye=Te.length;Xe<Ye;++Xe){te=Te[Xe],Se=te[4],Oe=this.createLabel(Se,ft,Mt,""),Ne=te[2],nt=fn*Oe.height-Vi;let W=this.calculateImageOrLabelDimensions_(Oe.width,Oe.height,te[0],te[1],Oe.width,Oe.height,Ne,nt,0,0,te[3],Ur,!1,mc,!1,ni);if(D&&D.collides(W.declutterBox))break e;Re.push([i,u,Oe,W,1,null,null])}D&&D.load(Re.map(L1));for(let W=0,J=Re.length;W<J;++W)this.replayImageOrLabel_.apply(this,Re[W])}}++V;break;case ji.END_GEOMETRY:if(M!==void 0){ni=Ht[1];let ue=M(ni,jr);if(ue)return ue}++V;break;case ji.FILL:Ei?zt++:this.fill_(i),++V;break;case ji.MOVE_TO_LINE_TO:for(pe=Ht[1],Ie=Ht[2],Ui=q[pe],Bi=q[pe+1],et=Ui+.5|0,ut=Bi+.5|0,(et!==we||ut!==Pe)&&(i.moveTo(Ui,Bi),we=et,Pe=ut),pe+=2;pe<Ie;pe+=2)Ui=q[pe],Bi=q[pe+1],et=Ui+.5|0,ut=Bi+.5|0,(pe==Ie-2||et!==we||ut!==Pe)&&(i.lineTo(Ui,Bi),we=et,Pe=ut);++V;break;case ji.SET_FILL_STYLE:Vt=Ht,this.alignFill_=Ht[2],zt&&(this.fill_(i),zt=0,Qt&&(i.stroke(),Qt=0)),i.fillStyle=Ht[1],++V;break;case ji.SET_STROKE_STYLE:mi=Ht,Qt&&(i.stroke(),Qt=0),this.setStrokeStyle_(i,Ht),++V;break;case ji.STROKE:Ei?Qt++:i.stroke(),++V;break;default:++V;break}}zt&&this.fill_(i),Qt&&i.stroke()}execute(i,u,m,a,l,M){this.viewRotation_=a,this.execute_(i,u,m,this.instructions,l,void 0,void 0,M)}executeHitDetection(i,u,m,a,l){return this.viewRotation_=m,this.execute_(i,1,u,this.hitDetectionInstructions,!0,a,l)}},D1=hv;var pv=["Polygon","Circle","LineString","Image","Text","Default"],fv=class{constructor(i,u,m,a,l,M){this.maxExtent_=i,this.overlaps_=a,this.pixelRatio_=m,this.resolution_=u,this.renderBuffer_=M,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=Da(),this.createExecutors_(l)}clip(i,u){let m=this.getClipCoords(u);i.beginPath(),i.moveTo(m[0],m[1]),i.lineTo(m[2],m[3]),i.lineTo(m[4],m[5]),i.lineTo(m[6],m[7]),i.clip()}createExecutors_(i){for(let u in i){let m=this.executorsByZIndex_[u];m===void 0&&(m={},this.executorsByZIndex_[u]=m);let a=i[u];for(let l in a){let M=a[l];m[l]=new D1(this.resolution_,this.pixelRatio_,this.overlaps_,M)}}}hasExecutors(i){for(let u in this.executorsByZIndex_){let m=this.executorsByZIndex_[u];for(let a=0,l=i.length;a<l;++a)if(i[a]in m)return!0}return!1}forEachFeatureAtCoordinate(i,u,m,a,l,M){a=Math.round(a);let z=a*2+1,D=Ys(this.hitDetectionTransform_,a+.5,a+.5,1/u,-1/u,-m,-i[0],-i[1]),q=!this.hitDetectionContext_;q&&(this.hitDetectionContext_=aa(z,z,void 0,{willReadFrequently:!0}));let V=this.hitDetectionContext_;V.canvas.width!==z||V.canvas.height!==z?(V.canvas.width=z,V.canvas.height=z):q||V.clearRect(0,0,z,z);let de;this.renderBuffer_!==void 0&&(de=Qa(),Dy(de,i),_l(de,u*(this.renderBuffer_+a),de));let pe=S2(a),Ie;function Ne(ct,ft){let It=V.getImageData(0,0,z,z).data;for(let Mt=0,zt=pe.length;Mt<zt;Mt++)if(It[pe[Mt]]>0){if(!M||Ie!=="Image"&&Ie!=="Text"||M.includes(ct)){let Qt=(pe[Mt]-3)/4,Vt=a-Qt%z,mi=a-(Qt/z|0),Ii=l(ct,ft,Vt*Vt+mi*mi);if(Ii)return Ii}V.clearRect(0,0,z,z);break}}let nt=Object.keys(this.executorsByZIndex_).map(Number);nt.sort(rh);let we,Pe,et,ut,mt;for(we=nt.length-1;we>=0;--we){let ct=nt[we].toString();for(et=this.executorsByZIndex_[ct],Pe=pv.length-1;Pe>=0;--Pe)if(Ie=pv[Pe],ut=et[Ie],ut!==void 0&&(mt=ut.executeHitDetection(V,D,m,Ne,de),mt))return mt}}getClipCoords(i){let u=this.maxExtent_;if(!u)return null;let m=u[0],a=u[1],l=u[2],M=u[3],z=[m,a,m,M,l,M,l,a];return xl(z,0,8,2,i,z),z}isEmpty(){return Gl(this.executorsByZIndex_)}execute(i,u,m,a,l,M,z){let D=Object.keys(this.executorsByZIndex_).map(Number);D.sort(rh),this.maxExtent_&&(i.save(),this.clip(i,m)),M=M||pv;let q,V,de,pe,Ie,Ne;for(z&&D.reverse(),q=0,V=D.length;q<V;++q){let nt=D[q].toString();for(Ie=this.executorsByZIndex_[nt],de=0,pe=M.length;de<pe;++de){let we=M[de];Ne=Ie[we],Ne!==void 0&&Ne.execute(i,u,m,a,l,z)}}this.maxExtent_&&i.restore()}},dv={};function S2(v){if(dv[v]!==void 0)return dv[v];let i=v*2+1,u=v*v,m=new Array(u+1);for(let l=0;l<=v;++l)for(let M=0;M<=v;++M){let z=l*l+M*M;if(z>u)break;let D=m[z];D||(D=[],m[z]=D),D.push(((v+l)*i+(v+M))*4+3),l>0&&D.push(((v-l)*i+(v+M))*4+3),M>0&&(D.push(((v+l)*i+(v-M))*4+3),l>0&&D.push(((v-l)*i+(v-M))*4+3))}let a=[];for(let l=0,M=m.length;l<M;++l)m[l]&&a.push(...m[l]);return dv[v]=a,a}var mv=fv;var gv=class extends Sg{constructor(i,u,m,a,l,M,z){super(),this.context_=i,this.pixelRatio_=u,this.extent_=m,this.transform_=a,this.transformRotation_=a?l0(Math.atan2(a[1],a[0]),10):0,this.viewRotation_=l,this.squaredTolerance_=M,this.userTransform_=z,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_=Da()}drawImages_(i,u,m,a){if(!this.image_)return;let l=xl(i,u,m,a,this.transform_,this.pixelCoordinates_),M=this.context_,z=this.tmpLocalTransform_,D=M.globalAlpha;this.imageOpacity_!=1&&(M.globalAlpha=D*this.imageOpacity_);let q=this.imageRotation_;this.transformRotation_===0&&(q-=this.viewRotation_),this.imageRotateWithView_&&(q+=this.viewRotation_);for(let V=0,de=l.length;V<de;V+=2){let pe=l[V]-this.imageAnchorX_,Ie=l[V+1]-this.imageAnchorY_;if(q!==0||this.imageScale_[0]!=1||this.imageScale_[1]!=1){let Ne=pe+this.imageAnchorX_,nt=Ie+this.imageAnchorY_;Ys(z,Ne,nt,1,1,q,-Ne,-nt),M.setTransform.apply(M,z),M.translate(Ne,nt),M.scale(this.imageScale_[0],this.imageScale_[1]),M.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),M.setTransform(1,0,0,1,0,0)}else M.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,pe,Ie,this.imageWidth_,this.imageHeight_)}this.imageOpacity_!=1&&(M.globalAlpha=D)}drawText_(i,u,m,a){if(!this.textState_||this.text_==="")return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);let l=xl(i,u,m,a,this.transform_,this.pixelCoordinates_),M=this.context_,z=this.textRotation_;for(this.transformRotation_===0&&(z-=this.viewRotation_),this.textRotateWithView_&&(z+=this.viewRotation_);u<m;u+=a){let D=l[u]+this.textOffsetX_,q=l[u+1]+this.textOffsetY_;z!==0||this.textScale_[0]!=1||this.textScale_[1]!=1?(M.translate(D-this.textOffsetX_,q-this.textOffsetY_),M.rotate(z),M.translate(this.textOffsetX_,this.textOffsetY_),M.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&M.strokeText(this.text_,0,0),this.textFillState_&&M.fillText(this.text_,0,0),M.setTransform(1,0,0,1,0,0)):(this.textStrokeState_&&M.strokeText(this.text_,D,q),this.textFillState_&&M.fillText(this.text_,D,q))}}moveToLineTo_(i,u,m,a,l){let M=this.context_,z=xl(i,u,m,a,this.transform_,this.pixelCoordinates_);M.moveTo(z[0],z[1]);let D=z.length;l&&(D-=2);for(let q=2;q<D;q+=2)M.lineTo(z[q],z[q+1]);return l&&M.closePath(),m}drawRings_(i,u,m,a){for(let l=0,M=m.length;l<M;++l)u=this.moveToLineTo_(i,u,m[l],a,!0);return u}drawCircle(i){if(uo(this.extent_,i.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let u=S0(i,this.transform_,this.pixelCoordinates_),m=u[2]-u[0],a=u[3]-u[1],l=Math.sqrt(m*m+a*a),M=this.context_;M.beginPath(),M.arc(u[0],u[1],l,0,2*Math.PI),this.fillState_&&M.fill(),this.strokeState_&&M.stroke()}this.text_!==""&&this.drawText_(i.getCenter(),0,2,2)}}setStyle(i){this.setFillStrokeStyle(i.getFill(),i.getStroke()),this.setImageStyle(i.getImage()),this.setTextStyle(i.getText())}setTransform(i){this.transform_=i}drawGeometry(i){switch(i.getType()){case"Point":this.drawPoint(i);break;case"LineString":this.drawLineString(i);break;case"Polygon":this.drawPolygon(i);break;case"MultiPoint":this.drawMultiPoint(i);break;case"MultiLineString":this.drawMultiLineString(i);break;case"MultiPolygon":this.drawMultiPolygon(i);break;case"GeometryCollection":this.drawGeometryCollection(i);break;case"Circle":this.drawCircle(i);break;default:}}drawFeature(i,u){let m=u.getGeometryFunction()(i);!m||!uo(this.extent_,m.getExtent())||(this.setStyle(u),this.drawGeometry(m))}drawGeometryCollection(i){let u=i.getGeometriesArray();for(let m=0,a=u.length;m<a;++m)this.drawGeometry(u[m])}drawPoint(i){this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let u=i.getFlatCoordinates(),m=i.getStride();this.image_&&this.drawImages_(u,0,u.length,m),this.text_!==""&&this.drawText_(u,0,u.length,m)}drawMultiPoint(i){this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let u=i.getFlatCoordinates(),m=i.getStride();this.image_&&this.drawImages_(u,0,u.length,m),this.text_!==""&&this.drawText_(u,0,u.length,m)}drawLineString(i){if(this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!uo(this.extent_,i.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let u=this.context_,m=i.getFlatCoordinates();u.beginPath(),this.moveToLineTo_(m,0,m.length,i.getStride(),!1),u.stroke()}if(this.text_!==""){let u=i.getFlatMidpoint();this.drawText_(u,0,2,2)}}}drawMultiLineString(i){this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_));let u=i.getExtent();if(uo(this.extent_,u)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);let m=this.context_,a=i.getFlatCoordinates(),l=0,M=i.getEnds(),z=i.getStride();m.beginPath();for(let D=0,q=M.length;D<q;++D)l=this.moveToLineTo_(a,l,M[D],z,!1);m.stroke()}if(this.text_!==""){let m=i.getFlatMidpoints();this.drawText_(m,0,m.length,2)}}}drawPolygon(i){if(this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!uo(this.extent_,i.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let u=this.context_;u.beginPath(),this.drawRings_(i.getOrientedFlatCoordinates(),0,i.getEnds(),i.getStride()),this.fillState_&&u.fill(),this.strokeState_&&u.stroke()}if(this.text_!==""){let u=i.getFlatInteriorPoint();this.drawText_(u,0,2,2)}}}drawMultiPolygon(i){if(this.squaredTolerance_&&(i=i.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),!!uo(this.extent_,i.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);let u=this.context_,m=i.getOrientedFlatCoordinates(),a=0,l=i.getEndss(),M=i.getStride();u.beginPath();for(let z=0,D=l.length;z<D;++z){let q=l[z];a=this.drawRings_(m,a,q,M)}this.fillState_&&u.fill(),this.strokeState_&&u.stroke()}if(this.text_!==""){let u=i.getFlatInteriorPoints();this.drawText_(u,0,u.length,2)}}}setContextFillState_(i){let u=this.context_,m=this.contextFillState_;m?m.fillStyle!=i.fillStyle&&(m.fillStyle=i.fillStyle,u.fillStyle=i.fillStyle):(u.fillStyle=i.fillStyle,this.contextFillState_={fillStyle:i.fillStyle})}setContextStrokeState_(i){let u=this.context_,m=this.contextStrokeState_;m?(m.lineCap!=i.lineCap&&(m.lineCap=i.lineCap,u.lineCap=i.lineCap),xs(m.lineDash,i.lineDash)||u.setLineDash(m.lineDash=i.lineDash),m.lineDashOffset!=i.lineDashOffset&&(m.lineDashOffset=i.lineDashOffset,u.lineDashOffset=i.lineDashOffset),m.lineJoin!=i.lineJoin&&(m.lineJoin=i.lineJoin,u.lineJoin=i.lineJoin),m.lineWidth!=i.lineWidth&&(m.lineWidth=i.lineWidth,u.lineWidth=i.lineWidth),m.miterLimit!=i.miterLimit&&(m.miterLimit=i.miterLimit,u.miterLimit=i.miterLimit),m.strokeStyle!=i.strokeStyle&&(m.strokeStyle=i.strokeStyle,u.strokeStyle=i.strokeStyle)):(u.lineCap=i.lineCap,u.setLineDash(i.lineDash),u.lineDashOffset=i.lineDashOffset,u.lineJoin=i.lineJoin,u.lineWidth=i.lineWidth,u.miterLimit=i.miterLimit,u.strokeStyle=i.strokeStyle,this.contextStrokeState_={lineCap:i.lineCap,lineDash:i.lineDash,lineDashOffset:i.lineDashOffset,lineJoin:i.lineJoin,lineWidth:i.lineWidth,miterLimit:i.miterLimit,strokeStyle:i.strokeStyle})}setContextTextState_(i){let u=this.context_,m=this.contextTextState_,a=i.textAlign?i.textAlign:mh;m?(m.font!=i.font&&(m.font=i.font,u.font=i.font),m.textAlign!=a&&(m.textAlign=a,u.textAlign=a),m.textBaseline!=i.textBaseline&&(m.textBaseline=i.textBaseline,u.textBaseline=i.textBaseline)):(u.font=i.font,u.textAlign=a,u.textBaseline=i.textBaseline,this.contextTextState_={font:i.font,textAlign:a,textBaseline:i.textBaseline})}setFillStrokeStyle(i,u){if(!i)this.fillState_=null;else{let m=i.getColor();this.fillState_={fillStyle:Ts(m||Is)}}if(!u)this.strokeState_=null;else{let m=u.getColor(),a=u.getLineCap(),l=u.getLineDash(),M=u.getLineDashOffset(),z=u.getLineJoin(),D=u.getWidth(),q=u.getMiterLimit(),V=l||hc;this.strokeState_={lineCap:a!==void 0?a:Yh,lineDash:this.pixelRatio_===1?V:V.map(de=>de*this.pixelRatio_),lineDashOffset:(M||pc)*this.pixelRatio_,lineJoin:z!==void 0?z:Iu,lineWidth:(D!==void 0?D:gc)*this.pixelRatio_,miterLimit:q!==void 0?q:dc,strokeStyle:Ts(m||fc)}}}setImageStyle(i){let u;if(!i||!(u=i.getSize())){this.image_=null;return}let m=i.getPixelRatio(this.pixelRatio_),a=i.getAnchor(),l=i.getOrigin();this.image_=i.getImage(this.pixelRatio_),this.imageAnchorX_=a[0]*m,this.imageAnchorY_=a[1]*m,this.imageHeight_=u[1]*m,this.imageOpacity_=i.getOpacity(),this.imageOriginX_=l[0],this.imageOriginY_=l[1],this.imageRotateWithView_=i.getRotateWithView(),this.imageRotation_=i.getRotation();let M=i.getScaleArray();this.imageScale_=[M[0]*this.pixelRatio_/m,M[1]*this.pixelRatio_/m],this.imageWidth_=u[0]*m}setTextStyle(i){if(!i)this.text_="";else{let u=i.getFill();if(!u)this.textFillState_=null;else{let Ie=u.getColor();this.textFillState_={fillStyle:Ts(Ie||Is)}}let m=i.getStroke();if(!m)this.textStrokeState_=null;else{let Ie=m.getColor(),Ne=m.getLineCap(),nt=m.getLineDash(),we=m.getLineDashOffset(),Pe=m.getLineJoin(),et=m.getWidth(),ut=m.getMiterLimit();this.textStrokeState_={lineCap:Ne!==void 0?Ne:Yh,lineDash:nt||hc,lineDashOffset:we||pc,lineJoin:Pe!==void 0?Pe:Iu,lineWidth:et!==void 0?et:gc,miterLimit:ut!==void 0?ut:dc,strokeStyle:Ts(Ie||fc)}}let a=i.getFont(),l=i.getOffsetX(),M=i.getOffsetY(),z=i.getRotateWithView(),D=i.getRotation(),q=i.getScaleArray(),V=i.getText(),de=i.getTextAlign(),pe=i.getTextBaseline();this.textState_={font:a!==void 0?a:bg,textAlign:de!==void 0?de:mh,textBaseline:pe!==void 0?pe:Jh},this.text_=V!==void 0?Array.isArray(V)?V.reduce((Ie,Ne,nt)=>Ie+=nt%2?" ":Ne,""):V:"",this.textOffsetX_=l!==void 0?this.pixelRatio_*l:0,this.textOffsetY_=M!==void 0?this.pixelRatio_*M:0,this.textRotateWithView_=z!==void 0?z:!1,this.textRotation_=D!==void 0?D:0,this.textScale_=[this.pixelRatio_*q[0],this.pixelRatio_*q[1]]}}},F1=gv;var $l=.5;function O1(v,i,u,m,a,l,M){let z=v[0]*$l,D=v[1]*$l,q=aa(z,D);q.imageSmoothingEnabled=!1;let V=q.canvas,de=new F1(q,$l,a,null,M),pe=u.length,Ie=Math.floor((256*256*256-1)/pe),Ne={};for(let we=1;we<=pe;++we){let Pe=u[we-1],et=Pe.getStyleFunction()||m;if(!m)continue;let ut=et(Pe,l);if(!ut)continue;Array.isArray(ut)||(ut=[ut]);let ct=(we*Ie).toString(16).padStart(7,"#00000");for(let ft=0,It=ut.length;ft<It;++ft){let Mt=ut[ft],zt=Mt.getGeometryFunction()(Pe);if(!zt||!uo(a,zt.getExtent()))continue;let Qt=Mt.clone(),Vt=Qt.getFill();Vt&&Vt.setColor(ct);let mi=Qt.getStroke();mi&&(mi.setColor(ct),mi.setLineDash(null)),Qt.setText(void 0);let Ii=Mt.getImage();if(Ii&&Ii.getOpacity()!==0){let Ei=Ii.getImageSize();if(!Ei)continue;let ni=aa(Ei[0],Ei[1],void 0,{alpha:!1}),Ui=ni.canvas;ni.fillStyle=ct,ni.fillRect(0,0,Ui.width,Ui.height),Qt.setImage(new Mf({img:Ui,imgSize:Ei,anchor:Ii.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:Ii.getOrigin(),opacity:1,size:Ii.getSize(),scale:Ii.getScale(),rotation:Ii.getRotation(),rotateWithView:Ii.getRotateWithView()}))}let $t=Qt.getZIndex()||0,ci=Ne[$t];ci||(ci={},Ne[$t]=ci,ci.Polygon=[],ci.Circle=[],ci.LineString=[],ci.Point=[]);let Jt=zt.getType();if(Jt==="GeometryCollection"){let Ei=zt.getGeometriesArrayRecursive();for(let ni=0,Ui=Ei.length;ni<Ui;++ni){let Bi=Ei[ni];ci[Bi.getType().replace("Multi","")].push(Bi,Qt)}}else ci[Jt.replace("Multi","")].push(zt,Qt)}}let nt=Object.keys(Ne).map(Number).sort(rh);for(let we=0,Pe=nt.length;we<Pe;++we){let et=Ne[nt[we]];for(let ut in et){let mt=et[ut];for(let ct=0,ft=mt.length;ct<ft;ct+=2){de.setStyle(mt[ct+1]);for(let It=0,Mt=i.length;It<Mt;++It)de.setTransform(i[It]),de.drawGeometry(mt[ct])}}}return q.getImageData(0,0,V.width,V.height)}function B1(v,i,u){let m=[];if(u){let a=Math.floor(Math.round(v[0])*$l),l=Math.floor(Math.round(v[1])*$l),M=(Jn(a,0,u.width-1)+Jn(l,0,u.height-1)*u.width)*4,z=u.data[M],D=u.data[M+1],V=u.data[M+2]+256*(D+256*z),de=Math.floor((256*256*256-1)/i.length);V&&V%de===0&&m.push(i[V/de-1])}return m}var E2=.5,U1={Point:k2,LineString:A2,Polygon:L2,MultiPoint:R2,MultiLineString:M2,MultiPolygon:P2,GeometryCollection:C2,Circle:T2};function V1(v,i){return parseInt(Tr(v),10)-parseInt(Tr(i),10)}function N1(v,i){let u=Eg(v,i);return u*u}function Eg(v,i){return E2*v/i}function T2(v,i,u,m,a){let l=u.getFill(),M=u.getStroke();if(l||M){let D=v.getBuilder(u.getZIndex(),"Circle");D.setFillStrokeStyle(l,M),D.drawCircle(i,m)}let z=u.getText();if(z&&z.getText()){let D=(a||v).getBuilder(u.getZIndex(),"Text");D.setTextStyle(z),D.drawText(i,m)}}function yv(v,i,u,m,a,l,M){let z=!1,D=u.getImage();if(D){let q=D.getImageState();q==Zn.LOADED||q==Zn.ERROR?D.unlistenImageChange(a):(q==Zn.IDLE&&D.load(),D.listenImageChange(a),z=!0)}return I2(v,i,u,m,l,M),z}function I2(v,i,u,m,a,l){let M=u.getGeometryFunction()(i);if(!M)return;let z=M.simplifyTransformed(m,a);if(u.getRenderer())j1(v,z,u,i);else{let q=U1[z.getType()];q(v,z,u,i,l)}}function j1(v,i,u,m){if(i.getType()=="GeometryCollection"){let l=i.getGeometries();for(let M=0,z=l.length;M<z;++M)j1(v,l[M],u,m);return}v.getBuilder(u.getZIndex(),"Default").drawCustom(i,m,u.getRenderer(),u.getHitDetectionRenderer())}function C2(v,i,u,m,a){let l=i.getGeometriesArray(),M,z;for(M=0,z=l.length;M<z;++M){let D=U1[l[M].getType()];D(v,l[M],u,m,a)}}function A2(v,i,u,m,a){let l=u.getStroke();if(l){let z=v.getBuilder(u.getZIndex(),"LineString");z.setFillStrokeStyle(null,l),z.drawLineString(i,m)}let M=u.getText();if(M&&M.getText()){let z=(a||v).getBuilder(u.getZIndex(),"Text");z.setTextStyle(M),z.drawText(i,m)}}function M2(v,i,u,m,a){let l=u.getStroke();if(l){let z=v.getBuilder(u.getZIndex(),"LineString");z.setFillStrokeStyle(null,l),z.drawMultiLineString(i,m)}let M=u.getText();if(M&&M.getText()){let z=(a||v).getBuilder(u.getZIndex(),"Text");z.setTextStyle(M),z.drawText(i,m)}}function P2(v,i,u,m,a){let l=u.getFill(),M=u.getStroke();if(M||l){let D=v.getBuilder(u.getZIndex(),"Polygon");D.setFillStrokeStyle(l,M),D.drawMultiPolygon(i,m)}let z=u.getText();if(z&&z.getText()){let D=(a||v).getBuilder(u.getZIndex(),"Text");D.setTextStyle(z),D.drawText(i,m)}}function k2(v,i,u,m,a){let l=u.getImage(),M=u.getText(),z;if(l){if(l.getImageState()!=Zn.LOADED)return;let D=v;if(a){let V=l.getDeclutterMode();if(V!=="none")if(D=a,V==="obstacle"){let de=v.getBuilder(u.getZIndex(),"Image");de.setImageStyle(l,z),de.drawPoint(i,m)}else M&&M.getText()&&(z={})}let q=D.getBuilder(u.getZIndex(),"Image");q.setImageStyle(l,z),q.drawPoint(i,m)}if(M&&M.getText()){let D=v;a&&(D=a);let q=D.getBuilder(u.getZIndex(),"Text");q.setTextStyle(M,z),q.drawText(i,m)}}function R2(v,i,u,m,a){let l=u.getImage(),M=u.getText(),z;if(l){if(l.getImageState()!=Zn.LOADED)return;let D=v;if(a){let V=l.getDeclutterMode();if(V!=="none")if(D=a,V==="obstacle"){let de=v.getBuilder(u.getZIndex(),"Image");de.setImageStyle(l,z),de.drawMultiPoint(i,m)}else M&&M.getText()&&(z={})}let q=D.getBuilder(u.getZIndex(),"Image");q.setImageStyle(l,z),q.drawMultiPoint(i,m)}if(M&&M.getText()){let D=v;a&&(D=a);let q=D.getBuilder(u.getZIndex(),"Text");q.setTextStyle(M,z),q.drawText(i,m)}}function L2(v,i,u,m,a){let l=u.getFill(),M=u.getStroke();if(l||M){let D=v.getBuilder(u.getZIndex(),"Polygon");D.setFillStrokeStyle(l,M),D.drawPolygon(i,m)}let z=u.getText();if(z&&z.getText()){let D=(a||v).getBuilder(u.getZIndex(),"Text");D.setTextStyle(z),D.drawText(i,m)}}var _v=class extends k1{constructor(i){super(i),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=Qa(),this.wrappedRenderedExtent_=Qa(),this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedRenderOrder_=null,this.replayGroup_=null,this.replayGroupChanged=!0,this.declutterExecutorGroup=null,this.clipping=!0,this.compositionContext_=null,this.opacity_=1}renderWorlds(i,u,m){let a=u.extent,l=u.viewState,M=l.center,z=l.resolution,D=l.projection,q=l.rotation,V=D.getExtent(),de=this.getLayer().getSource(),pe=u.pixelRatio,Ie=u.viewHints,Ne=!(Ie[Ss.ANIMATING]||Ie[Ss.INTERACTING]),nt=this.compositionContext_,we=Math.round(u.size[0]*pe),Pe=Math.round(u.size[1]*pe),et=de.getWrapX()&&D.canWrapX(),ut=et?bo(V):null,mt=et?Math.ceil((a[2]-V[2])/ut)+1:1,ct=et?Math.floor((a[0]-V[0])/ut):0;do{let ft=this.getRenderTransform(M,z,q,pe,we,Pe,ct*ut);i.execute(nt,1,ft,q,Ne,void 0,m)}while(++ct<mt)}setupCompositionContext_(){if(this.opacity_!==1){let i=aa(this.context.canvas.width,this.context.canvas.height,cv);this.compositionContext_=i}else this.compositionContext_=this.context}releaseCompositionContext_(){if(this.opacity_!==1){let i=this.context.globalAlpha;this.context.globalAlpha=this.opacity_,this.context.drawImage(this.compositionContext_.canvas,0,0),this.context.globalAlpha=i,s1(this.compositionContext_),cv.push(this.compositionContext_.canvas),this.compositionContext_=null}}renderDeclutter(i){this.declutterExecutorGroup&&(this.setupCompositionContext_(),this.renderWorlds(this.declutterExecutorGroup,i,i.declutterTree),this.releaseCompositionContext_())}renderFrame(i,u){let m=i.pixelRatio,a=i.layerStatesArray[i.layerIndex];Vx(this.pixelTransform,1/m,1/m),jx(this.inversePixelTransform,this.pixelTransform);let l=zy(this.pixelTransform);this.useContainer(u,l,this.getBackground(i));let M=this.context,z=M.canvas,D=this.replayGroup_,q=this.declutterExecutorGroup;if((!D||D.isEmpty())&&(!q||q.isEmpty()))return null;let V=Math.round(i.size[0]*m),de=Math.round(i.size[1]*m);z.width!=V||z.height!=de?(z.width=V,z.height=de,z.style.transform!==l&&(z.style.transform=l)):this.containerReused||M.clearRect(0,0,V,de),this.preRender(M,i);let pe=i.viewState,Ie=pe.projection;this.opacity_=a.opacity,this.setupCompositionContext_();let Ne=!1,nt=!0;if(a.extent&&this.clipping){let we=Eu(a.extent,Ie);nt=uo(we,i.extent),Ne=nt&&!lc(we,i.extent),Ne&&this.clipUnrotated(this.compositionContext_,i,we)}return nt&&this.renderWorlds(D,i),Ne&&this.compositionContext_.restore(),this.releaseCompositionContext_(),this.postRender(M,i),this.renderedRotation_!==pe.rotation&&(this.renderedRotation_=pe.rotation,this.hitDetectionImageData_=null),this.container}getFeatures(i){return new Promise(u=>{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){let m=[this.context.canvas.width,this.context.canvas.height];qo(this.pixelTransform,m);let a=this.renderedCenter_,l=this.renderedResolution_,M=this.renderedRotation_,z=this.renderedProjection_,D=this.wrappedRenderedExtent_,q=this.getLayer(),V=[],de=m[0]*$l,pe=m[1]*$l;V.push(this.getRenderTransform(a,l,M,$l,de,pe,0).slice());let Ie=q.getSource(),Ne=z.getExtent();if(Ie.getWrapX()&&z.canWrapX()&&!lc(Ne,D)){let nt=D[0],we=bo(Ne),Pe=0,et;for(;nt<Ne[0];)--Pe,et=we*Pe,V.push(this.getRenderTransform(a,l,M,$l,de,pe,et).slice()),nt+=we;for(Pe=0,nt=D[2];nt>Ne[2];)++Pe,et=we*Pe,V.push(this.getRenderTransform(a,l,M,$l,de,pe,et).slice()),nt-=we}this.hitDetectionImageData_=O1(m,V,this.renderedFeatures_,q.getStyleFunction(),D,l,M)}u(B1(i,this.renderedFeatures_,this.hitDetectionImageData_))})}forEachFeatureAtCoordinate(i,u,m,a,l){if(!this.replayGroup_)return;let M=u.viewState.resolution,z=u.viewState.rotation,D=this.getLayer(),q={},V=function(Ie,Ne,nt){let we=Tr(Ie),Pe=q[we];if(Pe){if(Pe!==!0&&nt<Pe.distanceSq){if(nt===0)return q[we]=!0,l.splice(l.lastIndexOf(Pe),1),a(Ie,D,Ne);Pe.geometry=Ne,Pe.distanceSq=nt}}else{if(nt===0)return q[we]=!0,a(Ie,D,Ne);l.push(q[we]={feature:Ie,layer:D,geometry:Ne,distanceSq:nt,callback:a})}},de,pe=[this.replayGroup_];return this.declutterExecutorGroup&&pe.push(this.declutterExecutorGroup),pe.some(Ie=>de=Ie.forEachFeatureAtCoordinate(i,M,z,m,V,Ie===this.declutterExecutorGroup&&u.declutterTree?u.declutterTree.all().map(Ne=>Ne.value):null)),de}handleFontsChanged(){let i=this.getLayer();i.getVisible()&&this.replayGroup_&&i.changed()}handleStyleImageChange_(i){this.renderIfReadyAndVisible()}prepareFrame(i){let u=this.getLayer(),m=u.getSource();if(!m)return!1;let a=i.viewHints[Ss.ANIMATING],l=i.viewHints[Ss.INTERACTING],M=u.getUpdateWhileAnimating(),z=u.getUpdateWhileInteracting();if(this.ready&&!M&&a||!z&&l)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;let D=i.extent,q=i.viewState,V=q.projection,de=q.resolution,pe=i.pixelRatio,Ie=u.getRevision(),Ne=u.getRenderBuffer(),nt=u.getRenderOrder();nt===void 0&&(nt=V1);let we=q.center.slice(),Pe=_l(D,Ne*de),et=Pe.slice(),ut=[Pe.slice()],mt=V.getExtent();if(m.getWrapX()&&V.canWrapX()&&!lc(mt,i.extent)){let Jt=bo(mt),Ei=Math.max(bo(Pe)/2,Jt);Pe[0]=mt[0]-Ei,Pe[2]=mt[2]+Ei,p0(we,V);let ni=Ny(ut[0],V);ni[0]<mt[0]&&ni[2]<mt[2]?ut.push([ni[0]+Jt,ni[1],ni[2]+Jt,ni[3]]):ni[0]>mt[0]&&ni[2]>mt[2]&&ut.push([ni[0]-Jt,ni[1],ni[2]-Jt,ni[3]])}if(this.ready&&this.renderedResolution_==de&&this.renderedRevision_==Ie&&this.renderedRenderOrder_==nt&&lc(this.wrappedRenderedExtent_,Pe))return xs(this.renderedExtent_,et)||(this.hitDetectionImageData_=null,this.renderedExtent_=et),this.renderedCenter_=we,this.replayGroupChanged=!1,!0;this.replayGroup_=null;let ct=new av(Eg(de,pe),Pe,de,pe),ft;this.getLayer().getDeclutter()&&(ft=new av(Eg(de,pe),Pe,de,pe));let It=Su(),Mt;if(It){for(let Jt=0,Ei=ut.length;Jt<Ei;++Jt){let ni=ut[Jt],Ui=lh(ni,V);m.loadFeatures(Ui,_0(de,V),It)}Mt=rg(It,V)}else for(let Jt=0,Ei=ut.length;Jt<Ei;++Jt)m.loadFeatures(ut[Jt],de,V);let zt=N1(de,pe),Qt=!0,Vt=Jt=>{let Ei,ni=Jt.getStyleFunction()||u.getStyleFunction();if(ni&&(Ei=ni(Jt,de)),Ei){let Ui=this.renderFeature(Jt,zt,Ei,ct,Mt,ft);Qt=Qt&&!Ui}},mi=lh(Pe,V),Ii=m.getFeaturesInExtent(mi);nt&&Ii.sort(nt);for(let Jt=0,Ei=Ii.length;Jt<Ei;++Jt)Vt(Ii[Jt]);this.renderedFeatures_=Ii,this.ready=Qt;let $t=ct.finish(),ci=new mv(Pe,de,pe,m.getOverlaps(),$t,u.getRenderBuffer());return ft&&(this.declutterExecutorGroup=new mv(Pe,de,pe,m.getOverlaps(),ft.finish(),u.getRenderBuffer())),this.renderedResolution_=de,this.renderedRevision_=Ie,this.renderedRenderOrder_=nt,this.renderedExtent_=et,this.wrappedRenderedExtent_=Pe,this.renderedCenter_=we,this.renderedProjection_=V,this.replayGroup_=ci,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(i,u,m,a,l,M){if(!m)return!1;let z=!1;if(Array.isArray(m))for(let D=0,q=m.length;D<q;++D)z=yv(a,i,m[D],u,this.boundHandleStyleImageChange_,l,M)||z;else z=yv(a,i,m,u,this.boundHandleStyleImageChange_,l,M);return z}},G1=_v;var vv=class extends S1{constructor(i){super(i)}createRenderer(){return new G1(this)}},Qh=vv;var q1=Vp(Z_(),1);var xv=class{constructor(i){this.rbush_=new q1.default(i),this.items_={}}insert(i,u){let m={minX:i[0],minY:i[1],maxX:i[2],maxY:i[3],value:u};this.rbush_.insert(m),this.items_[Tr(u)]=m}load(i,u){let m=new Array(u.length);for(let a=0,l=u.length;a<l;a++){let M=i[a],z=u[a],D={minX:M[0],minY:M[1],maxX:M[2],maxY:M[3],value:z};m[a]=D,this.items_[Tr(z)]=D}this.rbush_.load(m)}remove(i){let u=Tr(i),m=this.items_[u];return delete this.items_[u],this.rbush_.remove(m)!==null}update(i,u){let m=this.items_[Tr(u)],a=[m.minX,m.minY,m.maxX,m.maxY];Qm(a,i)||(this.remove(u),this.insert(i,u))}getAll(){return this.rbush_.all().map(function(u){return u.value})}getInExtent(i){let u={minX:i[0],minY:i[1],maxX:i[2],maxY:i[3]};return this.rbush_.search(u).map(function(a){return a.value})}forEach(i){return this.forEach_(this.getAll(),i)}forEachInExtent(i,u){return this.forEach_(this.getInExtent(i),u)}forEach_(i,u){let m;for(let a=0,l=i.length;a<l;a++)if(m=u(i[a]),m)return m;return m}isEmpty(){return Gl(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(i){let u=this.rbush_.toJSON();return uc(u.minX,u.minY,u.maxX,u.maxY,i)}concat(i){this.rbush_.load(i.rbush_.all());for(let u in i.items_)this.items_[u]=i.items_[u]}},zf=xv;var bv=class extends lo{constructor(i){super(),this.projection=Zo(i.projection),this.attributions_=Z1(i.attributions),this.attributionsCollapsible_=i.attributionsCollapsible!==void 0?i.attributionsCollapsible:!0,this.loading=!1,this.state_=i.state!==void 0?i.state:"ready",this.wrapX_=i.wrapX!==void 0?i.wrapX:!1,this.interpolate_=!!i.interpolate,this.viewResolver=null,this.viewRejector=null;let u=this;this.viewPromise_=new Promise(function(m,a){u.viewResolver=m,u.viewRejector=a})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(i){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(i){this.attributions_=Z1(i),this.changed()}setState(i){this.state_=i,this.changed()}};function Z1(v){return v?Array.isArray(v)?function(i){return v}:typeof v=="function"?v:function(i){return[v]}:null}var dd=bv;var ts={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"};function W1(v,i){return[[-1/0,-1/0,1/0,1/0]]}var z2=!1;function D2(v,i,u,m,a,l,M){let z=new XMLHttpRequest;z.open("GET",typeof v=="function"?v(u,m,a):v,!0),i.getType()=="arraybuffer"&&(z.responseType="arraybuffer"),z.withCredentials=z2,z.onload=function(D){if(!z.status||z.status>=200&&z.status<300){let q=i.getType(),V;q=="json"||q=="text"?V=z.responseText:q=="xml"?(V=z.responseXML,V||(V=new DOMParser().parseFromString(z.responseText,"application/xml"))):q=="arraybuffer"&&(V=z.response),V?l(i.readFeatures(V,{extent:u,featureProjection:a}),i.readProjection(V)):M()}else M()},z.onerror=M,z.send()}function wv(v,i){return function(u,m,a,l,M){let z=this;D2(v,i,u,m,a,function(D,q){z.addFeatures(D),l!==void 0&&l(D)},M||ac)}}var Pu=class extends nn{constructor(i,u,m){super(i),this.feature=u,this.features=m}},Sv=class extends dd{constructor(i){i=i||{},super({attributions:i.attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:i.wrapX!==void 0?i.wrapX:!0}),this.on,this.once,this.un,this.loader_=ac,this.format_=i.format,this.overlaps_=i.overlaps===void 0?!0:i.overlaps,this.url_=i.url,i.loader!==void 0?this.loader_=i.loader:this.url_!==void 0&&(zr(this.format_,7),this.loader_=wv(this.url_,this.format_)),this.strategy_=i.strategy!==void 0?i.strategy:W1;let u=i.useSpatialIndex!==void 0?i.useSpatialIndex:!0;this.featuresRtree_=u?new zf:null,this.loadedExtentsRtree_=new zf,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null;let m,a;Array.isArray(i.features)?a=i.features:i.features&&(m=i.features,a=m.getArray()),!u&&m===void 0&&(m=new dh(a)),a!==void 0&&this.addFeaturesInternal(a),m!==void 0&&this.bindFeaturesCollection_(m)}addFeature(i){this.addFeatureInternal(i),this.changed()}addFeatureInternal(i){let u=Tr(i);if(!this.addToIndex_(u,i)){this.featuresCollection_&&this.featuresCollection_.remove(i);return}this.setupChangeEvents_(u,i);let m=i.getGeometry();if(m){let a=m.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(a,i)}else this.nullGeometryFeatures_[u]=i;this.dispatchEvent(new Pu(ts.ADDFEATURE,i))}setupChangeEvents_(i,u){this.featureChangeKeys_[i]=[so(u,cn.CHANGE,this.handleFeatureChange_,this),so(u,Np.PROPERTYCHANGE,this.handleFeatureChange_,this)]}addToIndex_(i,u){let m=!0,a=u.getId();return a!==void 0&&(a.toString()in this.idIndex_?m=!1:this.idIndex_[a.toString()]=u),m&&(zr(!(i in this.uidIndex_),30),this.uidIndex_[i]=u),m}addFeatures(i){this.addFeaturesInternal(i),this.changed()}addFeaturesInternal(i){let u=[],m=[],a=[];for(let l=0,M=i.length;l<M;l++){let z=i[l],D=Tr(z);this.addToIndex_(D,z)&&m.push(z)}for(let l=0,M=m.length;l<M;l++){let z=m[l],D=Tr(z);this.setupChangeEvents_(D,z);let q=z.getGeometry();if(q){let V=q.getExtent();u.push(V),a.push(z)}else this.nullGeometryFeatures_[D]=z}if(this.featuresRtree_&&this.featuresRtree_.load(u,a),this.hasListener(ts.ADDFEATURE))for(let l=0,M=m.length;l<M;l++)this.dispatchEvent(new Pu(ts.ADDFEATURE,m[l]))}bindFeaturesCollection_(i){let u=!1;this.addEventListener(ts.ADDFEATURE,function(m){u||(u=!0,i.push(m.feature),u=!1)}),this.addEventListener(ts.REMOVEFEATURE,function(m){u||(u=!0,i.remove(m.feature),u=!1)}),i.addEventListener(Es.ADD,m=>{u||(u=!0,this.addFeature(m.element),u=!1)}),i.addEventListener(Es.REMOVE,m=>{u||(u=!0,this.removeFeature(m.element),u=!1)}),this.featuresCollection_=i}clear(i){if(i){for(let m in this.featureChangeKeys_)this.featureChangeKeys_[m].forEach(Po);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){let m=a=>{this.removeFeatureInternal(a)};this.featuresRtree_.forEach(m);for(let a in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[a])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};let u=new Pu(ts.CLEAR);this.dispatchEvent(u),this.changed()}forEachFeature(i){if(this.featuresRtree_)return this.featuresRtree_.forEach(i);this.featuresCollection_&&this.featuresCollection_.forEach(i)}forEachFeatureAtCoordinateDirect(i,u){let m=[i[0],i[1],i[0],i[1]];return this.forEachFeatureInExtent(m,function(a){if(a.getGeometry().intersectsCoordinate(i))return u(a)})}forEachFeatureInExtent(i,u){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(i,u);this.featuresCollection_&&this.featuresCollection_.forEach(u)}forEachFeatureIntersectingExtent(i,u){return this.forEachFeatureInExtent(i,function(m){if(m.getGeometry().intersectsExtent(i)){let l=u(m);if(l)return l}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let i;return this.featuresCollection_?i=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(i=this.featuresRtree_.getAll(),Gl(this.nullGeometryFeatures_)||Ya(i,Object.values(this.nullGeometryFeatures_))),i}getFeaturesAtCoordinate(i){let u=[];return this.forEachFeatureAtCoordinateDirect(i,function(m){u.push(m)}),u}getFeaturesInExtent(i,u){if(this.featuresRtree_){if(!(u&&u.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(i);let a=Jx(i,u);return[].concat(...a.map(l=>this.featuresRtree_.getInExtent(l)))}else if(this.featuresCollection_)return this.featuresCollection_.getArray().slice(0);return[]}getClosestFeatureToCoordinate(i,u){let m=i[0],a=i[1],l=null,M=[NaN,NaN],z=1/0,D=[-1/0,-1/0,1/0,1/0];return u=u||Gm,this.featuresRtree_.forEachInExtent(D,function(q){if(u(q)){let V=q.getGeometry(),de=z;if(z=V.closestPointXY(m,a,M,z),z<de){l=q;let pe=Math.sqrt(z);D[0]=m-pe,D[1]=a-pe,D[2]=m+pe,D[3]=a+pe}}}),l}getExtent(i){return this.featuresRtree_.getExtent(i)}getFeatureById(i){let u=this.idIndex_[i.toString()];return u!==void 0?u:null}getFeatureByUid(i){let u=this.uidIndex_[i];return u!==void 0?u:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(i){let u=i.target,m=Tr(u),a=u.getGeometry();if(!a)m in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(u),this.nullGeometryFeatures_[m]=u);else{let M=a.getExtent();m in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[m],this.featuresRtree_&&this.featuresRtree_.insert(M,u)):this.featuresRtree_&&this.featuresRtree_.update(M,u)}let l=u.getId();if(l!==void 0){let M=l.toString();this.idIndex_[M]!==u&&(this.removeFromIdIndex_(u),this.idIndex_[M]=u)}else this.removeFromIdIndex_(u),this.uidIndex_[m]=u;this.changed(),this.dispatchEvent(new Pu(ts.CHANGEFEATURE,u))}hasFeature(i){let u=i.getId();return u!==void 0?u in this.idIndex_:Tr(i)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&Gl(this.nullGeometryFeatures_):this.featuresCollection_?this.featuresCollection_.getLength()===0:!0}loadFeatures(i,u,m){let a=this.loadedExtentsRtree_,l=this.strategy_(i,u,m);for(let M=0,z=l.length;M<z;++M){let D=l[M];a.forEachInExtent(D,function(V){return lc(V.extent,D)})||(++this.loadingExtentsCount_,this.dispatchEvent(new Pu(ts.FEATURESLOADSTART)),this.loader_.call(this,D,u,m,V=>{--this.loadingExtentsCount_,this.dispatchEvent(new Pu(ts.FEATURESLOADEND,void 0,V))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Pu(ts.FEATURESLOADERROR))}),a.insert(D,{extent:D.slice()}))}this.loading=this.loader_.length<4?!1:this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(i){let u=this.loadedExtentsRtree_,m;u.forEachInExtent(i,function(a){if(Qm(a.extent,i))return m=a,!0}),m&&u.remove(m)}removeFeature(i){if(!i)return;let u=Tr(i);u in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[u]:this.featuresRtree_&&this.featuresRtree_.remove(i),this.removeFeatureInternal(i)&&this.changed()}removeFeatureInternal(i){let u=Tr(i),m=this.featureChangeKeys_[u];if(!m)return;m.forEach(Po),delete this.featureChangeKeys_[u];let a=i.getId();return a!==void 0&&delete this.idIndex_[a.toString()],delete this.uidIndex_[u],this.dispatchEvent(new Pu(ts.REMOVEFEATURE,i)),i}removeFromIdIndex_(i){let u=!1;for(let m in this.idIndex_)if(this.idIndex_[m]===i){delete this.idIndex_[m],u=!0;break}return u}setLoader(i){this.loader_=i}setUrl(i){zr(this.format_,7),this.url_=i,this.setLoader(wv(i,this.format_))}},ep=Sv;var _h=class extends nn{constructor(i,u){super(i),this.layer=u}},Ev={LAYERS:"layers"},Df=class extends mg{constructor(i){i=i||{};let u=Object.assign({},i);delete u.layers;let m=i.layers;super(u),this.on,this.once,this.un,this.layersListenerKeys_=[],this.listenerKeys_={},this.addChangeListener(Ev.LAYERS,this.handleLayersChanged_),m?Array.isArray(m)?m=new dh(m.slice(),{unique:!0}):zr(typeof m.getArray=="function",43):m=new dh(void 0,{unique:!0}),this.setLayers(m)}handleLayerChange_(){this.changed()}handleLayersChanged_(){this.layersListenerKeys_.forEach(Po),this.layersListenerKeys_.length=0;let i=this.getLayers();this.layersListenerKeys_.push(so(i,Es.ADD,this.handleLayersAdd_,this),so(i,Es.REMOVE,this.handleLayersRemove_,this));for(let m in this.listenerKeys_)this.listenerKeys_[m].forEach(Po);nh(this.listenerKeys_);let u=i.getArray();for(let m=0,a=u.length;m<a;m++){let l=u[m];this.registerLayerListeners_(l),this.dispatchEvent(new _h("addlayer",l))}this.changed()}registerLayerListeners_(i){let u=[so(i,Np.PROPERTYCHANGE,this.handleLayerChange_,this),so(i,cn.CHANGE,this.handleLayerChange_,this)];i instanceof Df&&u.push(so(i,"addlayer",this.handleLayerGroupAdd_,this),so(i,"removelayer",this.handleLayerGroupRemove_,this)),this.listenerKeys_[Tr(i)]=u}handleLayerGroupAdd_(i){this.dispatchEvent(new _h("addlayer",i.layer))}handleLayerGroupRemove_(i){this.dispatchEvent(new _h("removelayer",i.layer))}handleLayersAdd_(i){let u=i.element;this.registerLayerListeners_(u),this.dispatchEvent(new _h("addlayer",u)),this.changed()}handleLayersRemove_(i){let u=i.element,m=Tr(u);this.listenerKeys_[m].forEach(Po),delete this.listenerKeys_[m],this.dispatchEvent(new _h("removelayer",u)),this.changed()}getLayers(){return this.get(Ev.LAYERS)}setLayers(i){let u=this.getLayers();if(u){let m=u.getArray();for(let a=0,l=m.length;a<l;++a)this.dispatchEvent(new _h("removelayer",m[a]))}this.set(Ev.LAYERS,i)}getLayersArray(i){return i=i!==void 0?i:[],this.getLayers().forEach(function(u){u.getLayersArray(i)}),i}getLayerStatesArray(i){let u=i!==void 0?i:[],m=u.length;this.getLayers().forEach(function(M){M.getLayerStatesArray(u)});let a=this.getLayerState(),l=a.zIndex;!i&&a.zIndex===void 0&&(l=0);for(let M=m,z=u.length;M<z;M++){let D=u[M];D.opacity*=a.opacity,D.visible=D.visible&&a.visible,D.maxResolution=Math.min(D.maxResolution,a.maxResolution),D.minResolution=Math.max(D.minResolution,a.minResolution),D.minZoom=Math.max(D.minZoom,a.minZoom),D.maxZoom=Math.min(D.maxZoom,a.maxZoom),a.extent!==void 0&&(D.extent!==void 0?D.extent=Xx(D.extent,a.extent):D.extent=a.extent),D.zIndex===void 0&&(D.zIndex=l)}return u}getSourceState(){return"ready"}},Tv=Df;var Js={SINGLECLICK:"singleclick",CLICK:cn.CLICK,DBLCLICK:cn.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"};var Iv={ACTIVE:"active"};var Cv=class extends lo{constructor(i){super(),this.on,this.once,this.un,i&&i.handleEvent&&(this.handleEvent=i.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(Iv.ACTIVE)}getMap(){return this.map_}handleEvent(i){return!0}setActive(i){this.set(Iv.ACTIVE,i)}setMap(i){this.map_=i}};var X1=Cv;var Av=class extends X1{constructor(i){i=i||{},super(i),i.handleDownEvent&&(this.handleDownEvent=i.handleDownEvent),i.handleDragEvent&&(this.handleDragEvent=i.handleDragEvent),i.handleMoveEvent&&(this.handleMoveEvent=i.handleMoveEvent),i.handleUpEvent&&(this.handleUpEvent=i.handleUpEvent),i.stopDown&&(this.stopDown=i.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(i){return!1}handleDragEvent(i){}handleEvent(i){if(!i.originalEvent)return!0;let u=!1;if(this.updateTrackedPointers_(i),this.handlingDownUpSequence){if(i.type==Js.POINTERDRAG)this.handleDragEvent(i),i.originalEvent.preventDefault();else if(i.type==Js.POINTERUP){let m=this.handleUpEvent(i);this.handlingDownUpSequence=m&&this.targetPointers.length>0}}else if(i.type==Js.POINTERDOWN){let m=this.handleDownEvent(i);this.handlingDownUpSequence=m,u=this.stopDown(m)}else i.type==Js.POINTERMOVE&&this.handleMoveEvent(i);return!u}handleMoveEvent(i){}handleUpEvent(i){return!1}stopDown(i){return i}updateTrackedPointers_(i){i.activePointers&&(this.targetPointers=i.activePointers)}};var $1=Av;var K1=function(v){let i=v.originalEvent;return i.altKey&&!(i.metaKey||i.ctrlKey)&&!i.shiftKey};var H1=Gm,Y1=function(v){return v.type==Js.CLICK};var J1=function(v){return v.type==Js.SINGLECLICK};var Q1=function(v){let i=v.originalEvent;return zr(i!==void 0,56),i.isPrimary&&i.button===0};var eb=0,Ff=1,tb=[0,0,0,0],fd=[],Mv={MODIFYSTART:"modifystart",MODIFYEND:"modifyend"},Of=class extends nn{constructor(i,u,m){super(i),this.features=u,this.mapBrowserEvent=m}},Pv=class extends $1{constructor(i){super(i),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=i.condition?i.condition:Q1,this.defaultDeleteCondition_=function(m){return K1(m)&&J1(m)},this.deleteCondition_=i.deleteCondition?i.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=i.insertVertexCondition?i.insertVertexCondition:H1,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new zf,this.pixelTolerance_=i.pixelTolerance!==void 0?i.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new Qh({source:new ep({useSpatialIndex:!1,wrapX:!!i.wrapX}),style:i.style?i.style:O2(),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 u;if(i.features?u=i.features:i.source&&(this.source_=i.source,u=new dh(this.source_.getFeatures()),this.source_.addEventListener(ts.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(ts.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!u)throw new Error("The modify interaction requires features, a source or a layer");i.hitDetection&&(this.hitDetection_=i.hitDetection),this.features_=u,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(Es.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(Es.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=i.snapToPointer===void 0?!this.hitDetection_:i.snapToPointer}addFeature_(i){let u=i.getGeometry();if(u){let a=this.SEGMENT_WRITERS_[u.getType()];a&&a(i,u)}let m=this.getMap();m&&m.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,m),i.addEventListener(cn.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(i,u){if(!this.featuresBeingModified_){this.featuresBeingModified_=new dh;let m=this.featuresBeingModified_.getArray();for(let a=0,l=u.length;a<l;++a){let M=u[a];for(let z=0,D=M.length;z<D;++z){let q=M[z].feature;q&&!m.includes(q)&&this.featuresBeingModified_.push(q)}}this.featuresBeingModified_.getLength()===0?this.featuresBeingModified_=null:this.dispatchEvent(new Of(Mv.MODIFYSTART,this.featuresBeingModified_,i))}}removeFeature_(i){this.removeFeatureSegmentData_(i),this.vertexFeature_&&this.features_.getLength()===0&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),i.removeEventListener(cn.CHANGE,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(i){let u=this.rBush_,m=[];u.forEach(function(a){i===a.feature&&m.push(a)});for(let a=m.length-1;a>=0;--a){let l=m[a];for(let M=this.dragSegments_.length-1;M>=0;--M)this.dragSegments_[M][0]===l&&this.dragSegments_.splice(M,1);u.remove(l)}}setActive(i){this.vertexFeature_&&!i&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(i)}setMap(i){this.overlay_.setMap(i),super.setMap(i)}getOverlay(){return this.overlay_}handleSourceAdd_(i){i.feature&&this.features_.push(i.feature)}handleSourceRemove_(i){i.feature&&this.features_.remove(i.feature)}handleFeatureAdd_(i){this.addFeature_(i.element)}handleFeatureChange_(i){if(!this.changingFeature_){let u=i.target;this.removeFeature_(u),this.addFeature_(u)}}handleFeatureRemove_(i){this.removeFeature_(i.element)}writePointGeometry_(i,u){let m=u.getCoordinates(),a={feature:i,geometry:u,segment:[m,m]};this.rBush_.insert(u.getExtent(),a)}writeMultiPointGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a],z={feature:i,geometry:u,depth:[a],index:a,segment:[M,M]};this.rBush_.insert(u.getExtent(),z)}}writeLineStringGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length-1;a<l;++a){let M=m.slice(a,a+2),z={feature:i,geometry:u,index:a,segment:M};this.rBush_.insert(bu(M),z)}}writeMultiLineStringGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a];for(let z=0,D=M.length-1;z<D;++z){let q=M.slice(z,z+2),V={feature:i,geometry:u,depth:[a],index:z,segment:q};this.rBush_.insert(bu(q),V)}}}writePolygonGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a];for(let z=0,D=M.length-1;z<D;++z){let q=M.slice(z,z+2),V={feature:i,geometry:u,depth:[a],index:z,segment:q};this.rBush_.insert(bu(q),V)}}}writeMultiPolygonGeometry_(i,u){let m=u.getCoordinates();for(let a=0,l=m.length;a<l;++a){let M=m[a];for(let z=0,D=M.length;z<D;++z){let q=M[z];for(let V=0,de=q.length-1;V<de;++V){let pe=q.slice(V,V+2),Ie={feature:i,geometry:u,depth:[z,a],index:V,segment:pe};this.rBush_.insert(bu(pe),Ie)}}}}writeCircleGeometry_(i,u){let m=u.getCenter(),a={feature:i,geometry:u,index:eb,segment:[m,m]},l={feature:i,geometry:u,index:Ff,segment:[m,m]},M=[a,l];a.featureSegments=M,l.featureSegments=M,this.rBush_.insert(Xp(m),a);let z=u,D=Su();if(D&&this.getMap()){let q=this.getMap().getView().getProjection();z=z.clone().transform(D,q),z=l_(z).transform(q,D)}this.rBush_.insert(z.getExtent(),l)}writeGeometryCollectionGeometry_(i,u){let m=u.getGeometriesArray();for(let a=0;a<m.length;++a){let l=m[a],M=this.SEGMENT_WRITERS_[l.getType()];M(i,l)}}createOrUpdateVertexFeature_(i,u,m){let a=this.vertexFeature_;return a?a.getGeometry().setCoordinates(i):(a=new Tu(new xa(i)),this.vertexFeature_=a,this.overlay_.getSource().addFeature(a)),a.set("features",u),a.set("geometries",m),a}handleEvent(i){if(!i.originalEvent)return!0;this.lastPointerEvent_=i;let u;return!i.map.getView().getInteracting()&&i.type==Js.POINTERMOVE&&!this.handlingDownUpSequence&&this.handlePointerMove_(i),this.vertexFeature_&&this.deleteCondition_(i)&&(i.type!=Js.SINGLECLICK||!this.ignoreNextSingleClick_?u=this.removePoint():u=!0),i.type==Js.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(i)&&!u}handleDragEvent(i){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(i,this.dragSegments_);let u=[i.coordinate[0]+this.delta_[0],i.coordinate[1]+this.delta_[1]],m=[],a=[];for(let l=0,M=this.dragSegments_.length;l<M;++l){let z=this.dragSegments_[l],D=z[0],q=D.feature;m.includes(q)||m.push(q);let V=D.geometry;a.includes(V)||a.push(V);let de=D.depth,pe,Ie=D.segment,Ne=z[1];for(;u.length<V.getStride();)u.push(Ie[Ne][u.length]);switch(V.getType()){case"Point":pe=u,Ie[0]=u,Ie[1]=u;break;case"MultiPoint":pe=V.getCoordinates(),pe[D.index]=u,Ie[0]=u,Ie[1]=u;break;case"LineString":pe=V.getCoordinates(),pe[D.index+Ne]=u,Ie[Ne]=u;break;case"MultiLineString":pe=V.getCoordinates(),pe[de[0]][D.index+Ne]=u,Ie[Ne]=u;break;case"Polygon":pe=V.getCoordinates(),pe[de[0]][D.index+Ne]=u,Ie[Ne]=u;break;case"MultiPolygon":pe=V.getCoordinates(),pe[de[1]][de[0]][D.index+Ne]=u,Ie[Ne]=u;break;case"Circle":if(Ie[0]=u,Ie[1]=u,D.index===eb)this.changingFeature_=!0,V.setCenter(u),this.changingFeature_=!1;else{this.changingFeature_=!0;let nt=i.map.getView().getProjection(),we=Xy(Ro(V.getCenter(),nt),Ro(u,nt)),Pe=Su();if(Pe){let et=V.clone().transform(Pe,nt);et.setRadius(we),we=et.transform(nt,Pe).getRadius()}V.setRadius(we),this.changingFeature_=!1}break;default:}pe&&this.setGeometryCoordinates_(V,pe)}this.createOrUpdateVertexFeature_(u,m,a)}handleDownEvent(i){if(!this.condition_(i))return!1;let u=i.coordinate;this.handlePointerAtPixel_(i.pixel,i.map,u),this.dragSegments_.length=0,this.featuresBeingModified_=null;let m=this.vertexFeature_;if(m){let a=i.map.getView().getProjection(),l=[],M=m.getGeometry().getCoordinates(),z=bu([M]),D=this.rBush_.getInExtent(z),q={};D.sort(F2);for(let V=0,de=D.length;V<de;++V){let pe=D[V],Ie=pe.segment,Ne=Tr(pe.geometry),nt=pe.depth;if(nt&&(Ne+="-"+nt.join("-")),q[Ne]||(q[Ne]=new Array(2)),pe.geometry.getType()==="Circle"&&pe.index===Ff){let we=rb(u,pe,a);es(we,M)&&!q[Ne][0]&&(this.dragSegments_.push([pe,0]),q[Ne][0]=pe);continue}if(es(Ie[0],M)&&!q[Ne][0]){this.dragSegments_.push([pe,0]),q[Ne][0]=pe;continue}if(es(Ie[1],M)&&!q[Ne][1]){if(q[Ne][0]&&q[Ne][0].index===0){let we=pe.geometry.getCoordinates();switch(pe.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":we=we[nt[1]];case"Polygon":if(pe.index!==we[nt[0]].length-2)continue;break;default:}}this.dragSegments_.push([pe,1]),q[Ne][1]=pe;continue}Tr(Ie)in this.vertexSegments_&&!q[Ne][0]&&!q[Ne][1]&&this.insertVertexCondition_(i)&&l.push(pe)}l.length&&this.willModifyFeatures_(i,[l]);for(let V=l.length-1;V>=0;--V)this.insertVertex_(l[V],M)}return!!this.vertexFeature_}handleUpEvent(i){for(let u=this.dragSegments_.length-1;u>=0;--u){let m=this.dragSegments_[u][0],a=m.geometry;if(a.getType()==="Circle"){let l=a.getCenter(),M=m.featureSegments[0],z=m.featureSegments[1];M.segment[0]=l,M.segment[1]=l,z.segment[0]=l,z.segment[1]=l,this.rBush_.update(Xp(l),M);let D=a,q=Su();if(q){let V=i.map.getView().getProjection();D=D.clone().transform(q,V),D=l_(D).transform(V,q)}this.rBush_.update(D.getExtent(),z)}else this.rBush_.update(bu(m.segment),m)}return this.featuresBeingModified_&&(this.dispatchEvent(new Of(Mv.MODIFYEND,this.featuresBeingModified_,i)),this.featuresBeingModified_=null),!1}handlePointerMove_(i){this.lastPixel_=i.pixel,this.handlePointerAtPixel_(i.pixel,i.map,i.coordinate)}handlePointerAtPixel_(i,u,m){let a=m||u.getCoordinateFromPixel(i),l=u.getView().getProjection(),M=function(q,V){return ib(a,q,l)-ib(a,V,l)},z,D;if(this.hitDetection_){let q=typeof this.hitDetection_=="object"?V=>V===this.hitDetection_:void 0;u.forEachFeatureAtPixel(i,(V,de,pe)=>{let Ie=pe||V.getGeometry();if(Ie.getType()==="Point"&&V instanceof Tu&&this.features_.getArray().includes(V)){D=Ie;let Ne=D.getFlatCoordinates().slice(0,2);z=[{feature:V,geometry:D,segment:[Ne,Ne]}]}return!0},{layerFilter:q})}if(!z){let q=Eu(Xp(a,tb),l),V=u.getView().getResolution()*this.pixelTolerance_,de=lh(_l(q,V,tb),l);z=this.rBush_.getInExtent(de)}if(z&&z.length>0){let q=z.sort(M)[0],V=q.segment,de=rb(a,q,l),pe=u.getPixelFromCoordinate(de),Ie=Xy(i,pe);if(D||Ie<=this.pixelTolerance_){let Ne={};if(Ne[Tr(V)]=!0,this.snapToPointer_||(this.delta_[0]=de[0]-a[0],this.delta_[1]=de[1]-a[1]),q.geometry.getType()==="Circle"&&q.index===Ff)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(de,[q.feature],[q.geometry]);else{let nt=u.getPixelFromCoordinate(V[0]),we=u.getPixelFromCoordinate(V[1]),Pe=Hp(pe,nt),et=Hp(pe,we);Ie=Math.sqrt(Math.min(Pe,et)),this.snappedToVertex_=Ie<=this.pixelTolerance_,this.snappedToVertex_&&(de=Pe>et?V[1]:V[0]),this.createOrUpdateVertexFeature_(de,[q.feature],[q.geometry]);let ut={};ut[Tr(q.geometry)]=!0;for(let mt=1,ct=z.length;mt<ct;++mt){let ft=z[mt].segment;if(es(V[0],ft[0])&&es(V[1],ft[1])||es(V[0],ft[1])&&es(V[1],ft[0])){let It=Tr(z[mt].geometry);It in ut||(ut[It]=!0,Ne[Tr(ft)]=!0)}else break}}this.vertexSegments_=Ne;return}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(i,u){let m=i.segment,a=i.feature,l=i.geometry,M=i.depth,z=i.index,D;for(;u.length<l.getStride();)u.push(0);switch(l.getType()){case"MultiLineString":D=l.getCoordinates(),D[M[0]].splice(z+1,0,u);break;case"Polygon":D=l.getCoordinates(),D[M[0]].splice(z+1,0,u);break;case"MultiPolygon":D=l.getCoordinates(),D[M[1]][M[0]].splice(z+1,0,u);break;case"LineString":D=l.getCoordinates(),D.splice(z+1,0,u);break;default:return}this.setGeometryCoordinates_(l,D);let q=this.rBush_;q.remove(i),this.updateSegmentIndices_(l,z,M,1);let V={segment:[m[0],u],feature:a,geometry:l,depth:M,index:z};q.insert(bu(V.segment),V),this.dragSegments_.push([V,1]);let de={segment:[u,m[1]],feature:a,geometry:l,depth:M,index:z+1};q.insert(bu(de.segment),de),this.dragSegments_.push([de,0]),this.ignoreNextSingleClick_=!0}removePoint(){if(this.lastPointerEvent_&&this.lastPointerEvent_.type!=Js.POINTERDRAG){let i=this.lastPointerEvent_;this.willModifyFeatures_(i,this.dragSegments_);let u=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Of(Mv.MODIFYEND,this.featuresBeingModified_,i)),this.featuresBeingModified_=null,u}return!1}removeVertex_(){let i=this.dragSegments_,u={},m=!1,a,l,M,z,D,q,V,de,pe,Ie,Ne;for(D=i.length-1;D>=0;--D)M=i[D],Ie=M[0],Ne=Tr(Ie.feature),Ie.depth&&(Ne+="-"+Ie.depth.join("-")),Ne in u||(u[Ne]={}),M[1]===0?(u[Ne].right=Ie,u[Ne].index=Ie.index):M[1]==1&&(u[Ne].left=Ie,u[Ne].index=Ie.index+1);for(Ne in u){switch(pe=u[Ne].right,V=u[Ne].left,q=u[Ne].index,de=q-1,V!==void 0?Ie=V:Ie=pe,de<0&&(de=0),z=Ie.geometry,l=z.getCoordinates(),a=l,m=!1,z.getType()){case"MultiLineString":l[Ie.depth[0]].length>2&&(l[Ie.depth[0]].splice(q,1),m=!0);break;case"LineString":l.length>2&&(l.splice(q,1),m=!0);break;case"MultiPolygon":a=a[Ie.depth[1]];case"Polygon":a=a[Ie.depth[0]],a.length>4&&(q==a.length-1&&(q=0),a.splice(q,1),m=!0,q===0&&(a.pop(),a.push(a[0]),de=a.length-1));break;default:}if(m){this.setGeometryCoordinates_(z,l);let nt=[];if(V!==void 0&&(this.rBush_.remove(V),nt.push(V.segment[0])),pe!==void 0&&(this.rBush_.remove(pe),nt.push(pe.segment[1])),V!==void 0&&pe!==void 0){let we={depth:Ie.depth,feature:Ie.feature,geometry:Ie.geometry,index:de,segment:nt};this.rBush_.insert(bu(we.segment),we)}this.updateSegmentIndices_(z,q,Ie.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),i.length=0}}return m}setGeometryCoordinates_(i,u){this.changingFeature_=!0,i.setCoordinates(u),this.changingFeature_=!1}updateSegmentIndices_(i,u,m,a){this.rBush_.forEachInExtent(i.getExtent(),function(l){l.geometry===i&&(m===void 0||l.depth===void 0||xs(l.depth,m))&&l.index>u&&(l.index+=a)})}};function F2(v,i){return v.index-i.index}function ib(v,i,u){let m=i.geometry;if(m.getType()==="Circle"){let l=m;if(i.index===Ff){let M=Su();M&&(l=l.clone().transform(M,u));let z=Hp(l.getCenter(),Ro(v,u)),D=Math.sqrt(z)-l.getRadius();return D*D}}let a=Ro(v,u);return fd[0]=Ro(i.segment[0],u),fd[1]=Ro(i.segment[1],u),h0(a,fd)}function rb(v,i,u){let m=i.geometry;if(m.getType()==="Circle"&&i.index===Ff){let l=m,M=Su();return M&&(l=l.clone().transform(M,u)),Yp(l.getClosestPoint(Ro(v,u)),u)}let a=Ro(v,u);return fd[0]=Ro(i.segment[0],u),fd[1]=Ro(i.segment[1],u),Yp(Wy(a,fd),u)}function O2(){let v=g1();return function(i,u){return v.Point}}var kv=Pv;var Rv=class{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.supportedMediaTypes=null}getReadOptions(i,u){if(u){let m=u.dataProjection?Zo(u.dataProjection):this.readProjection(i);u.extent&&m&&m.getUnits()==="tile-pixels"&&(m=Zo(m),m.setWorldExtent(u.extent)),u={dataProjection:m,featureProjection:u.featureProjection}}return this.adaptOptions(u)}adaptOptions(i){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection},i)}getType(){return Xi()}readFeature(i,u){return Xi()}readFeatures(i,u){return Xi()}readGeometry(i,u){return Xi()}readProjection(i){return Xi()}writeFeature(i,u){return Xi()}writeFeatures(i,u){return Xi()}writeGeometry(i,u){return Xi()}},nb=Rv;function Lv(v,i,u){let m=u?Zo(u.featureProjection):null,a=u?Zo(u.dataProjection):null,l;if(m&&a&&!y0(m,a)?l=(i?v.clone():v).transform(i?m:a,i?a:m):l=v,i&&u&&u.decimals!==void 0){let M=Math.pow(10,u.decimals),z=function(D){for(let q=0,V=D.length;q<V;++q)D[q]=Math.round(D[q]*M)/M;return D};l===v&&(l=v.clone()),l.applyTransform(z)}return l}var zv=class extends nb{constructor(){super()}getType(){return"json"}readFeature(i,u){return this.readFeatureFromObject(Tg(i),this.getReadOptions(i,u))}readFeatures(i,u){return this.readFeaturesFromObject(Tg(i),this.getReadOptions(i,u))}readFeatureFromObject(i,u){return Xi()}readFeaturesFromObject(i,u){return Xi()}readGeometry(i,u){return this.readGeometryFromObject(Tg(i),this.getReadOptions(i,u))}readGeometryFromObject(i,u){return Xi()}readProjection(i){return this.readProjectionFromObject(Tg(i))}readProjectionFromObject(i){return Xi()}writeFeature(i,u){return JSON.stringify(this.writeFeatureObject(i,u))}writeFeatureObject(i,u){return Xi()}writeFeatures(i,u){return JSON.stringify(this.writeFeaturesObject(i,u))}writeFeaturesObject(i,u){return Xi()}writeGeometry(i,u){return JSON.stringify(this.writeGeometryObject(i,u))}writeGeometryObject(i,u){return Xi()}};function Tg(v){if(typeof v=="string"){let i=JSON.parse(v);return i||null}else if(v!==null)return v;return null}var ob=zv;var Dv=class extends ob{constructor(i){i=i||{},super(),this.dataProjection=Zo(i.dataProjection?i.dataProjection:"EPSG:4326"),i.featureProjection&&(this.defaultFeatureProjection=Zo(i.featureProjection)),this.geometryName_=i.geometryName,this.extractGeometryName_=i.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(i,u){let m=null;i.type==="Feature"?m=i:m={type:"Feature",geometry:i,properties:null};let a=Fv(m.geometry,u),l=new Tu;return this.geometryName_?l.setGeometryName(this.geometryName_):this.extractGeometryName_&&"geometry_name"in m!==void 0&&l.setGeometryName(m.geometry_name),l.setGeometry(a),"id"in m&&l.setId(m.id),m.properties&&l.setProperties(m.properties,!0),l}readFeaturesFromObject(i,u){let m=i,a=null;if(m.type==="FeatureCollection"){let l=i;a=[];let M=l.features;for(let z=0,D=M.length;z<D;++z)a.push(this.readFeatureFromObject(M[z],u))}else a=[this.readFeatureFromObject(i,u)];return a}readGeometryFromObject(i,u){return Fv(i,u)}readProjectionFromObject(i){let u=i.crs,m;return u?u.type=="name"?m=Zo(u.properties.name):u.type==="EPSG"?m=Zo("EPSG:"+u.properties.code):zr(!1,36):m=this.dataProjection,m}writeFeatureObject(i,u){u=this.adaptOptions(u);let m={type:"Feature",geometry:null,properties:null},a=i.getId();if(a!==void 0&&(m.id=a),!i.hasProperties())return m;let l=i.getProperties(),M=i.getGeometry();return M&&(m.geometry=Ov(M,u),delete l[i.getGeometryName()]),Gl(l)||(m.properties=l),m}writeFeaturesObject(i,u){u=this.adaptOptions(u);let m=[];for(let a=0,l=i.length;a<l;++a)m.push(this.writeFeatureObject(i[a],u));return{type:"FeatureCollection",features:m}}writeGeometryObject(i,u){return Ov(i,this.adaptOptions(u))}};function Fv(v,i){if(!v)return null;let u;switch(v.type){case"Point":{u=U2(v);break}case"LineString":{u=V2(v);break}case"Polygon":{u=q2(v);break}case"MultiPoint":{u=j2(v);break}case"MultiLineString":{u=N2(v);break}case"MultiPolygon":{u=G2(v);break}case"GeometryCollection":{u=B2(v);break}default:throw new Error("Unsupported GeoJSON type: "+v.type)}return Lv(u,!1,i)}function B2(v,i){let u=v.geometries.map(function(m){return Fv(m,i)});return new C0(u)}function U2(v){return new xa(v.coordinates)}function V2(v){return new Wl(v.coordinates)}function N2(v){return new U0(v.coordinates)}function j2(v){return new hg(v.coordinates)}function G2(v){return new Z0(v.coordinates)}function q2(v){return new mf(v.coordinates)}function Ov(v,i){v=Lv(v,!0,i);let u=v.getType(),m;switch(u){case"Point":{m=H2(v,i);break}case"LineString":{m=W2(v,i);break}case"Polygon":{m=Y2(v,i);break}case"MultiPoint":{m=$2(v,i);break}case"MultiLineString":{m=X2(v,i);break}case"MultiPolygon":{m=K2(v,i);break}case"GeometryCollection":{m=Z2(v,i);break}case"Circle":{m={type:"GeometryCollection",geometries:[]};break}default:throw new Error("Unsupported geometry type: "+u)}return m}function Z2(v,i){return i=Object.assign({},i),delete i.featureProjection,{type:"GeometryCollection",geometries:v.getGeometriesArray().map(function(m){return Ov(m,i)})}}function W2(v,i){return{type:"LineString",coordinates:v.getCoordinates()}}function X2(v,i){return{type:"MultiLineString",coordinates:v.getCoordinates()}}function $2(v,i){return{type:"MultiPoint",coordinates:v.getCoordinates()}}function K2(v,i){let u;return i&&(u=i.rightHanded),{type:"MultiPolygon",coordinates:v.getCoordinates(u)}}function H2(v,i){return{type:"Point",coordinates:v.getCoordinates()}}function Y2(v,i){let u;return i&&(u=i.rightHanded),{type:"Polygon",coordinates:v.getCoordinates(u)}}var Sl=Dv;var Ig,J2=new Uint8Array(16);function Bv(){if(!Ig&&(Ig=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ig))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ig(J2)}var wa=[];for(let v=0;v<256;++v)wa.push((v+256).toString(16).slice(1));function ab(v,i=0){return(wa[v[i+0]]+wa[v[i+1]]+wa[v[i+2]]+wa[v[i+3]]+"-"+wa[v[i+4]]+wa[v[i+5]]+"-"+wa[v[i+6]]+wa[v[i+7]]+"-"+wa[v[i+8]]+wa[v[i+9]]+"-"+wa[v[i+10]]+wa[v[i+11]]+wa[v[i+12]]+wa[v[i+13]]+wa[v[i+14]]+wa[v[i+15]]).toLowerCase()}var Q2=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Uv={randomUUID:Q2};function eS(v,i,u){if(Uv.randomUUID&&!i&&!v)return Uv.randomUUID();v=v||{};let m=v.random||(v.rng||Bv)();if(m[6]=m[6]&15|64,m[8]=m[8]&63|128,i){u=u||0;for(let a=0;a<16;++a)i[u+a]=m[a];return i}return ab(m)}var Vv=eS;var tp=class extends lo{constructor(u={}){super();this.properties={};this.options={};this.defineProperties(u),u.properties&&this.setProperties(u.properties),this.options=u,this.visible=u.visible===void 0?!0:!!u.visible,this.group=u.group,this.copyrights=u.copyrights,this.children=u.children,this.on("change:visible:group",m=>{this.group===m.target.group&&this!==m.target&&this.visible?this.visible=!1:this.children&&this.children.forEach(a=>a.dispatchEvent(m))})}defineProperties(u={}){let{name:m,key:a,properties:l,hitTolerance:M}={...u},z=Vv();Object.defineProperties(this,{name:{value:m},key:{value:a||m||z},group:{get:()=>this.get("group"),set:D=>{this.set("group",D)}},copyrights:{get:()=>this.get("copyrights"),set:D=>{let q=D&&!Array.isArray(D)?[D]:D;this.set("copyrights",q||[])}},options:{value:u},map:{writable:!0},visible:{get:()=>this.get("visible"),set:D=>{if(D!==this.visible)if(this.set("visible",D),this.visible){if(this.parent&&(this.parent.visible=!0),this.children&&!this.children.some(q=>q.visible)&&this.children.forEach(q=>{q.visible=!0}),this.parent&&this.group){let q=this.parent;for(;q.parent;)q=q.parent;let V=new nn("change:visible:group");V.target=this,q.dispatchEvent(V)}}else this.visible||(this.children&&this.children.forEach(q=>{q.visible=!1}),this.parent&&this.parent.visible&&this.parent.children&&!this.parent.children.find(q=>q.visible)&&(this.parent.visible=!1))}},disabled:{get:()=>this.get("disabled"),set:D=>{this.set("disabled",D)}},parent:{value:null,writable:!0},children:{get:()=>this.get("children")||[],set:D=>{(this.children||[]).forEach(q=>{q.parent=void 0}),Array.isArray(D)&&D.forEach(q=>{q.parent=this}),this.set("children",D||[])}},hitTolerance:{value:M||5,writable:!0},properties:{value:{...l||{}}}})}attachToMap(u){this.detachFromMap(),this.map=u,this.children&&this.children.forEach(m=>{m.attachToMap(u)})}detachFromMap(){this.map=void 0}getFeatureInfoAtCoordinate(u,m){return console.error("getFeatureInfoAtCoordinate must be implemented by inheriting layers",this.key),Promise.resolve({layer:this,features:[],coordinate:u})}flat(){return Yd(this)}};function tS(v){return class extends v{constructor(u={}){super(u);let{userInteractions:m=!0,userClickInteractions:a=!0,userHoverInteractions:l=!0,defaultUserInteractions:M=!0}=u;this.userInteractions=m,this.userClickInteractions=a,this.userHoverInteractions=l,this.defaultUserInteractions=M,this.userClickCallbacks=[],this.userHoverCallbacks=[],this.userClickEventsKeys=[],this.userHoverEventsKeys=[],this.onUserClickCallback=this.onUserClickCallback.bind(this),this.onUserMoveCallback=this.onUserMoveCallback.bind(this);let{onClick:z,onHover:D}=u;this.userInteractions&&this.userClickInteractions&&z&&this.onClick(z),this.userInteractions&&this.userHoverInteractions&&D&&this.onHover(D)}attachToMap(u){super.attachToMap(u),this.userInteractions&&this.defaultUserInteractions&&this.userClickInteractions&&this.onFeatureClick&&this.onClick(this.onFeatureClick),this.userInteractions&&this.defaultUserInteractions&&this.userHoverInteractions&&this.onFeatureHover&&this.onHover(this.onFeatureHover),this.listenEvents()}detachFromMap(){this.unlistenEvents(),super.detachFromMap()}listenEvents(){this.unlistenEvents(),this.userClickCallbacks.forEach(u=>{this.userClickEventsKeys.push(this.on("user:click",({target:{features:m,layer:a,coordinate:l,event:M}})=>{u(m,a,l,M)}))}),this.userHoverCallbacks.forEach(u=>{this.userHoverEventsKeys.push(this.on("user:hover",({target:{features:m,layer:a,coordinate:l,event:M}})=>{u(m,a,l,M)}))})}unlistenEvents(){Ja(this.userClickEventsKeys),Ja(this.userHoverEventsKeys),this.userClickEventsKeys=[],this.userHoverEventsKeys=[]}onClick(u){this.userClickCallbacks.push(u),this.activateUserInteractions(),this.map&&this.listenEvents()}onHover(u){this.userHoverCallbacks.push(u),this.activateUserInteractions(),this.map&&this.listenEvents()}unClick(u){let m=this.userClickCallbacks.indexOf(u);m===-1&&(this.userClickCallbacks=this.userClickCallbacks.slice(m,1),this.map&&this.listenEvents())}unHover(u){let m=this.userHoverCallbacks.indexOf(u);m===-1&&(this.userHoverCallbacks=this.userHoverCallbacks.slice(m,1),this.map&&this.listenEvents())}onUserClickCallback(u){let m=u.coordinate||co(u.lngLat.toArray()),a={features:[],layer:this,coordinate:m,event:u};return this.getFeatureInfoAtCoordinate(m).then(l=>{let M=new nn("user:click");return M.target=l,this.dispatchEvent(M),l}).catch(()=>a)}onUserMoveCallback(u){let m=u.coordinate||co(u.lngLat.toArray()),a={features:[],layer:this,coordinate:m,event:u};return this.getFeatureInfoAtCoordinate(m).then(l=>{let M=new nn("user:hover");return M.target=l,this.dispatchEvent(M),l}).catch(()=>a)}activateUserInteractions(){}deactivateUserInteractions(){}}}var Cg=tS;var Bf=class extends Cg(tp){constructor(u){super(u);this.olLayer?.setVisible(this.visible)}defineProperties(u){super.defineProperties(u),Object.defineProperties(this,{olLayer:{value:u.olLayer,writable:!0},olListenersKeys:{value:[]}})}attachToMap(u){if(super.attachToMap(u),!!this.map&&(this.olLayer?.setVisible(this.visible),this.olLayer&&!this.map?.getLayers()?.getArray()?.includes(this.olLayer)&&this.map.addLayer(this.olLayer),this.olListenersKeys.push(this.on("change:visible",()=>{this.olLayer&&this.olLayer.setVisible(this.visible)})),this.olListenersKeys.push(this.map.getLayers().on("remove",m=>{m.element===this.olLayer&&this.detachFromMap()})),this.toggleVisibleListeners(),this.olListenersKeys.push(this.on("change:visible",this.toggleVisibleListeners)),this.copyrights&&this.olLayer)){let m=this.copyrights||[];this.olLayer.getLayers?this.olLayer.getLayers().getArray().forEach(a=>{a.getSource&&a.getSource()?.setAttributions(m)}):this.olLayer.getSource&&this.olLayer.getSource()?.setAttributions(m)}}detachFromMap(){this.deactivateUserInteractions(),Ja(this.olListenersKeys),this.olLayer&&this.map?.getLayers()?.getArray()?.includes(this.olLayer)&&this.map.removeLayer(this.olLayer),super.detachFromMap()}activateUserInteractions(){this.deactivateUserInteractions(),this.map&&this.userInteractions&&this.userClickInteractions&&this.userClickCallbacks?.length&&(this.singleClickListenerKey=this.map.on("singleclick",this.onUserClickCallback),this.olListenersKeys.push(this.singleClickListenerKey)),this.map&&this.userInteractions&&this.userHoverInteractions&&this.userHoverCallbacks?.length&&(this.pointerMoveListenerKey=this.map.on("pointermove",this.onUserMoveCallback))}deactivateUserInteractions(){Ja([this.pointerMoveListenerKey,this.singleClickListenerKey])}toggleVisibleListeners(){this.visible?this.activateUserInteractions():this.deactivateUserInteractions()}clone(u){return new Bf({...this.options,...u})}},As=Bf;var sb=new Cs({radius:6,fill:new ba({color:[255,0,0,1]}),stroke:new Wo({color:[0,0,0,1],width:1})}),iS=new Fa({stroke:new Wo({color:[0,0,0,1],width:5})}),rS=new Fa({image:sb,stroke:new Wo({color:[255,0,0,1],width:3})}),nS=new Fa({image:sb,stroke:new Wo({color:[255,0,0,1],width:3,lineDash:[1,10]})}),oS=(v,i)=>{let u=v.get("minResolution"),m=v.get("maxResolution"),a=i<=u&&i>m;return u&&m&&!a?[]:v.get("mot")!=="foot"?[iS,rS]:[nS]},Uf=class extends As{constructor(u){super(u);this.options={};this.olLayer=u.olLayer||new Qh({source:new ep,style:u.style||oS})}clone(u){return new Uf({...this.options,...u})}},Ag=Uf;var aS=/^([^@$!\n]*)(@?([\d.]+),([\d.]+))?(\$?([a-zA-Z0-9]{0,2}))$/,lb=/^([\d.]+),([\d.]+)$/,ub=/^!([^$]*)(\$?([a-zA-Z0-9]{0,2}))$/,Mg="stop-fetch",cb=v=>{let i=[];return v.forEach(u=>{let m=u.getGeometry()?.getCoordinates();m?.length&&i.push(...m)}),i},Vf=class extends ad{constructor(u={}){super(u);this.viaPoints=[];this.loading=!1;this.graphs=[];this.modify=!0;this.useRawViaPoints=!1;this.snapToClosestStation=!1;this.cacheStationData={};this.abortControllers={};this.segments=[];this.format=new Sl({featureProjection:"EPSG:3857"});this.initialRouteDrag={};Object.defineProperties(this,{mot:{get:()=>this.get("mot"),set:m=>{m&&(this.set("mot",m),this.viaPoints&&this.drawRoute())}},loading:{get:()=>this.get("loading"),set:m=>{this.set("loading",m)}},modify:{get:()=>this.get("modify"),set:m=>{this.set("modify",m)}}}),this.loading=!1,this.graphs=u.graphs||[["osm",0,99]],this.mot=u.mot||"bus",this.modify=u.modify!==!1,this.routingApiParams=u.routingApiParams,this.useRawViaPoints=u.useRawViaPoints||!1,this.snapToClosestStation=u.snapToClosestStation||!1,this.apiKey=u.apiKey,this.stopsApiKey=u.stopsApiKey||this.apiKey,this.stopsApiUrl=u.stopsApiUrl||"https://api.geops.io/stops/v1/",this.api=new Xd({...u}),this.routingLayer=u.routingLayer||new Ag({name:"routing-layer",style:u.style}),this.onRouteError=u.onRouteError||(m=>{this.dispatchEvent(new nn("change:route")),this.reset(),console.error(m)}),this.onMapClick=this.onMapClick.bind(this),this.onModifyEnd=this.onModifyEnd.bind(this),this.onModifyStart=this.onModifyStart.bind(this),this.createModifyInteraction()}static getGraphsResolutions(u,m){let a=m.getView();return u.map(([,l,M])=>[a.getResolutionForZoom(l),a.getResolutionForZoom(M||l+1)])}addViaPoint(u,m=-1,a=0){this.viaPoints.splice(m===-1?this.viaPoints.length:m,a,u),this.drawRoute(),this.dispatchEvent(new nn("change:route"))}removeViaPoint(u=(this.viaPoints||[]).length-1){this.viaPoints.length&&this.viaPoints[u]&&this.viaPoints.splice(u,1),this.drawRoute(),this.dispatchEvent(new nn("change:route"))}setViaPoints(u){this.viaPoints=[...u],this.drawRoute(),this.dispatchEvent(new nn("change:route"))}reset(){this.abortRequests(),this.viaPoints=[],this.routingLayer?.olLayer?.getSource()?.clear(),this.dispatchEvent(new nn("change:route"))}abortRequests(){this.graphs.forEach(u=>{let m=u[0];this.abortControllers[m]&&this.abortControllers[m].abort(),this.abortControllers[m]=new AbortController}),this.abortControllers[Mg]?.abort(),this.abortControllers[Mg]=new AbortController,this.loading=!1}drawRoute(){if(this.abortRequests(),this.routingLayer?.olLayer?.getSource()?.clear(),!this.viaPoints.length)return null;if(this.viaPoints.length===1)return this.drawViaPoint(this.viaPoints[0],0,this.abortControllers[Mg]);let u=this.viaPoints.map(m=>{if(Array.isArray(m)){let a=this.map?.getView().getProjection(),[l,M]=sh(m,a);return this.snapToClosestStation?[`@${M}`,l]:[M,l]}return this.useRawViaPoints?m:`!${m}`});return this.loading=!0,this.routingLayer?.olLayer?.getSource()?.clear(),this.viaPoints.forEach((m,a)=>this.drawViaPoint(m,a,this.abortControllers[Mg])),Promise.all(this.graphs.map(([m],a)=>{let{signal:l}=this.abortControllers[m];return this.api?this.api.route({graph:m,via:`${u.join("|")}`,mot:this.mot,"resolve-hops":!1,elevation:!1,"coord-radius":100,"coord-punish":1e3,...this.routingApiParams||{}},{signal:l}).then(M=>{if(this.segments=this.format.readFeatures(M),this.mot==="foot"){let q=this.segments.reduce((V,de)=>{let pe=de.get("trg");return V.find(Ie=>Ie[0]===pe[0]&&Ie[1]===pe[1])?V:[...V,pe]},[]);this.segments=q.map(V=>{let de=this.segments.filter(Ie=>{let Ne=Ie.get("trg");return Ne[0]===V[0]&&Ne[1]===V[1]}),pe=cb(de);return new Tu({geometry:new Wl(pe)})})}let z=cb(this.segments),D=new Tu({geometry:new Wl(z)});D.set("graph",m),D.set("mot",this.mot),this.graphsResolutions&&this.graphsResolutions[a]?.length>=2&&(D.set("minResolution",this.graphsResolutions[a][0]),D.set("maxResolution",this.graphsResolutions[a][1])),this.routingLayer?.olLayer?.getSource()?.addFeature(D),this.loading=!1}).catch(M=>{M.name!=="AbortError"&&(this.segments=[],this.dispatchEvent(new nn("error")),this.onRouteError(M,this),this.loading=!1)}):Promise.resolve([])}))}drawViaPoint(u,m,a){let l=new Tu;if(l.set("viaPointIdx",m),Array.isArray(u))return l.setGeometry(new xa(u)),this.routingLayer?.olLayer?.getSource()?.addFeature(l),Promise.resolve(l);if(!this.useRawViaPoints||ub.test(u)){let V,de;return this.useRawViaPoints?[,V,,de]=ub.exec(u)||[]:[V,de]=u.split("$"),fetch(`${this.stopsApiUrl}lookup/${V}?key=${this.stopsApiKey}`,{signal:a.signal}).then(pe=>pe.json()).then(pe=>{let{coordinates:Ie}=pe.features[0].geometry;return this.cacheStationData[u]=co(Ie),l.set("viaPointTrack",de),l.setGeometry(new xa(co(Ie))),this.routingLayer?.olLayer?.getSource()?.addFeature(l),l}).catch(pe=>{pe.name!=="AbortError"&&(this.dispatchEvent(new nn("error")),this.onRouteError(pe,this),this.loading=!1)})}if(this.useRawViaPoints&&lb.test(u)){let[V,de]=lb.exec(u)||[];if(de&&V){let pe=parseFloat(de),Ie=parseFloat(V),Ne=co([pe,Ie],this.map?.getView().getProjection());return l.setGeometry(new xa(Ne)),this.routingLayer?.olLayer?.getSource()?.addFeature(l),Promise.resolve(l)}}let[,M,,z,D,,q]=aS.exec(u)||[];if(D&&z){let V=co([parseFloat(D),parseFloat(z)],this.map?.getView().getProjection());return l.set("viaPointTrack",q),l.setGeometry(new xa(V)),this.routingLayer?.olLayer?.getSource()?.addFeature(l),Promise.resolve(l)}return M?fetch(`${this.stopsApiUrl}?key=${this.stopsApiKey}&q=${M}&limit=1`,{signal:a.signal}).then(V=>V.json()).then(V=>{let{coordinates:de}=V.features[0].geometry;return this.cacheStationData[u]=co(de),l.set("viaPointTrack",q),l.setGeometry(new xa(co(de))),this.routingLayer?.olLayer?.getSource()?.addFeature(l),l}).catch(V=>(this.dispatchEvent(new nn("error")),this.onRouteError(V,this),this.loading=!1,null)):Promise.resolve(null)}onMapClick(u){let a=u.target.getFeaturesAtPixel(u.pixel).find(l=>l.getGeometry()?.getType()==="Point"&&l.get("viaPointIdx")!==void 0);if(a){this.removeViaPoint(a.get("viaPointIdx"));return}this.addViaPoint(u.coordinate)}onModifyStart(u){let m=-1,a=u.features.getArray().find(M=>M.getGeometry()?.getType()==="LineString");if(a&&a.getGeometry()&&u.mapBrowserEvent.coordinate){let M=_l(new xa(a.getGeometry()?.getClosestPoint(u.mapBrowserEvent.coordinate)).getExtent(),.001);m=this.segments.findIndex(z=>z.getGeometry()?.intersectsExtent(M))}let l=(u.features.getArray().filter(M=>M.getGeometry()?.getType()==="Point")||[])[0];this.initialRouteDrag={viaPoint:l,oldRoute:a&&a.clone(),segmentIndex:m}}onModifyEnd(u){let m=u.mapBrowserEvent.coordinate,{oldRoute:a,viaPoint:l,segmentIndex:M}=this.initialRouteDrag||{};return l?this.addViaPoint(m,l.get("viaPointIdx"),1):a?M===-1?Promise.reject(new Error("No segment found")):this.addViaPoint(m,(M||0)+1):this.addViaPoint(m,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 kv({source:this.routingLayer?.olLayer?.getSource()||void 0,pixelTolerance:4,hitDetection:this.routingLayer?.olLayer,deleteCondition:u=>{let a=u.target.getFeaturesAtPixel(u.pixel,{hitTolerance:5}).find(l=>l.getGeometry()?.getType()==="Point"&&l.get("index"));return Y1(u)&&a?(this.removeViaPoint(a.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.map?.on("singleclick",this.onMapClick))}removeListeners(){this.onMapClickKey&&Ja(this.onMapClickKey)}activate(){super.activate(),this.map&&(this.format=new Sl({featureProjection:this.map.getView().getProjection()}),this.graphsResolutions=Vf.getGraphsResolutions(this.graphs,this.map),this.modifyInteraction&&this.map.removeInteraction(this.modifyInteraction),this.routingLayer?.attachToMap(this.map),this.modifyInteraction&&this.map.addInteraction(this.modifyInteraction),this.modifyInteraction?.setActive(this.modify),this.addListeners())}deactivate(){this.map&&(this.routingLayer?.detachFromMap(),this.modifyInteraction&&this.map.removeInteraction(this.modifyInteraction),this.removeListeners(),this.reset())}render(){}},hb=Vf;var Nv=class extends ad{constructor(u){super(u);let{apiParams:m,apiKey:a,url:l,placeholder:M}=u||{};this.apiParams={limit:20,...m||{}},this.placeholder=M||"Search for a stop...";let z={apiKey:a};l&&(z.url=l),this.api=new $d(z),this.abortController=new AbortController}deactivate(){}render(u){let m=u?.features||[];this.suggestionsElt&&(this.suggestionsElt.style.display=m.length?"block":"none",this.suggestionsElt.innerHTML="",m.forEach(a=>{let l=document.createElement("div");l.innerHTML=a?.properties?.name,l.onclick=()=>{this.onSuggestionClick(a)},Object.assign(l.style,{padding:"5px 12px"}),this.suggestionsElt?.appendChild(l)}))}createDefaultElement(){this.element=document.createElement("div"),this.element.id="mbt-search",Object.assign(this.element.style,{position:"absolute",top:0,left:"50px",margin:"10px",display:"flex",flexDirection:"column",width:"320px"}),this.inputElt=document.createElement("input"),this.inputElt.type="text",this.inputElt.placeholder=this.placeholder,this.inputElt.autocomplete="off",this.inputElt.onkeyup=u=>{this.abortController?.abort(),this.abortController=new AbortController,this.search(u.target.value,this.abortController)},Object.assign(this.inputElt.style,{padding:"10px 30px 10px 10px"}),this.element.appendChild(this.inputElt),this.suggestionsElt=document.createElement("div"),Object.assign(this.suggestionsElt.style,{backgroundColor:"white",overflowY:"auto",cursor:"pointer"}),this.element.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(),this.element.appendChild(this.clearElt)}search(u,m){return(u!==void 0||u!==null)&&(this.apiParams.q=u),this.clearElt&&(this.clearElt.style.display="block"),this.api.search(this.apiParams,m&&{signal:m.signal}).then(a=>{this.render(a)}).catch(()=>{this.render()})}onSuggestionClick(u){}clear(){!this.suggestionsElt||!this.inputElt||!this.clearElt||(this.inputElt.value="",this.suggestionsElt.innerHTML="",this.clearElt.style.display="none")}},pb=Nv;var jv=class extends pb{onSuggestionClick(i){let u=co(i.geometry.coordinates);this.map.getView().setCenter(u)}},db=jv;var mb=Vp(fb());var Zv=class extends As{constructor(u){super(u);this.olLayer=new Kh({source:new dd({}),render:this.getOlLayerRender()}),this.styleUrl=u.url,this.apiKey=u.apiKey,this.apiKeyName=u.apiKeyName||"key",this.updateAttribution=this.updateAttribution.bind(this)}attachToMap(u){super.attachToMap(u),this.map&&(this.format=new Sl({featureProjection:this.map.getView().getProjection()}),this.loadMbMap())}detachFromMap(){this.mbMap&&(this.mbMap.off("idle",this.updateAttribution),this.mbMap.triggerRepaint=()=>{},this.mbMap.remove(),this.mbMap=void 0),this.loaded=!1,super.detachFromMap()}loadMbMap(){if(this.olListenersKeys.push(this.map?.on("change:target",()=>{this.loadMbMap()})),!this.map?.getTargetElement())return;if(!this.visible){this.olListenersKeys.push(this.once("change:visible",()=>{this.loadMbMap()}));return}let u=document.createElement("div");if(u.style.position="absolute",u.style.width="100%",u.style.height="100%",!this.styleUrl){console.error(`No styleUrl defined for mapbox layer: ${this.styleUrl}`);return}!this.apiKey&&!this.styleUrl?.includes(this.apiKeyName)&&console.error(`No apiKey defined for mapbox layer with style url to ${this.styleUrl}`);let m=this.getMapboxMapClass();this.mbMap=new m({style:Gh(this.styleUrl,{[this.apiKeyName]:this.apiKey}).toString(),container:u,interactive:!1,trackResize:!1,attributionControl:!1,...this.options.mapOptions||{}}),this.mbMap.once("load",()=>{this.loaded=!0,this.dispatchEvent(new nn("load"))}),this.mbMap.on("idle",this.updateAttribution)}updateAttribution(u){let m=sc(u.target)||[];this.copyrights?.toString()!==m.toString()&&(this.copyrights=m,this.olLayer?.getSource()?.setAttributions(m))}getFeatureInfoAtCoordinate(u,m){if(!m||!this.format||!this.mbMap||!this.mbMap.isStyleLoaded())return Promise.resolve({coordinate:u,features:[],layer:this});let a=u&&this.mbMap.project(sh(u)),l;if(this.hitTolerance){let{x:z,y:D}=a;l=[{x:z-this.hitTolerance,y:D-this.hitTolerance},{x:z+this.hitTolerance,y:D+this.hitTolerance}]}let M=this.mbMap.queryRenderedFeatures(l||a,m).map(z=>{let D=this.format.readFeature(z);return D&&D.set("mapboxFeature",z),D});return Promise.resolve({layer:this,features:M,coordinate:u})}getOlLayerRender(){console.error("This function must be implemented in subclasses");let u=document.createElement("div");return()=>u}getMapboxMapClass(){return console.error("This function must be implemented in subclasses"),null}},Pg=Zv;var ip=class extends Pg{attachToMap(u){super.attachToMap(u),this.map&&this.olListenersKeys.push(this.map.on("change:size",()=>{try{this.mbMap&&this.mbMap.resize()}catch(m){console.warn(m)}}))}loadMbMap(){let[u,m]=this.map?.getView().getCenter()||[];if((!u||!m)&&(u=0,m=0),this.renderState={center:[u,m],zoom:void 0,rotation:void 0,visible:void 0,opacity:void 0,size:[0,0]},super.loadMbMap(),!this.mbMap)return;this.mbMap.once("load",()=>{this.mbMap&&(this.mbMap.resize(),this.copyrights=sc(this.mbMap)||[],this.olLayer?.getSource()?.setAttributions(this.copyrights))});let a=this.mbMap.getCanvas();a&&(this.options.tabIndex?a.setAttribute("tabindex",`${this.options.tabIndex}`):a.removeAttribute("tabindex"))}getOlLayerRender(){return nd(this)}getMapboxMapClass(){return mb.Map}clone(u){return new ip({...this.options,...u})}};var _b=Vp(yb());var rp=class extends Pg{getOlLayerRender(){return rd(this)}getMapboxMapClass(){return _b.Map}clone(u){return new rp({...this.options,...u})}};var Nf=class extends As{constructor(u){super(u);this.mapboxLayer=u.mapboxLayer,this.disabled=!1,this.styleLayersFilter=u.styleLayersFilter,this.beforeId=u.beforeId,this.featureInfoFilter=u.featureInfoFilter||(m=>m),this.queryRenderedLayersFilter=u.queryRenderedLayersFilter,this.highlightedFeatures=[],this.selectedFeatures=[],this.styleLayers=(u.styleLayer?[u.styleLayer]:u.styleLayers)||[],this.addStyleLayers=this.addStyleLayers.bind(this),this.onLoad=this.onLoad.bind(this),u.filters&&(this.addDynamicFilters=()=>{this.setFilter(typeof u.filters=="function"?u.filters(this):u.filters)}),!this.styleLayersFilter&&this.styleLayers&&(this.styleLayersFilter=m=>!!this.styleLayers?.find(a=>m.id===a.id))}attachToMap(u){if(this.mapboxLayer&&!this.mapboxLayer.map&&this.mapboxLayer?.attachToMap(u),super.attachToMap(u),!this.map||!this.mapboxLayer)return;let{mbMap:m}=this.mapboxLayer;if(!m){this.olListenersKeys.push(this.map.on("change:target",()=>{this.attachToMap(u)}));return}this.mapboxLayer.loaded||m.isStyleLoaded()||m.loaded()?this.onLoad():m.once("load",this.onLoad),this.olListenersKeys.push(this.on("change:visible",a=>{this.applyLayoutVisibility(a)})),this.olListenersKeys.push(this.mapboxLayer.on("load",()=>{this.onLoad()}))}detachFromMap(){if(this.mapboxLayer?.mbMap){let{mbMap:u}=this.mapboxLayer;u.off("load",this.onLoad),this.removeStyleLayers()}super.detachFromMap()}addStyleLayers(){if(!this.mapboxLayer?.mbMap)return;let{mbMap:u}=this.mapboxLayer;this.styleLayers.forEach(m=>{let{id:a,source:l}=m;u.getSource(l)&&a&&!u.getLayer(a)&&u.addLayer(m,this.beforeId)}),this.applyLayoutVisibility()}removeStyleLayers(){if(!this.mapboxLayer?.mbMap)return;let{mbMap:u}=this.mapboxLayer;this.styleLayers.forEach(m=>{let{id:a}=m;a&&u.getLayer(a)&&u.removeLayer(a)})}onLoad(){if(this.addStyleLayers(),this.addDynamicFilters&&this.addDynamicFilters(),!this.mapboxLayer?.mbMap)return;let{mbMap:u}=this.mapboxLayer,m=u.getStyle();if(m&&this.styleLayersFilter){let a=m.layers.filter(this.styleLayersFilter);this.disabled=!a.length}}getFeatureInfoAtCoordinate(u){if(!this.mapboxLayer?.mbMap)return Promise.resolve({coordinate:u,features:[],layer:this});let{mbMap:m}=this.mapboxLayer;if(!m.isStyleLoaded())return Promise.resolve({coordinate:u,features:[],layer:this});let a=this.styleLayers||[];return this.styleLayersFilter&&(a=m.getStyle().layers.filter(this.styleLayersFilter)),this.queryRenderedLayersFilter&&(a=m.getStyle().layers.filter(this.queryRenderedLayersFilter)),this.mapboxLayer.getFeatureInfoAtCoordinate(u,{layers:a.map(l=>l&&l.id),validate:!1}).then(l=>{let M=l.features.filter(z=>this.featureInfoFilter(z,this.map?.getView().getResolution()));return this.highlight(M),{...l,features:M,layer:this}})}setFilter(u){if(!this.mapboxLayer?.mbMap)return;let{mbMap:m}=this.mapboxLayer;this.styleLayers.forEach(({id:a})=>{a&&u&&m.getLayer(a)&&m.setFilter(a,u)})}setHoverState(u,m){if(!this.mapboxLayer?.mbMap)return;let{mbMap:a}=this.mapboxLayer;!u||!a||u.forEach(l=>{let{source:M,sourceLayer:z}=l.get("mapboxFeature")||{};if(!M&&!z||!l.getId()){l.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/mapbox/tippecanoe#adding-calculated-attributes.",l.getId(),l.getProperties());return}a.setFeatureState({id:l.getId(),source:M,sourceLayer:z},{hover:m})})}select(u=[]){this.setHoverState(this.selectedFeatures||[],!1),this.selectedFeatures=u,this.setHoverState(this.selectedFeatures||[],!0)}highlight(u=[]){let m=this.highlightedFeatures?.filter(a=>!(this.selectedFeatures||[]).map(l=>l.getId()).includes(a.getId()))||[];this.setHoverState(m,!1),this.highlightedFeatures=u,this.setHoverState(this.highlightedFeatures,!0)}applyLayoutVisibility(u){let{visible:m}=this,a=this.styleLayersFilter;if(!this.mapboxLayer?.mbMap)return;let{mbMap:l}=this.mapboxLayer,M=l.getStyle();if(M&&a){let z=m?"visible":"none",D=M.layers||[];for(let q=0;q<D.length;q+=1){let V=D[q];a(V)&&l.getLayer(V.id)&&l.setLayoutProperty(V.id,"visibility",z)}}}clone(u){return new Nf({...this.options,...u})}},vb=Nf;var Yv=Vp(Sb()),Jv=Vp(Ab());function NS(v){return class extends v{constructor(m){super({hitTolerance:10,...m});this.debug=m.debug||!1,this.mode=m.mode||Go.TOPOGRAPHIC,this.api=m.api||new Hd(m),this.tenant=m.tenant||"",this.minZoomInterpolation=m.minZoomInterpolation||8,this.format=new Sl,this.onStart=m.onStart,this.onStop=m.onStop;let a=["tram","subway","rail","bus","ferry","cablecar","gondola","funicular","coach"],l=["rail"],M=["tram","subway","rail","bus"];this.motsByZoom=m.motsByZoom||[l,l,l,l,l,l,l,l,l,M,M,a,a,a,a],this.getMotsByZoom=z=>m.getMotsByZoom&&m.getMotsByZoom(z,this.motsByZoom)||this.motsByZoom[z]||this.motsByZoom[this.motsByZoom.length-1],this.generalizationLevelByZoom=m.generalizationLevelByZoom||[5,5,5,5,5,5,5,5,10,30,30,100,100,100],this.getGeneralizationLevelByZoom=z=>m.getGeneralizationLevelByZoom&&m.getGeneralizationLevelByZoom(z,this.generalizationLevelByZoom)||this.generalizationLevelByZoom[z],this.renderTimeIntervalByZoom=m.renderTimeIntervalByZoom||[1e5,5e4,4e4,3e4,2e4,15e3,1e4,5e3,2e3,1e3,400,300,250,180,90,60,50,50,50,50,50],this.getRenderTimeIntervalByZoom=z=>m.getRenderTimeIntervalByZoom&&m.getRenderTimeIntervalByZoom(z,this.renderTimeIntervalByZoom)||this.renderTimeIntervalByZoom[z],this.isUpdateBboxOnMoveEnd=m.isUpdateBboxOnMoveEnd!==!1,this.throttleRenderTrajectories=(0,Jv.default)(this.renderTrajectoriesInternal,50,{leading:!1,trailing:!0}),this.debounceRenderTrajectories=(0,Yv.default)(this.renderTrajectoriesInternal,50,{leading:!0,trailing:!0,maxWait:5e3}),this.onFeatureHover=this.onFeatureHover.bind(this),this.onFeatureClick=this.onFeatureClick.bind(this),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(m){let{style:a,speed:l,pixelRatio:M,hoverVehicleId:z,selectedVehicleId:D,filter:q,sort:V,time:de,live:pe,canvas:Ie,styleOptions:Ne,mode:nt}=m,we=Ie,Pe=l||1,et=de||new Date,ut=nt||Go.TOPOGRAPHIC,mt=a||$h;super.defineProperties(m),Object.defineProperties(this,{isTrackerLayer:{value:!0},canvas:{get:()=>(we||(we=document.createElement("canvas")),we),set:ct=>{we=ct}},mode:{get:()=>ut,set:ct=>{ct!==ut&&(ut=ct,this.api?.wsApi?.open&&(this.stop(),this.start()))}},style:{get:()=>mt,set:ct=>{mt=ct,this.renderTrajectories()}},styleOptions:{value:{...od,...Ne||{}}},speed:{get:()=>Pe,set:ct=>{Pe=ct,this.start()}},filter:{value:q,writable:!0},sort:{value:V,writable:!0},live:{value:pe===!1?pe:!0,writable:!0},time:{get:()=>et,set:ct=>{et=ct&&ct.getTime?ct:new Date(ct),this.renderTrajectories()}},trajectories:{value:{},writable:!0},hoverVehicleId:{value:z,writable:!0},selectedVehicleId:{value:D,writable:!0},pixelRatio:{value:M||(typeof window<"u"?window.devicePixelRatio:1),writable:!0},useRequestAnimationFrame:{value:m.useRequestAnimationFrame||!1,writable:!0},useThrottle:{value:m.useThrottle!==!1,writable:!0},useDebounce:{value:m.useDebounce||!1,writable:!0}})}attachToMap(m){super.attachToMap(m),this.visible&&this.start(),this.visibilityRef=this.on("change:visible",a=>{a.target.visible?this.start():this.stop()}),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)}detachFromMap(){if(document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange),this.stop(),Ja(this.visibilityRef),this.canvas){let m=this.canvas.getContext("2d");m&&m.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(m,a=!1){if(!this.map||!this.trajectories)return!1;let l=this.live?Date.now():this.time?.getTime(),M=Object.values(this.trajectories);return this.sort&&M.sort(this.sort),!this.canvas||!this.style||(this.renderState=gf(this.canvas,M,this.style,{...m,pixelRatio:this.pixelRatio||1,time:l},{filter:this.filter,noInterpolate:(m.zoom||0)<this.minZoomInterpolation?!0:a,hoverVehicleId:this.hoverVehicleId,selectedVehicleId:this.selectedVehicleId,...this.styleOptions})),!0}renderTrajectories(m,a){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0),m&&(!a&&this.useRequestAnimationFrame?this.requestId=requestAnimationFrame(()=>{this.renderTrajectoriesInternal(m,a)}):!a&&this.useDebounce?this.debounceRenderTrajectories(m,a):!a&&this.useThrottle?this.throttleRenderTrajectories(m,a):this.renderTrajectoriesInternal(m,a))}setBbox(m,a){if(this.trajectories&&m&&a){let M=Object.keys(this.trajectories);for(let z=M.length-1;z>=0;z-=1)this.purgeTrajectory(this.trajectories[M[z]],m,a)}if(!m)return;let l=[...m];this.isUpdateBboxOnMoveEnd&&a&&(l.push(a),this.generalizationLevel=this.getGeneralizationLevelByZoom(a),this.generalizationLevel&&l.push(`gen=${this.generalizationLevel}`),this.mots=this.getMotsByZoom(a),this.mots&&l.push(`mots=${this.mots}`)),this.tenant&&l.push(`tenant=${this.tenant}`),this.api.bbox=l}getRefreshTimeInMs(m=0){let a=m!==void 0?Math.round(m):-1,l=this.getRenderTimeIntervalByZoom(a)||25,M=Math.max(25,l/(this.speed||1)),z=Math.min(M,500);if(this.useThrottle?this.throttleRenderTrajectories=(0,Jv.default)(this.renderTrajectoriesInternal,z,{leading:!0,trailing:!0}):this.useDebounce&&(this.debounceRenderTrajectories=(0,Yv.default)(this.renderTrajectoriesInternal,z,{leading:!0,trailing:!0,maxWait:5e3})),this.api?.buffer){let[,D]=this.api.buffer;this.api.buffer=[z,D]}return M}getVehicle(m){return this.trajectories&&Object.values(this.trajectories).filter(m)||[]}getFeatureInfoAtCoordinate(m,a){let{resolution:l,nb:M}=a,z=_l([...m,...m],this.hitTolerance*l),D=Object.values(this.trajectories||{});this.sort&&(D=D.sort(this.sort));let q=[];for(let V=0;V<D.length&&(D[V].properties.coordinate&&Ym(z,D[V].properties.coordinate)&&q.push(D[V]),q.length!==M);V+=1);return Promise.resolve({layer:this,features:q.map(V=>this.format.readFeature(V)),coordinate:m})}getTrajectoryInfos(m){let a=[this.api.getStopSequence(m),this.api.getFullTrajectory(m,this.mode,this.generalizationLevel)];return Promise.all(a).then(([l,M])=>({stopSequence:l,fullTrajectory:M}))}purgeOutOfDateTrajectories(){Object.entries(this.trajectories||{}).forEach(([m,a])=>{let l=a?.properties?.time_intervals;this.time&&l.length&&l[l.length-1][0]<this.time&&this.removeTrajectory(m)})}purgeTrajectory(m,a,l){let{type:M,bounds:z}=m.properties;return this.isUpdateBboxOnMoveEnd&&!uo(a,z)||this.mots&&!this.mots.includes(M)?(this.removeTrajectory(m),!0):!1}addTrajectory(m){this.filter&&!this.filter(m)||(this.trajectories||(this.trajectories={}),this.trajectories[m.properties.train_id]=m,this.renderTrajectories())}removeTrajectory(m){let a;typeof m!="string"?a=m?.properties?.train_id:a=m,this.trajectories&&delete this.trajectories[a]}onZoomEnd(){this.startUpdateTime()}onDocumentVisibilityChange(){this.visible&&(document.hidden?(this.stop(),this.trajectories={}):this.start())}onTrajectoryMessage(m){if(!m.content)return;let a=m.content,{geometry:l,properties:{train_id:M,time_since_update:z,raw_coordinates:D}}=a;z<0||this.purgeTrajectory(a)||(this.debug&&this.mode===Go.TOPOGRAPHIC&&D?a.properties.olGeometry=this.format.readGeometry({type:"Point",coordinates:co(D,this.map.getView().getProjection())}):a.properties.olGeometry=this.format.readGeometry(l),a.properties.timeOffset=Date.now()-m.timestamp,this.addTrajectory(a))}onDeleteTrajectoryMessage(m){m.content&&this.removeTrajectory(m.content)}onFeatureHover(m,a,l){let[M]=m,z=null;M&&(z=M.get("train_id")),this.hoverVehicleId!==z&&(this.hoverVehicleId=z,this.renderTrajectories(!0))}onFeatureClick(m,a,l){let[M]=m,z=null;M&&(z=M.get("train_id")),this.selectedVehicleId!==z&&(this.selectedVehicleId=z,this.selectedVehicle=M,this.renderTrajectories(!0))}}}var Rg=NS;var jS=new Fa({zIndex:2,image:new Cs({radius:5,fill:new ba({color:"#000000"})}),stroke:new Wo({color:"#000000",width:6})}),GS=(v,i,u)=>{let m="#ffffff",a=v.get("type"),l=v.get("stroke");return l&&l[0]!=="#"&&(l=`#${l}`),m=l||u?.getBgColor(a),m=/#ffffff/i.test(m)?"#ff0000":m,[jS,new Fa({zIndex:3,image:new Cs({radius:4,fill:new ba({color:m})}),stroke:new Wo({color:m,width:4})})]},Lg=GS;var qS=new Fa({zIndex:2,image:new Cs({radius:5,fill:new ba({color:"#000000"})}),stroke:new Wo({color:"#000000",width:6})}),ZS=new Fa({zIndex:3,image:new Cs({radius:4,fill:new ba({color:"#a0a0a0"})}),stroke:new Wo({color:"#a0a0a0",width:4})}),WS=()=>[qS,ZS],Mb=WS;var XS=new Sl,jf=class extends Rg(As){constructor(u){super({...u});this.allowRenderWhenAnimating=!1;this.allowRenderWhenAnimating=!!u.allowRenderWhenAnimating,this.olLayer=u.olLayer||new Tv({layers:[new Qh({source:new ep({features:[]}),style:(m,a)=>(u.fullTrajectoryStyle||Lg)(m,a,this.styleOptions)}),new Kh({source:new dd({}),render:m=>{if(this.container||(this.container=document.createElement("div"),this.container.style.position="absolute",this.container.style.width="100%",this.container.style.height="100%",this.transformContainer=document.createElement("div"),this.transformContainer.style.position="absolute",this.transformContainer.style.width="100%",this.transformContainer.style.height="100%",this.container.appendChild(this.transformContainer),this.canvas&&(this.canvas.style.position="absolute",this.canvas.style.top="0",this.canvas.style.left="0",this.canvas.style.transformOrigin="top left",this.transformContainer.appendChild(this.canvas))),this.renderedViewState){let{center:a,resolution:l,rotation:M}=m.viewState,{center:z,resolution:D,rotation:q}=this.renderedViewState;if(D/l>=3)this.canvas?.getContext("2d")?.clearRect(0,0,this.canvas?.width,this.canvas?.height);else{let V=this.map.getPixelFromCoordinate(z),de=this.map.getPixelFromCoordinate(a);this.transformContainer.style.transform=Nx(V[0]-de[0],V[1]-de[1],D/l,D/l,M-q,0,0)}}return this.container}})]}),this.vectorLayer=this.olLayer.getLayers().item(0),this.renderState={center:[0,0],zoom:void 0,rotation:0}}attachToMap(u){super.attachToMap(u),this.map&&this.olListenersKeys.push(...this.map.on(["moveend","change:target"],m=>{let a=(m.map||m.target).getView();if(a.getAnimating()||a.getInteracting())return;let l=a.getZoom();this.currentZoom!==l&&this.onZoomEnd(),this.currentZoom=l,this.onMoveEnd(m)}))}detachFromMap(){super.detachFromMap(),this.container=null}hasFeatureInfoAtCoordinate(u){if(this.map&&this.canvas){let m=this.canvas.getContext("2d",{willReadFrequently:!0}),a=this.map.getPixelFromCoordinate(u);return!!m?.getImageData(a[0]*(this.pixelRatio||1),a[1]*(this.pixelRatio||1),1,1).data[3]}return!1}renderTrajectories(u){if(!this.map)return;let m=this.map.getView();m.getCenter()&&super.renderTrajectories({size:this.map.getSize(),center:m.getCenter(),extent:m.calculateExtent(),resolution:m.getResolution(),rotation:m.getRotation(),zoom:m.getZoom(),pixelRatio:this.pixelRatio},u)}renderTrajectoriesInternal(u,m){if(!this.map)return!1;let a=!1;return a=(this.allowRenderWhenAnimating?!1:this.map.getView().getAnimating()||this.map.getView().getInteracting())?!1:super.renderTrajectoriesInternal(u,m),a&&(this.renderedViewState={...u},this.transformContainer&&(this.transformContainer.style.transform="")),a}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getView().getZoom())}getFeatureInfoAtCoordinate(u,m={}){if(!this.map||!this.map.getView())return Promise.resolve({layer:this,features:[],coordinate:u});let a=this.map.getView().getResolution();return super.getFeatureInfoAtCoordinate(u,{resolution:a,...m})}onMoveEnd(u){this.visible&&this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.userClickInteractions&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}onZoomEnd(){super.onZoomEnd(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.setBbox(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.userClickInteractions&&this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}onFeatureHover(u,m,a){super.onFeatureHover(u,m,a),this.map.getTargetElement().style.cursor=u.length?"pointer":"auto"}onFeatureClick(u,m,a){super.onFeatureClick(u,m,a),!u.length&&this.vectorLayer&&this.vectorLayer.getSource().clear(),this.selectedVehicleId&&this.highlightTrajectory(this.selectedVehicleId)}purgeTrajectory(u,m,a){let l=this.map.getView().getCenter();return!m&&!l?!1:super.purgeTrajectory(u,m||this.map.getView().calculateExtent(),a||this.map.getView().getZoom())}setBbox(u,m){let a=u,l=m;!a&&this.isUpdateBboxOnMoveEnd&&(a=u||this.map.getView().calculateExtent(),l=Math.floor(this.map.getView().getZoom())),super.setBbox(a,l)}highlightTrajectory(u){return this.api.getFullTrajectory(u,this.mode,this.generalizationLevel).then(m=>{let a=m.content;if(this.vectorLayer.getSource().clear(),!a||!a.features||!a.features.length)return;let l=XS.readFeatures(a);return this.vectorLayer.getSource().addFeatures(l),l})}clone(u){return new jf({...this.options,...u})}},Pb=jf;var Gf=class extends As{getFeatureInfoAtCoordinate(i){let u=[];if(this.map){let m=this.map.getPixelFromCoordinate(i);u=this.map.getFeaturesAtPixel(m,{layerFilter:a=>a===this.olLayer,hitTolerance:this.hitTolerance})}return Promise.resolve({features:u,layer:this,coordinate:i})}clone(i){return new Gf({...this.options,...i})}},kb=Gf;var qf=class extends As{constructor(u){super(u);this.abortController=new AbortController,this.format=new Sl}getFeatureInfoUrl(u){if(!this.map)return;let m=this.map.getView().getProjection(),a=this.map.getView().getResolution();if(a&&m&&this.olLayer?.getSource()?.getFeatureInfoUrl)return this.olLayer?.getSource()?.getFeatureInfoUrl(u,a,m,{info_format:"application/json",query_layers:this.olLayer?.getSource()?.getParams().layers})}getFeatureInfoAtCoordinate(u){this.abortController?.abort(),this.abortController=new AbortController;let{signal:m}=this.abortController,a=this.getFeatureInfoUrl(u);return a?fetch(a,{signal:m}).then(l=>l.json()).then(l=>l.features).then(l=>({layer:this,coordinate:u,features:l.map(M=>this.format.readFeature(M))})).catch(()=>Promise.resolve({features:[],coordinate:u,layer:this})):(console.error("No url for the WMS layer."),Promise.resolve({features:[],coordinate:u,layer:this}))}clone(u){return new qf({...this.options,...u})}},Rb=qf;var Bg={};wy(Bg,{CopyrightControl:()=>Lb,Layer:()=>Dg,RealtimeAPI:()=>Hd,RealtimeLayer:()=>Xb,RealtimeModes:()=>Go,RoutingAPI:()=>Xd,StopsAPI:()=>$d,compareDepartures:()=>yf,createCanvas:()=>Xl,createRealtimeFilters:()=>ky,debounceDeparturesMessages:()=>u_,debounceWebsocketMessages:()=>Kd,getCircleCanvas:()=>y_,getDelayBgCanvas:()=>m_,getDelayTextCanvas:()=>g_,getHoursAndMinutes:()=>Fx,getLayersAsFlatArray:()=>Yd,getMapboxMapCopyrights:()=>sc,getMapboxRender:()=>nd,getMaplibreRender:()=>rd,getMercatorResolution:()=>Og,getSourceCoordinates:()=>Xf,getTextCanvas:()=>__,getUTCDateString:()=>zx,getUTCTimeString:()=>Dx,getUrlWithParams:()=>Gh,pad:()=>$m,realtimeConfig:()=>od,realtimeDefaultStyle:()=>$h,realtimeDelayStyle:()=>v_,realtimeSimpleStyle:()=>x_,removeDuplicate:()=>qh,renderTrajectories:()=>gf,sortAndFilterDepartures:()=>_f,sortByDelay:()=>Ry});var Qv=class extends yg{constructor(i){super(i),this.render=this.render.bind(this)}activate(){super.activate(),this.map&&(this.map.on("sourcedata",this.render),this.map.on("styledata",this.render),this.map.on("idle",this.render))}deactivate(){this.map&&(this.map.off("sourcedata",this.render),this.map.off("styledata",this.render),this.map.off("idle",this.render)),super.deactivate()}getCopyrights(){return sc(this.map)}},Lb=Qv;var Zf=class extends Cg(tp){attachToMap(u){super.attachToMap(u),this.map&&this.userInteractions&&(this.toggleVisibleListeners(),this.onChangeVisibleKey=this.on("change:visible",this.toggleVisibleListeners))}detachFromMap(){this.map&&(this.deactivateUserInteractions(),Ja(this.onChangeVisibleKey)),super.detachFromMap()}activateUserInteractions(){this.deactivateUserInteractions(),this.map&&this.userInteractions&&this.userClickInteractions&&this.userClickCallbacks?.length&&this.map.on("click",this.onUserClickCallback),this.map&&this.userInteractions&&this.userHoverInteractions&&this.userHoverCallbacks?.length&&this.map.on("mousemove",this.onUserMoveCallback)}deactivateUserInteractions(){this.map&&(this.map.off("mousemove",this.onUserMoveCallback),this.map.off("click",this.onUserClickCallback))}toggleVisibleListeners(){this.visible?this.activateUserInteractions():this.deactivateUserInteractions()}getMercatorExtent(){let u=this.map.getBounds().toArray();return rf([...u[0],...u[1]],"EPSG:4326","EPSG:3857")}getOlZoom(){return this.map.getZoom()+1}clone(u){return new Zf({...this.options,...u})}},Dg=Zf;var Xo=63710088e-1,zb={centimeters:Xo*100,centimetres:Xo*100,degrees:Xo/111325,feet:Xo*3.28084,inches:Xo*39.37,kilometers:Xo/1e3,kilometres:Xo/1e3,meters:Xo,metres:Xo,miles:Xo/1609.344,millimeters:Xo*1e3,millimetres:Xo*1e3,nauticalmiles:Xo/1852,radians:1,yards:Xo*1.0936},GB={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/Xo,yards:1.0936133};function Db(v,i,u){u===void 0&&(u={});var m={type:"Feature"};return(u.id===0||u.id)&&(m.id=u.id),u.bbox&&(m.bbox=u.bbox),m.properties=i||{},m.geometry=v,m}function vh(v,i,u){if(u===void 0&&(u={}),!v)throw new Error("coordinates is required");if(!Array.isArray(v))throw new Error("coordinates must be an Array");if(v.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!ex(v[0])||!ex(v[1]))throw new Error("coordinates must contain numbers");var m={type:"Point",coordinates:v};return Db(m,i,u)}function $S(v,i){i===void 0&&(i="kilometers");var u=zb[i];if(!u)throw new Error(i+" units is invalid");return v*u}function KS(v,i){i===void 0&&(i="kilometers");var u=zb[i];if(!u)throw new Error(i+" units is invalid");return v/u}function Fb(v){var i=v%(2*Math.PI);return i*180/Math.PI}function np(v){var i=v%360;return i*Math.PI/180}function Fg(v,i,u){if(i===void 0&&(i="kilometers"),u===void 0&&(u="kilometers"),!(v>=0))throw new Error("length must be a positive number");return $S(KS(v,i),u)}function ex(v){return!isNaN(v)&&v!==null&&!Array.isArray(v)}function tx(v){return!!v&&v.constructor===Object}function Wf(v,i,u){if(v!==null)for(var m,a,l,M,z,D,q,V=0,de=0,pe,Ie=v.type,Ne=Ie==="FeatureCollection",nt=Ie==="Feature",we=Ne?v.features.length:1,Pe=0;Pe<we;Pe++){q=Ne?v.features[Pe].geometry:nt?v.geometry:v,pe=q?q.type==="GeometryCollection":!1,z=pe?q.geometries.length:1;for(var et=0;et<z;et++){var ut=0,mt=0;if(M=pe?q.geometries[et]:q,M!==null){D=M.coordinates;var ct=M.type;switch(V=u&&(ct==="Polygon"||ct==="MultiPolygon")?1:0,ct){case null:break;case"Point":if(i(D,de,Pe,ut,mt)===!1)return!1;de++,ut++;break;case"LineString":case"MultiPoint":for(m=0;m<D.length;m++){if(i(D[m],de,Pe,ut,mt)===!1)return!1;de++,ct==="MultiPoint"&&ut++}ct==="LineString"&&ut++;break;case"Polygon":case"MultiLineString":for(m=0;m<D.length;m++){for(a=0;a<D[m].length-V;a++){if(i(D[m][a],de,Pe,ut,mt)===!1)return!1;de++}ct==="MultiLineString"&&ut++,ct==="Polygon"&&mt++}ct==="Polygon"&&ut++;break;case"MultiPolygon":for(m=0;m<D.length;m++){for(mt=0,a=0;a<D[m].length;a++){for(l=0;l<D[m][a].length-V;l++){if(i(D[m][a][l],de,Pe,ut,mt)===!1)return!1;de++}mt++}ut++}break;case"GeometryCollection":for(m=0;m<M.geometries.length;m++)if(Wf(M.geometries[m],i,u)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function HS(v,i){i===void 0&&(i={});var u=0,m=0,a=0;return Wf(v,function(l){u+=l[0],m+=l[1],a++},!0),vh([u/a,m/a],i.properties)}var Ob=HS;function ku(v){if(!v)throw new Error("coord is required");if(!Array.isArray(v)){if(v.type==="Feature"&&v.geometry!==null&&v.geometry.type==="Point")return v.geometry.coordinates;if(v.type==="Point")return v.coordinates}if(Array.isArray(v)&&v.length>=2&&!Array.isArray(v[0])&&!Array.isArray(v[1]))return v;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Bb(v){if(Array.isArray(v))return v;if(v.type==="Feature"){if(v.geometry!==null)return v.geometry.coordinates}else if(v.coordinates)return v.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function YS(v,i,u){u===void 0&&(u={});var m;u.final?m=Ub(ku(i),ku(v)):m=Ub(ku(v),ku(i));var a=m>180?-(360-m):m;return a}function Ub(v,i){var u=np(v[1]),m=np(i[1]),a=np(i[0]-v[0]);a>Math.PI&&(a-=2*Math.PI),a<-Math.PI&&(a+=2*Math.PI);var l=Math.log(Math.tan(m/2+Math.PI/4)/Math.tan(u/2+Math.PI/4)),M=Math.atan2(a,l);return(Fb(M)+360)%360}var Vb=YS;function JS(v,i,u){u===void 0&&(u={});var m=ku(v),a=ku(i);a[0]+=a[0]-m[0]>180?-360:m[0]-a[0]>180?360:0;var l=QS(m,a),M=Fg(l,"meters",u.units);return M}function QS(v,i,u){u=u===void 0?Xo:Number(u);var m=u,a=v[1]*Math.PI/180,l=i[1]*Math.PI/180,M=l-a,z=Math.abs(i[0]-v[0])*Math.PI/180;z>Math.PI&&(z-=2*Math.PI);var D=Math.log(Math.tan(l/2+Math.PI/4)/Math.tan(a/2+Math.PI/4)),q=Math.abs(D)>1e-11?M/D:Math.cos(a),V=Math.sqrt(M*M+q*q*z*z),de=V*m;return de}var Nb=JS;function eE(v,i,u,m){m===void 0&&(m={});var a=i<0,l=Fg(Math.abs(i),m.units,"meters");a&&(l=-Math.abs(l));var M=ku(v),z=tE(M,l,u);return z[0]+=z[0]-M[0]>180?-360:M[0]-z[0]>180?360:0,vh(z,m.properties)}function tE(v,i,u,m){m=m===void 0?Xo:Number(m);var a=i/m,l=v[0]*Math.PI/180,M=np(v[1]),z=np(u),D=a*Math.cos(z),q=M+D;Math.abs(q)>Math.PI/2&&(q=q>0?Math.PI-q:-Math.PI-q);var V=Math.log(Math.tan(q/2+Math.PI/4)/Math.tan(M/2+Math.PI/4)),de=Math.abs(V)>1e-11?D/V:Math.cos(M),pe=a*Math.sin(z)/de,Ie=l+pe;return[(Ie*180/Math.PI+540)%360-180,q*180/Math.PI]}var jb=eE;function iE(v){if(!v)throw new Error("geojson is required");switch(v.type){case"Feature":return Gb(v);case"FeatureCollection":return rE(v);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return ix(v);default:throw new Error("unknown GeoJSON type")}}function Gb(v){var i={type:"Feature"};return Object.keys(v).forEach(function(u){switch(u){case"type":case"properties":case"geometry":return;default:i[u]=v[u]}}),i.properties=qb(v.properties),i.geometry=ix(v.geometry),i}function qb(v){var i={};return v&&Object.keys(v).forEach(function(u){var m=v[u];typeof m=="object"?m===null?i[u]=null:Array.isArray(m)?i[u]=m.map(function(a){return a}):i[u]=qb(m):i[u]=m}),i}function rE(v){var i={type:"FeatureCollection"};return Object.keys(v).forEach(function(u){switch(u){case"type":case"features":return;default:i[u]=v[u]}}),i.features=v.features.map(function(u){return Gb(u)}),i}function ix(v){var i={type:v.type};return v.bbox&&(i.bbox=v.bbox),v.type==="GeometryCollection"?(i.geometries=v.geometries.map(function(u){return ix(u)}),i):(i.coordinates=Zb(v.coordinates),i)}function Zb(v){var i=v;return typeof i[0]!="object"?i.slice():i.map(function(u){return Zb(u)})}var Wb=iE;function nE(v,i,u){if(u=u||{},!tx(u))throw new Error("options is invalid");var m=u.pivot,a=u.mutate;if(!v)throw new Error("geojson is required");if(i==null||isNaN(i))throw new Error("angle is required");return i===0||(m||(m=Ob(v)),(a===!1||a===void 0)&&(v=Wb(v)),Wf(v,function(l){var M=Vb(m,l),z=M+i,D=Nb(m,l),q=Bb(jb(m,D,z));l[0]=q[0],l[1]=q[1]})),v}var rx=nE;var oE=(v,i=1)=>{let{width:u,height:m}=v.getCanvas(),a=v.unproject({x:0,y:0}),l=v.unproject({x:0,y:m/i}),M=v.unproject({x:u/i,y:m/i}),z=v.unproject({x:u/i,y:0});return[[a.lng,a.lat],[z.lng,z.lat],[M.lng,M.lat],[l.lng,l.lat]]},Xf=oE;var aE=v=>{let i=v.getBounds().toArray(),u=co(i[0]),m=co(i[1]),a=[...u,...m],{width:l,height:M}=v.getCanvas(),z=bo(a)/l,D=vl(a)/M;return Math.max(z,D)},Og=aE;var nx=class extends Rg(Dg){constructor(i={}){super({...i}),this.onLoad=this.onLoad.bind(this),this.onMove=this.onMove.bind(this),this.onMoveEnd=this.onMoveEnd.bind(this),this.onZoomEnd=this.onZoomEnd.bind(this),this.onVisibilityChange=this.onVisibilityChange.bind(this)}attachToMap(i,u){i&&(super.attachToMap(i),this.source={type:"canvas",canvas:this.canvas,coordinates:Xf(i,this.pixelRatio),animate:!0,attribution:this.copyrights&&this.copyrights.join(", ")},this.beforeId=u,this.layer={id:this.key,type:"raster",source:this.key,layout:{visibility:this.visible?"visible":"none"},paint:{"raster-opacity":1,"raster-fade-duration":0,"raster-resampling":"nearest"}},i.isStyleLoaded()&&this.onLoad(),this.map.on("load",this.onLoad),this.listeners=[this.on("change:visible",this.onVisibilityChange)])}detachFromMap(){this.map&&(this.map.off("load",this.onLoad),this.listeners.forEach(i=>{Ja(i)}),this.map.style&&this.map.getLayer(this.key)&&this.map.removeLayer(this.key),this.map.style&&this.map.getSource(this.key)&&this.map.removeSource(this.key)),super.detachFromMap()}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&&(this.map.off("move",this.onMove),this.map.off("moveend",this.onMoveEnd),this.map.off("zoomend",this.onZoomEnd))}onLoad(){this.map.getSource(this.key)||this.map.addSource(this.key,this.source),this.map.getLayer(this.key)||this.map.addLayer(this.layer,this.beforeId)}onUserMoveCallback(i){super.onUserMoveCallback({coordinate:co(i.lngLat.toArray()),...i})}renderTrajectories(i=!1){if(!this.map)return;this.pixelRatio||(this.pixelRatio=1);let{width:u,height:m}=this.map.getCanvas(),a=this.map.getCenter(),l=this.map.unproject({x:0,y:m/this.pixelRatio}),M=this.map.unproject({x:u/this.pixelRatio,y:0}),z=rx(vh([l.lng,l.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,D=rx(vh([M.lng,M.lat]),-this.map.getBearing(),{pivot:[a.lng,a.lat]}).geometry.coordinates,q=[...co(z),...co(D)],V=bo(q)/(u/this.pixelRatio),de=vl(q)/(m/this.pixelRatio),pe=Math.max(V,de),Ie={size:[u/this.pixelRatio,m/this.pixelRatio],center:co([a.lng,a.lat]),extent:q,resolution:pe,zoom:this.getOlZoom(),rotation:-(this.map.getBearing()*Math.PI)/180,pixelRatio:this.pixelRatio};super.renderTrajectories(Ie,i)}getRefreshTimeInMs(){return super.getRefreshTimeInMs(this.map.getZoom())}getFeatureInfoAtCoordinate(i,u={}){let m=Og(this.map);return super.getFeatureInfoAtCoordinate(i,{resolution:m,...u})}onVisibilityChange(){this.visible&&!this.map.getLayer(this.key)?this.map.addLayer(this.layer,this.beforeId):this.map.getLayer(this.key)&&this.map.removeLayer(this.key)}purgeTrajectory(i,u,m){return super.purgeTrajectory(i,u||this.getMercatorExtent(),m||Math.floor(this.getOlZoom()))}setBbox(i,u){let m=i,a=u;!m&&this.isUpdateBboxOnMoveEnd&&(m=i||this.getMercatorExtent(),a=Math.floor(this.getOlZoom())),super.setBbox(m,a)}onMove(){this.renderTrajectories()}renderTrajectoriesInternal(i,u=!1){let m=super.renderTrajectoriesInternal(i,u);if(m&&this.map.style){let a=Xf(this.map,this.pixelRatio),l=this.map.getSource(this.key);l&&l.setCoordinates(a)}return m}onMoveEnd(){this.renderTrajectories(),this.visible&&this.isUpdateBboxOnMoveEnd&&this.setBbox()}onFeatureHover(i,u,m){super.onFeatureHover(i,u,m),this.map.getCanvasContainer().style.cursor=i.length?"pointer":"auto"}},Xb=nx;var ox={ol:zg,mapbox:Bg};typeof window<"u"&&(window.mbt=ox);var q5=ox;})();
1084
1084
  //# sourceMappingURL=mbt.min.js.map