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:
parent
46365b713b
commit
e8428de775
12051 changed files with 1799735 additions and 0 deletions
20
pwa/node_modules/ajv/lib/runtime/ucs2length.ts
generated
vendored
Normal file
20
pwa/node_modules/ajv/lib/runtime/ucs2length.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// https://mathiasbynens.be/notes/javascript-encoding
|
||||
// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
|
||||
export default function ucs2length(str: string): number {
|
||||
const len = str.length
|
||||
let length = 0
|
||||
let pos = 0
|
||||
let value: number
|
||||
while (pos < len) {
|
||||
length++
|
||||
value = str.charCodeAt(pos++)
|
||||
if (value >= 0xd800 && value <= 0xdbff && pos < len) {
|
||||
// high surrogate, and there is a next character
|
||||
value = str.charCodeAt(pos)
|
||||
if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate
|
||||
}
|
||||
}
|
||||
return length
|
||||
}
|
||||
|
||||
ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default'
|
||||
Loading…
Add table
Add a link
Reference in a new issue