Documentation / @expofp/schema / LocalStorageConfig
Type Alias: LocalStorageConfig
type LocalStorageConfig = object;The subset persisted per-user in localStorage.
viewerMode / previewMode / uiScale are schema-typed here (their keys are efp-viewerMode / efp-previewMode / efp-uiScale) but deliberately NOT merged into the effective config by loadConfig: the floor plan reads them from storage lazily, which is what keeps the legacy one-shot URL seeds (?viewermode= / ?previewMode= / ?uiscale=, which write these keys) effective within the same load — a frozen config value could not be revoked by a same-load disable seed.
Type Declaration
debugMode?
optional debugMode?: boolean;Debug mode: verbose logs, the in-map debug overlay, dev-leniency in error paths.
debugPattern?
optional debugPattern?: string;enableExperimentalMaplibre?
optional enableExperimentalMaplibre?: boolean;Enable experimental MapLibre GL JS support.
enableExperimentalOutdoorMarkers?
optional enableExperimentalOutdoorMarkers?: boolean;Enable experimental outdoor PoI markers: booths on an Outdoor* layer leave the renderer scene and draw as fixed-size native MapLibre markers with clustering.
Unset or false disables the feature outright — Outdoor layers then render like any other layer, exactly as they did before it existed. Unlike enableExperimentalMaplibre this is NOT tri-state: no drawing field opts a plan in, so there is nothing for undefined to defer to.
previewMode?
optional previewMode?: boolean;showDebugButton?
optional showDebugButton?: boolean;uiScale?
optional uiScale?: number;Per-browser UI-scale preference (0.8–1.4), seeded by the legacy ?uiscale= param. Not a ConfigSchema field: nothing consumes a config-level uiScale — the floor plan UI reads the storage key directly. Tolerant (catch): a hand-edited or out-of-range stored value reads as absent instead of failing the whole storage layer at boot.
validateSchema?
optional validateSchema?: boolean;viewerMode?
optional viewerMode?: boolean;