Skip to content

Documentation / @expofp/schema / DataJs

Type Alias: DataJs ​

ts
type DataJs = object;

The evaluated data.js payload. Like fp.svg.js, the file is a classic window-assigning browser script (window.__data = …) that resolve (@expofp/resolve) evaluates to its globals; the expo data document rides on __data.

Type Declaration ​

Index Signature ​

ts
[key: string]: unknown

__data? ​

ts
optional __data?: object;

Index Signature ​

ts
[key: string]: unknown

__data.allow3dView? ​

ts
optional allow3dView?: boolean;

__data.allowConsent? ​

ts
optional allowConsent?: boolean;

__data.alwaysShowSidebar? ​

ts
optional alwaysShowSidebar?: boolean;

__data.autoTrackingGps? ​

ts
optional autoTrackingGps?: boolean;

__data.booths? ​

ts
optional booths?: (
  | {
[key: string]: unknown;
  availColor?: string;
  buyUrl?: string;
  exhibitors?: number[];
  externalId?: string;
  holdColor?: string;
  id: number;
  labelColor?: string;
  meta?: Record<string, string>;
  name: string;
  poiTypeId?: number;
  price?: string;
  reserveUrl?: string;
  size?: string;
  soldColor?: string;
  status?: "onhold" | "reserved";
  title?: string;
  type?: string;
}
  | {
[key: string]: unknown;
  color?: string;
  description?: string;
  exhibitors?: number[];
  externalId?: string;
  id: number;
  meta?: Record<string, string>;
  name: string;
  poiTypeId?: number;
  special: true;
  title?: string;
})[];

__data.boothTerm? ​

ts
optional boothTerm?: string;

__data.busRoutes? ​

ts
optional busRoutes?: boolean;

Enable live bus/transport routing on the floor plan.

Disabled by default: most plans have no transit routes, and probing for them issues an extra HTTP request on every load. Set to true only for plans that actually provide bus routes.

__data.camera? ​

ts
optional camera?: object = CameraSchema;

The initial camera, applied once at boot (an empty object means "don't move"). The URL form is ?camera[x]=…; the runtime counterpart is FloorPlan.setCamera / the setCamera intent.

__data.camera.bearing? ​

ts
optional bearing?: number;

Map rotation in degrees (0–360).

__data.camera.floor? ​

ts
optional floor?: string;

Floor name to activate.

__data.camera.lat? ​

ts
optional lat?: number;

Center, GPS latitude (paired with lng).

__data.camera.lng? ​

ts
optional lng?: number;

Center, GPS longitude (paired with lat).

__data.camera.pitchDegrees? ​

ts
optional pitchDegrees?: number;

Camera tilt back from top down, in degrees.

__data.camera.pitchTime? ​

ts
optional pitchTime?: number;

Tilt animation duration in milliseconds.

__data.camera.x? ​

ts
optional x?: number;

Center, floor-plan projected coordinates (paired with y).

__data.camera.y? ​

ts
optional y?: number;

Center, floor-plan projected coordinates (paired with x).

__data.camera.zoomTime? ​

ts
optional zoomTime?: number;

Camera movement animation duration in milliseconds.

__data.categories? ​

ts
optional categories?: object[];
Index Signature ​
ts
[key: string]: unknown
ts
optional consent?: "ask" | "granted" | "denied" = ConsentSchema;

__data.customCss? ​

ts
optional customCss?: string;

__data.customCssFonts? ​

ts
optional customCssFonts?: object[];
Index Signature ​
ts
[key: string]: unknown

__data.customKioskQrCodeUrl? ​

ts
optional customKioskQrCodeUrl?: string;

__data.customSetKiosk? ​

ts
optional customSetKiosk?: string;

Custom setkiosk phrase.

__data.debugMode? ​

ts
optional debugMode?: boolean;

Debug mode: verbose logs, the in-map debug overlay, dev-leniency in error paths.

__data.debugPattern? ​

ts
optional debugPattern?: string;

__data.dimensionless? ​

ts
optional dimensionless?: boolean;

__data.disableBookmarked? ​

ts
optional disableBookmarked?: boolean;

