@expofp/schema 0.0.0-experimental.cf063fc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/index.d.ts +24 -0
  2. package/dist/index.js +23 -0
  3. package/dist/lib/booth.d.ts +74 -0
  4. package/dist/lib/booth.js +35 -0
  5. package/dist/lib/branding.d.ts +21 -0
  6. package/dist/lib/branding.js +20 -0
  7. package/dist/lib/camera.d.ts +24 -0
  8. package/dist/lib/camera.js +36 -0
  9. package/dist/lib/categories.d.ts +9 -0
  10. package/dist/lib/categories.js +7 -0
  11. package/dist/lib/config-defaults.d.ts +147 -0
  12. package/dist/lib/config-defaults.js +164 -0
  13. package/dist/lib/config.d.ts +2146 -0
  14. package/dist/lib/config.js +438 -0
  15. package/dist/lib/exhibitor.d.ts +66 -0
  16. package/dist/lib/exhibitor.js +69 -0
  17. package/dist/lib/filters.d.ts +23 -0
  18. package/dist/lib/filters.js +24 -0
  19. package/dist/lib/flags.d.ts +17 -0
  20. package/dist/lib/flags.js +63 -0
  21. package/dist/lib/fp-geo.d.ts +105 -0
  22. package/dist/lib/fp-geo.js +55 -0
  23. package/dist/lib/fp-svg.d.ts +399 -0
  24. package/dist/lib/fp-svg.js +196 -0
  25. package/dist/lib/heatmap.d.ts +23 -0
  26. package/dist/lib/heatmap.js +24 -0
  27. package/dist/lib/intents.d.ts +173 -0
  28. package/dist/lib/intents.js +153 -0
  29. package/dist/lib/journey.d.ts +27 -0
  30. package/dist/lib/journey.js +26 -0
  31. package/dist/lib/kiosk.d.ts +39 -0
  32. package/dist/lib/kiosk.js +65 -0
  33. package/dist/lib/maplibre.d.ts +43 -0
  34. package/dist/lib/maplibre.js +51 -0
  35. package/dist/lib/maps.d.ts +22 -0
  36. package/dist/lib/maps.js +19 -0
  37. package/dist/lib/poi-types.d.ts +13 -0
  38. package/dist/lib/poi-types.js +17 -0
  39. package/dist/lib/schedule.d.ts +25 -0
  40. package/dist/lib/schedule.js +20 -0
  41. package/dist/lib/search.d.ts +51 -0
  42. package/dist/lib/search.js +36 -0
  43. package/dist/lib/venues.d.ts +222 -0
  44. package/dist/lib/venues.js +150 -0
  45. package/dist/lib/visibility.d.ts +17 -0
  46. package/dist/lib/visibility.js +23 -0
  47. package/dist/lib/wayfinding.d.ts +104 -0
  48. package/dist/lib/wayfinding.js +52 -0
  49. package/package.json +35 -0
