Switch to vector maps (MapLibre GL JS + PMTiles) and add RainViewer radar
Replace Leaflet/raster tiles with MapLibre GL JS: an online OpenFreeMap style and an offline style built from a local PMTiles archive via pmtiles.js and protomaps-themes-base (no glyphs/labels offline by design, see docs/architecture.adoc). Frontend libraries are vendored locally rather than loaded from a CDN so the app keeps working with no internet access. Also add an animated RainViewer precipitation radar overlay (toggle, play/pause, scrub slider), matching the default time window of the weather-radar-card Home Assistant integration.
This commit is contained in:
1 parent
7329497e95
commit
5afb130c45
19 files changed
+1378
-14
No files matched your search
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
"use strict";var pmtiles=(()=>{var k=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var Qe=Object.prototype.hasOwnProperty;var De=Math.pow;var l=(r,e)=>k(r,"name",{value:e,configurable:!0});var Xe=(r,e)=>{for(var t in e)k(r,t,{get:e[t],enumerable:!0})},_e=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ye(e))!Qe.call(r,i)&&i!==t&&k(r,i,{get:()=>e[i],enumerable:!(n=Je(e,i))||n.enumerable});return r};var et=r=>_e(k({},"__esModule",{value:!0}),r);var d=(r,e,t)=>new Promise((n,i)=>{var a=f=>{try{s(t.next(f))}catch(h){i(h)}},o=f=>{try{s(t.throw(f))}catch(h){i(h)}},s=f=>f.done?n(f.value):Promise.resolve(f.value).then(a,o);s((t=t.apply(r,e)).next())});var Tt={};Xe(Tt,{Compression:()=>Ie,EtagMismatch:()=>B,FetchSource:()=>V,FileSource:()=>oe,PMTiles:()=>S,Protocol:()=>ne,ResolvedValueCache:()=>se,SharedPromiseCache:()=>G,TileType:()=>ae,bytesToHeader:()=>$e,findTile:()=>Ze,getUint64:()=>b,leafletRasterLayer:()=>wt,readVarint:()=>R,tileIdToZxy:()=>zt,tileTypeExt:()=>Oe,zxyToTileId:()=>He});var w=Uint8Array,U=Uint16Array,tt=Int32Array,Me=new w([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ee=new w([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rt=new w([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ue=l(function(r,e){for(var t=new U(31),n=0;n<31;++n)t[n]=e+=1<<r[n-1];for(var i=new tt(t[30]),n=1;n<30;++n)for(var a=t[n];a<t[n+1];++a)i[a]=a-t[n]<<5|n;return{b:t,r:i}},"freb"),Le=Ue(Me,2),Se=Le.b,nt=Le.r;Se[28]=258,nt[258]=28;var Pe=Ue(Ee,0),it=Pe.b,Mt=Pe.r,te=new U(32768);for(g=0;g<32768;++g)C=(g&43690)>>1|(g&21845)<<1,C=(C&52428)>>2|(C&13107)<<2,C=(C&61680)>>4|(C&3855)<<4,te[g]=((C&65280)>>8|(C&255)<<8)>>1;var C,g,O=l(function(r,e,t){for(var n=r.length,i=0,a=new U(e);i<n;++i)r[i]&&++a[r[i]-1];var o=new U(e);for(i=1;i<e;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(t){s=new U(1<<e);var f=15-e;for(i=0;i<n;++i)if(r[i])for(var h=i<<4|r[i],c=e-r[i],u=o[r[i]-1]++<<c,v=u|(1<<c)-1;u<=v;++u)s[te[u]>>f]=h}else for(s=new U(n),i=0;i<n;++i)r[i]&&(s[i]=te[o[r[i]-1]++]>>15-r[i]);return s},"hMap"),Z=new w(288);for(g=0;g<144;++g)Z[g]=8;var g;for(g=144;g<256;++g)Z[g]=9;var g;for(g=256;g<280;++g)Z[g]=7;var g;for(g=280;g<288;++g)Z[g]=8;var g,Re=new w(32);for(g=0;g<32;++g)Re[g]=5;var g;var at=O(Z,9,1);var ot=O(Re,5,1),_=l(function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},"max"),A=l(function(r,e,t){var n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},"bits"),ee=l(function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},"bits16"),st=l(function(r){return(r+7)/8|0},"shft"),ut=l(function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new w(r.subarray(e,t))},"slc");var ft=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],y=l(function(r,e,t){var n=new Error(e||ft[r]);if(n.code=r,Error.captureStackTrace&&Error.captureStackTrace(n,y),!t)throw n;return n},"err"),re=l(function(r,e,t,n){var i=r.length,a=n?n.length:0;if(!i||e.f&&!e.l)return t||new w(0);var o=!t,s=o||e.i!=2,f=e.i;o&&(t=new w(i*3));var h=l(function(ze){var Ce=t.length;if(ze>Ce){var Te=new w(Math.max(Ce*2,ze));Te.set(t),t=Te}},"cbuf"),c=e.f||0,u=e.p||0,v=e.b||0,p=e.l,m=e.d,D=e.m,F=e.n,K=i*8;do{if(!p){c=A(r,u,1);var q=A(r,u+1,3);if(u+=3,q)if(q==1)p=at,m=ot,D=9,F=5;else if(q==2){var N=A(r,u,31)+257,pe=A(r,u+10,15)+4,me=N+A(r,u+5,31)+1;u+=14;for(var H=new w(me),J=new w(19),x=0;x<pe;++x)J[rt[x]]=A(r,u+x*3,7);u+=pe*3;for(var de=_(J),Ke=(1<<de)-1,qe=O(J,de,1),x=0;x<me;){var ye=qe[A(r,u,Ke)];u+=ye&15;var z=ye>>4;if(z<16)H[x++]=z;else{var M=0,$=0;for(z==16?($=3+A(r,u,3),u+=2,M=H[x-1]):z==17?($=3+A(r,u,7),u+=3):z==18&&($=11+A(r,u,127),u+=7);$--;)H[x++]=M}}var we=H.subarray(0,N),T=H.subarray(N);D=_(we),F=_(T),p=O(we,D,1),m=O(T,F,1)}else y(1);else{var z=st(u)+4,j=r[z-4]|r[z-3]<<8,W=z+j;if(W>i){f&&y(0);break}s&&h(v+j),t.set(r.subarray(z,W),v),e.b=v+=j,e.p=u=W*8,e.f=c;continue}if(u>K){f&&y(0);break}}s&&h(v+131072);for(var je=(1<<D)-1,We=(1<<F)-1,Y=u;;Y=u){var M=p[ee(r,u)&je],E=M>>4;if(u+=M&15,u>K){f&&y(0);break}if(M||y(2),E<256)t[v++]=E;else if(E==256){Y=u,p=null;break}else{var xe=E-254;if(E>264){var x=E-257,I=Me[x];xe=A(r,u,(1<<I)-1)+Se[x],u+=I}var Q=m[ee(r,u)&We],X=Q>>4;Q||y(3),u+=Q&15;var T=it[X];if(X>3){var I=Ee[X];T+=ee(r,u)&(1<<I)-1,u+=I}if(u>K){f&&y(0);break}s&&h(v+131072);var be=v+xe;if(v<T){var Ae=a-T,Ne=Math.min(T,be);for(Ae+v<0&&y(3);v<Ne;++v)t[v]=n[Ae+v]}for(;v<be;++v)t[v]=t[v-T]}}e.l=p,e.p=Y,e.b=v,e.f=c,p&&(c=1,e.m=D,e.d=m,e.n=F)}while(!c);return v!=t.length&&o?ut(t,0,v):t.subarray(0,v)},"inflt");var lt=new w(0);var ht=l(function(r){(r[0]!=31||r[1]!=139||r[2]!=8)&&y(6,"invalid gzip data");var e=r[3],t=10;e&4&&(t+=(r[10]|r[11]<<8)+2);for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!r[t++]);return t+(e&2)},"gzs"),ct=l(function(rLine truncated
|
||||
//# sourceMappingURL=pmtiles.js.map
|
||||
Reference in new issue
Block a user