Disable adding entities to bookmarks.

__data.disableFeatured? ​

ts
optional disableFeatured?: boolean;

Drop the featured flag from every exhibitor (no featured view).

__data.disableGps? ​

ts
optional disableGps?: boolean;

Start with GPS tracking off.

__data.disableRuntimeAlerts? ​

ts
optional disableRuntimeAlerts?: boolean;

__data.enableExperimentalMaplibre? ​

ts
optional enableExperimentalMaplibre?: boolean;

Enable experimental MapLibre GL JS support.

__data.enableExperimentalOutdoorMarkers? ​

ts
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.

__data.enableIPS? ​

ts
optional enableIPS?: boolean;

__data.enableRotation? ​

ts
optional enableRotation?: boolean;

__data.endDate? ​

ts
optional endDate?: string;

__data.events? ​

ts
optional events?: object[];
Index Signature ​
ts
[key: string]: unknown

__data.exhibitors? ​

ts
optional exhibitors?: object[];
Index Signature ​
ts
[key: string]: unknown

__data.exhibitorTerm? ​

ts
optional exhibitorTerm?: string;

__data.exhibitorTermPlural? ​

ts
optional exhibitorTermPlural?: string;

__data.expo? ​

ts
optional expo?: string;

__data.expoFpAd? ​

ts
optional expoFpAd?: boolean;

__data.filterButtonsConfig? ​

ts
optional filterButtonsConfig?: object = FilterButtonsConfigSchema;
Index Signature ​
ts
[key: string]: unknown

__data.filterButtonsConfig.isExplicit? ​

ts
optional isExplicit?: boolean;

__data.filterButtonsConfig.searchButtons? ​

ts
optional searchButtons?: object[];
Index Signature ​
ts
[key: string]: unknown

__data.filterButtonsConfig.sortType? ​

ts
optional sortType?: "custom" | "alphabetical";

__data.filters? ​

ts
optional filters?: object = FiltersSchema;

Search filters applied once at boot by the URL filter manager (an empty object applies nothing). Canonical URL form ?filters[categories][0]=food; the legacy ?categories=/?poiType=/?poiTypes=/?exhibitors=true keys keep working — and remain the form the floor plan writes back to the URL as the visitor changes filters.

__data.filters.categories? ​

ts
optional categories?: string[];

Category names to pre-select; opens the category filter panel.

__data.filters.exhibitors? ​

ts
optional exhibitors?: boolean;

true opens the exhibitors list at boot.

__data.filters.poiType? ​

ts
optional poiType?: string;

A single POI type to pre-select; also activates its search filter button.

__data.filters.poiTypes? ​

ts
optional poiTypes?: string[];

POI type names to pre-select (no filter-button activation).

__data.flags? ​

ts
optional flags?: object;
Index Signature ​
ts
[key: string]: unknown

__data.flags.busRoutes? ​

ts
optional busRoutes?: boolean;

Enable live bus/transport routing on the floor plan.

Disabled by default: most plans have no transit routes, and probing for them issues an extra HTTP request on every load. Set to true only for plans that actually provide bus routes.

__data.flags.customSetKiosk? ​

ts
optional customSetKiosk?: string;

Custom setkiosk phrase.

__data.flags.enableExperimentalMaplibre? ​

ts
optional enableExperimentalMaplibre?: boolean;

Enable experimental MapLibre GL JS support.

__data.flags.enableExperimentalOutdoorMarkers? ​

ts
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.

__data.flags.hideBoothBadges? ​

ts
optional hideBoothBadges?: boolean;

Hide booth number badges.

__data.fpSvgJsRef? ​

ts
optional fpSvgJsRef?: 
  | {
  $ref: string;
}
  | null;

fp.svg.js ref (the drawing); null derives <legacyDataUrlBase>fp.svg.js.

__data.fpSvgLayerJsRefs? ​

ts
optional fpSvgLayerJsRefs?: Record<string, {
  $ref: string;
}>;

Per-layer fp.svg.<layerName>.js refs (by layer name), resolved on demand.

__data.free? ​