@@ -0,0 +1,24 @@
1
+ export * from './lib/booth.js';
2
+ export * from './lib/branding.js';
3
+ export * from './lib/camera.js';
4
+ export * from './lib/categories.js';
5
+ export * from './lib/config.js';
6
+ export * from './lib/config-defaults.js';
7
+ export * from './lib/exhibitor.js';
8
+ export * from './lib/filters.js';
9
+ export * from './lib/flags.js';
10
+ export * from './lib/fp-geo.js';
11
+ export * from './lib/fp-svg.js';
12
+ export * from './lib/heatmap.js';
13
+ export * from './lib/intents.js';
14
+ export * from './lib/journey.js';
15
+ export * from './lib/kiosk.js';
16
+ export * from './lib/maplibre.js';
17
+ export * from './lib/maps.js';
18
+ export * from './lib/poi-types.js';
19
+ export * from './lib/schedule.js';
20
+ export * from './lib/search.js';
21
+ export * from './lib/venues.js';
22
+ export * from './lib/visibility.js';
23
+ export * from './lib/wayfinding.js';
24
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ export * from './lib/booth.js';
2
+ export * from './lib/branding.js';
3
+ export * from './lib/camera.js';
4
+ export * from './lib/categories.js';
5
+ export * from './lib/config.js';
6
+ export * from './lib/config-defaults.js';
7
+ export * from './lib/exhibitor.js';
8
+ export * from './lib/filters.js';
9
+ export * from './lib/flags.js';
10
+ export * from './lib/fp-geo.js';
11
+ export * from './lib/fp-svg.js';
12
+ export * from './lib/heatmap.js';
13
+ export * from './lib/intents.js';
14
+ export * from './lib/journey.js';
15
+ export * from './lib/kiosk.js';
16
+ export * from './lib/maplibre.js';
17
+ export * from './lib/maps.js';
18
+ export * from './lib/poi-types.js';
19
+ export * from './lib/schedule.js';
20
+ export * from './lib/search.js';
21
+ export * from './lib/venues.js';
22
+ export * from './lib/visibility.js';
23
+ export * from './lib/wayfinding.js';
@@ -0,0 +1,74 @@
1
+ import * as z from 'zod';
2
+ /** A standard sellable booth. */
3
+ export declare const RawRegularBoothSchema: z.ZodObject<{
4
+ id: z.ZodNumber;
5
+ name: z.ZodString;
6
+ title: z.ZodOptional<z.ZodString>;
7
+ externalId: z.ZodOptional<z.ZodString>;
8
+ exhibitors: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
9
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
10
+ poiTypeId: z.ZodOptional<z.ZodNumber>;
11
+ status: z.ZodOptional<z.ZodEnum<{
12
+ onhold: "onhold";
13
+ reserved: "reserved";
14
+ }>>;
15
+ size: z.ZodOptional<z.ZodString>;
16
+ price: z.ZodOptional<z.ZodString>;
17
+ availColor: z.ZodOptional<z.ZodString>;
18
+ soldColor: z.ZodOptional<z.ZodString>;
19
+ holdColor: z.ZodOptional<z.ZodString>;
20
+ buyUrl: z.ZodOptional<z.ZodString>;
21
+ reserveUrl: z.ZodOptional<z.ZodString>;
22
+ type: z.ZodOptional<z.ZodString>;
23
+ labelColor: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$loose>;
25
+ /** A non-sellable special area (entrance, lounge, …), tagged `special: true`. */
26
+ export declare const RawSpecialBoothSchema: z.ZodObject<{
27
+ id: z.ZodNumber;
28
+ name: z.ZodString;
29
+ title: z.ZodOptional<z.ZodString>;
30
+ externalId: z.ZodOptional<z.ZodString>;
31
+ exhibitors: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
32
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
33
+ poiTypeId: z.ZodOptional<z.ZodNumber>;
34
+ description: z.ZodOptional<z.ZodString>;
35
+ color: z.ZodOptional<z.ZodString>;
36
+ special: z.ZodLiteral<true>;
37
+ }, z.core.$loose>;
38
+ export declare const RawBoothSchema: z.ZodUnion<readonly [z.ZodObject<{
39
+ id: z.ZodNumber;
40
+ name: z.ZodString;
41
+ title: z.ZodOptional<z.ZodString>;
42
+ externalId: z.ZodOptional<z.ZodString>;
43
+ exhibitors: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
44
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
45
+ poiTypeId: z.ZodOptional<z.ZodNumber>;
46
+ description: z.ZodOptional<z.ZodString>;
47
+ color: z.ZodOptional<z.ZodString>;
48
+ special: z.ZodLiteral<true>;
49
+ }, z.core.$loose>, z.ZodObject<{
50
+ id: z.ZodNumber;
51
+ name: z.ZodString;
52
+ title: z.ZodOptional<z.ZodString>;
53
+ externalId: z.ZodOptional<z.ZodString>;
54
+ exhibitors: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
55
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
56
+ poiTypeId: z.ZodOptional<z.ZodNumber>;
57
+ status: z.ZodOptional<z.ZodEnum<{
58
+ onhold: "onhold";
59
+ reserved: "reserved";
60
+ }>>;
61
+ size: z.ZodOptional<z.ZodString>;
62
+ price: z.ZodOptional<z.ZodString>;
63
+ availColor: z.ZodOptional<z.ZodString>;
64
+ soldColor: z.ZodOptional<z.ZodString>;
65
+ holdColor: z.ZodOptional<z.ZodString>;
66
+ buyUrl: z.ZodOptional<z.ZodString>;
67
+ reserveUrl: z.ZodOptional<z.ZodString>;
68
+ type: z.ZodOptional<z.ZodString>;
69
+ labelColor: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$loose>]>;
71
+ export type RawBooth = z.infer<typeof RawBoothSchema>;
72
+ export type RawRegularBooth = z.infer<typeof RawRegularBoothSchema>;
73
+ export type RawSpecialBooth = z.infer<typeof RawSpecialBoothSchema>;
74
+ //# sourceMappingURL=booth.d.ts.map
@@ -0,0 +1,35 @@
1
+ import * as z from 'zod';
2
+ /** Fields shared by every booth, regular or special. */
3
+ const RawBoothBaseSchema = z.looseObject({
4
+ id: z.number(),
5
+ name: z.string(),
6
+ title: z.string().optional(),
7
+ externalId: z.string().optional(),
8
+ exhibitors: z.array(z.number()).optional(),
9
+ meta: z.record(z.string(), z.string()).optional(),
10
+ poiTypeId: z.number().optional(),
11
+ });
12
+ /** A standard sellable booth. */
13
+ export const RawRegularBoothSchema = RawBoothBaseSchema.extend({
14
+ /** Unavailable-for-sale state; `init-booths` derives the `onHold`/`reserved` flags. */
15
+ status: z.enum(['onhold', 'reserved']).optional(),
16
+ // populated: comes from svg or data.js
17
+ size: z.string().optional(),
18
+ price: z.string().optional(),
19
+ availColor: z.string().optional(),
20
+ soldColor: z.string().optional(),
21
+ holdColor: z.string().optional(),
22
+ buyUrl: z.string().optional(),
23
+ reserveUrl: z.string().optional(),
24
+ type: z.string().optional(),
25
+ labelColor: z.string().optional(),
26
+ });
27
+ /** A non-sellable special area (entrance, lounge, …), tagged `special: true`. */
28
+ export const RawSpecialBoothSchema = RawBoothBaseSchema.extend({
29
+ description: z.string().optional(),
30
+ color: z.string().optional(), // comes from svg or data.js
31
+ special: z.literal(true),
32
+ });
33
+ // Special branch first: with nearly every field optional a regular booth has no
34
+ // required discriminator, so `special: true` (still required) must be matched first.
35
+ export const RawBoothSchema = z.union([RawSpecialBoothSchema, RawRegularBoothSchema]);
@@ -0,0 +1,21 @@
1
+ import * as z from 'zod';
2
+ /** How a selected booth/space/POI is highlighted on the plan. */
3
+ export declare const SelectionStyleSchema: z.ZodEnum<{
4
+ blink: "blink";
5
+ solid: "solid";
6
+ }>;
7
+ export type SelectionStyle = z.infer<typeof SelectionStyleSchema>;
8
+ /**
9
+ * Wayfinding palette overrides. Every key is optional; an absent key keeps
10
+ * the built-in color. Loose so the platform can add keys before the SDK
11
+ * learns them.
12
+ */
13
+ export declare const WayfindingColorsSchema: z.ZodObject<{
14
+ route: z.ZodOptional<z.ZodString>;
15
+ routeActive: z.ZodOptional<z.ZodString>;
16
+ routePassed: z.ZodOptional<z.ZodString>;
17
+ source: z.ZodOptional<z.ZodString>;
18
+ destination: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$loose>;
20
+ export type WayfindingColors = z.infer<typeof WayfindingColorsSchema>;
21
+ //# sourceMappingURL=branding.d.ts.map
@@ -0,0 +1,20 @@
1
+ import * as z from 'zod';
2
+ /** How a selected booth/space/POI is highlighted on the plan. */
3
+ export const SelectionStyleSchema = z.enum(['blink', 'solid']);
4
+ /**
5
+ * Wayfinding palette overrides. Every key is optional; an absent key keeps
6
+ * the built-in color. Loose so the platform can add keys before the SDK
7
+ * learns them.
8
+ */
9
+ export const WayfindingColorsSchema = z.looseObject({
10
+ /** Remaining route segments. */
11
+ route: z.string().optional(),
12
+ /** Animated "current" segment drawn over the remaining route. */
13
+ routeActive: z.string().optional(),
14
+ /** Segments already walked. */
15
+ routePassed: z.string().optional(),
16
+ /** Departure / current-position / transition icons. */
17
+ source: z.string().optional(),
18
+ /** Destination icon. */
19
+ destination: z.string().optional(),
20
+ });
@@ -0,0 +1,24 @@
1
+ import * as z from 'zod';
2
+ /**
3
+ * A camera move request — the argument of `FloorPlan.setCamera` and the
4
+ * `setCamera` intent. Every field is optional with partial-merge semantics:
5
+ * only the fields present change the view, omitted ones keep their current
6
+ * values. `x`/`y` (floor-plan projected coordinates) and `lat`/`lng` (the GPS
7
+ * alternative) are pairs — a center moves only when both halves of a pair are
8
+ * given.
9
+ */
10
+ export declare const CameraSchema: z.ZodObject<{
11
+ x: z.ZodOptional<z.ZodNumber>;
12
+ y: z.ZodOptional<z.ZodNumber>;
13
+ lat: z.ZodOptional<z.ZodNumber>;
14
+ lng: z.ZodOptional<z.ZodNumber>;
15
+ floor: z.ZodOptional<z.ZodString>;
16
+ venue: z.ZodOptional<z.ZodString>;
17
+ bearing: z.ZodOptional<z.ZodNumber>;
18
+ zoomTime: z.ZodOptional<z.ZodNumber>;
19
+ pitchTime: z.ZodOptional<z.ZodNumber>;
20
+ pitchDegrees: z.ZodOptional<z.ZodNumber>;
21
+ }, z.core.$strip>;
22
+ export interface Camera extends z.infer<typeof CameraSchema> {
23
+ }
24
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1,36 @@
1
+ import * as z from 'zod';
2
+ /**
3
+ * A camera move request — the argument of `FloorPlan.setCamera` and the
4
+ * `setCamera` intent. Every field is optional with partial-merge semantics:
5
+ * only the fields present change the view, omitted ones keep their current
6
+ * values. `x`/`y` (floor-plan projected coordinates) and `lat`/`lng` (the GPS
7
+ * alternative) are pairs — a center moves only when both halves of a pair are
8
+ * given.
9
+ */
10
+ export const CameraSchema = z.object({
11
+ /** Center, floor-plan projected coordinates (paired with `y`). */
12
+ x: z.number().optional(),
13
+ /** Center, floor-plan projected coordinates (paired with `x`). */
14
+ y: z.number().optional(),
15
+ /** Center, GPS latitude (paired with `lng`). */
16
+ lat: z.number().optional(),
17
+ /** Center, GPS longitude (paired with `lat`). */
18
+ lng: z.number().optional(),
19
+ /** Floor name to activate. */
20
+ floor: z.string().optional(),
21
+ /**
22
+ * Venue `id` to focus (multi-venue plans) — a display name resolves nothing,
23
+ * so a hall may be renamed without breaking a saved link. Paired with `floor`
24
+ * it addresses a level inside that venue; alone it flies to the venue and
25
+ * opens its initial level. Ignored on plans without venue definitions.
26
+ */
27
+ venue: z.string().optional(),
28
+ /** Map rotation in degrees (0–360). */
29
+ bearing: z.number().optional(),
30
+ /** Camera movement animation duration in milliseconds. */
31
+ zoomTime: z.number().optional(),
32
+ /** Tilt animation duration in milliseconds. */
33
+ pitchTime: z.number().optional(),
34
+ /** Camera tilt back from top down, in degrees. */
35
+ pitchDegrees: z.number().optional(),
36
+ });
@@ -0,0 +1,9 @@
1
+ import * as z from 'zod';
2
+ /** An exhibitor category — an entry in the config's `categories` list. */
3
+ export declare const RawCategorySchema: z.ZodObject<{
4
+ id: z.ZodNumber;
5
+ name: z.ZodString;
6
+ sponsorship: z.ZodOptional<z.ZodBoolean>;
7
+ }, z.core.$loose>;
8
+ export type RawCategory = z.infer<typeof RawCategorySchema>;
9
+ //# sourceMappingURL=categories.d.ts.map
@@ -0,0 +1,7 @@
1
+ import * as z from 'zod';
2
+ /** An exhibitor category — an entry in the config's `categories` list. */
3
+ export const RawCategorySchema = z.looseObject({
4
+ id: z.number(),
5
+ name: z.string(),
6
+ sponsorship: z.boolean().optional(),
7
+ });
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Complete field defaults for the effective config — one value for every
3
+ * `Config` field — applied as the lowest-precedence layer in `loadConfig` so an
4
+ * explicit value from any source (manifest, options, localStorage, URL) wins.
5
+ *
6
+ * Typed `satisfies Required<Config>`, so it must stay exhaustive: add a field to
7
+ * the schema and TypeScript flags the missing default here (plain `Config` would
8
+ * let an optional field slip through). Values are type zero-values (`false` /
9
+ * `''` / `0` / `[]` / `{}`) except where a meaningful default exists
10
+ * (`disableRuntimeAlerts`).
11
+ *
12
+ * Kept as a plain object rather than `.default()`s inside the layer schemas: a
13
+ * default in a schema materializes on *every* layer's parse — and in Zod 4
14
+ * `.partial()` does not suppress it — so a higher, empty layer would stomp a
15
+ * lower layer's explicit value.
16
+ */
17
+ export declare const ConfigDefaults: {
18
+ expo: string;
19
+ noFeatured: false;
20
+ isTrial: false;
21
+ expoFpAd: false;
22
+ free: false;
23
+ trialExpiresAt: string;
24
+ title: string;
25
+ subtitle: string;
26
+ homeUrl: string;
27
+ registerUrl: string;
28
+ startDate: string;
29
+ endDate: string;
30
+ logo: string;
31
+ gallery: never[];
32
+ gtag: string;
33
+ boothTerm: string;
34
+ levelTerm: string;
35
+ reserveButtonTerm: string;
36
+ exhibitorTerm: string;
37
+ exhibitorTermPlural: string;
38
+ locale: string;
39
+ booths: never[];
40
+ exhibitors: never[];
41
+ categories: never[];
42
+ poiTypes: never[];
43
+ events: never[];
44
+ reserveInstructions: string;
45
+ sendLoginLinkUrl: string;
46
+ trackerUrl: string;
47
+ hideWayInformation: false;
48
+ hideDirections: false;
49
+ hideExhibitors: false;
50
+ onlyFeaturedExhibitors: false;
51
+ hideExhibitorBoothNumber: false;
52
+ dimensionless: false;
53
+ hideCategoriesLink: false;
54
+ hideEventHomeLink: false;
55
+ hideRegisterToAttendLink: false;
56
+ hideDownloadPdfLink: false;
57
+ hideBookmarksLink: false;
58
+ hideBookmarks: false;
59
+ hideLanguage: false;
60
+ hideLanguageLink: false;
61
+ uiLanguages: never[];
62
+ hideBoothLevel: false;
63
+ selectionStyle: "blink";
64
+ selectionColor: string;
65
+ wayfindingColors: {};
66
+ autoTrackingGps: false;
67
+ enableIPS: false;
68
+ allow3dView: false;
69
+ hide3dMapDefault: false;
70
+ hideModeSwitchButton: false;
71
+ isRebooking: false;
72
+ customCss: string;
73
+ customCssFonts: never[];
74
+ showLevelLabel: false;
75
+ showCategories: false;
76
+ showCompaniesAndBooths: false;
77
+ showOtherSpaces: false;
78
+ hideShareButton: false;
79
+ collapseDescriptions: true;
80
+ searchCameraFollow: false;
81
+ viewOptimizationLevel: number;
82
+ shortLevelName: false;
83
+ searchText: string;
84
+ filterButtonsConfig: {};
85
+ enableRotation: false;
86
+ alwaysShowSidebar: false;
87
+ customKioskQrCodeUrl: string;
88
+ qrCodeBaseUrl: string;
89
+ venuesVersion: 1;
90
+ venues: never[];
91
+ /**
92
+ * No producer override: undefined means "let the platform decide", which is
93
+ * the whole default behavior — an eager 'google' here would silently force
94
+ * Google Maps on iOS.
95
+ */
96
+ mapsProvider: undefined;
97
+ /**
98
+ * No deep link: a journey is what the visitor builds on this device, unless a
99
+ * scanned QR names one. Undefined rather than an empty object — a journey
100
+ * link without a destination is not a link.
101
+ */
102
+ journey: undefined;
103
+ /** No provider configured; see the field's note in `config.ts` for why not `''`. */
104
+ mobileLocationProvider: null;
105
+ /**
106
+ * Deliberately undefined rather than `false`: the flag is tri-state. Unset
107
+ * lets the drawing decide (`__fpGeo.properties.config.type === 'maplibre'`),
108
+ * while an explicit `false` from any layer — debug panel, localStorage, URL,
109
+ * host options — vetoes the map. A `false` default would erase that
110
+ * distinction (see `MaplibreStore.useMaplibreMap`).
111
+ */
112
+ enableExperimentalMaplibre: undefined;
113
+ enableExperimentalOutdoorMarkers: false;
114
+ enableExperimentalVenueFraming: false;
115
+ enableExperimentalNorthUp: false;
116
+ customSetKiosk: string;
117
+ hideBoothBadges: false;
118
+ crossVenueJourneys: true;
119
+ busRoutes: false;
120
+ debugMode: false;
121
+ debugPattern: string;
122
+ showDebugButton: false;
123
+ previewMode: false;
124
+ noOverlay: false;
125
+ offHistory: false;
126
+ ignoreQuery: false;
127
+ consent: "ask";
128
+ viewerMode: false;
129
+ disableRuntimeAlerts: true;
130
+ monochrome: false;
131
+ hideHeaderLogo: false;
132
+ hideLogoInBooth: false;
133
+ disableFeatured: false;
134
+ disableBookmarked: false;
135
+ disableGps: false;
136
+ camera: {};
137
+ visibility: {};
138
+ filters: {};
139
+ heatmap: {};
140
+ kiosk: {};
141
+ maplibre: {};
142
+ intents: never[];
143
+ fpSvgJsRef: null;
144
+ fpSvgLayerJsRefs: {};
145
+ wfDataJsRef: null;
146
+ };
147
+ //# sourceMappingURL=config-defaults.d.ts.map
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Complete field defaults for the effective config — one value for every
3
+ * `Config` field — applied as the lowest-precedence layer in `loadConfig` so an
4
+ * explicit value from any source (manifest, options, localStorage, URL) wins.
5
+ *
6
+ * Typed `satisfies Required<Config>`, so it must stay exhaustive: add a field to
7
+ * the schema and TypeScript flags the missing default here (plain `Config` would
8
+ * let an optional field slip through). Values are type zero-values (`false` /
9
+ * `''` / `0` / `[]` / `{}`) except where a meaningful default exists
10
+ * (`disableRuntimeAlerts`).
11
+ *
12
+ * Kept as a plain object rather than `.default()`s inside the layer schemas: a
13
+ * default in a schema materializes on *every* layer's parse — and in Zod 4
14
+ * `.partial()` does not suppress it — so a higher, empty layer would stomp a
15
+ * lower layer's explicit value.
16
+ */
17
+ export const ConfigDefaults = {
18
+ expo: '',
19
+ // trial / ad
20
+ noFeatured: false,
21
+ isTrial: false,
22
+ expoFpAd: false,
23
+ free: false,
24
+ trialExpiresAt: '',
25
+ // expo meta
26
+ title: '',
27
+ subtitle: '',
28
+ homeUrl: '',
29
+ registerUrl: '',
30
+ startDate: '',
31
+ endDate: '',
32
+ logo: '',
33
+ gallery: [],
34
+ gtag: '',
35
+ // terms / locale
36
+ boothTerm: '',
37
+ levelTerm: '',
38
+ reserveButtonTerm: '',
39
+ exhibitorTerm: '',
40
+ exhibitorTermPlural: '',
41
+ locale: '',
42
+ // data collections
43
+ booths: [],
44
+ exhibitors: [],
45
+ categories: [],
46
+ poiTypes: [],
47
+ events: [],
48
+ reserveInstructions: '',
49
+ sendLoginLinkUrl: '',
50
+ trackerUrl: '',
51
+ // visibility toggles
52
+ hideWayInformation: false,
53
+ hideDirections: false,
54
+ hideExhibitors: false,
55
+ onlyFeaturedExhibitors: false,
56
+ hideExhibitorBoothNumber: false,
57
+ dimensionless: false,
58
+ hideCategoriesLink: false,
59
+ hideEventHomeLink: false,
60
+ hideRegisterToAttendLink: false,
61
+ hideDownloadPdfLink: false,
62
+ hideBookmarksLink: false,
63
+ hideBookmarks: false,
64
+ hideLanguage: false,
65
+ hideLanguageLink: false,
66
+ uiLanguages: [],
67
+ hideBoothLevel: false,
68
+ selectionStyle: 'blink',
69
+ selectionColor: '',
70
+ wayfindingColors: {},
71
+ autoTrackingGps: false,
72
+ enableIPS: false,
73
+ allow3dView: false,
74
+ hide3dMapDefault: false,
75
+ hideModeSwitchButton: false,
76
+ isRebooking: false,
77
+ // custom styling
78
+ customCss: '',
79
+ customCssFonts: [],
80
+ showLevelLabel: false,
81
+ showCategories: false,
82
+ showCompaniesAndBooths: false,
83
+ showOtherSpaces: false,
84
+ hideShareButton: false,
85
+ collapseDescriptions: true,
86
+ searchCameraFollow: false,
87
+ viewOptimizationLevel: 0,
88
+ shortLevelName: false,
89
+ searchText: '',
90
+ filterButtonsConfig: {},
91
+ enableRotation: false,
92
+ alwaysShowSidebar: false,
93
+ customKioskQrCodeUrl: '',
94
+ qrCodeBaseUrl: '',
95
+ // A plan has a venue model only when `venues` is non-empty, so the empty
96
+ // default IS "no venue model"; `venuesVersion` carries the only legal wire
97
+ // version and is inert until venues arrive.
98
+ venuesVersion: 1,
99
+ venues: [],
100
+ /**
101
+ * No producer override: undefined means "let the platform decide", which is
102
+ * the whole default behavior — an eager 'google' here would silently force
103
+ * Google Maps on iOS.
104
+ */
105
+ mapsProvider: undefined,
106
+ /**
107
+ * No deep link: a journey is what the visitor builds on this device, unless a
108
+ * scanned QR names one. Undefined rather than an empty object — a journey
109
+ * link without a destination is not a link.
110
+ */
111
+ journey: undefined,
112
+ /** No provider configured; see the field's note in `config.ts` for why not `''`. */
113
+ mobileLocationProvider: null,
114
+ // flags (deprecated nested `flags` flattened to root)
115
+ /**
116
+ * Deliberately undefined rather than `false`: the flag is tri-state. Unset
117
+ * lets the drawing decide (`__fpGeo.properties.config.type === 'maplibre'`),
118
+ * while an explicit `false` from any layer — debug panel, localStorage, URL,
119
+ * host options — vetoes the map. A `false` default would erase that
120
+ * distinction (see `MaplibreStore.useMaplibreMap`).
121
+ */
122
+ enableExperimentalMaplibre: undefined,
123
+ enableExperimentalOutdoorMarkers: false,
124
+ enableExperimentalVenueFraming: false,
125
+ enableExperimentalNorthUp: false,
126
+ customSetKiosk: '',
127
+ hideBoothBadges: false,
128
+ // TEMPORARY — DELETE BEFORE MERGE. The flag ships off (ADR-0010: the debut is
129
+ // gated, and the same switch stays the producer's opt-out afterwards); it is
130
+ // on here only so cross-venue journeys can be exercised on this branch
131
+ // without appending `?crossVenueJourneys=true` to every URL. Restore
132
+ // `crossVenueJourneys: false` before this branch merges.
133
+ crossVenueJourneys: true,
134
+ busRoutes: false,
135
+ // user preferences
136
+ debugMode: false,
137
+ debugPattern: '',
138
+ showDebugButton: false,
139
+ // options
140
+ previewMode: false,
141
+ noOverlay: false,
142
+ offHistory: false,
143
+ ignoreQuery: false,
144
+ consent: 'ask',
145
+ viewerMode: false,
146
+ disableRuntimeAlerts: true, // TODO: drop once runtime alerts are opt-in
147
+ monochrome: false,
148
+ hideHeaderLogo: false,
149
+ hideLogoInBooth: false,
150
+ disableFeatured: false,
151
+ disableBookmarked: false,
152
+ disableGps: false,
153
+ camera: {},
154
+ visibility: {},
155
+ filters: {},
156
+ heatmap: {},
157
+ kiosk: {},
158
+ maplibre: {},
159
+ intents: [],
160
+ // legacy / internal
161
+ fpSvgJsRef: null,
162
+ fpSvgLayerJsRefs: {},
163
+ wfDataJsRef: null,
164
+ };