weatherlayers-gl
Version:
WeatherLayers GL - Weather Visualization Layers for deck.gl
14 lines (13 loc) • 185 kB
JavaScript
/*!
* Copyright (c) 2021-2023 WeatherLayers.com
*
* WeatherLayers GL 2023.8.1
*
* A valid license file is required to use the library in production. Contact support@weatherlayers.com for details.
*
* Homepage - https://weatherlayers.com/
* Demo - https://demo.weatherlayers.com/
* Docs - https://docs.weatherlayers.com/
* WeatherLayers GL License Terms of Use - https://weatherlayers.com/license-terms-of-use.html
*/
import*as t from"geotiff";import{CompositeLayer as e,COORDINATE_SYSTEM as n}from"@deck.gl/core";import{Texture2D as r,hasFeatures as a,FEATURES as o,isWebGL2 as i,Buffer as s,Transform as l}from"@luma.gl/core";import{TextLayer as A,BitmapLayer as c,PathLayer as u,IconLayer as g,LineLayer as h}from"@deck.gl/layers";import{CollisionFilterExtension as f,PathStyleExtension as p}from"@deck.gl/extensions";function d(t,e){if(!e)return`${Math.round(t)}`;const{scale:n=1,offset:r=0,decimals:a=0}=e,o=n*t+r;return`${a?Math.round(o*10**a)/10**a:Math.round(o)}`}function m(t){return t.unit.replace("^2","²").replace("^3","³")}function v(t,e){return`${d(t,e)} ${m(e)}`}function C(t){return`${Math.round(t)}°`}Array.prototype.findLastIndex||(Array.prototype.findLastIndex=function(t,e){for(let n=this.length-1;n>=0;n--)if(t.call(e,this[n],n,this))return n;return-1});const E=1,I=[255,255,255,51],y='"Helvetica Neue", Arial, Helvetica, sans-serif',b=12,w=[153,153,153,255],Q=1,B=[13,13,13,255],x=d,T=40,O=[255,255,255,102];function S(t,e){const n=Object.create(t);for(const r in t)if(void 0===t[r]&&r in e){const t=e[r];n[r]=t&&"value"in t?t.value:t}return Object.freeze(n)}function P(t,e,n,r,a,o){function i(t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("Function expected");return t}for(var s,l=r.kind,A="getter"===l?"get":"setter"===l?"set":"value",c=!e&&t?r.static?t:t.prototype:null,u=e||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),g=!1,h=n.length-1;h>=0;h--){var f={};for(var p in r)f[p]="access"===p?{}:r[p];for(var p in r.access)f.access[p]=r.access[p];f.addInitializer=function(t){if(g)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(t||null))};var d=(0,n[h])("accessor"===l?{get:u.get,set:u.set}:u[A],f);if("accessor"===l){if(void 0===d)continue;if(null===d||"object"!=typeof d)throw new TypeError("Object expected");(s=i(d.get))&&(u.get=s),(s=i(d.set))&&(u.set=s),(s=i(d.init))&&a.push(s)}else(s=i(d))&&("field"===l?a.push(s):u[A]=s)}c&&Object.defineProperty(c,r.name,u),g=!0}function M(t,e,n){for(var r=arguments.length>2,a=0;a<e.length;a++)n=r?e[a].call(t,n):e[a].call(t);return r?n:void 0}function L(t,e,n){return"symbol"==typeof e&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:n?"".concat(n," ",e):e})}function k(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)}function N(t,e,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!a:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(t,n):a?a.value=n:e.set(t,n),n}var D,U,V,J;class R{constructor(t){D.set(this,void 0),U.set(this,!1),V.set(this,void 0),J.set(this,0),N(this,D,t,"f")}getConfig(){return{...k(this,D,"f")}}setConfig(t){N(this,D,t,"f")}updateConfig(t){this.setConfig({...k(this,D,"f"),...t})}get running(){return k(this,U,"f")}toggle(t=!k(this,U,"f")){t?this.start():this.stop()}start(){k(this,U,"f")||(N(this,U,!0,"f"),N(this,V,window.requestAnimationFrame((()=>this.step())),"f"))}stop(){k(this,U,"f")&&(N(this,U,!1,"f"),k(this,V,"f")&&(window.cancelAnimationFrame(k(this,V,"f")),N(this,V,void 0,"f")))}step(){const t=1e3/(k(this,D,"f").fps??30),e=Date.now(),n=e-k(this,J,"f");n>t&&(N(this,J,e-n%t,"f"),k(this,D,"f").onUpdate()),k(this,U,"f")&&N(this,V,window.requestAnimationFrame((()=>this.step())),"f")}}function F(t,e,n){if(!e){if(0===n)return t;throw new Error("Invalid state")}if(n<=0)return t;if(n>=1)return e;{const r=new Date(t),a=new Date(e);return new Date(r.getTime()+(a.getTime()-r.getTime())*n).toISOString()}}function q(t,e,n){if(!e){if(t===n)return 0;throw new Error("Invalid state")}if(n<=t)return 0;if(n>=e)return 1;{const r=new Date(t),a=new Date(e);return(new Date(n).getTime()-r.getTime())/(a.getTime()-r.getTime())}}function W(t,e){return[...t].reverse().find((t=>t<=e))}function Z(t,e){return t.find((t=>t>=e))}function z(t,e){const n=new Date(t);return new Date(n.getTime()+1e3*e*60*60).toISOString()}function j(t,e,n){return[z(t,e),z(t,n)]}function X(t){if(!t)return t;const e=new Date(t);if(!e.getDate())return t;return`${e.getUTCFullYear()}/${`${e.getUTCMonth()+1}`.padStart(2,"0")}/${`${e.getUTCDate()}`.padStart(2,"0")} ${`${e.getUTCHours()}`.padStart(2,"0")}:${`${e.getUTCMinutes()}`.padStart(2,"0")} UTC`}var K,G,Y;D=new WeakMap,U=new WeakMap,V=new WeakMap,J=new WeakMap,function(t){t.NEAREST="NEAREST",t.LINEAR="LINEAR",t.CUBIC="CUBIC"}(K||(K={})),function(t){t.SCALAR="SCALAR",t.VECTOR="VECTOR"}(G||(G={})),function(t){t.METRIC="METRIC",t.IMPERIAL="IMPERIAL",t.NAUTICAL="NAUTICAL"}(Y||(Y={}));const H=new Map;async function _(e){let n;try{n=await t.fromUrl(e,{allowFullFile:!0,blockSize:10485760})}catch(t){throw new Error(`Image ${e} can't be decoded.`,{cause:t})}const r=await n.getImage(0),a=function(t,e){if(null==e)return t;const n=t.slice(0);for(let t=0;t<n.length;t++)Math.abs(n[t]-e)<2*Number.EPSILON&&(n[t]=NaN);return n}(await r.readRasters({interleave:!0}),r.getGDALNoData());return{data:a,width:r.getWidth(),height:r.getHeight()}}function $(t){return(e,n=H)=>{if(!1===n)return t(e);const r=n.get(e);if(r)return r;const a=t(e);return n.set(e,a),a.then((t=>{n.set(e,t)})),a}}const tt=$((t=>{if(t.includes(".png"))return async function(t){const e=await(await fetch(t)).blob(),n=new Image;n.src=URL.createObjectURL(e);try{await n.decode()}catch(e){throw new Error(`Image ${t} can't be decoded.`,{cause:e})}const r=document.createElement("canvas");r.width=n.width,r.height=n.height;const a=r.getContext("2d");a.drawImage(n,0,0);const o=a.getImageData(0,0,r.width,r.height),{data:i,width:s,height:l}=o;return{data:i,width:s,height:l}}(t);if(t.includes(".tif"))return _(t);throw new Error("Unsupported data format")})),et=$((async t=>(await fetch(t)).json()));function nt(t){return t%1}function rt(t,e){return t.map(((n,r)=>t[r]+e[r]))}function at(t,e){return t.map(((n,r)=>t[r]*e))}function ot(t,e){return t.map(((n,r)=>t[r]*e[r])).reduce(((t,e)=>t+e))}function it(t,e,n){return t*(1-n)+e*n}function st(t,e,n){return t.map(((r,a)=>it(t[a],e[a],n)))}function lt(t,e){return e?255==t[3]:!isNaN(t[0])}function At(t,e,n){return e===G.VECTOR?n?[it(n[0],n[1],t[0]/255),it(n[0],n[1],t[1]/255)]:[t[0],t[1]]:[NaN,NaN]}function ct(t,e,n){if(e===G.VECTOR){const r=At(t,e,n);return Math.hypot(r[0],r[1])}return function(t,e,n){return e===G.VECTOR?0:n?it(n[0],n[1],t[0]/255):t[0]}(t,e,n)}function ut(t,e,n,r,a,o){const{data:i,width:s,height:l}=t,A=i.length/(s*l),c=(n+a+.5)/e[0],u=(Math.max(0,r)+o+.5)/e[1],g=Math.floor(c*s),h=Math.floor(u*l);return new Array(A).fill(void 0).map(((t,e)=>i[(g+h*s)*A+e]))}const gt=[3,-6,0,4].map((t=>t/6)),ht=[-1,6,-12,8].map((t=>t/6));function ft(t){return[t*t*t,t*t,t,1]}function pt(t,e,n,r,a){const o=rt(rt(rt(at(t,ot(ht,ft(a+1))),at(e,ot(gt,ft(a)))),at(n,ot(gt,ft(1-a)))),at(r,ot(ht,ft(2-a))));return o[3]=255==t[3]&&255==e[3]&&255==n[3]&&255==r[3]?255:0,o}function dt(t,e,n,r,a){return n===K.CUBIC?function(t,e,n,r){const a=n*e[0]-.5,o=r*e[1]-.5,i=Math.floor(a),s=Math.floor(o),l=nt(a),A=nt(o);return pt(pt(ut(t,e,i,s,-1,-1),ut(t,e,i,s,0,-1),ut(t,e,i,s,1,-1),ut(t,e,i,s,2,-1),l),pt(ut(t,e,i,s,-1,0),ut(t,e,i,s,0,0),ut(t,e,i,s,1,0),ut(t,e,i,s,2,0),l),pt(ut(t,e,i,s,-1,1),ut(t,e,i,s,0,1),ut(t,e,i,s,1,1),ut(t,e,i,s,2,1),l),pt(ut(t,e,i,s,-1,2),ut(t,e,i,s,0,2),ut(t,e,i,s,1,2),ut(t,e,i,s,2,2),l),A)}(t,e,r,a):n===K.LINEAR?function(t,e,n,r){const a=n*e[0]-.5,o=r*e[1]-.5,i=Math.floor(a),s=Math.floor(o),l=nt(a),A=nt(o);return st(st(ut(t,e,i,s,0,0),ut(t,e,i,s,1,0),l),st(ut(t,e,i,s,0,1),ut(t,e,i,s,1,1),l),A)}(t,e,r,a):function(t,e,n,r){const a=n*e[0]-.5,o=r*e[1]-.5;return ut(t,e,Math.round(a),Math.round(o),0,0)}(t,e,r,a)}function mt(t,e,n,r,a,o,i){const s=o+.5/n[0],l=i;if(e&&a>0){return st(dt(t,n,r,s,l),dt(e,n,r,s,l),a)}return dt(t,n,r,s,l)}function vt(t,e,n){const r=1+Math.max(0,n);return[t/r,e/r]}function Ct(t,e,n,r,a,o,i,s,l){const{width:A,height:c}=t,u=function(t,e,n){const r=[n[0],n[3]],a=(n[2]-n[0])/t,o=(n[3]-n[1])/e;return t=>{const[e,n]=t;return[(e-r[0])/a,-(n-r[1])/o]}}(A,c,s),g=vt(A,c,n),h=l.map((n=>{const s=u(n),l=s[0]/A,h=s[1]/c,f=mt(t,e,g,r,a,l,h);let p;if(lt(f,i)){const t=ct(f,o,i);if(o===G.VECTOR){const e=function(t,e,n){if(e===G.VECTOR){const r=At(t,e,n);return(360-(Math.atan2(r[1],r[0])/Math.PI*180+180)-270)%360}return NaN}(f,o,i);p={value:t,direction:e}}else p={value:t}}else p={value:NaN};return{type:"Feature",geometry:{type:"Point",coordinates:n},properties:p}}));return{type:"FeatureCollection",features:h}}function Et(t,e,n,r,a,o,i){const{width:s,height:l}=t,A=vt(s,l,n),c=new Float32Array(s*l);for(let n=0;n<l;n++)for(let u=0;u<s;u++){const g=u+n*s,h=mt(t,e,A,r,a,u/s,n/l);let f;f=lt(h,i)?ct(h,o,i):NaN,c[g]=f}return{data:c,width:s,height:l}}var It=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return t<e?e:t>n?n:t};const yt=It;const bt={};for(let t of["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"])bt[`[object ${t}]`]=t.toLowerCase();var wt=function(t){return bt[Object.prototype.toString.call(t)]||"object"};const Qt=wt;const Bt=wt;const xt=Math.PI;var Tt={clip_rgb:t=>{t._clipped=!1,t._unclipped=t.slice(0);for(let e=0;e<=3;e++)e<3?((t[e]<0||t[e]>255)&&(t._clipped=!0),t[e]=yt(t[e],0,255)):3===e&&(t[e]=yt(t[e],0,1));return t},limit:It,type:wt,unpack:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.length>=3?Array.prototype.slice.call(t):"object"==Qt(t[0])&&e?e.split("").filter((e=>void 0!==t[0][e])).map((e=>t[0][e])):t[0]},last:t=>{if(t.length<2)return null;const e=t.length-1;return"string"==Bt(t[e])?t[e].toLowerCase():null},PI:xt,TWOPI:2*xt,PITHIRD:xt/3,DEG2RAD:xt/180,RAD2DEG:180/xt},Ot={format:{},autodetect:[]};const{last:St,clip_rgb:Pt,type:Mt}=Tt,Lt=Ot;var kt=class{constructor(){const t=this;for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];if("object"===Mt(n[0])&&n[0].constructor&&n[0].constructor===this.constructor)return n[0];let a=St(n),o=!1;if(!a){o=!0,Lt.sorted||(Lt.autodetect=Lt.autodetect.sort(((t,e)=>e.p-t.p)),Lt.sorted=!0);for(let t of Lt.autodetect)if(a=t.test(...n),a)break}if(!Lt.format[a])throw new Error("unknown format: "+n);{const e=Lt.format[a].apply(null,o?n:n.slice(0,-1));t._rgb=Pt(e)}3===t._rgb.length&&t._rgb.push(1)}toString(){return"function"==Mt(this.hex)?this.hex():`[${this._rgb.join(",")}]`}};const Nt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new Nt.Color(...e)};Nt.Color=kt,Nt.version="@@version";var Dt=Nt;const{unpack:Ut,last:Vt}=Tt,Jt=t=>Math.round(100*t)/100;var Rt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];const r=Ut(e,"hsla");let a=Vt(e)||"lsa";return r[0]=Jt(r[0]||0),r[1]=Jt(100*r[1])+"%",r[2]=Jt(100*r[2])+"%","hsla"===a||r.length>3&&r[3]<1?(r[3]=r.length>3?r[3]:1,a="hsla"):r.length=3,`${a}(${r.join(",")})`};const{unpack:Ft}=Tt;var qt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Ft(e,"rgba");let[r,a,o]=e;r/=255,a/=255,o/=255;const i=Math.min(r,a,o),s=Math.max(r,a,o),l=(s+i)/2;let A,c;return s===i?(A=0,c=Number.NaN):A=l<.5?(s-i)/(s+i):(s-i)/(2-s-i),r==s?c=(a-o)/(s-i):a==s?c=2+(o-r)/(s-i):o==s&&(c=4+(r-a)/(s-i)),c*=60,c<0&&(c+=360),e.length>3&&void 0!==e[3]?[c,A,l,e[3]]:[c,A,l]};const{unpack:Wt,last:Zt}=Tt,zt=Rt,jt=qt,{round:Xt}=Math;var Kt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];const r=Wt(e,"rgba");let a=Zt(e)||"rgb";return"hsl"==a.substr(0,3)?zt(jt(r),a):(r[0]=Xt(r[0]),r[1]=Xt(r[1]),r[2]=Xt(r[2]),("rgba"===a||r.length>3&&r[3]<1)&&(r[3]=r.length>3?r[3]:1,a="rgba"),`${a}(${r.slice(0,"rgb"===a?3:4).join(",")})`)};const{unpack:Gt}=Tt,{round:Yt}=Math;var Ht=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Gt(e,"hsl");const[r,a,o]=e;let i,s,l;if(0===a)i=s=l=255*o;else{const t=[0,0,0],e=[0,0,0],n=o<.5?o*(1+a):o+a-o*a,A=2*o-n,c=r/360;t[0]=c+1/3,t[1]=c,t[2]=c-1/3;for(let r=0;r<3;r++)t[r]<0&&(t[r]+=1),t[r]>1&&(t[r]-=1),6*t[r]<1?e[r]=A+6*(n-A)*t[r]:2*t[r]<1?e[r]=n:3*t[r]<2?e[r]=A+(n-A)*(2/3-t[r])*6:e[r]=A;[i,s,l]=[Yt(255*e[0]),Yt(255*e[1]),Yt(255*e[2])]}return e.length>3?[i,s,l,e[3]]:[i,s,l,1]};const _t=Ht,$t=Ot,te=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,ee=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,ne=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,re=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ae=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,oe=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,{round:ie}=Math,se=t=>{let e;if(t=t.toLowerCase().trim(),$t.format.named)try{return $t.format.named(t)}catch(t){}if(e=t.match(te)){const t=e.slice(1,4);for(let e=0;e<3;e++)t[e]=+t[e];return t[3]=1,t}if(e=t.match(ee)){const t=e.slice(1,5);for(let e=0;e<4;e++)t[e]=+t[e];return t}if(e=t.match(ne)){const t=e.slice(1,4);for(let e=0;e<3;e++)t[e]=ie(2.55*t[e]);return t[3]=1,t}if(e=t.match(re)){const t=e.slice(1,5);for(let e=0;e<3;e++)t[e]=ie(2.55*t[e]);return t[3]=+t[3],t}if(e=t.match(ae)){const t=e.slice(1,4);t[1]*=.01,t[2]*=.01;const n=_t(t);return n[3]=1,n}if(e=t.match(oe)){const t=e.slice(1,4);t[1]*=.01,t[2]*=.01;const n=_t(t);return n[3]=+e[4],n}};se.test=t=>te.test(t)||ee.test(t)||ne.test(t)||re.test(t)||ae.test(t)||oe.test(t);var le=se;const Ae=Dt,ce=kt,ue=Ot,{type:ge}=Tt,he=Kt,fe=le;ce.prototype.css=function(t){return he(this._rgb,t)},Ae.css=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new ce(...e,"css")},ue.format.css=fe,ue.autodetect.push({p:5,test:function(t){if((arguments.length<=1||!(arguments.length-1))&&"string"===ge(t)&&fe.test(t))return"css"}});const{unpack:pe,last:de}=Tt,{round:me}=Math;var ve=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];let[r,a,o,i]=pe(e,"rgba"),s=de(e)||"auto";void 0===i&&(i=1),"auto"===s&&(s=i<1?"rgba":"rgb"),r=me(r),a=me(a),o=me(o);let l="000000"+(r<<16|a<<8|o).toString(16);l=l.substr(l.length-6);let A="0"+me(255*i).toString(16);switch(A=A.substr(A.length-2),s.toLowerCase()){case"rgba":return`#${l}${A}`;case"argb":return`#${A}${l}`;default:return`#${l}`}};const Ce=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Ee=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;var Ie=t=>{if(t.match(Ce)){4!==t.length&&7!==t.length||(t=t.substr(1)),3===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]);const e=parseInt(t,16);return[e>>16,e>>8&255,255&e,1]}if(t.match(Ee)){5!==t.length&&9!==t.length||(t=t.substr(1)),4===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]);const e=parseInt(t,16);return[e>>24&255,e>>16&255,e>>8&255,Math.round((255&e)/255*100)/100]}throw new Error(`unknown hex color: ${t}`)};const ye=Dt,be=kt,{type:we}=Tt,Qe=Ot,Be=ve;be.prototype.hex=function(t){return Be(this._rgb,t)},ye.hex=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new be(...e,"hex")},Qe.format.hex=Ie,Qe.autodetect.push({p:4,test:function(t){if((arguments.length<=1||!(arguments.length-1))&&"string"===we(t)&&[3,4,5,6,7,8,9].indexOf(t.length)>=0)return"hex"}});const{unpack:xe,type:Te}=Tt,Oe=Dt,Se=kt,Pe=Ot,Me=qt;Se.prototype.hsl=function(){return Me(this._rgb)},Oe.hsl=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new Se(...e,"hsl")},Pe.format.hsl=Ht,Pe.autodetect.push({p:2,test:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];if(e=xe(e,"hsl"),"array"===Te(e)&&3===e.length)return"hsl"}});const{unpack:Le}=Tt,{min:ke,max:Ne}=Math;var De=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Le(e,"rgb");let[r,a,o]=e;const i=ke(r,a,o),s=Ne(r,a,o),l=s-i;let A,c,u;return u=s/255,0===s?(A=Number.NaN,c=0):(c=l/s,r===s&&(A=(a-o)/l),a===s&&(A=2+(o-r)/l),o===s&&(A=4+(r-a)/l),A*=60,A<0&&(A+=360)),[A,c,u]};const{unpack:Ue}=Tt,{floor:Ve}=Math;var Je=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Ue(e,"hsv");let r,a,o,[i,s,l]=e;if(l*=255,0===s)r=a=o=l;else{360===i&&(i=0),i>360&&(i-=360),i<0&&(i+=360),i/=60;const t=Ve(i),e=i-t,n=l*(1-s),A=l*(1-s*e),c=l*(1-s*(1-e));switch(t){case 0:[r,a,o]=[l,c,n];break;case 1:[r,a,o]=[A,l,n];break;case 2:[r,a,o]=[n,l,c];break;case 3:[r,a,o]=[n,A,l];break;case 4:[r,a,o]=[c,n,l];break;case 5:[r,a,o]=[l,n,A]}}return[r,a,o,e.length>3?e[3]:1]};const{unpack:Re,type:Fe}=Tt,qe=Dt,We=kt,Ze=Ot,ze=De;We.prototype.hsv=function(){return ze(this._rgb)},qe.hsv=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new We(...e,"hsv")},Ze.format.hsv=Je,Ze.autodetect.push({p:2,test:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];if(e=Re(e,"hsv"),"array"===Fe(e)&&3===e.length)return"hsv"}});var je={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};const Xe=kt,Ke=Ot,{type:Ge}=Tt,Ye=je,He=Ie,_e=ve;Xe.prototype.name=function(){const t=_e(this._rgb,"rgb");for(let e of Object.keys(Ye))if(Ye[e]===t)return e.toLowerCase();return t},Ke.format.named=t=>{if(t=t.toLowerCase(),Ye[t])return He(Ye[t]);throw new Error("unknown color name: "+t)},Ke.autodetect.push({p:5,test:function(t){if((arguments.length<=1||!(arguments.length-1))&&"string"===Ge(t)&&Ye[t.toLowerCase()])return"named"}});const $e=Dt,tn=kt,en=Ot,{unpack:nn,type:rn}=Tt,{round:an}=Math;tn.prototype.rgb=function(){return!1===(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])?this._rgb.slice(0,3):this._rgb.slice(0,3).map(an)},tn.prototype.rgba=function(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._rgb.slice(0,4).map(((e,n)=>n<3?!1===t?e:an(e):e))},$e.rgb=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new tn(...e,"rgb")},en.format.rgb=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];const r=nn(e,"rgba");return void 0===r[3]&&(r[3]=1),r},en.autodetect.push({p:3,test:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];if(e=nn(e,"rgba"),"array"===rn(e)&&(3===e.length||4===e.length&&"number"==rn(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});const on=kt,{type:sn}=Tt;on.prototype.alpha=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return void 0!==t&&"number"===sn(t)?e?(this._rgb[3]=t,this):new on([this._rgb[0],this._rgb[1],this._rgb[2],t],"rgb"):this._rgb[3]};const ln=kt;var An=(t,e,n,r)=>{let a,o,i,s,l,A,c,u,g,h,f,p;return"hsl"===r?(a=t.hsl(),o=e.hsl()):"hsv"===r?(a=t.hsv(),o=e.hsv()):"hcg"===r?(a=t.hcg(),o=e.hcg()):"hsi"===r?(a=t.hsi(),o=e.hsi()):"lch"===r||"hcl"===r?(r="hcl",a=t.hcl(),o=e.hcl()):"oklch"===r&&(a=t.oklch().reverse(),o=e.oklch().reverse()),"h"!==r.substr(0,1)&&"oklch"!==r||([i,l,c]=a,[s,A,u]=o),isNaN(i)||isNaN(s)?isNaN(i)?isNaN(s)?h=Number.NaN:(h=s,1!=c&&0!=c||"hsv"==r||(g=A)):(h=i,1!=u&&0!=u||"hsv"==r||(g=l)):(p=s>i&&s-i>180?s-(i+360):s<i&&i-s>180?s+360-i:s-i,h=i+n*p),void 0===g&&(g=l+n*(A-l)),f=c+n*(u-c),new ln("oklch"===r?[f,g,h]:[h,g,f],r)},cn={};const un=An;cn.hsl=(t,e,n)=>un(t,e,n,"hsl");const gn=An;cn.hsv=(t,e,n)=>gn(t,e,n,"hsv");const hn=kt;cn.rgb=(t,e,n)=>{const r=t._rgb,a=e._rgb;return new hn(r[0]+n*(a[0]-r[0]),r[1]+n*(a[1]-r[1]),r[2]+n*(a[2]-r[2]),"rgb")};const fn=kt,{type:pn}=Tt,dn=cn;const mn=Dt,{type:vn}=Tt,{pow:Cn}=Math;Dt.mix=Dt.interpolate=function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,r=(arguments.length<=3?void 0:arguments[3])||"lrgb";if(dn[r]||!(arguments.length<=3)&&arguments.length-3||(r=Object.keys(dn)[0]),!dn[r])throw new Error(`interpolation mode ${r} is not defined`);return"object"!==pn(t)&&(t=new fn(t)),"object"!==pn(e)&&(e=new fn(e)),dn[r](t,e,n).alpha(t.alpha()+n*(e.alpha()-t.alpha()))},Dt.scale=function(t){let e="rgb",n=mn("#ccc"),r=0,a=[0,1],o=[],i=[0,0],s=!1,l=[],A=!1,c=0,u=1,g=!1,h={},f=!0,p=1;const d=function(t){if((t=t||["#fff","#000"])&&"string"===vn(t)&&mn.brewer&&mn.brewer[t.toLowerCase()]&&(t=mn.brewer[t.toLowerCase()]),"array"===vn(t)){1===t.length&&(t=[t[0],t[0]]),t=t.slice(0);for(let e=0;e<t.length;e++)t[e]=mn(t[e]);o.length=0;for(let e=0;e<t.length;e++)o.push(e/(t.length-1))}return E(),l=t};let m=t=>t,v=t=>t;const C=function(t,r){let a,A;if(null==r&&(r=!1),isNaN(t)||null===t)return n;if(r)A=t;else if(s&&s.length>2){A=function(t){if(null!=s){const e=s.length-1;let n=0;for(;n<e&&t>=s[n];)n++;return n-1}return 0}(t)/(s.length-2)}else A=u!==c?(t-c)/(u-c):1;A=v(A),r||(A=m(A)),1!==p&&(A=Cn(A,p)),A=i[0]+A*(1-i[0]-i[1]),A=Math.min(1,Math.max(0,A));const g=Math.floor(1e4*A);if(f&&h[g])a=h[g];else{if("array"===vn(l))for(let t=0;t<o.length;t++){const n=o[t];if(A<=n){a=l[t];break}if(A>=n&&t===o.length-1){a=l[t];break}if(A>n&&A<o[t+1]){A=(A-n)/(o[t+1]-n),a=mn.interpolate(l[t],l[t+1],A,e);break}}else"function"===vn(l)&&(a=l(A));f&&(h[g]=a)}return a};var E=()=>h={};d(t);const I=function(t){const e=mn(C(t));return A&&e[A]?e[A]():e};return I.classes=function(t){if(null!=t){if("array"===vn(t))s=t,a=[t[0],t[t.length-1]];else{const e=mn.analyze(a);s=0===t?[e.min,e.max]:mn.limits(e,"e",t)}return I}return s},I.domain=function(t){if(!arguments.length)return a;c=t[0],u=t[t.length-1],o=[];const e=l.length;if(t.length===e&&c!==u)for(let e of Array.from(t))o.push((e-c)/(u-c));else{for(let t=0;t<e;t++)o.push(t/(e-1));if(t.length>2){const e=t.map(((e,n)=>n/(t.length-1))),n=t.map((t=>(t-c)/(u-c)));n.every(((t,n)=>e[n]===t))||(v=t=>{if(t<=0||t>=1)return t;let r=0;for(;t>=n[r+1];)r++;const a=(t-n[r])/(n[r+1]-n[r]);return e[r]+a*(e[r+1]-e[r])})}}return a=[c,u],I},I.mode=function(t){return arguments.length?(e=t,E(),I):e},I.range=function(t,e){return d(t),I},I.out=function(t){return A=t,I},I.spread=function(t){return arguments.length?(r=t,I):r},I.correctLightness=function(t){return null==t&&(t=!0),g=t,E(),m=g?function(t){const e=C(0,!0).lab()[0],n=C(1,!0).lab()[0],r=e>n;let a=C(t,!0).lab()[0];const o=e+(n-e)*t;let i=a-o,s=0,l=1,A=20;for(;Math.abs(i)>.01&&A-- >0;)r&&(i*=-1),i<0?(s=t,t+=.5*(l-t)):(l=t,t+=.5*(s-t)),a=C(t,!0).lab()[0],i=a-o;return t}:t=>t,I},I.padding=function(t){return null!=t?("number"===vn(t)&&(t=[t,t]),i=t,I):i},I.colors=function(e,n){arguments.length<2&&(n="hex");let r=[];if(0===arguments.length)r=l.slice(0);else if(1===e)r=[I(.5)];else if(e>1){const t=a[0],n=a[1]-t;r=function(t,e,n){let r=[],a=t<e,o=n?a?e+1:e-1:e;for(let e=t;a?e<o:e>o;a?e++:e--)r.push(e);return r}(0,e,!1).map((r=>I(t+r/(e-1)*n)))}else{t=[];let e=[];if(s&&s.length>2)for(let t=1,n=s.length,r=1<=n;r?t<n:t>n;r?t++:t--)e.push(.5*(s[t-1]+s[t]));else e=a;r=e.map((t=>I(t)))}return mn[n]&&(r=r.map((t=>t[n]()))),r},I.cache=function(t){return null!=t?(f=t,I):f},I.gamma=function(t){return null!=t?(p=t,I):p},I.nodata=function(t){return null!=t?(n=mn(t),I):n},I};var En=/[ ,\t:]+/g,In=/[\-\/]/g;function yn(t){return t.startsWith("#")}function bn(t){var e=t.split(In);return 1===e.length?e[0]:e}function wn(t){for(var e=t.trim().split("\n"),n=function(t){return t.some((function(t){return!yn(t)&&t.split(En).length>=8}))}(e),r=function(t){return t.some((function(t){return!(yn(t)||!t.match(/\d+\-\d+\-\d+/)&&!t.match(/\d+\/\d+\/\d+/))}))}(e),a=function(t){var e=t.find((function(t){return yn(t)&&t.includes("COLOR_MODEL = ")}));if(e){var n=e.match(/COLOR_MODEL = ([a-zA-Z]+)/);if(n)return n[1].toLowerCase()}}(e),o=[],i=0,s=e.filter((function(t){return!!t&&!t.startsWith("#")}));i<s.length;i++){var l=s[i].split(En);n?8===l.length||9===l.length?(o.push([l[0],[l[1],l[2],l[3]]]),o.push([l[4],[l[5],l[6],l[7]]])):4!==l.length&&5!==l.length||o.push([l[0],[l[1],l[2],l[3]]]):r?4===l.length||5===l.length?(o.push([l[0],bn(l[1])]),o.push([l[2],bn(l[3])])):2!==l.length&&3!==l.length||o.push([l[0],bn(l[1])]):5===l.length?o.push([l[0],[l[1],l[2],l[3],l[4]]]):4===l.length?o.push([l[0],[l[1],l[2],l[3]]]):2===l.length&&o.push([l[0],l[1]])}return{paletteArray:o,mode:a}}var Qn="rgb";function Bn(t,e){if("string"==typeof t){if("%"===t[t.length-1]){var n=parseFloat(t)/100;if(n<0||n>1)throw new Error("Invalid value for a percentage ".concat(t));return e[0]+(e[1]-e[0])*n}return"N"===t?null:"B"===t||"F"===t?void 0:"nv"===t?null:"default"===t?void 0:"null"===t||"nodata"===t?null:parseFloat(t)}if("number"==typeof t)return t;throw new Error("Invalid state")}function xn(t,e){var n,r,a;if(Array.isArray(t)){if(4===t.length)return(n={})[e[0]]=parseFloat(t[0].toString()),n[e[1]]=parseFloat(t[1].toString()),n[e[2]]=parseFloat(t[2].toString()),n.a=parseFloat(t[3].toString())/255,n;if(3===t.length)return(r={})[e[0]]=parseFloat(t[0].toString()),r[e[1]]=parseFloat(t[1].toString()),r[e[2]]=parseFloat(t[2].toString()),r;throw new Error("Invalid color ".concat(t))}if("string"==typeof t||"number"==typeof t)return t.toString().match(/\d+/)||"number"==typeof t?((a={})[e[0]]=parseFloat(t.toString()),a[e[1]]=parseFloat(t.toString()),a[e[2]]=parseFloat(t.toString()),a):t;throw new Error("Invalid color ".concat(t))}function Tn(t,e){for(var n,r=void 0===e?{}:e,a=r.bounds,o=void 0===a?[0,1]:a,i=r.mode,s=void 0===i?Qn:i,l=[],A=[],c=0,u=t;c<u.length;c++){var g=u[c],h=g[0],f=g[1],p=Bn(h,o),d=xn(f,s);null!=p?(l.push(d),A.push(p)):null===p&&(n=d)}var m=Dt.scale(l).domain(A).mode(s);return void 0!==n&&(m=m.nodata(n)),m}function On(t,e){var n=(void 0===e?{}:e).bounds,r=void 0===n?[0,1]:n;if("string"==typeof t)return function(t,e){var n=(void 0===e?{}:e).bounds,r=void 0===n?[0,1]:n,a=wn(t);return Tn(a.paletteArray,{bounds:r,mode:a.mode})}(t,{bounds:r});if(Array.isArray(t))return Tn(t,{bounds:r});throw new Error("Invalid format")}function Sn(t,e){var n=void 0===e?{}:e,r=n.width,a=void 0===r?256:r,o=n.height,i=void 0===o?1:o,s=t.colors(a,"css"),l=document.createElement("canvas");l.width=a,l.height=i,l.style.imageRendering="-moz-crisp-edges",l.style.imageRendering="pixelated";for(var A=l.getContext("2d"),c=0;c<a;c++)A.fillStyle=s[c],A.fillRect(c,0,1,i);return l}class Pn{addTo(t){t.appendChild(this.onAdd())}prependTo(t){t.prepend(this.onAdd())}remove(){this.onRemove()}updateConfig(t){this.setConfig({...this.getConfig(),...t})}}function Mn(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}var Ln,kn;Mn(".weatherlayers-legend-control{margin:10px;pointer-events:auto}.weatherlayers-legend-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:14px;width:100%}.weatherlayers-legend-control header,.weatherlayers-legend-control main{margin:5px 10px}.weatherlayers-legend-control header{font-weight:700}.weatherlayers-legend-control .legend{margin-top:5px;vertical-align:middle;width:100%}");class Nn extends Pn{constructor(t={}){super(),Ln.set(this,void 0),kn.set(this,void 0),N(this,Ln,t,"f")}onAdd(){return N(this,kn,document.createElement("div"),"f"),k(this,kn,"f").className="weatherlayers-legend-control",this.setConfig(k(this,Ln,"f")),k(this,kn,"f")}onRemove(){k(this,kn,"f")&&k(this,kn,"f").parentNode&&(k(this,kn,"f").parentNode.removeChild(k(this,kn,"f")),N(this,kn,void 0,"f"))}getConfig(){return{...k(this,Ln,"f")}}setConfig(t){if(!k(this,kn,"f"))return;if(!t.title||!t.unitFormat||!t.palette)return;if(k(this,kn,"f").children.length>0&&k(this,Ln,"f").width===t.width&&k(this,Ln,"f").ticksCount===t.ticksCount&&k(this,Ln,"f").title===t.title&&k(this,Ln,"f").unitFormat===t.unitFormat&&k(this,Ln,"f").palette===t.palette)return;N(this,Ln,t,"f");const e=k(this,Ln,"f").width??300,n=k(this,Ln,"f").ticksCount??6,r=k(this,Ln,"f").title,a=k(this,Ln,"f").unitFormat,o=On(k(this,Ln,"f").palette),i=o.domain(),s=[i[0],i[i.length-1]],l=Sn(o).toDataURL();k(this,kn,"f").innerHTML="",k(this,kn,"f").style.width=`${e}px`;const A=document.createElement("div");k(this,kn,"f").appendChild(A);const c=document.createElement("header");A.appendChild(c);const u=document.createElement("span");u.className="text",u.innerHTML=`${r} [${m(a)}]`,c.appendChild(u);const g=document.createElement("main");A.appendChild(g);const h="http://www.w3.org/2000/svg",f=document.createElementNS(h,"svg");f.setAttribute("height","24px"),f.setAttribute("class","legend"),g.appendChild(f);const p=document.createElementNS(h,"image");p.setAttribute("href",l),p.setAttribute("width","100%"),p.setAttribute("height","5"),p.setAttribute("preserveAspectRatio","none"),f.appendChild(p);const v=(s[1]-s[0])/(n-1);for(let t=0;t<n;t++){const e=s[0]+t*v,r=d(e,a),o=document.createElementNS(h,"g");o.style.transform=`translate(${(e-s[0])/(s[1]-s[0])*100}%, 0)`,f.appendChild(o);const i=document.createElementNS(h,"line");i.setAttribute("y1","0"),i.setAttribute("y2","10"),i.style.stroke="currentColor",0===t?i.style.transform="translate(0.5px, 0)":t===n-1&&(i.style.transform="translate(-0.5px, 0)"),o.appendChild(i);const l=document.createElementNS(h,"text");l.innerHTML=r,l.setAttribute("x","0"),l.setAttribute("y","22"),l.style.textAnchor=0===t?"start":t===n-1?"end":"middle",o.appendChild(l)}}}Ln=new WeakMap,kn=new WeakMap;var Dn,Un;Mn(".weatherlayers-tooltip-control{margin:10px;pointer-events:auto}.weatherlayers-tooltip-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:20px;padding:0 5px}");class Vn extends Pn{constructor(t={}){super(),Dn.set(this,void 0),Un.set(this,void 0),N(this,Dn,t,"f")}onAdd(){return N(this,Un,document.createElement("div"),"f"),k(this,Un,"f").className="weatherlayers-tooltip-control",this.setConfig(k(this,Dn,"f")),k(this,Un,"f")}onRemove(){k(this,Un,"f")&&k(this,Un,"f").parentNode&&(k(this,Un,"f").parentNode.removeChild(k(this,Un,"f")),N(this,Un,void 0,"f"))}getConfig(){return{...k(this,Dn,"f")}}setConfig(t){k(this,Un,"f")&&t.unitFormat&&(k(this,Un,"f").children.length>0&&k(this,Dn,"f").unitFormat===t.unitFormat||(N(this,Dn,t,"f"),k(this,Un,"f").innerHTML=""))}update(t){if(!k(this,Un,"f"))return;if(!t)return void(k(this,Un,"f").innerHTML="");const e=k(this,Dn,"f").unitFormat,{value:n,direction:r}=t;let a=v(n,e);void 0!==r&&(a+=`, ${C(r)}`),k(this,Un,"f").innerHTML=`<div>${a}</div>`}}Dn=new WeakMap,Un=new WeakMap;const Jn="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function Rn(t=20){return new Array(t).fill(void 0).map((()=>Jn.charAt(Math.floor(Math.random()*Jn.length)))).join("")}function Fn(t,e){for(let n=t.length-1;n>=0;n--)if(e.call(t,t[n],n,t))return n;return-1}var qn,Wn,Zn,zn,jn,Xn,Kn,Gn,Yn,Hn,_n;Mn(".weatherlayers-timeline-control{margin:10px;pointer-events:auto}.weatherlayers-timeline-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:14px;width:100%}.weatherlayers-timeline-control footer,.weatherlayers-timeline-control header,.weatherlayers-timeline-control main{margin:5px 10px;text-align:center}.weatherlayers-timeline-control header{font-weight:700}.weatherlayers-timeline-control footer{display:flex;gap:10px}.weatherlayers-timeline-control .progress-input{margin:-2px 0 2px;vertical-align:middle;width:100%}.weatherlayers-timeline-control .end-datetime,.weatherlayers-timeline-control .start-datetime{flex:0 0}.weatherlayers-timeline-control .buttons{flex:1 0}.weatherlayers-timeline-control .start-datetime{text-align:left}.weatherlayers-timeline-control .end-datetime{text-align:right}.weatherlayers-timeline-control .button{background:no-repeat 50%/contain;display:inline-block;height:16px;vertical-align:middle;width:16px}.weatherlayers-timeline-control .button+.button{margin-left:5px}.weatherlayers-timeline-control .play-button{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1576 927 248 1665q-23 13-39.5 3t-16.5-36V160q0-26 16.5-36t39.5 3l1328 738q23 13 23 31t-23 31z'/%3E%3C/svg%3E\")}.weatherlayers-timeline-control .pause-button{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1664 192v1408q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45V192q0-26 19-45t45-19h512q26 0 45 19t19 45zm-896 0v1408q0 26-19 45t-45 19H192q-26 0-45-19t-19-45V192q0-26 19-45t45-19h512q26 0 45 19t19 45z'/%3E%3C/svg%3E\")}.weatherlayers-timeline-control .step-backward-button{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1363 141q19-19 32-13t13 32v1472q0 26-13 32t-32-13L653 941q-9-9-13-19v678q0 26-19 45t-45 19H448q-26 0-45-19t-19-45V192q0-26 19-45t45-19h128q26 0 45 19t19 45v678q4-10 13-19z'/%3E%3C/svg%3E\")}.weatherlayers-timeline-control .step-forward-button{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M429 1651q-19 19-32 13t-13-32V160q0-26 13-32t32 13l710 710q9 9 13 19V192q0-26 19-45t45-19h128q26 0 45 19t19 45v1408q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45V922q-4 10-13 19z'/%3E%3C/svg%3E\")}.weatherlayers-timeline-control .loader{display:block;margin-top:2px}.weatherlayers-timeline-control .loader-icon{background:no-repeat 50%/contain;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' style='margin:auto;background:0 0;display:block;shape-rendering:auto' width='16' height='16' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid'%3E%3Ccircle cx='50' cy='50' fill='none' stroke='rgba(0, 0, 0, 0.4)' stroke-width='10' r='25' stroke-dasharray='117.80972450961724 41.269908169872416'%3E%3CanimateTransform attributeName='transform' type='rotate' repeatCount='indefinite' dur='1s' values='0 50 50;360 50 50' keyTimes='0;1'/%3E%3C/circle%3E%3C/svg%3E\");display:inline-block;height:16px;vertical-align:middle;width:16px}.weatherlayers-timeline-control .loader-text{color:rgba(0,0,0,.4);margin-left:2px;vertical-align:middle}.weatherlayers-timeline-control.loading *{pointer-events:none}.weatherlayers-timeline-control.running .play-button,.weatherlayers-timeline-control:not(.running) .pause-button{display:none}.weatherlayers-timeline-control:not(.loading) .loader{visibility:hidden}");const $n="loading",tr="running";class er extends Pn{constructor(t={}){super(),qn.add(this),Wn.set(this,void 0),Zn.set(this,void 0),zn.set(this,!1),jn.set(this,void 0),N(this,Wn,t,"f"),N(this,jn,new R({onUpdate:()=>k(this,qn,"m",Hn).call(this),fps:k(this,Wn,"f").fps??15}),"f")}onAdd(){return N(this,Zn,document.createElement("div"),"f"),k(this,Zn,"f").className="weatherlayers-timeline-control",this.setConfig(k(this,Wn,"f")),k(this,Zn,"f")}onRemove(){k(this,Zn,"f")&&k(this,Zn,"f").parentNode&&(k(this,Zn,"f").parentNode.removeChild(k(this,Zn,"f")),N(this,Zn,void 0,"f"))}get loading(){return k(this,zn,"f")}get running(){return k(this,qn,"a",Xn)}async toggle(t=!k(this,qn,"a",Xn)){return t?await this.start():this.pause()}async start(){!k(this,Zn,"f")||k(this,zn,"f")||k(this,qn,"a",Xn)||(await k(this,qn,"m",_n).call(this,k(this,Wn,"f").datetimes),k(this,jn,"f").start(),k(this,Zn,"f").classList.add(tr),k(this,qn,"m",Gn).call(this))}pause(){k(this,Zn,"f")&&!k(this,zn,"f")&&k(this,qn,"a",Xn)&&(k(this,jn,"f").stop(),k(this,Zn,"f").classList.remove(tr),k(this,qn,"m",Gn).call(this))}stop(){if(!k(this,Zn,"f")||k(this,zn,"f")||!k(this,qn,"a",Xn))return;const t=k(this,Zn,"f").querySelector("input");t&&(k(this,jn,"f").stop(),k(this,Zn,"f").classList.remove(tr),t.valueAsNumber=0,k(this,qn,"m",Gn).call(this))}reset(){if(!k(this,Zn,"f")||k(this,zn,"f")||k(this,qn,"a",Xn))return;const t=k(this,Zn,"f").querySelector("input");t&&(t.valueAsNumber=0,k(this,qn,"m",Gn).call(this))}async stepBackward(){if(!k(this,Zn,"f")||k(this,zn,"f")||k(this,qn,"a",Xn))return;const t=k(this,Zn,"f").querySelector("input");t&&(t.value!==t.min?t.stepDown():t.value=t.max,await k(this,qn,"m",_n).call(this,k(this,qn,"a",Kn)),k(this,qn,"m",Gn).call(this))}async stepForward(){if(!k(this,Zn,"f")||k(this,zn,"f")||k(this,qn,"a",Xn))return;const t=k(this,Zn,"f").querySelector("input");t&&(t.value!==t.max?t.stepUp():t.value=t.min,await k(this,qn,"m",_n).call(this,k(this,qn,"a",Kn)),k(this,qn,"m",Gn).call(this))}getConfig(){return{...k(this,Wn,"f")}}setConfig(t){if(!k(this,Zn,"f"))return;if(!t.datetimes||t.datetimes.length<2||!t.datetime||t.datetime<t.datetimes[0]||t.datetime>t.datetimes[t.datetimes.length-1])return;if(k(this,Zn,"f").children.length>0&&k(this,Wn,"f").width===t.width&&k(this,Wn,"f").datetimes.length===t.datetimes.length&&k(this,Wn,"f").datetimes.every(((e,n)=>e===t.datetimes[n]))&&k(this,Wn,"f").datetime===t.datetime&&k(this,Wn,"f").datetimeInterpolate===t.datetimeInterpolate&&k(this,Wn,"f").datetimeFormatFunction===t.datetimeFormatFunction&&k(this,Wn,"f").onPreload===t.onPreload&&k(this,Wn,"f").onUpdate===t.onUpdate)return;N(this,Wn,t,"f");const e=k(this,Wn,"f").width??300,n=k(this,Wn,"f").datetimes,r=k(this,Wn,"f").datetime,a=k(this,Wn,"f").datetimeInterpolate,o=k(this,Wn,"f").datetimeFormatFunction??X,i=Fn(n,(t=>t<=r));if(i<0)throw new Error("Invalid state");const s=i<n.length-1?i+1:null,l=q(n[i],"number"==typeof s?n[i+1]:null,r),A=a?.25:1,c=i+Math.floor(l/A)*A;k(this,Zn,"f").innerHTML="",k(this,Zn,"f").style.width=`${e}px`;const u=document.createElement("div");k(this,Zn,"f").appendChild(u);const g=document.createElement("header");u.appendChild(g);const h=document.createElement("span");h.className="current-datetime",h.innerHTML=o(r),g.appendChild(h);const f=document.createElement("main");u.appendChild(f);const p=`progress-input-ticks-${Rn()}`,d=document.createElement("input");d.className="progress-input",d.type="range",d.min="0",d.max=""+(n.length-1),d.step=`${A}`,d.valueAsNumber=c,d.setAttribute("list",p),d.addEventListener("input",(()=>k(this,qn,"m",Yn).call(this))),f.appendChild(d);const m=document.createElement("datalist");m.id=p,f.appendChild(m);for(let t=0;t<n.length;t++){const e=document.createElement("option");e.innerHTML=`${t}`,m.appendChild(e)}const v=document.createElement("footer");u.appendChild(v);const C=document.createElement("span");C.className="start-datetime",C.innerHTML=o(n[0]),v.appendChild(C);const E=document.createElement("span");E.className="buttons",v.appendChild(E);const I=document.createElement("span");I.className="end-datetime",I.innerHTML=o(n[n.length-1]),v.appendChild(I);const y=document.createElement("a");y.href="javascript:void(0)",y.className="button step-backward-button",y.addEventListener("click",(()=>this.stepBackward())),E.appendChild(y);const b=document.createElement("a");b.href="javascript:void(0)",b.className="button play-button",b.addEventListener("click",(()=>this.start())),E.appendChild(b);const w=document.createElement("a");w.href="javascript:void(0)",w.className="button pause-button",w.addEventListener("click",(()=>this.pause())),E.appendChild(w);const Q=document.createElement("a");Q.href="javascript:void(0)",Q.className="button step-forward-button",Q.addEventListener("click",(()=>this.stepForward())),E.appendChild(Q);const B=document.createElement("span");B.className="loader",E.appendChild(B);const x=document.createElement("span");x.className="loader-icon",B.appendChild(x);const T=document.createElement("span");T.className="loader-text",T.innerHTML="Loading...",B.appendChild(T)}}Wn=new WeakMap,Zn=new WeakMap,zn=new WeakMap,jn=new WeakMap,qn=new WeakSet,Xn=function(){return k(this,jn,"f").running},Kn=function(){if(!k(this,Zn,"f"))return[];const t=k(this,Zn,"f").querySelector("input");if(!t)return[];const e=k(this,Wn,"f").datetimes[Math.floor(t.valueAsNumber)],n=k(this,Wn,"f").datetimes[Math.ceil(t.valueAsNumber)];return e===n?[e]:[e,n]},Gn=function(){if(!k(this,Zn,"f"))return;const t=k(this,Zn,"f").querySelector(".current-datetime"),e=k(this,Zn,"f").querySelector("input");if(!t||!e)return;const n=F(k(this,Wn,"f").datetimes[Math.floor(e.valueAsNumber)],k(this,Wn,"f").datetimes[Math.ceil(e.valueAsNumber)],e.valueAsNumber%1);k(this,Wn,"f").datetime=n;const r=k(this,Wn,"f").datetimeFormatFunction??X;t.innerHTML=r(n),k(this,Wn,"f").onUpdate&&k(this,Wn,"f").onUpdate(n)},Yn=async function(){k(this,zn,"f")||k(this,qn,"a",Xn)||(await k(this,qn,"m",_n).call(this,k(this,qn,"a",Kn)),k(this,qn,"m",Gn).call(this))},Hn=function(){if(!k(this,Zn,"f")||k(this,zn,"f")||!k(this,qn,"a",Xn))return;const t=k(this,Zn,"f").querySelector("input");t&&(t.value!==t.max?t.stepUp():t.value=t.min,k(this,qn,"m",Gn).call(this))},_n=async function(t){k(this,Zn,"f")&&k(this,Wn,"f").onPreload&&(N(this,zn,!0,"f"),k(this,Zn,"f").classList.add($n),await k(this,Wn,"f").onPreload(t),N(this,zn,!1,"f"),k(this,Zn,"f").classList.remove($n))};var nr,rr;Mn(".weatherlayers-attribution-control{margin-top:2px;pointer-events:auto}.weatherlayers-attribution-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:20px;padding:0 5px}.weatherlayers-attribution-control a{color:rgba(0,0,0,.75);text-decoration:none}.weatherlayers-attribution-control a:hover{text-decoration:underline}");class ar extends Pn{constructor(t={}){super(),nr.set(this,void 0),rr.set(this,void 0),N(this,nr,t,"f")}onAdd(){return N(this,rr,document.createElement("div"),"f"),k(this,rr,"f").className="weatherlayers-attribution-control",this.setConfig(k(this,nr,"f")),k(this,rr,"f")}onRemove(){k(this,rr,"f")&&k(this,rr,"f").parentNode&&(k(this,rr,"f").parentNode.removeChild(k(this,rr,"f")),N(this,rr,void 0,"f"))}getConfig(){return{...k(this,nr,"f")}}setConfig(t){if(!k(this,rr,"f"))return;if(!t.attribution)return;if(k(this,rr,"f").children.length>0&&k(this,nr,"f").attribution===t.attribution)return;N(this,nr,t,"f");const e=k(this,nr,"f").attribution;k(this,rr,"f").innerHTML=`<div>${e}</div>`}}nr=new WeakMap,rr=new WeakMap;var or,ir;Mn(".weatherlayers-logo-control{margin:10px;pointer-events:auto}.weatherlayers-logo-control a{background:no-repeat 50%/contain;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 131 23'%3E%3Cg opacity='.9'%3E%3Cpath d='M27.391 17.706h2.534l1.736-6.475h.132l1.765 6.475h2.52l2.761-10.569H36.07l-1.384 7.009h-.132l-1.75-7.009H30.65l-1.692 7.009h-.131L27.42 7.137h-2.79l2.761 10.569Zm15.092.19c2.615 0 3.611-1.53 3.846-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.116 4.262Zm-.036-6.687c.805 0 1.377.52 1.501 1.495h-3.003c.125-.96.703-1.495 1.502-1.495Zm7.028 6.622c1.04 0 1.912-.44 2.271-1.136h.139v1.011h2.549v-5.559c0-1.758-1.282-2.783-3.531-2.783-2.204 0-3.611.989-3.757 2.49l-.007.088h2.351l.014-.037c.154-.41.572-.637 1.253-.637.718 0 1.128.33 1.128.879v.637l-1.78.103c-2.102.132-3.259.988-3.259 2.468v.015c0 1.486 1.069 2.461 2.629 2.461Zm-.132-2.644v-.015c0-.484.403-.791 1.172-.842l1.37-.088v.534c0 .703-.637 1.245-1.458 1.245-.652 0-1.084-.322-1.084-.834Zm9.944 2.534c.49 0 .966-.044 1.237-.103v-1.853a5.19 5.19 0 0 1-.651.029c-.674 0-.982-.293-.982-.908v-3.428h1.633V9.554h-1.633V7.687h-2.6v1.867h-1.245v1.904h1.245v4.014c0 1.597.85 2.249 2.996 2.249Zm2.267-.015h2.593v-4.658c0-.938.498-1.575 1.34-1.575.879 0 1.282.557 1.282 1.546v4.687h2.593V12.44c0-1.956-.945-3.076-2.754-3.076-1.15 0-1.97.571-2.322 1.465h-.139V6.5h-2.593v11.206Zm12.719.19c2.615 0 3.611-1.53 3.846-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.116 4.262Zm-.036-6.687c.805 0 1.377.52 1.501 1.495h-3.003c.125-.96.703-1.495 1.502-1.495Zm4.816 6.497h2.593v-4.314c0-1.128.71-1.78 1.926-1.78.366 0 .74.052 1.084.139V9.562a2.733 2.733 0 0 0-.879-.132c-1.04 0-1.757.52-1.992 1.421h-.139V9.554h-2.593v8.152Zm6.443 0h7.177v-2.161h-4.489V7.137h-2.688v10.569Zm10.36.125c1.04 0 1.912-.44 2.271-1.136h.139v1.011h2.549v-5.559c0-1.758-1.282-2.783-3.53-2.783-2.205 0-3.611.989-3.758 2.49l-.007.088h2.351l.015-.037c.154-.41.571-.637 1.252-.637.718 0 1.128.33 1.128.879v.637l-1.78.103c-2.102.132-3.259.988-3.259 2.468v.015c0 1.486 1.069 2.461 2.629 2.461Zm-.131-2.644v-.015c0-.484.402-.791 1.171-.842l1.37-.088v.534c0 .703-.637 1.245-1.457 1.245-.652 0-1.084-.322-1.084-.834Zm7.233 5.397c2.3 0 3.589-.82 4.336-3.142l2.571-7.888h-2.74l-1.45 5.911h-.154l-1.45-5.911h-2.863l2.783 8.152-.037.227c-.08.476-.527.747-1.304.747-.212 0-.424 0-.571-.007v1.904c.293.007.586.007.879.007Zm10.896-2.688c2.614 0 3.61-1.53 3.845-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.117 4.262Zm-.037-6.687c.806 0 1.377.52 1.501 1.495h-3.003c.125-.96.704-1.495 1.502-1.495Zm4.816 6.497h2.593v-4.314c0-1.128.711-1.78 1.926-1.78.367 0 .74.052 1.084.139V9.562a2.733 2.733 0 0 0-.879-.132c-1.04 0-1.757.52-1.992 1.421h-.139V9.554h-2.593v8.152Zm9.468.19c2.212 0 3.735-1.083 3.735-2.775v-.008c0-1.223-.769-1.911-2.454-2.248l-1.406-.279c-.776-.161-1.025-.373-1.025-.739v-.015c0-.454.432-.725 1.076-.725.718 0 1.121.381 1.202.718l.014.051h2.373v-.037c-.044-1.303-1.23-2.475-3.589-2.475-2.19 0-3.581 1.018-3.581 2.644v.007c0 1.245.805 2.066 2.38 2.381l1.406.278c.74.154 1.018.373 1.018.754v.008c0 .439-.446.71-1.142.71-.754 0-1.165-.315-1.318-.732l-.015-.044h-2.52v.051c.162 1.421 1.429 2.475 3.846 2.475Z' style='fill:none;fill-rule:nonzero;stroke:%23000;stroke-opacity:.3;stroke-width:3px' transform='translate(-2.33)'/%3E%3Cpath d='M27.391 17.706h2.534l1.736-6.475h.132l1.765 6.475h2.52l2.761-10.569H36.07l-1.384 7.009h-.132l-1.75-7.009H30.65l-1.692 7.009h-.131L27.42 7.137h-2.79l2.761 10.569Zm15.092.19c2.615 0 3