ts
optional free?: boolean;
ts
optional gallery?: string[];

__data.gtag? ​

ts
optional gtag?: string;

__data.heatmap? ​

ts
optional heatmap?: object = HeatmapSchema;

Heatmap mode, engaged once at boot (an empty object — the default — means no heatmap). A non-empty node engages the mode unless enabled is explicitly false, so heatmap: { variant: 'yah' } implies enabled; variant picks the dataset (booths view stats by default, yah for "You are here" QR scans; kiosk: true narrows yah to kiosk positions). Heatmap mode freezes the page URL for the whole session (the legacy contract). The legacy ?heatmap=true&type=yah&subtype=kiosk links keep working as a translation; the access token ?t= stays a separate raw query param, not config.

__data.heatmap.enabled? ​

ts
optional enabled?: boolean;

Engage the heatmap explicitly; false vetoes an otherwise non-empty node.

__data.heatmap.kiosk? ​

ts
optional kiosk?: boolean;

Narrow the yah variant to kiosk positions (ignored for booths).

__data.heatmap.variant? ​

ts
optional variant?: "booths" | "yah";

The dataset shown: booths (the default) — booth/exhibitor view stats; yah — "You are here" QR-code scan counts, with a stripped-down monochrome presentation.

__data.hide3dMapDefault? ​

ts
optional hide3dMapDefault?: boolean;

__data.hideBookmarks? ​

ts
optional hideBookmarks?: boolean;
ts
optional hideBookmarksLink?: boolean;

__data.hideBoothBadges? ​

ts
optional hideBoothBadges?: boolean;

Hide booth number badges.

ts
optional hideCategoriesLink?: boolean;

__data.hideDirections? ​

ts
optional hideDirections?: boolean;
ts
optional hideDownloadPdfLink?: boolean;
ts
optional hideEventHomeLink?: boolean;

__data.hideExhibitorBoothNumber? ​

ts
optional hideExhibitorBoothNumber?: boolean;

__data.hideExhibitors? ​

ts
optional hideExhibitors?: boolean;
ts
optional hideHeaderLogo?: boolean;

Hide the header logo (and the ExpoFP logo).

__data.hideLanguage? ​

ts
optional hideLanguage?: boolean;
ts
optional hideLanguageLink?: boolean;

__data.hideLogoInBooth? ​

ts
optional hideLogoInBooth?: boolean;

Hide exhibitor logos inside booths.

__data.hideModeSwitchButton? ​

ts
optional hideModeSwitchButton?: boolean;
ts
optional hideRegisterToAttendLink?: boolean;

__data.hideShareButton? ​

ts
optional hideShareButton?: boolean;

__data.hideWayInformation? ​

ts
optional hideWayInformation?: boolean;

__data.homeUrl? ​

ts
optional homeUrl?: string;

__data.ignoreQuery? ​

ts
optional ignoreQuery?: boolean;

__data.intents? ​

ts
optional intents?: (
  | {
  args: [string];
  name: "selectBooth";
}
  | {
  args: [string];
  name: "selectExhibitor";
}
  | {
  args: [string];
  name: "changeLanguage";
}
  | {
  args: [string];
  name: "selectCategory";
}
  | {
  args: [string];
  name: "select";
}
  | {
  args: [
     | "exhibitors"
     | "bookmarks"
     | "visited"
     | "sessions"
     | "speakers"
     | "tours"
    | "language"];
  name: "showList";
}
  | {
  args: [string];
  name: "selectTour";
}
  | {
  args: [{
     from?: string;
     fromBookmarks?: boolean;
     items?: ...[];
  }];
  name: "openPlanner";
}
  | {
  args: [];
  name: "startBuildRoute";
}
  | {
  args: [{
     bearing?: number;
     floor?: string;
     lat?: number;
     lng?: number;
     pitchDegrees?: number;
     pitchTime?: number;
     x?: number;
     y?: number;
     zoomTime?: number;
  }];
  name: "setCamera";
}
  | {
  args: [{
     controls?: boolean;
     header?: boolean;
     levels?: boolean;
     overlay?: boolean;
     searchButtons?: boolean;
  }];
  name: "setVisibility";
}
  | {
  args: [string[]];
  name: "selectRoute";
}
  | {
  args: [string[]];
  name: "selectAccessibleRoute";
}
  | {
  args: [string, string[]];
  name: "showPathway";
}
  | {
  args: [{
     angle?: number;
     lat?: number;
     lng?: number;
     x: number;
     y: number;
     z?: string | number;
  }, boolean, number?];
  name: "selectCurrentPosition";
})[];

