From 0171c2afd33ae792ffa7d6db2597ff289315c312 Mon Sep 17 00:00:00 2001 From: Bartek Fabiszewski Date: Sat, 26 Dec 2020 21:32:31 +0100 Subject: [PATCH] Update node dependencies --- js/dist/1.bundle.js | 2 - js/dist/1.bundle.js.map | 1 - js/dist/521.bundle.js | 2 + js/dist/521.bundle.js.map | 1 + js/dist/bundle.js | 2 +- js/dist/bundle.js.map | 2 +- karma.conf.js | 2 +- package-lock.json | 5414 +++++++++++++------------------------ package.json | 40 +- webpack.common.js | 6 +- webpack.prod.js | 2 - 11 files changed, 1871 insertions(+), 3603 deletions(-) delete mode 100644 js/dist/1.bundle.js delete mode 100644 js/dist/1.bundle.js.map create mode 100644 js/dist/521.bundle.js create mode 100644 js/dist/521.bundle.js.map diff --git a/js/dist/1.bundle.js b/js/dist/1.bundle.js deleted file mode 100644 index 578f2b7..0000000 --- a/js/dist/1.bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{394:function(t,e,i){var n,r,o;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=function(){"use strict";function t(t,i,r,o,s){e(t,i,r||0,o||t.length-1,s||n)}function e(t,n,r,o,s){for(;o>r;){if(o-r>600){var a=o-r+1,l=n-r+1,h=Math.log(a),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(a-u)/a)*(l-a/2<0?-1:1);e(t,n,Math.max(r,Math.floor(n-l*u/a+c)),Math.min(o,Math.floor(n+(a-l)*u/a+c)),s)}var p=t[n],f=r,d=o;for(i(t,r,n),s(t[o],p)>0&&i(t,r,o);f0;)d--}0===s(t[r],p)?i(t,r,d):i(t,++d,o),d<=n&&(r=d+1),n<=d&&(o=d-1)}}function i(t,e,i){var n=t[e];t[e]=t[i],t[i]=n}function n(t,e){return te?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function o(t,e,i){if(!i)return e.indexOf(t);for(var n=0;n=t.minX&&e.maxY>=t.minY}function _(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function g(e,i,n,r,o){for(var s=[i,n];s.length;)if(!((n=s.pop())-(i=s.pop())<=r)){var a=i+Math.ceil((n-i)/r/2)*r;t(e,a,i,n,o),s.push(i,a,a,n)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var e=this.data,i=[];if(!d(t,e))return i;for(var n=this.toBBox,r=[];e;){for(var o=0;o=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(n,r,e)},r.prototype._split=function(t,e){var i=t[e],n=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,n);var o=this._chooseSplitIndex(i,r,n),a=_(i.children.splice(o,i.children.length-o));a.height=i.height,a.leaf=i.leaf,s(i,this.toBBox),s(a,this.toBBox),e?t[e-1].children.push(a):this._splitRoot(i,a)},r.prototype._splitRoot=function(t,e){this.data=_([t,e]),this.data.height=t.height+1,this.data.leaf=!1,s(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,e,i){for(var n,r,o,s,l,h,u,p=1/0,f=1/0,d=e;d<=i-e;d++){var _=a(t,0,d,this.toBBox),g=a(t,d,i,this.toBBox),y=(r=_,o=g,s=void 0,l=void 0,h=void 0,u=void 0,s=Math.max(r.minX,o.minX),l=Math.max(r.minY,o.minY),h=Math.min(r.maxX,o.maxX),u=Math.min(r.maxY,o.maxY),Math.max(0,h-s)*Math.max(0,u-l)),v=c(_)+c(g);y=e;f--){var d=t.children[f];l(s,t.leaf?r(d):d),h+=p(s)}return h},r.prototype._adjustParentBBoxes=function(t,e,i){for(var n=i;n>=0;n--)l(e[n],t)},r.prototype._condense=function(t){for(var e=t.length-1,i=void 0;e>=0;e--)0===t[e].children.length?e>0?(i=t[e-1].children).splice(i.indexOf(t[e]),1):this.clear():s(t[e],this.toBBox)},r},"object"===s(e)&&void 0!==t?t.exports=o():void 0===(r="function"==typeof(n=o)?n.call(e,i,e,t):n)||(t.exports=r)},409:function(t,e,i){"use strict";i.r(e),i.d(e,"Feature",(function(){return Zn})),i.d(e,"Map",(function(){return Aa})),i.d(e,"Overlay",(function(){return Zl})),i.d(e,"View",(function(){return Fs})),i.d(e,"control",(function(){return xu})),i.d(e,"geom",(function(){return Su})),i.d(e,"layer",(function(){return Cu})),i.d(e,"proj",(function(){return wu})),i.d(e,"source",(function(){return Eu})),i.d(e,"style",(function(){return bu}));var n=function(){function t(t){this.propagationStopped,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.propagationStopped=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),r="propertychange",o=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function s(t,e){return t>e?1:t0){for(r=1;r0)},e.prototype.removeEventListener=function(t,e){var i=this.listeners_&&this.listeners_[t];if(i){var n=i.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[n]=f,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}},e}(o),S="change",C="error",w="contextmenu",E="click",b="dblclick",T="keydown",R="keypress",O="load",P="resize",I="touchmove",M="wheel";function F(t,e,i,n,r){if(n&&n!==t&&(i=i.bind(n)),r){var o=i;i=function(){t.removeEventListener(e,i),o.apply(this,arguments)}}var s={target:t,type:e,listener:i};return t.addEventListener(e,i),s}function L(t,e,i,n){return F(t,e,i,n,!0)}function A(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),_(t))}var D=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();var k=function(t){function e(){var e=t.call(this)||this;return e.revision_=0,e}return D(e,t),e.prototype.changed=function(){++this.revision_,this.dispatchEvent(S)},e.prototype.getRevision=function(){return this.revision_},e.prototype.on=function(t,e){if(Array.isArray(t)){for(var i=t.length,n=new Array(i),r=0;r0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:xt}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var i=e.viewState.rotation;if(i!=this.rotation_){var n="rotate("+i+"rad)";if(this.autoHide_){var r=this.element.classList.contains(pt);r||0!==i?r&&0!==i&&this.element.classList.remove(pt):this.element.classList.add(pt)}this.label_.style.transform=n}this.rotation_=i}},e}(ct),bt={DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},Tt={};Tt[bt.DEGREES]=2*Math.PI*6370997/360,Tt[bt.FEET]=.3048,Tt[bt.METERS]=1,Tt[bt.USFEET]=1200/3937;var Rt=bt,Ot=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||Tt[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Pt(t,e,i){return Math.min(Math.max(t,e),i)}var It="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Mt="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function Ft(t,e,i,n,r,o){var s=r-i,a=o-n;if(0!==s||0!==a){var l=((t-i)*s+(e-n)*a)/(s*s+a*a);l>1?(i=r,n=o):l>0&&(i+=s*l,n+=a*l)}return Lt(t,e,i,n)}function Lt(t,e,i,n){var r=i-t,o=n-e;return r*r+o*o}function At(t){return t*Math.PI/180}function Dt(t,e){var i=t%e;return i*e<0?i+e:i}function kt(t,e,i){return t+i*(e-t)}var jt=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Gt=6378137,zt=Math.PI*Gt,Wt=[-zt,-zt,zt,zt],Xt=[-180,-85,180,85],Nt=function(t){function e(e){return t.call(this,{code:e,units:Rt.METERS,extent:Wt,global:!0,worldExtent:Xt,getPointResolution:function(t,e){return t/It(e[1]/Gt)}})||this}return jt(e,t),e}(Ot),Kt=[new Nt("EPSG:3857"),new Nt("EPSG:102100"),new Nt("EPSG:102113"),new Nt("EPSG:900913"),new Nt("urn:ogc:def:crs:EPSG:6.18:3:3857"),new Nt("urn:ogc:def:crs:EPSG::3857"),new Nt("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Yt(t,e,i){var n=t.length,r=i>1?i:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(n));for(var s=zt,a=0;as?l=s:l<-s&&(l=-s),o[a+1]=l}return o}function Zt(t,e,i){var n=t.length,r=i>1?i:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(n));for(var s=0;sr&&(l|=ae),ao&&(l|=se),l===re&&(l=oe),l}function Se(){return[1/0,1/0,-1/0,-1/0]}function Ce(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function we(t){return Ce(1/0,1/0,-1/0,-1/0,t)}function Ee(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function be(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function Te(t,e){for(var i=0,n=e.length;ie[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Ne(t){return t[2]1)for(var o=t[2]-t[0],s=t[3]-t[1],a=0;a=0;--n)if(t[n]!=e[n]){i=!1;break}return i}function ii(t,e){var i=Math.cos(e),n=Math.sin(e),r=t[0]*i-t[1]*n,o=t[1]*i+t[0]*n;return t[0]=r,t[1]=o,t}function ni(t,e){if(e.canWrapX()){var i=We(e.getExtent()),n=ri(t,e,i);n&&(t[0]-=n*i)}return t}function ri(t,e,i){var n=e.getExtent(),r=0;if(e.canWrapX()&&(t[0]n[2])){var o=i||We(n);r=Math.floor((t[0]-n[0])/o)}return r}function oi(t,e,i){var n;if(void 0!==e){for(var r=0,o=t.length;r=s)break;++d}f=this.scaleBar_?this.createScaleBar(c,u,l):u.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=c&&(this.innerElement_.style.width=c+"px",this.renderedWidth_=c),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,i){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),r=[],o=t/this.scaleBarSteps_,s="#ffffff",a=0;a
'+this.createMarker("relative",a)+(a%2==0||2===this.scaleBarSteps_?this.createStepText(a,t,!1,e,i):"")+""),a===this.scaleBarSteps_-1&&r.push(this.createStepText(a+1,t,!0,e,i)),s="#ffffff"===s?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+r.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,i,n,r){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+r);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=hi(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center),e=this.dpi_||Ai,i=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*i*39.37*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(ct),ki=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ji=function(t){function e(e){var i=this,n=e||{};i=t.call(this,{element:document.createElement("div"),target:n.target})||this;var r=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,s=void 0!==n.zoomInLabel?n.zoomInLabel:"+",a=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",l=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",u=document.createElement("button");u.className=r+"-in",u.setAttribute("type","button"),u.title=l,u.appendChild("string"==typeof s?document.createTextNode(s):s),u.addEventListener(E,i.handleClick_.bind(i,o),!1);var c=document.createElement("button");c.className=r+"-out",c.setAttribute("type","button"),c.title=h,c.appendChild("string"==typeof a?document.createTextNode(a):a),c.addEventListener(E,i.handleClick_.bind(i,-o),!1);var p=r+" "+"ol-unselectable "+dt,f=i.element;return f.className=p,f.appendChild(u),f.appendChild(c),i.duration_=void 0!==n.duration?n.duration:250,i}return ki(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var i=e.getZoom();if(void 0!==i){var n=e.getConstrainedZoom(i+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:xt})):e.setZoom(n)}}},e}(ct),Gi="XY",zi="XYZ",Wi="XYM",Xi="XYZM";new Array(6);function Ni(t,e,i,n,r,o,s){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t[4]=o,t[5]=s,t}function Ki(t,e){var i=e[0],n=e[1];return e[0]=t[0]*i+t[2]*n+t[4],e[1]=t[1]*i+t[3]*n+t[5],e}function Yi(t,e,i,n,r,o,s,a){var l=Math.sin(o),h=Math.cos(o);return t[0]=n*h,t[1]=r*l,t[2]=-n*l,t[3]=r*h,t[4]=s*n*h-a*n*l+e,t[5]=s*r*l+a*r*h+i,t}function Zi(t,e){var i,n=(i=e)[0]*i[3]-i[1]*i[2];pe(0!==n,32);var r=e[0],o=e[1],s=e[2],a=e[3],l=e[4],h=e[5];return t[0]=a/n,t[1]=-o/n,t[2]=-s/n,t[3]=r/n,t[4]=(s*h-a*l)/n,t[5]=-(r*h-o*l)/n,t}function Bi(t){return"matrix("+t.join(", ")+")"}function Vi(t,e,i,n,r,o){for(var s=o||[],a=0,l=e;l1)a=i;else{if(p>0){for(var f=0;fr&&(r=h),o=a,s=l}return r}function rn(t,e,i,n,r){for(var o=0,s=i.length;o0;){for(var c=h.pop(),p=h.pop(),f=0,d=t[p],_=t[p+1],g=t[c],y=t[c+1],v=p+n;vf&&(u=v,f=m)}f>r&&(l[(u-e)/n]=1,p+n0&&_>f)&&(d<0&&g0&&g>d)?(a=c,l=p):(o[s++]=a,o[s++]=l,h=a,u=l,a=c,l=p)}}return o[s++]=a,o[s++]=l,s}function pn(t,e,i,n,r,o,s,a){for(var l=0,h=i.length;lo&&(h-a)*(o-l)-(r-a)*(u-l)>0&&s++:u<=o&&(h-a)*(o-l)-(r-a)*(u-l)<0&&s--,a=h,l=u}return 0!==s}function En(t,e,i,n,r,o){if(0===i.length)return!1;if(!wn(t,e,i[0],n,r,o))return!1;for(var s=1,a=i.length;sS&&En(t,e,i,n,u=(c+p)/2,_)&&(x=u,S=C),c=p}return isNaN(x)&&(x=r[o]),a?(a.push(x,_,S),a):[x,_,S]}function Tn(t,e,i,n,r){for(var o,s=[t[e],t[e+1]],a=[];e+n=r[0]&&o[2]<=r[2]||(o[1]>=r[1]&&o[3]<=r[3]||Tn(t,e,i,n,(function(t,e){return function(t,e,i){var n=!1,r=xe(t,e),o=xe(t,i);if(r===oe||o===oe)n=!0;else{var s=t[0],a=t[1],l=t[2],h=t[3],u=e[0],c=e[1],p=i[0],f=i[1],d=(f-c)/(p-u),_=void 0,g=void 0;o&se&&!(r&se)&&(n=(_=p-(f-h)/d)>=s&&_<=l),n||!(o&ae)||r&ae||(n=(g=f-(p-l)*d)>=a&&g<=h),n||!(o&le)||r&le||(n=(_=p-(f-a)/d)>=s&&_<=l),n||!(o&he)||r&he||(n=(g=f-(p-s)*d)>=a&&g<=h)}return n}(r,t,e)})))))}function On(t,e,i,n,r){if(!function(t,e,i,n,r){return!!(Rn(t,e,i,n,r)||wn(t,e,i,n,r[0],r[1])||wn(t,e,i,n,r[0],r[3])||wn(t,e,i,n,r[2],r[1])||wn(t,e,i,n,r[2],r[3]))}(t,e,i[0],n,r))return!1;if(1===i.length)return!0;for(var o=1,s=i.length;oo||(h==o&&l>=s||(r=a,o=h,s=l))}return r}(t,e,i,n),a=s-n;a=i&&(l=e);var h=t[a],u=t[a+1],c=t[s],p=t[s+1],f=t[l],d=t[l+1];return c*d+h*p+u*f-(u*c+p*f+h*d)<0}function Mn(t,e,i,n,r){for(var o=void 0!==r&&r,s=0,a=i.length;s>1)],e))<0?a=n+1:(l=n,h=!r);return h?a:~a}(d,v);m<0?(h=(v-d[-m-2])/(d[-m-1]-d[-m-2]),l=e+(-m-2)*n):l=e+m*n}var x=a>1?a:2,S=o||new Array(x);for(_=0;_>1;r=1024){var i=0;for(var n in ar)0==(3&i++)&&(delete ar[n],--lr)}e=function(t){var e,i,n,r,o;if(or.exec(t)&&(t=sr(t)),rr.exec(t)){var s=t.length-1,a=void 0;a=s<=4?1:2;var l=4===s||8===s;e=parseInt(t.substr(1+0*a,a),16),i=parseInt(t.substr(1+1*a,a),16),n=parseInt(t.substr(1+2*a,a),16),r=l?parseInt(t.substr(1+3*a,a),16):255,1==a&&(e=(e<<4)+e,i=(i<<4)+i,n=(n<<4)+n,l&&(r=(r<<4)+r)),o=[e,i,n,r/255]}else 0==t.indexOf("rgba(")?cr(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),cr(o)):pe(!1,14);return o}(t),ar[t]=e,++lr}return e});function ur(t){return Array.isArray(t)?t:hr(t)}function cr(t){return t[0]=Pt(t[0]+.5|0,0,255),t[1]=Pt(t[1]+.5|0,0,255),t[2]=Pt(t[2]+.5|0,0,255),t[3]=Pt(t[3],0,1),t}function pr(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var i=t[1];i!=(0|i)&&(i=i+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+i+","+n+","+(void 0===t[3]?1:t[3])+")"}var fr=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var i=this.cache_[e];0!=(3&t++)||i.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,i){var n=dr(t,e,i);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,i,n){var r=dr(t,e,i);this.cache_[r]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function dr(t,e,i){return e+":"+t+":"+(i?function(t){return"string"==typeof t?t:pr(t)}(i):"null")}var _r=new fr,gr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),yr=function(t){function e(e,i,n,r){var o=t.call(this)||this;return o.extent=e,o.pixelRatio_=n,o.resolution=i,o.state=r,o}return gr(e,t),e.prototype.changed=function(){this.dispatchEvent(S)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return j()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){j()},e}(x),vr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function mr(t,e,i){var n=t;if(n.src&&it){var r=n.decode(),o=!0;return r.then((function(){o&&e()})).catch((function(t){o&&("EncodingError"===t.name&&"Invalid image type."===t.message?e():i())})),function(){o=!1}}var s=[L(n,O,e),L(n,C,i)];return function(){s.forEach(A)}}!function(t){function e(e,i,n,r,o,s){var a=t.call(this,e,i,n,Qn)||this;return a.src_=r,a.image_=new Image,null!==o&&(a.image_.crossOrigin=o),a.unlisten_=null,a.state=Qn,a.imageLoadFunction_=s,a}vr(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=er,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=ke(this.extent)/this.image_.height),this.state=tr,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=Qn&&this.state!=er||(this.state=$n,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=mr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}}(yr);var xr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Sr=null,Cr=function(t){function e(e,i,n,r,o,s){var a=t.call(this)||this;return a.hitDetectionImage_=null,a.image_=e||new Image,null!==r&&(a.image_.crossOrigin=r),a.canvas_={},a.color_=s,a.unlisten_=null,a.imageState_=o,a.size_=n,a.src_=i,a.tainted_,a}return xr(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===tr){Sr||(Sr=rt(1,1)),Sr.drawImage(this.image_,0,0);try{Sr.getImageData(0,0,1,1),this.tainted_=!1}catch(t){Sr=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(S)},e.prototype.handleImageError_=function(){this.imageState_=er,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=tr,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_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],i=rt(t,e);i.fillRect(0,0,t,e),this.hitDetectionImage_=i.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Qn){this.imageState_=$n;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=mr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var i=e.getContext("2d");if(i.scale(t,t),i.drawImage(this.image_,0,0),this.isTainted_()){var n=this.color_;return i.globalCompositeOperation="multiply",i.fillStyle="rgb("+n[0]+","+n[1]+","+n[2]+")",i.fillRect(0,0,e.width,e.height),i.globalCompositeOperation="destination-in",void i.drawImage(this.image_,0,0)}for(var r=i.getImageData(0,0,e.width,e.height),o=r.data,s=this.color_[0]/255,a=this.color_[1]/255,l=this.color_[2]/255,h=0,u=o.length;h0,6);var c=void 0!==n.src?Qn:tr;return i.color_=void 0!==n.color?ur(n.color):null,i.iconImage_=function(t,e,i,n,r,o){var s=_r.get(e,n,o);return s||(s=new Cr(t,e,i,n,r,o),_r.set(e,n,o,s)),s}(l,u,h,i.crossOrigin_,c,i.color_),i.offset_=void 0!==n.offset?n.offset:[0,0],i.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:qn,i.origin_=null,i.size_=void 0!==n.size?n.size:null,i}return wr(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==Bn||this.anchorYUnits_==Bn){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Bn&&(t[0]*=e[0]),this.anchorYUnits_==Bn&&(t[1]*=e[1])}if(this.anchorOrigin_!=qn){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=Jn&&this.anchorOrigin_!=Hn||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=Un&&this.anchorOrigin_!=Hn||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=qn){var i=this.getSize(),n=this.iconImage_.getSize();if(!i||!n)return null;t=t.slice(),this.offsetOrigin_!=Jn&&this.offsetOrigin_!=Hn||(t[0]=n[0]-i[0]-t[0]),this.offsetOrigin_!=Un&&this.offsetOrigin_!=Hn||(t[1]=n[1]-i[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(S,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(S,t)},e}(nr),br="opacity",Tr="visible",Rr="extent",Or="zIndex",Pr="maxResolution",Ir="minResolution",Mr="maxZoom",Fr="minZoom",Lr="source",Ar=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Dr=function(t){function e(e){var i=t.call(this)||this,n=d({},e);return n[br]=void 0!==e.opacity?e.opacity:1,pe("number"==typeof n[br],64),n[Tr]=void 0===e.visible||e.visible,n[Or]=e.zIndex,n[Pr]=void 0!==e.maxResolution?e.maxResolution:1/0,n[Ir]=void 0!==e.minResolution?e.minResolution:0,n[Fr]=void 0!==e.minZoom?e.minZoom:-1/0,n[Mr]=void 0!==e.maxZoom?e.maxZoom:1/0,i.className_=void 0!==n.className?e.className:"ol-layer",delete n.className,i.setProperties(n),i.state_=null,i}return Ar(e,t),e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},i=this.getZIndex();return e.opacity=Pt(Math.round(100*this.getOpacity())/100,0,1),e.sourceState=this.getSourceState(),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==i?i:!1===e.managed?1/0:0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return j()},e.prototype.getLayerStatesArray=function(t){return j()},e.prototype.getExtent=function(){return this.get(Rr)},e.prototype.getMaxResolution=function(){return this.get(Pr)},e.prototype.getMinResolution=function(){return this.get(Ir)},e.prototype.getMinZoom=function(){return this.get(Fr)},e.prototype.getMaxZoom=function(){return this.get(Mr)},e.prototype.getOpacity=function(){return this.get(br)},e.prototype.getSourceState=function(){return j()},e.prototype.getVisible=function(){return this.get(Tr)},e.prototype.getZIndex=function(){return this.get(Or)},e.prototype.setExtent=function(t){this.set(Rr,t)},e.prototype.setMaxResolution=function(t){this.set(Pr,t)},e.prototype.setMinResolution=function(t){this.set(Ir,t)},e.prototype.setMaxZoom=function(t){this.set(Mr,t)},e.prototype.setMinZoom=function(t){this.set(Fr,t)},e.prototype.setOpacity=function(t){pe("number"==typeof t,64),this.set(br,t)},e.prototype.setVisible=function(t){this.set(Tr,t)},e.prototype.setZIndex=function(t){this.set(Or,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(B),kr="prerender",jr="postrender",Gr="precompose",zr="postcompose",Wr="rendercomplete",Xr="undefined",Nr="ready",Kr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Yr(t,e){if(!t.visible)return!1;var i=e.resolution;if(i=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var Zr=function(t){function e(e){var i=this,n=d({},e);delete n.source,(i=t.call(this,n)||this).mapPrecomposeKey_=null,i.mapRenderKey_=null,i.sourceChangeKey_=null,i.renderer_=null,e.render&&(i.render=e.render),e.map&&i.setMap(e.map),i.addEventListener(Z(Lr),i.handleSourcePropertyChange_);var r=e.source?e.source:null;return i.setSource(r),i}return Kr(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Lr)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():Xr},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(A(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=F(t,S,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var i=this.getRenderer();if(i.prepareFrame(t))return i.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(A(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(A(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=F(t,Gr,(function(t){var e=t.frameState.layerStatesArray,i=this.getLayerState(!1);pe(!e.some((function(t){return t.layer===i.layer})),67),e.push(i)}),this),this.mapRenderKey_=F(this,S,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Lr,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Dr),Br=function(){function t(){}return t.prototype.drawCustom=function(t,e,i){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}();function Vr(t){return Array.isArray(t)?pr(t):t}var Ur="10px sans-serif",Hr="#000",qr="round",Jr=[],Qr="round",$r="#000",to="center",eo="middle",io=[0,0,0,0],no=new B;(new x).setSize=function(){console.warn("labelCache is deprecated.")};var ro,oo,so,ao=null,lo={},ho=function(){var t,e,i="32px ",n=["monospace","serif"],r=n.length,o="wmytzilWMYTZIL@#/&?$%10";function s(t,s,a){for(var l=!0,h=0;h=0;--x){var S=g[x],C=S.layer;if(C.hasRenderer()&&Yr(S,h)&&s.call(a,C)){var w=C.getRenderer(),E=C.getSource();if(w&&E){var b=E.getWrapX()?p:t,T=u.bind(null,S.managed);v[0]=b[0]+f[m][0],v[1]=b[1]+f[m][1],l=w.forEachFeatureAtCoordinate(v,e,i,T,_)}if(l)return l}}},e.prototype.forEachLayerAtPixel=function(t,e,i,n,r){return j()},e.prototype.hasFeatureAtCoordinate=function(t,e,i,n,r,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,i,n,c,this,r,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){this.declutterTree_=function(t,e){e&&e.clear();for(var i=t.declutterItems,n=i.length-1;n>=0;--n)for(var r=i[n],o=r.items,s=0,a=o.length;s=0;--a){var l=s[a],h=l.layer;if(h.hasRenderer()&&Yr(l,o)&&r(h)){var u=h.getRenderer().getDataAtPixel(t,e,i);if(u){var c=n(h,u);if(c)return c}}}},e}(Ao),zo="add",Wo="remove",Xo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),No="length",Ko=function(t){function e(e,i,n){var r=t.call(this,e)||this;return r.element=i,r.index=n,r}return Xo(e,t),e}(n),Yo=function(t){function e(e,i){var n=t.call(this)||this,r=i||{};if(n.unique_=!!r.unique,n.array_=e||[],n.unique_)for(var o=0,s=n.array_.length;o0;)this.pop()},e.prototype.extend=function(t){for(var e=0,i=t.length;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(A(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(I,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(A(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(A),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(x),ns="layergroup",rs="size",os="target",ss="view",as=1/0,ls=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,_(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,i=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(i);return delete this.queuedElements_[n],i},t.prototype.enqueue=function(t){pe(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=as&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,i=this.priorities_,n=e.length,r=e[t],o=i[t],s=t;t>1;){var a=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),h=lt;){var s=this.getParentIndex_(e);if(!(n[s]>o))break;i[e]=i[s],n[e]=n[s],e=s}i[e]=r,n[e]=o},t.prototype.reprioritize=function(){var t,e,i,n=this.priorityFunction_,r=this.elements_,o=this.priorities_,s=0,a=r.length;for(e=0;e0;)n=(i=this.dequeue()[0]).getKey(),i.getState()!==hs||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++r,i.load())},e}(ls);var gs=0,ys=1,vs="center",ms="resolution",xs="rotation",Ss=256;function Cs(t,e,i){return function(n,r,o,s){if(n){var a=e?0:o[0]*r,l=e?0:o[1]*r,h=t[0]+a/2,u=t[2]-a/2,c=t[1]+l/2,p=t[3]-l/2;h>u&&(u=h=(u+h)/2),c>p&&(p=c=(p+c)/2);var f=Pt(n[0],h,u),d=Pt(n[1],c,p),_=30*r;return s&&i&&(f+=-_*Math.log(1+Math.max(0,h-n[0])/_)+_*Math.log(1+Math.max(0,n[0]-u)/_),d+=-_*Math.log(1+Math.max(0,c-n[1])/_)+_*Math.log(1+Math.max(0,n[1]-p)/_)),[f,d]}}}function ws(t){return t}function Es(t,e,i,n){var r=We(e)/i[0],o=ke(e)/i[1];return n?Math.min(t,Math.max(r,o)):Math.min(t,Math.min(r,o))}function bs(t,e,i){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,i&&(n=Math.max(n,i),n/=Math.log(1+50*Math.max(0,i/t-1))/50+1),Pt(n,i/2,2*e)}function Ts(t,e,i,n,r){return function(o,s,a,l){if(void 0!==o){var h=n?Es(t,n,a,r):t;return(void 0===i||i)&&l?bs(o,h,e):Pt(o,e,h)}}}function Rs(t){return void 0!==t?0:void 0}function Os(t){return void 0!==t?t:void 0}var Ps=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Is(t,e){setTimeout((function(){t(e)}),0)}function Ms(t){return!(t.sourceCenter&&t.targetCenter&&!ei(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}var Fs=function(t){function e(e){var i=t.call(this)||this,n=d({},e);return i.hints_=[0,0],i.animations_=[],i.updateAnimationKey_,i.projection_=ci(n.projection,"EPSG:3857"),i.viewportSize_=[100,100],i.targetCenter_=null,i.targetResolution_,i.targetRotation_,i.cancelAnchor_=void 0,n.center&&(n.center=wi(n.center,i.projection_)),n.extent&&(n.extent=bi(n.extent,i.projection_)),i.applyOptions_(n),i}return Ps(e,t),e.prototype.applyOptions_=function(t){var e=function(t){var e,i,n,r=28,o=2,s=void 0!==t.minZoom?t.minZoom:0,l=void 0!==t.maxZoom?t.maxZoom:r,h=void 0!==t.zoomFactor?t.zoomFactor:o,u=void 0!==t.multiWorld&&t.multiWorld,c=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,p=void 0!==t.showFullExtent&&t.showFullExtent,f=ci(t.projection,"EPSG:3857"),d=f.getExtent(),_=t.constrainOnlyCenter,g=t.extent;u||g||!f.isGlobal()||(_=!1,g=d);if(void 0!==t.resolutions){var y=t.resolutions;i=y[s],n=void 0!==y[l]?y[l]:y[y.length-1],e=t.constrainResolution?function(t,e,i,n){return function(r,o,s,l){if(void 0!==r){var h=t[0],u=t[t.length-1],c=i?Es(h,i,s,n):h;if(l)return void 0===e||e?bs(r,c,u):Pt(r,u,c);var p=Math.min(c,r),f=Math.floor(a(t,p,o));return t[f]>c&&f1&&"function"==typeof arguments[i-1]&&(e=arguments[i-1],--i),!this.isDef()){var n=arguments[i-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&Is(e,!0))}for(var r=Date.now(),o=this.targetCenter_.slice(),s=this.targetResolution_,a=this.targetRotation_,l=[],h=0;h0},e.prototype.getInteracting=function(){return this.hints_[ys]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(gs,-this.hints_[gs]);for(var e=0,i=this.animations_.length;e=0;--i){for(var n=this.animations_[i],r=!0,o=0,s=n.length;o0?l/a.duration:1;h>=1?(a.complete=!0,h=1):r=!1;var u=a.easing(h);if(a.sourceCenter){var c=a.sourceCenter[0],p=a.sourceCenter[1],f=c+u*(a.targetCenter[0]-c),d=p+u*(a.targetCenter[1]-p);this.targetCenter_=[f,d]}if(a.sourceResolution&&a.targetResolution){var _=1===u?a.targetResolution:a.sourceResolution+u*(a.targetResolution-a.sourceResolution);if(a.anchor){var g=this.getViewportSize_(this.getRotation()),y=this.constraints_.resolution(_,0,g,!0);this.targetCenter_=this.calculateCenterZoom(y,a.anchor)}this.targetResolution_=_,this.applyTargetState_(!0)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var v=1===u?Dt(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+u*(a.targetRotation-a.sourceRotation);if(a.anchor){var m=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(m,a.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!a.complete)break}}if(r){this.animations_[i]=null,this.setHint(gs,-1);var x=n[0].callback;x&&Is(x,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var i,n,r,o=this.getCenterInternal();return void 0!==o&&(ii(i=[o[0]-e[0],o[1]-e[1]],t-this.getRotation()),r=e,(n=i)[0]+=+r[0],n[1]+=+r[1]),i},e.prototype.calculateCenterZoom=function(t,e){var i,n=this.getCenterInternal(),r=this.getResolution();void 0!==n&&void 0!==r&&(i=[e[0]-t*(e[0]-n[0])/r,e[1]-t*(e[1]-n[1])/r]);return i},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var i=e[0],n=e[1];return[Math.abs(i*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?Ci(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(vs)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return Ei(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),i=this.getCenterInternal();pe(i,1);var n=this.getResolution();pe(void 0!==n,2);var r=this.getRotation();return pe(void 0!==r,3),De(i,n,r,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(ms)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(bi(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var i=e||this.getViewportSize_(),n=We(t)/i[0],r=ke(t)/i[1];return Math.max(n,r)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/Math.log(e);return function(t){return i/Math.pow(e,t*r)}},e.prototype.getRotation=function(){return this.get(xs)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/e;return function(t){return Math.log(i/t)/e/r}},e.prototype.getState=function(){var t=this.getCenterInternal(),e=this.getProjection(),i=this.getResolution(),n=this.getRotation();return{center:t.slice(0),projection:void 0!==e?e:null,resolution:i,rotation:n,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,i,n=this.minZoom_||0;if(this.resolutions_){var r=a(this.resolutions_,t,1);n=r,e=this.resolutions_[r],i=r==this.resolutions_.length-1?2:e/this.resolutions_[r+1]}else e=this.maxResolution_,i=this.zoomFactor_;return n+Math.log(e/t)/Math.log(i)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Pt(Math.floor(t),0,this.resolutions_.length-2),i=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(i,Pt(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var i,n=d({size:this.getViewportSize_()},e||{});if(pe(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))pe(!Ne(t),25),i=kn(r=bi(t,this.getProjection()));else if(t.getType()===Qe){var r;(i=kn(r=bi(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),Le(r))}else{var o=Si();i=o?t.clone().transform(o,this.getProjection()):t}this.fitInternal(i,n)},e.prototype.fitInternal=function(t,e){var i=e||{},n=i.size;n||(n=this.getViewportSize_());var r,o=void 0!==i.padding?i.padding:[0,0,0,0],s=void 0!==i.nearest&&i.nearest;r=void 0!==i.minResolution?i.minResolution:void 0!==i.maxZoom?this.getResolutionForZoom(i.maxZoom):0;for(var a=t.getFlatCoordinates(),l=this.getRotation(),h=Math.cos(-l),u=Math.sin(-l),c=1/0,p=1/0,d=-1/0,_=-1/0,g=t.getStride(),y=0,v=a.length;y=0;s--){var a=o[s];if(a.getActive())if(!a.handleEvent(t))break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var i=this.maxTilesLoading_,n=i;if(t){var r=t.viewHints;if(r[gs]||r[ys]){var o=!it&&Date.now()-t.time>8;i=o?0:8,n=o?0:2}}e.getTilesLoading()0&&t[1]>0}(e)&&i&&i.isDef()){var o=i.getHints(this.frameState_?this.frameState_.viewHints:void 0),s=i.getState();r={animate:!1,coordinateToPixelTransform:this.coordinateToPixelTransform_,declutterItems:n?n.declutterItems:[],extent:De(s.center,s.resolution,s.rotation,e),index:this.frameIndex_++,layerIndex:0,layerStatesArray:this.getLayerGroup().getLayerStatesArray(),pixelRatio:this.pixelRatio_,pixelToCoordinateTransform:this.pixelToCoordinateTransform_,postRenderFunctions:[],size:e,tileQueue:this.tileQueue_,time:t,usedTiles:{},viewState:s,viewHints:o,wantedTiles:{}}}if(this.frameState_=r,this.renderer_.renderFrame(r),r){if(r.animate&&this.render(),Array.prototype.push.apply(this.postRenderFunctions_,r.postRenderFunctions),n)(!this.previousExtent_||!Ne(this.previousExtent_)&&!Ee(r.extent,this.previousExtent_))&&(this.dispatchEvent(new Ho(U,this,n)),this.previousExtent_=we(this.previousExtent_));this.previousExtent_&&!r.viewHints[gs]&&!r.viewHints[ys]&&!Ee(r.extent,this.previousExtent_)&&(this.dispatchEvent(new Ho(H,this,r)),_e(r.extent,this.previousExtent_))}this.dispatchEvent(new Ho(V,this,r)),this.postRenderTimeoutHandle_=setTimeout(this.handlePostRender.bind(this),0)},e.prototype.setLayerGroup=function(t){this.set(ns,t)},e.prototype.setSize=function(t){this.set(rs,t)},e.prototype.setTarget=function(t){this.set(os,t)},e.prototype.setView=function(t){this.set(ss,t)},e.prototype.updateSize=function(){var t=this.getTargetElement();if(t){var e=getComputedStyle(t);this.setSize([t.offsetWidth-parseFloat(e.borderLeftWidth)-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight)-parseFloat(e.borderRightWidth),t.offsetHeight-parseFloat(e.borderTopWidth)-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom)-parseFloat(e.borderBottomWidth)])}else this.setSize(void 0);this.updateViewportSize_()},e.prototype.updateViewportSize_=function(){var t=this.getView();if(t){var e=void 0,i=getComputedStyle(this.viewport_);i.width&&i.height&&(e=[parseInt(i.width,10),parseInt(i.height,10)]),t.setViewportSize(e)}},e}(B),Ds=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ks=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,{element:document.createElement("div"),render:n.render,target:n.target})||this).ulElement_=document.createElement("ul"),i.collapsed_=void 0===n.collapsed||n.collapsed,i.overrideCollapsible_=void 0!==n.collapsible,i.collapsible_=void 0===n.collapsible||n.collapsible,i.collapsible_||(i.collapsed_=!1);var r=void 0!==n.className?n.className:"ol-attribution",o=void 0!==n.tipLabel?n.tipLabel:"Attributions",s=void 0!==n.collapseLabel?n.collapseLabel:"»";"string"==typeof s?(i.collapseLabel_=document.createElement("span"),i.collapseLabel_.textContent=s):i.collapseLabel_=s;var a=void 0!==n.label?n.label:"i";"string"==typeof a?(i.label_=document.createElement("span"),i.label_.textContent=a):i.label_=a;var l=i.collapsible_&&!i.collapsed_?i.collapseLabel_:i.label_,h=document.createElement("button");h.setAttribute("type","button"),h.title=o,h.appendChild(l),h.addEventListener(E,i.handleClick_.bind(i),!1);var u=r+" "+"ol-unselectable "+dt+(i.collapsed_&&i.collapsible_?" ol-collapsed":"")+(i.collapsible_?"":" ol-uncollapsible"),c=i.element;return c.className=u,c.appendChild(i.ulElement_),c.appendChild(h),i.renderedAttributions_=[],i.renderedVisible_=!0,i}return Ds(e,t),e.prototype.collectSourceAttributions_=function(t){for(var e={},i=[],n=t.layerStatesArray,r=0,o=n.length;r0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!u(e,this.renderedAttributions_)){ht(this.ulElement_);for(var n=0,r=e.length;n0}}else if(t.type==Qo.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Qo.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Qo.POINTERDOWN||e===Qo.POINTERDRAG||e===Qo.POINTERUP}(t)){var e=t.originalEvent,i=e.pointerId.toString();t.type==Qo.POINTERUP?delete this.trackedPointers_[i]:(t.type==Qo.POINTERDOWN||i in this.trackedPointers_)&&(this.trackedPointers_[i]=e),this.targetPointers=g(this.trackedPointers_)}},e}(Ws);function Bs(t){var e=arguments;return function(t){for(var i=!0,n=0,r=e.length;n0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(Zs),ra=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),oa=function(t){function e(e){var i=this,n=e||{};return(i=t.call(this,{stopDown:p})||this).condition_=n.condition?n.condition:Vs,i.lastAngle_=void 0,i.duration_=void 0!==n.duration?n.duration:250,i}return ra(e,t),e.prototype.handleDragEvent=function(t){if(ta(t)){var e=t.map,i=e.getView();if(i.getConstraints().rotation!==Rs){var n=e.getSize(),r=t.pixel,o=Math.atan2(n[1]/2-r[1],r[0]-n[0]/2);if(void 0!==this.lastAngle_){var s=o-this.lastAngle_;i.adjustRotationInternal(-s)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!ta(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!ta(t)&&(!(!qs(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}(Zs),sa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),aa=function(t){function e(e){var i=t.call(this)||this;return i.geometry_=null,i.element_=document.createElement("div"),i.element_.style.position="absolute",i.element_.style.pointerEvents="auto",i.element_.className="ol-box "+e,i.map_=null,i.startPixel_=null,i.endPixel_=null,i}return sa(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,i="px",n=this.element_.style;n.left=Math.min(t[0],e[0])+i,n.top=Math.min(t[1],e[1])+i,n.width=Math.abs(e[0]-t[0])+i,n.height=Math.abs(e[1]-t[1])+i},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,i=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);i[4]=i[0].slice(),this.geometry_?this.geometry_.setCoordinates([i]):this.geometry_=new Dn([i])},e.prototype.getGeometry=function(){return this.geometry_},e}(o),la=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ha="boxstart",ua="boxdrag",ca="boxend",pa=function(t){function e(e,i,n){var r=t.call(this,e)||this;return r.coordinate=i,r.mapBrowserEvent=n,r}return la(e,t),e}(n),fa=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.box_=new aa(n.className||"ol-dragbox"),i.minArea_=void 0!==n.minArea?n.minArea:64,n.onBoxEnd&&(i.onBoxEnd=n.onBoxEnd),i.startPixel_=null,i.condition_=n.condition?n.condition:qs,i.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:i.defaultBoxEndCondition,i}return la(e,t),e.prototype.defaultBoxEndCondition=function(t,e,i){var n=i[0]-e[0],r=i[1]-e[1];return n*n+r*r>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new pa(ua,t.coordinate,t))},e.prototype.handleUpEvent=function(t){return this.box_.setMap(null),this.boxEndCondition_(t,this.startPixel_,t.pixel)&&(this.onBoxEnd(t),this.dispatchEvent(new pa(ca,t.coordinate,t))),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new pa(ha,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}(Zs),da=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),_a=function(t){function e(e){var i=this,n=e||{},r=n.condition?n.condition:Qs;return(i=t.call(this,{condition:r,className:n.className||"ol-dragzoom",minArea:n.minArea})||this).duration_=void 0!==n.duration?n.duration:200,i.out_=void 0!==n.out&&n.out,i}return da(e,t),e.prototype.onBoxEnd=function(t){var e,i,n=this.getMap(),r=n.getView(),o=n.getSize(),s=this.getGeometry().getExtent();if(this.out_){var a=r.calculateExtentInternal(o),l=(e=[n.getPixelFromCoordinateInternal(Me(s)),n.getPixelFromCoordinateInternal(ze(s))],Te(we(i),e));!function(t,e){var i=(t[2]-t[0])/2*(e-1),n=(t[3]-t[1])/2*(e-1);t[0]-=i,t[2]+=i,t[1]-=n,t[3]+=n}(a,1/r.getResolutionForExtentInternal(l,o)),s=a}var h=r.getConstrainedResolution(r.getResolutionForExtentInternal(s,o)),u=r.getConstrainedCenter(Le(s),h);r.animateInternal({resolution:h,center:u,duration:this.duration_,easing:xt})},e}(fa),ga=37,ya=38,va=39,ma=40,xa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Sa=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.defaultCondition_=function(t){return Js(t)&&$s(t)},i.condition_=void 0!==n.condition?n.condition:i.defaultCondition_,i.duration_=void 0!==n.duration?n.duration:100,i.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,i}return xa(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T){var i=t.originalEvent.keyCode;if(this.condition_(t)&&(i==ma||i==ga||i==va||i==ya)){var n=t.map.getView(),r=n.getResolution()*this.pixelDelta_,o=0,s=0;i==ma?s=-r:i==ga?o=-r:i==va?o=r:s=r;var a=[o,s];ii(a,n.getRotation()),function(t,e,i){var n=t.getCenterInternal();if(n){var r=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==i?i:250,easing:Ct,center:t.getConstrainedCenter(r)})}}(n,a,this.duration_),t.preventDefault(),e=!0}}return!e},e}(Ws),Ca=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),wa=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.condition_=n.condition?n.condition:$s,i.delta_=n.delta?n.delta:1,i.duration_=void 0!==n.duration?n.duration:100,i}return Ca(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T||t.type==R){var i=t.originalEvent.charCode;if(this.condition_(t)&&(i=="+".charCodeAt(0)||i=="-".charCodeAt(0))){var n=t.map,r=i=="+".charCodeAt(0)?this.delta_:-this.delta_;zs(n.getView(),r,void 0,this.duration_),t.preventDefault(),e=!0}}return!e},e}(Ws),Ea=function(){function t(t,e,i){this.decay_=t,this.minVelocity_=e,this.delay_=i,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[i+2]>t;)i-=3;var n=this.points_[e+2]-this.points_[i+2];if(n<1e3/60)return!1;var r=this.points_[e]-this.points_[i],o=this.points_[e+1]-this.points_[i+1];return this.angle_=Math.atan2(o,r),this.initialVelocity_=Math.sqrt(r*r+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),ba=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ta="trackpad",Ra="wheel",Oa=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,n)||this).totalDelta_=0,i.lastDelta_=0,i.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,i.duration_=void 0!==n.duration?n.duration:250,i.timeout_=void 0!==n.timeout?n.timeout:80,i.useAnchor_=void 0===n.useAnchor||n.useAnchor,i.constrainResolution_=void 0!==n.constrainResolution&&n.constrainResolution;var r=n.condition?n.condition:Hs;return i.condition_=n.onFocusOnly?Bs(Us,r):r,i.lastAnchor_=null,i.startTime_=void 0,i.timeoutId_,i.mode_=void 0,i.trackpadEventGap_=400,i.trackpadTimeoutId_,i.deltaPerZoom_=300,i}return ba(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==M)return!0;t.preventDefault();var e,i=t.map,n=t.originalEvent;if(this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==M&&(e=n.deltaY,J&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=tt),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var r=Date.now();void 0===this.startTime_&&(this.startTime_=r),(!this.mode_||r-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?Ta:Ra);var o=i.getView();if(this.mode_===Ta&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=r,!1;this.totalDelta_+=e;var s=Math.max(this.timeout_-(r-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,i),s),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var i=-Pt(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(i=i?i>0?1:-1:0),zs(e,i,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(Ws),Pa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ia=function(t){function e(e){var i=this,n=e||{},r=n;return r.stopDown||(r.stopDown=p),(i=t.call(this,r)||this).anchor_=null,i.lastAngle_=void 0,i.rotating_=!1,i.rotationDelta_=0,i.threshold_=void 0!==n.threshold?n.threshold:.3,i.duration_=void 0!==n.duration?n.duration:250,i}return Pa(e,t),e.prototype.handleDragEvent=function(t){var e=0,i=this.targetPointers[0],n=this.targetPointers[1],r=Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX);if(void 0!==this.lastAngle_){var o=r-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=r;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==Rs){var l=s.getViewport().getBoundingClientRect(),h=Ys(this.targetPointers);h[0]-=l.left,h[1]-=l.top,this.anchor_=s.getCoordinateFromPixelInternal(h),this.rotating_&&(s.render(),a.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Zs),Ma=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Fa=function(t){function e(e){var i=this,n=e||{},r=n;return r.stopDown||(r.stopDown=p),(i=t.call(this,r)||this).anchor_=null,i.duration_=void 0!==n.duration?n.duration:400,i.lastDistance_=void 0,i.lastScaleDelta_=1,i}return Ma(e,t),e.prototype.handleDragEvent=function(t){var e=1,i=this.targetPointers[0],n=this.targetPointers[1],r=i.clientX-n.clientX,o=i.clientY-n.clientY,s=Math.sqrt(r*r+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/s),this.lastDistance_=s;var a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e);var h=a.getViewport().getBoundingClientRect(),u=Ys(this.targetPointers);u[0]-=h.left,u[1]-=h.top,this.anchor_=a.getCoordinateFromPixelInternal(u),a.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Zs);var La=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Aa=function(t){function e(e){return(e=d({},e)).controls||(e.controls=function(t){var e=t||{},i=new Yo;return(void 0===e.zoom||e.zoom)&&i.push(new ji(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&i.push(new Et(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&i.push(new ks(e.attributionOptions)),i}()),e.interactions||(e.interactions=function(t){var e=t||{},i=new Yo,n=new Ea(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&i.push(new oa),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&i.push(new Ns({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&i.push(new na({onFocusOnly:e.onFocusOnly,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&i.push(new Ia),(void 0===e.pinchZoom||e.pinchZoom)&&i.push(new Fa({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(i.push(new Sa),i.push(new wa({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&i.push(new Oa({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&i.push(new _a({duration:e.zoomDuration})),i}({onFocusOnly:!0})),t.call(this,e)||this}return La(e,t),e.prototype.createRenderer=function(){return new Go(this)},e}(As),Da=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ka=function(t){function e(e,i,n){var r=t.call(this)||this,o=n||{};return r.tileCoord=e,r.state=i,r.interimTile=null,r.hifi=!0,r.key="",r.transition_=void 0===o.transition?250:o.transition,r.transitionStarts_={},r}return Da(e,t),e.prototype.changed=function(){this.dispatchEvent(S)},e.prototype.release=function(){},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==cs)return this.transition_=0,t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==cs){t.interimTile=null;break}t.getState()==us?e=t:t.getState()==hs?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){if(this.state!==ps&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){j()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var i=this.transitionStarts_[t];if(i){if(-1===i)return 1}else i=e,this.transitionStarts_[t]=i;var n=e-i+1e3/60;return n>=this.transition_?1:mt(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(x),ja=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();var Ga,za=function(t){function e(e,i,n,r,o,s){var a=t.call(this,e,i,s)||this;return a.crossOrigin_=r,a.src_=n,a.image_=new Image,null!==r&&(a.image_.crossOrigin=r),a.unlisten_=null,a.tileLoadFunction_=o,a}return ja(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.getKey=function(){return this.src_},e.prototype.handleImageError_=function(){var t;this.state=ps,this.unlistenImage_(),this.image_=((t=rt(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=cs:this.state=fs,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==ps&&(this.state=hs,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==hs&&(this.state=us,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=mr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(ka),Wa=function(){function t(t,e,i,n,r,o){this.sourceProj_=t,this.targetProj_=e;var s={},a=di(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return s[e]||(s[e]=a(t)),s[e]},this.maxSourceExtent_=n,this.errorThresholdSquared_=r*r,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!n&&!!this.sourceProj_.getExtent()&&We(n)==We(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?We(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?We(this.targetProj_.getExtent()):null;var l=Ge(i),h=ze(i),u=Fe(i),c=Me(i),p=this.transformInv_(l),f=this.transformInv_(h),d=this.transformInv_(u),_=this.transformInv_(c),g=10+(o?Math.max(0,Math.ceil(Mt(Ie(i)/(o*o*256*256)))):0);if(this.addQuad_(l,h,u,c,p,f,d,_,g),this.wrapsXInSource_){var y=1/0;this.triangles_.forEach((function(t,e,i){y=Math.min(y,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-y>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-y>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-y>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-y>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var i=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-i.5&&u<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=We(fe([t,e,i,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&u&&(f=u>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||Xe(h,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(r[0])&&isFinite(r[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(r[0])&&isFinite(r[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var _=[(t[0]+i[0])/2,(t[1]+i[1])/2],g=this.transformInv_(_),y=void 0;if(p)y=(Dt(r[0],c)+Dt(s[0],c))/2-Dt(g[0],c);else y=(r[0]+s[0])/2-g[0];var v=(r[1]+s[1])/2-g[1];f=y*y+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var m=[(e[0]+i[0])/2,(e[1]+i[1])/2],x=this.transformInv_(m),S=[(n[0]+t[0])/2,(n[1]+t[1])/2],C=this.transformInv_(S);this.addQuad_(t,e,m,S,r,o,x,C,l-1),this.addQuad_(S,m,i,n,C,x,s,a,l-1)}else{var w=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(w),b=[(i[0]+n[0])/2,(i[1]+n[1])/2],T=this.transformInv_(b);this.addQuad_(t,w,b,n,r,E,T,a,l-1),this.addQuad_(w,e,i,b,E,o,s,T,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,i,n,r,s,a),0==(14&d)&&this.addTriangle_(t,i,e,r,s,o),d&&(0==(13&d)&&this.addTriangle_(e,n,t,o,a,r),0==(7&d)&&this.addTriangle_(e,n,i,o,a,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,i,n){var r=e.source;be(t,r[0]),be(t,r[1]),be(t,r[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Xa={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1};function Na(t,e,i,n,r){t.beginPath(),t.moveTo(0,0),t.lineTo(e,i),t.lineTo(n,r),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(e,n)+1,Math.max(i,r)),t.restore()}function Ka(t,e){return Math.abs(t[4*e]-210)>2||Math.abs(t[4*e+3]-191.25)>2}function Ya(t,e,i,n){var r=_i(i,e,t),o=hi(e,n,i),s=e.getMetersPerUnit();void 0!==s&&(o*=s);var a=t.getMetersPerUnit();void 0!==a&&(o/=a);var l=t.getExtent();if(!l||ye(l,r)){var h=hi(t,o,r)/o;isFinite(h)&&h>0&&(o/=h)}return o}function Za(t,e,i,n,r,o,s,a,l,h,u,c){var p=rt(Math.round(i*t),Math.round(i*e));if(d(p,c),0===l.length)return p.canvas;function f(t){return Math.round(t*i)/i}p.scale(i,i),p.globalCompositeOperation="lighter";var _=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,i){var n,r;n=_,(r=t.extent)[0]n[2]&&(n[2]=r[2]),r[1]n[3]&&(n[3]=r[3])}));var g=We(_),y=ke(_),v=rt(Math.round(i*g/n),Math.round(i*y/n));d(v,c);var m=i/n;l.forEach((function(t,e,i){var n=t.extent[0]-_[0],r=-(t.extent[3]-_[3]),o=We(t.extent),s=ke(t.extent);t.image.width>0&&t.image.height>0&&v.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,n*m,r*m,o*m,s*m)}));var x=Ge(s);return a.getTriangles().forEach((function(t,e,r){var s=t.source,a=t.target,l=s[0][0],h=s[0][1],u=s[1][0],d=s[1][1],g=s[2][0],y=s[2][1],m=f((a[0][0]-x[0])/o),S=f(-(a[0][1]-x[1])/o),C=f((a[1][0]-x[0])/o),w=f(-(a[1][1]-x[1])/o),E=f((a[2][0]-x[0])/o),b=f(-(a[2][1]-x[1])/o),T=l,R=h;l=0,h=0;var O=function(t){for(var e=t.length,i=0;ir&&(r=s,n=o)}if(0===r)return null;var a=t[n];t[n]=t[i],t[i]=a;for(var l=i+1;l=0;p--){c[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*c[p]}return c}([[u-=T,d-=R,0,0,C-m],[g-=T,y-=R,0,0,E-m],[0,0,u,d,w-S],[0,0,g,y,b-S]]);if(O){if(p.save(),p.beginPath(),function(){if(void 0===Ga){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Na(t,4,5,4,0),Na(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;Ga=Ka(e,0)||Ka(e,4)||Ka(e,8)}return Ga}()||c===Xa){p.moveTo(C,w);for(var P=m-C,I=S-w,M=0;M<4;M++)p.lineTo(C+f((M+1)*P/4),w+f(M*I/3)),3!=M&&p.lineTo(C+f((M+1)*P/4),w+f((M+1)*I/3));p.lineTo(E,b)}else p.moveTo(C,w),p.lineTo(m,S),p.lineTo(E,b);p.clip(),p.transform(O[0],O[2],O[1],O[3],m,S),p.translate(_[0]-T,_[3]-R),p.scale(n/i,-n/i),p.drawImage(v.canvas,0,0),p.restore()}})),u&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,a.getTriangles().forEach((function(t,e,i){var n=t.target,r=(n[0][0]-x[0])/o,s=-(n[0][1]-x[1])/o,a=(n[1][0]-x[0])/o,l=-(n[1][1]-x[1])/o,h=(n[2][0]-x[0])/o,u=-(n[2][1]-x[1])/o;p.beginPath(),p.moveTo(a,l),p.lineTo(r,s),p.lineTo(h,u),p.closePath(),p.stroke()})),p.restore()),p.canvas}var Ba=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Va=function(t){function e(e,i,n,r,o,s,a,l,h,u,c,p){var f=t.call(this,o,hs)||this;f.renderEdges_=void 0!==c&&c,f.contextOptions_=p,f.pixelRatio_=a,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=i,f.targetTileGrid_=r,f.wrappedTileCoord_=s||o,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=r.getTileCoordExtent(f.wrappedTileCoord_),_=f.targetTileGrid_.getExtent(),g=f.sourceTileGrid_.getExtent(),y=_?je(d,_):d;if(0===Ie(y))return f.state=fs,f;var v=e.getExtent();v&&(g=g?je(g,v):v);var m=r.getResolution(f.wrappedTileCoord_[0]),x=function(t,e,i,n){var r=Le(i),o=Ya(t,e,r,n);return(!isFinite(o)||o<=0)&&Pe(i,(function(i){return o=Ya(t,e,i,n),isFinite(o)&&o>0})),o}(e,n,y,m);if(!isFinite(x)||x<=0)return f.state=fs,f;var S=void 0!==u?u:.5;if(f.triangulation_=new Wa(e,n,y,g,x*S,m),0===f.triangulation_.getTriangles().length)return f.state=fs,f;f.sourceZ_=i.getZForResolution(x);var C=f.triangulation_.calculateSourceExtent();if(g&&(e.canWrapX()?(C[1]=Pt(C[1],g[1],g[3]),C[3]=Pt(C[3],g[1],g[3])):C=je(C,g)),Ie(C)){for(var w=i.getTileRangeForExtentAndZ(C,f.sourceZ_),E=w.minX;E<=w.maxX;E++)for(var b=w.minY;b<=w.maxY;b++){var T=h(f.sourceZ_,E,b,a);T&&f.sourceTiles_.push(T)}0===f.sourceTiles_.length&&(f.state=fs)}else f.state=fs;return f}return Ba(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,i,n){e&&e.getState()==cs&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=ps;else{var e=this.wrappedTileCoord_[0],i=this.targetTileGrid_.getTileSize(e),n="number"==typeof i?i:i[0],r="number"==typeof i?i:i[1],o=this.targetTileGrid_.getResolution(e),s=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Za(n,r,this.pixelRatio_,s,this.sourceTileGrid_.getExtent(),o,a,this.triangulation_,t,this.gutter_,this.renderEdges_,this.contextOptions_),this.state=cs}this.changed()},e.prototype.load=function(){if(this.state==hs){this.state=us,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,i,n){var r=e.getState();if(r==hs||r==us){t++;var o=F(e,S,(function(i){var n=e.getState();n!=cs&&n!=ps&&n!=fs||(A(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,i){t.getState()==hs&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(A),this.sourcesListenerKeys_=null},e}(ka),Ua=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var i=this.entries_[t];return pe(void 0!==i,15),i===this.newest_||(i===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.newest_,this.newest_.newer=i,this.newest_=i),i.value_},t.prototype.remove=function(t){var e=this.entries_[t];return pe(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){pe(!(t in this.entries_),16);var i={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=i:this.oldest_=i,this.newest_=i,this.entries_[t]=i,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Ha(t,e,i,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=i,n):[t,e,i]}function qa(t,e,i){return t+"/"+e+"/"+i}function Ja(t){return qa(t[0],t[1],t[2])}var Qa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),$a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Qa(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=function(t){return t.split("/").map(Number)}(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(Ja(e.tileCoord)),e.release())}.bind(this))}},e}(Ua),tl="tileloadstart",el="tileloadend",il="tileloaderror",nl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function rl(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var ol=function(t){function e(e){var i=t.call(this)||this;return i.projection_=li(e.projection),i.attributions_=rl(e.attributions),i.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,i.loading=!1,i.state_=void 0!==e.state?e.state:Nr,i.wrapX_=void 0!==e.wrapX&&e.wrapX,i}return nl(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolutions=function(){return j()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getContextOptions=function(){},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=rl(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(B),sl=function(){function t(t,e,i,n){this.minX=t,this.maxX=e,this.minY=i,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function al(t,e,i,n,r){return void 0!==r?(r.minX=t,r.maxX=e,r.minY=i,r.maxY=n,r):new sl(t,e,i,n)}var ll=sl,hl=[0,0,0],ul=function(){function t(t){var e,i,n,r;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,pe((e=this.resolutions_,i=!0,n=function(t,e){return e-t}||s,e.every((function(t,r){if(0===r)return!0;var o=n(e[r-1],t);return!(o>0||i&&0===o)}))),17),!t.origins)for(var o=0,a=this.resolutions_.length-1;o=this.minZoom;){if(e(a,2===this.zoomFactor_?al(r=Math.floor(r/2),r,o=Math.floor(o/2),o,i):this.getTileRangeForExtentAndZ(s,a,i)))return!0;--a}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,i){if(t[0]0?n:Math.max(s/a[0],o/a[1]),h=r+1,u=new Array(h),c=0;ci||i>e.getMaxZoom())return!1;var o,s=e.getExtent();return!(o=s?e.getTileRangeForExtentAndZ(s,i):e.getFullTileRange(i))||o.containsXY(n,r)}(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var i=this.getTileCacheForProjection(e);t>i.highWaterMark&&(i.highWaterMark=t)},e.prototype.useTile=function(t,e,i,n){},e}(ol),gl=function(t){function e(e,i){var n=t.call(this,e)||this;return n.tile=i,n}return dl(e,t),e}(n),yl=_l;function vl(t,e){var i=/\{z\}/g,n=/\{x\}/g,r=/\{y\}/g,o=/\{-y\}/g;return function(s,a,l){return s?t.replace(i,s[0].toString()).replace(n,s[1].toString()).replace(r,s[2].toString()).replace(o,(function(){var t=s[0],i=e.getFullTileRange(t);return pe(i,55),(i.getHeight()-s[2]-1).toString()})):void 0}}function ml(t,e){for(var i=t.length,n=new Array(i),r=0;rOpenStreetMap contributors.'];var r=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:i,cacheSize:n.cacheSize,crossOrigin:r,imageSmoothing:n.imageSmoothing,opaque:void 0===n.opaque||n.opaque,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,url:o,wrapX:n.wrapX,attributionsCollapsible:!1})||this}return Rl(e,t),e}(Tl),Pl="bottom-left",Il="bottom-center",Ml="bottom-right",Fl="center-left",Ll="center-center",Al="center-right",Dl="top-left",kl="top-center",jl="top-right";function Gl(t){return(Gl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var zl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Wl="element",Xl="map",Nl="offset",Kl="position",Yl="positioning",Zl=function(t){function e(e){var i=t.call(this)||this;i.options=e,i.id=e.id,i.insertFirst=void 0===e.insertFirst||e.insertFirst,i.stopEvent=void 0===e.stopEvent||e.stopEvent,i.element=document.createElement("div"),i.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",i.element.style.position="absolute",i.element.style.pointerEvents="auto";var n=e.autoPan;return n&&"object"!==Gl(n)&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),i.autoPan=n||!1,i.rendered={transform_:"",visible:!0},i.mapPostrenderListenerKey=null,i.addEventListener(Z(Wl),i.handleElementChanged),i.addEventListener(Z(Xl),i.handleMapChanged),i.addEventListener(Z(Nl),i.handleOffsetChanged),i.addEventListener(Z(Kl),i.handlePositionChanged),i.addEventListener(Z(Yl),i.handlePositioningChanged),void 0!==e.element&&i.setElement(e.element),i.setOffset(void 0!==e.offset?e.offset:[0,0]),i.setPositioning(void 0!==e.positioning?e.positioning:Dl),void 0!==e.position&&i.setPosition(e.position),i}return zl(e,t),e.prototype.getElement=function(){return this.get(Wl)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(Xl)},e.prototype.getOffset=function(){return this.get(Nl)},e.prototype.getPosition=function(){return this.get(Kl)},e.prototype.getPositioning=function(){return this.get(Yl)},e.prototype.handleElementChanged=function(){ht(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(lt(this.element),A(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=F(t,V,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(Wl,t)},e.prototype.setMap=function(t){this.set(Xl,t)},e.prototype.setOffset=function(t){this.set(Nl,t)},e.prototype.setPosition=function(t){this.set(Kl,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(Kl)){var i=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),r=this.getRect(n,[ot(n),st(n)]),o=t||{},s=void 0===o.margin?20:o.margin;if(!ve(i,r)){var a=r[0]-i[0],l=i[2]-r[2],h=r[1]-i[1],u=i[3]-r[3],c=[0,0];if(a<0?c[0]=a-s:l<0&&(c[0]=Math.abs(l)+s),h<0?c[1]=h-s:u<0&&(c[1]=Math.abs(u)+s),0!==c[0]||0!==c[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p),d=[f[0]+c[0],f[1]+c[1]],_=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:_.duration,easing:_.easing})}}}},e.prototype.getRect=function(t,e){var i=t.getBoundingClientRect(),n=i.left+window.pageXOffset,r=i.top+window.pageYOffset;return[n,r,n+e[0],r+e[1]]},e.prototype.setPositioning=function(t){this.set(Yl,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var i=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(i,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var i=this.element.style,n=this.getOffset(),r=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",s=Math.round(t[1]+n[1])+"px",a="0%",l="0%";r==Ml||r==Al||r==jl?a="-100%":r!=Il&&r!=Ll&&r!=kl||(a="-50%"),r==Pl||r==Il||r==Ml?l="-100%":r!=Fl&&r!=Ll&&r!=Al||(l="-50%");var h="translate("+a+", "+l+") translate("+o+", "+s+")";this.rendered.transform_!=h&&(this.rendered.transform_=h,i.transform=h,i.msTransform=h)},e.prototype.getOptions=function(){return this.options},e}(B),Bl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),Vl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ul=function(t){function e(e){var i=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(i=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_={},i.hitDetectionCanvas_=null,i.fill_=void 0!==e.fill?e.fill:null,i.origin_=[0,0],i.points_=e.points,i.radius_=void 0!==e.radius?e.radius:e.radius1,i.radius2_=e.radius2,i.angle_=void 0!==e.angle?e.angle:0,i.stroke_=void 0!==e.stroke?e.stroke:null,i.anchor_=null,i.size_=null,i.imageSize_=null,i.hitDetectionImageSize_=null,i.render(),i}return Vl(e,t),e.prototype.clone=function(){var t=new e({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(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionCanvas_){var t=this.createRenderOptions();this.createHitDetectionCanvas_(t)}return this.hitDetectionCanvas_},e.prototype.getImage=function(t){if(!this.canvas_[t||1]){var e=this.createRenderOptions(),i=rt(e.size*t||1,e.size*t||1);this.draw_(e,i,0,0,t||1),this.canvas_[t||1]=i.canvas}return this.canvas_[t||1]},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return tr},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.createRenderOptions=function(){var t,e=qr,i=Qr,n=0,r=null,o=0,s=0;return this.stroke_&&(null===(t=this.stroke_.getColor())&&(t=$r),t=Vr(t),void 0===(s=this.stroke_.getWidth())&&(s=1),r=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(i=this.stroke_.getLineJoin())&&(i=Qr),void 0===(e=this.stroke_.getLineCap())&&(e=qr),void 0===(n=this.stroke_.getMiterLimit())&&(n=10)),{strokeStyle:t,strokeWidth:s,size:2*(this.radius_+s)+1,lineCap:e,lineDash:r,lineDashOffset:o,lineJoin:i,miterLimit:n}},e.prototype.render=function(){var t=this.createRenderOptions(),e=rt(t.size,t.size);this.draw_(t,e,0,0,1),this.canvas_[1]=e.canvas;var i=e.canvas.width,n=i,r=this.getDisplacement();this.hitDetectionImageSize_=[t.size,t.size],this.createHitDetectionCanvas_(t),this.anchor_=[i/2-r[0],i/2+r[1]],this.size_=[i,i],this.imageSize_=[n,n]},e.prototype.draw_=function(t,e,i,n,r){var o,s,a;e.setTransform(r,0,0,r,0,0),e.translate(i,n),e.beginPath();var l=this.points_;if(l===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var h=void 0!==this.radius2_?this.radius2_:this.radius_;for(h!==this.radius_&&(l*=2),o=0;o<=l;o++)s=2*o*Math.PI/l-Math.PI/2+this.angle_,a=o%2==0?this.radius_:h,e.lineTo(t.size/2+a*Math.cos(s),t.size/2+a*Math.sin(s))}if(this.fill_){var u=this.fill_.getColor();null===u&&(u=Hr),e.fillStyle=Vr(u),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionCanvas_=this.getImage(1),this.fill_){var e=this.fill_.getColor(),i=0;if("string"==typeof e&&(e=ur(e)),null===e?i=1:Array.isArray(e)&&(i=4===e.length?e[3]:1),0===i){var n=rt(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,i,n){e.translate(i,n),e.beginPath();var r=this.points_;if(r===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(r*=2);var s=void 0,a=void 0,l=void 0;for(s=0;s<=r;s++)l=2*s*Math.PI/r-Math.PI/2+this.angle_,a=s%2==0?this.radius_:o,e.lineTo(t.size/2+a*Math.cos(l),t.size/2+a*Math.sin(l))}e.fillStyle=Hr,e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(nr),Hl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ql=function(t){function e(e){var i=e||{};return t.call(this,{points:1/0,fill:i.fill,radius:i.radius,stroke:i.stroke,displacement:void 0!==i.displacement?i.displacement:[0,0]})||this}return Hl(e,t),e.prototype.clone=function(){var t=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Ul),Jl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}();function Ql(t){return(Ql="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var $l=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=ih,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"===Ql(e)&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=ih,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();var th=null;function eh(t,e){if(!th){var i=new Jl({color:"rgba(255,255,255,0.4)"}),n=new Bl({color:"#3399CC",width:1.25});th=[new $l({image:new ql({fill:i,stroke:n,radius:5}),fill:i,stroke:n})]}return th}function ih(t){return t.getGeometry()}var nh=$l,rh="preload",oh="useInterimTilesOnError",sh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ah=function(t){function e(e){var i=this,n=e||{},r=d({},n);return delete r.preload,delete r.useInterimTilesOnError,(i=t.call(this,r)||this).setPreload(void 0!==n.preload?n.preload:0),i.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),i}return sh(e,t),e.prototype.getPreload=function(){return this.get(rh)},e.prototype.setPreload=function(t){this.set(rh,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(oh)},e.prototype.setUseInterimTilesOnError=function(t){this.set(oh,t)},e}(Zr),lh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),hh=function(t){function e(e){var i=t.call(this)||this;return i.boundHandleImageChange_=i.handleImageChange_.bind(i),i.layer_=e,i}return lh(e,t),e.prototype.getFeatures=function(t){return j()},e.prototype.prepareFrame=function(t){return j()},e.prototype.renderFrame=function(t,e){return j()},e.prototype.loadedTileCallback=function(t,e,i){t[e]||(t[e]={}),t[e][i.tileCoord.toString()]=i},e.prototype.createLoadedTileFinder=function(t,e,i){return function(n,r){var o=this.loadedTileCallback.bind(this,i,n);return t.forEachLoadedTile(e,n,r,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,n,r){},e.prototype.getDataAtPixel=function(t,e,i){return j()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===tr&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=tr&&e!=er&&t.addEventListener(S,this.boundHandleImageChange_),e==Qn&&(t.load(),e=t.getState()),e==tr},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==Nr&&t.changed()},e}(k),uh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ch=function(t){function e(e){var i=t.call(this,e)||this;return i.container=null,i.renderedResolution,i.tempTransform=[1,0,0,1,0,0],i.pixelTransform=[1,0,0,1,0,0],i.inversePixelTransform=[1,0,0,1,0,0],i.context=null,i.containerReused=!1,i}return uh(e,t),e.prototype.useContainer=function(t,e,i){var n,r,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((a=t.firstElementChild)instanceof HTMLCanvasElement&&(r=a.getContext("2d")));if(!r||0!==r.canvas.width&&r.canvas.style.transform!==e?this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1):(this.container=t,this.context=r,this.containerReused=!0),!this.container){(n=document.createElement("div")).className=o;var s=n.style;s.position="absolute",s.width="100%",s.height="100%";var a=(r=rt()).canvas;n.appendChild(a),(s=a.style).position="absolute",s.left="0",s.transformOrigin="top left",this.container=n,this.context=r}},e.prototype.clip=function(t,e,i){var n=e.pixelRatio,r=e.size[0]*n/2,o=e.size[1]*n/2,s=e.viewState.rotation,a=Ge(i),l=ze(i),h=Fe(i),u=Me(i);Ki(e.coordinateToPixelTransform,a),Ki(e.coordinateToPixelTransform,l),Ki(e.coordinateToPixelTransform,h),Ki(e.coordinateToPixelTransform,u),t.save(),_o(t,-s,r,o),t.beginPath(),t.moveTo(a[0]*n,a[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(h[0]*n,h[1]*n),t.lineTo(u[0]*n,u[1]*n),t.clip(),_o(t,s,r,o)},e.prototype.clipUnrotated=function(t,e,i){var n=Ge(i),r=ze(i),o=Fe(i),s=Me(i);Ki(e.coordinateToPixelTransform,n),Ki(e.coordinateToPixelTransform,r),Ki(e.coordinateToPixelTransform,o),Ki(e.coordinateToPixelTransform,s);var a=this.inversePixelTransform;Ki(a,n),Ki(a,r),Ki(a,o),Ki(a,s),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(r[0]),Math.round(r[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(s[0]),Math.round(s[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,i){var n=this.getLayer();if(n.hasListener(t)){var r=new ko(t,this.inversePixelTransform,i,e);n.dispatchEvent(r)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(kr,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(jr,t,e)},e.prototype.getRenderTransform=function(t,e,i,n,r,o,s){var a=r/2,l=o/2,h=n/e,u=-h,c=-t[0]+s,p=-t[1];return Yi(this.tempTransform,a,l,h,u,-i,c,p)},e.prototype.getDataAtPixel=function(t,e,i){var n,r=Ki(this.inversePixelTransform,t.slice()),o=this.context;try{var s=Math.round(r[0]),a=Math.round(r[1]),l=document.createElement("canvas"),h=l.getContext("2d");l.width=1,l.height=1,h.clearRect(0,0,1,1),h.drawImage(o.canvas,s,a,1,1,0,0,1,1),n=h.getImageData(0,0,1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(hh),ph=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),fh=function(t){function e(e){var i=t.call(this,e)||this;return i.extentChanged=!0,i.renderedExtent_=null,i.renderedPixelRatio,i.renderedProjection=null,i.renderedRevision,i.renderedTiles=[],i.newTiles_=!1,i.tmpExtent=[1/0,1/0,-1/0,-1/0],i.tmpTileRange_=new ll(0,0,0,0),i}return ph(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),i=t.getState(),n=e.getUseInterimTilesOnError();return i==cs||i==fs||i==ps&&!n},e.prototype.getTile=function(t,e,i,n){var r=n.pixelRatio,o=n.viewState.projection,s=this.getLayer(),a=s.getSource().getTile(t,e,i,r,o);return a.getState()==ps&&(s.getUseInterimTilesOnError()?s.getPreload()>0&&(this.newTiles_=!0):a.setState(cs)),this.isDrawableTile(a)||(a=a.getInterimTile()),a},e.prototype.loadedTileCallback=function(e,i,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,i,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var i=t.layerStatesArray[t.layerIndex],n=t.viewState,r=n.projection,o=n.resolution,a=n.center,l=n.rotation,h=t.pixelRatio,u=this.getLayer(),c=u.getSource(),p=c.getRevision(),f=c.getTileGridForProjection(r),_=f.getZForResolution(o,c.zDirection),g=f.getResolution(_),y=t.extent,v=i.extent&&bi(i.extent,r);v&&(y=je(y,bi(i.extent,r)));var m=c.getTilePixelRatio(h),x=Math.round(t.size[0]*m),S=Math.round(t.size[1]*m);if(l){var C=Math.round(Math.sqrt(x*x+S*S));x=C,S=C}var w=g*x/2/m,E=g*S/2/m,b=[a[0]-w,a[1]-E,a[0]+w,a[1]+E],T=f.getTileRangeForExtentAndZ(y,_),R={};R[_]={};var O=this.createLoadedTileFinder(c,r,R),P=this.tmpExtent,I=this.tmpTileRange_;this.newTiles_=!1;for(var M=T.minX;M<=T.maxX;++M)for(var F=T.minY;F<=T.maxY;++F){var L=this.getTile(_,M,F,t);if(this.isDrawableTile(L)){var A=z(this);if(L.getState()==cs){R[_][L.tileCoord.toString()]=L;var D=L.inTransition(A);this.newTiles_||!D&&-1!==this.renderedTiles.indexOf(L)||(this.newTiles_=!0)}if(1===L.getAlpha(A,t.time))continue}var k=f.getTileCoordChildTileRange(L.tileCoord,I,P),j=!1;k&&(j=O(_+1,k)),j||f.forEachTileCoordParentTileRange(L.tileCoord,O,I,P)}var G=g/o;Yi(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/m,1/m,l,-x/2,-S/2);var W,X=(W=this.pixelTransform,et?Bi(W):(yo||(yo=rt(1,1).canvas),yo.style.transform=Bi(W),yo.style.transform));this.useContainer(e,X,i.opacity);var N=this.context,K=N.canvas;Zi(this.inversePixelTransform,this.pixelTransform),Yi(this.tempTransform,x/2,S/2,G,G,0,-x/2,-S/2),K.width!=x||K.height!=S?(K.width=x,K.height=S):this.containerReused||N.clearRect(0,0,x,S),v&&this.clipUnrotated(N,t,v),d(N,c.getContextOptions()),this.preRender(N,t),this.renderedTiles.length=0;var Y,Z,B,V=Object.keys(R).map(Number);V.sort(s),1!==i.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(Y=[],Z=[]):V=V.reverse();for(var U=V.length-1;U>=0;--U){var H=V[U],q=c.getTilePixelSize(H,h,r),J=f.getResolution(H)/g,Q=q[0]*J*G,$=q[1]*J*G,tt=f.getTileCoordForCoordAndZ(Ge(b),H),it=f.getTileCoordExtent(tt),nt=Ki(this.tempTransform,[m*(it[0]-b[0])/g,m*(b[3]-it[3])/g]),ot=m*c.getGutterForProjection(r),st=R[H];for(var at in st){var lt=(L=st[at]).tileCoord,ht=nt[0]-(tt[1]-lt[1])*Q,ut=Math.round(ht+Q),ct=nt[1]-(tt[2]-lt[2])*$,pt=Math.round(ct+$),ft=ut-(M=Math.round(ht)),dt=pt-(F=Math.round(ct)),_t=_===H;if(!(D=_t&&1!==L.getAlpha(z(this),t.time)))if(Y){N.save(),B=[M,F,M+ft,F,M+ft,F+dt,M,F+dt];for(var gt=0,yt=Y.length;gt=200&&a.status<300){var o=e.getType(),l=void 0;o==Th||o==Rh?l=a.responseText:o==Oh?(l=a.responseXML)||(l=(new DOMParser).parseFromString(a.responseText,"application/xml")):o==bh&&(l=a.response),l?i.call(this,e.readFeatures(l,{extent:r,featureProjection:s}),e.readProjection(l)):n.call(this)}else n.call(this)}.bind(this),a.onerror=function(){n.call(this)}.bind(this),a.send()}}(t,e,(function(t,e){"function"==typeof this.addFeatures&&this.addFeatures(t)}),f)}var Mh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Fh=function(t){function e(e,i){var n=t.call(this,e)||this;return n.feature=i,n}return Mh(e,t),e}(n),Lh=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,{attributions:n.attributions,projection:void 0,state:Nr,wrapX:void 0===n.wrapX||n.wrapX})||this).loader_=f,i.format_=n.format,i.overlaps_=void 0===n.overlaps||n.overlaps,i.url_=n.url,void 0!==n.loader?i.loader_=n.loader:void 0!==i.url_&&(pe(i.format_,7),i.loader_=Ih(i.url_,i.format_)),i.strategy_=void 0!==n.strategy?n.strategy:Eh;var r,o,s=void 0===n.useSpatialIndex||n.useSpatialIndex;return i.featuresRtree_=s?new mh:null,i.loadedExtentsRtree_=new mh,i.nullGeometryFeatures_={},i.idIndex_={},i.uidIndex_={},i.featureChangeKeys_={},i.featuresCollection_=null,Array.isArray(n.features)?o=n.features:n.features&&(o=(r=n.features).getArray()),s||void 0!==r||(r=new Yo(o)),void 0!==o&&i.addFeaturesInternal(o),void 0!==r&&i.bindFeaturesCollection_(r),i}return Mh(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=z(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var i=t.getGeometry();if(i){var n=i.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(n,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new Fh(xh,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[F(e,S,this.handleFeatureChange_,this),F(e,r,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var i=!0,n=e.getId();return void 0!==n&&(n.toString()in this.idIndex_?i=!1:this.idIndex_[n.toString()]=e),i&&(pe(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),i},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],i=[],n=[],r=0,o=t.length;rthis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.bufferedMaxExtent_=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,i=[Nh.SET_FILL_STYLE,e];return"string"!=typeof e&&i.push(!0),i},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Nh.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(e.call(this,t)),t.currentFillStyle=i)},e.prototype.updateStrokeStyle=function(t,e){var i=t.strokeStyle,n=t.lineCap,r=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,a=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=n||r!=t.currentLineDash&&!u(t.currentLineDash,r)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=a||t.currentMiterLimit!=l)&&(void 0!==i&&e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=n,t.currentLineDash=r,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=a,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Nh.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=_e(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;de(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(Br),Zh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Bh=function(t){function e(e,i,n,r){var o=t.call(this,e,i,n,r)||this;return o.declutterGroups_=null,o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o}return Zh(e,t),e.prototype.drawCoordinates_=function(t,e,i,n){return this.appendFlatCoordinates(t,e,i,n,!1,!1)},e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,n);this.instructions.push([Nh.DRAW_IMAGE,r,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,this.declutterGroups_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,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.hitDetectionInstructions.push([Nh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,n);this.instructions.push([Nh.DRAW_IMAGE,r,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,this.declutterGroups_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,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.hitDetectionInstructions.push([Nh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.finish=function(){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,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var i=t.getAnchor(),n=t.getSize(),r=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),s=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=i[0],this.anchorY_=i[1],this.declutterGroups_=e,this.hitDetectionImage_=r,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=s[0],this.originY_=s[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0]},e}(Yh),Vh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Uh=function(t){function e(e,i,n,r){return t.call(this,e,i,n,r)||this}return Vh(e,t),e.prototype.drawFlatCoordinates_=function(t,e,i,n){var r=this.coordinates.length,o=this.appendFlatCoordinates(t,e,i,n,!1,!1),s=[Nh.MOVE_TO_LINE_TO,r,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},e.prototype.drawLineString=function(t,e){var i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0!==n&&void 0!==r){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Nh.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],Wh);var o=t.getFlatCoordinates(),s=t.getStride();this.drawFlatCoordinates_(o,0,o.length,s),this.hitDetectionInstructions.push(zh),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0!==n&&void 0!==r){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Nh.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],Wh);for(var o=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),l=0,h=0,u=o.length;ht&&(y>g&&(g=y,d=v,_=o),y=0,v=o-r)),s=a,u=p,c=f),l=m,h=x}return(y+=a)>g?[v,o]:[d,_]}var $h=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),tu={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},eu={Circle:qh,Default:Yh,Image:Bh,LineString:Uh,Polygon:qh,Text:function(t){function e(e,i,n,r){var o=t.call(this,e,i,n,r)||this;return o.declutterGroups_,o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o}return $h(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var i=this.textFillState_,n=this.textStrokeState_,r=this.textState_;if(""!==this.text_&&r&&(i||n)){var o,s,a=this.coordinates.length,l=t.getType(),h=null,u=2,c=t.getStride();if(r.placement===Jh){if(!Xe(this.getBufferedMaxExtent(),t.getExtent()))return;var p=void 0;if(h=t.getFlatCoordinates(),l==Ze)p=[h.length];else if(l==He)p=t.getEnds();else if(l==Ve)p=t.getEnds().slice(0,1);else if(l==qe){var f=t.getEndss();for(p=[],o=0,s=f.length;od[d.length-n]}else p=t[e]>t[i-n];for(var _,g,y=r.length,v=t[e],m=t[e+1],x=t[e+=n],S=t[e+1],C=0,w=Math.sqrt(Math.pow(x-v,2)+Math.pow(S-m,2)),E=!1,b=0;b0?-Math.PI:Math.PI),void 0!==g){var M=I-g;if(E=E||0!==M,M+=M>Math.PI?-2*Math.PI:M<-Math.PI?2*Math.PI:0,Math.abs(M)>s)return null}g=I;var F=P/w,L=kt(v,x,F),A=kt(m,S,F);f[_]=[L,A,R/2,I,T],o+=R}return E?f:[[f[0][0],f[0][1],f[0][2],f[0][3],r]]}var ru=[1/0,1/0,-1/0,-1/0],ou=[1,0,0,1,0,0],su=[],au=[],lu=[],hu=[],uu=function(){function t(t,e,i,n,r){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.declutterItems=[],this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderBuffer_=r,this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}return t.prototype.createLabel=function(t,e,i,n){var r=t+e+i+n;if(this.labels_[r])return this.labels_[r];var o=n?this.strokeStates[n]:null,s=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],u=tu[a.textAlign||to],c=n&&o.lineWidth?o.lineWidth:0,p=t.split("\n"),f=p.length,d=[],_=function(t,e,i){for(var n=e.length,r=0,o=0;or.width?r.width-u:_,S=l+c>r.height?r.height-c:l,C=g[3]+x*f[0]+g[1],w=g[0]+S*f[1]+g[2],E=i-g[3],b=n-g[0];(m||0!==p)&&(su[0]=E,hu[0]=E,su[1]=b,au[1]=b,au[0]=E+C,lu[0]=au[0],lu[1]=b+w,hu[1]=lu[1]);var T=null;if(0!==p){var R=i+o,O=n+s;T=Yi(ou,R,O,1,1,p,-R,-O),Ki(ou,su),Ki(ou,au),Ki(ou,lu),Ki(ou,hu),Ce(Math.min(su[0],au[0],lu[0],hu[0]),Math.min(su[1],au[1],lu[1],hu[1]),Math.max(su[0],au[0],lu[0],hu[0]),Math.max(su[1],au[1],lu[1],hu[1]),ru)}else Ce(E,b,E+C,b+w,ru);var P=0,I=0;if(a){var M=this.renderBuffer_;M[0]=Math.max(M[0],We(ru)),P=M[0],M[1]=Math.max(M[1],ke(ru)),I=M[1]}var F=t.canvas,L=v?v[2]*f[0]/2:0,A=ru[0]-L<=(F.width+P)/e&&ru[2]+L>=-P/e&&ru[1]-L<=(F.height+I)/e&&ru[3]+L>=-I/e;if(d&&(i=Math.round(i),n=Math.round(n)),a){if(!A&&1==a[0])return!1;var D=A?[t,T?T.slice(0):null,h,r,u,c,x,S,i,n,f,ru.slice()]:null;D&&(m&&D.push(y,v,su.slice(0),au.slice(0),lu.slice(0),hu.slice(0)),a.push(D))}else A&&(m&&this.replayTextBackground_(t,su,au,lu,hu,y,v,!1),go(t,T,h,r,u,c,x,S,i,n,f));return!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=Ki(this.renderedTransform_,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(e[0]%i,e[1]%i),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.renderDeclutter=function(t,e,i,n){for(var r=[],o=1,s=t.length;o12&&this.replayTextBackground_(c[0],c[14],c[15],c[16],c[17],c[12],c[13],!0),go.apply(void 0,c),f!==i&&(p.globalAlpha=f)}}return t.length=1,n},t.prototype.drawLabelWithPointPlacement_=function(t,e,i,n){var r=this.textStates[e],o=this.createLabel(t,e,n,i),s=this.strokeStates[i],a=this.pixelRatio,l=tu[r.textAlign||to],h=tu[r.textBaseline||eo],u=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:l*(o.width/a-2*r.scale[0])+2*(.5-l)*u,anchorY:h*o.height/a+2*(.5-h)*u}},t.prototype.execute_=function(t,e,i,n,r,o,s){var a,l,h;this.declutterItems.length=0,this.pixelCoordinates_&&u(i,this.renderedTransform_)?a=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),a=Vi(this.coordinates,0,this.coordinates.length,2,i,this.pixelCoordinates_),l=this.renderedTransform_,h=i,l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5]);for(var c,p,f,d,_,g,y,v,m,x,S,C,w,E,b,T,R,O=0,P=n.length,I=0,M=0,F=0,L=null,A=null,D=this.coordinateCache_,k=this.viewRotation_,j=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,G={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:k},z=this.instructions!=n||this.overlaps?0:200;Oz&&(this.fill_(t),M=0),F>z&&(t.stroke(),F=0),M||F||(t.beginPath(),d=NaN,_=NaN),++O;break;case Nh.CIRCLE:var X=a[I=W[1]],N=a[I+1],K=a[I+2]-X,Y=a[I+3]-N,Z=Math.sqrt(K*K+Y*Y);t.moveTo(X+Z,N),t.arc(X,N,Z,0,2*Math.PI,!0),++O;break;case Nh.CLOSE_PATH:t.closePath(),++O;break;case Nh.CUSTOM:I=W[1],c=W[2];var B=W[3],V=W[4],U=6==W.length?W[5]:void 0;G.geometry=B,G.feature=b,O in D||(D[O]=[]);var H=D[O];U?U(a,I,c,2,H):(H[0]=a[I],H[1]=a[I+1],H.length=2),V(H,G),++O;break;case Nh.DRAW_IMAGE:I=W[1],c=W[2],x=W[3],p=W[4],f=W[5],m=o?null:W[6];var q=W[7],J=W[8],Q=W[9],$=W[10],tt=W[11],et=W[12],it=W[13],nt=W[14];if(!x&&W.length>=19){S=W[18],C=W[19],w=W[20],E=W[21];var rt=this.drawLabelWithPointPlacement_(S,C,w,E);x=rt.label,W[3]=x;var ot=W[22];p=(rt.anchorX-ot)*this.pixelRatio,W[4]=p;var st=W[23];f=(rt.anchorY-st)*this.pixelRatio,W[5]=f,q=x.height,W[7]=q,nt=x.width,W[14]=nt}var at=void 0;W.length>24&&(at=W[24]);var lt=void 0,ht=void 0,ut=void 0;W.length>16?(lt=W[15],ht=W[16],ut=W[17]):(lt=io,ht=!1,ut=!1),tt&&j?et+=k:tt||j||(et-=k);for(var ct=0,pt=0;I=o;)du(i,t+r,t+o),du(i,t+o,t+r),du(i,t-o,t+r),du(i,t-r,t+o),du(i,t-r,t-o),du(i,t-o,t-r),du(i,t+o,t-r),du(i,t+r,t-o),2*((s+=1+2*++o)-r)+1>0&&(s+=1-2*(r-=1));return fu[t]=i,i}(n);function f(t){for(var e=u.getImageData(0,0,a,a).data,i=0;i0){var s=void 0;return(!o||c!=Co&&c!=bo||-1!==o.indexOf(t))&&(s=r(t)),s||void u.clearRect(0,0,a,a)}}var d,_,g,y,v,m=Object.keys(this.executorsByZIndex_).map(Number);for(m.sort(s),d=m.length-1;d>=0;--d){var x=m[d].toString();for(g=this.executorsByZIndex_[x],_=cu.length-1;_>=0;--_)if(void 0!==(y=g[c=cu[_]])&&(v=y.executeHitDetection(u,l,i,f,h)))return v}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var i=e[0],n=e[1],r=e[2],o=e[3],s=[i,n,i,o,r,o,r,n];return Vi(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return y(this.executorsByZIndex_)},t.prototype.execute=function(t,e,i,n,r,o,a){var l=Object.keys(this.executorsByZIndex_).map(Number);l.sort(s),this.maxExtent_&&(t.save(),this.clip(t,i));var h,u,c,p,f,d,_=o||cu;for(h=0,u=l.length;h=r)for(n=r;n0&&(a.width=0),this.container;var h=Math.round(t.size[0]*i),u=Math.round(t.size[1]*i);a.width!=h||a.height!=u?(a.width=h,a.height=u,a.style.transform!==r&&(a.style.transform=r)):this.containerReused||o.clearRect(0,0,h,u),this.preRender(o,t);var c=t.extent,p=t.viewState,f=p.center,d=p.resolution,_=p.projection,g=p.rotation,y=_.getExtent(),v=this.getLayer().getSource(),m=!1;if(n.extent&&this.clipping){var x=bi(n.extent,_);(m=!ve(x,t.extent)&&Xe(x,t.extent))&&this.clipUnrotated(o,t,x)}var S=t.viewHints,C=!(S[gs]||S[ys]),w=this.getRenderTransform(f,d,g,i,h,u,0),E=this.getLayer().getDeclutter()?{}:null;if(l.execute(o,1,w,g,C,void 0,E),v.getWrapX()&&_.canWrapX()&&!ve(y,c)){for(var b=c[0],T=We(y),R=0,O=void 0;by[2];){O=T*++R;var I=this.getRenderTransform(f,d,g,i,h,u,O);l.execute(o,1,I,g,C,void 0,E),b-=T}}if(E){var M=t.viewHints;!function(t,e,i,n,r,o){for(var a=Object.keys(t).map(Number).sort(s),l=0,h=a.length;l0&&(c=d,o.push({items:d.declutterItems,opacity:n}))}}(E,o,g,1,!(M[gs]||M[ys]),t.declutterItems)}m&&o.restore(),this.postRender(o,t);var F=n.opacity,L=this.container;return F!==parseFloat(L.style.opacity)&&(L.style.opacity=1===F?"":String(F)),this.renderedRotation_!==p.rotation&&(this.renderedRotation_=p.rotation,this.hitDetectionImageData_=null),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e,i){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var n=[this.context.canvas.width,this.context.canvas.height];Ki(this.pixelTransform,n);var r=this.renderedCenter_,o=this.renderedResolution_,a=this.renderedRotation_,l=this.renderedProjection_,h=this.renderedExtent_,u=this.getLayer(),c=[],p=n[0]/2,f=n[1]/2;c.push(this.getRenderTransform(r,o,a,.5,p,f,0).slice());var d=u.getSource(),_=l.getExtent();if(d.getWrapX()&&l.canWrapX()&&!ve(_,h)){for(var g=h[0],y=We(_),v=0,m=void 0;g<_[0];)m=y*--v,c.push(this.getRenderTransform(r,o,a,.5,p,f,m).slice()),g+=y;for(v=0,g=h[2];g>_[2];)m=y*++v,c.push(this.getRenderTransform(r,o,a,.5,p,f,m).slice()),g-=y}this.hitDetectionImageData_=function(t,e,i,n,r,o,a){var l=rt(t[0]/2,t[1]/2);l.imageSmoothingEnabled=!1;for(var h=l.canvas,u=new mo(l,.5,r,null,a),c=i.length,p=Math.floor(16777215/c),f={},d=1;d<=c;++d){var _=i[d-1],g=_.getStyleFunction()||n;if(n){var y=g(_,o);if(y){Array.isArray(y)||(y=[y]);for(var v="#"+("000000"+(d*p).toString(16)).slice(-6),m=0,x=y.length;m=i[2])){var r=We(i),o=Math.floor((n[0]-i[0])/r)*r;t[0]-=o,t[2]-=o}return t}(y[0],h);S[0]v[0]&&S[2]>v[2]&&y.push([S[0]-m,S[1],S[2]-m,S[3]])}if(!this.dirty_&&this.renderedResolution_==u&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&ve(this.renderedExtent_,g))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var C,w=new iu(Po(u,c),g,u,c,e.getDeclutter()),E=Si();if(E){for(var b=0,T=y.length;b180)&&(i[0]=Dt(n+180,360)-180),i}},Eu={OSM:Ol,Vector:Lh,XYZ:Tl},bu={Icon:Er,Stroke:Bl,Style:nh}}}]); -//# sourceMappingURL=1.bundle.js.map \ No newline at end of file diff --git a/js/dist/1.bundle.js.map b/js/dist/1.bundle.js.map deleted file mode 100644 index 7a734b0..0000000 --- a/js/dist/1.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/rbush/rbush.js","webpack:///../src/events/Event.js","webpack:///src/ObjectEventType.js","webpack:///src/Disposable.js","webpack:///src/array.js","webpack:///src/functions.js","webpack:///src/obj.js","webpack:///../src/events/Target.js","webpack:///../src/events/EventType.js","webpack:///src/events.js","webpack:///src/Observable.js","webpack:///src/util.js","webpack:///src/Object.js","webpack:///src/MapEventType.js","webpack:///src/has.js","webpack:///src/dom.js","webpack:///../src/control/Control.js","webpack:///src/css.js","webpack:///src/easing.js","webpack:///../src/control/Rotate.js","webpack:///../src/proj/Units.js","webpack:///../src/proj/Projection.js","webpack:///src/math.js","webpack:///../src/proj/epsg3857.js","webpack:///../src/proj/epsg4326.js","webpack:///../src/proj/projections.js","webpack:///../src/proj/transforms.js","webpack:///../src/extent/Corner.js","webpack:///../src/extent/Relationship.js","webpack:///src/AssertionError.js","webpack:///src/asserts.js","webpack:///src/extent.js","webpack:///../src/geom/GeometryType.js","webpack:///src/sphere.js","webpack:///src/coordinate.js","webpack:///src/proj.js","webpack:///../src/control/ScaleLine.js","webpack:///../src/control/Zoom.js","webpack:///../src/geom/GeometryLayout.js","webpack:///src/transform.js","webpack:///../../src/geom/flat/transform.js","webpack:///../src/geom/Geometry.js","webpack:///../src/geom/SimpleGeometry.js","webpack:///../../src/geom/flat/closest.js","webpack:///../../src/geom/flat/deflate.js","webpack:///../../src/geom/flat/simplify.js","webpack:///../../src/geom/flat/inflate.js","webpack:///../../src/geom/flat/area.js","webpack:///../src/geom/LinearRing.js","webpack:///../src/geom/Point.js","webpack:///../../src/geom/flat/contains.js","webpack:///../../src/geom/flat/interiorpoint.js","webpack:///../../src/geom/flat/segments.js","webpack:///../../src/geom/flat/intersectsextent.js","webpack:///../../src/geom/flat/reverse.js","webpack:///../../src/geom/flat/orient.js","webpack:///../src/geom/Polygon.js","webpack:///../src/control/ZoomToExtent.js","webpack:///../../src/geom/flat/interpolate.js","webpack:///../../src/geom/flat/length.js","webpack:///../src/geom/LineString.js","webpack:///src/Feature.js","webpack:///../src/style/IconAnchorUnits.js","webpack:///../src/style/IconOrigin.js","webpack:///src/ImageState.js","webpack:///src/size.js","webpack:///../src/style/Image.js","webpack:///src/color.js","webpack:///../src/style/IconImageCache.js","webpack:///src/ImageBase.js","webpack:///src/Image.js","webpack:///../src/style/IconImage.js","webpack:///../src/style/Icon.js","webpack:///../src/layer/Property.js","webpack:///../src/layer/Base.js","webpack:///../src/render/EventType.js","webpack:///../src/source/State.js","webpack:///../src/layer/Layer.js","webpack:///../src/render/VectorContext.js","webpack:///src/colorlike.js","webpack:///../src/render/canvas.js","webpack:///../../src/render/canvas/Immediate.js","webpack:///../../src/render/canvas/BuilderType.js","webpack:///../src/renderer/vector.js","webpack:///../src/renderer/Map.js","webpack:///src/render.js","webpack:///../src/render/Event.js","webpack:///../src/renderer/Composite.js","webpack:///src/CollectionEventType.js","webpack:///src/Collection.js","webpack:///../src/layer/Group.js","webpack:///src/MapEvent.js","webpack:///src/MapBrowserEvent.js","webpack:///src/MapBrowserEventType.js","webpack:///../src/pointer/EventType.js","webpack:///src/MapBrowserEventHandler.js","webpack:///src/MapProperty.js","webpack:///../src/structs/PriorityQueue.js","webpack:///src/TileState.js","webpack:///src/TileQueue.js","webpack:///src/ViewHint.js","webpack:///src/ViewProperty.js","webpack:///../src/tilegrid/common.js","webpack:///src/centerconstraint.js","webpack:///src/resolutionconstraint.js","webpack:///src/rotationconstraint.js","webpack:///src/View.js","webpack:///src/PluggableMap.js","webpack:///../src/control/Attribution.js","webpack:///../src/interaction/Property.js","webpack:///../src/interaction/Interaction.js","webpack:///../src/interaction/DoubleClickZoom.js","webpack:///../src/interaction/Pointer.js","webpack:///../src/events/condition.js","webpack:///../src/interaction/DragPan.js","webpack:///../src/interaction/DragRotate.js","webpack:///../src/render/Box.js","webpack:///../src/interaction/DragBox.js","webpack:///../src/interaction/DragZoom.js","webpack:///../src/events/KeyCode.js","webpack:///../src/interaction/KeyboardPan.js","webpack:///../src/interaction/KeyboardZoom.js","webpack:///src/Kinetic.js","webpack:///../src/interaction/MouseWheelZoom.js","webpack:///../src/interaction/PinchRotate.js","webpack:///../src/interaction/PinchZoom.js","webpack:///src/Map.js","webpack:///src/control.js","webpack:///src/interaction.js","webpack:///src/Tile.js","webpack:///src/ImageTile.js","webpack:///src/reproj.js","webpack:///../src/reproj/Triangulation.js","webpack:///../src/source/common.js","webpack:///../src/reproj/Tile.js","webpack:///../src/reproj/common.js","webpack:///../src/structs/LRUCache.js","webpack:///src/tilecoord.js","webpack:///src/TileCache.js","webpack:///../src/source/TileEventType.js","webpack:///../src/source/Source.js","webpack:///src/TileRange.js","webpack:///../src/tilegrid/TileGrid.js","webpack:///src/tilegrid.js","webpack:///../src/source/Tile.js","webpack:///src/tileurlfunction.js","webpack:///../src/source/UrlTile.js","webpack:///../src/source/TileImage.js","webpack:///../src/source/XYZ.js","webpack:///../src/source/OSM.js","webpack:///src/OverlayPositioning.js","webpack:///src/Overlay.js","webpack:///../src/style/Stroke.js","webpack:///../src/style/RegularShape.js","webpack:///../src/style/Circle.js","webpack:///../src/style/Fill.js","webpack:///../src/style/Style.js","webpack:///../src/layer/TileProperty.js","webpack:///../src/layer/BaseTile.js","webpack:///../src/renderer/Layer.js","webpack:///../../src/renderer/canvas/Layer.js","webpack:///../../src/renderer/canvas/TileLayer.js","webpack:///../src/layer/Tile.js","webpack:///../src/structs/RBush.js","webpack:///../src/source/VectorEventType.js","webpack:///src/loadingstrategy.js","webpack:///../src/format/FormatType.js","webpack:///src/featureloader.js","webpack:///../src/source/Vector.js","webpack:///../src/layer/BaseVector.js","webpack:///../../src/render/canvas/Instruction.js","webpack:///../../src/render/canvas/Builder.js","webpack:///../../src/render/canvas/ImageBuilder.js","webpack:///../../src/render/canvas/LineStringBuilder.js","webpack:///../../src/render/canvas/PolygonBuilder.js","webpack:///../src/style/TextPlacement.js","webpack:///../../src/geom/flat/straightchunk.js","webpack:///../../src/render/canvas/TextBuilder.js","webpack:///../../src/render/canvas/BuilderGroup.js","webpack:///../../src/geom/flat/textpath.js","webpack:///../../src/render/canvas/Executor.js","webpack:///../../src/render/canvas/ExecutorGroup.js","webpack:///../../src/renderer/canvas/VectorLayer.js","webpack:///../../src/render/canvas/hitdetect.js","webpack:///../src/layer/Vector.js","webpack:///./js/src/lib/ol.js"],"names":["factory","quickselect","arr","k","left","right","compare","quickselectStep","length","defaultCompare","n","m","z","Math","log","s","exp","sd","sqrt","max","floor","min","t","i","j","swap","tmp","a","b","RBush","maxEntries","this","_maxEntries","_minEntries","ceil","clear","findItem","item","items","equalsFn","indexOf","calcBBox","node","toBBox","distBBox","children","p","destNode","createNode","minX","Infinity","minY","maxX","maxY","child","extend","leaf","compareNodeMinX","compareNodeMinY","bboxArea","bboxMargin","contains","intersects","height","multiSelect","stack","pop","mid","push","prototype","all","_all","data","search","bbox","result","nodesToSearch","childBBox","collides","load","insert","_build","slice","_splitRoot","tmpNode","_insert","remove","parent","goingUp","path","indexes","index","splice","_condense","compareMinX","compareMinY","toJSON","fromJSON","apply","N","M","pow","N2","N1","right2","right3","_chooseSubtree","level","minArea","minEnlargement","targetNode","area","enlargement","isNode","insertPath","_split","_adjustParentBBoxes","_chooseSplitAxis","splitIndex","_chooseSplitIndex","newNode","minOverlap","bbox1","bbox2","overlap","_allDistMargin","sort","leftBBox","rightBBox","margin","i$1","child$1","siblings","exports","module","define","propagate","Target","hasListener","listeners","BaseObject","canvas","Control","render","element","METERS_PER_UNIT","Units","dx","x","relationship","extendCoordinate","opt_output","options","_this","suffix","pointResolution","inElement","outElement","Geometry","SimpleGeometry","getLastCoordinate","stride","ends","offset","coordinatess","pointX","point2","point1","flatCoordinates","orientLinearRings","linearRing","getFlatCoordinates","Polygon","opt_size","r","ImageBase","ImageWrapper","getImage","IconImage","handleImageError_","anchorYUnits","assert","properties","state","BaseLayer","getExtent","Layer","VectorContext","drawGeometry","CanvasImmediateRenderer","geometry","context","textReplay","builderGroup","getBuilder","array","elem","layers","layer","PriorityQueue","tileKey","tile","undefined","opt_smooth","animation","View","PluggableMap","button","Attribution","Interaction","PointerInteraction","handleEvent","handleUpEvent","type","pointerType","mapBrowserEvent","RenderBox","endPixel","coordinates","getGeometry","DragBox","Tile","getKey","prev","ImageTile","source","entry","LRUCache","opt_tileCoord","Source","getState","TileSource","canExpireCache","tileUrlFunctions","tileCache","TileImage","getGutterForProjection","Overlay","radius","RegularShape","y","Style","image","style","frameState","topLeft","CanvasTileLayerRenderer","l","collection","VectorSource","updateWhileAnimating","BaseVectorLayer","getDeclutter","fillStyle","CanvasBuilder","acos","o","control","Rotate","ScaleLine","Zoom","ZoomToExtent","geom","LineString","Point","TileLayer","VectorLayer","proj","fromLonLat","toLonLat","OSM","Vector","XYZ","Icon","Stroke"],"mappings":"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","file":"1.bundle.js","sourcesContent":["(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.RBush = factory());\n}(this, function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) { swap(arr, left, right); }\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) { i++; }\n while (compare(arr[j], t) > 0) { j--; }\n }\n\n if (compare(arr[left], t) === 0) { swap(arr, left, j); }\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) { left = j + 1; }\n if (k <= j) { right = j - 1; }\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nvar RBush = function RBush(maxEntries) {\n if ( maxEntries === void 0 ) maxEntries = 9;\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n this.clear();\n};\n\nRBush.prototype.all = function all () {\n return this._all(this.data, []);\n};\n\nRBush.prototype.search = function search (bbox) {\n var node = this.data;\n var result = [];\n\n if (!intersects(bbox, node)) { return result; }\n\n var toBBox = this.toBBox;\n var nodesToSearch = [];\n\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) { result.push(child); }\n else if (contains(bbox, childBBox)) { this._all(child, result); }\n else { nodesToSearch.push(child); }\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n};\n\nRBush.prototype.collides = function collides (bbox) {\n var node = this.data;\n\n if (!intersects(bbox, node)) { return false; }\n\n var nodesToSearch = [];\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? this.toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) { return true; }\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n};\n\nRBush.prototype.load = function load (data) {\n if (!(data && data.length)) { return this; }\n\n if (data.length < this._minEntries) {\n for (var i = 0; i < data.length; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n};\n\nRBush.prototype.insert = function insert (item) {\n if (item) { this._insert(item, this.data.height - 1); }\n return this;\n};\n\nRBush.prototype.clear = function clear () {\n this.data = createNode([]);\n return this;\n};\n\nRBush.prototype.remove = function remove (item, equalsFn) {\n if (!item) { return this; }\n\n var node = this.data;\n var bbox = this.toBBox(item);\n var path = [];\n var indexes = [];\n var i, parent, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n var index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else { node = null; } // nothing found\n }\n\n return this;\n};\n\nRBush.prototype.toBBox = function toBBox (item) { return item; };\n\nRBush.prototype.compareMinX = function compareMinX (a, b) { return a.minX - b.minX; };\nRBush.prototype.compareMinY = function compareMinY (a, b) { return a.minY - b.minY; };\n\nRBush.prototype.toJSON = function toJSON () { return this.data; };\n\nRBush.prototype.fromJSON = function fromJSON (data) {\n this.data = data;\n return this;\n};\n\nRBush.prototype._all = function _all (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) { result.push.apply(result, node.children); }\n else { nodesToSearch.push.apply(nodesToSearch, node.children); }\n\n node = nodesToSearch.pop();\n }\n return result;\n};\n\nRBush.prototype._build = function _build (items, left, right, height) {\n\n var N = right - left + 1;\n var M = this._maxEntries;\n var node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M);\n var N1 = N2 * Math.ceil(Math.sqrt(M));\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (var i = left; i <= right; i += N1) {\n\n var right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (var j = i; j <= right2; j += N2) {\n\n var right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n};\n\nRBush.prototype._chooseSubtree = function _chooseSubtree (bbox, node, level, path) {\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) { break; }\n\n var minArea = Infinity;\n var minEnlargement = Infinity;\n var targetNode = (void 0);\n\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var area = bboxArea(child);\n var enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n};\n\nRBush.prototype._insert = function _insert (item, level, isNode) {\n var bbox = isNode ? item : this.toBBox(item);\n var insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else { break; }\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n};\n\n// split overflowed node into two\nRBush.prototype._split = function _split (insertPath, level) {\n var node = insertPath[level];\n var M = node.children.length;\n var m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) { insertPath[level - 1].children.push(newNode); }\n else { this._splitRoot(node, newNode); }\n};\n\nRBush.prototype._splitRoot = function _splitRoot (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n};\n\nRBush.prototype._chooseSplitIndex = function _chooseSplitIndex (node, m, M) {\n var index;\n var minOverlap = Infinity;\n var minArea = Infinity;\n\n for (var i = m; i <= M - m; i++) {\n var bbox1 = distBBox(node, 0, i, this.toBBox);\n var bbox2 = distBBox(node, i, M, this.toBBox);\n\n var overlap = intersectionArea(bbox1, bbox2);\n var area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index || M - m;\n};\n\n// sorts node children by the best axis for split\nRBush.prototype._chooseSplitAxis = function _chooseSplitAxis (node, m, M) {\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n var compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n var xMargin = this._allDistMargin(node, m, M, compareMinX);\n var yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) { node.children.sort(compareMinX); }\n};\n\n// total margin of all possible split distributions where each node is at least m full\nRBush.prototype._allDistMargin = function _allDistMargin (node, m, M, compare) {\n node.children.sort(compare);\n\n var toBBox = this.toBBox;\n var leftBBox = distBBox(node, 0, m, toBBox);\n var rightBBox = distBBox(node, M - m, M, toBBox);\n var margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n for (var i = m; i < M - m; i++) {\n var child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (var i$1 = M - m - 1; i$1 >= m; i$1--) {\n var child$1 = node.children[i$1];\n extend(rightBBox, node.leaf ? toBBox(child$1) : child$1);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n};\n\nRBush.prototype._adjustParentBBoxes = function _adjustParentBBoxes (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n};\n\nRBush.prototype._condense = function _condense (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings = (void 0); i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else { this.clear(); }\n\n } else { calcBBox(path[i], this.toBBox); }\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) { return items.indexOf(item); }\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) { return i; }\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) { destNode = createNode(null); }\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k; i < p; i++) {\n var child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX);\n var minY = Math.max(a.minY, b.minY);\n var maxX = Math.min(a.maxX, b.maxX);\n var maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right];\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) { continue; }\n\n var mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n\nreturn RBush;\n\n}));\n","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n }\n else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (opt_strict && res === 0));\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = typeof Object.assign === 'function'\n ? Object.assign\n : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n };\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = typeof Object.values === 'function'\n ? Object.values\n : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n };\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport { VOID } from '../functions.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {Object}\n */\n _this.pendingRemovals_ = null;\n /**\n * @private\n * @type {Object}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_ && this.listeners_[type];\n var propagate;\n if (listeners) {\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --dispatching[type];\n if (dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n if (!this.listeners_) {\n return false;\n }\n return opt_type\n ? opt_type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.on = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.once = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n Observable.prototype.un = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.4.3';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport { assign, isEmpty } from './obj.js';\nimport { getUid } from './util.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {Object}\n */\n _this.values_ = null;\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return (this.values_ && Object.keys(this.values_)) || [];\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return (this.values_ && assign({}, this.values_)) || {};\n };\n /**\n * @return {boolean} The object has properties.\n */\n BaseObject.prototype.hasProperties = function () {\n return !!this.values_;\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n var values = this.values_ || (this.values_ = {});\n if (opt_silent) {\n values[key] = value;\n }\n else {\n var oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (this.values_ && key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\n/**\n * @type {Object}\n */\nvar changeEventTypeCache = {};\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key)\n ? changeEventTypeCache[key]\n : (changeEventTypeCache[key] = 'change:' + key);\n}\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n};\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @param {Array=} opt_canvasPool Canvas pool to take existing canvas from.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool) {\n var canvas = opt_canvasPool && opt_canvasPool.length\n ? opt_canvasPool.shift()\n : WORKER_OFFSCREEN_CANVAS\n ? new OffscreenCanvas(opt_width || 300, opt_height || 300)\n : document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d'));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport { VOID } from '../functions.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { removeNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n var element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = element ? element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n if (options.render) {\n _this.render = options.render;\n }\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * Clean up.\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n var target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) { };\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n Control.prototype.setTarget = function (target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style\n * @property {string} variant\n * @property {string} weight\n * @property {string} size\n * @property {string} lineHeight\n * @property {string} family\n * @property {Array} families\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From http://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n//# sourceMappingURL=css.js.map","/**\n * @module ol/easing\n */\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Rotate.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n };\n return Rotate;\n}(Control));\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","/**\n * @module ol/proj/Units\n */\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nvar Units = {\n DEGREES: 'degrees',\n FEET: 'ft',\n METERS: 'm',\n PIXELS: 'pixels',\n TILE_PIXELS: 'tile-pixels',\n USFEET: 'us-ft',\n};\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport var METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = (2 * Math.PI * 6370997) / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\nexport default Units;\n//# sourceMappingURL=Units.js.map","/**\n * @module ol/proj/Projection\n */\nimport { METERS_PER_UNIT } from './Units.js';\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `{number}` view resolution and an `{import(\"../coordinate.js\").Coordinate}` as arguments, and returns\n * the `{number}` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj#getPointResolution} function will be used.\n */\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj~get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4~register} function.\n *\n * @api\n */\nvar Projection = /** @class */ (function () {\n /**\n * @param {Options} options Projection options.\n */\n function Projection(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ =\n options.worldExtent !== undefined ? options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ =\n options.axisOrientation !== undefined ? options.axisOrientation : 'enu';\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n Projection.prototype.canWrapX = function () {\n return this.canWrapX_;\n };\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n Projection.prototype.getCode = function () {\n return this.code_;\n };\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n Projection.prototype.getUnits = function () {\n return this.units_;\n };\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n Projection.prototype.getMetersPerUnit = function () {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n };\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getWorldExtent = function () {\n return this.worldExtent_;\n };\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n Projection.prototype.getAxisOrientation = function () {\n return this.axisOrientation_;\n };\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n Projection.prototype.isGlobal = function () {\n return this.global_;\n };\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n Projection.prototype.setGlobal = function (global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n };\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n Projection.prototype.getDefaultTileGrid = function () {\n return this.defaultTileGrid_;\n };\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n Projection.prototype.setDefaultTileGrid = function (tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n };\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Projection.prototype.setExtent = function (extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n };\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n Projection.prototype.setWorldExtent = function (worldExtent) {\n this.worldExtent_ = worldExtent;\n };\n /**\n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n Projection.prototype.setGetPointResolution = function (func) {\n this.getPointResolutionFunc_ = func;\n };\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n Projection.prototype.getPointResolutionFunc = function () {\n return this.getPointResolutionFunc_;\n };\n return Projection;\n}());\nexport default Projection;\n//# sourceMappingURL=Projection.js.map","/**\n * @module ol/math\n */\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport var cosh = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n }\n else {\n // … else, use the reference implementation of MDN:\n cosh = function (x) {\n var y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n})();\n/**\n * Return the base 2 logarithm of a given number. The method will use the\n * native `Math.log2` function if it is available, otherwise the base 2\n * logarithm will be calculated via the reference implementation of the\n * Mozilla developer network.\n *\n * @param {number} x X.\n * @return {number} Base 2 logarithm of x.\n */\nexport var log2 = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var log2;\n if ('log2' in Math) {\n // The environment supports the native Math.log2 function, use it…\n log2 = Math.log2;\n }\n else {\n // … else, use the reference implementation of MDN:\n log2 = function (x) {\n return Math.log(x) * Math.LOG2E;\n };\n }\n return log2;\n})();\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n }\n else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n var n = mat.length;\n for (var i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n var maxRow = i;\n var maxEl = Math.abs(mat[i][i]);\n for (var r = i + 1; r < n; r++) {\n var absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n // Swap max row with i-th (current) row\n var tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (var j = i + 1; j < n; j++) {\n var coef = -mat[j][i] / mat[i][i];\n for (var k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n }\n else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n // Solve Ax=b for upper triangular matrix A (mat)\n var x = new Array(n);\n for (var l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (var m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return (angleInRadians * 180) / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return (angleInDegrees * Math.PI) / 180;\n}\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n var r = a % b;\n return r * b < 0 ? r + b : r;\n}\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n//# sourceMappingURL=math.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg3857\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\nimport { cosh } from '../math.js';\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * @const\n * @type {number}\n */\nexport var HALF_SIZE = Math.PI * RADIUS;\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nvar EPSG3857Projection = /** @class */ (function (_super) {\n __extends(EPSG3857Projection, _super);\n /**\n * @param {string} code Code.\n */\n function EPSG3857Projection(code) {\n return _super.call(this, {\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n },\n }) || this;\n }\n return EPSG3857Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG:6.18:3:3857'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG::3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n var halfSize = HALF_SIZE;\n for (var i = 0; i < length; i += dimension) {\n output[i] = (halfSize * input[i]) / 180;\n var y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n if (y > halfSize) {\n y = halfSize;\n }\n else if (y < -halfSize) {\n y = -halfSize;\n }\n output[i + 1] = y;\n }\n return output;\n}\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (180 * input[i]) / HALF_SIZE;\n output[i + 1] =\n (360 * Math.atan(Math.exp(input[i + 1] / RADIUS))) / Math.PI - 90;\n }\n return output;\n}\n//# sourceMappingURL=epsg3857.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-180, -90, 180, 90];\n/**\n * @const\n * @type {number}\n */\nexport var METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nvar EPSG4326Projection = /** @class */ (function (_super) {\n __extends(EPSG4326Projection, _super);\n /**\n * @param {string} code Code.\n * @param {string=} opt_axisOrientation Axis orientation.\n */\n function EPSG4326Projection(code, opt_axisOrientation) {\n return _super.call(this, {\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT,\n }) || this;\n }\n return EPSG4326Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG::4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG:6.6:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('urn:x-ogc:def:crs:EPSG:4326', 'neu'),\n];\n//# sourceMappingURL=epsg4326.js.map","/**\n * @module ol/proj/projections\n */\n/**\n * @type {Object}\n */\nvar cache = {};\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return cache[code] || null;\n}\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n//# sourceMappingURL=projections.js.map","/**\n * @module ol/proj/transforms\n */\nimport { isEmpty } from '../obj.js';\n/**\n * @private\n * @type {!Object>}\n */\nvar transforms = {};\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n var transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n var transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n//# sourceMappingURL=transforms.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\n */\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n//# sourceMappingURL=Relationship.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","/**\n * @module ol/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]);\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./extent/Corner.js\").default} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = (resolution * size[0]) / 2;\n var dy = (resolution * size[1]) / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]);\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle',\n};\n//# sourceMappingURL=GeometryType.js.map","/**\n * @module ol/sphere\n */\nimport GeometryType from './geom/GeometryType.js';\nimport { toDegrees, toRadians } from './math.js';\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport var DEFAULT_RADIUS = 6371008.8;\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lat2 = toRadians(c2[1]);\n var deltaLatBy2 = (lat2 - lat1) / 2;\n var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) *\n Math.sin(deltaLonBy2) *\n Math.cos(lat1) *\n Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n var length = 0;\n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var length = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs-new.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n var area = 0;\n var len = coordinates.length;\n var x1 = coordinates[len - 1][0];\n var y1 = coordinates[len - 1][1];\n for (var i = 0; i < len; i++) {\n var x2 = coordinates[i][0];\n var y2 = coordinates[i][1];\n area +=\n toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return (area * radius * radius) / 2.0;\n}\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var area = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / radius;\n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n var lon = lon1 +\n Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n//# sourceMappingURL=sphere.js.map","/**\n * @module ol/coordinate\n */\nimport { getWidth } from './extent.js';\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + (r * dx) / d;\n var y = y0 + (r * dy) / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - deg * 3600 - min * 60;\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return (deg +\n '\\u00b0 ' +\n padNumber(min, 2) +\n '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) +\n '\\u2033' +\n (normalizedDegrees == 0\n ? ''\n : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0)));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return (degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n var worldWidth = getWidth(projection.getExtent());\n var worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number=} opt_sourceExtentWidth Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, opt_sourceExtentWidth) {\n var projectionExtent = projection.getExtent();\n var worldsAway = 0;\n if (projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])) {\n var sourceExtentWidth = opt_sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / sourceExtentWidth);\n }\n return worldsAway;\n}\n//# sourceMappingURL=coordinate.js.map","/**\n * @module ol/proj\n */\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj~addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj~addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { PROJECTIONS as EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326, } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport { add as addProj, clear as clearProj, get as getProj, } from './proj/projections.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc, } from './proj/transforms.js';\nimport { applyTransform, getWidth } from './extent.js';\nimport { clamp, modulo } from './math.js';\nimport { getDistance } from './sphere.js';\nimport { getWorldsAway } from './coordinate.js';\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\nexport { METERS_PER_UNIT };\nexport { Projection };\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n var output;\n if (opt_output !== undefined) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n }\n else {\n output = input.slice();\n }\n return output;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string'\n ? getProj(/** @type {string} */ (projectionLike))\n : /** @type {Projection} */ (projectionLike) || null;\n}\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {import(\"./proj/Units.js\").default=} opt_units Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n var pointResolution;\n var getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n var metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution =\n (pointResolution * metersPerUnit) / METERS_PER_UNIT[opt_units];\n }\n }\n }\n else {\n var units = projection.getUnits();\n if ((units == Units.DEGREES && !opt_units) || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n }\n else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));\n var vertices = [\n point[0] - resolution / 2,\n point[1],\n point[0] + resolution / 2,\n point[1],\n point[0],\n point[1] - resolution / 2,\n point[0],\n point[1] + resolution / 2,\n ];\n vertices = toEPSG4326_1(vertices, vertices, 2);\n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n var metersPerUnit = opt_units\n ? METERS_PER_UNIT[opt_units]\n : projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function (projection1) {\n projections2.forEach(function (projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n }\n else if (typeof projection === 'string') {\n return get(projection);\n }\n else {\n return /** @type {Projection} */ (projection);\n }\n}\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array=} opt_output Output.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output.\n */\n function (input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension !== undefined ? opt_dimension : 2;\n var output = opt_output !== undefined ? opt_output : new Array(length);\n for (var i = 0; i < length; i += dimension) {\n var point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (var j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n var sourceProj = get(source);\n var destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike=} opt_projection Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike=} opt_projection Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n var lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n var equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n else {\n var transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n var sourceCode = sourceProjection.getCode();\n var destinationCode = destinationProjection.getCode();\n var transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n var sourceProjection = get(source);\n var destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj~transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n var transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\n}\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n/**\n * @type {?Projection}\n */\nvar userProjection = null;\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @param {ProjectionLike} projection The user projection.\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n/**\n * Clear the user projection if set. Note that this method is not yet a part of\n * the stable API. Support for user projections is not yet complete and should\n * be considered experimental.\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @returns {?Projection} The user projection (or null if not set).\n */\nexport function getUserProjection() {\n return userProjection;\n}\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. Note that this\n * method is not yet a part of the stable API. Support for user projections is\n * not yet complete and should be considered experimental.\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @returns {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @returns {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destiation).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destiation).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n return function (coord) {\n var sourceX = coord[0];\n var sourceY = coord[1];\n var transformed, worldsAway;\n if (sourceProj.canWrapX()) {\n var sourceExtent = sourceProj.getExtent();\n var sourceExtentWidth = getWidth(sourceExtent);\n worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n if (worldsAway) {\n // Move x to the real world\n sourceX = sourceX - worldsAway * sourceExtentWidth;\n }\n sourceX = clamp(sourceX, sourceExtent[0], sourceExtent[2]);\n sourceY = clamp(sourceY, sourceExtent[1], sourceExtent[3]);\n transformed = transform([sourceX, sourceY]);\n }\n else {\n transformed = transform(coord);\n }\n if (worldsAway && destProj.canWrapX()) {\n // Move transformed coordinate back to the offset world\n transformed[0] += worldsAway * getWidth(destProj.getExtent());\n }\n return transformed;\n };\n}\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\naddCommon();\n//# sourceMappingURL=proj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport ProjUnits from '../proj/Units.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { METERS_PER_UNIT, getPointResolution } from '../proj.js';\nimport { assert } from '../asserts.js';\nimport { getChangeEventType } from '../Object.js';\n/**\n * @type {string}\n */\nvar UNITS_PROP = 'units';\n/**\n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,\n * `'nautical'`, `'metric'`, `'us'`.\n * @enum {string}\n */\nexport var Units = {\n DEGREES: 'degrees',\n IMPERIAL: 'imperial',\n NAUTICAL: 'nautical',\n METRIC: 'metric',\n US: 'us',\n};\n/**\n * @const\n * @type {Array}\n */\nvar LEADING_DIGITS = [1, 2, 5];\n/**\n * @const\n * @type {number}\n */\nvar DEFAULT_DPI = 25.4 / 0.28;\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-scale-line'] CSS Class name.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {import(\"./ScaleLine.js\").Units|string} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nvar ScaleLine = /** @class */ (function (_super) {\n __extends(ScaleLine, _super);\n /**\n * @param {Options=} opt_options Scale line options.\n */\n function ScaleLine(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var className = options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.innerElement_ = document.createElement('div');\n _this.innerElement_.className = className + '-inner';\n _this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n _this.element.appendChild(_this.innerElement_);\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n _this.viewState_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.renderedWidth_ = undefined;\n /**\n * @private\n * @type {string}\n */\n _this.renderedHTML_ = '';\n _this.addEventListener(getChangeEventType(UNITS_PROP), _this.handleUnitsChanged_);\n _this.setUnits(options.units || Units.METRIC);\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBar_ = options.bar || false;\n /**\n * @private\n * @type {number}\n */\n _this.scaleBarSteps_ = options.steps || 4;\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBarText_ = options.text || false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.dpi_ = options.dpi || undefined;\n return _this;\n }\n /**\n * Return the units to use in the scale line.\n * @return {import(\"./ScaleLine.js\").Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.getUnits = function () {\n return this.get(UNITS_PROP);\n };\n /**\n * @private\n */\n ScaleLine.prototype.handleUnitsChanged_ = function () {\n this.updateElement_();\n };\n /**\n * Set the units to use in the scale line.\n * @param {import(\"./ScaleLine.js\").Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.setUnits = function (units) {\n this.set(UNITS_PROP, units);\n };\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n ScaleLine.prototype.setDpi = function (dpi) {\n this.dpi_ = dpi;\n };\n /**\n * @private\n */\n ScaleLine.prototype.updateElement_ = function () {\n var viewState = this.viewState_;\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var center = viewState.center;\n var projection = viewState.projection;\n var units = this.getUnits();\n var pointResolutionUnits = units == Units.DEGREES ? ProjUnits.DEGREES : ProjUnits.METERS;\n var pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);\n var minWidth = (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n var nominalCount = minWidth * pointResolution;\n var suffix = '';\n if (units == Units.DEGREES) {\n var metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES];\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n }\n else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n }\n else {\n suffix = '\\u00b0'; // degrees\n }\n }\n else if (units == Units.IMPERIAL) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n }\n else if (units == Units.NAUTICAL) {\n pointResolution /= 1852;\n suffix = 'nm';\n }\n else if (units == Units.METRIC) {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n }\n else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n }\n else if (nominalCount < 1000) {\n suffix = 'm';\n }\n else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n }\n else if (units == Units.US) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n }\n else {\n assert(false, 33); // Invalid units\n }\n var i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n var count, width, decimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n var decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n else if (width >= minWidth) {\n break;\n }\n ++i;\n }\n var html;\n if (this.scaleBar_) {\n html = this.createScaleBar(width, count, suffix);\n }\n else {\n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n }\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n };\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @returns {string} The stringified HTML of the scalebar.\n */\n ScaleLine.prototype.createScaleBar = function (width, scale, suffix) {\n var mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();\n var scaleSteps = [];\n var stepWidth = width / this.scaleBarSteps_;\n var backgroundColor = '#ffffff';\n for (var i = 0; i < this.scaleBarSteps_; i++) {\n if (i === 0) {\n // create the first marker at position 0\n scaleSteps.push(this.createMarker('absolute', i));\n }\n scaleSteps.push('
' +\n '
' +\n '
' +\n this.createMarker('relative', i) +\n /*render text every second step, except when only 2 steps */\n (i % 2 === 0 || this.scaleBarSteps_ === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
');\n if (i === this.scaleBarSteps_ - 1) {\n {\n /*render text at the end */\n }\n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));\n }\n // switch colors of steps between black and white\n if (backgroundColor === '#ffffff') {\n backgroundColor = '#000000';\n }\n else {\n backgroundColor = '#ffffff';\n }\n }\n var scaleBarText;\n if (this.scaleBarText_) {\n scaleBarText =\n '
' +\n mapScale +\n '
';\n }\n else {\n scaleBarText = '';\n }\n var container = '
' +\n scaleBarText +\n scaleSteps.join('') +\n '
';\n return container;\n };\n /**\n * Creates a marker at given position\n * @param {string} position - The position, absolute or relative\n * @param {number} i - The iterator\n * @returns {string} The stringified div containing the marker\n */\n ScaleLine.prototype.createMarker = function (position, i) {\n var top = position === 'absolute' ? 3 : -10;\n return ('
');\n };\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i - The iterator\n * @param {number} width - The width the scalebar will currently use\n * @param {boolean} isLast - Flag indicating if we add the last step text\n * @param {number} scale - The current scale for the whole scalebar\n * @param {string} suffix - The suffix for the scale\n * @returns {string} The stringified div containing the step text\n */\n ScaleLine.prototype.createStepText = function (i, width, isLast, scale, suffix) {\n var length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n var lengthString = length + (i === 0 ? '' : ' ' + suffix);\n var margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n var minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return ('
' +\n lengthString +\n '
');\n };\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n ScaleLine.prototype.getScaleForResolution = function () {\n var resolution = getPointResolution(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center);\n var dpi = this.dpi_ || DEFAULT_DPI;\n var mpu = this.viewState_.projection.getMetersPerUnit();\n var inchesPerMeter = 39.37;\n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;\n };\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n ScaleLine.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n }\n else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n };\n return ScaleLine;\n}(Control));\nexport default ScaleLine;\n//# sourceMappingURL=ScaleLine.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM',\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/transform\n */\nimport { assert } from './asserts.js';\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n/**\n * @private\n * @type {Transform}\n */\nvar tmp_ = new Array(6);\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n var a1 = transform1[0];\n var b1 = transform1[1];\n var c1 = transform1[2];\n var d1 = transform1[3];\n var e1 = transform1[4];\n var f1 = transform1[5];\n var a2 = transform2[0];\n var b2 = transform2[1];\n var c2 = transform2[2];\n var d2 = transform2[3];\n var e2 = transform2[4];\n var f2 = transform2[5];\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n return transform1;\n}\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n var x = coordinate[0];\n var y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` porperty of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n var det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n var a = source[0];\n var b = source[1];\n var c = source[2];\n var d = source[3];\n var e = source[4];\n var f = source[5];\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n return target;\n}\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n/**\n * A string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n return 'matrix(' + mat.join(', ') + ')';\n}\n//# sourceMappingURL=transform.js.map","/**\n * @module ol/geom/flat/transform\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, create as createTransform, } from '../transform.js';\nimport { createEmpty, createOrUpdateEmpty, getHeight, returnOrUpdate, } from '../extent.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport { memoizeOne } from '../functions.js';\nimport { transform2D } from './flat/transform.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n var extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS\n ? function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport { rotate, scale, transform2D, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./GeometryLayout.js\").default}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {import(\"./GeometryLayout.js\").default} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {import(\"./GeometryLayout.js\").default} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return /** @type {import(\"./GeometryLayout.js\").default} */ (layout);\n}\n/**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n }\n else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/deflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\nimport { squaredDistance, squaredSegmentDistance } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined\n ? opt_simplifiedFlatCoordinates\n : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (var i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n var x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n var x3 = snap(flatCoordinates[offset], tolerance);\n var y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","/**\n * @module ol/geom/flat/inflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\n * @module ol/geom/flat/area\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LinearRing.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { containsXY, createOrUpdateFromCoordinate } from '../extent.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n return point;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // http://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n }\n else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { linearRingsContainsXY } from './contains.js';\nimport { numberSafeCompareFunction } from '../../array.js';\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\n return [pointX, y, maxSegmentLength];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/segments\n */\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n var point2 = [];\n var ret;\n for (; offset + stride < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment, } from '../../extent.js';\nimport { forEach as forEachSegment } from './segments.js';\nimport { linearRingContainsExtent, linearRingContainsXY } from './contains.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/reverse\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (var i = 0; i < stride; ++i) {\n var tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/a/1180256/2389327\n // https://en.wikipedia.org/wiki/Curve_orientation#Orientation_of_a_simple_polygon\n var firstVertexRepeated = true;\n for (var i = 0; i < stride; ++i) {\n if (flatCoordinates[offset + i] !== flatCoordinates[end - stride + i]) {\n firstVertexRepeated = false;\n break;\n }\n }\n if (firstVertexRepeated) {\n end -= stride;\n }\n var iMinVertex = findCornerVertex(flatCoordinates, offset, end, stride);\n // Orientation matrix:\n // [ 1 xa ya ]\n // O = | 1 xb yb |\n // [ 1 xc yc ]\n var iPreviousVertex = iMinVertex - stride;\n if (iPreviousVertex < offset) {\n iPreviousVertex = end - stride;\n }\n var iNextVertex = iMinVertex + stride;\n if (iNextVertex >= end) {\n iNextVertex = offset;\n }\n var aX = flatCoordinates[iPreviousVertex];\n var aY = flatCoordinates[iPreviousVertex + 1];\n var bX = flatCoordinates[iMinVertex];\n var bY = flatCoordinates[iMinVertex + 1];\n var cX = flatCoordinates[iNextVertex];\n var cY = flatCoordinates[iNextVertex + 1];\n var determinant = bX * cY + aX * bY + aY * cX - (aY * bX + bY * cX + aX * cY);\n return determinant < 0;\n}\n// Find vertex along one edge of bounding box.\n// In this case, we find smallest y; in case of tie also smallest x.\nfunction findCornerVertex(flatCoordinates, offset, end, stride) {\n var iMinVertex = -1;\n var minY = Infinity;\n var minXAtMinY = Infinity;\n for (var i = offset; i < end; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n if (y > minY) {\n continue;\n }\n if (y == minY) {\n if (x >= minXAtMinY) {\n continue;\n }\n }\n // Minimum so far.\n iMinVertex = i;\n minY = y;\n minXAtMinY = x;\n }\n return iMinVertex;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n//# sourceMappingURL=orient.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { modulo } from '../math.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { offset as sphereOffset } from '../sphere.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n Polygon.prototype.clone = function () {\n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Polygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n };\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n };\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\n };\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, (2 * Math.PI * i) / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ZoomToExtent\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { fromExtent as polygonFromExtent } from '../geom/Polygon.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoom-extent'] Class name.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string|HTMLElement} [label='E'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Fit to extent'] Text label to use for the button tip.\n * @property {import(\"../extent.js\").Extent} [extent] The extent to zoom to. If undefined the validity\n * extent of the view projection is used.\n */\n/**\n * @classdesc\n * A button control which, when pressed, changes the map view to a specific\n * extent. To style this control use the css selector `.ol-zoom-extent`.\n *\n * @api\n */\nvar ZoomToExtent = /** @class */ (function (_super) {\n __extends(ZoomToExtent, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function ZoomToExtent(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n /**\n * @type {?import(\"../extent.js\").Extent}\n * @protected\n */\n _this.extent = options.extent ? options.extent : null;\n var className = options.className !== undefined ? options.className : 'ol-zoom-extent';\n var label = options.label !== undefined ? options.label : 'E';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Fit to extent';\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(typeof label === 'string' ? document.createTextNode(label) : label);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n ZoomToExtent.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleZoomToExtent();\n };\n /**\n * @protected\n */\n ZoomToExtent.prototype.handleZoomToExtent = function () {\n var map = this.getMap();\n var view = map.getView();\n var extent = !this.extent\n ? view.getProjection().getExtent()\n : this.extent;\n view.fitInternal(polygonFromExtent(extent));\n };\n return ZoomToExtent;\n}(Control));\nexport default ZoomToExtent;\n//# sourceMappingURL=ZoomToExtent.js.map","/**\n * @module ol/geom/flat/interpolate\n */\nimport { binarySearch } from '../../array.js';\nimport { lerp } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array=} opt_dest Destination.\n * @param {number=} opt_dimension Destination dimension (default is `2`)\n * @return {Array} Destination.\n */\nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest, opt_dimension) {\n var o, t;\n var n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n }\n else if (n === 2) {\n o = offset;\n t = fraction;\n }\n else if (n !== 0) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length_1 = 0;\n var cumulativeLengths = [0];\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length_1);\n x1 = x2;\n y1 = y2;\n }\n var target = fraction * length_1;\n var index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n }\n else {\n o = offset + index * stride;\n }\n }\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var dest = opt_dest ? opt_dest : new Array(dimension);\n for (var i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {\n if (end == offset) {\n return null;\n }\n var coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n else if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n var lo = offset / stride;\n var hi = end / stride;\n while (lo < hi) {\n var mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n var m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n var m1 = flatCoordinates[(lo + 1) * stride - 1];\n var t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (var i = 0; i < stride - 1; ++i) {\n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));\n }\n coordinate.push(m);\n return coordinate;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {\n if (interpolate) {\n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);\n }\n var coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n else if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);\n }\n offset = end;\n }\n return null;\n}\n//# sourceMappingURL=interpolate.js.map","/**\n * @module ol/geom/flat/length\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length = 0;\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n var perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n var dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n//# sourceMappingURL=length.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { forEach as forEachSegment } from './flat/segments.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';\nimport { intersectsLineString } from './flat/intersectsextent.js';\nimport { lineStringLength } from './flat/length.js';\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nvar LineString = /** @class */ (function (_super) {\n __extends(LineString, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function LineString(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatMidpoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.flatMidpointRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n LineString.prototype.appendCoordinate = function (coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n }\n else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n */\n LineString.prototype.clone = function () {\n return new LineString(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n LineString.prototype.forEachSegment = function (callback) {\n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {\n if (this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);\n };\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @api\n */\n LineString.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_dest Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {\n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest, this.stride);\n };\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n LineString.prototype.getLength = function () {\n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @return {Array} Flat midpoint.\n */\n LineString.prototype.getFlatMidpoint = function () {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n */\n LineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LineString(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LineString.prototype.getType = function () {\n return GeometryType.LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n LineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LineString;\n}(SimpleGeometry));\nexport default LineString;\n//# sourceMappingURL=LineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addEventListener(getChangeEventType(_this.geometryName_), _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = new Feature(this.hasProperties() ? this.getProperties() : null);\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike=} opt_style Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/style/IconAnchorUnits\n */\n/**\n * Icon anchor units. One of 'fraction', 'pixels'.\n * @enum {string}\n */\nexport default {\n /**\n * Anchor is a fraction\n * @api\n */\n FRACTION: 'fraction',\n /**\n * Anchor is in pixels\n * @api\n */\n PIXELS: 'pixels',\n};\n//# sourceMappingURL=IconAnchorUnits.js.map","/**\n * @module ol/style/IconOrigin\n */\n/**\n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.\n * @enum {string}\n */\nexport default {\n /**\n * Origin is at bottom left\n * @api\n */\n BOTTOM_LEFT: 'bottom-left',\n /**\n * Origin is at bottom right\n * @api\n */\n BOTTOM_RIGHT: 'bottom-right',\n /**\n * Origin is at top left\n * @api\n */\n TOP_LEFT: 'top-left',\n /**\n * Origin is at top right\n * @api\n */\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=IconOrigin.js.map","/**\n * @module ol/ImageState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=ImageState.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","/**\n * @module ol/style/Image\n */\nimport { abstract } from '../util.js';\nimport { toSize } from '../size.js';\n/**\n * @typedef {Object} Options\n * @property {number} opacity\n * @property {boolean} rotateWithView\n * @property {number} rotation\n * @property {number|import(\"../size.js\").Size} scale\n * @property {Array} displacement\n */\n/**\n * @classdesc\n * A base class used for creating subclasses and not instantiated in\n * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} and\n * {@link module:ol/style/RegularShape~RegularShape}.\n * @abstract\n * @api\n */\nvar ImageStyle = /** @class */ (function () {\n /**\n * @param {Options} options Options.\n */\n function ImageStyle(options) {\n /**\n * @private\n * @type {number}\n */\n this.opacity_ = options.opacity;\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ = options.rotateWithView;\n /**\n * @private\n * @type {number}\n */\n this.rotation_ = options.rotation;\n /**\n * @private\n * @type {number|import(\"../size.js\").Size}\n */\n this.scale_ = options.scale;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n this.scaleArray_ = toSize(options.scale);\n /**\n * @private\n * @type {Array}\n */\n this.displacement_ = options.displacement;\n }\n /**\n * Clones the style.\n * @return {ImageStyle} The cloned style.\n * @api\n */\n ImageStyle.prototype.clone = function () {\n var scale = this.getScale();\n return new ImageStyle({\n opacity: this.getOpacity(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n displacement: this.getDisplacement().slice(),\n });\n };\n /**\n * Get the symbolizer opacity.\n * @return {number} Opacity.\n * @api\n */\n ImageStyle.prototype.getOpacity = function () {\n return this.opacity_;\n };\n /**\n * Determine whether the symbolizer rotates with the map.\n * @return {boolean} Rotate with map.\n * @api\n */\n ImageStyle.prototype.getRotateWithView = function () {\n return this.rotateWithView_;\n };\n /**\n * Get the symoblizer rotation.\n * @return {number} Rotation.\n * @api\n */\n ImageStyle.prototype.getRotation = function () {\n return this.rotation_;\n };\n /**\n * Get the symbolizer scale.\n * @return {number|import(\"../size.js\").Size} Scale.\n * @api\n */\n ImageStyle.prototype.getScale = function () {\n return this.scale_;\n };\n /**\n * Get the symbolizer scale array.\n * @return {import(\"../size.js\").Size} Scale array.\n */\n ImageStyle.prototype.getScaleArray = function () {\n return this.scaleArray_;\n };\n /**\n * Get the displacement of the shape\n * @return {Array} Shape's center displacement\n * @api\n */\n ImageStyle.prototype.getDisplacement = function () {\n return this.displacement_;\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @abstract\n * @return {Array} Anchor.\n */\n ImageStyle.prototype.getAnchor = function () {\n return abstract();\n };\n /**\n * Get the image element for the symbolizer.\n * @abstract\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getImage = function (pixelRatio) {\n return abstract();\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getHitDetectionImage = function () {\n return abstract();\n };\n /*\n * Get the image pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * */\n ImageStyle.prototype.getPixelRatio = function (pixelRatio) {\n return 1;\n };\n /**\n * @abstract\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n ImageStyle.prototype.getImageState = function () {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../size.js\").Size} Image size.\n */\n ImageStyle.prototype.getImageSize = function () {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../size.js\").Size} Size of the hit-detection image.\n */\n ImageStyle.prototype.getHitDetectionImageSize = function () {\n return abstract();\n };\n /**\n * Get the origin of the symbolizer.\n * @abstract\n * @return {Array} Origin.\n */\n ImageStyle.prototype.getOrigin = function () {\n return abstract();\n };\n /**\n * Get the size of the symbolizer (in pixels).\n * @abstract\n * @return {import(\"../size.js\").Size} Size.\n */\n ImageStyle.prototype.getSize = function () {\n return abstract();\n };\n /**\n * Set the opacity.\n *\n * @param {number} opacity Opacity.\n * @api\n */\n ImageStyle.prototype.setOpacity = function (opacity) {\n this.opacity_ = opacity;\n };\n /**\n * Set whether to rotate the style with the view.\n *\n * @param {boolean} rotateWithView Rotate with map.\n * @api\n */\n ImageStyle.prototype.setRotateWithView = function (rotateWithView) {\n this.rotateWithView_ = rotateWithView;\n };\n /**\n * Set the rotation.\n *\n * @param {number} rotation Rotation.\n * @api\n */\n ImageStyle.prototype.setRotation = function (rotation) {\n this.rotation_ = rotation;\n };\n /**\n * Set the scale.\n *\n * @param {number|import(\"../size.js\").Size} scale Scale.\n * @api\n */\n ImageStyle.prototype.setScale = function (scale) {\n this.scale_ = scale;\n this.scaleArray_ = toSize(scale);\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n ImageStyle.prototype.listenImageChange = function (listener) {\n abstract();\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageStyle.prototype.load = function () {\n abstract();\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n ImageStyle.prototype.unlistenImageChange = function (listener) {\n abstract();\n };\n return ImageStyle;\n}());\nexport default ImageStyle;\n//# sourceMappingURL=Image.js.map","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : color[3];\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return (HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0);\n}\n//# sourceMappingURL=color.js.map","/**\n * @module ol/style/IconImageCache\n */\nimport { asString } from '../color.js';\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.\n */\nvar IconImageCache = /** @class */ (function () {\n function IconImageCache() {\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.clear = function () {\n this.cache_ = {};\n this.cacheSize_ = 0;\n };\n /**\n * @return {boolean} Can expire cache.\n */\n IconImageCache.prototype.canExpireCache = function () {\n return this.cacheSize_ > this.maxCacheSize_;\n };\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.expire = function () {\n if (this.canExpireCache()) {\n var i = 0;\n for (var key in this.cache_) {\n var iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {import(\"./IconImage.js\").default} Icon image.\n */\n IconImageCache.prototype.get = function (src, crossOrigin, color) {\n var key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @param {import(\"./IconImage.js\").default} iconImage Icon image.\n */\n IconImageCache.prototype.set = function (src, crossOrigin, color, iconImage) {\n var key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n };\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n IconImageCache.prototype.setSize = function (maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\n };\n return IconImageCache;\n}());\n/**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n var colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\nexport default IconImageCache;\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport var shared = new IconImageCache();\n//# sourceMappingURL=IconImageCache.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { abstract } from './util.js';\n/**\n * @abstract\n */\nvar ImageBase = /** @class */ (function (_super) {\n __extends(ImageBase, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n function ImageBase(extent, resolution, pixelRatio, state) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = extent;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @protected\n * @type {number|undefined}\n */\n _this.resolution = resolution;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = state;\n return _this;\n }\n /**\n * @protected\n */\n ImageBase.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n ImageBase.prototype.getExtent = function () {\n return this.extent;\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n ImageBase.prototype.getImage = function () {\n return abstract();\n };\n /**\n * @return {number} PixelRatio.\n */\n ImageBase.prototype.getPixelRatio = function () {\n return this.pixelRatio_;\n };\n /**\n * @return {number} Resolution.\n */\n ImageBase.prototype.getResolution = function () {\n return /** @type {number} */ (this.resolution);\n };\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n ImageBase.prototype.getState = function () {\n return this.state;\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageBase.prototype.load = function () {\n abstract();\n };\n return ImageBase;\n}(EventTarget));\nexport default ImageBase;\n//# sourceMappingURL=ImageBase.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport { IMAGE_DECODE } from './has.js';\nimport { getHeight } from './extent.js';\nimport { listenOnce, unlistenByKey } from './events.js';\n/**\n * A function that takes an {@link module:ol/Image~Image} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~Image#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n function ImageWrapper(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {\n var _this = _super.call(this, extent, resolution, pixelRatio, ImageState.IDLE) || this;\n /**\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = ImageState.IDLE;\n /**\n * @private\n * @type {LoadFunction}\n */\n _this.imageLoadFunction_ = imageLoadFunction;\n return _this;\n }\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageWrapper.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageError_ = function () {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageLoad_ = function () {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n ImageWrapper.prototype.load = function () {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n ImageWrapper.prototype.setImage = function (image) {\n this.image_ = image;\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageWrapper.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageWrapper;\n}(ImageBase));\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n var img = /** @type {HTMLImageElement} */ (image);\n if (img.src && IMAGE_DECODE) {\n var promise = img.decode();\n var listening_1 = true;\n var unlisten = function () {\n listening_1 = false;\n };\n promise\n .then(function () {\n if (listening_1) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening_1) {\n // FIXME: Unconditionally call errorHandler() when this bug is fixed upstream:\n // https://bugs.webkit.org/show_bug.cgi?id=198527\n if (error.name === 'EncodingError' &&\n error.message === 'Invalid image type.') {\n loadHandler();\n }\n else {\n errorHandler();\n }\n }\n });\n return unlisten;\n }\n var listenerKeys = [\n listenOnce(img, EventType.LOAD, loadHandler),\n listenOnce(img, EventType.ERROR, errorHandler),\n ];\n return function unlisten() {\n listenerKeys.forEach(unlistenByKey);\n };\n}\nexport default ImageWrapper;\n//# sourceMappingURL=Image.js.map","/**\n * @module ol/style/IconImage\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventTarget from '../events/Target.js';\nimport EventType from '../events/EventType.js';\nimport ImageState from '../ImageState.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { shared as iconImageCache } from './IconImageCache.js';\nimport { listenImage } from '../Image.js';\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar taintedTestContext = null;\nvar IconImage = /** @class */ (function (_super) {\n __extends(IconImage, _super);\n /**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string|undefined} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n */\n function IconImage(image, src, size, crossOrigin, imageState, color) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.hitDetectionImage_ = null;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = !image ? new Image() : image;\n if (crossOrigin !== null) {\n /** @type {HTMLImageElement} */ (_this.image_).crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {Object}\n */\n _this.canvas_ = {};\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = color;\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"../ImageState.js\").default}\n */\n _this.imageState_ = imageState;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = size;\n /**\n * @private\n * @type {string|undefined}\n */\n _this.src_ = src;\n /**\n * @private\n */\n _this.tainted_;\n return _this;\n }\n /**\n * @private\n * @return {boolean} The image canvas is tainted.\n */\n IconImage.prototype.isTainted_ = function () {\n if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {\n if (!taintedTestContext) {\n taintedTestContext = createCanvasContext2D(1, 1);\n }\n taintedTestContext.drawImage(this.image_, 0, 0);\n try {\n taintedTestContext.getImageData(0, 0, 1, 1);\n this.tainted_ = false;\n }\n catch (e) {\n taintedTestContext = null;\n this.tainted_ = true;\n }\n }\n return this.tainted_ === true;\n };\n /**\n * @private\n */\n IconImage.prototype.dispatchChangeEvent_ = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageError_ = function () {\n this.imageState_ = ImageState.ERROR;\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageLoad_ = function () {\n this.imageState_ = ImageState.LOADED;\n if (this.size_) {\n this.image_.width = this.size_[0];\n this.image_.height = this.size_[1];\n }\n else {\n this.size_ = [this.image_.width, this.image_.height];\n }\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n */\n IconImage.prototype.getImage = function (pixelRatio) {\n this.replaceColor_(pixelRatio);\n return this.canvas_[pixelRatio] ? this.canvas_[pixelRatio] : this.image_;\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Image or Canvas element.\n */\n IconImage.prototype.getPixelRatio = function (pixelRatio) {\n this.replaceColor_(pixelRatio);\n return this.canvas_[pixelRatio] ? pixelRatio : 1;\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n IconImage.prototype.getImageState = function () {\n return this.imageState_;\n };\n /**\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n IconImage.prototype.getHitDetectionImage = function () {\n if (!this.hitDetectionImage_) {\n if (this.isTainted_()) {\n var width = this.size_[0];\n var height = this.size_[1];\n var context = createCanvasContext2D(width, height);\n context.fillRect(0, 0, width, height);\n this.hitDetectionImage_ = context.canvas;\n }\n else {\n this.hitDetectionImage_ = this.image_;\n }\n }\n return this.hitDetectionImage_;\n };\n /**\n * Get the size of the icon (in pixels).\n * @return {import(\"../size.js\").Size} Image size.\n */\n IconImage.prototype.getSize = function () {\n return this.size_;\n };\n /**\n * @return {string|undefined} Image src.\n */\n IconImage.prototype.getSrc = function () {\n return this.src_;\n };\n /**\n * Load not yet loaded URI.\n */\n IconImage.prototype.load = function () {\n if (this.imageState_ == ImageState.IDLE) {\n this.imageState_ = ImageState.LOADING;\n try {\n /** @type {HTMLImageElement} */ (this.image_).src = this.src_;\n }\n catch (e) {\n this.handleImageError_();\n }\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @private\n */\n IconImage.prototype.replaceColor_ = function (pixelRatio) {\n if (!this.color_ || this.canvas_[pixelRatio]) {\n return;\n }\n var canvas = document.createElement('canvas');\n this.canvas_[pixelRatio] = canvas;\n canvas.width = Math.ceil(this.image_.width * pixelRatio);\n canvas.height = Math.ceil(this.image_.height * pixelRatio);\n var ctx = canvas.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n ctx.drawImage(this.image_, 0, 0);\n if (this.isTainted_()) {\n // If reading from the canvas throws a SecurityError the same effect can be\n // achieved with globalCompositeOperation.\n // This could be used as the default, but it is not fully supported by all\n // browsers. E. g. Internet Explorer 11 does not support the multiply\n // operation and the resulting image shape will be completelly filled with\n // the provided color.\n // So this is only used as a fallback. It is still better than having no icon\n // at all.\n var c = this.color_;\n ctx.globalCompositeOperation = 'multiply';\n ctx.fillStyle = 'rgb(' + c[0] + ',' + c[1] + ',' + c[2] + ')';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.globalCompositeOperation = 'destination-in';\n ctx.drawImage(this.image_, 0, 0);\n return;\n }\n var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var data = imgData.data;\n var r = this.color_[0] / 255.0;\n var g = this.color_[1] / 255.0;\n var b = this.color_[2] / 255.0;\n for (var i = 0, ii = data.length; i < ii; i += 4) {\n data[i] *= r;\n data[i + 1] *= g;\n data[i + 2] *= b;\n }\n ctx.putImageData(imgData, 0, 0);\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n IconImage.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return IconImage;\n}(EventTarget));\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {IconImage} Icon image.\n */\nexport function get(image, src, size, crossOrigin, imageState, color) {\n var iconImage = iconImageCache.get(src, crossOrigin, color);\n if (!iconImage) {\n iconImage = new IconImage(image, src, size, crossOrigin, imageState, color);\n iconImageCache.set(src, crossOrigin, color, iconImage);\n }\n return iconImage;\n}\nexport default IconImage;\n//# sourceMappingURL=IconImage.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/style/Icon\n */\nimport EventType from '../events/EventType.js';\nimport IconAnchorUnits from './IconAnchorUnits.js';\nimport IconOrigin from './IconOrigin.js';\nimport ImageState from '../ImageState.js';\nimport ImageStyle from './Image.js';\nimport { asArray } from '../color.js';\nimport { assert } from '../asserts.js';\nimport { get as getIconImage } from './IconImage.js';\nimport { getUid } from '../util.js';\n/**\n * @typedef {Object} Options\n * @property {Array} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./IconOrigin.js\").default} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorXUnits='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorYUnits='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {HTMLImageElement|HTMLCanvasElement} [img] Image object for the icon. If the `src` option is not provided then the\n * provided image must already be loaded. And in that case, it is required\n * to provide the size of the image, with the `imgSize` option.\n * @property {Array} [offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {Array} [displacement=[0,0]] Displacement the icon\n * @property {import(\"./IconOrigin.js\").default} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {number} [opacity=1] Opacity of the icon.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {import(\"../size.js\").Size} [size] Icon size in pixel. Can be used together with `offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image.\n * @property {import(\"../size.js\").Size} [imgSize] Image size in pixels. Only required if `img` is set and `src` is not, and\n * for SVG images in Internet Explorer 11. The provided `imgSize` needs to match the actual size of the image.\n * @property {string} [src] Image source URI.\n */\n/**\n * @classdesc\n * Set icon style for vector features.\n * @api\n */\nvar Icon = /** @class */ (function (_super) {\n __extends(Icon, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Icon(opt_options) {\n var _this = this;\n var options = opt_options || {};\n /**\n * @type {number}\n */\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n /**\n * @type {number}\n */\n var rotation = options.rotation !== undefined ? options.rotation : 0;\n /**\n * @type {number|import(\"../size.js\").Size}\n */\n var scale = options.scale !== undefined ? options.scale : 1;\n /**\n * @type {boolean}\n */\n var rotateWithView = options.rotateWithView !== undefined ? options.rotateWithView : false;\n _this = _super.call(this, {\n opacity: opacity,\n rotation: rotation,\n scale: scale,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n rotateWithView: rotateWithView,\n }) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.anchor_ = options.anchor !== undefined ? options.anchor : [0.5, 0.5];\n /**\n * @private\n * @type {Array}\n */\n _this.normalizedAnchor_ = null;\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.anchorOrigin_ =\n options.anchorOrigin !== undefined\n ? options.anchorOrigin\n : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorXUnits_ =\n options.anchorXUnits !== undefined\n ? options.anchorXUnits\n : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorYUnits_ =\n options.anchorYUnits !== undefined\n ? options.anchorYUnits\n : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ =\n options.crossOrigin !== undefined ? options.crossOrigin : null;\n /**\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n var image = options.img !== undefined ? options.img : null;\n /**\n * @type {import(\"../size.js\").Size}\n */\n var imgSize = options.imgSize !== undefined ? options.imgSize : null;\n /**\n * @type {string|undefined}\n */\n var src = options.src;\n assert(!(src !== undefined && image), 4); // `image` and `src` cannot be provided at the same time\n assert(!image || (image && imgSize), 5); // `imgSize` must be set when `image` is provided\n if ((src === undefined || src.length === 0) && image) {\n src = /** @type {HTMLImageElement} */ (image).src || getUid(image);\n }\n assert(src !== undefined && src.length > 0, 6); // A defined and non-empty `src` or `image` must be provided\n /**\n * @type {import(\"../ImageState.js\").default}\n */\n var imageState = options.src !== undefined ? ImageState.IDLE : ImageState.LOADED;\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = options.color !== undefined ? asArray(options.color) : null;\n /**\n * @private\n * @type {import(\"./IconImage.js\").default}\n */\n _this.iconImage_ = getIconImage(image, \n /** @type {string} */ (src), imgSize, _this.crossOrigin_, imageState, _this.color_);\n /**\n * @private\n * @type {Array}\n */\n _this.offset_ = options.offset !== undefined ? options.offset : [0, 0];\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.offsetOrigin_ =\n options.offsetOrigin !== undefined\n ? options.offsetOrigin\n : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {Array}\n */\n _this.origin_ = null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = options.size !== undefined ? options.size : null;\n return _this;\n }\n /**\n * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.\n * @return {Icon} The cloned style.\n * @api\n */\n Icon.prototype.clone = function () {\n var scale = this.getScale();\n return new Icon({\n anchor: this.anchor_.slice(),\n anchorOrigin: this.anchorOrigin_,\n anchorXUnits: this.anchorXUnits_,\n anchorYUnits: this.anchorYUnits_,\n crossOrigin: this.crossOrigin_,\n color: this.color_ && this.color_.slice\n ? this.color_.slice()\n : this.color_ || undefined,\n src: this.getSrc(),\n offset: this.offset_.slice(),\n offsetOrigin: this.offsetOrigin_,\n size: this.size_ !== null ? this.size_.slice() : undefined,\n opacity: this.getOpacity(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n });\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @return {Array} Anchor.\n * @api\n */\n Icon.prototype.getAnchor = function () {\n if (this.normalizedAnchor_) {\n return this.normalizedAnchor_;\n }\n var anchor = this.anchor_;\n var size = this.getSize();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION ||\n this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n if (!size) {\n return null;\n }\n anchor = this.anchor_.slice();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION) {\n anchor[0] *= size[0];\n }\n if (this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n anchor[1] *= size[1];\n }\n }\n if (this.anchorOrigin_ != IconOrigin.TOP_LEFT) {\n if (!size) {\n return null;\n }\n if (anchor === this.anchor_) {\n anchor = this.anchor_.slice();\n }\n if (this.anchorOrigin_ == IconOrigin.TOP_RIGHT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[0] = -anchor[0] + size[0];\n }\n if (this.anchorOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[1] = -anchor[1] + size[1];\n }\n }\n this.normalizedAnchor_ = anchor;\n return this.normalizedAnchor_;\n };\n /**\n * Set the anchor point. The anchor determines the center point for the\n * symbolizer.\n *\n * @param {Array} anchor Anchor.\n * @api\n */\n Icon.prototype.setAnchor = function (anchor) {\n this.anchor_ = anchor;\n this.normalizedAnchor_ = null;\n };\n /**\n * Get the icon color.\n * @return {import(\"../color.js\").Color} Color.\n * @api\n */\n Icon.prototype.getColor = function () {\n return this.color_;\n };\n /**\n * Get the image icon.\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n * @api\n */\n Icon.prototype.getImage = function (pixelRatio) {\n return this.iconImage_.getImage(pixelRatio);\n };\n /**\n * Get the pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} The pixel ration of the image.\n * @api\n */\n Icon.prototype.getPixelRatio = function (pixelRatio) {\n return this.iconImage_.getPixelRatio(pixelRatio);\n };\n /**\n * @return {import(\"../size.js\").Size} Image size.\n */\n Icon.prototype.getImageSize = function () {\n return this.iconImage_.getSize();\n };\n /**\n * @return {import(\"../size.js\").Size} Size of the hit-detection image.\n */\n Icon.prototype.getHitDetectionImageSize = function () {\n return this.getImageSize();\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n Icon.prototype.getImageState = function () {\n return this.iconImage_.getImageState();\n };\n /**\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n Icon.prototype.getHitDetectionImage = function () {\n return this.iconImage_.getHitDetectionImage();\n };\n /**\n * Get the origin of the symbolizer.\n * @return {Array} Origin.\n * @api\n */\n Icon.prototype.getOrigin = function () {\n if (this.origin_) {\n return this.origin_;\n }\n var offset = this.offset_;\n var displacement = this.getDisplacement();\n if (this.offsetOrigin_ != IconOrigin.TOP_LEFT) {\n var size = this.getSize();\n var iconImageSize = this.iconImage_.getSize();\n if (!size || !iconImageSize) {\n return null;\n }\n offset = offset.slice();\n if (this.offsetOrigin_ == IconOrigin.TOP_RIGHT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[0] = iconImageSize[0] - size[0] - offset[0];\n }\n if (this.offsetOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[1] = iconImageSize[1] - size[1] - offset[1];\n }\n }\n offset[0] += displacement[0];\n offset[1] += displacement[1];\n this.origin_ = offset;\n return this.origin_;\n };\n /**\n * Get the image URL.\n * @return {string|undefined} Image src.\n * @api\n */\n Icon.prototype.getSrc = function () {\n return this.iconImage_.getSrc();\n };\n /**\n * Get the size of the icon (in pixels).\n * @return {import(\"../size.js\").Size} Image size.\n * @api\n */\n Icon.prototype.getSize = function () {\n return !this.size_ ? this.iconImage_.getSize() : this.size_;\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n Icon.prototype.listenImageChange = function (listener) {\n this.iconImage_.addEventListener(EventType.CHANGE, listener);\n };\n /**\n * Load not yet loaded URI.\n * When rendering a feature with an icon style, the vector renderer will\n * automatically call this method. However, you might want to call this\n * method yourself for preloading or other purposes.\n * @api\n */\n Icon.prototype.load = function () {\n this.iconImage_.load();\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n Icon.prototype.unlistenImageChange = function (listener) {\n this.iconImage_.removeEventListener(EventType.CHANGE, listener);\n };\n return Icon;\n}(ImageStyle));\nexport default Icon;\n//# sourceMappingURL=Icon.js.map","/**\n * @module ol/layer/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { abstract } from '../util.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { clamp } from '../math.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nvar BaseLayer = /** @class */ (function (_super) {\n __extends(BaseLayer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function BaseLayer(options) {\n var _this = _super.call(this) || this;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n /**\n * @type {string}\n * @private\n */\n _this.className_ =\n properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n _this.setProperties(properties);\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n _this.state_ = null;\n return _this;\n }\n /**\n * @return {string} CSS class name.\n */\n BaseLayer.prototype.getClassName = function () {\n return this.className_;\n };\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean=} opt_managed Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n BaseLayer.prototype.getLayerState = function (opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n var state = this.state_ ||\n /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed,\n });\n var zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex =\n zIndex !== undefined ? zIndex : state.managed === false ? Infinity : 0;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n return state;\n };\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n BaseLayer.prototype.getLayersArray = function (opt_array) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n BaseLayer.prototype.getLayerStatesArray = function (opt_states) {\n return abstract();\n };\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n BaseLayer.prototype.getExtent = function () {\n return /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT));\n };\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n };\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n };\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n };\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n };\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getOpacity = function () {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n };\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n BaseLayer.prototype.getSourceState = function () {\n return abstract();\n };\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getVisible = function () {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n };\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getZIndex = function () {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n };\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setExtent = function (extent) {\n this.set(LayerProperty.EXTENT, extent);\n };\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxResolution = function (maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n };\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinResolution = function (minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n };\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxZoom = function (maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n };\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinZoom = function (minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n };\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setOpacity = function (opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n };\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setVisible = function (visible) {\n this.set(LayerProperty.VISIBLE, visible);\n };\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setZIndex = function (zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n };\n /**\n * Clean up.\n */\n BaseLayer.prototype.disposeInternal = function () {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n _super.prototype.disposeInternal.call(this);\n };\n return BaseLayer;\n}(BaseObject));\nexport default BaseLayer;\n//# sourceMappingURL=Base.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/source/State\n */\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error',\n};\n//# sourceMappingURL=State.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Layer\n */\nimport BaseLayer from './Base.js';\nimport EventType from '../events/EventType.js';\nimport LayerProperty from './Property.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { getChangeEventType } from '../Object.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {import(\"../source/State.js\").default} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n * @property {number} minZoom\n * @property {number} maxZoom\n */\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function Layer(options) {\n var _this = this;\n var baseOptions = assign({}, options);\n delete baseOptions.source;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapPrecomposeKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapRenderKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.sourceChangeKey_ = null;\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n _this.renderer_ = null;\n // Overwrite default render method with a custom one\n if (options.render) {\n _this.render = options.render;\n }\n if (options.map) {\n _this.setMap(options.map);\n }\n _this.addEventListener(getChangeEventType(LayerProperty.SOURCE), _this.handleSourcePropertyChange_);\n var source = options.source\n ? /** @type {SourceType} */ (options.source)\n : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @param {Array=} opt_array Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n Layer.prototype.getLayersArray = function (opt_array) {\n var array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n };\n /**\n * @param {Array=} opt_states Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n Layer.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n };\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n Layer.prototype.getSource = function () {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourceChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourcePropertyChange_ = function () {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n var source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source, EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n };\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n Layer.prototype.getFeatures = function (pixel) {\n return this.renderer_.getFeatures(pixel);\n };\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n Layer.prototype.render = function (frameState, target) {\n var layerRenderer = this.getRenderer();\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Layer.prototype.setMap = function (map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {\n var renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n var layerStatesArray = renderEvent.frameState.layerStatesArray;\n var layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(!layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }), 67);\n layerStatesArray.push(layerState);\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n Layer.prototype.getRenderer = function () {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n };\n /**\n * @return {boolean} The layer has a renderer.\n */\n Layer.prototype.hasRenderer = function () {\n return !!this.renderer_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * Clean up.\n */\n Layer.prototype.disposeInternal = function () {\n this.setSource(null);\n _super.prototype.disposeInternal.call(this);\n };\n return Layer;\n}(BaseLayer));\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n var resolution = viewState.resolution;\n if (resolution < layerState.minResolution ||\n resolution >= layerState.maxResolution) {\n return false;\n }\n var zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\nexport default Layer;\n//# sourceMappingURL=Layer.js.map","/**\n * @module ol/render/VectorContext\n */\n/**\n * @classdesc\n * Context for drawing geometries. A vector context is available on render\n * events and does not need to be constructed directly.\n * @api\n */\nvar VectorContext = /** @class */ (function () {\n function VectorContext() {\n }\n /**\n * Render a geometry with a custom renderer.\n *\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {Function} renderer Renderer.\n */\n VectorContext.prototype.drawCustom = function (geometry, feature, renderer) { };\n /**\n * Render a geometry.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry The geometry to render.\n */\n VectorContext.prototype.drawGeometry = function (geometry) { };\n /**\n * Set the rendering style.\n *\n * @param {import(\"../style/Style.js\").default} style The rendering style.\n */\n VectorContext.prototype.setStyle = function (style) { };\n /**\n * @param {import(\"../geom/Circle.js\").default} circleGeometry Circle geometry.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n VectorContext.prototype.drawCircle = function (circleGeometry, feature) { };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n */\n VectorContext.prototype.drawFeature = function (feature, style) { };\n /**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometryCollectionGeometry Geometry collection.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n VectorContext.prototype.drawGeometryCollection = function (geometryCollectionGeometry, feature) { };\n /**\n * @param {import(\"../geom/LineString.js\").default|import(\"./Feature.js\").default} lineStringGeometry Line string geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawLineString = function (lineStringGeometry, feature) { };\n /**\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"./Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawMultiLineString = function (multiLineStringGeometry, feature) { };\n /**\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"./Feature.js\").default} multiPointGeometry MultiPoint geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawMultiPoint = function (multiPointGeometry, feature) { };\n /**\n * @param {import(\"../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawMultiPolygon = function (multiPolygonGeometry, feature) { };\n /**\n * @param {import(\"../geom/Point.js\").default|import(\"./Feature.js\").default} pointGeometry Point geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawPoint = function (pointGeometry, feature) { };\n /**\n * @param {import(\"../geom/Polygon.js\").default|import(\"./Feature.js\").default} polygonGeometry Polygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawPolygon = function (polygonGeometry, feature) { };\n /**\n * @param {import(\"../geom/SimpleGeometry.js\").default|import(\"./Feature.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawText = function (geometry, feature) { };\n /**\n * @param {import(\"../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n VectorContext.prototype.setFillStrokeStyle = function (fillStyle, strokeStyle) { };\n /**\n * @param {import(\"../style/Image.js\").default} imageStyle Image style.\n * @param {import(\"./canvas.js\").DeclutterGroup=} opt_declutterGroup Declutter.\n */\n VectorContext.prototype.setImageStyle = function (imageStyle, opt_declutterGroup) { };\n /**\n * @param {import(\"../style/Text.js\").default} textStyle Text style.\n * @param {import(\"./canvas.js\").DeclutterGroups=} opt_declutterGroups Declutter.\n */\n VectorContext.prototype.setTextStyle = function (textStyle, opt_declutterGroups) { };\n return VectorContext;\n}());\nexport default VectorContext;\n//# sourceMappingURL=VectorContext.js.map","/**\n * @module ol/colorlike\n */\nimport { toString } from './color.js';\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n else {\n return color;\n }\n}\n//# sourceMappingURL=colorlike.js.map","/**\n * @module ol/render/canvas\n */\nimport BaseObject from '../Object.js';\nimport EventTarget from '../events/Target.js';\nimport { WORKER_OFFSCREEN_CANVAS } from '../has.js';\nimport { clear } from '../obj.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { getFontParameters } from '../css.js';\nimport { toString } from '../transform.js';\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle\n */\n/**\n * @typedef Label\n * @property {number} width\n * @property {number} height\n * @property {Array} contextInstructions\n */\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle]\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle]\n * @property {CanvasLineCap} [currentLineCap]\n * @property {Array} currentLineDash\n * @property {number} [currentLineDashOffset]\n * @property {CanvasLineJoin} [currentLineJoin]\n * @property {number} [currentLineWidth]\n * @property {number} [currentMiterLimit]\n * @property {number} [lastStroke]\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle]\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle]\n * @property {CanvasLineCap} [lineCap]\n * @property {Array} lineDash\n * @property {number} [lineDashOffset]\n * @property {CanvasLineJoin} [lineJoin]\n * @property {number} [lineWidth]\n * @property {number} [miterLimit]\n */\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap\n * @property {Array} lineDash\n * @property {number} lineDashOffset\n * @property {CanvasLineJoin} lineJoin\n * @property {number} lineWidth\n * @property {number} miterLimit\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle\n */\n/**\n * @typedef {Object} TextState\n * @property {string} font\n * @property {string} [textAlign]\n * @property {string} textBaseline\n * @property {string} [placement]\n * @property {number} [maxAngle]\n * @property {boolean} [overflow]\n * @property {import(\"../style/Fill.js\").default} [backgroundFill]\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke]\n * @property {import(\"../size.js\").Size} [scale]\n * @property {Array} [padding]\n */\n/**\n * Container for decluttered replay instructions that need to be rendered or\n * omitted together, i.e. when styles render both an image and text, or for the\n * characters that form text along lines. The basic elements of this array are\n * `[minX, minY, maxX, maxY, count]`, where the first four entries are the\n * rendered extent of the group in pixel space. `count` is the number of styles\n * in the group, i.e. 2 when an image and a text are grouped, or 1 otherwise.\n * In addition to these four elements, declutter instruction arrays (i.e. the\n * arguments to {@link module:ol/render/canvas~drawImage} are appended to the array.\n * @typedef {Array<*>} DeclutterGroup\n */\n/**\n * Declutter groups for support of multi geometries.\n * @typedef {Array} DeclutterGroups\n */\n/**\n * @const\n * @type {string}\n */\nexport var defaultFont = '10px sans-serif';\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultFillStyle = '#000';\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport var defaultLineCap = 'round';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultLineDash = [];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineDashOffset = 0;\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport var defaultLineJoin = 'round';\n/**\n * @const\n * @type {number}\n */\nexport var defaultMiterLimit = 10;\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultStrokeStyle = '#000';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextAlign = 'center';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextBaseline = 'middle';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultPadding = [0, 0, 0, 0];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineWidth = 1;\n/**\n * @type {BaseObject}\n */\nexport var checkedFonts = new BaseObject();\n/**\n * The label cache for text rendering. To change the default cache size of 2048\n * entries, use {@link module:ol/structs/LRUCache#setSize}.\n * Deprecated - there is no label cache any more.\n * @type {?}\n * @api\n * @deprecated\n */\nexport var labelCache = new EventTarget();\nlabelCache.setSize = function () {\n console.warn('labelCache is deprecated.'); //eslint-disable-line\n};\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar measureContext = null;\n/**\n * @type {string}\n */\nvar measureFont;\n/**\n * @type {!Object}\n */\nexport var textHeights = {};\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport var registerFont = (function () {\n var retries = 100;\n var size = '32px ';\n var referenceFonts = ['monospace', 'serif'];\n var len = referenceFonts.length;\n var text = 'wmytzilWMYTZIL@#/&?$%10\\uF013';\n var interval, referenceWidth;\n /**\n * @param {string} fontStyle Css font-style\n * @param {string} fontWeight Css font-weight\n * @param {*} fontFamily Css font-family\n * @return {boolean} Font with style and weight is available\n */\n function isAvailable(fontStyle, fontWeight, fontFamily) {\n var available = true;\n for (var i = 0; i < len; ++i) {\n var referenceFont = referenceFonts[i];\n referenceWidth = measureTextWidth(fontStyle + ' ' + fontWeight + ' ' + size + referenceFont, text);\n if (fontFamily != referenceFont) {\n var width = measureTextWidth(fontStyle +\n ' ' +\n fontWeight +\n ' ' +\n size +\n fontFamily +\n ',' +\n referenceFont, text);\n // If width and referenceWidth are the same, then the fallback was used\n // instead of the font we wanted, so the font is not available.\n available = available && width != referenceWidth;\n }\n }\n if (available) {\n return true;\n }\n return false;\n }\n function check() {\n var done = true;\n var fonts = checkedFonts.getKeys();\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n if (checkedFonts.get(font) < retries) {\n if (isAvailable.apply(this, font.split('\\n'))) {\n clear(textHeights);\n // Make sure that loaded fonts are picked up by Safari\n measureContext = null;\n measureFont = undefined;\n checkedFonts.set(font, retries);\n }\n else {\n checkedFonts.set(font, checkedFonts.get(font) + 1, true);\n done = false;\n }\n }\n }\n if (done) {\n clearInterval(interval);\n interval = undefined;\n }\n }\n return function (fontSpec) {\n var font = getFontParameters(fontSpec);\n if (!font) {\n return;\n }\n var families = font.families;\n for (var i = 0, ii = families.length; i < ii; ++i) {\n var family = families[i];\n var key = font.style + '\\n' + font.weight + '\\n' + family;\n if (checkedFonts.get(key) === undefined) {\n checkedFonts.set(key, retries, true);\n if (!isAvailable(font.style, font.weight, family)) {\n checkedFonts.set(key, 0, true);\n if (interval === undefined) {\n interval = setInterval(check, 32);\n }\n }\n }\n }\n };\n})();\n/**\n * @param {string} font Font to use for measuring.\n * @return {import(\"../size.js\").Size} Measurement.\n */\nexport var measureTextHeight = (function () {\n /**\n * @type {HTMLDivElement}\n */\n var div;\n var heights = textHeights;\n return function (fontSpec) {\n var height = heights[fontSpec];\n if (height == undefined) {\n if (WORKER_OFFSCREEN_CANVAS) {\n var font = getFontParameters(fontSpec);\n var metrics = measureText(fontSpec, 'Žg');\n var lineHeight = isNaN(Number(font.lineHeight))\n ? 1.2\n : Number(font.lineHeight);\n textHeights[fontSpec] =\n lineHeight *\n (metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n }\n else {\n if (!div) {\n div = document.createElement('div');\n div.innerHTML = 'M';\n div.style.margin = '0 !important';\n div.style.padding = '0 !important';\n div.style.position = 'absolute !important';\n div.style.left = '-99999px !important';\n }\n div.style.font = fontSpec;\n document.body.appendChild(div);\n height = div.offsetHeight;\n heights[fontSpec] = height;\n document.body.removeChild(div);\n }\n }\n return height;\n };\n})();\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {TextMetrics} Text metrics.\n */\nfunction measureText(font, text) {\n if (!measureContext) {\n measureContext = createCanvasContext2D(1, 1);\n }\n if (font != measureFont) {\n measureContext.font = font;\n measureFont = measureContext.font;\n }\n return measureContext.measureText(text);\n}\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n return measureText(font, text).width;\n}\n/**\n * Measure text width using a cache.\n * @param {string} font The font.\n * @param {string} text The text to measure.\n * @param {Object} cache A lookup of cached widths by text.\n * @returns {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n if (text in cache) {\n return cache[text];\n }\n var width = measureTextWidth(font, text);\n cache[text] = width;\n return width;\n}\n/**\n * @param {string} font Font to use for measuring.\n * @param {Array} lines Lines to measure.\n * @param {Array} widths Array will be populated with the widths of\n * each line.\n * @return {number} Width of the whole text.\n */\nexport function measureTextWidths(font, lines, widths) {\n var numLines = lines.length;\n var width = 0;\n for (var i = 0; i < numLines; ++i) {\n var currentWidth = measureTextWidth(font, lines[i]);\n width = Math.max(width, currentWidth);\n widths.push(currentWidth);\n }\n return width;\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} rotation Rotation.\n * @param {number} offsetX X offset.\n * @param {number} offsetY Y offset.\n */\nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {\n if (rotation !== 0) {\n context.translate(offsetX, offsetY);\n context.rotate(rotation);\n context.translate(-offsetX, -offsetY);\n }\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {Label|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} labelOrImage Label.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} w Width.\n * @param {number} h Height.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../size.js\").Size} scale Scale.\n */\nexport function drawImageOrLabel(context, transform, opacity, labelOrImage, originX, originY, w, h, x, y, scale) {\n context.save();\n if (opacity !== 1) {\n context.globalAlpha *= opacity;\n }\n if (transform) {\n context.setTransform.apply(context, transform);\n }\n if ( /** @type {*} */(labelOrImage).contextInstructions) {\n // label\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n executeLabelInstructions(/** @type {Label} */ (labelOrImage), context);\n }\n else if (scale[0] < 0 || scale[1] < 0) {\n // flipped image\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, 0, 0, w, h);\n }\n else {\n // if image not flipped translate and scale can be avoided\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, x, y, w * scale[0], h * scale[1]);\n }\n context.restore();\n}\n/**\n * @param {Label} label Label.\n * @param {CanvasRenderingContext2D} context Context.\n */\nfunction executeLabelInstructions(label, context) {\n var contextInstructions = label.contextInstructions;\n for (var i = 0, ii = contextInstructions.length; i < ii; i += 2) {\n if (Array.isArray(contextInstructions[i + 1])) {\n context[contextInstructions[i]].apply(context, contextInstructions[i + 1]);\n }\n else {\n context[contextInstructions[i]] = contextInstructions[i + 1];\n }\n }\n}\n/**\n * @type {HTMLCanvasElement}\n * @private\n */\nvar createTransformStringCanvas = null;\n/**\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @return {string} CSS transform.\n */\nexport function createTransformString(transform) {\n if (WORKER_OFFSCREEN_CANVAS) {\n return toString(transform);\n }\n else {\n if (!createTransformStringCanvas) {\n createTransformStringCanvas = createCanvasContext2D(1, 1).canvas;\n }\n createTransformStringCanvas.style.transform = toString(transform);\n return createTransformStringCanvas.style.transform;\n }\n}\n//# sourceMappingURL=canvas.js.map","/**\n * @module ol/render/canvas/Immediate\n */\n// FIXME test, especially polygons with holes and multipolygons\n// FIXME need to handle large thick features (where pixel size matters)\n// FIXME add offset and end to ol/geom/flat/transform~transform2D?\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport GeometryType from '../../geom/GeometryType.js';\nimport VectorContext from '../VectorContext.js';\nimport { asColorLike } from '../../colorlike.js';\nimport { compose as composeTransform, create as createTransform, } from '../../transform.js';\nimport { defaultFillStyle, defaultFont, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, defaultTextAlign, defaultTextBaseline, } from '../canvas.js';\nimport { equals } from '../../array.js';\nimport { intersects } from '../../extent.js';\nimport { transform2D } from '../../geom/flat/transform.js';\nimport { transformGeom2D } from '../../geom/SimpleGeometry.js';\n/**\n * @classdesc\n * A concrete subclass of {@link module:ol/render/VectorContext} that implements\n * direct rendering of features and geometries to an HTML5 Canvas context.\n * Instances of this class are created internally by the library and\n * provided to application code as vectorContext member of the\n * {@link module:ol/render/Event~RenderEvent} object associated with postcompose, precompose and\n * render events emitted by layers and maps.\n */\nvar CanvasImmediateRenderer = /** @class */ (function (_super) {\n __extends(CanvasImmediateRenderer, _super);\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {number} viewRotation View rotation.\n * @param {number=} opt_squaredTolerance Optional squared tolerance for simplification.\n * @param {import(\"../../proj.js\").TransformFunction=} opt_userTransform Transform from user to view projection.\n */\n function CanvasImmediateRenderer(context, pixelRatio, extent, transform, viewRotation, opt_squaredTolerance, opt_userTransform) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n _this.context_ = context;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.extent_ = extent;\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.transform_ = transform;\n /**\n * @private\n * @type {number}\n */\n _this.viewRotation_ = viewRotation;\n /**\n * @private\n * @type {number}\n */\n _this.squaredTolerance_ = opt_squaredTolerance;\n /**\n * @private\n * @type {import(\"../../proj.js\").TransformFunction}\n */\n _this.userTransform_ = opt_userTransform;\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.contextFillState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.contextStrokeState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").TextState}\n */\n _this.contextTextState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.fillState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.strokeState_ = null;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}\n */\n _this.image_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.imageAnchorX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageAnchorY_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageHeight_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageOpacity_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageOriginX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageOriginY_ = 0;\n /**\n * @private\n * @type {boolean}\n */\n _this.imageRotateWithView_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.imageRotation_ = 0;\n /**\n * @private\n * @type {import(\"../../size.js\").Size}\n */\n _this.imageScale_ = [0, 0];\n /**\n * @private\n * @type {number}\n */\n _this.imageWidth_ = 0;\n /**\n * @private\n * @type {string}\n */\n _this.text_ = '';\n /**\n * @private\n * @type {number}\n */\n _this.textOffsetX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.textOffsetY_ = 0;\n /**\n * @private\n * @type {boolean}\n */\n _this.textRotateWithView_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.textRotation_ = 0;\n /**\n * @private\n * @type {import(\"../../size.js\").Size}\n */\n _this.textScale_ = [0, 0];\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.textFillState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.textStrokeState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").TextState}\n */\n _this.textState_ = null;\n /**\n * @private\n * @type {Array}\n */\n _this.pixelCoordinates_ = [];\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.tmpLocalTransform_ = createTransform();\n return _this;\n }\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n */\n CanvasImmediateRenderer.prototype.drawImages_ = function (flatCoordinates, offset, end, stride) {\n if (!this.image_) {\n return;\n }\n var pixelCoordinates = transform2D(flatCoordinates, offset, end, 2, this.transform_, this.pixelCoordinates_);\n var context = this.context_;\n var localTransform = this.tmpLocalTransform_;\n var alpha = context.globalAlpha;\n if (this.imageOpacity_ != 1) {\n context.globalAlpha = alpha * this.imageOpacity_;\n }\n var rotation = this.imageRotation_;\n if (this.imageRotateWithView_) {\n rotation += this.viewRotation_;\n }\n for (var i = 0, ii = pixelCoordinates.length; i < ii; i += 2) {\n var x = pixelCoordinates[i] - this.imageAnchorX_;\n var y = pixelCoordinates[i + 1] - this.imageAnchorY_;\n if (rotation !== 0 ||\n this.imageScale_[0] != 1 ||\n this.imageScale_[1] != 1) {\n var centerX = x + this.imageAnchorX_;\n var centerY = y + this.imageAnchorY_;\n composeTransform(localTransform, centerX, centerY, 1, 1, rotation, -centerX, -centerY);\n context.setTransform.apply(context, localTransform);\n context.translate(centerX, centerY);\n context.scale(this.imageScale_[0], this.imageScale_[1]);\n context.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_);\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n else {\n context.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, x, y, this.imageWidth_, this.imageHeight_);\n }\n }\n if (this.imageOpacity_ != 1) {\n context.globalAlpha = alpha;\n }\n };\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n */\n CanvasImmediateRenderer.prototype.drawText_ = function (flatCoordinates, offset, end, stride) {\n if (!this.textState_ || this.text_ === '') {\n return;\n }\n if (this.textFillState_) {\n this.setContextFillState_(this.textFillState_);\n }\n if (this.textStrokeState_) {\n this.setContextStrokeState_(this.textStrokeState_);\n }\n this.setContextTextState_(this.textState_);\n var pixelCoordinates = transform2D(flatCoordinates, offset, end, stride, this.transform_, this.pixelCoordinates_);\n var context = this.context_;\n var rotation = this.textRotation_;\n if (this.textRotateWithView_) {\n rotation += this.viewRotation_;\n }\n for (; offset < end; offset += stride) {\n var x = pixelCoordinates[offset] + this.textOffsetX_;\n var y = pixelCoordinates[offset + 1] + this.textOffsetY_;\n if (rotation !== 0 ||\n this.textScale_[0] != 1 ||\n this.textScale_[1] != 1) {\n var localTransform = composeTransform(this.tmpLocalTransform_, x, y, 1, 1, rotation, -x, -y);\n context.setTransform.apply(context, localTransform);\n context.translate(x, y);\n context.scale(this.textScale_[0], this.textScale_[1]);\n if (this.textStrokeState_) {\n context.strokeText(this.text_, 0, 0);\n }\n if (this.textFillState_) {\n context.fillText(this.text_, 0, 0);\n }\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n else {\n if (this.textStrokeState_) {\n context.strokeText(this.text_, x, y);\n }\n if (this.textFillState_) {\n context.fillText(this.text_, x, y);\n }\n }\n }\n };\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {boolean} close Close.\n * @private\n * @return {number} end End.\n */\n CanvasImmediateRenderer.prototype.moveToLineTo_ = function (flatCoordinates, offset, end, stride, close) {\n var context = this.context_;\n var pixelCoordinates = transform2D(flatCoordinates, offset, end, stride, this.transform_, this.pixelCoordinates_);\n context.moveTo(pixelCoordinates[0], pixelCoordinates[1]);\n var length = pixelCoordinates.length;\n if (close) {\n length -= 2;\n }\n for (var i = 2; i < length; i += 2) {\n context.lineTo(pixelCoordinates[i], pixelCoordinates[i + 1]);\n }\n if (close) {\n context.closePath();\n }\n return end;\n };\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @private\n * @return {number} End.\n */\n CanvasImmediateRenderer.prototype.drawRings_ = function (flatCoordinates, offset, ends, stride) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.moveToLineTo_(flatCoordinates, offset, ends[i], stride, true);\n }\n return offset;\n };\n /**\n * Render a circle geometry into the canvas. Rendering is immediate and uses\n * the current fill and stroke styles.\n *\n * @param {import(\"../../geom/Circle.js\").default} geometry Circle geometry.\n * @api\n */\n CanvasImmediateRenderer.prototype.drawCircle = function (geometry) {\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.fillState_ || this.strokeState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n var pixelCoordinates = transformGeom2D(geometry, this.transform_, this.pixelCoordinates_);\n var dx = pixelCoordinates[2] - pixelCoordinates[0];\n var dy = pixelCoordinates[3] - pixelCoordinates[1];\n var radius = Math.sqrt(dx * dx + dy * dy);\n var context = this.context_;\n context.beginPath();\n context.arc(pixelCoordinates[0], pixelCoordinates[1], radius, 0, 2 * Math.PI);\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n this.drawText_(geometry.getCenter(), 0, 2, 2);\n }\n };\n /**\n * Set the rendering style. Note that since this is an immediate rendering API,\n * any `zIndex` on the provided style will be ignored.\n *\n * @param {import(\"../../style/Style.js\").default} style The rendering style.\n * @api\n */\n CanvasImmediateRenderer.prototype.setStyle = function (style) {\n this.setFillStrokeStyle(style.getFill(), style.getStroke());\n this.setImageStyle(style.getImage());\n this.setTextStyle(style.getText());\n };\n /**\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n */\n CanvasImmediateRenderer.prototype.setTransform = function (transform) {\n this.transform_ = transform;\n };\n /**\n * Render a geometry into the canvas. Call\n * {@link module:ol/render/canvas/Immediate#setStyle} first to set the rendering style.\n *\n * @param {import(\"../../geom/Geometry.js\").default|import(\"../Feature.js\").default} geometry The geometry to render.\n * @api\n */\n CanvasImmediateRenderer.prototype.drawGeometry = function (geometry) {\n var type = geometry.getType();\n switch (type) {\n case GeometryType.POINT:\n this.drawPoint(\n /** @type {import(\"../../geom/Point.js\").default} */ (geometry));\n break;\n case GeometryType.LINE_STRING:\n this.drawLineString(\n /** @type {import(\"../../geom/LineString.js\").default} */ (geometry));\n break;\n case GeometryType.POLYGON:\n this.drawPolygon(\n /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_POINT:\n this.drawMultiPoint(\n /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_LINE_STRING:\n this.drawMultiLineString(\n /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_POLYGON:\n this.drawMultiPolygon(\n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry));\n break;\n case GeometryType.GEOMETRY_COLLECTION:\n this.drawGeometryCollection(\n /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (geometry));\n break;\n case GeometryType.CIRCLE:\n this.drawCircle(\n /** @type {import(\"../../geom/Circle.js\").default} */ (geometry));\n break;\n default:\n }\n };\n /**\n * Render a feature into the canvas. Note that any `zIndex` on the provided\n * style will be ignored - features are rendered immediately in the order that\n * this method is called. If you need `zIndex` support, you should be using an\n * {@link module:ol/layer/Vector~VectorLayer} instead.\n *\n * @param {import(\"../../Feature.js\").default} feature Feature.\n * @param {import(\"../../style/Style.js\").default} style Style.\n * @api\n */\n CanvasImmediateRenderer.prototype.drawFeature = function (feature, style) {\n var geometry = style.getGeometryFunction()(feature);\n if (!geometry || !intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n this.setStyle(style);\n this.drawGeometry(geometry);\n };\n /**\n * Render a GeometryCollection to the canvas. Rendering is immediate and\n * uses the current styles appropriate for each geometry in the collection.\n *\n * @param {import(\"../../geom/GeometryCollection.js\").default} geometry Geometry collection.\n */\n CanvasImmediateRenderer.prototype.drawGeometryCollection = function (geometry) {\n var geometries = geometry.getGeometriesArray();\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n this.drawGeometry(geometries[i]);\n }\n };\n /**\n * Render a Point geometry into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/Point.js\").default|import(\"../Feature.js\").default} geometry Point geometry.\n */\n CanvasImmediateRenderer.prototype.drawPoint = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/Point.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n var flatCoordinates = geometry.getFlatCoordinates();\n var stride = geometry.getStride();\n if (this.image_) {\n this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n if (this.text_ !== '') {\n this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n };\n /**\n * Render a MultiPoint geometry into the canvas. Rendering is immediate and\n * uses the current style.\n *\n * @param {import(\"../../geom/MultiPoint.js\").default|import(\"../Feature.js\").default} geometry MultiPoint geometry.\n */\n CanvasImmediateRenderer.prototype.drawMultiPoint = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n var flatCoordinates = geometry.getFlatCoordinates();\n var stride = geometry.getStride();\n if (this.image_) {\n this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n if (this.text_ !== '') {\n this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n };\n /**\n * Render a LineString into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/LineString.js\").default|import(\"../Feature.js\").default} geometry LineString geometry.\n */\n CanvasImmediateRenderer.prototype.drawLineString = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/LineString.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n var context = this.context_;\n var flatCoordinates = geometry.getFlatCoordinates();\n context.beginPath();\n this.moveToLineTo_(flatCoordinates, 0, flatCoordinates.length, geometry.getStride(), false);\n context.stroke();\n }\n if (this.text_ !== '') {\n var flatMidpoint = geometry.getFlatMidpoint();\n this.drawText_(flatMidpoint, 0, 2, 2);\n }\n };\n /**\n * Render a MultiLineString geometry into the canvas. Rendering is immediate\n * and uses the current style.\n *\n * @param {import(\"../../geom/MultiLineString.js\").default|import(\"../Feature.js\").default} geometry MultiLineString geometry.\n */\n CanvasImmediateRenderer.prototype.drawMultiLineString = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n var geometryExtent = geometry.getExtent();\n if (!intersects(this.extent_, geometryExtent)) {\n return;\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n var context = this.context_;\n var flatCoordinates = geometry.getFlatCoordinates();\n var offset = 0;\n var ends = /** @type {Array} */ (geometry.getEnds());\n var stride = geometry.getStride();\n context.beginPath();\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.moveToLineTo_(flatCoordinates, offset, ends[i], stride, false);\n }\n context.stroke();\n }\n if (this.text_ !== '') {\n var flatMidpoints = geometry.getFlatMidpoints();\n this.drawText_(flatMidpoints, 0, flatMidpoints.length, 2);\n }\n };\n /**\n * Render a Polygon geometry into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/Polygon.js\").default|import(\"../Feature.js\").default} geometry Polygon geometry.\n */\n CanvasImmediateRenderer.prototype.drawPolygon = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_ || this.fillState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n var context = this.context_;\n context.beginPath();\n this.drawRings_(geometry.getOrientedFlatCoordinates(), 0, \n /** @type {Array} */ (geometry.getEnds()), geometry.getStride());\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n var flatInteriorPoint = geometry.getFlatInteriorPoint();\n this.drawText_(flatInteriorPoint, 0, 2, 2);\n }\n };\n /**\n * Render MultiPolygon geometry into the canvas. Rendering is immediate and\n * uses the current style.\n * @param {import(\"../../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n */\n CanvasImmediateRenderer.prototype.drawMultiPolygon = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_ || this.fillState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n var context = this.context_;\n var flatCoordinates = geometry.getOrientedFlatCoordinates();\n var offset = 0;\n var endss = geometry.getEndss();\n var stride = geometry.getStride();\n context.beginPath();\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n offset = this.drawRings_(flatCoordinates, offset, ends, stride);\n }\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n var flatInteriorPoints = geometry.getFlatInteriorPoints();\n this.drawText_(flatInteriorPoints, 0, flatInteriorPoints.length, 2);\n }\n };\n /**\n * @param {import(\"../canvas.js\").FillState} fillState Fill state.\n * @private\n */\n CanvasImmediateRenderer.prototype.setContextFillState_ = function (fillState) {\n var context = this.context_;\n var contextFillState = this.contextFillState_;\n if (!contextFillState) {\n context.fillStyle = fillState.fillStyle;\n this.contextFillState_ = {\n fillStyle: fillState.fillStyle,\n };\n }\n else {\n if (contextFillState.fillStyle != fillState.fillStyle) {\n contextFillState.fillStyle = fillState.fillStyle;\n context.fillStyle = fillState.fillStyle;\n }\n }\n };\n /**\n * @param {import(\"../canvas.js\").StrokeState} strokeState Stroke state.\n * @private\n */\n CanvasImmediateRenderer.prototype.setContextStrokeState_ = function (strokeState) {\n var context = this.context_;\n var contextStrokeState = this.contextStrokeState_;\n if (!contextStrokeState) {\n context.lineCap = strokeState.lineCap;\n if (context.setLineDash) {\n context.setLineDash(strokeState.lineDash);\n context.lineDashOffset = strokeState.lineDashOffset;\n }\n context.lineJoin = strokeState.lineJoin;\n context.lineWidth = strokeState.lineWidth;\n context.miterLimit = strokeState.miterLimit;\n context.strokeStyle = strokeState.strokeStyle;\n this.contextStrokeState_ = {\n lineCap: strokeState.lineCap,\n lineDash: strokeState.lineDash,\n lineDashOffset: strokeState.lineDashOffset,\n lineJoin: strokeState.lineJoin,\n lineWidth: strokeState.lineWidth,\n miterLimit: strokeState.miterLimit,\n strokeStyle: strokeState.strokeStyle,\n };\n }\n else {\n if (contextStrokeState.lineCap != strokeState.lineCap) {\n contextStrokeState.lineCap = strokeState.lineCap;\n context.lineCap = strokeState.lineCap;\n }\n if (context.setLineDash) {\n if (!equals(contextStrokeState.lineDash, strokeState.lineDash)) {\n context.setLineDash((contextStrokeState.lineDash = strokeState.lineDash));\n }\n if (contextStrokeState.lineDashOffset != strokeState.lineDashOffset) {\n contextStrokeState.lineDashOffset = strokeState.lineDashOffset;\n context.lineDashOffset = strokeState.lineDashOffset;\n }\n }\n if (contextStrokeState.lineJoin != strokeState.lineJoin) {\n contextStrokeState.lineJoin = strokeState.lineJoin;\n context.lineJoin = strokeState.lineJoin;\n }\n if (contextStrokeState.lineWidth != strokeState.lineWidth) {\n contextStrokeState.lineWidth = strokeState.lineWidth;\n context.lineWidth = strokeState.lineWidth;\n }\n if (contextStrokeState.miterLimit != strokeState.miterLimit) {\n contextStrokeState.miterLimit = strokeState.miterLimit;\n context.miterLimit = strokeState.miterLimit;\n }\n if (contextStrokeState.strokeStyle != strokeState.strokeStyle) {\n contextStrokeState.strokeStyle = strokeState.strokeStyle;\n context.strokeStyle = strokeState.strokeStyle;\n }\n }\n };\n /**\n * @param {import(\"../canvas.js\").TextState} textState Text state.\n * @private\n */\n CanvasImmediateRenderer.prototype.setContextTextState_ = function (textState) {\n var context = this.context_;\n var contextTextState = this.contextTextState_;\n var textAlign = textState.textAlign\n ? textState.textAlign\n : defaultTextAlign;\n if (!contextTextState) {\n context.font = textState.font;\n context.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n context.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n this.contextTextState_ = {\n font: textState.font,\n textAlign: textAlign,\n textBaseline: textState.textBaseline,\n };\n }\n else {\n if (contextTextState.font != textState.font) {\n contextTextState.font = textState.font;\n context.font = textState.font;\n }\n if (contextTextState.textAlign != textAlign) {\n contextTextState.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n context.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n }\n if (contextTextState.textBaseline != textState.textBaseline) {\n contextTextState.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n context.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n }\n }\n };\n /**\n * Set the fill and stroke style for subsequent draw operations. To clear\n * either fill or stroke styles, pass null for the appropriate parameter.\n *\n * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n CanvasImmediateRenderer.prototype.setFillStrokeStyle = function (fillStyle, strokeStyle) {\n if (!fillStyle) {\n this.fillState_ = null;\n }\n else {\n var fillStyleColor = fillStyle.getColor();\n this.fillState_ = {\n fillStyle: asColorLike(fillStyleColor ? fillStyleColor : defaultFillStyle),\n };\n }\n if (!strokeStyle) {\n this.strokeState_ = null;\n }\n else {\n var strokeStyleColor = strokeStyle.getColor();\n var strokeStyleLineCap = strokeStyle.getLineCap();\n var strokeStyleLineDash = strokeStyle.getLineDash();\n var strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n var strokeStyleLineJoin = strokeStyle.getLineJoin();\n var strokeStyleWidth = strokeStyle.getWidth();\n var strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n this.strokeState_ = {\n lineCap: strokeStyleLineCap !== undefined\n ? strokeStyleLineCap\n : defaultLineCap,\n lineDash: strokeStyleLineDash ? strokeStyleLineDash : defaultLineDash,\n lineDashOffset: strokeStyleLineDashOffset\n ? strokeStyleLineDashOffset\n : defaultLineDashOffset,\n lineJoin: strokeStyleLineJoin !== undefined\n ? strokeStyleLineJoin\n : defaultLineJoin,\n lineWidth: this.pixelRatio_ *\n (strokeStyleWidth !== undefined\n ? strokeStyleWidth\n : defaultLineWidth),\n miterLimit: strokeStyleMiterLimit !== undefined\n ? strokeStyleMiterLimit\n : defaultMiterLimit,\n strokeStyle: asColorLike(strokeStyleColor ? strokeStyleColor : defaultStrokeStyle),\n };\n }\n };\n /**\n * Set the image style for subsequent draw operations. Pass null to remove\n * the image style.\n *\n * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n */\n CanvasImmediateRenderer.prototype.setImageStyle = function (imageStyle) {\n if (!imageStyle) {\n this.image_ = null;\n }\n else {\n var imageSize = imageStyle.getSize();\n if (!imageSize) {\n this.image_ = null;\n }\n else {\n var imageAnchor = imageStyle.getAnchor();\n // FIXME pixel ratio\n var imageImage = imageStyle.getImage(1);\n var imageOrigin = imageStyle.getOrigin();\n var imageScale = imageStyle.getScaleArray();\n this.imageAnchorX_ = imageAnchor[0];\n this.imageAnchorY_ = imageAnchor[1];\n this.imageHeight_ = imageSize[1];\n this.image_ = imageImage;\n this.imageOpacity_ = imageStyle.getOpacity();\n this.imageOriginX_ = imageOrigin[0];\n this.imageOriginY_ = imageOrigin[1];\n this.imageRotateWithView_ = imageStyle.getRotateWithView();\n this.imageRotation_ = imageStyle.getRotation();\n this.imageScale_ = [\n this.pixelRatio_ * imageScale[0],\n this.pixelRatio_ * imageScale[1],\n ];\n this.imageWidth_ = imageSize[0];\n }\n }\n };\n /**\n * Set the text style for subsequent draw operations. Pass null to\n * remove the text style.\n *\n * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n */\n CanvasImmediateRenderer.prototype.setTextStyle = function (textStyle) {\n if (!textStyle) {\n this.text_ = '';\n }\n else {\n var textFillStyle = textStyle.getFill();\n if (!textFillStyle) {\n this.textFillState_ = null;\n }\n else {\n var textFillStyleColor = textFillStyle.getColor();\n this.textFillState_ = {\n fillStyle: asColorLike(textFillStyleColor ? textFillStyleColor : defaultFillStyle),\n };\n }\n var textStrokeStyle = textStyle.getStroke();\n if (!textStrokeStyle) {\n this.textStrokeState_ = null;\n }\n else {\n var textStrokeStyleColor = textStrokeStyle.getColor();\n var textStrokeStyleLineCap = textStrokeStyle.getLineCap();\n var textStrokeStyleLineDash = textStrokeStyle.getLineDash();\n var textStrokeStyleLineDashOffset = textStrokeStyle.getLineDashOffset();\n var textStrokeStyleLineJoin = textStrokeStyle.getLineJoin();\n var textStrokeStyleWidth = textStrokeStyle.getWidth();\n var textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit();\n this.textStrokeState_ = {\n lineCap: textStrokeStyleLineCap !== undefined\n ? textStrokeStyleLineCap\n : defaultLineCap,\n lineDash: textStrokeStyleLineDash\n ? textStrokeStyleLineDash\n : defaultLineDash,\n lineDashOffset: textStrokeStyleLineDashOffset\n ? textStrokeStyleLineDashOffset\n : defaultLineDashOffset,\n lineJoin: textStrokeStyleLineJoin !== undefined\n ? textStrokeStyleLineJoin\n : defaultLineJoin,\n lineWidth: textStrokeStyleWidth !== undefined\n ? textStrokeStyleWidth\n : defaultLineWidth,\n miterLimit: textStrokeStyleMiterLimit !== undefined\n ? textStrokeStyleMiterLimit\n : defaultMiterLimit,\n strokeStyle: asColorLike(textStrokeStyleColor ? textStrokeStyleColor : defaultStrokeStyle),\n };\n }\n var textFont = textStyle.getFont();\n var textOffsetX = textStyle.getOffsetX();\n var textOffsetY = textStyle.getOffsetY();\n var textRotateWithView = textStyle.getRotateWithView();\n var textRotation = textStyle.getRotation();\n var textScale = textStyle.getScaleArray();\n var textText = textStyle.getText();\n var textTextAlign = textStyle.getTextAlign();\n var textTextBaseline = textStyle.getTextBaseline();\n this.textState_ = {\n font: textFont !== undefined ? textFont : defaultFont,\n textAlign: textTextAlign !== undefined ? textTextAlign : defaultTextAlign,\n textBaseline: textTextBaseline !== undefined\n ? textTextBaseline\n : defaultTextBaseline,\n };\n this.text_ = textText !== undefined ? textText : '';\n this.textOffsetX_ =\n textOffsetX !== undefined ? this.pixelRatio_ * textOffsetX : 0;\n this.textOffsetY_ =\n textOffsetY !== undefined ? this.pixelRatio_ * textOffsetY : 0;\n this.textRotateWithView_ =\n textRotateWithView !== undefined ? textRotateWithView : false;\n this.textRotation_ = textRotation !== undefined ? textRotation : 0;\n this.textScale_ = [\n this.pixelRatio_ * textScale[0],\n this.pixelRatio_ * textScale[1],\n ];\n }\n };\n return CanvasImmediateRenderer;\n}(VectorContext));\nexport default CanvasImmediateRenderer;\n//# sourceMappingURL=Immediate.js.map","/**\n * @module ol/render/canvas/BuilderType\n */\n/**\n * @enum {string}\n */\nexport default {\n CIRCLE: 'Circle',\n DEFAULT: 'Default',\n IMAGE: 'Image',\n LINE_STRING: 'LineString',\n POLYGON: 'Polygon',\n TEXT: 'Text',\n};\n//# sourceMappingURL=BuilderType.js.map","/**\n * @module ol/renderer/vector\n */\nimport BuilderType from '../render/canvas/BuilderType.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport ImageState from '../ImageState.js';\nimport { getUid } from '../util.js';\n/**\n * Tolerance for geometry simplification in device pixels.\n * @type {number}\n */\nvar SIMPLIFY_TOLERANCE = 0.5;\n/**\n * @const\n * @type {Object}\n */\nvar GEOMETRY_RENDERERS = {\n 'Point': renderPointGeometry,\n 'LineString': renderLineStringGeometry,\n 'Polygon': renderPolygonGeometry,\n 'MultiPoint': renderMultiPointGeometry,\n 'MultiLineString': renderMultiLineStringGeometry,\n 'MultiPolygon': renderMultiPolygonGeometry,\n 'GeometryCollection': renderGeometryCollectionGeometry,\n 'Circle': renderCircleGeometry,\n};\n/**\n * @param {import(\"../Feature.js\").FeatureLike} feature1 Feature 1.\n * @param {import(\"../Feature.js\").FeatureLike} feature2 Feature 2.\n * @return {number} Order.\n */\nexport function defaultOrder(feature1, feature2) {\n return parseInt(getUid(feature1), 10) - parseInt(getUid(feature2), 10);\n}\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Squared pixel tolerance.\n */\nexport function getSquaredTolerance(resolution, pixelRatio) {\n var tolerance = getTolerance(resolution, pixelRatio);\n return tolerance * tolerance;\n}\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel tolerance.\n */\nexport function getTolerance(resolution, pixelRatio) {\n return (SIMPLIFY_TOLERANCE * resolution) / pixelRatio;\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\nfunction renderCircleGeometry(builderGroup, geometry, style, feature) {\n var fillStyle = style.getFill();\n var strokeStyle = style.getStroke();\n if (fillStyle || strokeStyle) {\n var circleReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.CIRCLE);\n circleReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n circleReplay.drawCircle(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Transform from user to view projection.\n * @return {boolean} `true` if style is loading.\n * @template T\n */\nexport function renderFeature(replayGroup, feature, style, squaredTolerance, listener, opt_transform) {\n var loading = false;\n var imageStyle = style.getImage();\n if (imageStyle) {\n var imageState = imageStyle.getImageState();\n if (imageState == ImageState.LOADED || imageState == ImageState.ERROR) {\n imageStyle.unlistenImageChange(listener);\n }\n else {\n if (imageState == ImageState.IDLE) {\n imageStyle.load();\n }\n imageState = imageStyle.getImageState();\n imageStyle.listenImageChange(listener);\n loading = true;\n }\n }\n renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform);\n return loading;\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n */\nfunction renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform) {\n var geometry = style.getGeometryFunction()(feature);\n if (!geometry) {\n return;\n }\n var simplifiedGeometry = geometry.simplifyTransformed(squaredTolerance, opt_transform);\n var renderer = style.getRenderer();\n if (renderer) {\n renderGeometry(replayGroup, simplifiedGeometry, style, feature);\n }\n else {\n var geometryRenderer = GEOMETRY_RENDERERS[simplifiedGeometry.getType()];\n geometryRenderer(replayGroup, simplifiedGeometry, style, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderGeometry(replayGroup, geometry, style, feature) {\n if (geometry.getType() == GeometryType.GEOMETRY_COLLECTION) {\n var geometries = /** @type {import(\"../geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n renderGeometry(replayGroup, geometries[i], style, feature);\n }\n return;\n }\n var replay = replayGroup.getBuilder(style.getZIndex(), BuilderType.DEFAULT);\n replay.drawCustom(\n /** @type {import(\"../geom/SimpleGeometry.js\").default} */ (geometry), feature, style.getRenderer());\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\nfunction renderGeometryCollectionGeometry(replayGroup, geometry, style, feature) {\n var geometries = geometry.getGeometriesArray();\n var i, ii;\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n var geometryRenderer = GEOMETRY_RENDERERS[geometries[i].getType()];\n geometryRenderer(replayGroup, geometries[i], style, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/LineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderLineStringGeometry(builderGroup, geometry, style, feature) {\n var strokeStyle = style.getStroke();\n if (strokeStyle) {\n var lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);\n lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n lineStringReplay.drawLineString(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderMultiLineStringGeometry(builderGroup, geometry, style, feature) {\n var strokeStyle = style.getStroke();\n if (strokeStyle) {\n var lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);\n lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n lineStringReplay.drawMultiLineString(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\nfunction renderMultiPolygonGeometry(builderGroup, geometry, style, feature) {\n var fillStyle = style.getFill();\n var strokeStyle = style.getStroke();\n if (strokeStyle || fillStyle) {\n var polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);\n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n polygonReplay.drawMultiPolygon(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Point.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderPointGeometry(builderGroup, geometry, style, feature) {\n var imageStyle = style.getImage();\n if (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n var imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);\n imageReplay.setImageStyle(imageStyle, builderGroup.addDeclutter(false));\n imageReplay.drawPoint(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(!!imageStyle));\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderMultiPointGeometry(builderGroup, geometry, style, feature) {\n var imageStyle = style.getImage();\n if (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n var imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);\n imageReplay.setImageStyle(imageStyle, builderGroup.addDeclutter(false));\n imageReplay.drawMultiPoint(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(!!imageStyle));\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Polygon.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderPolygonGeometry(builderGroup, geometry, style, feature) {\n var fillStyle = style.getFill();\n var strokeStyle = style.getStroke();\n if (fillStyle || strokeStyle) {\n var polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);\n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n polygonReplay.drawPolygon(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n//# sourceMappingURL=vector.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport { TRUE } from '../functions.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { getWidth } from '../extent.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { inView } from '../layer/Layer.js';\nimport { renderDeclutterItems } from '../render.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n /**\n * @private\n */\n _this.declutterTree_ = null;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: S, import(\"../Feature.js\").FeatureLike,\n * import(\"../layer/Layer.js\").default): T} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {?} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer) {\n return callback.call(thisArg, feature, managed ? layer : null);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var declutteredFeatures;\n if (this.declutterTree_) {\n declutteredFeatures = this.declutterTree_.all().map(function (entry) {\n return entry.value;\n });\n }\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer);\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, declutteredFeatures);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.js.map","/**\n * @module ol/render\n */\nimport CanvasImmediateRenderer from './render/canvas/Immediate.js';\nimport { DEVICE_PIXEL_RATIO } from './has.js';\nimport { apply as applyTransform, create as createTransform, multiply as multiplyTransform, scale as scaleTransform, } from './transform.js';\nimport { getSquaredTolerance } from './renderer/vector.js';\nimport { getTransformFromProjections, getUserProjection } from './proj.js';\n/**\n * @typedef {Object} State\n * @property {CanvasRenderingContext2D} context Canvas context that the layer is being rendered to.\n * @property {import(\"./Feature.js\").FeatureLike} feature\n * @property {import(\"./geom/SimpleGeometry.js\").default} geometry\n * @property {number} pixelRatio Pixel ratio used by the layer renderer.\n * @property {number} resolution Resolution that the render batch was created and optimized for.\n * This is not the view's resolution that is being rendered.\n * @property {number} rotation Rotation of the rendered layer in radians.\n */\n/**\n * A function to be used when sorting features before rendering.\n * It takes two instances of {@link module:ol/Feature} or\n * {@link module:ol/render/Feature} and returns a `{number}`.\n *\n * @typedef {function(import(\"./Feature.js\").FeatureLike, import(\"./Feature.js\").FeatureLike):number} OrderFunction\n */\n/**\n * @typedef {Object} ToContextOptions\n * @property {import(\"./size.js\").Size} [size] Desired size of the canvas in css\n * pixels. When provided, both canvas and css size will be set according to the\n * `pixelRatio`. If not provided, the current canvas and css sizes will not be\n * altered.\n * @property {number} [pixelRatio=window.devicePixelRatio] Pixel ratio (canvas\n * pixel to css pixel ratio) for the canvas.\n */\n/**\n * Binds a Canvas Immediate API to a canvas context, to allow drawing geometries\n * to the context's canvas.\n *\n * The units for geometry coordinates are css pixels relative to the top left\n * corner of the canvas element.\n * ```js\n * import {toContext} from 'ol/render';\n * import Fill from 'ol/style/Fill';\n * import Polygon from 'ol/geom/Polygon';\n *\n * var canvas = document.createElement('canvas');\n * var render = toContext(canvas.getContext('2d'),\n * { size: [100, 100] });\n * render.setFillStrokeStyle(new Fill({ color: blue }));\n * render.drawPolygon(\n * new Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]]));\n * ```\n *\n * @param {CanvasRenderingContext2D} context Canvas context.\n * @param {ToContextOptions=} opt_options Options.\n * @return {CanvasImmediateRenderer} Canvas Immediate.\n * @api\n */\nexport function toContext(context, opt_options) {\n var canvas = context.canvas;\n var options = opt_options ? opt_options : {};\n var pixelRatio = options.pixelRatio || DEVICE_PIXEL_RATIO;\n var size = options.size;\n if (size) {\n canvas.width = size[0] * pixelRatio;\n canvas.height = size[1] * pixelRatio;\n canvas.style.width = size[0] + 'px';\n canvas.style.height = size[1] + 'px';\n }\n var extent = [0, 0, canvas.width, canvas.height];\n var transform = scaleTransform(createTransform(), pixelRatio, pixelRatio);\n return new CanvasImmediateRenderer(context, pixelRatio, extent, transform, 0);\n}\n/**\n * Gets a vector context for drawing to the event's canvas.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @returns {CanvasImmediateRenderer} Vector context.\n * @api\n */\nexport function getVectorContext(event) {\n var frameState = event.frameState;\n var transform = multiplyTransform(event.inversePixelTransform.slice(), frameState.coordinateToPixelTransform);\n var squaredTolerance = getSquaredTolerance(frameState.viewState.resolution, frameState.pixelRatio);\n var userTransform;\n var userProjection = getUserProjection();\n if (userProjection) {\n userTransform = getTransformFromProjections(userProjection, frameState.viewState.projection);\n }\n return new CanvasImmediateRenderer(event.context, frameState.pixelRatio, frameState.extent, transform, frameState.viewState.rotation, squaredTolerance, userTransform);\n}\n/**\n * Gets the pixel of the event's canvas context from the map viewport's CSS pixel.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @param {import(\"./pixel.js\").Pixel} pixel CSS pixel relative to the top-left\n * corner of the map viewport.\n * @returns {import(\"./pixel.js\").Pixel} Pixel on the event's canvas context.\n * @api\n */\nexport function getRenderPixel(event, pixel) {\n var result = pixel.slice(0);\n applyTransform(event.inversePixelTransform.slice(), result);\n return result;\n}\n/**\n * @param {import(\"./PluggableMap.js\").FrameState} frameState Frame state.\n * @param {?} declutterTree Declutter tree.\n * @returns {?} Declutter tree.\n */\nexport function renderDeclutterItems(frameState, declutterTree) {\n if (declutterTree) {\n declutterTree.clear();\n }\n var items = frameState.declutterItems;\n for (var z = items.length - 1; z >= 0; --z) {\n var item = items[z];\n var zIndexItems = item.items;\n for (var i = 0, ii = zIndexItems.length; i < ii; i += 3) {\n declutterTree = zIndexItems[i].renderDeclutter(zIndexItems[i + 1], zIndexItems[i + 2], item.opacity, declutterTree);\n }\n }\n items.length = 0;\n return declutterTree;\n}\n//# sourceMappingURL=render.js.map","/**\n * @module ol/render/Event\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Event from '../events/Event.js';\nvar RenderEvent = /** @class */ (function (_super) {\n __extends(RenderEvent, _super);\n /**\n * @param {import(\"./EventType.js\").default} type Type.\n * @param {import(\"../transform.js\").Transform=} opt_inversePixelTransform Transform for\n * CSS pixels to rendered pixels.\n * @param {import(\"../PluggableMap.js\").FrameState=} opt_frameState Frame state.\n * @param {?CanvasRenderingContext2D=} opt_context Context.\n */\n function RenderEvent(type, opt_inversePixelTransform, opt_frameState, opt_context) {\n var _this = _super.call(this, type) || this;\n /**\n * Transform from CSS pixels (relative to the top-left corner of the map viewport)\n * to rendered pixels on this event's `context`.\n * @type {import(\"../transform.js\").Transform|undefined}\n * @api\n */\n _this.inversePixelTransform = opt_inversePixelTransform;\n /**\n * An object representing the current render frame state.\n * @type {import(\"../PluggableMap.js\").FrameState|undefined}\n * @api\n */\n _this.frameState = opt_frameState;\n /**\n * Canvas context. Not available when the event is dispatched by the map. Only available\n * when a Canvas renderer is used, null otherwise.\n * @type {CanvasRenderingContext2D|null|undefined}\n * @api\n */\n _this.context = opt_context;\n return _this;\n }\n return RenderEvent;\n}(Event));\nexport default RenderEvent;\n//# sourceMappingURL=Event.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport { inView } from '../layer/Layer.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { replaceChildren } from '../dom.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY &&\n layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n }\n _super.prototype.renderFrame.call(this, frameState);\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n//# sourceMappingURL=CollectionEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*=} opt_element Element.\n * @param {number=} opt_index The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport BaseLayer from './Base.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport EventType from '../events/EventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign, clear } from '../obj.js';\nimport { getChangeEventType } from '../Object.js';\nimport { getIntersection } from '../extent.js';\nimport { getUid } from '../util.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers',\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof ( /** @type {?} */(layers).getArray) === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @param {Array=} opt_array Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @param {Array=} opt_states Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserEvent(type, map, originalEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n _this.originalEvent = originalEvent;\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n _this.pixel_ = null;\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.coordinate_ = null;\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n this.originalEvent.preventDefault();\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n this.originalEvent.stopPropagation();\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n//# sourceMappingURL=MapBrowserEventType.js.map","/**\n * @module ol/pointer/EventType\n */\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { listen, unlistenByKey } from './events.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance\n ? moveTolerance * DEVICE_PIXEL_RATIO\n : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n if (this.element_.getRootNode &&\n this.element_.getRootNode() !== document) {\n this.dragListenerKeys_.push(listen(this.element_.getRootNode(), MapBrowserEventType.POINTERUP, this.handlePointerUp_, this));\n }\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n if (!this.originalPointerMoveEvent_ ||\n this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return (this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_);\n };\n /**\n * Clean up.\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n//# sourceMappingURL=MapProperty.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < count >> 1) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=TileState.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if ((tile.hifi && state === TileState.LOADED) ||\n state === TileState.ERROR ||\n state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return (65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution);\n}\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/tilegrid/common\n */\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport var DEFAULT_MAX_ZOOM = 42;\n/**\n * Default tile size.\n * @type {number}\n */\nexport var DEFAULT_TILE_SIZE = 256;\n//# sourceMappingURL=common.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { clamp } from './math.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { linearFindNearest } from './array.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = (2 * Math.PI) / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport GeometryType from './geom/GeometryType.js';\nimport Units from './proj/Units.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { METERS_PER_UNIT, createProjection, fromUserCoordinate, fromUserExtent, getUserProjection, toUserCoordinate, toUserExtent, } from './proj.js';\nimport { VOID } from './functions.js';\nimport { add as addCoordinate, equals as coordinatesEqual, rotate as rotateCoordinate, } from './coordinate.js';\nimport { assert } from './asserts.js';\nimport { assign } from './obj.js';\nimport { none as centerNone, createExtent } from './centerconstraint.js';\nimport { clamp, modulo } from './math.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\nimport { createSnapToN, createSnapToZero, disable, none as rotationNone, } from './rotationconstraint.js';\nimport { createSnapToPower, createSnapToResolutions, } from './resolutionconstraint.js';\nimport { easeOut } from './easing.js';\nimport { equals } from './coordinate.js';\nimport { getCenter, getForViewAndSize, getHeight, getWidth, isEmpty, } from './extent.js';\nimport { inAndOut } from './easing.js';\nimport { linearFindNearest } from './array.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean):void} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined) {\n var rotation = progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n var y = anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) +\n Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) +\n Math.abs(h * Math.cos(opt_rotation)),\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size)\n ? opt_size.slice()\n : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1)));\n }\n else {\n return (this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_));\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getViewportSize_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) ||\n typeof ( /** @type {?} */(geometryOrExtent).getSimplifiedGeometry) ===\n 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSize_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += ((padding[1] - padding[3]) / 2) * resolution;\n centerRotY += ((padding[0] - padding[2]) / 2) * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing,\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ? options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT[Units.DEGREES]) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\nexport default View;\n//# sourceMappingURL=View.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport EventType from './events/EventType.js';\nimport LayerGroup from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS, } from './has.js';\nimport { TRUE } from './functions.js';\nimport { apply as applyTransform, create as createTransform, } from './transform.js';\nimport { assert } from './asserts.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty, } from './extent.js';\nimport { fromUserCoordinate, toUserCoordinate } from './proj.js';\nimport { hasArea } from './size.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { removeNode } from './dom.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.style.pointerEvents = 'none';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.moveTolerance_ = options.moveTolerance;\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(\n /** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * Clean up.\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined\n ? opt_options.hitTolerance * this.frameState_.pixelRatio\n : 0;\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined\n ? options.hitTolerance * this.frameState_.pixelRatio\n : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined\n ? opt_options.hitTolerance * this.frameState_.pixelRatio\n : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = \n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top,\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string'\n ? document.getElementById(target)\n : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var originalEvent = /** @type {PointerEvent} */ (mapBrowserEvent.originalEvent);\n var eventType = originalEvent.type;\n if (eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN) {\n var rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : document;\n var target = rootNode === document\n ? /** @type {Node} */ (originalEvent.target)\n : /** @type {ShadowRoot} */ (rootNode).elementFromPoint(originalEvent.clientX, originalEvent.clientY);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === document ? document.documentElement : rootNode).contains(target)) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState &&\n this.hasListener(RenderEventType.RENDERCOMPLETE) &&\n !frameState.animate &&\n !this.tileQueue_.getTilesLoading() &&\n !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.mapBrowserEventHandler_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, this.moveTolerance_);\n for (var key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], this.handleMapBrowserEvent.bind(this));\n }\n this.viewport_.addEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_, false);\n this.viewport_.addEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n var keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this),\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState\n ? previousFrameState.declutterItems\n : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']),\n ]);\n }\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers &&\n typeof ( /** @type {?} */(options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] =\n options.view !== undefined ? options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.controls).getArray) === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.interactions).getArray) ===\n 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.overlays).getArray) === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { equals } from '../array.js';\nimport { inView } from '../layer/Layer.js';\nimport { removeChildren, replaceNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = _this.collapsible_ && !_this.collapsed_ ? _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ &&\n source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Attribution.prototype.render = function (mapEvent) {\n this.updateElement_(mapEvent.frameState);\n };\n return Attribution;\n}(Control));\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","/**\n * @module ol/interaction/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport { easeOut, linear } from '../easing.js';\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nvar Interaction = /** @class */ (function (_super) {\n __extends(Interaction, _super);\n /**\n * @param {InteractionOptions=} opt_options Options.\n */\n function Interaction(opt_options) {\n var _this = _super.call(this) || this;\n if (opt_options && opt_options.handleEvent) {\n _this.handleEvent = opt_options.handleEvent;\n }\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n _this.setActive(true);\n return _this;\n }\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n Interaction.prototype.getActive = function () {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n };\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n Interaction.prototype.handleEvent = function (mapBrowserEvent) {\n return true;\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Interaction.prototype.setActive = function (active) {\n this.set(InteractionProperty.ACTIVE, active);\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Interaction.prototype.setMap = function (map) {\n this.map_ = map;\n };\n return Interaction;\n}(BaseObject));\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n var currentCenter = view.getCenterInternal();\n if (currentCenter) {\n var center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate in the user projection.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n var currentZoom = view.getZoom();\n if (currentZoom === undefined) {\n return;\n }\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n var newResolution = view.getResolutionForZoom(newZoom);\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut,\n });\n}\nexport default Interaction;\n//# sourceMappingURL=Interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n DoubleClickZoom.prototype.handleEvent = function (mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n };\n return DoubleClickZoom;\n}(Interaction));\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { getValues } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nvar PointerInteraction = /** @class */ (function (_super) {\n __extends(PointerInteraction, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PointerInteraction(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, \n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n if (options.handleDownEvent) {\n _this.handleDownEvent = options.handleDownEvent;\n }\n if (options.handleDragEvent) {\n _this.handleDragEvent = options.handleDragEvent;\n }\n if (options.handleMoveEvent) {\n _this.handleMoveEvent = options.handleMoveEvent;\n }\n if (options.handleUpEvent) {\n _this.handleUpEvent = options.handleUpEvent;\n }\n if (options.stopDown) {\n _this.stopDown = options.stopDown;\n }\n /**\n * @type {boolean}\n * @protected\n */\n _this.handlingDownUpSequence = false;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedPointers_ = {};\n /**\n * @type {Array}\n * @protected\n */\n _this.targetPointers = [];\n return _this;\n }\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n PointerInteraction.prototype.getPointerCount = function () {\n return this.targetPointers.length;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleDownEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleDragEvent = function (mapBrowserEvent) { };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n PointerInteraction.prototype.handleEvent = function (mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n var stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.preventDefault();\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n var handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n }\n else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n var handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n };\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleMoveEvent = function (mapBrowserEvent) { };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleUpEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n PointerInteraction.prototype.stopDown = function (handled) {\n return handled;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n PointerInteraction.prototype.updateTrackedPointers_ = function (mapBrowserEvent) {\n if (isPointerDraggingEvent(mapBrowserEvent)) {\n var event_1 = mapBrowserEvent.originalEvent;\n var id = event_1.pointerId.toString();\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n delete this.trackedPointers_[id];\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedPointers_[id] = event_1;\n }\n else if (id in this.trackedPointers_) {\n // update only when there was a pointerdown event for this pointer\n this.trackedPointers_[id] = event_1;\n }\n this.targetPointers = getValues(this.trackedPointers_);\n }\n };\n return PointerInteraction;\n}(Interaction));\n/**\n * @param {Array} pointerEvents List of events.\n * @return {import(\"../pixel.js\").Pixel} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n var length = pointerEvents.length;\n var clientX = 0;\n var clientY = 0;\n for (var i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return [clientX / length, clientY / length];\n}\n/**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} Whether the event is a pointerdown, pointerdrag\n * or pointerup event.\n */\nfunction isPointerDraggingEvent(mapBrowserEvent) {\n var type = mapBrowserEvent.type;\n return (type === MapBrowserEventType.POINTERDOWN ||\n type === MapBrowserEventType.POINTERDRAG ||\n type === MapBrowserEventType.POINTERUP);\n}\nexport default PointerInteraction;\n//# sourceMappingURL=Pointer.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { MAC, WEBKIT } from '../has.js';\nimport { assert } from '../asserts.js';\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n var conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n var pass = true;\n for (var i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport var altKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport var altShiftKeysOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport var focus = function (event) {\n return event.target.getTargetElement().contains(document.activeElement);\n};\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport var focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport var always = TRUE;\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport var click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport var mouseActionButton = function (mapBrowserEvent) {\n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport var never = FALSE;\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport var pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport var singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport var doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport var noModifierKeys = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport var platformModifierKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport var shiftKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `\n

\n
\n \n \n \n
\n \n \n
\n ")}},{key:"onPositionDelete",value:function(){var t=this;je.isConfirmed(de._("positiondelwarn",this.positionIndex+1,Mt.htmlEncode(this.position.trackname)))&&this.position.delete().then((function(){var e,n=t.state.currentTrack;t.state.currentTrack=null,Yt()(e=n.positions).call(e,t.positionIndex,1),n.recalculatePositions(),t.state.currentTrack=n,t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"updateImage",value:function(){var t=a.a.resolve();return this.model.image!==this.position.image&&(t=null===this.model.image?this.position.imageDelete():this.position.imageAdd(this.fileEl.files[0])),t}},{key:"onPositionUpdate",value:function(){var t,e=this;kt()(t=this.model.comment).call(t),this.validate()&&(this.position.comment=this.model.comment,this.updateImage().then((function(){return e.position.save()})).then((function(){lt.forceUpdate(e.state,"currentTrack"),e.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){return!(this.model.comment===this.position.comment&&this.model.image===this.position.image)}}]),n}(be);function Qe(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var Ke=function(t){R()(n,t);var e=Qe(n);function n(t){var r;return c()(this,n),(r=e.call(this,{markerOver:null,markerSelect:null,onMenuToggle:null,speedVisible:!1,altitudeVisible:!1})).state=t,r.mapElement=document.querySelector("#map-canvas"),r.speedEl=r.getBoundElement("speedVisible"),r.altitudeEl=r.getBoundElement("altitudeVisible"),r.styleEl=r.getBoundElement("trackColor"),r.savedBounds=null,r.api=null,r}return h()(n,[{key:"init",value:function(){return this.bindAll(),this.setObservers(),this}},{key:"loadMapAPI",value:function(t){var e=this,n=this.api;if(this.api=null,n){try{this.savedBounds=n.getBounds()}catch(t){this.savedBounds=null}n.cleanup()}(n=this.getApi(t)).init().then((function(){e.api=n,e.onReady()})).catch((function(e){var n=de._("apifailure",t);e&&e.message&&(n+=" (".concat(e.message,")")),Ce.error(n,e),he.mapApi="gmaps"===t?"openlayers":"gmaps"}))}},{key:"getApi",value:function(t){return"gmaps"===t?new Ge(this):new Ze(this)}},{key:"onReady",value:function(){if(this.state.currentTrack){var t=!0;this.savedBounds&&(this.api.zoomToBounds(this.savedBounds),t=!1),this.displayTrack(this.state.currentTrack,t)}}},{key:"setObservers",value:function(){var t=this;he.onChanged("mapApi",(function(e){t.loadMapAPI(e),t.toggleStyleOptions(),t.toggleStyleMenu()})),this.state.onChanged("currentTrack",(function(e){t.api&&(t.api.clearMap(),e&&(lt.observe(e,"positions",(function(){t.displayTrack(e,!1),t.api.zoomToExtent()})),t.displayTrack(e,!0)),t.toggleStyleOptions())})),this.state.onChanged("history",(function(){var e=t.state.history;t.api&&e&&!e.trackId&&(e.mapApi?he.mapApi=e.mapApi:(e.mapParams?t.api.updateState(e.mapParams):t.api.zoomToExtent(),t.state.history=null))})),this.model.onMenuToggle=function(){return t.onMapResize()},this.onChanged("speedVisible",(function(e){e&&(t.model.altitudeVisible=!1),t.setTrackStyle()})),this.onChanged("altitudeVisible",(function(e){e&&(t.model.speedVisible=!1),t.setTrackStyle()}))}},{key:"displayTrack",value:function(t,e){var n=this;this.state.jobStart(),e&&this.state.history&&this.state.history.mapParams&&(this.api.updateState(this.state.history.mapParams),e=!1),this.state.history=null,this.setTrackStyle(),this.api.displayTrack(t,e).finally((function(){return n.state.jobStop()}))}},{key:"onMapResize",value:function(){this.api&&this.api.updateSize()}},{key:"toggleStyleOptions",value:function(){var t=this.state.currentTrack;this.speedEl.disabled=!t||!t.hasSpeeds||t.length<=1,this.altitudeEl.disabled=!t||!t.hasAltitudes||t.length<=1}},{key:"toggleStyleMenu",value:function(){"openlayers"===he.mapApi?this.styleEl.style.display="block":this.styleEl.style.display="none"}},{key:"setTrackStyle",value:function(){var t=this.state.currentTrack;this.api&&t&&(this.model.speedVisible&&t.hasSpeeds?this.setSpeedStyle():this.model.altitudeVisible&&t.hasAltitudes?this.setAltitudeStyle():this.api.setTrackDefaultStyle())}},{key:"setSpeedStyle",value:function(){var t=this.state.currentTrack,e={minValue:0,maxValue:t.maxSpeed,minColor:[0,255,0],maxColor:[255,0,0]};this.api.setTrackGradientStyle(t,"speed",e)}},{key:"setAltitudeStyle",value:function(){var t=this.state.currentTrack,e={minValue:t.minAltitude,maxValue:t.maxAltitude,minColor:[0,255,0],maxColor:[255,0,0]};this.api.setTrackGradientStyle(t,"altitude",e)}},{key:"getPopupElement",value:function(t){var e,n,r,o,a,s,l,u,c,f,h,d,p,v,m,y,g,b,x,w,k,S,E,A,L,M,O,P,_,C,T,I,j,D=this,U=this.state.currentTrack.positions[t],z=this.state.currentTrack.length,N=this.state.currentTrack.user,R=pe.user&&(pe.isAdmin||pe.user.id===N.id),V="–––",B="–––";if(U.timestamp>0){var F,H=Mt.getTimeString(new Date(1e3*U.timestamp));V=H.date,B=i()(F="".concat(H.time,'')).call(F,H.zone,"")}var q,G="";if("gps"===U.provider)G=i()(q=' '.concat(de._(');else if("network"===U.provider){var X;G=i()(X=' '.concat(de._(')}var Y="";R&&(Y=''.concat(de._("editposition"),""));var Z,W,J,$,Q,K,tt,et,nt,rt="";this.state.showLatest||(rt=i()(Z=i()(W=i()(J=i()($=i()(Q=i()(K=i()(tt=i()(et=i()(nt='
\n '.concat(de._(
\n ')).call(nt,de._( ')).call(tt,de.getLocaleDuration(U.totalSeconds),'
\n ')).call(K,de._( ')).call($,de.getLocaleSpeed(U.totalSpeed,!0),'
\n ')).call(J,de._( ')).call(Z,de.getLocaleDistanceMajor(U.totalMeters,!0),"
\n
"));var it=i()(e=i()(n=i()(r=i()(o=i()(a=i()(s=i()(l=i()(u=i()(c=i()(f=i()(h=i()(d=i()(p=i()(v=i()(m=i()(y=i()(g=i()(b=i()(x=i()(w=i()(k=i()(S=i()(E='
\n
'.concat(de._( ')).call(S,Mt.htmlEncode(U.username),'
\n
')).call(k,de._( ')).call(x,Mt.htmlEncode(U.trackname),'
\n
\n
\n ')).call(b,U.hasComment()?'
'.concat(Mt.htmlEncode(U.comment).replace(/\n/,"
"),"
"):"","\n ")).call(g,U.hasImage()?'
image
'):"",'\n
\n ')).call(y,de._( ')).call(v,V,'
\n ')).call(p,de._( ')).call(h,B,"
\n ")).call(f,null!==U.speed?i()(A=i()(L=''.concat(de._(')).call(A,de.getLocaleSpeed(U.speed,!0),"
"):"","\n ")).call(c,null!==U.altitude?i()(M=i()(O=''.concat(de._(')).call(M,de.getLocaleAltitude(U.altitude,!0),"
"):"","\n ")).call(u,null!==U.accuracy?i()(P=i()(_=i()(C=''.concat(de._(')).call(_,de.getLocaleAccuracy(U.accuracy,!0))).call(P,G,"
"):"","\n ")).call(l,null!==U.bearing?i()(T=i()(I=i()(j=''.concat(de._(')).call(T,U.bearing,"°
"):"",'\n ')).call(s,de._(')).call(o,de.getLocaleCoordinates(U),"
\n
")).call(r,rt,'
\n
')).call(n,de._("pointof",t+1,z),"
")).call(e,Y,"
"),ot=document.createElement("div");(ot.setAttribute("id","popup"),ot.innerHTML=it,U.hasImage())&&(ot.querySelector("#pimage img").onclick=function(){var t=new je('image'));t.element.querySelector("#modal-close").onclick=function(){return t.destroy()},t.element.classList.add("image"),t.show()});R&&(ot.querySelector("#editposition").onclick=function(){new $e(D.state,t).init()});return ot}}],[{key:"getMarkerPath",value:function(t){return t?"M15,34.911c0,0,0.359-3.922,1.807-8.588c0.414-1.337,1.011-2.587,2.495-4.159c1.152-1.223,3.073-2.393,3.909-4.447c1.681-6.306-3.676-9.258-8.211-9.258c-4.536,0-9.893,2.952-8.211,9.258c0.836,2.055,2.756,3.225,3.91,4.447c1.484,1.572,2.08,2.822,2.495,4.159C14.64,30.989,15,34.911,15,34.911z M18,15.922c0,1.705-1.342,3.087-2.999,3.087c-1.657,0-3-1.382-3-3.087c0-1.704,1.343-3.086,3-3.086C16.658,12.836,18,14.218,18,15.922z":"M14.999,34.911c0,0,0.232-1.275,1.162-4.848c0.268-1.023,0.652-1.98,1.605-3.184c0.742-0.937,1.975-1.832,2.514-3.404c1.082-4.828-2.363-7.088-5.281-7.088c-2.915,0-6.361,2.26-5.278,7.088c0.538,1.572,1.771,2.468,2.514,3.404c0.953,1.203,1.337,2.16,1.604,3.184C14.77,33.635,14.999,34.911,14.999,34.911z"}},{key:"getMarkerExtra",value:function(t){var e,n=t?"M26.074,13.517":"M23.328,20.715",r=t?"M28.232,10.942":"M25.486,18.141";return i()(e='\n ')}},{key:"getSvgSrc",value:function(t,e,r){var o,a,s=i()(o=i()(a='\n ')).call(o,r?n.getMarkerExtra(e):"","");return"data:image/svg+xml,".concat(encodeURIComponent(s))}}]),n}(be),tn=n(170),en=n.n(tn);function nn(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var rn=function(t){R()(n,t);var e=nn(n);function n(t){var r;return c()(this,n),(r=e.call(this,{onTrackDelete:null,onTrackUpdate:null,onCancel:null,trackname:""})).track=t.state.currentTrack,r.trackVM=t,r.model.onTrackDelete=function(){return r.onTrackDelete()},r.model.onTrackUpdate=function(){return r.onTrackUpdate()},r.model.onCancel=function(){return r.onCancel()},r}return h()(n,[{key:"init",value:function(){var t=this.getHtml();this.dialog=new je(t),this.dialog.show(),this.bindAll(this.dialog.element)}},{key:"getHtml",value:function(){var t,e,n,r,o,a;return i()(t=i()(e=i()(n=i()(r=i()(o=i()(a='\n
")).call(a,de._("editingtrack","".concat(Mt.htmlEncode(this.track.name),"")),'
\n
\n
\n \n \n
\n \n \n
\n
")}},{key:"onTrackDelete",value:function(){var t=this;je.isConfirmed(de._("trackdelwarn",Mt.htmlEncode(this.track.name)))&&this.track.delete().then((function(){t.trackVM.onTrackDeleted(),t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onTrackUpdate",value:function(){var t=this;this.validate()&&(this.track.setName(this.model.trackname),this.track.saveMeta().then((function(){return t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){return this.model.trackname!==this.track.name&&(!!this.model.trackname||(Ce.error(de._("allrequired")),!1))}}]),n}(be);function on(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var an=function(t){R()(n,t);var e=on(n);function n(t){var r;c()(this,n),(r=e.call(this,{trackList:[],currentTrackId:"",showLatest:!1,autoReload:!1,inputFile:!1,summary:!1,onReload:null,onExportGpx:null,onExportKml:null,onImportGpx:null,onTrackEdit:null})).setClickHandlers();var i=document.querySelector("#track");return r.importEl=document.querySelector("#input-file"),r.editEl=r.getBoundElement("onTrackEdit"),r.select=new ft(i),r.state=t,r.timerId=0,r}return h()(n,[{key:"init",value:function(){return this.setObservers(),this.bindAll(),this}},{key:"setObservers",value:function(){var t=this;this.onChanged("trackList",(function(e){t.select.setOptions(e)})),this.onChanged("currentTrackId",(function(e){t.onTrackSelect(e)})),this.onChanged("inputFile",(function(e){e&&t.onImport()})),this.onChanged("autoReload",(function(e){t.autoReload(e)})),this.onChanged("showLatest",(function(e){t.state.showLatest=e,t.onReload(!0)})),this.state.onChanged("currentUser",(function(e){e?(t.loadTrackList(),pe.user&&(pe.isAdmin||pe.user.id===e.id)&&n.setMenuVisible(t.editEl,!0)):(t.model.currentTrackId="",t.model.trackList=[],n.setMenuVisible(t.editEl,!1))})),this.state.onChanged("currentTrack",(function(e){t.renderSummary(),e&<.observe(e,"positions",(function(){t.renderSummary()}))})),this.state.onChanged("showAllUsers",(function(e){e&&t.loadAllUsersPosition()})),he.onChanged("interval",(function(){t.timerId&&(t.stopAutoReload(),t.startAutoReload())})),this.state.onChanged("history",(function(e){e&&!e.userId&&e.trackId&&(t.model.currentTrackId=e.trackId.toString())}))}},{key:"setClickHandlers",value:function(){var t=this;this.model.onReload=function(){return t.onReload()};var e=function(e){return function(){t.state.currentTrack&&t.state.currentTrack.export(e)}};this.model.onExportGpx=e("gpx"),this.model.onExportKml=e("kml"),this.model.onImportGpx=function(){return t.importEl.click()},this.model.onTrackEdit=function(){return t.showDialog()}}},{key:"onReload",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.state.showLatest?this.state.showAllUsers?this.loadAllUsersPosition():this.state.currentUser&&this.onUserLastPosition():this.state.currentTrack instanceof Ut?this.onTrackUpdate(t):this.state.currentTrack instanceof Tt?this.state.currentTrack=null:this.state.currentUser&&this.loadTrackList()}},{key:"onImport",value:function(){var t=this,e=this.importEl.parentElement,n=e.elements.MAX_FILE_SIZE.value;this.importEl.files&&1===this.importEl.files.length&&this.importEl.files[0].size>n?Ce.error(de._("isizefailure",n)):pe.isAuthenticated?(this.state.jobStart(),Ut.import(e,pe.user).then((function(e){e.length&&(e.length>1&&Ce.toast(de._("imultiple",e.length)),t.model.trackList=i()(e).call(e,t.model.trackList),t.model.currentTrackId=e[0].listValue)})).catch((function(t){var e;return Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){t.model.inputFile="",t.state.jobStop()}))):Ce.error(de._("notauthorized"))}},{key:"onTrackSelect",value:function(t){var e,n=this,r=Y()(e=this.model.trackList).call(e,(function(e){return e.listValue===t}));r?r.isEqualTo(this.state.currentTrack)||(this.state.jobStart(),r.fetchPositions().then((function(){var t;i()(t="currentTrack id: ".concat(r.id,", loaded ")).call(t,r.length," positions"),n.state.currentTrack=r,n.model.showLatest&&(n.model.showLatest=!1)})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return n.state.jobStop()}))):this.state.currentTrack=null}},{key:"onTrackUpdate",value:function(t){t&&this.state.currentTrack.clear(),this.state.currentTrack.fetchPositions().catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserLastPosition",value:function(){var t=this;this.state.currentUser.fetchLastPosition().then((function(e){var n;e&&(Y()(n=t.model.trackList).call(n,(function(t){return t.listValue===e.listValue}))||t.model.trackList.unshift(e),t.state.currentTrack=e,t.model.currentTrackId=e.listValue)})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"loadAllUsersPosition",value:function(){var t=this;this.state.jobStart(),Tt.fetchLatest().then((function(e){e&&(t.model.trackList=[],t.model.currentTrackId="",t.state.currentTrack=e)})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return t.state.jobStop()}))}},{key:"loadTrackList",value:function(){var t=this;this.state.jobStart(),Ut.fetchList(this.state.currentUser).then((function(e){t.model.trackList=e,e.length?t.state.showLatest?t.onUserLastPosition():t.state.history?t.model.currentTrackId=t.state.history.trackId.toString():t.model.currentTrackId=e[0].listValue:t.model.currentTrackId=""})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return t.state.jobStop()}))}},{key:"showDialog",value:function(){new rn(this).init()}},{key:"onTrackDeleted",value:function(){var t,e,n=Wt()(t=this.model.trackList).call(t,this.state.currentTrack);(this.state.currentTrack=null,-1!==n)&&(Yt()(e=this.model.trackList).call(e,n,1),this.model.trackList.length?(n>=this.model.trackList.length&&(n=this.model.trackList.length-1),this.model.currentTrackId=this.model.trackList[n].listValue):this.model.currentTrackId="")}},{key:"autoReload",value:function(t){t?this.startAutoReload():this.stopAutoReload()}},{key:"startAutoReload",value:function(){var t=this;this.timerId=en()((function(){return t.onReload()}),1e3*he.interval)}},{key:"stopAutoReload",value:function(){clearInterval(this.timerId),this.timerId=0}},{key:"renderSummary",value:function(){var t=this.state.currentTrack;if(t&&t.hasPositions){var e=t.positions[t.length-1];if(this.state.showLatest){var n,r,o,a=new Date,s=new Date(1e3*e.timestamp),l=Mt.getTimeString(s),u=s.toDateString()!==a.toDateString()?"".concat(l.date,"
"):"",c=i()(n="".concat(l.time,'')).call(n,l.zone,"");this.model.summary=i()(r=i()(o='\n \n ")).call(o,u,"\n ")).call(r,c)}else{var f,h,d,p,v,m,y,g,b=i()(f=i()(h=i()(d=i()(p=i()(v=i()(m='\n \n
')).call(m,de._( ')).call(p,de.getLocaleDistanceMajor(e.totalMeters,!0),'
\n
')).call(d,de._( ')).call(f,de.getLocaleDuration(e.totalSeconds),"
");if(t.hasSpeeds)b+=i()(y=i()(g='
'.concat(de._( ')).call(y,de.getLocaleSpeed(t.maxSpeed,!0),"
");if(t.hasAltitudes){var x,w,k,S="".concat(de.getLocaleAltitude(t.maxAltitude,!0));if(t.minAltitude!==t.maxAltitude)S=i()(k="".concat(de.getLocaleAltitude(t.minAltitude),"–")).call(k,S);b+=i()(x=i()(w='
'.concat(de._( ')).call(x,S,"
")}this.model.summary=b}}else this.model.summary=""}}],[{key:"setMenuVisible",value:function(t,e){t&&(e?t.classList.remove("menu-hidden"):t.classList.add("menu-hidden"))}}]),n}(be),sn=n(171),ln=n.n(sn);function un(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var cn=function(t){R()(n,t);var e=un(n);function n(t,r){var i;return c()(this,n),(i=e.call(this,{onUserDelete:null,onUserUpdate:null,onPassChange:null,onUserAdd:null,onCancel:null,passVisibility:!1,login:null,password:null,password2:null,oldPassword:null,admin:!1})).user=t.state.currentUser,i.type=r,i.userVM=t,i.model.onUserDelete=function(){return i.onUserDelete()},i.model.onUserUpdate=function(){return i.onUserUpdate()},i.model.onPassChange=function(){return i.onPassChange()},i.model.onUserAdd=function(){return i.onUserAdd()},i.model.onCancel=function(){return i.onCancel()},i}return h()(n,[{key:"init",value:function(){var t=this.getHtml();this.dialog=new je(t),this.dialog.show(),this.bindAll(this.dialog.element);var e=this.getBoundElement("passInput");e&&this.onChanged("passVisibility",(function(){"none"===e.style.display?e.style.display="block":e.style.display="none"}))}},{key:"onUserDelete",value:function(){var t=this;je.isConfirmed(de._("userdelwarn",Mt.htmlEncode(this.user.login)))&&this.user.delete().then((function(){t.userVM.onUserDeleted(),t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserUpdate",value:function(){var t=this;if(this.validate()){var e=this.model.passVisibility?this.model.password:null;this.user.modify(this.model.admin,e).then((function(){return t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}}},{key:"onPassChange",value:function(){var t=this;this.model.passVisibility=!0,this.validate()&&pe.user.setPassword(this.model.password,this.model.oldPassword).then((function(){return t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserAdd",value:function(){var t=this;this.model.passVisibility=!0,this.validate()&&Vt.add(this.model.login,this.model.password,this.model.admin).then((function(e){t.userVM.onUserAdded(e),t.dialog.destroy()})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){if("add"===this.type){if(!this.model.login)return Ce.error(de._("allrequired")),!1}else if("pass"===this.type&&!this.model.oldPassword)return Ce.error(de._("allrequired")),!1;if(this.model.passVisibility){if(!this.model.password||!this.model.password2)return Ce.error(de._("allrequired")),!1;if(this.model.password!==this.model.password2)return Ce.error(de._("passnotmatch")),!1;if(!he.validPassStrength(this.model.password))return Ce.error(de.getLocalePassRules()),!1}return!0}},{key:"getHtml",value:function(){var t,e,n,r,o,a,s,l,u,c,f,h,d,p,v,m,y,g,b,x,w,k,S,E,A="",L="";switch(this.type){case"add":S="onUserAdd",L=i()(t="\n '),E=i()(e=i()(n=i()(r=i()(o="\n \n \n \n \n ');break;case"edit":S="onUserUpdate",A=i()(a='\n
")).call(a,de._("editinguser","".concat(Mt.htmlEncode(this.user.login),"")),'
\n
'),E=i()(s=i()(l=i()(u=i()(c=i()(f=i()(h="\n
\n
\n \n \n \n \n
\n \n ");break;case"pass":S="onPassChange",E=i()(d=i()(p=i()(v=i()(m=i()(y="\n \n \n \n \n ');break;default:throw new Error("Unknown dialog type: ".concat(this.type))}return i()(g=i()(b=i()(x=i()(w=i()(k="".concat(A,'\n
\n ')).call(k,L,"\n ")).call(w,E,'\n
\n \n \n
\n
")}}]),n}(be);function fn(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var hn=function(t){R()(n,t);var e=fn(n);function n(t){var r;c()(this,n),(r=e.call(this,{userList:[],currentUserId:"0",onUserEdit:null,onUserAdd:null,onPasswordChange:null})).setClickHandlers();var i=document.querySelector("#user");return r.editEl=r.getBoundElement("onUserEdit"),r.select=new ft(i,de._("suser"),"- ".concat(de._("allusers")," -")),r.state=t,r}return h()(n,[{key:"setClickHandlers",value:function(){var t=this;this.model.onUserEdit=function(){return t.showDialog("edit")},this.model.onUserAdd=function(){return t.showDialog("add")},this.model.onPasswordChange=function(){return t.showDialog("pass")}}},{key:"init",value:function(){var t=this;return this.setObservers(this.state),this.bindAll(),Vt.fetchList().then((function(e){if(t.model.userList=e,e.length){var n=e[0].listValue;if(t.state.history)n=t.state.history.userId.toString();else if(pe.isAuthenticated){var r,i=Y()(r=t.model.userList).call(r,(function(t){return t.listValue===pe.user.listValue}));i&&(n=i.listValue)}t.model.currentUserId=n}})).catch((function(t){var e;Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})),this}},{key:"setObservers",value:function(t){var e=this;this.onChanged("userList",(function(t){e.select.setOptions(t)})),this.onChanged("currentUserId",(function(t){var r;e.state.showAllUsers=t===ft.allValue,e.state.currentUser=Y()(r=e.model.userList).call(r,(function(e){return e.listValue===t}))||null,n.setMenuVisible(e.editEl,null!==e.state.currentUser&&!e.state.currentUser.isEqualTo(pe.user))})),t.onChanged("showLatest",(function(t){t?e.select.showAllOption():e.select.hideAllOption()})),t.onChanged("history",(function(t){t&&t.userId&&(e.model.currentUserId=t.userId.toString())}))}},{key:"showDialog",value:function(t){new cn(this,t).init()}},{key:"onUserAdded",value:function(t){var e;this.model.userList.push(t),ln()(e=this.model.userList).call(e,(function(t,e){return t.login>e.login?1:-1}))}},{key:"onUserDeleted",value:function(){var t,e,n=Wt()(t=this.model.userList).call(t,this.state.currentUser);(this.state.currentUser=null,-1!==n)&&(Yt()(e=this.model.userList).call(e,n,1),this.model.userList.length?(n>=this.model.userList.length&&(n=this.model.userList.length-1),this.model.currentUserId=this.model.userList[n].listValue):this.model.currentUserId="0")}}],[{key:"setMenuVisible",value:function(t,e){t&&(e?t.classList.remove("menu-hidden"):t.classList.add("menu-hidden"))}}]),n}(be),dn=n(172),pn=n.n(dn),vn=function(){function t(e){c()(this,t),this.state=e,this.skipPush=!1}return h()(t,[{key:"init",value:function(){var t=this;return this.state.onChanged("mapParams",(function(){return t.pushState()})),window.addEventListener("popstate",(function(e){if(null!==e.state){var n=t.state.currentTrack,r=t.state.currentUser,i={title:e.state.title,userId:r&&r.id===e.state.userId?null:e.state.userId,trackId:n&&n.id===e.state.trackId?null:e.state.trackId,mapApi:he.mapApi===e.state.mapApi?null:e.state.mapApi,mapParams:e.state.mapParams};t.onPop(i),t.skipPush=!0}})),this}},{key:"onPop",value:function(t){var e,n,r;(t&&i()(e=i()(n="".concat(t.trackId,"/")).call(n,t.mapApi,"/")).call(e,t.mapParams),this.state.history=t,t)&&(document.title=i()(r="".concat(de._("title")," ")).call(r,t.title))}},{key:"pushState",value:function(){if(this.skipPush)this.skipPush=!1;else if(null!==this.state.currentUser&&null!==this.state.currentTrack){var e=this.getState(),n=window.history.state;if(!n||!Mt.isDeepEqual(n,e)){var r,o,a=t.getHash(e);i()(r="pushState: ".concat(a," => ")).call(r,e),window.history.pushState(e,e.title,a),document.title=i()(o="".concat(de._("title")," ")).call(o,e.title)}}}},{key:"getState",value:function(){return{title:this.state.currentTrack.name,userId:this.state.currentUser.id,trackId:this.state.currentTrack.id,mapApi:he.mapApi,mapParams:this.state.mapParams}}}],[{key:"parseHash",value:function(){return t.parse(window.location.hash)}},{key:"parse",value:function(t){var e=t.replace("#","").split("/");pn()(e).call(e);var n=Et()(e.pop());if(!isNaN(n)){var r="openlayers";"g"===e.pop()&&(r="gmaps");var o=null;return e.length>=4&&((o={}).center=[xt()(e.pop()),xt()(e.pop())],o.zoom=xt()(e.pop()),o.rotation=xt()(e.pop())),Ut.getMeta(n).then((function(t){var e=t.userId;return{title:t.name,userId:e,trackId:n,mapApi:r,mapParams:o}})).catch((function(t){var e;return i()(e="Ignoring unknown track ".concat(n," ")).call(e,t),null}))}return a.a.resolve(null)}},{key:"getHash",value:function(t){var e,n,r,o=i()(e="#".concat(t.trackId,"/")).call(e,t.mapApi.charAt(0));t.mapParams&&(o+=i()(n="/".concat(t.mapParams.center[0],"/")).call(n,t.mapParams.center[1]),o+=i()(r="/".concat(t.mapParams.zoom,"/")).call(r,t.mapParams.rotation));return o}}]),t}(),mn=function(){function t(e){c()(this,t),this.spinner=null,this.state=e}return h()(t,[{key:"init",value:function(){var t=this;this.state.onChanged("activeJobs",(function(e){e>0?t.spinner||(t.spinner=Ce.spinner()):t.spinner&&(t.spinner.destroy(),t.spinner=null)}))}}]),t}(),yn=function(){function t(){c()(this,t),this.currentTrack=null,this.currentUser=null,this.showLatest=!1,this.showAllUsers=!1,this.activeJobs=0,this.mapParams=null,this.history=null}return h()(t,[{key:"jobStart",value:function(){this.activeJobs++}},{key:"jobStop",value:function(){this.activeJobs--}},{key:"onChanged",value:function(t,e){lt.observe(this,t,e)}}]),t}(),gn=ce.waitForDom(),bn=fe.initialize(),xn=vn.parseHash();a.a.all([gn,bn,xn]).then((function(t){var e,n,r,i,o,a,s,l,u,c;e=t[2],n=new yn,r=new vn(n),i=new mn(n),o=new qe(n),a=new hn(n),s=new an(n),l=new Ke(n),u=new Ee(n),c=new Ve(n),r.init().onPop(e),i.init(),o.init(),a.init(),s.init(),l.init().loadMapAPI(he.mapApi),u.init(),c.init(),l.onChanged("markerOver",(function(t){null!==t?u.onPointOver(t):u.onPointOut()})),l.onChanged("markerSelect",(function(t){null!==t?u.onPointSelect(t):u.onPointUnselect()})),u.onChanged("pointSelected",(function(t){null!==t&&l.api.animateMarker(t)}))})).catch((function(t){var e;return Ce.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t))}))}]); +!function(){var t,e,n={6012:function(t,e,n){t.exports=n(3241)},5424:function(t,e,n){t.exports=n(3579)},4375:function(t,e,n){t.exports=n(3399)},7245:function(t,e,n){t.exports=n(7605)},5901:function(t,e,n){t.exports=n(7768)},6824:function(t,e,n){t.exports=n(8687)},1467:function(t,e,n){t.exports=n(6127)},5206:function(t,e,n){t.exports=n(6894)},5281:function(t,e,n){t.exports=n(6553)},2717:function(t,e,n){t.exports=n(1830)},2609:function(t,e,n){t.exports=n(4721)},4696:function(t,e,n){t.exports=n(5162)},5877:function(t,e,n){t.exports=n(6845)},1060:function(t,e,n){t.exports=n(9886)},509:function(t,e,n){t.exports=n(2939)},7526:function(t,e,n){t.exports=n(4205)},6235:function(t,e,n){t.exports=n(7772)},222:function(t,e,n){t.exports=n(4396)},589:function(t,e,n){t.exports=n(4242)},1624:function(t,e,n){t.exports=n(6841)},540:function(t,e,n){t.exports=n(1997)},9989:function(t,e,n){t.exports=n(9990)},9733:function(t,e,n){t.exports=n(8430)},8409:function(t,e,n){t.exports=n(4682)},9540:function(t,e,n){t.exports=n(8645)},2706:function(t,e,n){t.exports=n(9536)},543:function(t,e,n){t.exports=n(5227)},6544:function(t,e,n){t.exports=n(2556)},6206:function(t,e,n){t.exports=n(4823)},8396:function(t,e,n){t.exports=n(2255)},6130:function(t,e,n){t.exports=n(1209)},6330:function(t,e,n){t.exports=n(1483)},6950:function(t,e,n){t.exports=n(2162)},2554:function(t,e,n){t.exports=n(1665)},457:function(t,e,n){t.exports=n(8173)},7112:function(t,e,n){t.exports=n(263)},5244:function(t,e,n){t.exports=n(5204)},4061:function(t,e,n){t.exports=n(6017)},8889:function(t,e,n){t.exports=n(8945)},6142:function(t,e,n){t.exports=n(830)},1858:function(t,e,n){t.exports=n(343)},9533:function(t,e,n){t.exports=n(8993)},7828:function(t,e,n){t.exports=n(688)},8975:function(t,e,n){t.exports=n(1422)},8680:function(t,e,n){t.exports=n(9259)},5726:function(t,e,n){t.exports=n(8327)},3668:function(t,e,n){t.exports=n(6438)},61:function(t,e,n){t.exports=n(5365)},6460:function(t,e,n){t.exports=n(4338)},1685:function(t,e,n){t.exports=n(2538)},215:function(t,e,n){t.exports=n(499)},2829:function(t,e,n){t.exports=n(488)},6538:function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n":">",'"':""","'":"'"},e.serialize=function(t){return null==t?t:("number"==typeof t?t=""+t:"object"===o(t)&&(t=JSON.stringify({data:t})),Object.keys(e.escapingMap).reduce((function(t,n){return e.replaceAll(t,n,e.escapingMap[n])}),t))},e.deserialize=function(t){if("string"!=typeof t)return t;t=Object.keys(e.escapingMap).reduce((function(t,n){return e.replaceAll(t,e.escapingMap[n],n)}),t);try{t=void 0!==(t=JSON.parse(t)).data?t.data:t}catch(t){}return t},e.createSvg=function(t,n,r,i){var o;return n=n||"100%",r=r||"100%",Array.prototype.slice.call(t.querySelectorAll("svg")).filter((function(t){return t.getAttributeNS(e.namespaces.xmlns,"ct")})).forEach((function(e){t.removeChild(e)})),(o=new e.Svg("svg").attr({width:n,height:r}).addClass(i))._node.style.width=n,o._node.style.height=r,t.appendChild(o._node),o},e.normalizeData=function(t,n,r){var i,o={raw:t,normalized:{}};return o.normalized.series=e.getDataArray({series:t.series||[]},n,r),i=o.normalized.series.every((function(t){return t instanceof Array}))?Math.max.apply(null,o.normalized.series.map((function(t){return t.length}))):o.normalized.series.length,o.normalized.labels=(t.labels||[]).slice(),Array.prototype.push.apply(o.normalized.labels,e.times(Math.max(0,i-o.normalized.labels.length)).map((function(){return""}))),n&&e.reverseData(o.normalized),o},e.safeHasProperty=function(t,e){return null!==t&&"object"===o(t)&&t.hasOwnProperty(e)},e.isDataHoleValue=function(t){return null==t||"number"==typeof t&&isNaN(t)},e.reverseData=function(t){t.labels.reverse(),t.series.reverse();for(var e=0;ei.high&&(i.high=n),a&&n0||(i.high=1),i.low=0)),i},e.isNumeric=function(t){return null!==t&&isFinite(t)},e.isFalseyButZero=function(t){return!t&&0!==t},e.getNumberOrUndefined=function(t){return e.isNumeric(t)?+t:void 0},e.isMultiValue=function(t){return"object"===o(t)&&("x"in t||"y"in t)},e.getMultiValue=function(t,n){return e.isMultiValue(t)?e.getNumberOrUndefined(t[n||"y"]):e.getNumberOrUndefined(t)},e.rho=function(t){if(1===t)return t;function e(t,n){return t%n==0?n:e(n,t%n)}function n(t){return t*t+1}var r,i=2,o=2;if(t%2==0)return 2;do{i=n(i)%t,o=n(n(o))%t,r=e(Math.abs(i-o),t)}while(1===r);return r},e.getBounds=function(t,n,r,i){var o,a,s,l=0,u={high:n.high,low:n.low};u.valueRange=u.high-u.low,u.oom=e.orderOfMagnitude(u.valueRange),u.step=Math.pow(10,u.oom),u.min=Math.floor(u.low/u.step)*u.step,u.max=Math.ceil(u.high/u.step)*u.step,u.range=u.max-u.min,u.numberOfSteps=Math.round(u.range/u.step);var c=e.projectLength(t,u.step,u)=r)u.step=1;else if(i&&f=r)u.step=f;else for(;;){if(c&&e.projectLength(t,u.step,u)<=r)u.step*=2;else{if(c||!(e.projectLength(t,u.step/2,u)>=r))break;if(u.step/=2,i&&u.step%1!=0){u.step*=2;break}}if(l++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var h=2221e-19;function d(t,e){return t===(t+=e)&&(t*=1+(e>0?h:-h)),t}for(u.step=Math.max(u.step,h),a=u.min,s=u.max;a+u.step<=u.low;)a=d(a,u.step);for(;s-u.step>=u.high;)s=d(s,-u.step);u.min=a,u.max=s,u.range=u.max-u.min;var p=[];for(o=u.min;o<=u.max;o=d(o,u.step)){var v=e.roundWithPrecision(o);v!==p[p.length-1]&&p.push(v)}return u.values=p,u},e.polarToCartesian=function(t,e,n,r){var i=(r-90)*Math.PI/180;return{x:t+n*Math.cos(i),y:e+n*Math.sin(i)}},e.createChartRect=function(t,n,r){var i=!(!n.axisX&&!n.axisY),o=i?n.axisY.offset:0,a=i?n.axisX.offset:0,s=t.width()||e.quantity(n.width).value||0,l=t.height()||e.quantity(n.height).value||0,u=e.normalizePadding(n.chartPadding,r);s=Math.max(s,o+u.left+u.right),l=Math.max(l,a+u.top+u.bottom);var c={padding:u,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return i?("start"===n.axisX.position?(c.y2=u.top+a,c.y1=Math.max(l-u.bottom,c.y2+1)):(c.y2=u.top,c.y1=Math.max(l-u.bottom-a,c.y2+1)),"start"===n.axisY.position?(c.x1=u.left+o,c.x2=Math.max(s-u.right,c.x1+1)):(c.x1=u.left,c.x2=Math.max(s-u.right-o,c.x1+1))):(c.x1=u.left,c.x2=Math.max(s-u.right,c.x1+1),c.y2=u.top,c.y1=Math.max(l-u.bottom,c.y2+1)),c},e.createGrid=function(t,n,r,i,o,a,s,l){var u={};u[r.units.pos+"1"]=t,u[r.units.pos+"2"]=t,u[r.counterUnits.pos+"1"]=i,u[r.counterUnits.pos+"2"]=i+o;var c=a.elem("line",u,s.join(" "));l.emit("draw",e.extend({type:"grid",axis:r,index:n,group:a,element:c},u))},e.createGridBackground=function(t,e,n,r){var i=t.elem("rect",{x:e.x1,y:e.y2,width:e.width(),height:e.height()},n,!0);r.emit("draw",{type:"gridBackground",group:t,element:i})},e.createLabel=function(t,n,i,o,a,s,l,u,c,f,h){var d,p={};if(p[a.units.pos]=t+l[a.units.pos],p[a.counterUnits.pos]=l[a.counterUnits.pos],p[a.units.len]=n,p[a.counterUnits.len]=Math.max(0,s-10),f){var v=r.createElement("span");v.className=c.join(" "),v.setAttribute("xmlns",e.namespaces.xhtml),v.innerText=o[i],v.style[a.units.len]=Math.round(p[a.units.len])+"px",v.style[a.counterUnits.len]=Math.round(p[a.counterUnits.len])+"px",d=u.foreignObject(v,e.extend({style:"overflow: visible;"},p))}else d=u.elem("text",p,c.join(" ")).text(o[i]);h.emit("draw",e.extend({type:"label",axis:a,index:i,group:u,element:d,text:o[i]},p))},e.getSeriesOption=function(t,e,n){if(t.name&&e.series&&e.series[t.name]){var r=e.series[t.name];return r.hasOwnProperty(n)?r[n]:e[n]}return e[n]},e.optionsProvider=function(t,r,i){var o,a,s=e.extend({},t),l=[];function u(t){var l=o;if(o=e.extend({},s),r)for(a=0;a=2&&t[s]<=t[s-2]&&(a=!0),a&&(o.push({pathCoordinates:[],valueData:[]}),a=!1),o[o.length-1].pathCoordinates.push(t[s],t[s+1]),o[o.length-1].valueData.push(n[s/2]));return o}}(this||n.g,t),function(t,e){"use strict";e.Interpolation={},e.Interpolation.none=function(t){var n={fillHoles:!1};return t=e.extend({},n,t),function(n,r){for(var i=new e.Svg.Path,o=!0,a=0;a1){var l=[];return s.forEach((function(t){l.push(n(t.pathCoordinates,t.valueData))})),e.Svg.Path.join(l)}if(o=s[0].pathCoordinates,a=s[0].valueData,o.length<=4)return e.Interpolation.none()(o,a);for(var u,c=(new e.Svg.Path).move(o[0],o[1],!1,a[0]),f=0,h=o.length;h-2*!u>f;f+=2){var d=[{x:+o[f-2],y:+o[f-1]},{x:+o[f],y:+o[f+1]},{x:+o[f+2],y:+o[f+3]},{x:+o[f+4],y:+o[f+5]}];u?f?h-4===f?d[3]={x:+o[0],y:+o[1]}:h-2===f&&(d[2]={x:+o[0],y:+o[1]},d[3]={x:+o[2],y:+o[3]}):d[0]={x:+o[h-2],y:+o[h-1]}:h-4===f?d[3]=d[2]:f||(d[0]={x:+o[f],y:+o[f+1]}),c.curve(r*(-d[0].x+6*d[1].x+d[2].x)/6+i*d[2].x,r*(-d[0].y+6*d[1].y+d[2].y)/6+i*d[2].y,r*(d[1].x+6*d[2].x-d[3].x)/6+i*d[2].x,r*(d[1].y+6*d[2].y-d[3].y)/6+i*d[2].y,d[2].x,d[2].y,!1,a[(f+2)/2])}return c}return e.Interpolation.none()([])}},e.Interpolation.monotoneCubic=function(t){var n={fillHoles:!1};return t=e.extend({},n,t),function n(r,i){var o=e.splitIntoSegments(r,i,{fillHoles:t.fillHoles,increasingX:!0});if(o.length){if(o.length>1){var a=[];return o.forEach((function(t){a.push(n(t.pathCoordinates,t.valueData))})),e.Svg.Path.join(a)}if(r=o[0].pathCoordinates,i=o[0].valueData,r.length<=4)return e.Interpolation.none()(r,i);var s,l,u=[],c=[],f=r.length/2,h=[],d=[],p=[],v=[];for(s=0;s0!=d[s]>0?h[s]=0:(h[s]=3*(v[s-1]+v[s])/((2*v[s]+v[s-1])/d[s-1]+(v[s]+2*v[s-1])/d[s]),isFinite(h[s])||(h[s]=0));for(l=(new e.Svg.Path).move(u[0],c[0],!1,i[0]),s=0;s1})).map((function(t){var e=t.pathElements[0],n=t.pathElements[t.pathElements.length-1];return t.clone(!0).position(0).remove(1).move(e.x,m).line(e.x,e.y).position(t.pathElements.length+1).line(n.x,m)})).forEach(function(e){var s=l.elem("path",{d:e.stringify()},t.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:r.normalized.series[a],path:e.clone(),series:n,seriesIndex:a,axisX:i,axisY:o,chartRect:u,index:a,group:l,element:s})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:o.bounds,chartRect:u,axisX:i,axisY:o,svg:this.svg,options:t})}function i(t,r,i,o){e.Line.super.constructor.call(this,t,r,n,e.extend({},n,i),o)}e.Line=e.Base.extend({constructor:i,createChart:r})}(this||n.g,t),function(t,e){"use strict";t.window,t.document;var n={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:e.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:e.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,referenceValue:0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,showGridBackground:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};function r(t){var r,i;t.distributeSeries?(r=e.normalizeData(this.data,t.reverseData,t.horizontalBars?"x":"y")).normalized.series=r.normalized.series.map((function(t){return[t]})):r=e.normalizeData(this.data,t.reverseData,t.horizontalBars?"x":"y"),this.svg=e.createSvg(this.container,t.width,t.height,t.classNames.chart+(t.horizontalBars?" "+t.classNames.horizontalBars:""));var o=this.svg.elem("g").addClass(t.classNames.gridGroup),a=this.svg.elem("g"),s=this.svg.elem("g").addClass(t.classNames.labelGroup);if(t.stackBars&&0!==r.normalized.series.length){var l=e.serialMap(r.normalized.series,(function(){return Array.prototype.slice.call(arguments).map((function(t){return t})).reduce((function(t,e){return{x:t.x+(e&&e.x)||0,y:t.y+(e&&e.y)||0}}),{x:0,y:0})}));i=e.getHighLow([l],t,t.horizontalBars?"x":"y")}else i=e.getHighLow(r.normalized.series,t,t.horizontalBars?"x":"y");i.high=+t.high||(0===t.high?0:i.high),i.low=+t.low||(0===t.low?0:i.low);var u,c,f,h,d,p=e.createChartRect(this.svg,t,n.padding);c=t.distributeSeries&&t.stackBars?r.normalized.labels.slice(0,1):r.normalized.labels,t.horizontalBars?(u=h=void 0===t.axisX.type?new e.AutoScaleAxis(e.Axis.units.x,r.normalized.series,p,e.extend({},t.axisX,{highLow:i,referenceValue:0})):t.axisX.type.call(e,e.Axis.units.x,r.normalized.series,p,e.extend({},t.axisX,{highLow:i,referenceValue:0})),f=d=void 0===t.axisY.type?new e.StepAxis(e.Axis.units.y,r.normalized.series,p,{ticks:c}):t.axisY.type.call(e,e.Axis.units.y,r.normalized.series,p,t.axisY)):(f=h=void 0===t.axisX.type?new e.StepAxis(e.Axis.units.x,r.normalized.series,p,{ticks:c}):t.axisX.type.call(e,e.Axis.units.x,r.normalized.series,p,t.axisX),u=d=void 0===t.axisY.type?new e.AutoScaleAxis(e.Axis.units.y,r.normalized.series,p,e.extend({},t.axisY,{highLow:i,referenceValue:0})):t.axisY.type.call(e,e.Axis.units.y,r.normalized.series,p,e.extend({},t.axisY,{highLow:i,referenceValue:0})));var v=t.horizontalBars?p.x1+u.projectValue(0):p.y1-u.projectValue(0),m=[];f.createGridAndLabels(o,s,this.supportsForeignObject,t,this.eventEmitter),u.createGridAndLabels(o,s,this.supportsForeignObject,t,this.eventEmitter),t.showGridBackground&&e.createGridBackground(o,p,t.classNames.gridBackground,this.eventEmitter),r.raw.series.forEach(function(n,i){var o,s,l=i-(r.raw.series.length-1)/2;o=t.distributeSeries&&!t.stackBars?f.axisLength/r.normalized.series.length/2:t.distributeSeries&&t.stackBars?f.axisLength/2:f.axisLength/r.normalized.series[i].length/2,(s=a.elem("g")).attr({"ct:series-name":n.name,"ct:meta":e.serialize(n.meta)}),s.addClass([t.classNames.series,n.className||t.classNames.series+"-"+e.alphaNumerate(i)].join(" ")),r.normalized.series[i].forEach(function(a,c){var y,g,b,x;if(x=t.distributeSeries&&!t.stackBars?i:t.distributeSeries&&t.stackBars?0:c,y=t.horizontalBars?{x:p.x1+u.projectValue(a&&a.x?a.x:0,c,r.normalized.series[i]),y:p.y1-f.projectValue(a&&a.y?a.y:0,x,r.normalized.series[i])}:{x:p.x1+f.projectValue(a&&a.x?a.x:0,x,r.normalized.series[i]),y:p.y1-u.projectValue(a&&a.y?a.y:0,c,r.normalized.series[i])},f instanceof e.StepAxis&&(f.options.stretch||(y[f.units.pos]+=o*(t.horizontalBars?-1:1)),y[f.units.pos]+=t.stackBars||t.distributeSeries?0:l*t.seriesBarDistance*(t.horizontalBars?-1:1)),b=m[c]||v,m[c]=b-(v-y[f.counterUnits.pos]),void 0!==a){var w={};w[f.units.pos+"1"]=y[f.units.pos],w[f.units.pos+"2"]=y[f.units.pos],!t.stackBars||"accumulate"!==t.stackMode&&t.stackMode?(w[f.counterUnits.pos+"1"]=v,w[f.counterUnits.pos+"2"]=y[f.counterUnits.pos]):(w[f.counterUnits.pos+"1"]=b,w[f.counterUnits.pos+"2"]=m[c]),w.x1=Math.min(Math.max(w.x1,p.x1),p.x2),w.x2=Math.min(Math.max(w.x2,p.x1),p.x2),w.y1=Math.min(Math.max(w.y1,p.y2),p.y1),w.y2=Math.min(Math.max(w.y2,p.y2),p.y1);var k=e.getMetaData(n,c);g=s.elem("line",w,t.classNames.bar).attr({"ct:value":[a.x,a.y].filter(e.isNumeric).join(","),"ct:meta":e.serialize(k)}),this.eventEmitter.emit("draw",e.extend({type:"bar",value:a,index:c,meta:k,series:n,seriesIndex:i,axisX:h,axisY:d,chartRect:p,group:s,element:g},w))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:u.bounds,chartRect:p,axisX:h,axisY:d,svg:this.svg,options:t})}function i(t,r,i,o){e.Bar.super.constructor.call(this,t,r,n,e.extend({},n,i),o)}e.Bar=e.Base.extend({constructor:i,createChart:r})}(this||n.g,t),function(t,e){"use strict";t.window,t.document;var n={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",sliceDonutSolid:"ct-slice-donut-solid",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutSolid:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:e.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};function r(t,e,n){var r=e.x>t.x;return r&&"explode"===n||!r&&"implode"===n?"start":r&&"implode"===n||!r&&"explode"===n?"end":"middle"}function i(t){var i,o,a,s,l,u=e.normalizeData(this.data),c=[],f=t.startAngle;this.svg=e.createSvg(this.container,t.width,t.height,t.donut?t.classNames.chartDonut:t.classNames.chartPie),o=e.createChartRect(this.svg,t,n.padding),a=Math.min(o.width()/2,o.height()/2),l=t.total||u.normalized.series.reduce((function(t,e){return t+e}),0);var h=e.quantity(t.donutWidth);"%"===h.unit&&(h.value*=a/100),a-=t.donut&&!t.donutSolid?h.value/2:0,s="outside"===t.labelPosition||t.donut&&!t.donutSolid?a:"center"===t.labelPosition?0:t.donutSolid?a-h.value/2:a/2,s+=t.labelOffset;var d={x:o.x1+o.width()/2,y:o.y2+o.height()/2},p=1===u.raw.series.filter((function(t){return t.hasOwnProperty("value")?0!==t.value:0!==t})).length;u.raw.series.forEach(function(t,e){c[e]=this.svg.elem("g",null,null)}.bind(this)),t.showLabel&&(i=this.svg.elem("g",null,null)),u.raw.series.forEach(function(n,o){if(0!==u.normalized.series[o]||!t.ignoreEmptyValues){c[o].attr({"ct:series-name":n.name}),c[o].addClass([t.classNames.series,n.className||t.classNames.series+"-"+e.alphaNumerate(o)].join(" "));var v=l>0?f+u.normalized.series[o]/l*360:0,m=Math.max(0,f-(0===o||p?0:.2));v-m>=359.99&&(v=m+359.99);var y,g,b,x=e.polarToCartesian(d.x,d.y,a,m),w=e.polarToCartesian(d.x,d.y,a,v),k=new e.Svg.Path(!t.donut||t.donutSolid).move(w.x,w.y).arc(a,a,0,v-f>180,0,x.x,x.y);t.donut?t.donutSolid&&(b=a-h.value,y=e.polarToCartesian(d.x,d.y,b,f-(0===o||p?0:.2)),g=e.polarToCartesian(d.x,d.y,b,v),k.line(y.x,y.y),k.arc(b,b,0,v-f>180,1,g.x,g.y)):k.line(d.x,d.y);var S=t.classNames.slicePie;t.donut&&(S=t.classNames.sliceDonut,t.donutSolid&&(S=t.classNames.sliceDonutSolid));var E=c[o].elem("path",{d:k.stringify()},S);if(E.attr({"ct:value":u.normalized.series[o],"ct:meta":e.serialize(n.meta)}),t.donut&&!t.donutSolid&&(E._node.style.strokeWidth=h.value+"px"),this.eventEmitter.emit("draw",{type:"slice",value:u.normalized.series[o],totalDataSum:l,index:o,meta:n.meta,series:n,group:c[o],element:E,path:k.clone(),center:d,radius:a,startAngle:f,endAngle:v}),t.showLabel){var A,L;A=1===u.raw.series.length?{x:d.x,y:d.y}:e.polarToCartesian(d.x,d.y,s,f+(v-f)/2),L=u.normalized.labels&&!e.isFalseyButZero(u.normalized.labels[o])?u.normalized.labels[o]:u.normalized.series[o];var M=t.labelInterpolationFnc(L,o);if(M||0===M){var T=i.elem("text",{dx:A.x,dy:A.y,"text-anchor":r(d,A,t.labelDirection)},t.classNames.label).text(""+M);this.eventEmitter.emit("draw",{type:"label",index:o,group:i,element:T,text:""+M,x:A.x,y:A.y})}}f=v}}.bind(this)),this.eventEmitter.emit("created",{chartRect:o,svg:this.svg,options:t})}function o(t,r,i,o){e.Pie.super.constructor.call(this,t,r,n,e.extend({},n,i),o)}e.Pie=e.Base.extend({constructor:o,createChart:i,determineAnchorPosition:r})}(this||n.g,t),t}()}.apply(e,[]))||(t.exports=r)},9831:function(t,e,n){n(2496),n(9419);var r=n(6035);t.exports=r.Array.from},8187:function(t,e,n){n(5815);var r=n(6035);t.exports=r.Array.isArray},9147:function(t,e,n){n(1402);var r=n(638);t.exports=r("Array").concat},8915:function(t,e,n){n(501);var r=n(638);t.exports=r("Array").every},3842:function(t,e,n){n(2386);var r=n(638);t.exports=r("Array").filter},2166:function(t,e,n){n(5057);var r=n(638);t.exports=r("Array").find},6261:function(t,e,n){n(1900);var r=n(638);t.exports=r("Array").forEach},566:function(t,e,n){n(9346);var r=n(638);t.exports=r("Array").indexOf},2688:function(t,e,n){n(9778);var r=n(638);t.exports=r("Array").map},421:function(t,e,n){n(7939);var r=n(638);t.exports=r("Array").reduce},5059:function(t,e,n){n(9962);var r=n(638);t.exports=r("Array").reverse},7586:function(t,e,n){n(791);var r=n(638);t.exports=r("Array").slice},8868:function(t,e,n){n(4985);var r=n(638);t.exports=r("Array").sort},4063:function(t,e,n){n(3374);var r=n(638);t.exports=r("Array").splice},1495:function(t,e,n){n(1875);var r=n(638);t.exports=r("Function").bind},3249:function(t,e,n){var r=n(1495),i=Function.prototype;t.exports=function(t){var e=t.bind;return t===i||t instanceof Function&&e===i.bind?r:e}},2079:function(t,e,n){var r=n(9147),i=Array.prototype;t.exports=function(t){var e=t.concat;return t===i||t instanceof Array&&e===i.concat?r:e}},1805:function(t,e,n){var r=n(8915),i=Array.prototype;t.exports=function(t){var e=t.every;return t===i||t instanceof Array&&e===i.every?r:e}},2258:function(t,e,n){var r=n(3842),i=Array.prototype;t.exports=function(t){var e=t.filter;return t===i||t instanceof Array&&e===i.filter?r:e}},5294:function(t,e,n){var r=n(2166),i=Array.prototype;t.exports=function(t){var e=t.find;return t===i||t instanceof Array&&e===i.find?r:e}},7076:function(t,e,n){var r=n(566),i=Array.prototype;t.exports=function(t){var e=t.indexOf;return t===i||t instanceof Array&&e===i.indexOf?r:e}},3692:function(t,e,n){var r=n(2688),i=Array.prototype;t.exports=function(t){var e=t.map;return t===i||t instanceof Array&&e===i.map?r:e}},6826:function(t,e,n){var r=n(421),i=Array.prototype;t.exports=function(t){var e=t.reduce;return t===i||t instanceof Array&&e===i.reduce?r:e}},9878:function(t,e,n){var r=n(5059),i=Array.prototype;t.exports=function(t){var e=t.reverse;return t===i||t instanceof Array&&e===i.reverse?r:e}},4485:function(t,e,n){var r=n(7586),i=Array.prototype;t.exports=function(t){var e=t.slice;return t===i||t instanceof Array&&e===i.slice?r:e}},633:function(t,e,n){var r=n(8868),i=Array.prototype;t.exports=function(t){var e=t.sort;return t===i||t instanceof Array&&e===i.sort?r:e}},3095:function(t,e,n){var r=n(4063),i=Array.prototype;t.exports=function(t){var e=t.splice;return t===i||t instanceof Array&&e===i.splice?r:e}},1599:function(t,e,n){var r=n(8734),i=String.prototype;t.exports=function(t){var e=t.trim;return"string"==typeof t||t===i||t instanceof String&&e===i.trim?r:e}},3658:function(t,e,n){n(4802);var r=n(6035);r.JSON||(r.JSON={stringify:JSON.stringify}),t.exports=function(t,e,n){return r.JSON.stringify.apply(null,arguments)}},1523:function(t,e,n){n(8453),n(5345),n(2496),n(1782);var r=n(6035);t.exports=r.Map},9490:function(t,e,n){n(9588);var r=n(6035);t.exports=r.Math.trunc},7854:function(t,e,n){n(2458),t.exports=Math.pow(2,-52)},2852:function(t,e,n){n(8854);var r=n(6035);t.exports=r.Number.isSafeInteger},3192:function(t,e,n){n(4851);var r=n(6035).Object;t.exports=function(t,e){return r.create(t,e)}},2807:function(t,e,n){n(4137);var r=n(6035).Object,i=t.exports=function(t,e,n){return r.defineProperty(t,e,n)};r.defineProperty.sham&&(i.sham=!0)},4180:function(t,e,n){n(9817);var r=n(6035);t.exports=r.Object.entries},9739:function(t,e,n){n(6467);var r=n(6035).Object,i=t.exports=function(t,e){return r.getOwnPropertyDescriptor(t,e)};r.getOwnPropertyDescriptor.sham&&(i.sham=!0)},5759:function(t,e,n){n(5465);var r=n(6035);t.exports=r.Object.getPrototypeOf},5553:function(t,e,n){n(4933);var r=n(6035);t.exports=r.Object.keys},7866:function(t,e,n){n(6592);var r=n(6035);t.exports=r.Object.setPrototypeOf},316:function(t,e,n){n(4558);var r=n(6035);t.exports=r.parseFloat},7648:function(t,e,n){n(9456);var r=n(6035);t.exports=r.parseInt},7647:function(t,e,n){n(4233),n(5345),n(357),n(9891),n(1323),n(9393),n(2496),n(1782);var r=n(6035);t.exports=r.Promise},700:function(t,e,n){n(5801);var r=n(6035);t.exports=r.Reflect.construct},836:function(t,e,n){n(2879);var r=n(6035);t.exports=r.Reflect.get},5293:function(t,e,n){n(4046),n(5345),n(2496),n(1782);var r=n(6035);t.exports=r.Set},8734:function(t,e,n){n(5753);var r=n(638);t.exports=r("String").trim},6493:function(t,e,n){n(1402),n(5345),n(6713),n(1160),n(3902),n(8353),n(8186),n(7059),n(6398),n(8578),n(3318),n(9544),n(2125),n(6121),n(7223),n(5737),n(5948),n(3837),n(3397),n(9297);var r=n(6035);t.exports=r.Symbol},9647:function(t,e,n){n(7059),n(2496),n(1782);var r=n(7905);t.exports=r.f("iterator")},1665:function(t,e,n){var r=n(9831);t.exports=r},8173:function(t,e,n){var r=n(8187);t.exports=r},263:function(t,e,n){n(1782),n(2496);var r=n(1520);t.exports=r},5204:function(t,e,n){n(1782),n(2496);var r=n(7829);t.exports=r},6017:function(t,e,n){var r=n(3249);t.exports=r},8945:function(t,e,n){var r=n(7076);t.exports=r},830:function(t,e,n){var r=n(4485);t.exports=r},343:function(t,e,n){n(1782),n(2496);var r=n(4651);t.exports=r},8993:function(t,e,n){var r=n(1523);n(7009),n(8104),n(3279),n(1189),n(8180),n(1121),n(7879),n(5336),n(5677),n(3285),n(6272),n(2647),n(8796),n(6857),n(2645),n(9639),n(3357),n(5653),n(4694),n(671),t.exports=r},688:function(t,e,n){var r=n(3192);t.exports=r},1422:function(t,e,n){var r=n(2807);t.exports=r},9259:function(t,e,n){var r=n(9739);t.exports=r},8327:function(t,e,n){var r=n(5759);t.exports=r},6438:function(t,e,n){var r=n(7866);t.exports=r},5365:function(t,e,n){var r=n(7647);n(4024),n(9389),n(1898),n(9975),t.exports=r},4338:function(t,e,n){var r=n(700);t.exports=r},2538:function(t,e,n){var r=n(836);t.exports=r},499:function(t,e,n){var r=n(6493);n(1634),n(8251),n(5777),n(9181),n(8472),t.exports=r},488:function(t,e,n){var r=n(9647);t.exports=r},2680:function(t){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},2605:function(t,e,n){var r=n(9574);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},8695:function(t){t.exports=function(){}},9730:function(t){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},6879:function(t,e,n){var r=n(9574);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},7813:function(t,e,n){"use strict";var r=n(4496).forEach,i=n(74),o=n(6414),a=i("forEach"),s=o("forEach");t.exports=a&&s?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},4769:function(t,e,n){"use strict";var r=n(490),i=n(4267),o=n(1905),a=n(7336),s=n(1547),l=n(592),u=n(1520);t.exports=function(t){var e,n,c,f,h,d,p=i(t),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=u(p),x=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&a(b))for(n=new v(e=s(p.length));e>x;x++)d=g?y(p[x],x):p[x],l(n,x,d);else for(h=(f=b.call(p)).next,n=new v;!(c=h.call(f)).done;x++)d=g?o(f,y,[c.value,x],!0):c.value,l(n,x,d);return n.length=x,n}},9760:function(t,e,n){var r=n(7816),i=n(1547),o=n(2005),a=function(t){return function(e,n,a){var s,l=r(e),u=i(l.length),c=o(a,u);if(t&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},4496:function(t,e,n){var r=n(490),i=n(5769),o=n(4267),a=n(1547),s=n(2757),l=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,c=4==t,f=6==t,h=7==t,d=5==t||f;return function(p,v,m,y){for(var g,b,x=o(p),w=i(x),k=r(v,m,3),S=a(w.length),E=0,A=y||s,L=e?A(p,S):n||h?A(p,0):void 0;S>E;E++)if((d||E in w)&&(b=k(g=w[E],E,x),t))if(e)L[E]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return E;case 2:l.call(L,g)}else switch(t){case 4:return!1;case 7:l.call(L,g)}return f?-1:u||c?c:L}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},8555:function(t,e,n){var r=n(8790),i=n(2735),o=n(6952),a=i("species");t.exports=function(t){return o>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},74:function(t,e,n){"use strict";var r=n(8790);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},6414:function(t,e,n){var r=n(41),i=n(8790),o=n(8061),a=Object.defineProperty,s={},l=function(t){throw t};t.exports=function(t,e){if(o(s,t))return s[t];e||(e={});var n=[][t],u=!!o(e,"ACCESSORS")&&e.ACCESSORS,c=o(e,0)?e[0]:l,f=o(e,1)?e[1]:void 0;return s[t]=!!n&&!i((function(){if(u&&!r)return!0;var t={length:-1};u?a(t,1,{enumerable:!0,get:l}):t[1]=1,n.call(t,c,f)}))}},7393:function(t,e,n){var r=n(2680),i=n(4267),o=n(5769),a=n(1547),s=function(t){return function(e,n,s,l){r(n);var u=i(e),c=o(u),f=a(u.length),h=t?f-1:0,d=t?-1:1;if(s<2)for(;;){if(h in c){l=c[h],h+=d;break}if(h+=d,t?h<0:f<=h)throw TypeError("Reduce of empty array with no initial value")}for(;t?h>=0:f>h;h+=d)h in c&&(l=n(l,c[h],h,u));return l}};t.exports={left:s(!1),right:s(!0)}},2757:function(t,e,n){var r=n(9574),i=n(8984),o=n(2735)("species");t.exports=function(t,e){var n;return i(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},1905:function(t,e,n){var r=n(6879),i=n(9368);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){throw i(t),e}}},9069:function(t,e,n){var r=n(2735)("iterator"),i=!1;try{var o=0,a={next:function(){return{done:!!o++}},return:function(){i=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},t(o)}catch(t){}return n}},8154:function(t){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},5885:function(t,e,n){var r=n(2401),i=n(8154),o=n(2735)("toStringTag"),a="Arguments"==i(function(){return arguments}());t.exports=r?i:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:a?i(e):"Object"==(r=i(e))&&"function"==typeof e.callee?"Arguments":r}},7424:function(t,e,n){"use strict";var r=n(6879),i=n(2680);t.exports=function(){for(var t,e=r(this),n=i(e.delete),o=!0,a=0,s=arguments.length;a1?arguments[1]:void 0;return r(this),(e=void 0!==u)&&r(u),null==t?new this:(n=[],e?(a=0,s=i(u,l>2?arguments[2]:void 0,2),o(t,(function(t){n.push(s(t,a++))}))):o(t,n.push,{that:n}),new this(n))}},7743:function(t){"use strict";t.exports=function(){for(var t=arguments.length,e=new Array(t);t--;)e[t]=arguments[t];return new this(e)}},1088:function(t,e,n){"use strict";var r=n(6445).f,i=n(4045),o=n(4675),a=n(490),s=n(9730),l=n(9335),u=n(5329),c=n(6619),f=n(41),h=n(5697).fastKey,d=n(975),p=d.set,v=d.getterFor;t.exports={getConstructor:function(t,e,n,u){var c=t((function(t,r){s(t,c,e),p(t,{type:e,index:i(null),first:void 0,last:void 0,size:0}),f||(t.size=0),null!=r&&l(r,t[u],{that:t,AS_ENTRIES:n})})),d=v(e),m=function(t,e,n){var r,i,o=d(t),a=y(t,e);return a?a.value=n:(o.last=a={index:i=h(e,!0),key:e,value:n,previous:r=o.last,next:void 0,removed:!1},o.first||(o.first=a),r&&(r.next=a),f?o.size++:t.size++,"F"!==i&&(o.index[i]=a)),t},y=function(t,e){var n,r=d(t),i=h(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return o(c.prototype,{clear:function(){for(var t=d(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,f?t.size=0:this.size=0},delete:function(t){var e=this,n=d(e),r=y(e,t);if(r){var i=r.next,o=r.previous;delete n.index[r.index],r.removed=!0,o&&(o.next=i),i&&(i.previous=o),n.first==r&&(n.first=i),n.last==r&&(n.last=o),f?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=d(this),r=a(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!y(this,t)}}),o(c.prototype,n?{get:function(t){var e=y(this,t);return e&&e.value},set:function(t,e){return m(this,0===t?0:t,e)}}:{add:function(t){return m(this,t=0===t?0:t,t)}}),f&&r(c.prototype,"size",{get:function(){return d(this).size}}),c},setStrong:function(t,e,n){var r=e+" Iterator",i=v(e),o=v(r);u(t,e,(function(t,e){p(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=o(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),c(e)}}},943:function(t,e,n){"use strict";var r=n(1301),i=n(4569),o=n(5697),a=n(8790),s=n(8444),l=n(9335),u=n(9730),c=n(9574),f=n(6482),h=n(6445).f,d=n(4496).forEach,p=n(41),v=n(975),m=v.set,y=v.getterFor;t.exports=function(t,e,n){var v,g=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),x=g?"set":"add",w=i[t],k=w&&w.prototype,S={};if(p&&"function"==typeof w&&(b||k.forEach&&!a((function(){(new w).entries().next()})))){v=e((function(e,n){m(u(e,v,t),{type:t,collection:new w}),null!=n&&l(n,e[x],{that:e,AS_ENTRIES:g})}));var E=y(t);d(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(t){var e="add"==t||"set"==t;!(t in k)||b&&"clear"==t||s(v.prototype,t,(function(n,r){var i=E(this).collection;if(!e&&b&&!c(n))return"get"==t&&void 0;var o=i[t](0===n?0:n,r);return e?this:o}))})),b||h(v.prototype,"size",{configurable:!0,get:function(){return E(this).collection.size}})}else v=n.getConstructor(e,t,g,x),o.REQUIRED=!0;return f(v,t,!1,!0),S[t]=v,r({global:!0,forced:!0},S),b||n.setStrong(v,t,g),v}},5949:function(t,e,n){var r=n(8790);t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},6745:function(t,e,n){"use strict";var r=n(3327).IteratorPrototype,i=n(4045),o=n(3196),a=n(6482),s=n(8830),l=function(){return this};t.exports=function(t,e,n){var u=e+" Iterator";return t.prototype=i(r,{next:o(1,n)}),a(t,u,!1,!0),s[u]=l,t}},8444:function(t,e,n){var r=n(41),i=n(6445),o=n(3196);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},3196:function(t){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},592:function(t,e,n){"use strict";var r=n(809),i=n(6445),o=n(3196);t.exports=function(t,e,n){var a=r(e);a in t?i.f(t,a,o(0,n)):t[a]=n}},5329:function(t,e,n){"use strict";var r=n(1301),i=n(6745),o=n(6066),a=n(2370),s=n(6482),l=n(8444),u=n(1120),c=n(2735),f=n(1567),h=n(8830),d=n(3327),p=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,m=c("iterator"),y="keys",g="values",b="entries",x=function(){return this};t.exports=function(t,e,n,c,d,w,k){i(n,e,c);var S,E,A,L=function(t){if(t===d&&P)return P;if(!v&&t in O)return O[t];switch(t){case y:case g:case b:return function(){return new n(this,t)}}return function(){return new n(this)}},M=e+" Iterator",T=!1,O=t.prototype,_=O[m]||O["@@iterator"]||d&&O[d],P=!v&&_||L(d),I="Array"==e&&O.entries||_;if(I&&(S=o(I.call(new t)),p!==Object.prototype&&S.next&&(f||o(S)===p||(a?a(S,p):"function"!=typeof S[m]&&l(S,m,x)),s(S,M,!0,!0),f&&(h[M]=x))),d==g&&_&&_.name!==g&&(T=!0,P=function(){return _.call(this)}),f&&!k||O[m]===P||l(O,m,P),h[e]=P,d)if(E={values:L(g),keys:w?P:L(y),entries:L(b)},k)for(A in E)(v||T||!(A in O))&&u(O,A,E[A]);else r({target:e,proto:!0,forced:v||T},E);return E}},7025:function(t,e,n){var r=n(6035),i=n(8061),o=n(7905),a=n(6445).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},41:function(t,e,n){var r=n(8790);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},2167:function(t,e,n){var r=n(4569),i=n(9574),o=r.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},4317:function(t){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},4352:function(t,e,n){var r=n(3265);t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},478:function(t,e,n){var r=n(8154),i=n(4569);t.exports="process"==r(i.process)},3265:function(t,e,n){var r=n(5972);t.exports=r("navigator","userAgent")||""},6952:function(t,e,n){var r,i,o=n(4569),a=n(3265),s=o.process,l=s&&s.versions,u=l&&l.v8;u?i=(r=u.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(i=r[1]),t.exports=i&&+i},638:function(t,e,n){var r=n(6035);t.exports=function(t){return r[t+"Prototype"]}},667:function(t){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},1301:function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var i=n(4569),o=n(2435).f,a=n(3730),s=n(6035),l=n(490),u=n(8444),c=n(8061),f=function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e};t.exports=function(t,e){var n,h,d,p,v,m,y,g,b=t.target,x=t.global,w=t.stat,k=t.proto,S=x?i:w?i[b]:(i[b]||{}).prototype,E=x?s:s[b]||(s[b]={}),A=E.prototype;for(d in e)n=!a(x?d:b+(w?".":"#")+d,t.forced)&&S&&c(S,d),v=E[d],n&&(m=t.noTargetGet?(g=o(S,d))&&g.value:S[d]),p=n&&m?m:e[d],n&&r(v)===r(p)||(y=t.bind&&n?l(p,i):t.wrap&&n?f(p):k&&"function"==typeof p?l(Function.call,p):p,(t.sham||p&&p.sham||v&&v.sham)&&u(y,"sham",!0),E[d]=y,k&&(c(s,h=b+"Prototype")||u(s,h,{}),s[h][d]=p,t.real&&A&&!A[d]&&u(A,d,p)))}},8790:function(t){t.exports=function(t){try{return!!t()}catch(t){return!0}}},9132:function(t,e,n){var r=n(8790);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},490:function(t,e,n){var r=n(2680);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},5024:function(t,e,n){"use strict";var r=n(2680),i=n(9574),o=[].slice,a={},s=function(t,e,n){if(!(e in a)){for(var r=[],i=0;id;d++)if((v=E(t[d]))&&v instanceof c)return v;return new c(!1)}f=h.call(t)}for(m=f.next;!(y=m.call(f)).done;){try{v=E(y.value)}catch(t){throw u(f),t}if("object"==r(v)&&v&&v instanceof c)return v}return new c(!1)}},9368:function(t,e,n){var r=n(6879);t.exports=function(t){var e=t.return;if(void 0!==e)return r(e.call(t)).value}},3327:function(t,e,n){"use strict";var r,i,o,a=n(6066),s=n(8444),l=n(8061),u=n(2735),c=n(1567),f=u("iterator"),h=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):h=!0),null==r&&(r={}),c||l(r,f)||s(r,f,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},8830:function(t){t.exports={}},9874:function(t,e,n){"use strict";var r=n(6879);t.exports=function(t,e){var n=r(this),i=n.has(t)&&"update"in e?e.update(n.get(t),t,n):e.insert(t,n);return n.set(t,i),i}},3268:function(t,e,n){"use strict";var r=n(6879);t.exports=function(t,e){var n,i=r(this),o=arguments.length>2?arguments[2]:void 0;if("function"!=typeof e&&"function"!=typeof o)throw TypeError("At least one callback required");return i.has(t)?(n=i.get(t),"function"==typeof e&&(n=e(n),i.set(t,n))):"function"==typeof o&&(n=o(),i.set(t,n)),n}},3853:function(t,e,n){var r,i,o,a,s,l,u,c,f=n(4569),h=n(2435).f,d=n(912).set,p=n(4352),v=n(478),m=f.MutationObserver||f.WebKitMutationObserver,y=f.document,g=f.process,b=f.Promise,x=h(f,"queueMicrotask"),w=x&&x.value;w||(r=function(){var t,e;for(v&&(t=g.domain)&&t.exit();i;){e=i.fn,i=i.next;try{e()}catch(t){throw i?a():o=void 0,t}}o=void 0,t&&t.enter()},!p&&!v&&m&&y?(s=!0,l=y.createTextNode(""),new m(r).observe(l,{characterData:!0}),a=function(){l.data=s=!s}):b&&b.resolve?(u=b.resolve(void 0),c=u.then,a=function(){c.call(u,r)}):a=v?function(){g.nextTick(r)}:function(){d.call(f,r)}),t.exports=w||function(t){var e={fn:t,next:void 0};o&&(o.next=e),i||(i=e,a()),o=e}},6495:function(t,e,n){var r=n(4569);t.exports=r.Promise},7873:function(t,e,n){var r=n(8790);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},8437:function(t,e,n){var r=n(8790),i=n(2735),o=n(1567),a=i("iterator");t.exports=!r((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),o&&!t.toJSON||!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host}))},3693:function(t,e,n){var r=n(4569),i=n(8304),o=r.WeakMap;t.exports="function"==typeof o&&/native code/.test(i(o))},8532:function(t,e,n){"use strict";var r=n(2680),i=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new i(t)}},1187:function(t,e,n){var r=n(4569),i=n(9394).trim,o=n(4931),a=r.parseFloat,s=1/a(o+"-0")!=-1/0;t.exports=s?function(t){var e=i(String(t)),n=a(e);return 0===n&&"-"==e.charAt(0)?-0:n}:a},887:function(t,e,n){var r=n(4569),i=n(9394).trim,o=n(4931),a=r.parseInt,s=/^[+-]?0[Xx]/,l=8!==a(o+"08")||22!==a(o+"0x16");t.exports=l?function(t,e){var n=i(String(t));return a(n,e>>>0||(s.test(n)?16:10))}:a},4045:function(t,e,n){var r,i=n(6879),o=n(931),a=n(667),s=n(5583),l=n(1140),u=n(2167),c=n(3674),f=c("IE_PROTO"),h=function(){},d=function(t){return"