@expofp/floorplan
Version:
Interactive floor plan library for expos and events
50 lines • 2.79 kB
TypeScript
import { type Config } from '@expofp/config';
import type UIState from '../../store/UIState';
/**
* Whether this plan has room for the kiosk layout.
*
* Kiosk mode forces the left overlay, which is 450px wide — so it may only run
* where that layout would have been chosen anyway. `UIState.overlayPosition`
* asks this same question and calls this, which is what keeps the two answers
* from drifting apart.
*
* The guard exists because kiosk mode reaches devices that never asked for it.
* A route QR hands its `kiosk_x/y/z` anchor to every scanning phone, and
* `uiState.kioskData` doubles as "this device IS a kiosk" (see `kioskUrlParam`),
* so the phone adopts the whole kiosk boot: a left overlay wider than its screen,
* which collapses the map's framing region to a sliver and leaves any route it
* was opened for zoomed out to nothing.
*
* Measured off the width of the container the plan was handed, not the window —
* that is what `screenSize` holds (`bindRootElement`), and the overlay lives in
* the container. Width alone, as `overlayPosition` reads it: a phone held in
* landscape passes, being as wide as a small desktop window and getting the same
* layout, and every real kiosk panel passes in either orientation.
*/
export declare function screenFitsKiosk(uiState: UIState): boolean;
/**
* Toggle kiosk mode — the single meaning of `kiosk=1` / `kiosk=0` from either
* channel (the `?kiosk=` URL param, the typed search-box command) — and store
* that choice. Exit also resets the per-device UI scale.
*
* Turning it ON is refused where the kiosk layout does not fit
* ({@link screenFitsKiosk}); turning it OFF always works, so the `kiosk=0`
* opt-out can never be locked out by the size of the screen it is typed on.
*/
export declare function applyKioskMode(uiState: UIState, enabled: boolean): void;
/**
* Store-free kiosk check — the mode a load starts in: the `?kiosk=` param wins, then whatever the
* device itself says. Used by the Intercom boot, which runs before the MobX stores exist, so the
* screen rule above is the caller's to add. The direct `?kiosk` read is kiosk-semantic and migrates
* with the kiosk config node (retirement plan §4.7).
*/
export declare function isKioskMode(data: Config): boolean;
/**
* The same check without the `?kiosk=` param: the mode init-ui and ShowKiosk settle on between
* them, from the stored flag and the kiosks left — the enable flag, then a saved-kiosk object (a
* provisioned device is a kiosk on first load, before the flag is set), then the config anchor.
* What the setkiosk panel asks on close, since ShowKiosk remounts right after it and reads no
* param.
*/
export declare function storedKioskMode(data: Config): boolean;
//# sourceMappingURL=kiosk-mode.d.ts.map