UNPKG

weatherlayers-gl

Version:

WeatherLayers GL - Weather Visualization Layers for deck.gl

14 lines (13 loc) 132 kB
/*! * 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";function e(t,e){if(!e)return`${Math.round(t)}`;const{scale:n=1,offset:r=0,decimals:a=0}=e,A=n*t+r;return`${a?Math.round(A*10**a)/10**a:Math.round(A)}`}function n(t){return t.unit.replace("^2","²").replace("^3","³")}function r(t,r){return`${e(t,r)} ${n(r)}`}function a(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 A=1,i=[255,255,255,51],o='"Helvetica Neue", Arial, Helvetica, sans-serif',s=12,l=[153,153,153,255],c=1,g=[13,13,13,255],h=e,u=40,f=[255,255,255,102];function C(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 E(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 d(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 p,I,m,Q;class B{constructor(t){p.set(this,void 0),I.set(this,!1),m.set(this,void 0),Q.set(this,0),d(this,p,t,"f")}getConfig(){return{...E(this,p,"f")}}setConfig(t){d(this,p,t,"f")}updateConfig(t){this.setConfig({...E(this,p,"f"),...t})}get running(){return E(this,I,"f")}toggle(t=!E(this,I,"f")){t?this.start():this.stop()}start(){E(this,I,"f")||(d(this,I,!0,"f"),d(this,m,window.requestAnimationFrame((()=>this.step())),"f"))}stop(){E(this,I,"f")&&(d(this,I,!1,"f"),E(this,m,"f")&&(window.cancelAnimationFrame(E(this,m,"f")),d(this,m,void 0,"f")))}step(){const t=1e3/(E(this,p,"f").fps??30),e=Date.now(),n=e-E(this,Q,"f");n>t&&(d(this,Q,e-n%t,"f"),E(this,p,"f").onUpdate()),E(this,I,"f")&&d(this,m,window.requestAnimationFrame((()=>this.step())),"f")}}function v(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 w(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 b(t,e){return[...t].reverse().find((t=>t<=e))}function y(t,e){return t.find((t=>t>=e))}function T(t,e){const n=new Date(t);return new Date(n.getTime()+1e3*e*60*60).toISOString()}function O(t,e,n){return[T(t,e),T(t,n)]}function k(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 M,N,V;p=new WeakMap,I=new WeakMap,m=new WeakMap,Q=new WeakMap,function(t){t.NEAREST="NEAREST",t.LINEAR="LINEAR",t.CUBIC="CUBIC"}(M||(M={})),function(t){t.SCALAR="SCALAR",t.VECTOR="VECTOR"}(N||(N={})),function(t){t.METRIC="METRIC",t.IMPERIAL="IMPERIAL",t.NAUTICAL="NAUTICAL"}(V||(V={}));const q=new Map;async function S(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 D(t){return(e,n=q)=>{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 x=D((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 A=a.getImageData(0,0,r.width,r.height),{data:i,width:o,height:s}=A;return{data:i,width:o,height:s}}(t);if(t.includes(".tif"))return S(t);throw new Error("Unsupported data format")})),U=D((async t=>(await fetch(t)).json()));function L(t){return t%1}function J(t,e){return t.map(((n,r)=>t[r]+e[r]))}function P(t,e){return t.map(((n,r)=>t[r]*e))}function Z(t,e){return t.map(((n,r)=>t[r]*e[r])).reduce(((t,e)=>t+e))}function F(t,e,n){return t*(1-n)+e*n}function R(t,e,n){return t.map(((r,a)=>F(t[a],e[a],n)))}function K(t,e){return e?255==t[3]:!isNaN(t[0])}function W(t,e,n){return e===N.VECTOR?n?[F(n[0],n[1],t[0]/255),F(n[0],n[1],t[1]/255)]:[t[0],t[1]]:[NaN,NaN]}function z(t,e,n){if(e===N.VECTOR){const r=W(t,e,n);return Math.hypot(r[0],r[1])}return function(t,e,n){return e===N.VECTOR?0:n?F(n[0],n[1],t[0]/255):t[0]}(t,e,n)}function X(t,e,n,r,a,A){const{data:i,width:o,height:s}=t,l=i.length/(o*s),c=(n+a+.5)/e[0],g=(Math.max(0,r)+A+.5)/e[1],h=Math.floor(c*o),u=Math.floor(g*s);return new Array(l).fill(void 0).map(((t,e)=>i[(h+u*o)*l+e]))}const Y=[3,-6,0,4].map((t=>t/6)),G=[-1,6,-12,8].map((t=>t/6));function j(t){return[t*t*t,t*t,t,1]}function H(t,e,n,r,a){const A=J(J(J(P(t,Z(G,j(a+1))),P(e,Z(Y,j(a)))),P(n,Z(Y,j(1-a)))),P(r,Z(G,j(2-a))));return A[3]=255==t[3]&&255==e[3]&&255==n[3]&&255==r[3]?255:0,A}function $(t,e,n,r,a){return n===M.CUBIC?function(t,e,n,r){const a=n*e[0]-.5,A=r*e[1]-.5,i=Math.floor(a),o=Math.floor(A),s=L(a),l=L(A);return H(H(X(t,e,i,o,-1,-1),X(t,e,i,o,0,-1),X(t,e,i,o,1,-1),X(t,e,i,o,2,-1),s),H(X(t,e,i,o,-1,0),X(t,e,i,o,0,0),X(t,e,i,o,1,0),X(t,e,i,o,2,0),s),H(X(t,e,i,o,-1,1),X(t,e,i,o,0,1),X(t,e,i,o,1,1),X(t,e,i,o,2,1),s),H(X(t,e,i,o,-1,2),X(t,e,i,o,0,2),X(t,e,i,o,1,2),X(t,e,i,o,2,2),s),l)}(t,e,r,a):n===M.LINEAR?function(t,e,n,r){const a=n*e[0]-.5,A=r*e[1]-.5,i=Math.floor(a),o=Math.floor(A),s=L(a),l=L(A);return R(R(X(t,e,i,o,0,0),X(t,e,i,o,1,0),s),R(X(t,e,i,o,0,1),X(t,e,i,o,1,1),s),l)}(t,e,r,a):function(t,e,n,r){const a=n*e[0]-.5,A=r*e[1]-.5;return X(t,e,Math.round(a),Math.round(A),0,0)}(t,e,r,a)}function _(t,e,n,r,a,A,i){const o=A+.5/n[0],s=i;if(e&&a>0){return R($(t,n,r,o,s),$(e,n,r,o,s),a)}return $(t,n,r,o,s)}function tt(t,e,n){const r=1+Math.max(0,n);return[t/r,e/r]}function et(t,e,n,r,a,A,i,o,s){const{width:l,height:c}=t,g=function(t,e,n){const r=[n[0],n[3]],a=(n[2]-n[0])/t,A=(n[3]-n[1])/e;return t=>{const[e,n]=t;return[(e-r[0])/a,-(n-r[1])/A]}}(l,c,o),h=tt(l,c,n),u=s.map((n=>{const o=g(n),s=o[0]/l,u=o[1]/c,f=_(t,e,h,r,a,s,u);let C;if(K(f,i)){const t=z(f,A,i);if(A===N.VECTOR){const e=function(t,e,n){if(e===N.VECTOR){const r=W(t,e,n);return(360-(Math.atan2(r[1],r[0])/Math.PI*180+180)-270)%360}return NaN}(f,A,i);C={value:t,direction:e}}else C={value:t}}else C={value:NaN};return{type:"Feature",geometry:{type:"Point",coordinates:n},properties:C}}));return{type:"FeatureCollection",features:u}}function nt(t,e,n,r,a,A,i){const{width:o,height:s}=t,l=tt(o,s,n),c=new Float32Array(o*s);for(let n=0;n<s;n++)for(let g=0;g<o;g++){const h=g+n*o,u=_(t,e,l,r,a,g/o,n/s);let f;f=K(u,i)?z(u,A,i):NaN,c[h]=f}return{data:c,width:o,height:s}}var rt=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 at=rt;const At={};for(let t of["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"])At[`[object ${t}]`]=t.toLowerCase();var it=function(t){return At[Object.prototype.toString.call(t)]||"object"};const ot=it;const st=it;const lt=Math.PI;var ct={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]=at(t[e],0,255)):3===e&&(t[e]=at(t[e],0,1));return t},limit:rt,type:it,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"==ot(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"==st(t[e])?t[e].toLowerCase():null},PI:lt,TWOPI:2*lt,PITHIRD:lt/3,DEG2RAD:lt/180,RAD2DEG:180/lt},gt={format:{},autodetect:[]};const{last:ht,clip_rgb:ut,type:ft}=ct,Ct=gt;var Et=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"===ft(n[0])&&n[0].constructor&&n[0].constructor===this.constructor)return n[0];let a=ht(n),A=!1;if(!a){A=!0,Ct.sorted||(Ct.autodetect=Ct.autodetect.sort(((t,e)=>e.p-t.p)),Ct.sorted=!0);for(let t of Ct.autodetect)if(a=t.test(...n),a)break}if(!Ct.format[a])throw new Error("unknown format: "+n);{const e=Ct.format[a].apply(null,A?n:n.slice(0,-1));t._rgb=ut(e)}3===t._rgb.length&&t._rgb.push(1)}toString(){return"function"==ft(this.hex)?this.hex():`[${this._rgb.join(",")}]`}};const dt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new dt.Color(...e)};dt.Color=Et,dt.version="@@version";var pt=dt;const{unpack:It,last:mt}=ct,Qt=t=>Math.round(100*t)/100;var Bt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];const r=It(e,"hsla");let a=mt(e)||"lsa";return r[0]=Qt(r[0]||0),r[1]=Qt(100*r[1])+"%",r[2]=Qt(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:vt}=ct;var wt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=vt(e,"rgba");let[r,a,A]=e;r/=255,a/=255,A/=255;const i=Math.min(r,a,A),o=Math.max(r,a,A),s=(o+i)/2;let l,c;return o===i?(l=0,c=Number.NaN):l=s<.5?(o-i)/(o+i):(o-i)/(2-o-i),r==o?c=(a-A)/(o-i):a==o?c=2+(A-r)/(o-i):A==o&&(c=4+(r-a)/(o-i)),c*=60,c<0&&(c+=360),e.length>3&&void 0!==e[3]?[c,l,s,e[3]]:[c,l,s]};const{unpack:bt,last:yt}=ct,Tt=Bt,Ot=wt,{round:kt}=Math;var Mt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];const r=bt(e,"rgba");let a=yt(e)||"rgb";return"hsl"==a.substr(0,3)?Tt(Ot(r),a):(r[0]=kt(r[0]),r[1]=kt(r[1]),r[2]=kt(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:Nt}=ct,{round:Vt}=Math;var qt=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Nt(e,"hsl");const[r,a,A]=e;let i,o,s;if(0===a)i=o=s=255*A;else{const t=[0,0,0],e=[0,0,0],n=A<.5?A*(1+a):A+a-A*a,l=2*A-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]=l+6*(n-l)*t[r]:2*t[r]<1?e[r]=n:3*t[r]<2?e[r]=l+(n-l)*(2/3-t[r])*6:e[r]=l;[i,o,s]=[Vt(255*e[0]),Vt(255*e[1]),Vt(255*e[2])]}return e.length>3?[i,o,s,e[3]]:[i,o,s,1]};const St=qt,Dt=gt,xt=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Ut=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,Lt=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Jt=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Pt=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Zt=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,{round:Ft}=Math,Rt=t=>{let e;if(t=t.toLowerCase().trim(),Dt.format.named)try{return Dt.format.named(t)}catch(t){}if(e=t.match(xt)){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(Ut)){const t=e.slice(1,5);for(let e=0;e<4;e++)t[e]=+t[e];return t}if(e=t.match(Lt)){const t=e.slice(1,4);for(let e=0;e<3;e++)t[e]=Ft(2.55*t[e]);return t[3]=1,t}if(e=t.match(Jt)){const t=e.slice(1,5);for(let e=0;e<3;e++)t[e]=Ft(2.55*t[e]);return t[3]=+t[3],t}if(e=t.match(Pt)){const t=e.slice(1,4);t[1]*=.01,t[2]*=.01;const n=St(t);return n[3]=1,n}if(e=t.match(Zt)){const t=e.slice(1,4);t[1]*=.01,t[2]*=.01;const n=St(t);return n[3]=+e[4],n}};Rt.test=t=>xt.test(t)||Ut.test(t)||Lt.test(t)||Jt.test(t)||Pt.test(t)||Zt.test(t);var Kt=Rt;const Wt=pt,zt=Et,Xt=gt,{type:Yt}=ct,Gt=Mt,jt=Kt;zt.prototype.css=function(t){return Gt(this._rgb,t)},Wt.css=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new zt(...e,"css")},Xt.format.css=jt,Xt.autodetect.push({p:5,test:function(t){if((arguments.length<=1||!(arguments.length-1))&&"string"===Yt(t)&&jt.test(t))return"css"}});const{unpack:Ht,last:$t}=ct,{round:_t}=Math;var te=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];let[r,a,A,i]=Ht(e,"rgba"),o=$t(e)||"auto";void 0===i&&(i=1),"auto"===o&&(o=i<1?"rgba":"rgb"),r=_t(r),a=_t(a),A=_t(A);let s="000000"+(r<<16|a<<8|A).toString(16);s=s.substr(s.length-6);let l="0"+_t(255*i).toString(16);switch(l=l.substr(l.length-2),o.toLowerCase()){case"rgba":return`#${s}${l}`;case"argb":return`#${l}${s}`;default:return`#${s}`}};const ee=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,ne=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;var re=t=>{if(t.match(ee)){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(ne)){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 ae=pt,Ae=Et,{type:ie}=ct,oe=gt,se=te;Ae.prototype.hex=function(t){return se(this._rgb,t)},ae.hex=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new Ae(...e,"hex")},oe.format.hex=re,oe.autodetect.push({p:4,test:function(t){if((arguments.length<=1||!(arguments.length-1))&&"string"===ie(t)&&[3,4,5,6,7,8,9].indexOf(t.length)>=0)return"hex"}});const{unpack:le,type:ce}=ct,ge=pt,he=Et,ue=gt,fe=wt;he.prototype.hsl=function(){return fe(this._rgb)},ge.hsl=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new he(...e,"hsl")},ue.format.hsl=qt,ue.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=le(e,"hsl"),"array"===ce(e)&&3===e.length)return"hsl"}});const{unpack:Ce}=ct,{min:Ee,max:de}=Math;var pe=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Ce(e,"rgb");let[r,a,A]=e;const i=Ee(r,a,A),o=de(r,a,A),s=o-i;let l,c,g;return g=o/255,0===o?(l=Number.NaN,c=0):(c=s/o,r===o&&(l=(a-A)/s),a===o&&(l=2+(A-r)/s),A===o&&(l=4+(r-a)/s),l*=60,l<0&&(l+=360)),[l,c,g]};const{unpack:Ie}=ct,{floor:me}=Math;var Qe=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e=Ie(e,"hsv");let r,a,A,[i,o,s]=e;if(s*=255,0===o)r=a=A=s;else{360===i&&(i=0),i>360&&(i-=360),i<0&&(i+=360),i/=60;const t=me(i),e=i-t,n=s*(1-o),l=s*(1-o*e),c=s*(1-o*(1-e));switch(t){case 0:[r,a,A]=[s,c,n];break;case 1:[r,a,A]=[l,s,n];break;case 2:[r,a,A]=[n,s,c];break;case 3:[r,a,A]=[n,l,s];break;case 4:[r,a,A]=[c,n,s];break;case 5:[r,a,A]=[s,n,l]}}return[r,a,A,e.length>3?e[3]:1]};const{unpack:Be,type:ve}=ct,we=pt,be=Et,ye=gt,Te=pe;be.prototype.hsv=function(){return Te(this._rgb)},we.hsv=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new be(...e,"hsv")},ye.format.hsv=Qe,ye.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=Be(e,"hsv"),"array"===ve(e)&&3===e.length)return"hsv"}});var Oe={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 ke=Et,Me=gt,{type:Ne}=ct,Ve=Oe,qe=re,Se=te;ke.prototype.name=function(){const t=Se(this._rgb,"rgb");for(let e of Object.keys(Ve))if(Ve[e]===t)return e.toLowerCase();return t},Me.format.named=t=>{if(t=t.toLowerCase(),Ve[t])return qe(Ve[t]);throw new Error("unknown color name: "+t)},Me.autodetect.push({p:5,test:function(t){if((arguments.length<=1||!(arguments.length-1))&&"string"===Ne(t)&&Ve[t.toLowerCase()])return"named"}});const De=pt,xe=Et,Ue=gt,{unpack:Le,type:Je}=ct,{round:Pe}=Math;xe.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(Pe)},xe.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:Pe(e):e))},De.rgb=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return new xe(...e,"rgb")},Ue.format.rgb=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];const r=Le(e,"rgba");return void 0===r[3]&&(r[3]=1),r},Ue.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=Le(e,"rgba"),"array"===Je(e)&&(3===e.length||4===e.length&&"number"==Je(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});const Ze=Et,{type:Fe}=ct;Ze.prototype.alpha=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return void 0!==t&&"number"===Fe(t)?e?(this._rgb[3]=t,this):new Ze([this._rgb[0],this._rgb[1],this._rgb[2],t],"rgb"):this._rgb[3]};const Re=Et;var Ke=(t,e,n,r)=>{let a,A,i,o,s,l,c,g,h,u,f,C;return"hsl"===r?(a=t.hsl(),A=e.hsl()):"hsv"===r?(a=t.hsv(),A=e.hsv()):"hcg"===r?(a=t.hcg(),A=e.hcg()):"hsi"===r?(a=t.hsi(),A=e.hsi()):"lch"===r||"hcl"===r?(r="hcl",a=t.hcl(),A=e.hcl()):"oklch"===r&&(a=t.oklch().reverse(),A=e.oklch().reverse()),"h"!==r.substr(0,1)&&"oklch"!==r||([i,s,c]=a,[o,l,g]=A),isNaN(i)||isNaN(o)?isNaN(i)?isNaN(o)?u=Number.NaN:(u=o,1!=c&&0!=c||"hsv"==r||(h=l)):(u=i,1!=g&&0!=g||"hsv"==r||(h=s)):(C=o>i&&o-i>180?o-(i+360):o<i&&i-o>180?o+360-i:o-i,u=i+n*C),void 0===h&&(h=s+n*(l-s)),f=c+n*(g-c),new Re("oklch"===r?[f,h,u]:[u,h,f],r)},We={};const ze=Ke;We.hsl=(t,e,n)=>ze(t,e,n,"hsl");const Xe=Ke;We.hsv=(t,e,n)=>Xe(t,e,n,"hsv");const Ye=Et;We.rgb=(t,e,n)=>{const r=t._rgb,a=e._rgb;return new Ye(r[0]+n*(a[0]-r[0]),r[1]+n*(a[1]-r[1]),r[2]+n*(a[2]-r[2]),"rgb")};const Ge=Et,{type:je}=ct,He=We;const $e=pt,{type:_e}=ct,{pow:tn}=Math;pt.mix=pt.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(He[r]||!(arguments.length<=3)&&arguments.length-3||(r=Object.keys(He)[0]),!He[r])throw new Error(`interpolation mode ${r} is not defined`);return"object"!==je(t)&&(t=new Ge(t)),"object"!==je(e)&&(e=new Ge(e)),He[r](t,e,n).alpha(t.alpha()+n*(e.alpha()-t.alpha()))},pt.scale=function(t){let e="rgb",n=$e("#ccc"),r=0,a=[0,1],A=[],i=[0,0],o=!1,s=[],l=!1,c=0,g=1,h=!1,u={},f=!0,C=1;const E=function(t){if((t=t||["#fff","#000"])&&"string"===_e(t)&&$e.brewer&&$e.brewer[t.toLowerCase()]&&(t=$e.brewer[t.toLowerCase()]),"array"===_e(t)){1===t.length&&(t=[t[0],t[0]]),t=t.slice(0);for(let e=0;e<t.length;e++)t[e]=$e(t[e]);A.length=0;for(let e=0;e<t.length;e++)A.push(e/(t.length-1))}return m(),s=t};let d=t=>t,p=t=>t;const I=function(t,r){let a,l;if(null==r&&(r=!1),isNaN(t)||null===t)return n;if(r)l=t;else if(o&&o.length>2){l=function(t){if(null!=o){const e=o.length-1;let n=0;for(;n<e&&t>=o[n];)n++;return n-1}return 0}(t)/(o.length-2)}else l=g!==c?(t-c)/(g-c):1;l=p(l),r||(l=d(l)),1!==C&&(l=tn(l,C)),l=i[0]+l*(1-i[0]-i[1]),l=Math.min(1,Math.max(0,l));const h=Math.floor(1e4*l);if(f&&u[h])a=u[h];else{if("array"===_e(s))for(let t=0;t<A.length;t++){const n=A[t];if(l<=n){a=s[t];break}if(l>=n&&t===A.length-1){a=s[t];break}if(l>n&&l<A[t+1]){l=(l-n)/(A[t+1]-n),a=$e.interpolate(s[t],s[t+1],l,e);break}}else"function"===_e(s)&&(a=s(l));f&&(u[h]=a)}return a};var m=()=>u={};E(t);const Q=function(t){const e=$e(I(t));return l&&e[l]?e[l]():e};return Q.classes=function(t){if(null!=t){if("array"===_e(t))o=t,a=[t[0],t[t.length-1]];else{const e=$e.analyze(a);o=0===t?[e.min,e.max]:$e.limits(e,"e",t)}return Q}return o},Q.domain=function(t){if(!arguments.length)return a;c=t[0],g=t[t.length-1],A=[];const e=s.length;if(t.length===e&&c!==g)for(let e of Array.from(t))A.push((e-c)/(g-c));else{for(let t=0;t<e;t++)A.push(t/(e-1));if(t.length>2){const e=t.map(((e,n)=>n/(t.length-1))),n=t.map((t=>(t-c)/(g-c)));n.every(((t,n)=>e[n]===t))||(p=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,g],Q},Q.mode=function(t){return arguments.length?(e=t,m(),Q):e},Q.range=function(t,e){return E(t),Q},Q.out=function(t){return l=t,Q},Q.spread=function(t){return arguments.length?(r=t,Q):r},Q.correctLightness=function(t){return null==t&&(t=!0),h=t,m(),d=h?function(t){const e=I(0,!0).lab()[0],n=I(1,!0).lab()[0],r=e>n;let a=I(t,!0).lab()[0];const A=e+(n-e)*t;let i=a-A,o=0,s=1,l=20;for(;Math.abs(i)>.01&&l-- >0;)r&&(i*=-1),i<0?(o=t,t+=.5*(s-t)):(s=t,t+=.5*(o-t)),a=I(t,!0).lab()[0],i=a-A;return t}:t=>t,Q},Q.padding=function(t){return null!=t?("number"===_e(t)&&(t=[t,t]),i=t,Q):i},Q.colors=function(e,n){arguments.length<2&&(n="hex");let r=[];if(0===arguments.length)r=s.slice(0);else if(1===e)r=[Q(.5)];else if(e>1){const t=a[0],n=a[1]-t;r=function(t,e,n){let r=[],a=t<e,A=n?a?e+1:e-1:e;for(let e=t;a?e<A:e>A;a?e++:e--)r.push(e);return r}(0,e,!1).map((r=>Q(t+r/(e-1)*n)))}else{t=[];let e=[];if(o&&o.length>2)for(let t=1,n=o.length,r=1<=n;r?t<n:t>n;r?t++:t--)e.push(.5*(o[t-1]+o[t]));else e=a;r=e.map((t=>Q(t)))}return $e[n]&&(r=r.map((t=>t[n]()))),r},Q.cache=function(t){return null!=t?(f=t,Q):f},Q.gamma=function(t){return null!=t?(C=t,Q):C},Q.nodata=function(t){return null!=t?(n=$e(t),Q):n},Q};var en=/[ ,\t:]+/g,nn=/[\-\/]/g;function rn(t){return t.startsWith("#")}function an(t){var e=t.split(nn);return 1===e.length?e[0]:e}function An(t){for(var e=t.trim().split("\n"),n=function(t){return t.some((function(t){return!rn(t)&&t.split(en).length>=8}))}(e),r=function(t){return t.some((function(t){return!(rn(t)||!t.match(/\d+\-\d+\-\d+/)&&!t.match(/\d+\/\d+\/\d+/))}))}(e),a=function(t){var e=t.find((function(t){return rn(t)&&t.includes("COLOR_MODEL = ")}));if(e){var n=e.match(/COLOR_MODEL = ([a-zA-Z]+)/);if(n)return n[1].toLowerCase()}}(e),A=[],i=0,o=e.filter((function(t){return!!t&&!t.startsWith("#")}));i<o.length;i++){var s=o[i].split(en);n?8===s.length||9===s.length?(A.push([s[0],[s[1],s[2],s[3]]]),A.push([s[4],[s[5],s[6],s[7]]])):4!==s.length&&5!==s.length||A.push([s[0],[s[1],s[2],s[3]]]):r?4===s.length||5===s.length?(A.push([s[0],an(s[1])]),A.push([s[2],an(s[3])])):2!==s.length&&3!==s.length||A.push([s[0],an(s[1])]):5===s.length?A.push([s[0],[s[1],s[2],s[3],s[4]]]):4===s.length?A.push([s[0],[s[1],s[2],s[3]]]):2===s.length&&A.push([s[0],s[1]])}return{paletteArray:A,mode:a}}var on="rgb";function sn(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 ln(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 cn(t,e){for(var n,r=void 0===e?{}:e,a=r.bounds,A=void 0===a?[0,1]:a,i=r.mode,o=void 0===i?on:i,s=[],l=[],c=0,g=t;c<g.length;c++){var h=g[c],u=h[0],f=h[1],C=sn(u,A),E=ln(f,o);null!=C?(s.push(E),l.push(C)):null===C&&(n=E)}var d=pt.scale(s).domain(l).mode(o);return void 0!==n&&(d=d.nodata(n)),d}function gn(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=An(t);return cn(a.paletteArray,{bounds:r,mode:a.mode})}(t,{bounds:r});if(Array.isArray(t))return cn(t,{bounds:r});throw new Error("Invalid format")}class hn{addTo(t){t.appendChild(this.onAdd())}prependTo(t){t.prepend(this.onAdd())}remove(){this.onRemove()}updateConfig(t){this.setConfig({...this.getConfig(),...t})}}function un(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 fn,Cn;un(".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 En extends hn{constructor(t={}){super(),fn.set(this,void 0),Cn.set(this,void 0),d(this,fn,t,"f")}onAdd(){return d(this,Cn,document.createElement("div"),"f"),E(this,Cn,"f").className="weatherlayers-legend-control",this.setConfig(E(this,fn,"f")),E(this,Cn,"f")}onRemove(){E(this,Cn,"f")&&E(this,Cn,"f").parentNode&&(E(this,Cn,"f").parentNode.removeChild(E(this,Cn,"f")),d(this,Cn,void 0,"f"))}getConfig(){return{...E(this,fn,"f")}}setConfig(t){if(!E(this,Cn,"f"))return;if(!t.title||!t.unitFormat||!t.palette)return;if(E(this,Cn,"f").children.length>0&&E(this,fn,"f").width===t.width&&E(this,fn,"f").ticksCount===t.ticksCount&&E(this,fn,"f").title===t.title&&E(this,fn,"f").unitFormat===t.unitFormat&&E(this,fn,"f").palette===t.palette)return;d(this,fn,t,"f");const r=E(this,fn,"f").width??300,a=E(this,fn,"f").ticksCount??6,A=E(this,fn,"f").title,i=E(this,fn,"f").unitFormat,o=gn(E(this,fn,"f").palette),s=o.domain(),l=[s[0],s[s.length-1]],c=function(t,e){var n=void 0===e?{}:e,r=n.width,a=void 0===r?256:r,A=n.height,i=void 0===A?1:A,o=t.colors(a,"css"),s=document.createElement("canvas");s.width=a,s.height=i,s.style.imageRendering="-moz-crisp-edges",s.style.imageRendering="pixelated";for(var l=s.getContext("2d"),c=0;c<a;c++)l.fillStyle=o[c],l.fillRect(c,0,1,i);return s}(o),g=c.toDataURL();E(this,Cn,"f").innerHTML="",E(this,Cn,"f").style.width=`${r}px`;const h=document.createElement("div");E(this,Cn,"f").appendChild(h);const u=document.createElement("header");h.appendChild(u);const f=document.createElement("span");f.className="text",f.innerHTML=`${A} [${n(i)}]`,u.appendChild(f);const C=document.createElement("main");h.appendChild(C);const p="http://www.w3.org/2000/svg",I=document.createElementNS(p,"svg");I.setAttribute("height","24px"),I.setAttribute("class","legend"),C.appendChild(I);const m=document.createElementNS(p,"image");m.setAttribute("href",g),m.setAttribute("width","100%"),m.setAttribute("height","5"),m.setAttribute("preserveAspectRatio","none"),I.appendChild(m);const Q=(l[1]-l[0])/(a-1);for(let t=0;t<a;t++){const n=l[0]+t*Q,r=e(n,i),A=document.createElementNS(p,"g");A.style.transform=`translate(${(n-l[0])/(l[1]-l[0])*100}%, 0)`,I.appendChild(A);const o=document.createElementNS(p,"line");o.setAttribute("y1","0"),o.setAttribute("y2","10"),o.style.stroke="currentColor",0===t?o.style.transform="translate(0.5px, 0)":t===a-1&&(o.style.transform="translate(-0.5px, 0)"),A.appendChild(o);const s=document.createElementNS(p,"text");s.innerHTML=r,s.setAttribute("x","0"),s.setAttribute("y","22"),s.style.textAnchor=0===t?"start":t===a-1?"end":"middle",A.appendChild(s)}}}fn=new WeakMap,Cn=new WeakMap;var dn,pn;un(".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 In extends hn{constructor(t={}){super(),dn.set(this,void 0),pn.set(this,void 0),d(this,dn,t,"f")}onAdd(){return d(this,pn,document.createElement("div"),"f"),E(this,pn,"f").className="weatherlayers-tooltip-control",this.setConfig(E(this,dn,"f")),E(this,pn,"f")}onRemove(){E(this,pn,"f")&&E(this,pn,"f").parentNode&&(E(this,pn,"f").parentNode.removeChild(E(this,pn,"f")),d(this,pn,void 0,"f"))}getConfig(){return{...E(this,dn,"f")}}setConfig(t){E(this,pn,"f")&&t.unitFormat&&(E(this,pn,"f").children.length>0&&E(this,dn,"f").unitFormat===t.unitFormat||(d(this,dn,t,"f"),E(this,pn,"f").innerHTML=""))}update(t){if(!E(this,pn,"f"))return;if(!t)return void(E(this,pn,"f").innerHTML="");const e=E(this,dn,"f").unitFormat,{value:n,direction:A}=t;let i=r(n,e);void 0!==A&&(i+=`, ${a(A)}`),E(this,pn,"f").innerHTML=`<div>${i}</div>`}}dn=new WeakMap,pn=new WeakMap;const mn="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";var Qn,Bn,vn,wn,bn,yn,Tn,On,kn,Mn,Nn;un(".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 Vn="loading",qn="running";class Sn extends hn{constructor(t={}){super(),Qn.add(this),Bn.set(this,void 0),vn.set(this,void 0),wn.set(this,!1),bn.set(this,void 0),d(this,Bn,t,"f"),d(this,bn,new B({onUpdate:()=>E(this,Qn,"m",Mn).call(this),fps:E(this,Bn,"f").fps??15}),"f")}onAdd(){return d(this,vn,document.createElement("div"),"f"),E(this,vn,"f").className="weatherlayers-timeline-control",this.setConfig(E(this,Bn,"f")),E(this,vn,"f")}onRemove(){E(this,vn,"f")&&E(this,vn,"f").parentNode&&(E(this,vn,"f").parentNode.removeChild(E(this,vn,"f")),d(this,vn,void 0,"f"))}get loading(){return E(this,wn,"f")}get running(){return E(this,Qn,"a",yn)}async toggle(t=!E(this,Qn,"a",yn)){return t?await this.start():this.pause()}async start(){!E(this,vn,"f")||E(this,wn,"f")||E(this,Qn,"a",yn)||(await E(this,Qn,"m",Nn).call(this,E(this,Bn,"f").datetimes),E(this,bn,"f").start(),E(this,vn,"f").classList.add(qn),E(this,Qn,"m",On).call(this))}pause(){E(this,vn,"f")&&!E(this,wn,"f")&&E(this,Qn,"a",yn)&&(E(this,bn,"f").stop(),E(this,vn,"f").classList.remove(qn),E(this,Qn,"m",On).call(this))}stop(){if(!E(this,vn,"f")||E(this,wn,"f")||!E(this,Qn,"a",yn))return;const t=E(this,vn,"f").querySelector("input");t&&(E(this,bn,"f").stop(),E(this,vn,"f").classList.remove(qn),t.valueAsNumber=0,E(this,Qn,"m",On).call(this))}reset(){if(!E(this,vn,"f")||E(this,wn,"f")||E(this,Qn,"a",yn))return;const t=E(this,vn,"f").querySelector("input");t&&(t.valueAsNumber=0,E(this,Qn,"m",On).call(this))}async stepBackward(){if(!E(this,vn,"f")||E(this,wn,"f")||E(this,Qn,"a",yn))return;const t=E(this,vn,"f").querySelector("input");t&&(t.value!==t.min?t.stepDown():t.value=t.max,await E(this,Qn,"m",Nn).call(this,E(this,Qn,"a",Tn)),E(this,Qn,"m",On).call(this))}async stepForward(){if(!E(this,vn,"f")||E(this,wn,"f")||E(this,Qn,"a",yn))return;const t=E(this,vn,"f").querySelector("input");t&&(t.value!==t.max?t.stepUp():t.value=t.min,await E(this,Qn,"m",Nn).call(this,E(this,Qn,"a",Tn)),E(this,Qn,"m",On).call(this))}getConfig(){return{...E(this,Bn,"f")}}setConfig(t){if(!E(this,vn,"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(E(this,vn,"f").children.length>0&&E(this,Bn,"f").width===t.width&&E(this,Bn,"f").datetimes.length===t.datetimes.length&&E(this,Bn,"f").datetimes.every(((e,n)=>e===t.datetimes[n]))&&E(this,Bn,"f").datetime===t.datetime&&E(this,Bn,"f").datetimeInterpolate===t.datetimeInterpolate&&E(this,Bn,"f").datetimeFormatFunction===t.datetimeFormatFunction&&E(this,Bn,"f").onPreload===t.onPreload&&E(this,Bn,"f").onUpdate===t.onUpdate)return;d(this,Bn,t,"f");const e=E(this,Bn,"f").width??300,n=E(this,Bn,"f").datetimes,r=E(this,Bn,"f").datetime,a=E(this,Bn,"f").datetimeInterpolate,A=E(this,Bn,"f").datetimeFormatFunction??k,i=function(t,e){for(let n=t.length-1;n>=0;n--)if(e.call(t,t[n],n,t))return n;return-1}(n,(t=>t<=r));if(i<0)throw new Error("Invalid state");const o=i<n.length-1?i+1:null,s=w(n[i],"number"==typeof o?n[i+1]:null,r),l=a?.25:1,c=i+Math.floor(s/l)*l;E(this,vn,"f").innerHTML="",E(this,vn,"f").style.width=`${e}px`;const g=document.createElement("div");E(this,vn,"f").appendChild(g);const h=document.createElement("header");g.appendChild(h);const u=document.createElement("span");u.className="current-datetime",u.innerHTML=A(r),h.appendChild(u);const f=document.createElement("main");g.appendChild(f);const C=`progress-input-ticks-${function(t=20){return new Array(t).fill(void 0).map((()=>mn.charAt(Math.floor(62*Math.random())))).join("")}()}`,p=document.createElement("input");p.className="progress-input",p.type="range",p.min="0",p.max=""+(n.length-1),p.step=`${l}`,p.valueAsNumber=c,p.setAttribute("list",C),p.addEventListener("input",(()=>E(this,Qn,"m",kn).call(this))),f.appendChild(p);const I=document.createElement("datalist");I.id=C,f.appendChild(I);for(let t=0;t<n.length;t++){const e=document.createElement("option");e.innerHTML=`${t}`,I.appendChild(e)}const m=document.createElement("footer");g.appendChild(m);const Q=document.createElement("span");Q.className="start-datetime",Q.innerHTML=A(n[0]),m.appendChild(Q);const B=document.createElement("span");B.className="buttons",m.appendChild(B);const v=document.createElement("span");v.className="end-datetime",v.innerHTML=A(n[n.length-1]),m.appendChild(v);const b=document.createElement("a");b.href="javascript:void(0)",b.className="button step-backward-button",b.addEventListener("click",(()=>this.stepBackward())),B.appendChild(b);const y=document.createElement("a");y.href="javascript:void(0)",y.className="button play-button",y.addEventListener("click",(()=>this.start())),B.appendChild(y);const T=document.createElement("a");T.href="javascript:void(0)",T.className="button pause-button",T.addEventListener("click",(()=>this.pause())),B.appendChild(T);const O=document.createElement("a");O.href="javascript:void(0)",O.className="button step-forward-button",O.addEventListener("click",(()=>this.stepForward())),B.appendChild(O);const M=document.createElement("span");M.className="loader",B.appendChild(M);const N=document.createElement("span");N.className="loader-icon",M.appendChild(N);const V=document.createElement("span");V.className="loader-text",V.innerHTML="Loading...",M.appendChild(V)}}Bn=new WeakMap,vn=new WeakMap,wn=new WeakMap,bn=new WeakMap,Qn=new WeakSet,yn=function(){return E(this,bn,"f").running},Tn=function(){if(!E(this,vn,"f"))return[];const t=E(this,vn,"f").querySelector("input");if(!t)return[];const e=E(this,Bn,"f").datetimes[Math.floor(t.valueAsNumber)],n=E(this,Bn,"f").datetimes[Math.ceil(t.valueAsNumber)];return e===n?[e]:[e,n]},On=function(){if(!E(this,vn,"f"))return;const t=E(this,vn,"f").querySelector(".current-datetime"),e=E(this,vn,"f").querySelector("input");if(!t||!e)return;const n=v(E(this,Bn,"f").datetimes[Math.floor(e.valueAsNumber)],E(this,Bn,"f").datetimes[Math.ceil(e.valueAsNumber)],e.valueAsNumber%1);E(this,Bn,"f").datetime=n;const r=E(this,Bn,"f").datetimeFormatFunction??k;t.innerHTML=r(n),E(this,Bn,"f").onUpdate&&E(this,Bn,"f").onUpdate(n)},kn=async function(){E(this,wn,"f")||E(this,Qn,"a",yn)||(await E(this,Qn,"m",Nn).call(this,E(this,Qn,"a",Tn)),E(this,Qn,"m",On).call(this))},Mn=function(){if(!E(this,vn,"f")||E(this,wn,"f")||!E(this,Qn,"a",yn))return;const t=E(this,vn,"f").querySelector("input");t&&(t.value!==t.max?t.stepUp():t.value=t.min,E(this,Qn,"m",On).call(this))},Nn=async function(t){E(this,vn,"f")&&E(this,Bn,"f").onPreload&&(d(this,wn,!0,"f"),E(this,vn,"f").classList.add(Vn),await E(this,Bn,"f").onPreload(t),d(this,wn,!1,"f"),E(this,vn,"f").classList.remove(Vn))};var Dn,xn;un(".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 Un extends hn{constructor(t={}){super(),Dn.set(this,void 0),xn.set(this,void 0),d(this,Dn,t,"f")}onAdd(){return d(this,xn,document.createElement("div"),"f"),E(this,xn,"f").className="weatherlayers-attribution-control",this.setConfig(E(this,Dn,"f")),E(this,xn,"f")}onRemove(){E(this,xn,"f")&&E(this,xn,"f").parentNode&&(E(this,xn,"f").parentNode.removeChild(E(this,xn,"f")),d(this,xn,void 0,"f"))}getConfig(){return{...E(this,Dn,"f")}}setConfig(t){if(!E(this,xn,"f"))return;if(!t.attribution)return;if(E(this,xn,"f").children.length>0&&E(this,Dn,"f").attribution===t.attribution)return;d(this,Dn,t,"f");const e=E(this,Dn,"f").attribution;E(this,xn,"f").innerHTML=`<div>${e}</div>`}}Dn=new WeakMap,xn=new WeakMap;var Ln,Jn;un(".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.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