Documentation / @expofp/schema / DataJs
Type Alias: DataJs
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
[key: string]: unknown__data?
optional __data?: object;Index Signature
[key: string]: unknown__data.allow3dView?
optional allow3dView?: boolean;__data.allowConsent?
optional allowConsent?: boolean;__data.alwaysShowSidebar?
optional alwaysShowSidebar?: boolean;__data.autoTrackingGps?
optional autoTrackingGps?: boolean;__data.booths?
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?
optional boothTerm?: string;__data.busRoutes?
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?
optional camera?: object = CameraSchema;The initial camera, applied once at boot (an empty object means "don't move"). The runtime counterpart is FloorPlan.setCamera / the setCamera intent; the legacy ?centerxy=/?center=/?z=/?bearing=/?zoomtime= URL params translate into this shape.
__data.camera.bearing?
optional bearing?: number;Map rotation in degrees (0–360).
__data.camera.floor?
optional floor?: string;Floor name to activate.
__data.camera.lat?
optional lat?: number;Center, GPS latitude (paired with lng).
__data.camera.lng?
optional lng?: number;Center, GPS longitude (paired with lat).
__data.camera.x?
optional x?: number;Center, floor-plan projected coordinates (paired with y).
__data.camera.y?
optional y?: number;Center, floor-plan projected coordinates (paired with x).
__data.camera.zoomTime?
optional zoomTime?: number;Camera movement animation duration in milliseconds.
__data.categories?
optional categories?: object[];Index Signature
[key: string]: unknown__data.consent?
optional consent?: "ask" | "granted" | "denied" = ConsentSchema;__data.customCss?
optional customCss?: string;__data.customCssFonts?
optional customCssFonts?: object[];Index Signature
[key: string]: unknown__data.customKioskQrCodeUrl?
optional customKioskQrCodeUrl?: string;__data.customSetKiosk?
optional customSetKiosk?: string;Custom setkiosk phrase.
__data.debugMode?
optional debugMode?: boolean;Debug mode: verbose logs, the in-map debug overlay, dev-leniency in error paths.
__data.debugPattern?
optional debugPattern?: string;__data.dimensionless?
optional dimensionless?: boolean;__data.disableBookmarked?
optional disableBookmarked?: boolean;Disable adding entities to bookmarks.
__data.disableFeatured?
optional disableFeatured?: boolean;Drop the featured flag from every exhibitor (no featured view).
__data.disableGps?
optional disableGps?: boolean;Start with GPS tracking off.
__data.disableRuntimeAlerts?
optional disableRuntimeAlerts?: boolean;__data.enableExperimentalMaplibre?
optional enableExperimentalMaplibre?: boolean;Enable experimental MapLibre GL JS support.
__data.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.
__data.enableIPS?
optional enableIPS?: boolean;__data.enableRotation?
optional enableRotation?: boolean;__data.endDate?
optional endDate?: string;__data.events?
optional events?: object[];Index Signature
[key: string]: unknown__data.exhibitors?
optional exhibitors?: object[];Index Signature
[key: string]: unknown__data.exhibitorTerm?
optional exhibitorTerm?: string;__data.exhibitorTermPlural?
optional exhibitorTermPlural?: string;__data.expo?
optional expo?: string;__data.expoFpAd?
optional expoFpAd?: boolean;__data.filterButtonsConfig?
optional filterButtonsConfig?: object = FilterButtonsConfigSchema;Index Signature
[key: string]: unknown__data.filterButtonsConfig.isExplicit?
optional isExplicit?: boolean;__data.filterButtonsConfig.searchButtons?
optional searchButtons?: object[];Index Signature
[key: string]: unknown__data.filterButtonsConfig.sortType?
optional sortType?: "custom" | "alphabetical";__data.filters?
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?
optional categories?: string[];Category names to pre-select; opens the category filter panel.
__data.filters.exhibitors?
optional exhibitors?: boolean;true opens the exhibitors list at boot.
__data.filters.poiType?
optional poiType?: string;A single POI type to pre-select; also activates its search filter button.
__data.filters.poiTypes?
optional poiTypes?: string[];POI type names to pre-select (no filter-button activation).
__data.flags?
optional flags?: object;Index Signature
[key: string]: unknown__data.flags.busRoutes?
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?
optional customSetKiosk?: string;Custom setkiosk phrase.
__data.flags.enableExperimentalMaplibre?
optional enableExperimentalMaplibre?: boolean;Enable experimental MapLibre GL JS support.
__data.flags.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.
__data.flags.hideBoothBadges?
optional hideBoothBadges?: boolean;Hide booth number badges.
__data.fpSvgJsRef?
optional fpSvgJsRef?:
| {
$ref: string;
}
| null;fp.svg.js ref (the drawing); null derives <legacyDataUrlBase>fp.svg.js.
__data.fpSvgLayerJsRefs?
optional fpSvgLayerJsRefs?: Record<string, {
$ref: string;
}>;Per-layer fp.svg.<layerName>.js refs (by layer name), resolved on demand.
__data.free?
optional free?: boolean;__data.gallery?
optional gallery?: string[];__data.gtag?
optional gtag?: string;__data.heatmap?
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?
optional enabled?: boolean;Engage the heatmap explicitly; false vetoes an otherwise non-empty node.
__data.heatmap.kiosk?
optional kiosk?: boolean;Narrow the yah variant to kiosk positions (ignored for booths).
__data.heatmap.variant?
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?
optional hide3dMapDefault?: boolean;__data.hideBookmarks?
optional hideBookmarks?: boolean;__data.hideBookmarksLink?
optional hideBookmarksLink?: boolean;__data.hideBoothBadges?
optional hideBoothBadges?: boolean;Hide booth number badges.
__data.hideCategoriesLink?
optional hideCategoriesLink?: boolean;__data.hideDirections?
optional hideDirections?: boolean;__data.hideDownloadPdfLink?
optional hideDownloadPdfLink?: boolean;__data.hideEventHomeLink?
optional hideEventHomeLink?: boolean;__data.hideExhibitorBoothNumber?
optional hideExhibitorBoothNumber?: boolean;__data.hideExhibitors?
optional hideExhibitors?: boolean;__data.hideHeaderLogo?
optional hideHeaderLogo?: boolean;Hide the header logo (and the ExpoFP logo).
__data.hideLanguage?
optional hideLanguage?: boolean;__data.hideLanguageLink?
optional hideLanguageLink?: boolean;__data.hideLogoInBooth?
optional hideLogoInBooth?: boolean;Hide exhibitor logos inside booths.
__data.hideModeSwitchButton?
optional hideModeSwitchButton?: boolean;__data.hideRegisterToAttendLink?
optional hideRegisterToAttendLink?: boolean;__data.hideShareButton?
optional hideShareButton?: boolean;__data.hideWayInformation?
optional hideWayInformation?: boolean;__data.homeUrl?
optional homeUrl?: string;__data.ignoreQuery?
optional ignoreQuery?: boolean;__data.intents?
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;
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?
optional isRebooking?: boolean;__data.isTrial?
optional isTrial?: boolean;__data.kiosk?
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]=…; the legacy kiosk_* params stay the per-navigation translation and ?kiosk=1/0 keeps toggling kiosk mode.
__data.kiosk.heading?
optional heading?: number;Device heading in degrees — rotates the you-are-here marker.
__data.kiosk.iconSizePercent?
optional iconSizePercent?: number;You-are-here icon size, in percent.
__data.kiosk.lat?
optional lat?: number;GPS latitude (with lng, an alternative fix to x/y).
__data.kiosk.lng?
optional lng?: number;GPS longitude.
__data.kiosk.mapBearingDegrees?
optional mapBearingDegrees?: number;Map bearing at the home framing, degrees (map mode).
__data.kiosk.mapCenterLat?
optional mapCenterLat?: number;Home framing center latitude (map mode).
__data.kiosk.mapCenterLng?
optional mapCenterLng?: number;Home framing center longitude (map mode).
__data.kiosk.mapCenterX?
optional mapCenterX?: number;Home framing center x.
__data.kiosk.mapCenterY?
optional mapCenterY?: number;Home framing center y.
__data.kiosk.mapInitialPtScale?
optional mapInitialPtScale?: number;The pt-scale captured when the kiosk was set up (zoom reference).
__data.kiosk.mapPitch?
optional mapPitch?: number;Map pitch at the home framing, degrees.
__data.kiosk.mapPitchDegrees?
optional mapPitchDegrees?: number;Map pitch at the home framing, degrees (map mode).
__data.kiosk.mapPtScale?
optional mapPtScale?: number;The pt-scale of the saved framing.
__data.kiosk.mapRollDegrees?
optional mapRollDegrees?: number;Map roll at the kiosk's home framing, degrees.
__data.kiosk.mapZoom?
optional mapZoom?: number;Map zoom level at the home framing (map mode).
__data.kiosk.uiScale?
optional uiScale?: number;Per-device UI scale preference (the applied range is 0.8–1.4).
__data.kiosk.x?
optional x?: number;Anchor x in plan coordinates.
__data.kiosk.y?
optional y?: number;Anchor y in plan coordinates.
__data.kiosk.z?
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?
optional levelTerm?: string;__data.locale?
optional locale?: string;__data.logo?
optional logo?: string;__data.maplibre?
optional maplibre?: object = MapLibreConfigSchema;Index Signature
[key: string]: unknown__data.maplibre.offline?
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?
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?
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.monochrome?
optional monochrome?: boolean;Render the plan in grayscale.
__data.noFeatured?
optional noFeatured?: boolean;__data.noOverlay?
optional noOverlay?: boolean;__data.offHistory?
optional offHistory?: boolean;__data.onlyFeaturedExhibitors?
optional onlyFeaturedExhibitors?: boolean;__data.poiTypes?
optional poiTypes?: object[];Index Signature
[key: string]: unknown__data.previewMode?
optional previewMode?: boolean;__data.registerUrl?
optional registerUrl?: string;__data.reserveButtonTerm?
optional reserveButtonTerm?: string;__data.reserveInstructions?
optional reserveInstructions?: string;__data.searchText?
optional searchText?: string;__data.sendLoginLinkUrl?
optional sendLoginLinkUrl?: string;__data.shortLevelName?
optional shortLevelName?: boolean;__data.showCategories?
optional showCategories?: boolean;__data.showCompaniesAndBooths?
optional showCompaniesAndBooths?: boolean;__data.showDebugButton?
optional showDebugButton?: boolean;__data.showLevelLabel?
optional showLevelLabel?: boolean;__data.showOtherSpaces?
optional showOtherSpaces?: boolean;__data.startDate?
optional startDate?: string;__data.subtitle?
optional subtitle?: string;__data.title?
optional title?: string;__data.trackerUrl?
optional trackerUrl?: string;__data.trialExpiresAt?
optional trialExpiresAt?: string;__data.viewerMode?
optional viewerMode?: boolean;__data.viewOptimizationLevel?
optional viewOptimizationLevel?: number;__data.visibility?
optional visibility?: object = VisibilitySchema;Visibility of the map chrome, applied once at boot (an empty object leaves the chrome untouched; a non-empty one resets every omitted element to visible — the legacy ?hide= list semantics). The runtime counterpart is FloorPlan.setVisibility / the setVisibility intent; the legacy ?hide=a,b deep link keeps its store-level translation.
__data.visibility.controls?
optional controls?: boolean;The map controls (zoom buttons, …).
__data.visibility.header?
optional header?: boolean;The header bar — logos and the free/demo badge.
__data.visibility.levels?
optional levels?: boolean;The floor selector.
__data.visibility.overlay?
optional overlay?: boolean;The overlay panel — search, lists, entity details.
__data.visibility.searchButtons?
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?
optional wfDataJsRef?:
| {
$ref: string;
}
| null;wf.data.js (wayfinding graph) ref; null without legacy data.