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
39
pwa/node_modules/leaflet/src/layer/vector/SVG.Util.js
generated
vendored
Normal file
39
pwa/node_modules/leaflet/src/layer/vector/SVG.Util.js
generated
vendored
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
import Browser from '../../core/Browser';
|
||||
|
||||
// @namespace SVG; @section
|
||||
// There are several static functions which can be called without instantiating L.SVG:
|
||||
|
||||
// @function create(name: String): SVGElement
|
||||
// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),
|
||||
// corresponding to the class name passed. For example, using 'line' will return
|
||||
// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).
|
||||
export function svgCreate(name) {
|
||||
return document.createElementNS('http://www.w3.org/2000/svg', name);
|
||||
}
|
||||
|
||||
// @function pointsToPath(rings: Point[], closed: Boolean): String
|
||||
// Generates a SVG path string for multiple rings, with each ring turning
|
||||
// into "M..L..L.." instructions
|
||||
export function pointsToPath(rings, closed) {
|
||||
var str = '',
|
||||
i, j, len, len2, points, p;
|
||||
|
||||
for (i = 0, len = rings.length; i < len; i++) {
|
||||
points = rings[i];
|
||||
|
||||
for (j = 0, len2 = points.length; j < len2; j++) {
|
||||
p = points[j];
|
||||
str += (j ? 'L' : 'M') + p.x + ' ' + p.y;
|
||||
}
|
||||
|
||||
// closes the ring for polygons; "x" is VML syntax
|
||||
str += closed ? (Browser.svg ? 'z' : 'x') : '';
|
||||
}
|
||||
|
||||
// SVG complains about empty path strings
|
||||
return str || 'M0 0';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue