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,47 @@
import type { AnySchema } from "../../types";
import type { SchemaObjCxt } from "..";
import { Code, Name } from "../codegen";
import { Type } from "../util";
import type { JSONType } from "../rules";
export interface SubschemaContext {
schema: AnySchema;
schemaPath: Code;
errSchemaPath: string;
topSchemaRef?: Code;
errorPath?: Code;
dataLevel?: number;
dataTypes?: JSONType[];
data?: Name;
parentData?: Name;
parentDataProperty?: Code | number;
dataNames?: Name[];
dataPathArr?: (Code | number)[];
propertyName?: Name;
jtdDiscriminator?: string;
jtdMetadata?: boolean;
compositeRule?: true;
createErrors?: boolean;
allErrors?: boolean;
}
export type SubschemaArgs = Partial<{
keyword: string;
schemaProp: string | number;
schema: AnySchema;
schemaPath: Code;
errSchemaPath: string;
topSchemaRef: Code;
data: Name | Code;
dataProp: Code | string | number;
dataTypes: JSONType[];
definedProperties: Set<string>;
propertyName: Name;
dataPropType: Type;
jtdDiscriminator: string;
jtdMetadata: boolean;
compositeRule: true;
createErrors: boolean;
allErrors: boolean;
}>;
export declare function getSubschema(it: SchemaObjCxt, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }: SubschemaArgs): SubschemaContext;
export declare function extendSubschemaData(subschema: SubschemaContext, it: SchemaObjCxt, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }: SubschemaArgs): void;
export declare function extendSubschemaMode(subschema: SubschemaContext, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }: SubschemaArgs): void;