__data.isRebooking? ​

ts
optional isRebooking?: boolean;

__data.isTrial? ​

ts
optional isTrial?: boolean;

__data.kiosk? ​

ts
optional kiosk?: object = KioskSchema;

The kiosk anchor — where a kiosk device stands and how its camera is framed, applied at boot when the device has no locally-saved kiosk (the on-device SetKiosk flow wins; localStorage['kiosk']='0' disables both). Canonical URL form ?kiosk[x]=…, and ?kiosk=1/0 keeps toggling kiosk mode. The legacy kiosk_x/y/z params are a separate, narrower channel: they carry the anchor POSITION to a phone scanning a kiosk's route QR code, and put that phone in no kiosk mode of its own.

__data.kiosk.heading? ​

ts
optional heading?: number;

Device heading in degrees — rotates the you-are-here marker.

__data.kiosk.iconSizePercent? ​

ts
optional iconSizePercent?: number;

You-are-here icon size, in percent.

__data.kiosk.lat? ​

ts
optional lat?: number;

GPS latitude (with lng, an alternative fix to x/y).

__data.kiosk.lng? ​

ts
optional lng?: number;

GPS longitude.

__data.kiosk.mapBearingDegrees? ​

ts
optional mapBearingDegrees?: number;

Map bearing at the home framing, degrees (map mode).

__data.kiosk.mapCenterLat? ​

ts
optional mapCenterLat?: number;

Home framing center latitude (map mode).

__data.kiosk.mapCenterLng? ​

ts
optional mapCenterLng?: number;

Home framing center longitude (map mode).

__data.kiosk.mapCenterX? ​

ts
optional mapCenterX?: number;

Home framing center x.

__data.kiosk.mapCenterY? ​

ts
optional mapCenterY?: number;

Home framing center y.

__data.kiosk.mapInitialPtScale? ​

ts
optional mapInitialPtScale?: number;

The pt-scale captured when the kiosk was set up (zoom reference).

__data.kiosk.mapPitch? ​

ts
optional mapPitch?: number;

Map pitch at the home framing, degrees.

__data.kiosk.mapPitchDegrees? ​

ts
optional mapPitchDegrees?: number;

Map pitch at the home framing, degrees (map mode).

__data.kiosk.mapPtScale? ​

ts
optional mapPtScale?: number;

The pt-scale of the saved framing.

__data.kiosk.mapRollDegrees? ​

ts
optional mapRollDegrees?: number;

Map roll at the kiosk's home framing, degrees.

__data.kiosk.mapZoom? ​

ts
optional mapZoom?: number;

Map zoom level at the home framing (map mode).

__data.kiosk.uiScale? ​

ts
optional uiScale?: number;

Per-device UI scale preference (the applied range is 0.8–1.4).

__data.kiosk.x? ​

ts
optional x?: number;

Anchor x in plan coordinates.

__data.kiosk.y? ​

ts
optional y?: number;

Anchor y in plan coordinates.

__data.kiosk.z? ​

ts
optional z?: string | number | null;

Floor: the level name (a numeric index is accepted and stringified). Nullable — the on-device SetKiosk flow writes null for a plan with no layers, and that record round-trips through localStorage.

__data.levelTerm? ​

ts
optional levelTerm?: string;

__data.locale? ​

ts
optional locale?: string;
ts
optional logo?: string;

__data.maplibre? ​

ts
optional maplibre?: object = MapLibreConfigSchema;
Index Signature ​
ts
[key: string]: unknown

__data.maplibre.offline? ​

ts
optional offline?: boolean;

The style and everything it references (tiles, sprites, glyphs) are reachable without network — lets the map stay enabled while navigator.onLine is false.

