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

5
pwa/node_modules/workbox-core/utils/pluginUtils.d.ts generated vendored Normal file
View file

@ -0,0 +1,5 @@
import { WorkboxPlugin } from '../types.js';
import '../_version.js';
export declare const pluginUtils: {
filter: (plugins: WorkboxPlugin[], callbackName: string) => WorkboxPlugin[];
};

13
pwa/node_modules/workbox-core/utils/pluginUtils.js generated vendored Normal file
View file

@ -0,0 +1,13 @@
/*
Copyright 2018 Google LLC
Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT.
*/
import '../_version.js';
export const pluginUtils = {
filter: (plugins, callbackName) => {
return plugins.filter((plugin) => callbackName in plugin);
},
};

1
pwa/node_modules/workbox-core/utils/pluginUtils.mjs generated vendored Normal file
View file

@ -0,0 +1 @@
export * from './pluginUtils.js';

1
pwa/node_modules/workbox-core/utils/welcome.d.ts generated vendored Normal file
View file

@ -0,0 +1 @@
import '../_version.js';

25
pwa/node_modules/workbox-core/utils/welcome.js generated vendored Normal file
View file

@ -0,0 +1,25 @@
/*
Copyright 2019 Google LLC
Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT.
*/
import { logger } from '../_private/logger.js';
import '../_version.js';
// A WorkboxCore instance must be exported before we can use the logger.
// This is so it can get the current log level.
if (process.env.NODE_ENV !== 'production') {
const padding = ' ';
logger.groupCollapsed('Welcome to Workbox!');
logger.log(`You are currently using a development build. ` +
`By default this will switch to prod builds when not on localhost. ` +
`You can force this with workbox.setConfig({debug: true|false}).`);
logger.log(`📖 Read the guides and documentation\n` +
`${padding}https://developers.google.com/web/tools/workbox/`);
logger.log(`❓ Use the [workbox] tag on Stack Overflow to ask questions\n` +
`${padding}https://stackoverflow.com/questions/ask?tags=workbox`);
logger.log(`🐛 Found a bug? Report it on GitHub\n` +
`${padding}https://github.com/GoogleChrome/workbox/issues/new`);
logger.groupEnd();
}

1
pwa/node_modules/workbox-core/utils/welcome.mjs generated vendored Normal file
View file

@ -0,0 +1 @@
export * from './welcome.js';