Add progressive web app companion for cross-platform access

Vite + TypeScript PWA that mirrors the Android app's core features:
- Pre-processed shelter data (build-time UTM33N→WGS84 conversion)
- Leaflet map with shelter markers, user location, and offline tiles
- Canvas compass arrow (ported from DirectionArrowView.kt)
- IndexedDB shelter cache with 7-day staleness check
- Service worker with CacheFirst tiles and precached app shell
- i18n for en, nb, nn (ported from Android strings.xml)
- iOS/Android compass handling with low-pass filter
- Respects user map interaction (no auto-snap on pan/zoom)
- Build revision cache-breaker for reliable SW updates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2026-03-08 17:41:38 +01:00
commit e8428de775
12051 changed files with 1799735 additions and 0 deletions

View file

@ -0,0 +1 @@
module.exports={A:{A:{"2":"K D E F A B 1C"},B:{"2":"C L M G N O P","132":"0 1 2 3 4 5 6 7 8 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB I"},C:{"2":"9 2C WC J cB K D E F A B C L M G N O P dB AB BB CB DB EB FB GB HB IB eB fB gB hB 6C 7C","132":"0 1 2 3 4 5 6 7 8 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B XC 7B YC 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC Q H R ZC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB I aC PC bC 3C 4C 5C"},D:{"2":"J cB K D E F A B C L M G N O","132":"0 1 2 3 4 5 6 7 8 9 P dB AB BB CB DB EB FB GB HB IB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B XC 7B YC 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB I aC PC bC"},E:{"2":"J cB 8C cC 9C","132":"K D E F A B C L M G AD BD CD dC QC RC DD ED FD eC fC SC GD TC gC hC iC jC kC HD UC lC mC nC oC pC ID VC qC rC sC tC JD uC vC wC xC yC KD"},F:{"2":"F B C LD MD ND OD QC zC PD RC","132":"0 1 2 3 4 5 6 7 8 9 G N O P dB AB BB CB DB EB FB GB HB IB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC Q H R ZC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"cC QD 0C RD SD TD","132":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD eC fC SC kD TC gC hC iC jC kC lD UC lC mC nC oC pC mD VC qC rC sC tC nD uC vC wC xC yC"},H:{"2":"oD"},I:{"2":"WC J pD qD rD sD 0C","132":"I tD uD"},J:{"2":"D A"},K:{"2":"A B C QC zC RC","132":"H"},L:{"132":"I"},M:{"132":"PC"},N:{"132":"A B"},O:{"132":"SC"},P:{"2":"J vD","132":"9 AB BB CB DB EB FB GB HB IB wD xD yD zD dC 0D 1D 2D 3D 4D TC UC VC 5D"},Q:{"132":"6D"},R:{"132":"7D"},S:{"132":"8D 9D"}},B:2,C:"Media Fragments",D:true};