Documentation / @expofp/schema / Config
Interface: Config
Extends
output<typeofConfigSchema>
Properties
allow3dView
allow3dView: boolean;Inherited from
z.infer.allow3dViewalwaysShowSidebar
alwaysShowSidebar: boolean;Inherited from
z.infer.alwaysShowSidebarautoTrackingGps
autoTrackingGps: boolean;Inherited from
z.infer.autoTrackingGpsbooths
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;
})[];Inherited from
z.infer.boothsboothTerm
boothTerm: string;Inherited from
z.infer.boothTermbusRoutes?
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.
Inherited from
z.infer.busRoutescamera
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.
bearing?
optional bearing?: number;Map rotation in degrees (0–360).
floor?
optional floor?: string;Floor name to activate.
lat?
optional lat?: number;Center, GPS latitude (paired with lng).
lng?
optional lng?: number;Center, GPS longitude (paired with lat).
x?
optional x?: number;Center, floor-plan projected coordinates (paired with y).
y?
optional y?: number;Center, floor-plan projected coordinates (paired with x).
zoomTime?
optional zoomTime?: number;Camera movement animation duration in milliseconds.
Inherited from
z.infer.cameracategories
categories: object[];Index Signature
[key: string]: unknownid
id: number;name
name: string;sponsorship?
optional sponsorship?: boolean;Inherited from
z.infer.categoriesconsent
consent: "ask" | "granted" | "denied" = ConsentSchema;Inherited from
z.infer.consentcustomCss
customCss: string;Inherited from
z.infer.customCsscustomCssFonts
customCssFonts: object[];Index Signature
[key: string]: unknownstyle?
optional style?: string;url?
optional url?: string;weight?
optional weight?: string | number;Inherited from
z.infer.customCssFontscustomKioskQrCodeUrl
customKioskQrCodeUrl: string;Inherited from
z.infer.customKioskQrCodeUrlcustomSetKiosk?
optional customSetKiosk?: string;Custom setkiosk phrase.
Inherited from
z.infer.customSetKioskdebugMode
debugMode: boolean;Debug mode: verbose logs, the in-map debug overlay, dev-leniency in error paths.
Inherited from
z.infer.debugModedebugPattern
debugPattern: string;Inherited from
z.infer.debugPatterndimensionless
dimensionless: boolean;Inherited from
z.infer.dimensionlessdisableBookmarked
disableBookmarked: boolean;Disable adding entities to bookmarks.
Inherited from
z.infer.disableBookmarkeddisableFeatured
disableFeatured: boolean;Drop the featured flag from every exhibitor (no featured view).
Inherited from
z.infer.disableFeatureddisableGps
disableGps: boolean;Start with GPS tracking off.
Inherited from
z.infer.disableGpsdisableRuntimeAlerts
disableRuntimeAlerts: boolean;Inherited from
z.infer.disableRuntimeAlertsenableExperimentalMaplibre?
optional enableExperimentalMaplibre?: boolean;Enable experimental MapLibre GL JS support.
Inherited from
z.infer.enableExperimentalMaplibreenableExperimentalOutdoorMarkers?
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.
Inherited from
z.infer.enableExperimentalOutdoorMarkersenableIPS
enableIPS: boolean;Inherited from
z.infer.enableIPSenableRotation
enableRotation: boolean;Inherited from
z.infer.enableRotationendDate
endDate: string;Inherited from
z.infer.endDateevents
events: object[];Index Signature
[key: string]: unknownboothId?
optional boothId?: number;description?
optional description?: string;endDate?
optional endDate?: string;exhibitorId?
optional exhibitorId?: number;externalId?
optional externalId?: string;id
id: number;link?
optional link?: string;logoFile?
optional logoFile?: string;name
name: string;speakers?
optional speakers?: object[];Index Signature
[key: string]: unknownstartDate?
optional startDate?: string;tracks?
optional tracks?: unknown[];Inherited from
z.infer.eventsexhibitors
exhibitors: object[];Index Signature
[key: string]: unknownaddress?
optional address?: string;address2?
optional address2?: string;advertise?
optional advertise?: boolean;categories?
optional categories?: number[];city?
optional city?: string;country?
optional country?: string;description?
optional description?: string;email?
optional email?: string;externalId?
optional externalId?: string;facebook?
optional facebook?: string;featured?
optional featured?: boolean;gallery?
optional gallery?: string[];googlePlus?
optional googlePlus?: string;id
id: number;instagram?
optional instagram?: string;leadingImageUrl?
optional leadingImageUrl?: string;linkedin?
optional linkedin?: string;logo?
optional logo?:
| string
| {
smallUrl?: string;
tinyUrl?: string;
url: string;
} = ExhibitorLogoSchema;logoInBooth?
optional logoInBooth?: boolean;Paint the logo inside the exhibitor's booth shape on the drawing.
marketMaterials?
optional marketMaterials?: object[];Index Signature
[key: string]: unknownname
name: string;order?
optional order?: number;phone1?
optional phone1?: string;privateEmail?
optional privateEmail?: string;rebookingNote?
optional rebookingNote?: string;rebookingState?
optional rebookingState?: number;state?
optional state?: string;twitter?
optional twitter?: string;videoUrl?
optional videoUrl?: string;website?
optional website?: string;xing?
optional xing?: string;youtube?
optional youtube?: string;zip?
optional zip?: string;Inherited from
z.infer.exhibitorsexhibitorTerm
exhibitorTerm: string;Inherited from
z.infer.exhibitorTermexhibitorTermPlural
exhibitorTermPlural: string;Inherited from
z.infer.exhibitorTermPluralexpo
expo: string;Inherited from
z.infer.expoexpoFpAd
expoFpAd: boolean;Inherited from
z.infer.expoFpAdfilterButtonsConfig
filterButtonsConfig: object = FilterButtonsConfigSchema;Index Signature
[key: string]: unknownisExplicit?
optional isExplicit?: boolean;searchButtons?
optional searchButtons?: object[];Index Signature
[key: string]: unknownsortType?
optional sortType?: "custom" | "alphabetical";Inherited from
z.infer.filterButtonsConfigfilters
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.
categories?
optional categories?: string[];Category names to pre-select; opens the category filter panel.
exhibitors?
optional exhibitors?: boolean;true opens the exhibitors list at boot.
poiType?
optional poiType?: string;A single POI type to pre-select; also activates its search filter button.
poiTypes?
optional poiTypes?: string[];POI type names to pre-select (no filter-button activation).
Inherited from
z.infer.filtersfpSvgJsRef
fpSvgJsRef:
| {
$ref: string;
}
| null;fp.svg.js ref (the drawing); null derives <legacyDataUrlBase>fp.svg.js.
Inherited from
z.infer.fpSvgJsReffpSvgLayerJsRefs
fpSvgLayerJsRefs: Record<string, {
$ref: string;
}>;Per-layer fp.svg.<layerName>.js refs (by layer name), resolved on demand.
Inherited from
z.infer.fpSvgLayerJsRefsfree
free: boolean;Inherited from
z.infer.freegallery
gallery: string[];Inherited from
z.infer.gallerygtag
gtag: string;Inherited from
z.infer.gtagheatmap
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.
enabled?
optional enabled?: boolean;Engage the heatmap explicitly; false vetoes an otherwise non-empty node.
kiosk?
optional kiosk?: boolean;Narrow the yah variant to kiosk positions (ignored for booths).
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.
Inherited from
z.infer.heatmaphide3dMapDefault
hide3dMapDefault: boolean;Inherited from
z.infer.hide3dMapDefaulthideBookmarks
hideBookmarks: boolean;Inherited from
z.infer.hideBookmarkshideBookmarksLink
hideBookmarksLink: boolean;Inherited from
z.infer.hideBookmarksLinkhideBoothBadges?
optional hideBoothBadges?: boolean;Hide booth number badges.
Inherited from
z.infer.hideBoothBadgeshideCategoriesLink
hideCategoriesLink: boolean;Inherited from
z.infer.hideCategoriesLinkhideDirections
hideDirections: boolean;Inherited from
z.infer.hideDirectionshideDownloadPdfLink
hideDownloadPdfLink: boolean;Inherited from
z.infer.hideDownloadPdfLinkhideEventHomeLink
hideEventHomeLink: boolean;Inherited from
z.infer.hideEventHomeLinkhideExhibitorBoothNumber
hideExhibitorBoothNumber: boolean;Inherited from
z.infer.hideExhibitorBoothNumberhideExhibitors
hideExhibitors: boolean;Inherited from
z.infer.hideExhibitorshideHeaderLogo
hideHeaderLogo: boolean;Hide the header logo (and the ExpoFP logo).
Inherited from
z.infer.hideHeaderLogohideLanguage
hideLanguage: boolean;Inherited from
z.infer.hideLanguagehideLanguageLink
hideLanguageLink: boolean;Inherited from
z.infer.hideLanguageLinkhideLogoInBooth
hideLogoInBooth: boolean;Hide exhibitor logos inside booths.
Inherited from
z.infer.hideLogoInBoothhideModeSwitchButton
hideModeSwitchButton: boolean;Inherited from
z.infer.hideModeSwitchButtonhideRegisterToAttendLink
hideRegisterToAttendLink: boolean;Inherited from
z.infer.hideRegisterToAttendLinkhideShareButton
hideShareButton: boolean;Inherited from
z.infer.hideShareButtonhideWayInformation
hideWayInformation: boolean;Inherited from
z.infer.hideWayInformationhomeUrl
homeUrl: string;Inherited from
z.infer.homeUrlignoreQuery
ignoreQuery: boolean;Inherited from
z.infer.ignoreQueryintents
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?: string[];
}];
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";
})[];Inherited from
z.infer.intentsisRebooking
isRebooking: boolean;Inherited from
z.infer.isRebookingisTrial
isTrial: boolean;Inherited from
z.infer.isTrialkiosk
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.
heading?
optional heading?: number;Device heading in degrees — rotates the you-are-here marker.
iconSizePercent?
optional iconSizePercent?: number;You-are-here icon size, in percent.
lat?
optional lat?: number;GPS latitude (with lng, an alternative fix to x/y).
lng?
optional lng?: number;GPS longitude.
mapBearingDegrees?
optional mapBearingDegrees?: number;Map bearing at the home framing, degrees (map mode).
mapCenterLat?
optional mapCenterLat?: number;Home framing center latitude (map mode).
mapCenterLng?
optional mapCenterLng?: number;Home framing center longitude (map mode).
mapCenterX?
optional mapCenterX?: number;Home framing center x.
mapCenterY?
optional mapCenterY?: number;Home framing center y.
mapInitialPtScale?
optional mapInitialPtScale?: number;The pt-scale captured when the kiosk was set up (zoom reference).
mapPitch?
optional mapPitch?: number;Map pitch at the home framing, degrees.
mapPitchDegrees?
optional mapPitchDegrees?: number;Map pitch at the home framing, degrees (map mode).
mapPtScale?
optional mapPtScale?: number;The pt-scale of the saved framing.
mapRollDegrees?
optional mapRollDegrees?: number;Map roll at the kiosk's home framing, degrees.
mapZoom?
optional mapZoom?: number;Map zoom level at the home framing (map mode).
uiScale?
optional uiScale?: number;Per-device UI scale preference (the applied range is 0.8–1.4).
x?
optional x?: number;Anchor x in plan coordinates.
y?
optional y?: number;Anchor y in plan coordinates.
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.
Inherited from
z.infer.kiosklevelTerm
levelTerm: string;Inherited from
z.infer.levelTermlocale
locale: string;Inherited from
z.infer.localelogo
logo: string;Inherited from
z.infer.logomaplibre
maplibre: object = MapLibreConfigSchema;Index Signature
[key: string]: unknownoffline?
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.
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.
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.
Inherited from
z.infer.maplibremonochrome
monochrome: boolean;Render the plan in grayscale.
Inherited from
z.infer.monochromenoFeatured
noFeatured: boolean;Inherited from
z.infer.noFeaturednoOverlay
noOverlay: boolean;Inherited from
z.infer.noOverlayoffHistory
offHistory: boolean;Inherited from
z.infer.offHistoryonlyFeaturedExhibitors
onlyFeaturedExhibitors: boolean;Inherited from
z.infer.onlyFeaturedExhibitorspoiTypes
poiTypes: object[];Index Signature
[key: string]: unknowniconUrl?
optional iconUrl?: string;Icon shown for this type; overrides the built-in glyph.
id
id: number;name
name: string;parentId?
optional parentId?: number;Inherited from
z.infer.poiTypespreviewMode
previewMode: boolean;Inherited from
z.infer.previewModeregisterUrl
registerUrl: string;Inherited from
z.infer.registerUrlreserveButtonTerm
reserveButtonTerm: string;Inherited from
z.infer.reserveButtonTermreserveInstructions
reserveInstructions: string;Inherited from
z.infer.reserveInstructionssearchText
searchText: string;Inherited from
z.infer.searchTextsendLoginLinkUrl
sendLoginLinkUrl: string;Inherited from
z.infer.sendLoginLinkUrlshortLevelName
shortLevelName: boolean;Inherited from
z.infer.shortLevelNameshowCategories
showCategories: boolean;Inherited from
z.infer.showCategoriesshowCompaniesAndBooths
showCompaniesAndBooths: boolean;Inherited from
z.infer.showCompaniesAndBoothsshowDebugButton
showDebugButton: boolean;Inherited from
z.infer.showDebugButtonshowLevelLabel
showLevelLabel: boolean;Inherited from
z.infer.showLevelLabelshowOtherSpaces
showOtherSpaces: boolean;Inherited from
z.infer.showOtherSpacesstartDate
startDate: string;Inherited from
z.infer.startDatesubtitle
subtitle: string;Inherited from
z.infer.subtitletitle
title: string;Inherited from
z.infer.titletrackerUrl
trackerUrl: string;Inherited from
z.infer.trackerUrltrialExpiresAt
trialExpiresAt: string;Inherited from
z.infer.trialExpiresAtviewerMode
viewerMode: boolean;Inherited from
z.infer.viewerModeviewOptimizationLevel
viewOptimizationLevel: number;Inherited from
z.infer.viewOptimizationLevelvisibility
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.
controls?
optional controls?: boolean;The map controls (zoom buttons, …).
header?
optional header?: boolean;The header bar — logos and the free/demo badge.
levels?
optional levels?: boolean;The floor selector.
overlay?
optional overlay?: boolean;The overlay panel — search, lists, entity details.
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).
Inherited from
z.infer.visibilitywfDataJsRef
wfDataJsRef:
| {
$ref: string;
}
| null;wf.data.js (wayfinding graph) ref; null without legacy data.
Inherited from
z.infer.wfDataJsRef