__data.maplibre.style? ​

ts
optional style?: any;

Inline style object (takes precedence over styleUrl). With no style URL to resolve against, every URL inside it must already be full.

__data.maplibre.styleUrl? ​

ts
optional styleUrl?: string;

Full, rooted, or relative URL of a MapLibre style document, fetched by MapLibre GL itself. Its internal resources are resolved by the SDK before MapLibre consumes the loaded style.

__data.mobileLocationProvider? ​

ts
optional mobileLocationProvider?: string | null;

Indoor-positioning provider for the native SDKs, opaque web-side: <provider>.<version>.<base64url credentials>, e.g. indooratlas.1.SGVsbG8gV29ybGQh. null (the default) means none — not '', so the native bridge sees Kotlin null / Swift nil.

__data.monochrome? ​

ts
optional monochrome?: boolean;

Render the plan in grayscale.

__data.noFeatured? ​

ts
optional noFeatured?: boolean;

__data.noOverlay? ​

ts
optional noOverlay?: boolean;

__data.offHistory? ​

ts
optional offHistory?: boolean;

__data.onlyFeaturedExhibitors? ​

ts
optional onlyFeaturedExhibitors?: boolean;

__data.poiTypes? ​

ts
optional poiTypes?: object[];
Index Signature ​
ts
[key: string]: unknown

__data.previewMode? ​

ts
optional previewMode?: boolean;

__data.registerUrl? ​

ts
optional registerUrl?: string;

__data.reserveButtonTerm? ​

ts
optional reserveButtonTerm?: string;

__data.reserveInstructions? ​

ts
optional reserveInstructions?: string;

__data.searchText? ​

ts
optional searchText?: string;

__data.sendLoginLinkUrl? ​

ts
optional sendLoginLinkUrl?: string;

__data.shortLevelName? ​

ts
optional shortLevelName?: boolean;

__data.showCategories? ​

ts
optional showCategories?: boolean;

__data.showCompaniesAndBooths? ​

ts
optional showCompaniesAndBooths?: boolean;

__data.showDebugButton? ​

ts
optional showDebugButton?: boolean;

__data.showLevelLabel? ​

ts
optional showLevelLabel?: boolean;

__data.showOtherSpaces? ​

ts
optional showOtherSpaces?: boolean;

__data.startDate? ​

ts
optional startDate?: string;

__data.subtitle? ​

ts
optional subtitle?: string;

__data.title? ​

ts
optional title?: string;

__data.trackerUrl? ​

ts
optional trackerUrl?: string;

__data.trialExpiresAt? ​

ts
optional trialExpiresAt?: string;

__data.viewerMode? ​

ts
optional viewerMode?: boolean;

__data.viewOptimizationLevel? ​

ts
optional viewOptimizationLevel?: number;

__data.visibility? ​

ts
optional visibility?: object = VisibilitySchema;

Visibility of the map chrome, applied once at boot. An empty object leaves the chrome untouched; a non-empty one REBUILDS the set — every element it omits resets to visible — so a URL that hides one element must list every other element it also wants hidden. The URL form is ?visibility[header]=false; the runtime counterpart is FloorPlan.setVisibility / the setVisibility intent.

__data.visibility.controls? ​

ts
optional controls?: boolean;

The map controls (zoom buttons, …).

__data.visibility.header? ​

ts
optional header?: boolean;

The header bar — logos and the free/demo badge.

__data.visibility.levels? ​

ts
optional levels?: boolean;

The floor selector.

__data.visibility.overlay? ​

ts
optional overlay?: boolean;

The overlay panel — search, lists, entity details.

__data.visibility.searchButtons? ​

ts
optional searchButtons?: boolean;

The search-filter buttons row. Omitted, it follows overlay; an explicit true keeps the buttons while the overlay is hidden — clicking one opens the overlay on demand (?visibility[overlay]=false&visibility[searchButtons]=true).

__data.wfDataJsRef? ​

ts
optional wfDataJsRef?: 
  | {
  $ref: string;
}
  | null;

wf.data.js (wayfinding graph) ref; null without legacy data.