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

38
pwa/node_modules/es-abstract/2019/StringCreate.js generated vendored Normal file
View file

@ -0,0 +1,38 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var $Object = require('es-object-atoms');
var $StringPrototype = GetIntrinsic('%String.prototype%');
var $SyntaxError = require('es-errors/syntax');
var $TypeError = require('es-errors/type');
var setProto = require('set-proto');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
// https://262.ecma-international.org/6.0/#sec-stringcreate
module.exports = function StringCreate(value, prototype) {
if (typeof value !== 'string') {
throw new $TypeError('Assertion failed: `S` must be a String');
}
var S = $Object(value);
if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
throw new $SyntaxError('StringCreate: a `proto` argument that is not `String.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
}
}
var length = value.length;
DefinePropertyOrThrow(S, 'length', {
'[[Configurable]]': false,
'[[Enumerable]]': false,
'[[Value]]': length,
'[[Writable]]': false
});
return S;
};