@expofp/floorplan 3.34.2 → 3.35.1
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.
- package/dist/browser/{Button-CNMjOvi_.js → Button-2F5HU6EI.js} +6 -6
- package/dist/browser/{CookieConsent-D41GkvnH.js → CookieConsent-BhAM5rOw.js} +8 -8
- package/dist/browser/{Debug-CmW7YX8I.js → Debug-gdCmeYCg.js} +8 -8
- package/dist/browser/{DebugTools-BiVg-I_r.js → DebugTools-BDyuUdUN.js} +45 -42
- package/dist/browser/{Demo-B4Cvydeo.js → Demo-BPrFwUW-.js} +10 -10
- package/dist/browser/{Free-CjQjLOqF.js → Free-C5uVLenH.js} +10 -10
- package/dist/browser/{GalleryContainer-mw16bKBB.js → GalleryContainer-C7j0INY2.js} +11 -11
- package/dist/browser/{GpsLoader-pVmQS4Cm.js → GpsLoader-nnQDCMRH.js} +33 -33
- package/dist/browser/{KioskStore-sSfegCgB.js → KioskStore-SeMZP79o.js} +9 -9
- package/dist/browser/{MaplibreAdapter-CdpX44KB.js → MaplibreAdapter-Bjevgo2r.js} +921 -917
- package/dist/browser/{ModalContainer--UWO5EJt.js → ModalContainer-BzFo7uj2.js} +11 -11
- package/dist/browser/{PermissionNotice-Dw32M81v.js → PermissionNotice-DmoXiJZo.js} +7 -7
- package/dist/browser/{SetKioskMode-EltbU-EF.js → SetKioskMode-C-vbXwyj.js} +10 -10
- package/dist/browser/{ShowKiosk-BvGaVpGa.js → ShowKiosk-CgeCnhWG.js} +29 -29
- package/dist/browser/{ViewerMenuPanel-BEcomGU5.js → ViewerMenuPanel-CuwiufdN.js} +18 -18
- package/dist/browser/{add-debug-secret-listener-DzuQqBnc.js → add-debug-secret-listener-BjmnVzZS.js} +1 -1
- package/dist/browser/{adopt-global-settings-BZ0kVMK5.js → adopt-global-settings-UqpjKsyk.js} +10 -10
- package/dist/browser/{boolean-editor-CEIoLj51.js → boolean-editor-oIQak_P8.js} +10 -10
- package/dist/browser/{bootIntercom-Db9lsRTD.js → bootIntercom-BRfFanFY.js} +3 -3
- package/dist/browser/bundle.json +75 -69
- package/dist/browser/{camera-events-02zSeTQ-.js → camera-events-a1iM2lq7.js} +1 -1
- package/dist/browser/{classnames-CpaGYtKG.js → classnames-Cv_mU_yl.js} +2 -2
- package/dist/browser/{client-hdZ-mqt7.js → client-DnPSFafu.js} +6 -6
- package/dist/browser/{components-DwpPpajK.js → components-DxY-BX9A.js} +1856 -1861
- package/dist/browser/{debug-context-DB0NIlH9.js → debug-context-CulbnWCw.js} +7 -7
- package/dist/browser/{debug-overlay-B4MTiAeZ.js → debug-overlay-CWXl2SWt.js} +11 -11
- package/dist/browser/{debug-ui-D4mq0ugA.js → debug-ui-CcQZL4pg.js} +7 -7
- package/dist/browser/{dimming-BvAGMHKX.js → dimming-DvhkMZ40.js} +311 -311
- package/dist/browser/{dist-BjN1ZtXO.js → dist-8UJC0IZK.js} +6 -6
- package/dist/browser/{dist-GGfaJ3R1.js → dist-DafB9t7K.js} +7 -7
- package/dist/browser/{dist-DA_O1Tq9.js → dist-Dsb4OHet.js} +3 -3
- package/dist/browser/{efp-debug-init-DCZ0v67W.js → efp-debug-init-DD05RMBQ.js} +4 -4
- package/dist/browser/{enum-editor-D1zVwP8a.js → enum-editor-a4lYf4S8.js} +5 -5
- package/dist/browser/{es5-483Ipz8U.js → es5-DdUdJX_x.js} +2 -2
- package/dist/browser/event-head-DfDyobgR.js +56 -0
- package/dist/browser/event-not-found-A0hPYREL.js +31 -0
- package/dist/browser/{exports-CNZZj_Q8.js → exports-O5jdOzC2.js} +1 -1
- package/dist/browser/{favicon-Bg6LMWEn.js → favicon-mpeKznxL.js} +1 -1
- package/dist/browser/{fetch-retry.umd-DEbZQzJ3.js → fetch-retry.umd-CBah2MkL.js} +2 -2
- package/dist/browser/{flex-B9PF9U8h.js → flex-CC8u1Uw-.js} +6 -6
- package/dist/browser/{floorplan.loader-G3m0klqz.js → floorplan.loader-DYN6P-Oo.js} +602 -592
- package/dist/browser/{floorplan.ready-CcBm3z9I.js → floorplan.ready-TDFhIRo_.js} +326 -323
- package/dist/browser/{fuse-Be1ke9wH.js → fuse-BS8CcWcC.js} +2 -2
- package/dist/browser/{i18n-892OGllH.js → i18n-0E3uyLVW.js} +9 -7
- package/dist/browser/index.js +54 -49
- package/dist/browser/{index.module-DBPl3snb.js → index.module-DwVIOM93.js} +4 -4
- package/dist/browser/{integrateKiosk-Dau_WEaC.js → integrateKiosk-Ccq4WzoS.js} +5 -5
- package/dist/browser/is-own-domain-BKqddHmh.js +26 -0
- package/dist/browser/{is-webview-ElzsMr4s.js → is-webview-DiCFSLy-.js} +1 -1
- package/dist/browser/{jsx-runtime-BsOtCifA.js → jsx-runtime-P77WQJqF.js} +2 -2
- package/dist/browser/{kiosk-record-BTQRhXdb.js → kiosk-record-DoMCDoT2.js} +1 -1
- package/dist/browser/{lib-CurNQ8fT.js → lib-BZb68qwp.js} +3 -3
- package/dist/browser/{loadImage-wPuY8HVi.js → loadImage-3kW-Fg2_.js} +4 -4
- package/dist/browser/{logDeviceInfo-bDJ_gaMR.js → logDeviceInfo-DtJbriqX.js} +9 -9
- package/dist/browser/{mobx-CoCB6VaY.js → mobx-1EBv7CmH.js} +4 -4
- package/dist/browser/{optional-boolean-editor-WRwLbFlO.js → optional-boolean-editor-h2Oq_1_r.js} +4 -4
- package/dist/browser/{optional-enum-editor-C1ENUhhf.js → optional-enum-editor-eKdnFVD2.js} +5 -5
- package/dist/browser/{optional-string-editor-CNEl6U5Q.js → optional-string-editor-C9s17l6V.js} +5 -5
- package/dist/browser/{particles.min-BRguaqtu.js → particles.min-DkQQycn_.js} +2 -2
- package/dist/browser/{react-BQN6EStf.js → react-DzgaPDX1.js} +2 -2
- package/dist/browser/{react-dom-C7Pf2opy.js → react-dom-JDDm2RhZ.js} +3 -3
- package/dist/browser/{rolldown-runtime-DBeIQt3E.js → rolldown-runtime-veXluOvq.js} +1 -1
- package/dist/browser/{scheduler-cQidETRd.js → scheduler-BrPFsqBd.js} +2 -2
- package/dist/browser/{select-CIJMgtRk.js → select-B_RnhgCR.js} +11 -11
- package/dist/browser/{settings-tf2xCh7a.js → settings-HK2kL5G-.js} +2 -2
- package/dist/browser/{settings-item-Dhd_mZVD.js → settings-item-DbsiuLvP.js} +7 -7
- package/dist/browser/{store-DX_d1X7a.js → store-Cn0elrBS.js} +6362 -5742
- package/dist/browser/{string-editor-CwZhPArg.js → string-editor-DSs7z8mR.js} +5 -5
- package/dist/browser/{text-field-DbPC6Ytx.js → text-field-mllDlJnp.js} +6 -6
- package/dist/browser/{theme-EiHUjgfX.js → theme-BwxA1kvi.js} +9 -9
- package/dist/browser/{ui-BCJ-P-pD.js → ui-CKpZWGxG.js} +9 -9
- package/dist/browser/{useRenderTarget-DkMzI2QA.js → useRenderTarget-Du_wr83M.js} +5 -5
- package/dist/browser/{viewport-BldgkO7x.js → viewport-Vk1E1ErO.js} +3 -3
- package/dist/esm/_misc_to_move/initHtmlHead.js +1 -1
- package/dist/esm/components/Kiosk/ShowKiosk.d.ts +1 -2
- package/dist/esm/components/Kiosk/ShowKiosk.js +1 -1
- package/dist/esm/components/Kiosk/kiosk-mode.d.ts +26 -0
- package/dist/esm/components/Kiosk/kiosk-mode.js +1 -1
- package/dist/esm/components/Map/Map.js +1 -1
- package/dist/esm/components/Map/MapCamera.js +1 -1
- package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +2 -2
- package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
- package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +17 -7
- package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -1
- package/dist/esm/components/Maplibre/utils/map-helpers.d.ts +14 -3
- package/dist/esm/components/Maplibre/utils/map-helpers.js +1 -1
- package/dist/esm/components/SearchBox.d.ts +1 -2
- package/dist/esm/components/SearchBox.js +1 -1
- package/dist/esm/load.js +11 -11
- package/dist/esm/services/url-dispatch.js +1 -1
- package/dist/esm/store/MaplibreStore.js +1 -1
- package/dist/esm/store/UIState.d.ts +49 -3
- package/dist/esm/store/UIState.js +1 -1
- package/dist/esm/store/init/init-ui.js +1 -1
- package/dist/esm/store/types.d.ts +12 -0
- package/dist/esm/tools/event-not-found.js +1 -1
- package/dist/esm/utils/brand.d.ts +18 -0
- package/dist/esm/utils/brand.js +1 -0
- package/dist/esm/utils/camera-map-settings.js +1 -1
- package/dist/esm/utils/event-head.d.ts +38 -0
- package/dist/esm/utils/event-head.js +1 -0
- package/dist/esm/utils/event-title.d.ts +19 -0
- package/dist/esm/utils/event-title.js +1 -0
- package/dist/esm/utils/is-own-domain.d.ts +12 -0
- package/dist/esm/utils/is-own-domain.js +1 -0
- package/package.json +10 -10
- package/dist/browser/event-not-found-DIS2DLhg.js +0 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as t}from"tslib";import{action as
|
|
1
|
+
import{__decorate as t}from"tslib";import{action as r,computed as o,observable as l}from"mobx";import a from"../data";import{fpGeo as n}from"../data/fpGeo";const s=import.meta.env?.VITE_EXPOFP_DISABLE_3D_TOGGLE!=="false";function d(){return typeof window>"u"||window.navigator.onLine}export default class e{constructor(i){this.mapViewMode="floorplan",this.maplibreSelected=!1,this.isOnline=d(),this.cameraPortBox=l.box(null,{deep:!1}),this.handleOnline=()=>this.setOnline(!0),this.handleOffline=()=>this.setOnline(!1),this.rootStore=i,this.mapViewMode=this.getInitialViewMode(),this.maplibreSelected=this.mapViewMode!=="floorplan",typeof window<"u"&&(window.addEventListener("online",this.handleOnline),window.addEventListener("offline",this.handleOffline))}dispose(){typeof window>"u"||(window.removeEventListener("online",this.handleOnline),window.removeEventListener("offline",this.handleOffline))}setOnline(i){this.isOnline=i}get cameraPort(){return this.cameraPortBox.get()}setCameraPort(i){this.cameraPortBox.set(i)}clearCameraPortIfCurrent(i){this.cameraPortBox.get()===i&&this.cameraPortBox.set(null)}activateMaplibre(){this.maplibreEnabled&&(this.mapViewMode=a.allow3dView&&this.mapViewMode!=="map3d"?"map3d":"map2d",this.maplibreSelected=!0)}deactivateMaplibre(){this.mapViewMode="floorplan",this.maplibreSelected=!1}get hideModeSwitchButton(){return!this.maplibreEnabled||!a.allow3dView||s||a.hideModeSwitchButton}get maplibreEnabled(){const i=this.rootStore.fp?.maplibre??window.__efpMaplibre,p=!!i?.offline&&(!!i.style||!!i.styleUrl);return this.useMaplibreMap&&!!n?.properties?.config&&(this.isOnline||p)}get useMaplibreMap(){return a.enableExperimentalMaplibre??n?.properties?.config?.type==="maplibre"}get showMaplibre(){return this.maplibreEnabled&&(this.mapViewMode==="map2d"||this.mapViewMode==="map3d")}get isMap3d(){return this.maplibreEnabled&&this.mapViewMode==="map3d"}getInitialViewMode(){return this.maplibreEnabled?this.rootStore.uiState.is3DView?"map3d":"map2d":"floorplan"}}t([l],e.prototype,"mapViewMode",void 0),t([l],e.prototype,"maplibreSelected",void 0),t([l],e.prototype,"isOnline",void 0),t([r],e.prototype,"setOnline",null),t([r],e.prototype,"setCameraPort",null),t([r],e.prototype,"clearCameraPortIfCurrent",null),t([r],e.prototype,"activateMaplibre",null),t([r],e.prototype,"deactivateMaplibre",null),t([o({keepAlive:!0})],e.prototype,"hideModeSwitchButton",null),t([o({keepAlive:!0})],e.prototype,"maplibreEnabled",null),t([o({keepAlive:!0})],e.prototype,"useMaplibreMap",null),t([o({keepAlive:!0})],e.prototype,"showMaplibre",null),t([o({keepAlive:!0})],e.prototype,"isMap3d",null);
|
|
@@ -151,7 +151,7 @@ export default class UIState {
|
|
|
151
151
|
get uiScale(): number;
|
|
152
152
|
get isGuidedToursActive(): boolean;
|
|
153
153
|
get getRouteNextFloor(): string | null;
|
|
154
|
-
|
|
154
|
+
readonly headerHeightRem = 0;
|
|
155
155
|
get headerHeightPx(): number;
|
|
156
156
|
get overlayPosition(): "bottom" | "left";
|
|
157
157
|
get overlayCollapsed(): boolean;
|
|
@@ -159,7 +159,7 @@ export default class UIState {
|
|
|
159
159
|
get overlayBottom(): boolean;
|
|
160
160
|
get overlayLeft(): boolean;
|
|
161
161
|
get overlayWidthPx(): number;
|
|
162
|
-
|
|
162
|
+
readonly wsImageHeightPx = 44;
|
|
163
163
|
get wsPaddingPx(): number;
|
|
164
164
|
get wsOccupiedHeightPx(): number;
|
|
165
165
|
get wsShown(): boolean;
|
|
@@ -168,7 +168,7 @@ export default class UIState {
|
|
|
168
168
|
get responsiveClass(): string;
|
|
169
169
|
get mapVisibleTop(): number;
|
|
170
170
|
get mapVisibleBottom(): number;
|
|
171
|
-
|
|
171
|
+
readonly mapVisibleStart = 0;
|
|
172
172
|
get searchActionsHeightPx(): number;
|
|
173
173
|
get shouldShowSearchButtons(): boolean;
|
|
174
174
|
get shouldShowMobileToggle(): boolean;
|
|
@@ -203,10 +203,56 @@ export default class UIState {
|
|
|
203
203
|
get previewMode(): boolean;
|
|
204
204
|
get viewerMode(): boolean;
|
|
205
205
|
get selectedEventItem(): EventItem | null;
|
|
206
|
+
/**
|
|
207
|
+
* How the camera moves before a host says otherwise.
|
|
208
|
+
*
|
|
209
|
+
* Both views a plan is drawn in read these, so the plan opens at the same angle and takes the
|
|
210
|
+
* same time to get there whichever view is showing.
|
|
211
|
+
*/
|
|
206
212
|
get defaultMapSettings(): MapSettings;
|
|
207
213
|
mapSettings: MapSettings;
|
|
208
214
|
setMapSettings(settings: MapSettings): void;
|
|
209
215
|
resetMapSettings(): void;
|
|
216
|
+
/**
|
|
217
|
+
* How far the camera may tilt back from top down, in degrees.
|
|
218
|
+
*
|
|
219
|
+
* MapLibre's own default, which both views are held to, so the plan tilts the same amount in
|
|
220
|
+
* either one. Not a map setting, because a host has no reason to raise or lower it.
|
|
221
|
+
*/
|
|
222
|
+
readonly maxPitch = 60;
|
|
223
|
+
/** Whether a pitch change eases rather than cuts. Both views read it. */
|
|
224
|
+
animatePitch: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* Whether the venue shows its plan in 3D, which is its `allow3dView` flag and nothing else.
|
|
227
|
+
*
|
|
228
|
+
* `MaplibreStore` picks the first view mode from it, and the tilt gesture below hangs off it, so
|
|
229
|
+
* a venue that never allows a tilted plan cannot be tilted by hand either.
|
|
230
|
+
*
|
|
231
|
+
* `hide3dMapDefault` is deliberately not read here. It asks for the flat view on load, which is a
|
|
232
|
+
* starting camera rather than a venue without 3D, and narrowing this by it takes the tilt gesture
|
|
233
|
+
* away from a venue that allows one.
|
|
234
|
+
*
|
|
235
|
+
* A plain getter, not a computed: the flag is frozen config with nothing to observe, and the map
|
|
236
|
+
* store reads this from its own constructor.
|
|
237
|
+
*/
|
|
238
|
+
get is3DView(): boolean;
|
|
239
|
+
/**
|
|
240
|
+
* Whether the user may tilt the plan by hand.
|
|
241
|
+
*
|
|
242
|
+
* The gesture only, exactly as `rollEnabled` is: a camera command still tilts the plan whatever
|
|
243
|
+
* this says, in either view, so a host may open the plan at an angle with the gesture off. The
|
|
244
|
+
* venue decides first through `is3DView`, and the `pitch` map parameter a host may pass
|
|
245
|
+
* through the URL narrows it further.
|
|
246
|
+
*
|
|
247
|
+
* `keepAlive`, because `defaultMapSettings` reads it from the constructor, where there is no
|
|
248
|
+
* reaction to observe it and the store is configured with `computedRequiresReaction`.
|
|
249
|
+
*/
|
|
250
|
+
get pitchEnabled(): boolean;
|
|
251
|
+
/**
|
|
252
|
+
* Whether the user may turn the plan: the venue's own setting, narrowed by the `roll` map
|
|
253
|
+
* parameter a host may pass through the URL.
|
|
254
|
+
*/
|
|
255
|
+
get rollEnabled(): boolean;
|
|
210
256
|
get baseQRCodeUrl(): string;
|
|
211
257
|
get viewMapOnPhoneQRCodeUrl(): string;
|
|
212
258
|
get routeQRCodeUrl(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import{Box as ot,Point as it}from"@expofp/geometry";import{action as d,computed as n,observable as a}from"mobx";import{setKioskUrlParams as st}from"../components/Kiosk/kioskUrlParam";import{mapScene as rt}from"../components/Map/scene";import{LANGUAGE_TYPE as E,LEGACY_PREVIEW_MODE_STORAGE_KEY as lt,LEGACY_UI_SCALE_STORAGE_KEY as U,LEGACY_VIEWER_MODE_STORAGE_KEY as at,MOBILE_BREAKPOINT as nt,PREVIEW_MODE_STORAGE_KEY as ht,UI_SCALE_STORAGE_KEY as H,VIEWER_MODE_STORAGE_KEY as ct,VISIBILITY_STORAGE_KEY as $}from"../constants";import k from"../data";import{svgArea as _,svgAreaExplicit as pt}from"../data/svg";import{readFreeBannerDismissed as dt}from"../tools/freeBanner";import{hasUserConsent as ut}from"../tools/gtag";import{hasHtmlTags as W}from"../tools/has-html-tags";import ft from"../tools/logger";import L from"../tools/settings";import{stripHtml as j}from"../tools/strip-html";import{remsToPixels as D}from"../utils";import X from"../utils/browser";import{getLocale as yt,getLocales as mt,t as v}from"../utils/i18n";import{isLocalStorageAvailable as B}from"../utils/localStorage";import{getResponsiveClass as gt}from"../utils/responsiveClass";import{sanitizeStr as Z}from"../utils/sanitizeText";import{fitRectIsFraming as vt,getVenueFitMarginPercent as St,resolveVenueFitRect as bt}from"../utils/scene-bounds";import{uiState as w}from".";import{BoothBase as I,RegularBooth as A,SpecialBooth as V}from"./BoothStore";import{EventItem as O}from"./EventStore";import{Exhibitor as x}from"./ExhibitorStore";import{findEntityByExternalId as It,Route as M}from"./RouteStore";import{SpeakerItem as K}from"./SpeakerStore";const xt=["dimensions25"];export default class t{setSelectedCategoryFilters(o){this.selectedCategoryFilters=o}resetCategoryFilter(){this.selectedCategoryFilters=[],this.categoryFilterOpen=!1}setSearchClearMode(o){this.searchClearMode=o}setRouteTitle(o){this.routeTitle=o}setRouteDescription(o){this.routeDescription=o}setIsMultiPointRoute(o){this.isMultiPointRoute=o}setTourTitle(o){this.tourTitle=o}setTourDescription(o){this.tourDescription=o}setIsMultiPointTour(o){this.isMultiPointTour=o}setPathwayOnlyMode(o){this.pathwayOnlyMode=o}setMultiPointTourList(o){this.list={type:"multi-point-tour",tourId:o}}get activePathwayLayers(){return this.list?.type==="multi-point-tour"?this.rootStore.toursStore.getTourById(this.list.tourId)?.layers?.map(s=>s.id)||[]:[]}get highlightedBooths(){const o=new Set(this.rootStore.exhibitorStore.highlightedByExternalIds),s=new Set(this.rootStore.boothStore.highlightedByExternalIds),i=new Set([this.rootStore.exhibitorStore.exhibitors.filter(r=>o.has(r.externalId)).flatMap(r=>r.booths.filter(l=>l instanceof A)).map(r=>r.id.toString()),this.rootStore.boothStore.booths.filter(r=>s.has(r.externalId)).map(r=>r.id.toString())].flat());if(this.list?.type==="search"&&this.list?.text?.trim().length){i.clear();const r=this.fuzzySearchItems.filter(l=>l.score===0).map(l=>l.item);r.length?F(r,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(l=>i.add(l.id.toString())):this.listBooths.forEach(l=>i.add(l.id.toString()))}if(this.list?.type==="filter"&&(i.clear(),this.list.items.flatMap(r=>r.booths.filter(l=>l instanceof A)).forEach(r=>i.add(r.id.toString()))),this.categoryFilterOpen&&this.selectedCategoryFilters.length>0?(i.clear(),this.selectedCategoryFilters.forEach(r=>{r.exhibitors.flatMap(l=>l.booths).forEach(l=>i.add(l.id.toString()))})):this.list?.type==="category"&&(i.clear(),this.list.category.exhibitors.flatMap(r=>r.booths).forEach(r=>i.add(r.id.toString()))),this.list?.type==="bookmarks"&&(i.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(r=>i.add(r.id.toString()))),this.list?.type==="visited"&&(i.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(r=>i.add(r.id.toString()))),this.list?.type==="exhibitors"){i.clear();const r=this.list.text?.toLowerCase().trim();let l=this.rootStore.exhibitorStore.exhibitors;r&&(l=l.filter(u=>u.name.toLowerCase().includes(r))),l.flatMap(u=>u.booths.filter(g=>g instanceof A)).forEach(u=>i.add(u.id.toString()))}if(this.selectedPoiTypeFilters.length>0&&(i.clear(),this.selectedPoiTypeFilters.forEach(r=>{this.rootStore.boothStore.booths.filter(l=>l.poiTypeId===r.id).forEach(l=>i.add(l.id.toString()))})),this.details instanceof M&&(i.clear(),this.details.from instanceof I&&i.add(this.details.from.id.toString()),this.details.to instanceof I&&i.add(this.details.to.id.toString()),this.details.waypoints?.forEach(r=>i.add(r.id.toString()))),this.details instanceof I&&(i.clear(),i.add(this.details.id.toString())),this.details instanceof x&&(i.clear(),this.details.booths.filter(r=>r instanceof A).forEach(r=>i.add(r.id.toString()))),this.details instanceof O){const r=this.details;if(r.boothId){i.clear();const l=this.rootStore.boothStore.booths.find(u=>u.id===r.boothId);l&&i.add(l.id.toString())}}return i}constructor(o){this.interfaceMetadata=Object.freeze([{id:"menu",className:"efp-overlay-menu",priority:80,isActive:()=>this.menu,searchBoxConfig:()=>({mode:"interface",title:v("Menu")})},{id:"exhibitor",className:"efp-overlay-exhibitor",priority:70,isActive:()=>this.details instanceof x,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"booth",className:"efp-overlay-booth",priority:70,isActive:()=>this.details instanceof I,searchBoxConfig:()=>{const s=this.details;return{mode:"details",title:s.title||s.name}}},{id:"event",className:"efp-overlay-event",priority:70,isActive:()=>this.details instanceof O,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"route",className:"efp-overlay-route",priority:70,isActive:()=>this.details instanceof M,searchBoxConfig:()=>({mode:"details",title:v("Directions")})},{id:"search",className:"efp-overlay-search",priority:60,isActive:()=>!this.details&&!this.menu&&this.list.type==="search"&&(this.rootStore.fp.alwaysShowSidebar&&!this.overlayOnDemand||this.heatmap||this.searchFocused||this.list.text.length>0||this.searchClearMode),searchBoxConfig:()=>({mode:"search",title:v("Search")})},{id:"exhibitors",className:"efp-overlay-exhibitors",priority:50,isActive:()=>this.list.type==="exhibitors"&&!this.details,searchBoxConfig:()=>({mode:"search",title:v("Exhibitors")})},{id:"filter",className:"efp-overlay-filter",priority:50,isActive:()=>this.list.type==="filter"&&!this.details,searchBoxConfig:()=>({mode:"search",title:v("Filter")})},{id:"bookmarks",className:"efp-overlay-bookmarks",priority:50,isActive:()=>this.list.type==="bookmarks"&&!this.details,searchBoxConfig:()=>({mode:"interface",title:v("Bookmarks"),badge:this.rootStore.bookmarksStore.total})},{id:"visited",className:"efp-overlay-visited",priority:50,isActive:()=>this.list.type==="visited"&&!this.details,searchBoxConfig:()=>({mode:"interface",title:v("Visited"),badge:this.rootStore.exhibitorStore.visited.length})},{id:E,className:"efp-overlay-language",priority:50,isActive:()=>this.list.type===E,searchBoxConfig:()=>({mode:"interface",title:v("Language")})},{id:"category",className:"efp-overlay-category",priority:50,isActive:()=>!w.menu&&!!w.selectedCategory,searchBoxConfig:()=>({mode:"interface",title:this.list.type==="category"&&this.list.category?.name||v("Categories")})},{id:"sessions",className:"efp-overlay-sessions",priority:50,isActive:()=>this.list.type==="sessions"&&!this.details,searchBoxConfig:()=>({mode:"search",title:v("Sessions"),subtitle:this.selectedTrack?this.selectedTrack.name:void 0})},{id:"speakers",className:"efp-overlay-speakers",priority:50,isActive:()=>this.list.type==="speakers"&&!this.details,searchBoxConfig:()=>({mode:"search",title:v("Speakers")})},{id:"speaker",className:"efp-overlay-speaker",priority:50,isActive:()=>this.details instanceof K,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"tours",className:"efp-overlay-tours",priority:50,isActive:()=>this.list.type==="tours"&&!this.details,searchBoxConfig:()=>({mode:"search",title:v("Guided Tours")})},{id:"multi-point-wayfinding",className:"efp-overlay-multi-point",priority:75,isActive:()=>!!(this.isMultiPointRoute&&this.selectedRoute&&this.list.type!=="route-planner"),searchBoxConfig:()=>({mode:"interface",title:this.routeTitle||v("Multi-point route")})},{id:"multi-point-tour",className:"efp-overlay-multi-point-tour",priority:75,isActive:()=>this.list.type==="multi-point-tour"&&!this.details,searchBoxConfig:()=>({mode:"interface",title:this.tourTitle||v("Multi-point route")})},{id:"route-planner",className:"efp-overlay-route-planner",priority:76,isActive:()=>this.list.type==="route-planner"&&(!this.details||this.details instanceof M),searchBoxConfig:()=>({mode:"interface",title:v("Route planner")})}].sort((s,i)=>i.priority-s.priority)),this.list={type:"search",text:"",focused:!1},this.details=null,this.hoveredExhibitor=null,this.hoveredBooth=null,this.zoomBy=null,this.rollReset=!1,this.moveToBooths=null,this.moveToRect=null,this.moveToRectPaddingPercent=null,this.moveToLocation=!1,this.menu=!1,this.searchFocused=!1,this.searchClearMode=!1,this.printingPdf=!1,this.screenSize=new it(window.innerWidth,window.innerHeight),this.overlayShowsAll=!1,this.centerMap=!1,this.zoomAfTransformK=1,this.activeListIndex=-1,this.devicePixelRatio=window.devicePixelRatio,this.previewExhibitor=null,this.wsStarted=!1,this.canvasStarted=!1,this.kiosk=!1,this.inIdle=!1,this.modalActive={share:!1},this.galleryActive=!1,this.hideOverlay=!1,this.searchButtonsOverride=null,this.hideCookieConsent=!!ut(),this.hideHeaderLogo=!1,this.hideLogoInBooth=!1,this.disableBookmarked=!1,this.hideLanguage=!1,this.monochrome=!1,this.heatmap=!1,this.heatmapYah=!1,this.rootElement=null,this.debugCircles=[],this.mapControlsHidden=!1,this.floorsControlHidden=!1,this.hideFreeOrDemo=!1,this.freeBannerDismissed=dt(sessionStorage),this.currentBanner=null,this.sceneDefReady=!1,this.categoryFilterOpen=!1,this.selectedCategoryFilters=[],this.selectedPoiTypeFilters=[],this.selectedTrack=null,this.subButtonsVisible=!1,this.searchBoxMode="search",this.searchBoxTitle="",this.isMultiPointRoute=!1,this.isMultiPointTour=!1,this.pathwayOnlyMode=!1,this.isOverlayScrolled=!1,this.listScrollTop=0,this.listScrollItemId=null,this.listScrollIndex=0,this.scrollPositions=new Map,this.scrollItemIds=new Map,this._customUIScale=null,this.searchFilterHeightPx=54,this.searchInputHeightPx=54,this.overlayUISizePx=390,this.overlayKioskSizePx=450,this.overlayMediumHeightRems=10,this.forceDim=!1,this.mapSettings={...this.defaultMapSettings},this.forceShowDetails=!1,this.buildRoute=!1,this.globalErrorMessages=[],this.minUIScale=.8,this.maxUIScale=1.4,this.setKioskModeEnabled=!1,this.kioskData=null,this.rootStore=o,this.initializeUIScale()}get rtl(){const o=yt();return o==="ar"||o==="he"}get noOverlay(){return this.rootStore.fp.noOverlay||this.hideOverlay}get overlayOnDemand(){return this.noOverlay&&this.searchButtonsOverride===!0}get overlayHiddenNow(){return this.noOverlay&&!(this.overlayOnDemand&&this.isOverlayOpen)}get onBoothClick(){return this.rootStore.fp.onBoothClick}get onMarkerClick(){return this.rootStore.fp.onMarkerClick}get onBookmarkClick(){return this.rootStore.fp.onBookmarkClick}get onVisitedClick(){return this.rootStore.fp.onVisitedClick}get onCategoryClick(){return this.rootStore.fp.onCategoryClick}get onDirection(){return this.rootStore.fp.onDirection}get onDetails(){return this.rootStore.fp.onDetails}get onExhibitorCustomButtonClick(){return this.rootStore.fp.onExhibitorCustomButtonClick}get onGetCoordsClick(){return this.rootStore.fp.onGetCoordsClick}get selectedExhibitor(){return this.details instanceof x?this.details:null}get selectedBooth(){return this.details instanceof I?this.details:null}get selectedCategory(){return this.list.type==="category"?this.list.category:null}get selectedRoute(){return this.details instanceof M?this.details:null}get selectedSpeaker(){return this.details instanceof K?this.details:null}get uiScale(){return this._customUIScale!==null?this._customUIScale:this.kiosk?1.2:1}get isGuidedToursActive(){return this.rootStore.toursStore.isActive}get getRouteNextFloor(){const o=this.rootStore.routeStore.pathLayers,s=this.rootStore.routeStore.currentRouteLayer?.name;if(!s)return null;const i=o.findIndex(c=>c.layer?.name===s);return i===-1?null:o[i+1]?.layer?.name??null}get headerHeightRem(){return 0}get headerHeightPx(){return D(this.headerHeightRem)}get overlayPosition(){return this.screenSize.width>nt||this.kiosk?"left":"bottom"}get overlayCollapsed(){return this.kiosk&&this.overlayPosition==="left"&&!this.searchFocused&&!this.menu&&!this.details&&!this.selectedCategory&&!this.selectedExhibitor&&this.list.type!=="bookmarks"&&this.list.type!==E&&!this.list.text?.length}get overlaySize(){return this.overlayLeft?"full":this.desiredOverlaySize}get overlayBottom(){return this.overlayPosition==="bottom"}get overlayLeft(){return this.overlayPosition==="left"}get overlayWidthPx(){return this.overlayHiddenNow?0:this.overlayLeft?this.kiosk?this.overlayKioskSizePx:this.overlayUISizePx:D(this.screenSize.width)}get wsImageHeightPx(){return 44}get wsPaddingPx(){return D(.25)}get wsOccupiedHeightPx(){return this.wsShown?this.wsImageHeightPx+this.wsPaddingPx*2:0}get wsShown(){return!this.hideHeaderLogo&&this.rootStore.exhibitorStore.advertised.length>0}get wsDesktopPosition(){return L.EXPO==="cbresupplypartner"?"bottom":"top"}get wsPosition(){return this.overlayBottom?"top":this.wsDesktopPosition}get responsiveClass(){return gt(this.screenSize.width)}get mapVisibleTop(){return(this.wsPosition==="top"?this.wsOccupiedHeightPx:0)+this.headerHeightPx}get mapVisibleBottom(){return this.overlayLeft||this.overlayHiddenNow?this.wsPosition==="bottom"?this.wsOccupiedHeightPx:0:D(this.overlayMediumHeightRems)}get mapVisibleStart(){return 0}get searchActionsHeightPx(){return this.overlayPosition==="bottom"?this.searchInputHeightPx+this.searchFilterHeightPx:this.searchInputHeightPx}get shouldShowSearchButtons(){return this.rootStore.searchButtonsStore.hasAnySearchButtons&&!this.details&&!this.menu&&![E,"filter"].includes(this.list.type)}get shouldShowMobileToggle(){const o=this.list.type==="route-planner";return this.overlayPosition==="bottom"&&(o||!this.details&&!this.menu&&this.list.type!==E&&this.list.type!=="bookmarks"&&this.list.type!=="sessions")}get mobileToggleIsListMode(){return!this.isOverlayOpen||this.overlaySize!=="full"}get canvasVisibleRectPx(){const o=this.screenSize;return ot.fromMinMax({x:w.rtl?0:this.mapVisibleStart,y:this.mapVisibleTop+this.searchActionsHeightPx},{x:w.rtl?o.width-this.mapVisibleStart:o.width,y:o.height-this.mapVisibleBottom})}get shouldShiftMapRect(){return this.overlayPosition==="left"&&(this.details||this.hasAppliedFilters||this.selectedRoute)}get hasAppliedFilters(){return this.selectedCategoryFilters.length>0||this.selectedPoiTypeFilters.length>0}get canvasVisibleRectPt(){return this.canvasVisibleRectPx.scale(this.devicePixelRatio,{x:0,y:0})}get canvasSizePt(){return this.screenSize.multiply(this.devicePixelRatio)}get shouldUseBackdrop(){if(w.overlayCollapsed)return!1;if(B&&localStorage.getItem("forcebackdrop")==="1")return!0;if(this.overlayBottom||this.selectedExhibitor?.leadingImageUrl&&!this.selectedExhibitor?.leadingImageLinkUrl)return!1;const o=X.satisfies({safari:">=13"}),s=X.satisfies({chrome:">=77"});return/(android)/i.test(navigator.userAgent)?!1:o||s&&w.canvasSizePt.height*w.canvasSizePt.width<3e6}setForceDim(o){this.forceDim=o}get dimmed(){return this.forceDim||this.pathwayOnlyMode?!0:this.highlightedBooths.size>0||this.list?.type==="search"&&this.list?.text?.trim().length>0||this.list?.type==="exhibitors"}get defaultSearchItems(){const{exhibitorStore:o,categoryStore:s,boothStore:i,heatmapStore:c}=this.rootStore;let r=o.exhibitors;const l=s.categories.filter(f=>f.exhibitors.length),u=i.booths;this.selectedPoiTypeFilters.length>0&&(r=r.filter(f=>f.booths.some(y=>this.selectedPoiTypeFilters.some(S=>y.poiTypeId===S.id))));let g=[];const C=!this.selectedCategoryFilters.length&&k.showCategories?l.filter(f=>xt.includes(L.EXPO)?!f.name.includes("/"):!0):[],T=u.filter(f=>f instanceof V);return this.selectedCategoryFilters.length>0?g=[...r]:(k.showCompaniesAndBooths&&(g=g.concat(r)),k.showOtherSpaces&&(g=g.concat(T))),this.heatmap?[...r,...u].sort((y,S)=>c.getClicksByType(S)-c.getClicksByType(y)):this.heatmapYah?c.heatmapData?.yah?.sort((f,y)=>c.getClicksByType(y)-c.getClicksByType(f))||[]:r.length===0?u:[...C,...g.sort((f,y)=>{const S=f instanceof x&&f.featured!==void 0,z=y instanceof x&&y.featured!==void 0;if(S!==z)return S?-1:1;const R=f instanceof V&&f.title?f.title:f.name,N=y instanceof V&&y.title?y.title:y.name;return R.localeCompare(N,void 0,{sensitivity:"base",numeric:!0})})]}get searchItems(){if(this.list.type!=="search")return[];const o=this.list.text?.trim().toLowerCase()||"",{exhibitorStore:s,boothStore:i,eventStore:c,speakerStore:r,heatmapStore:l}=this.rootStore;let u=s.exhibitors;const g=i.booths,C=c.eventItems,T=r.speakers;if(this.selectedCategoryFilters.length>0&&(u=u.filter(h=>this.selectedCategoryFilters.some(p=>h.categories.some(m=>m.id===p.id)))),this.selectedPoiTypeFilters.length>0&&(u=u.filter(h=>h.booths.some(p=>this.selectedPoiTypeFilters.some(m=>p.poiTypeId===m.id)))),!o)return this.defaultSearchItems;const f=[o.replace(/&[^&=]+=[^&]+/g,"")];if(this.heatmapYah)return(l.heatmapData.yah??[]).filter(p=>Number.isNaN(Number(o))?p:p.viewCount>=Number(o)).sort((p,m)=>l.getClicksByType(m)-l.getClicksByType(p));const y=[],S=new Set,z=new Set,R=new Set,N=new Set;function G(h){return h?h.replace(/[!@#$%^*\-.,()^#$%:?_+'"/]/g," ").replace(/\s\s+/g," "):""}function b(h,p){return!h||!p?!1:G(h).toLowerCase().includes(G(p).toLowerCase())}function Y(h,p){return h?b(h,p)||b(k.levelTerm+" "+h,p):!1}u.forEach(h=>{f.some(p=>b(h.name,p)||h.booths.some(m=>!p&&b(m.name,p)||Y(m.layer?.name??null,p)))&&S.add(h)}),this.selectedCategoryFilters.length>0&&g.forEach(h=>{(this.heatmap||!(h instanceof A)||!Array.from(S).find(m=>m.booths.includes(h)))&&f.some(m=>b(h.title||"",m)||b(h.name,m)||b(h.fullName,m)||Y(h.layer?.name??null,m))&&z.add(h)});const q=C,tt=T;if(q.forEach(h=>{f.some(p=>b(h.name||"",p)||b(h.description||"",p))&&R.add(h)}),tt.forEach(h=>{f.some(p=>b(h.name,p)||b(h.company,p)||b(h.jobTitle,p))&&N.add(h)}),y.push(...R),y.push(...S),this.heatmap)return y.sort((h,p)=>l.getClicksByType(p)-l.getClicksByType(h));const et=new Map(y.map(h=>[h.id,h]));return y.map(h=>{if(!h.name)return null;const p=Z(h instanceof I&&h.fullName.toLowerCase()||h.name.toLowerCase()),m=p.indexOf(Z(o));if(m===-1)return null;const Q={id:h.id,position:m,lowerCaseName:p,featured:!1};return h instanceof x&&(Q.featured=h.featured),Q}).filter(h=>!!h).sort((h,p)=>(h.featured||p.featured)&&h.featured!==p.featured?h.featured?-1:1:h.position!==p.position?h.position-p.position:h.lowerCaseName.localeCompare(p.lowerCaseName)||String(h.id).localeCompare(String(p.id))).map(({id:h})=>et.get(h)).filter(h=>!!h)}get searchList(){return[...this.rootStore.eventStore.eventItems,...this.rootStore.speakerStore.speakers,...this.rootStore.categoryStore.categories.filter(o=>o.exhibitors.length),...this.rootStore.exhibitorStore.exhibitors,...this.rootStore.boothStore.booths]}get foundInDescription(){if(this.list?.type!=="search")return[];const o=this.list?.text?.trim().toLowerCase();if(!o)return[];const s=this.fuzzySearchItems.map(({item:l})=>l),i=new Set(s.map(l=>l.name)),c=this.categoryFilteredSearchList.filter(l=>!i.has(l.name)),r=[];for(const l of c){const u=J(l);if(!u)continue;const C=(W(u)?j(u):u).toLowerCase().indexOf(o);C!==-1&&r.push({item:l,pos:C})}return r.sort((l,u)=>l.pos-u.pos),r.map(l=>l.item)}get foundInDescriptionStruct(){const o={};if(this.list?.type!=="search")return o;const s=this.list?.text?.trim().toLowerCase();return this.foundInDescription.forEach(i=>{let c=J(i);if(!c)return;W(c)&&(c=j(c));const r=c.toLowerCase().indexOf(s);if(r===-1)return;const l=3,u=r>l?r-l:0,g=c.substring(u).trim();o[i.id]=r>0?`...${g}`:g}),o}get categoryFilteredSearchList(){return this.selectedCategoryFilters.length===0?this.searchList:this.searchList.filter(o=>o instanceof x&&this.selectedCategoryFilters.some(s=>o.categories.some(i=>i.id===s.id)))}get fuzzySearchItems(){if(this.list?.type!=="search")return[];const o=this.list?.text?.trim().toLowerCase();if(!o)return this.defaultSearchItems.map(r=>({item:r,score:0,matches:[]}));const s=this.rootStore.fuzzySearchEngineStore.search(this.categoryFilteredSearchList,o),i=[],c=[];for(const r of s){const l=r.item,u=l.entity.type,g=u==="booth"?l:null,C=u==="exhibitor"?l:null,T=[l.name?.toLowerCase()??"",g?.title?.toLowerCase()??"",g?.fullName?.toLowerCase()??"",...C?.booths?.map(y=>y.name?.toLowerCase()??"")??[]];let f=1/0;for(const y of T){const S=y.indexOf(o);S!==-1&&S<f&&(f=S)}f!==1/0?i.push({result:{item:l,score:0},pos:f}):c.push(r)}return i.sort((r,l)=>r.pos-l.pos),[...i.map(r=>r.result),...c]}get listItems(){if(this.details instanceof M&&this.list.type!=="multi-point-tour")return[this.details.from,this.details.to].filter(o=>o instanceof I);switch(this.list.type){case"search":{let o=!(this.heatmap||this.heatmapYah)&&this.rootStore.fuzzySearchEngineStore.engine?this.fuzzySearchItems.map(({item:s})=>s).concat(this.foundInDescription):this.searchItems;return o=o.filter(s=>s.entity.type==="booth"?!s.exhibitors.length:!0),this.hasAppliedFilters?o.filter(s=>{if(this.selectedCategoryFilters.length>0&&s instanceof x&&!this.selectedCategoryFilters.some(i=>s.categories.some(c=>c.id===i.id)))return!1;if(this.selectedPoiTypeFilters.length>0){if(s instanceof x&&!s.booths.some(i=>this.selectedPoiTypeFilters.some(c=>i.poiTypeId===c.id))||s instanceof I&&!this.selectedPoiTypeFilters.some(i=>s.poiTypeId===i.id))return!1;if(s instanceof O&&s.boothId){const i=this.rootStore.boothStore.booths.find(c=>c.id===s.boothId);if(!i||!this.selectedPoiTypeFilters.some(c=>i.poiTypeId===c.id))return!1}}return!0}):o}case"bookmarks":return[...this.rootStore.exhibitorStore.bookmarked,...this.rootStore.eventStore.bookmarked,...this.rootStore.speakerStore.bookmarked,...this.rootStore.boothStore.booths.filter(o=>o.exhibitors.length===0&&o.bookmarkedDirectly)];case"visited":return[...this.rootStore.exhibitorStore.visited,...this.rootStore.eventStore.visited];case"category":return this.list.category.exhibitors;case E:return mt();case"filter":return this.list.items;case"sessions":return this.rootStore.eventStore.eventItems;case"exhibitors":{const o=this.rootStore.exhibitorStore.exhibitors,s=this.list.text?.toLowerCase().trim();return s?o.filter(i=>i.name.toLowerCase().includes(s)):o}case"multi-point-tour":{const o=this.rootStore.toursStore.getTourById(this.list.tourId);return o?!o.points||o.points.length===0?[]:o.points.map(s=>{const i=parseInt(s);if(!isNaN(i)){const r=this.rootStore.boothStore.boothById.get(i);if(r)return r}return It(s)?.entity||null}).filter(s=>!!s):[]}case"route-planner":return this.rootStore.routePlannerStore.resolvedBooths}throw new Error("Unknown list.type")}get listBooths(){return F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems)}get selectedBooths(){let o=[];this.selectedExhibitor?o=this.selectedExhibitor.booths:this.selectedBooth&&(o=[this.selectedBooth]);const s=this.selectedRoute,i=[s?.from,s?.to,...s?.waypoints??[]].filter(c=>c instanceof I);return o.push(...i),new Set(o)}get hoveredBooths(){let o=[];return this.hoveredBooth?o=[this.hoveredBooth]:this.hoveredExhibitor&&(o=this.hoveredExhibitor.booths),new Set(o)}get visibility(){return{controls:!this.mapControlsHidden,levels:!this.floorsControlHidden,header:this.wsShown,overlay:!this.hideOverlay,searchButtons:this.searchButtonsOverride??!this.hideOverlay}}setVisibility(o){const s=["controls","levels","header","overlay"],i={...s.reduce((r,l)=>({...r,[l]:!0}),{}),...s.filter(r=>r in o).reduce((r,l)=>({...r,[l]:o[l]}),{})},c=typeof o.searchButtons=="boolean"?o.searchButtons:null;B&&(Object.values(i).every(Boolean)&&c===null?localStorage.removeItem($):localStorage.setItem($,JSON.stringify(c===null?i:{...i,searchButtons:c}))),this.mapControlsHidden=!i.controls,this.floorsControlHidden=!i.levels,this.hideHeaderLogo=!i.header,this.hideFreeOrDemo=!i.header,this.hideOverlay=!i.overlay,this.searchButtonsOverride=c}toggleMapOverlay(){this.overlayPosition==="bottom"&&this.overlaySize==="full"?this.desiredOverlaySize="medium":this.overlayPosition==="bottom"&&this.overlaySize!=="full"&&(this.desiredOverlaySize="full")}changeZoom(o){this.zoomBy=o}zoomIn(){this.changeZoom(1.5)}zoomOut(){this.changeZoom(.66)}fitBounds(){const{rect:o,source:s}=bt({layerViewbox:this.rootStore.layerStore.viewboxRectangle,explicitArea:pt?_:null,layerRectangle:this.rootStore.layerStore.rectangle,sceneDef:rt()??null,svgArea:_});this.moveToRect=o,this.moveToRectPaddingPercent=vt(s)?0:St(o,_),this.rollReset=!0}get previewMode(){const o=B?localStorage.getItem(ht)??localStorage.getItem(lt):null;return o==="true"||o==="1"||this.rootStore.fp.previewMode}get viewerMode(){const o=B?localStorage.getItem(ct)??localStorage.getItem(at):null;return o==="true"||o==="1"||this.rootStore.fp.viewerMode}get selectedEventItem(){return this.details instanceof O?this.details:null}get defaultMapSettings(){return{zoomtime:500,center:void 0,centerxy:void 0,z:void 0,bearing:0,roll:1}}setMapSettings(o){const s={};for(const i of Object.keys(o)){const c=o[i];c!=null&&(i==="zoomtime"?s.zoomtime=Math.min(Math.max(o.zoomtime||this.mapSettings.zoomtime||0,500),5e3):Object.assign(s,{[i]:c}))}this.mapSettings={...this.mapSettings,...s}}resetMapSettings(){this.mapSettings={...this.defaultMapSettings}}get baseQRCodeUrl(){return`https://${L.EXPO}.expofp.com`}get viewMapOnPhoneQRCodeUrl(){if(k?.customKioskQrCodeUrl)return k.customKioskQrCodeUrl;const o=new URL(this.baseQRCodeUrl);o.search=window.location.search;const s=o.toString();return console.log("View Map On Phone QR Code Url",s),s}get routeQRCodeUrl(){const o=new URL(this.baseQRCodeUrl),s=this.selectedRoute?.from,i=this.selectedRoute?.to,c=s instanceof I?s.slug:"",r=i instanceof I?i.slug:"";o.search=`?route%3A${encodeURIComponent(r)}%3A${encodeURIComponent(c)}%3Afalse`,st(o.searchParams,this.kioskData);const l=o.toString();return console.log("Route QR Code Url",l),l}get isFeaturedExhibitorActive(){return this.details instanceof x&&!!this.details.featured}get activeInterfaceData(){for(const o of this.interfaceMetadata)if(o.isActive())return o;return null}get activeInterfaceId(){return this.activeInterfaceData?.id}get searchBoxConfig(){const o=this.activeInterfaceData;return!o||!o.searchBoxConfig?{mode:"search",title:"",subtitle:void 0,badge:void 0,icon:void 0}:o.searchBoxConfig()||{mode:"search",title:"",subtitle:void 0,badge:void 0,icon:void 0}}get searchBoxActions(){return this.activeInterfaceData?.actions?.()??[]}get overlayInterfaceClasses(){const o=[],s=this.activeInterfaceData;return s&&(o.push(s.className),s.additionalClasses&&o.push(...s.additionalClasses())),this.details&&o.push("overlay-has-details"),this.list.type&&o.push(`overlay-list-${this.list.type}`),this.isFeaturedExhibitorActive&&o.push("overlay-exhibitor-featured"),o}get isOverlayOpen(){return this.noOverlay&&!this.overlayOnDemand?!1:this.activeInterfaceData!==null}setOverlayScrolled(o){this.isOverlayScrolled=o}setListScrollTop(o,s){this.listScrollTop=s,this.scrollPositions.set(o,s)}setListScrollItemId(o,s){this.listScrollItemId=s,this.scrollItemIds.set(o,s)}getListScrollTop(o){return this.scrollPositions.get(o)||0}getListScrollItemId(o){return this.scrollItemIds.get(o)||null}clearListScroll(o){this.scrollPositions.delete(o),this.scrollItemIds.delete(o),this.list.type===o&&(this.listScrollTop=0,this.listScrollItemId=null)}get bannerType(){return this.hideFreeOrDemo||this.heatmap?null:L.EXPO==="expo"?"demo":k.expoFpAd||k.isTrial?"free":null}get isBannerVisible(){return this.bannerType!==null}setCurrentBanner(o){this.currentBanner=o}setForceShowDetails(o){this.forceShowDetails=o}get showRouteInstantly(){return!!(this.kiosk&&!this.forceShowDetails)}startBuildRoute(){this.rootStore.selectSearch(""),this.mapControlsHidden=!0,this.floorsControlHidden=!0,this.hideHeaderLogo=!0,this.hideFreeOrDemo=!0,this.hideOverlay=!0,this.hideCookieConsent=!0,this.buildRoute=!0}setGlobalErrorMessage(o){this.globalErrorMessages.push(o)}popGlobalErrorMessage(){this.globalErrorMessages.pop()}initializeUIScale(){if(new URLSearchParams(window.location.search).get("kiosk")!=="0"&&B){const s=localStorage.getItem(H)??localStorage.getItem(U);if(s){const i=parseFloat(s);!isNaN(i)&&i>=.8&&i<=1.4&&(this._customUIScale=i)}}}setUIScale(o,s=!0){if(o===void 0||isNaN(o)||o<this.minUIScale||o>this.maxUIScale){ft.warn(`Invalid ui-scale value: ${o}. Must be between ${this.minUIScale} and ${this.maxUIScale}.`);return}this._customUIScale=o,s&&B&&(localStorage.setItem(H,o.toString()),localStorage.removeItem(U))}resetUIScale(){this._customUIScale=null,B&&(localStorage.removeItem(H),localStorage.removeItem(U))}enableSetKioskMode(o){this.setKioskModeEnabled=o}setKioskData(o){this.kioskData=o}}e([a.struct],t.prototype,"list",void 0),e([a.ref],t.prototype,"details",void 0),e([a.ref],t.prototype,"hoveredExhibitor",void 0),e([a.ref],t.prototype,"hoveredBooth",void 0),e([a],t.prototype,"zoomBy",void 0),e([a],t.prototype,"rollReset",void 0),e([a],t.prototype,"moveToBooths",void 0),e([a],t.prototype,"moveToRect",void 0),e([a],t.prototype,"moveToRectPaddingPercent",void 0),e([a],t.prototype,"moveToLocation",void 0),e([a],t.prototype,"menu",void 0),e([a],t.prototype,"searchFocused",void 0),e([a],t.prototype,"searchClearMode",void 0),e([a],t.prototype,"printingPdf",void 0),e([a.struct],t.prototype,"screenSize",void 0),e([a],t.prototype,"desiredOverlaySize",void 0),e([a],t.prototype,"overlayShowsAll",void 0),e([a],t.prototype,"centerMap",void 0),e([a],t.prototype,"zoomAfTransformK",void 0),e([a],t.prototype,"activeListIndex",void 0),e([a],t.prototype,"devicePixelRatio",void 0),e([a],t.prototype,"wsStarted",void 0),e([a],t.prototype,"canvasStarted",void 0),e([a],t.prototype,"kiosk",void 0),e([a],t.prototype,"inIdle",void 0),e([a],t.prototype,"modalActive",void 0),e([a],t.prototype,"galleryActive",void 0),e([a],t.prototype,"hideOverlay",void 0),e([a],t.prototype,"searchButtonsOverride",void 0),e([a],t.prototype,"hideCookieConsent",void 0),e([a],t.prototype,"hideHeaderLogo",void 0),e([a],t.prototype,"hideLogoInBooth",void 0),e([a],t.prototype,"disableBookmarked",void 0),e([a],t.prototype,"hideLanguage",void 0),e([a],t.prototype,"monochrome",void 0),e([a],t.prototype,"heatmap",void 0),e([a],t.prototype,"heatmapYah",void 0),e([a],t.prototype,"debugCircles",void 0),e([a],t.prototype,"mapControlsHidden",void 0),e([a],t.prototype,"floorsControlHidden",void 0),e([a],t.prototype,"hideFreeOrDemo",void 0),e([a],t.prototype,"freeBannerDismissed",void 0),e([a],t.prototype,"currentBanner",void 0),e([a],t.prototype,"sceneDefReady",void 0),e([a],t.prototype,"categoryFilterOpen",void 0),e([a],t.prototype,"selectedCategoryFilters",void 0),e([a],t.prototype,"selectedPoiTypeFilters",void 0),e([a],t.prototype,"selectedTrack",void 0),e([a],t.prototype,"subButtonsVisible",void 0),e([a],t.prototype,"searchBoxMode",void 0),e([a],t.prototype,"searchBoxTitle",void 0),e([a],t.prototype,"searchBoxSubtitle",void 0),e([a],t.prototype,"routeTitle",void 0),e([a],t.prototype,"routeDescription",void 0),e([a],t.prototype,"isMultiPointRoute",void 0),e([a],t.prototype,"tourTitle",void 0),e([a],t.prototype,"tourDescription",void 0),e([a],t.prototype,"isMultiPointTour",void 0),e([a],t.prototype,"pathwayOnlyMode",void 0),e([a],t.prototype,"isOverlayScrolled",void 0),e([a],t.prototype,"listScrollTop",void 0),e([a],t.prototype,"listScrollItemId",void 0),e([a],t.prototype,"listScrollIndex",void 0),e([a],t.prototype,"_customUIScale",void 0),e([d],t.prototype,"setSelectedCategoryFilters",null),e([d],t.prototype,"resetCategoryFilter",null),e([d],t.prototype,"setSearchClearMode",null),e([d],t.prototype,"setRouteTitle",null),e([d],t.prototype,"setRouteDescription",null),e([d],t.prototype,"setIsMultiPointRoute",null),e([d],t.prototype,"setTourTitle",null),e([d],t.prototype,"setTourDescription",null),e([d],t.prototype,"setIsMultiPointTour",null),e([d],t.prototype,"setPathwayOnlyMode",null),e([d],t.prototype,"setMultiPointTourList",null),e([n],t.prototype,"activePathwayLayers",null),e([n],t.prototype,"highlightedBooths",null),e([n],t.prototype,"rtl",null),e([n({keepAlive:!0})],t.prototype,"noOverlay",null),e([n],t.prototype,"overlayOnDemand",null),e([n],t.prototype,"overlayHiddenNow",null),e([n({keepAlive:!0})],t.prototype,"selectedExhibitor",null),e([n({keepAlive:!0})],t.prototype,"selectedBooth",null),e([n({keepAlive:!0})],t.prototype,"selectedCategory",null),e([n({keepAlive:!0})],t.prototype,"selectedRoute",null),e([n({keepAlive:!0})],t.prototype,"selectedSpeaker",null),e([n({keepAlive:!0})],t.prototype,"uiScale",null),e([n({keepAlive:!0})],t.prototype,"isGuidedToursActive",null),e([n({keepAlive:!0})],t.prototype,"getRouteNextFloor",null),e([n],t.prototype,"headerHeightRem",null),e([n],t.prototype,"headerHeightPx",null),e([n],t.prototype,"overlayPosition",null),e([n],t.prototype,"overlayCollapsed",null),e([n],t.prototype,"overlaySize",null),e([n],t.prototype,"overlayBottom",null),e([n],t.prototype,"overlayLeft",null),e([n],t.prototype,"overlayWidthPx",null),e([n({keepAlive:!0})],t.prototype,"wsImageHeightPx",null),e([n],t.prototype,"wsPaddingPx",null),e([n],t.prototype,"wsOccupiedHeightPx",null),e([n({keepAlive:!0})],t.prototype,"wsShown",null),e([n],t.prototype,"wsDesktopPosition",null),e([n],t.prototype,"wsPosition",null),e([n],t.prototype,"responsiveClass",null),e([n],t.prototype,"mapVisibleTop",null),e([n],t.prototype,"mapVisibleBottom",null),e([n],t.prototype,"mapVisibleStart",null),e([n],t.prototype,"searchActionsHeightPx",null),e([n],t.prototype,"shouldShowSearchButtons",null),e([n],t.prototype,"shouldShowMobileToggle",null),e([n],t.prototype,"mobileToggleIsListMode",null),e([n],t.prototype,"canvasVisibleRectPx",null),e([n],t.prototype,"shouldShiftMapRect",null),e([n],t.prototype,"hasAppliedFilters",null),e([n],t.prototype,"canvasVisibleRectPt",null),e([n],t.prototype,"canvasSizePt",null),e([n({keepAlive:!0})],t.prototype,"shouldUseBackdrop",null),e([a],t.prototype,"forceDim",void 0),e([d],t.prototype,"setForceDim",null),e([n],t.prototype,"dimmed",null),e([n],t.prototype,"defaultSearchItems",null),e([n],t.prototype,"searchItems",null),e([n],t.prototype,"searchList",null),e([n],t.prototype,"foundInDescription",null),e([n],t.prototype,"foundInDescriptionStruct",null),e([n],t.prototype,"categoryFilteredSearchList",null),e([n],t.prototype,"fuzzySearchItems",null),e([n],t.prototype,"listItems",null),e([n({keepAlive:!0})],t.prototype,"listBooths",null),e([n({keepAlive:!0})],t.prototype,"selectedBooths",null),e([n({keepAlive:!0})],t.prototype,"hoveredBooths",null),e([n],t.prototype,"visibility",null),e([d],t.prototype,"setVisibility",null),e([d],t.prototype,"toggleMapOverlay",null),e([d],t.prototype,"changeZoom",null),e([d],t.prototype,"zoomIn",null),e([d],t.prototype,"zoomOut",null),e([d],t.prototype,"fitBounds",null),e([n({keepAlive:!0})],t.prototype,"selectedEventItem",null),e([a],t.prototype,"mapSettings",void 0),e([d],t.prototype,"setMapSettings",null),e([d],t.prototype,"resetMapSettings",null),e([n],t.prototype,"baseQRCodeUrl",null),e([n],t.prototype,"viewMapOnPhoneQRCodeUrl",null),e([n],t.prototype,"routeQRCodeUrl",null),e([n],t.prototype,"isFeaturedExhibitorActive",null),e([n],t.prototype,"activeInterfaceData",null),e([n],t.prototype,"activeInterfaceId",null),e([n],t.prototype,"searchBoxConfig",null),e([n],t.prototype,"searchBoxActions",null),e([n],t.prototype,"overlayInterfaceClasses",null),e([n],t.prototype,"isOverlayOpen",null),e([d],t.prototype,"setOverlayScrolled",null),e([d],t.prototype,"setListScrollTop",null),e([d],t.prototype,"setListScrollItemId",null),e([d],t.prototype,"getListScrollTop",null),e([d],t.prototype,"getListScrollItemId",null),e([d],t.prototype,"clearListScroll",null),e([n],t.prototype,"bannerType",null),e([n],t.prototype,"isBannerVisible",null),e([d],t.prototype,"setCurrentBanner",null),e([a],t.prototype,"forceShowDetails",void 0),e([d],t.prototype,"setForceShowDetails",null),e([n],t.prototype,"showRouteInstantly",null),e([a],t.prototype,"buildRoute",void 0),e([d],t.prototype,"startBuildRoute",null),e([a],t.prototype,"globalErrorMessages",void 0),e([d],t.prototype,"setGlobalErrorMessage",null),e([d],t.prototype,"popGlobalErrorMessage",null),e([d],t.prototype,"initializeUIScale",null),e([d],t.prototype,"setUIScale",null),e([d],t.prototype,"resetUIScale",null),e([a],t.prototype,"setKioskModeEnabled",void 0),e([d],t.prototype,"enableSetKioskMode",null),e([a],t.prototype,"kioskData",void 0),e([d],t.prototype,"setKioskData",null);function J(P){return"description"in P&&typeof P.description=="string"?P.description:void 0}function F(P,o,s=[]){const i=[];return P.forEach(c=>{if(c instanceof x)i.push(...c.booths);else if(c instanceof I)i.push(c);else if(c instanceof O){const r=o.find(l=>l.id===c.boothId);c.boothId&&r&&i.push(r)}else c instanceof K&&s.filter(r=>r.speakers.some(l=>l.id===c.id)&&r.boothId).forEach(r=>{const l=o.find(u=>u.id===r.boothId);l&&i.push(l)})}),new Set(i.filter(Boolean))}
|
|
1
|
+
import{__decorate as e}from"tslib";import{Box as ot,Point as it}from"@expofp/geometry";import{action as d,computed as n,observable as a}from"mobx";import{setKioskUrlParams as st}from"../components/Kiosk/kioskUrlParam";import{mapScene as rt}from"../components/Map/scene";import{LANGUAGE_TYPE as E,LEGACY_PREVIEW_MODE_STORAGE_KEY as lt,LEGACY_UI_SCALE_STORAGE_KEY as U,LEGACY_VIEWER_MODE_STORAGE_KEY as at,MOBILE_BREAKPOINT as nt,PREVIEW_MODE_STORAGE_KEY as ht,UI_SCALE_STORAGE_KEY as H,VIEWER_MODE_STORAGE_KEY as ct,VISIBILITY_STORAGE_KEY as $}from"../constants";import C from"../data";import{svgArea as _,svgAreaExplicit as pt}from"../data/svg";import{readFreeBannerDismissed as dt}from"../tools/freeBanner";import{hasUserConsent as ut}from"../tools/gtag";import{hasHtmlTags as W}from"../tools/has-html-tags";import ft from"../tools/logger";import L from"../tools/settings";import{stripHtml as j}from"../tools/strip-html";import{remsToPixels as D}from"../utils";import X from"../utils/browser";import{getLocale as yt,getLocales as mt,t as S}from"../utils/i18n";import{isLocalStorageAvailable as w}from"../utils/localStorage";import{getResponsiveClass as gt}from"../utils/responsiveClass";import{sanitizeStr as Z}from"../utils/sanitizeText";import{fitRectIsFraming as St,getVenueFitMarginPercent as vt,resolveVenueFitRect as bt}from"../utils/scene-bounds";import{uiState as B}from".";import{BoothBase as I,RegularBooth as A,SpecialBooth as V}from"./BoothStore";import{EventItem as O}from"./EventStore";import{Exhibitor as x}from"./ExhibitorStore";import{findEntityByExternalId as It,Route as M}from"./RouteStore";import{SpeakerItem as K}from"./SpeakerStore";const xt=["dimensions25"];export default class t{setSelectedCategoryFilters(o){this.selectedCategoryFilters=o}resetCategoryFilter(){this.selectedCategoryFilters=[],this.categoryFilterOpen=!1}setSearchClearMode(o){this.searchClearMode=o}setRouteTitle(o){this.routeTitle=o}setRouteDescription(o){this.routeDescription=o}setIsMultiPointRoute(o){this.isMultiPointRoute=o}setTourTitle(o){this.tourTitle=o}setTourDescription(o){this.tourDescription=o}setIsMultiPointTour(o){this.isMultiPointTour=o}setPathwayOnlyMode(o){this.pathwayOnlyMode=o}setMultiPointTourList(o){this.list={type:"multi-point-tour",tourId:o}}get activePathwayLayers(){return this.list?.type==="multi-point-tour"?this.rootStore.toursStore.getTourById(this.list.tourId)?.layers?.map(s=>s.id)||[]:[]}get highlightedBooths(){const o=new Set(this.rootStore.exhibitorStore.highlightedByExternalIds),s=new Set(this.rootStore.boothStore.highlightedByExternalIds),i=new Set([...this.rootStore.exhibitorStore.exhibitors.filter(r=>o.has(r.externalId)).flatMap(r=>r.booths.filter(l=>l instanceof A)).map(r=>r.id.toString()),...this.rootStore.boothStore.booths.filter(r=>s.has(r.externalId)).map(r=>r.id.toString())]);if(this.list?.type==="search"&&this.list?.text?.trim().length){i.clear();const r=this.fuzzySearchItems.filter(l=>l.score===0).map(l=>l.item);r.length?F(r,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(l=>i.add(l.id.toString())):this.listBooths.forEach(l=>i.add(l.id.toString()))}if(this.list?.type==="filter"&&(i.clear(),this.list.items.flatMap(r=>r.booths.filter(l=>l instanceof A)).forEach(r=>i.add(r.id.toString()))),this.categoryFilterOpen&&this.selectedCategoryFilters.length>0?(i.clear(),this.selectedCategoryFilters.forEach(r=>{r.exhibitors.flatMap(l=>l.booths).forEach(l=>i.add(l.id.toString()))})):this.list?.type==="category"&&(i.clear(),this.list.category.exhibitors.flatMap(r=>r.booths).forEach(r=>i.add(r.id.toString()))),this.list?.type==="bookmarks"&&(i.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(r=>i.add(r.id.toString()))),this.list?.type==="visited"&&(i.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(r=>i.add(r.id.toString()))),this.list?.type==="exhibitors"){i.clear();const r=this.list.text?.toLowerCase().trim();let l=this.rootStore.exhibitorStore.exhibitors;r&&(l=l.filter(u=>u.name.toLowerCase().includes(r))),l.flatMap(u=>u.booths.filter(g=>g instanceof A)).forEach(u=>i.add(u.id.toString()))}if(this.selectedPoiTypeFilters.length>0&&(i.clear(),this.selectedPoiTypeFilters.forEach(r=>{this.rootStore.boothStore.booths.filter(l=>l.poiTypeId===r.id).forEach(l=>i.add(l.id.toString()))})),this.details instanceof M&&(i.clear(),this.details.from instanceof I&&i.add(this.details.from.id.toString()),this.details.to instanceof I&&i.add(this.details.to.id.toString()),this.details.waypoints?.forEach(r=>i.add(r.id.toString()))),this.details instanceof I&&(i.clear(),i.add(this.details.id.toString())),this.details instanceof x&&(i.clear(),this.details.booths.filter(r=>r instanceof A).forEach(r=>i.add(r.id.toString()))),this.details instanceof O){const r=this.details;if(r.boothId){i.clear();const l=this.rootStore.boothStore.booths.find(u=>u.id===r.boothId);l&&i.add(l.id.toString())}}return i}constructor(o){this.interfaceMetadata=Object.freeze([{id:"menu",className:"efp-overlay-menu",priority:80,isActive:()=>this.menu,searchBoxConfig:()=>({mode:"interface",title:S("Menu")})},{id:"exhibitor",className:"efp-overlay-exhibitor",priority:70,isActive:()=>this.details instanceof x,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"booth",className:"efp-overlay-booth",priority:70,isActive:()=>this.details instanceof I,searchBoxConfig:()=>{const s=this.details;return{mode:"details",title:s.title||s.name}}},{id:"event",className:"efp-overlay-event",priority:70,isActive:()=>this.details instanceof O,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"route",className:"efp-overlay-route",priority:70,isActive:()=>this.details instanceof M,searchBoxConfig:()=>({mode:"details",title:S("Directions")})},{id:"search",className:"efp-overlay-search",priority:60,isActive:()=>!this.details&&!this.menu&&this.list.type==="search"&&(this.rootStore.fp.alwaysShowSidebar&&!this.overlayOnDemand||this.heatmap||this.searchFocused||this.list.text.length>0||this.searchClearMode),searchBoxConfig:()=>({mode:"search",title:S("Search")})},{id:"exhibitors",className:"efp-overlay-exhibitors",priority:50,isActive:()=>this.list.type==="exhibitors"&&!this.details,searchBoxConfig:()=>({mode:"search",title:S("Exhibitors")})},{id:"filter",className:"efp-overlay-filter",priority:50,isActive:()=>this.list.type==="filter"&&!this.details,searchBoxConfig:()=>({mode:"search",title:S("Filter")})},{id:"bookmarks",className:"efp-overlay-bookmarks",priority:50,isActive:()=>this.list.type==="bookmarks"&&!this.details,searchBoxConfig:()=>({mode:"interface",title:S("Bookmarks"),badge:this.rootStore.bookmarksStore.total})},{id:"visited",className:"efp-overlay-visited",priority:50,isActive:()=>this.list.type==="visited"&&!this.details,searchBoxConfig:()=>({mode:"interface",title:S("Visited"),badge:this.rootStore.exhibitorStore.visited.length})},{id:E,className:"efp-overlay-language",priority:50,isActive:()=>this.list.type===E,searchBoxConfig:()=>({mode:"interface",title:S("Language")})},{id:"category",className:"efp-overlay-category",priority:50,isActive:()=>!B.menu&&!!B.selectedCategory,searchBoxConfig:()=>({mode:"interface",title:this.list.type==="category"&&this.list.category?.name||S("Categories")})},{id:"sessions",className:"efp-overlay-sessions",priority:50,isActive:()=>this.list.type==="sessions"&&!this.details,searchBoxConfig:()=>({mode:"search",title:S("Sessions"),subtitle:this.selectedTrack?this.selectedTrack.name:void 0})},{id:"speakers",className:"efp-overlay-speakers",priority:50,isActive:()=>this.list.type==="speakers"&&!this.details,searchBoxConfig:()=>({mode:"search",title:S("Speakers")})},{id:"speaker",className:"efp-overlay-speaker",priority:50,isActive:()=>this.details instanceof K,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"tours",className:"efp-overlay-tours",priority:50,isActive:()=>this.list.type==="tours"&&!this.details,searchBoxConfig:()=>({mode:"search",title:S("Guided Tours")})},{id:"multi-point-wayfinding",className:"efp-overlay-multi-point",priority:75,isActive:()=>!!(this.isMultiPointRoute&&this.selectedRoute&&this.list.type!=="route-planner"),searchBoxConfig:()=>({mode:"interface",title:this.routeTitle||S("Multi-point route")})},{id:"multi-point-tour",className:"efp-overlay-multi-point-tour",priority:75,isActive:()=>this.list.type==="multi-point-tour"&&!this.details,searchBoxConfig:()=>({mode:"interface",title:this.tourTitle||S("Multi-point route")})},{id:"route-planner",className:"efp-overlay-route-planner",priority:76,isActive:()=>this.list.type==="route-planner"&&(!this.details||this.details instanceof M),searchBoxConfig:()=>({mode:"interface",title:S("Route planner")})}].sort((s,i)=>i.priority-s.priority)),this.list={type:"search",text:"",focused:!1},this.details=null,this.hoveredExhibitor=null,this.hoveredBooth=null,this.zoomBy=null,this.rollReset=!1,this.moveToBooths=null,this.moveToRect=null,this.moveToRectPaddingPercent=null,this.moveToLocation=!1,this.menu=!1,this.searchFocused=!1,this.searchClearMode=!1,this.printingPdf=!1,this.screenSize=new it(window.innerWidth,window.innerHeight),this.overlayShowsAll=!1,this.centerMap=!1,this.zoomAfTransformK=1,this.activeListIndex=-1,this.devicePixelRatio=window.devicePixelRatio,this.previewExhibitor=null,this.wsStarted=!1,this.canvasStarted=!1,this.kiosk=!1,this.inIdle=!1,this.modalActive={share:!1},this.galleryActive=!1,this.hideOverlay=!1,this.searchButtonsOverride=null,this.hideCookieConsent=!!ut(),this.hideHeaderLogo=!1,this.hideLogoInBooth=!1,this.disableBookmarked=!1,this.hideLanguage=!1,this.monochrome=!1,this.heatmap=!1,this.heatmapYah=!1,this.rootElement=null,this.debugCircles=[],this.mapControlsHidden=!1,this.floorsControlHidden=!1,this.hideFreeOrDemo=!1,this.freeBannerDismissed=dt(sessionStorage),this.currentBanner=null,this.sceneDefReady=!1,this.categoryFilterOpen=!1,this.selectedCategoryFilters=[],this.selectedPoiTypeFilters=[],this.selectedTrack=null,this.subButtonsVisible=!1,this.searchBoxMode="search",this.searchBoxTitle="",this.isMultiPointRoute=!1,this.isMultiPointTour=!1,this.pathwayOnlyMode=!1,this.isOverlayScrolled=!1,this.listScrollTop=0,this.listScrollItemId=null,this.listScrollIndex=0,this.scrollPositions=new Map,this.scrollItemIds=new Map,this._customUIScale=null,this.searchFilterHeightPx=54,this.searchInputHeightPx=54,this.overlayUISizePx=390,this.overlayKioskSizePx=450,this.overlayMediumHeightRems=10,this.headerHeightRem=0,this.wsImageHeightPx=44,this.mapVisibleStart=0,this.forceDim=!1,this.mapSettings={},this.maxPitch=60,this.animatePitch=!0,this.forceShowDetails=!1,this.buildRoute=!1,this.globalErrorMessages=[],this.minUIScale=.8,this.maxUIScale=1.4,this.setKioskModeEnabled=!1,this.kioskData=null,this.rootStore=o,this.mapSettings={...this.defaultMapSettings},this.initializeUIScale()}get rtl(){const o=yt();return o==="ar"||o==="he"}get noOverlay(){return this.rootStore.fp.noOverlay||this.hideOverlay}get overlayOnDemand(){return this.noOverlay&&this.searchButtonsOverride===!0}get overlayHiddenNow(){return this.noOverlay&&!(this.overlayOnDemand&&this.isOverlayOpen)}get onBoothClick(){return this.rootStore.fp.onBoothClick}get onMarkerClick(){return this.rootStore.fp.onMarkerClick}get onBookmarkClick(){return this.rootStore.fp.onBookmarkClick}get onVisitedClick(){return this.rootStore.fp.onVisitedClick}get onCategoryClick(){return this.rootStore.fp.onCategoryClick}get onDirection(){return this.rootStore.fp.onDirection}get onDetails(){return this.rootStore.fp.onDetails}get onExhibitorCustomButtonClick(){return this.rootStore.fp.onExhibitorCustomButtonClick}get onGetCoordsClick(){return this.rootStore.fp.onGetCoordsClick}get selectedExhibitor(){return this.details instanceof x?this.details:null}get selectedBooth(){return this.details instanceof I?this.details:null}get selectedCategory(){return this.list.type==="category"?this.list.category:null}get selectedRoute(){return this.details instanceof M?this.details:null}get selectedSpeaker(){return this.details instanceof K?this.details:null}get uiScale(){return this._customUIScale!==null?this._customUIScale:this.kiosk?1.2:1}get isGuidedToursActive(){return this.rootStore.toursStore.isActive}get getRouteNextFloor(){const o=this.rootStore.routeStore.pathLayers,s=this.rootStore.routeStore.currentRouteLayer?.name;if(!s)return null;const i=o.findIndex(c=>c.layer?.name===s);return i===-1?null:o[i+1]?.layer?.name??null}get headerHeightPx(){return D(this.headerHeightRem)}get overlayPosition(){return this.screenSize.width>nt||this.kiosk?"left":"bottom"}get overlayCollapsed(){return this.kiosk&&this.overlayPosition==="left"&&!this.searchFocused&&!this.menu&&!this.details&&!this.selectedCategory&&!this.selectedExhibitor&&this.list.type!=="bookmarks"&&this.list.type!==E&&!("text"in this.list&&this.list.text.length)}get overlaySize(){return this.overlayLeft?"full":this.desiredOverlaySize}get overlayBottom(){return this.overlayPosition==="bottom"}get overlayLeft(){return this.overlayPosition==="left"}get overlayWidthPx(){return this.overlayHiddenNow?0:this.overlayLeft?this.kiosk?this.overlayKioskSizePx:this.overlayUISizePx:D(this.screenSize.width)}get wsPaddingPx(){return D(.25)}get wsOccupiedHeightPx(){return this.wsShown?this.wsImageHeightPx+this.wsPaddingPx*2:0}get wsShown(){return!this.hideHeaderLogo&&this.rootStore.exhibitorStore.advertised.length>0}get wsDesktopPosition(){return L.EXPO==="cbresupplypartner"?"bottom":"top"}get wsPosition(){return this.overlayBottom?"top":this.wsDesktopPosition}get responsiveClass(){return gt(this.screenSize.width)}get mapVisibleTop(){return(this.wsPosition==="top"?this.wsOccupiedHeightPx:0)+this.headerHeightPx}get mapVisibleBottom(){return this.overlayLeft||this.overlayHiddenNow?this.wsPosition==="bottom"?this.wsOccupiedHeightPx:0:D(this.overlayMediumHeightRems)}get searchActionsHeightPx(){return this.overlayPosition==="bottom"?this.searchInputHeightPx+this.searchFilterHeightPx:this.searchInputHeightPx}get shouldShowSearchButtons(){return this.rootStore.searchButtonsStore.hasAnySearchButtons&&!this.details&&!this.menu&&![E,"filter"].includes(this.list.type)}get shouldShowMobileToggle(){const o=this.list.type==="route-planner";return this.overlayPosition==="bottom"&&(o||!this.details&&!this.menu&&this.list.type!==E&&this.list.type!=="bookmarks"&&this.list.type!=="sessions")}get mobileToggleIsListMode(){return!this.isOverlayOpen||this.overlaySize!=="full"}get canvasVisibleRectPx(){const o=this.screenSize;return ot.fromMinMax({x:B.rtl?0:this.mapVisibleStart,y:this.mapVisibleTop+this.searchActionsHeightPx},{x:B.rtl?o.width-this.mapVisibleStart:o.width,y:o.height-this.mapVisibleBottom})}get shouldShiftMapRect(){return this.overlayPosition==="left"&&(this.details||this.hasAppliedFilters||this.selectedRoute)}get hasAppliedFilters(){return this.selectedCategoryFilters.length>0||this.selectedPoiTypeFilters.length>0}get canvasVisibleRectPt(){return this.canvasVisibleRectPx.scale(this.devicePixelRatio,{x:0,y:0})}get canvasSizePt(){return this.screenSize.multiply(this.devicePixelRatio)}get shouldUseBackdrop(){if(B.overlayCollapsed)return!1;if(w&&localStorage.getItem("forcebackdrop")==="1")return!0;if(this.overlayBottom||this.selectedExhibitor?.leadingImageUrl&&!this.selectedExhibitor?.leadingImageLinkUrl)return!1;const o=X.satisfies({safari:">=13"}),s=X.satisfies({chrome:">=77"});return/(android)/i.test(navigator.userAgent)?!1:o||s&&B.canvasSizePt.height*B.canvasSizePt.width<3e6}setForceDim(o){this.forceDim=o}get dimmed(){return this.forceDim||this.pathwayOnlyMode?!0:this.highlightedBooths.size>0||this.list?.type==="search"&&this.list?.text?.trim().length>0||this.list?.type==="exhibitors"}get defaultSearchItems(){const{exhibitorStore:o,categoryStore:s,boothStore:i,heatmapStore:c}=this.rootStore;let r=o.exhibitors;const l=s.categories.filter(f=>f.exhibitors.length),u=i.booths;this.selectedPoiTypeFilters.length>0&&(r=r.filter(f=>f.booths.some(y=>this.selectedPoiTypeFilters.some(v=>y.poiTypeId===v.id))));let g=[];const k=!this.selectedCategoryFilters.length&&C.showCategories?l.filter(f=>xt.includes(L.EXPO)?!f.name.includes("/"):!0):[],T=u.filter(f=>f instanceof V);return this.selectedCategoryFilters.length>0?g=[...r]:(C.showCompaniesAndBooths&&(g=g.concat(r)),C.showOtherSpaces&&(g=g.concat(T))),this.heatmap?[...r,...u].sort((y,v)=>c.getClicksByType(v)-c.getClicksByType(y)):this.heatmapYah?c.heatmapData?.yah?.sort((f,y)=>c.getClicksByType(y)-c.getClicksByType(f))||[]:r.length===0?u:[...k,...g.sort((f,y)=>{const v=f instanceof x&&f.featured!==void 0,z=y instanceof x&&y.featured!==void 0;if(v!==z)return v?-1:1;const R=f instanceof V&&f.title?f.title:f.name,N=y instanceof V&&y.title?y.title:y.name;return R.localeCompare(N,void 0,{sensitivity:"base",numeric:!0})})]}get searchItems(){if(this.list.type!=="search")return[];const o=this.list.text?.trim().toLowerCase()||"",{exhibitorStore:s,boothStore:i,eventStore:c,speakerStore:r,heatmapStore:l}=this.rootStore;let u=s.exhibitors;const g=i.booths,k=c.eventItems,T=r.speakers;if(this.selectedCategoryFilters.length>0&&(u=u.filter(h=>this.selectedCategoryFilters.some(p=>h.categories.some(m=>m.id===p.id)))),this.selectedPoiTypeFilters.length>0&&(u=u.filter(h=>h.booths.some(p=>this.selectedPoiTypeFilters.some(m=>p.poiTypeId===m.id)))),!o)return this.defaultSearchItems;const f=[o.replace(/&[^&=]+=[^&]+/g,"")];if(this.heatmapYah)return(l.heatmapData.yah??[]).filter(p=>Number.isNaN(Number(o))?p:p.viewCount>=Number(o)).sort((p,m)=>l.getClicksByType(m)-l.getClicksByType(p));const y=[],v=new Set,z=new Set,R=new Set,N=new Set;function G(h){return h?h.replace(/[!@#$%^*\-.,()^#$%:?_+'"/]/g," ").replace(/\s\s+/g," "):""}function b(h,p){return!h||!p?!1:G(h).toLowerCase().includes(G(p).toLowerCase())}function Y(h,p){return h?b(h,p)||b(C.levelTerm+" "+h,p):!1}u.forEach(h=>{f.some(p=>b(h.name,p)||h.booths.some(m=>!p&&b(m.name,p)||Y(m.layer?.name??null,p)))&&v.add(h)}),this.selectedCategoryFilters.length>0&&g.forEach(h=>{(this.heatmap||!(h instanceof A)||!Array.from(v).find(m=>m.booths.includes(h)))&&f.some(m=>b(h.title||"",m)||b(h.name,m)||b(h.fullName,m)||Y(h.layer?.name??null,m))&&z.add(h)});const q=k,tt=T;if(q.forEach(h=>{f.some(p=>b(h.name||"",p)||b(h.description||"",p))&&R.add(h)}),tt.forEach(h=>{f.some(p=>b(h.name,p)||b(h.company,p)||b(h.jobTitle,p))&&N.add(h)}),y.push(...R),y.push(...v),this.heatmap)return y.sort((h,p)=>l.getClicksByType(p)-l.getClicksByType(h));const et=new Map(y.map(h=>[h.id,h]));return y.map(h=>{if(!h.name)return null;const p=Z(h instanceof I&&h.fullName.toLowerCase()||h.name.toLowerCase()),m=p.indexOf(Z(o));if(m===-1)return null;const Q={id:h.id,position:m,lowerCaseName:p,featured:!1};return h instanceof x&&(Q.featured=h.featured),Q}).filter(h=>!!h).sort((h,p)=>(h.featured||p.featured)&&h.featured!==p.featured?h.featured?-1:1:h.position!==p.position?h.position-p.position:h.lowerCaseName.localeCompare(p.lowerCaseName)||String(h.id).localeCompare(String(p.id))).map(({id:h})=>et.get(h)).filter(h=>!!h)}get searchList(){return[...this.rootStore.eventStore.eventItems,...this.rootStore.speakerStore.speakers,...this.rootStore.categoryStore.categories.filter(o=>o.exhibitors.length),...this.rootStore.exhibitorStore.exhibitors,...this.rootStore.boothStore.booths]}get foundInDescription(){if(this.list?.type!=="search")return[];const o=this.list?.text?.trim().toLowerCase();if(!o)return[];const s=this.fuzzySearchItems.map(({item:l})=>l),i=new Set(s.map(l=>l.name)),c=this.categoryFilteredSearchList.filter(l=>!i.has(l.name)),r=[];for(const l of c){const u=J(l);if(!u)continue;const k=(W(u)?j(u):u).toLowerCase().indexOf(o);k!==-1&&r.push({item:l,pos:k})}return r.sort((l,u)=>l.pos-u.pos),r.map(l=>l.item)}get foundInDescriptionStruct(){const o={};if(this.list?.type!=="search")return o;const s=this.list?.text?.trim().toLowerCase();return this.foundInDescription.forEach(i=>{let c=J(i);if(!c)return;W(c)&&(c=j(c));const r=c.toLowerCase().indexOf(s);if(r===-1)return;const l=3,u=r>l?r-l:0,g=c.substring(u).trim();o[i.id]=r>0?`...${g}`:g}),o}get categoryFilteredSearchList(){return this.selectedCategoryFilters.length===0?this.searchList:this.searchList.filter(o=>o instanceof x&&this.selectedCategoryFilters.some(s=>o.categories.some(i=>i.id===s.id)))}get fuzzySearchItems(){if(this.list?.type!=="search")return[];const o=this.list?.text?.trim().toLowerCase();if(!o)return this.defaultSearchItems.map(r=>({item:r,score:0,matches:[]}));const s=this.rootStore.fuzzySearchEngineStore.search(this.categoryFilteredSearchList,o),i=[],c=[];for(const r of s){const l=r.item,u=l.entity.type,g=u==="booth"?l:null,k=u==="exhibitor"?l:null,T=[l.name?.toLowerCase()??"",g?.title?.toLowerCase()??"",g?.fullName?.toLowerCase()??"",...k?.booths?.map(y=>y.name?.toLowerCase()??"")??[]];let f=1/0;for(const y of T){const v=y.indexOf(o);v!==-1&&v<f&&(f=v)}f!==1/0?i.push({result:{item:l,score:0},pos:f}):c.push(r)}return i.sort((r,l)=>r.pos-l.pos),[...i.map(r=>r.result),...c]}get listItems(){if(this.details instanceof M&&this.list.type!=="multi-point-tour")return[this.details.from,this.details.to].filter(o=>o instanceof I);switch(this.list.type){case"search":{let o=!(this.heatmap||this.heatmapYah)&&this.rootStore.fuzzySearchEngineStore.engine?this.fuzzySearchItems.map(({item:s})=>s).concat(this.foundInDescription):this.searchItems;return o=o.filter(s=>s.entity.type==="booth"?!s.exhibitors.length:!0),this.hasAppliedFilters?o.filter(s=>{if(this.selectedCategoryFilters.length>0&&s instanceof x&&!this.selectedCategoryFilters.some(i=>s.categories.some(c=>c.id===i.id)))return!1;if(this.selectedPoiTypeFilters.length>0){if(s instanceof x&&!s.booths.some(i=>this.selectedPoiTypeFilters.some(c=>i.poiTypeId===c.id))||s instanceof I&&!this.selectedPoiTypeFilters.some(i=>s.poiTypeId===i.id))return!1;if(s instanceof O&&s.boothId){const i=this.rootStore.boothStore.booths.find(c=>c.id===s.boothId);if(!i||!this.selectedPoiTypeFilters.some(c=>i.poiTypeId===c.id))return!1}}return!0}):o}case"bookmarks":return[...this.rootStore.exhibitorStore.bookmarked,...this.rootStore.eventStore.bookmarked,...this.rootStore.speakerStore.bookmarked,...this.rootStore.boothStore.booths.filter(o=>o.exhibitors.length===0&&o.bookmarkedDirectly)];case"visited":return[...this.rootStore.exhibitorStore.visited,...this.rootStore.eventStore.visited];case"category":return this.list.category.exhibitors;case E:return mt();case"filter":return this.list.items;case"sessions":return this.rootStore.eventStore.eventItems;case"exhibitors":{const o=this.rootStore.exhibitorStore.exhibitors,s=this.list.text?.toLowerCase().trim();return s?o.filter(i=>i.name.toLowerCase().includes(s)):o}case"multi-point-tour":{const o=this.rootStore.toursStore.getTourById(this.list.tourId);return o?!o.points||o.points.length===0?[]:o.points.map(s=>{const i=parseInt(s);if(!isNaN(i)){const r=this.rootStore.boothStore.boothById.get(i);if(r)return r}return It(s)?.entity||null}).filter(s=>!!s):[]}case"route-planner":return this.rootStore.routePlannerStore.resolvedBooths}throw new Error("Unknown list.type")}get listBooths(){return F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems)}get selectedBooths(){let o=[];this.selectedExhibitor?o=this.selectedExhibitor.booths:this.selectedBooth&&(o=[this.selectedBooth]);const s=this.selectedRoute,i=[s?.from,s?.to,...s?.waypoints??[]].filter(c=>c instanceof I);return o.push(...i),new Set(o)}get hoveredBooths(){let o=[];return this.hoveredBooth?o=[this.hoveredBooth]:this.hoveredExhibitor&&(o=this.hoveredExhibitor.booths),new Set(o)}get visibility(){return{controls:!this.mapControlsHidden,levels:!this.floorsControlHidden,header:this.wsShown,overlay:!this.hideOverlay,searchButtons:this.searchButtonsOverride??!this.hideOverlay}}setVisibility(o){const s=["controls","levels","header","overlay"],i={...s.reduce((r,l)=>({...r,[l]:!0}),{}),...s.filter(r=>r in o).reduce((r,l)=>({...r,[l]:o[l]}),{})},c=typeof o.searchButtons=="boolean"?o.searchButtons:null;w&&(Object.values(i).every(Boolean)&&c===null?localStorage.removeItem($):localStorage.setItem($,JSON.stringify(c===null?i:{...i,searchButtons:c}))),this.mapControlsHidden=!i.controls,this.floorsControlHidden=!i.levels,this.hideHeaderLogo=!i.header,this.hideFreeOrDemo=!i.header,this.hideOverlay=!i.overlay,this.searchButtonsOverride=c}toggleMapOverlay(){this.overlayPosition==="bottom"&&this.overlaySize==="full"?this.desiredOverlaySize="medium":this.overlayPosition==="bottom"&&this.overlaySize!=="full"&&(this.desiredOverlaySize="full")}changeZoom(o){this.zoomBy=o}zoomIn(){this.changeZoom(1.5)}zoomOut(){this.changeZoom(.66)}fitBounds(){const{rect:o,source:s}=bt({layerViewbox:this.rootStore.layerStore.viewboxRectangle,explicitArea:pt?_:null,layerRectangle:this.rootStore.layerStore.rectangle,sceneDef:rt()??null,svgArea:_});this.moveToRect=o,this.moveToRectPaddingPercent=St(s)?0:vt(o,_),this.rollReset=!0}get previewMode(){const o=w?localStorage.getItem(ht)??localStorage.getItem(lt):null;return o==="true"||o==="1"||this.rootStore.fp.previewMode}get viewerMode(){const o=w?localStorage.getItem(ct)??localStorage.getItem(at):null;return o==="true"||o==="1"||this.rootStore.fp.viewerMode}get selectedEventItem(){return this.details instanceof O?this.details:null}get defaultMapSettings(){return{zoomtime:500,pitchtime:500,center:void 0,centerxy:void 0,z:void 0,bearing:0,roll:1,pitch:1,pitchdegrees:this.pitchEnabled?30:0}}setMapSettings(o){const s={};for(const i of Object.keys(o)){const c=o[i];c!=null&&(i==="zoomtime"||i==="pitchtime"?s[i]=Math.min(Math.max(o[i]||this.mapSettings[i]||0,500),5e3):Object.assign(s,{[i]:c}))}this.mapSettings={...this.mapSettings,...s}}resetMapSettings(){this.mapSettings={...this.defaultMapSettings}}get is3DView(){return!!C.allow3dView}get pitchEnabled(){return this.is3DView?this.mapSettings.pitch===void 0||Number(this.mapSettings.pitch)===1:!1}get rollEnabled(){return this.rootStore.fp.enableRotation?this.mapSettings.roll===void 0||Number(this.mapSettings.roll)===1:!1}get baseQRCodeUrl(){return`https://${L.EXPO}.expofp.com`}get viewMapOnPhoneQRCodeUrl(){if(C?.customKioskQrCodeUrl)return C.customKioskQrCodeUrl;const o=new URL(this.baseQRCodeUrl);o.search=window.location.search;const s=o.toString();return console.log("View Map On Phone QR Code Url",s),s}get routeQRCodeUrl(){const o=new URL(this.baseQRCodeUrl),s=this.selectedRoute?.from,i=this.selectedRoute?.to,c=s instanceof I?s.slug:"",r=i instanceof I?i.slug:"";o.search=`?route%3A${encodeURIComponent(r)}%3A${encodeURIComponent(c)}%3Afalse`,st(o.searchParams,this.kioskData);const l=o.toString();return console.log("Route QR Code Url",l),l}get isFeaturedExhibitorActive(){return this.details instanceof x&&!!this.details.featured}get activeInterfaceData(){for(const o of this.interfaceMetadata)if(o.isActive())return o;return null}get activeInterfaceId(){return this.activeInterfaceData?.id}get searchBoxConfig(){const o=this.activeInterfaceData;return!o||!o.searchBoxConfig?{mode:"search",title:"",subtitle:void 0,badge:void 0,icon:void 0}:o.searchBoxConfig()||{mode:"search",title:"",subtitle:void 0,badge:void 0,icon:void 0}}get searchBoxActions(){return this.activeInterfaceData?.actions?.()??[]}get overlayInterfaceClasses(){const o=[],s=this.activeInterfaceData;return s&&(o.push(s.className),s.additionalClasses&&o.push(...s.additionalClasses())),this.details&&o.push("overlay-has-details"),this.list.type&&o.push(`overlay-list-${this.list.type}`),this.isFeaturedExhibitorActive&&o.push("overlay-exhibitor-featured"),o}get isOverlayOpen(){return this.noOverlay&&!this.overlayOnDemand?!1:this.activeInterfaceData!==null}setOverlayScrolled(o){this.isOverlayScrolled=o}setListScrollTop(o,s){this.listScrollTop=s,this.scrollPositions.set(o,s)}setListScrollItemId(o,s){this.listScrollItemId=s,this.scrollItemIds.set(o,s)}getListScrollTop(o){return this.scrollPositions.get(o)||0}getListScrollItemId(o){return this.scrollItemIds.get(o)||null}clearListScroll(o){this.scrollPositions.delete(o),this.scrollItemIds.delete(o),this.list.type===o&&(this.listScrollTop=0,this.listScrollItemId=null)}get bannerType(){return this.hideFreeOrDemo||this.heatmap?null:L.EXPO==="expo"?"demo":C.expoFpAd||C.isTrial?"free":null}get isBannerVisible(){return this.bannerType!==null}setCurrentBanner(o){this.currentBanner=o}setForceShowDetails(o){this.forceShowDetails=o}get showRouteInstantly(){return!!(this.kiosk&&!this.forceShowDetails)}startBuildRoute(){this.rootStore.selectSearch(""),this.mapControlsHidden=!0,this.floorsControlHidden=!0,this.hideHeaderLogo=!0,this.hideFreeOrDemo=!0,this.hideOverlay=!0,this.hideCookieConsent=!0,this.buildRoute=!0}setGlobalErrorMessage(o){this.globalErrorMessages.push(o)}popGlobalErrorMessage(){this.globalErrorMessages.pop()}initializeUIScale(){if(new URLSearchParams(window.location.search).get("kiosk")!=="0"&&w){const s=localStorage.getItem(H)??localStorage.getItem(U);if(s){const i=parseFloat(s);!isNaN(i)&&i>=.8&&i<=1.4&&(this._customUIScale=i)}}}setUIScale(o,s=!0){if(o===void 0||isNaN(o)||o<this.minUIScale||o>this.maxUIScale){ft.warn(`Invalid ui-scale value: ${o}. Must be between ${this.minUIScale} and ${this.maxUIScale}.`);return}this._customUIScale=o,s&&w&&(localStorage.setItem(H,o.toString()),localStorage.removeItem(U))}resetUIScale(){this._customUIScale=null,w&&(localStorage.removeItem(H),localStorage.removeItem(U))}enableSetKioskMode(o){this.setKioskModeEnabled=o}setKioskData(o){this.kioskData=o}}e([a.struct],t.prototype,"list",void 0),e([a.ref],t.prototype,"details",void 0),e([a.ref],t.prototype,"hoveredExhibitor",void 0),e([a.ref],t.prototype,"hoveredBooth",void 0),e([a],t.prototype,"zoomBy",void 0),e([a],t.prototype,"rollReset",void 0),e([a],t.prototype,"moveToBooths",void 0),e([a],t.prototype,"moveToRect",void 0),e([a],t.prototype,"moveToRectPaddingPercent",void 0),e([a],t.prototype,"moveToLocation",void 0),e([a],t.prototype,"menu",void 0),e([a],t.prototype,"searchFocused",void 0),e([a],t.prototype,"searchClearMode",void 0),e([a],t.prototype,"printingPdf",void 0),e([a.struct],t.prototype,"screenSize",void 0),e([a],t.prototype,"desiredOverlaySize",void 0),e([a],t.prototype,"overlayShowsAll",void 0),e([a],t.prototype,"centerMap",void 0),e([a],t.prototype,"zoomAfTransformK",void 0),e([a],t.prototype,"activeListIndex",void 0),e([a],t.prototype,"devicePixelRatio",void 0),e([a],t.prototype,"wsStarted",void 0),e([a],t.prototype,"canvasStarted",void 0),e([a],t.prototype,"kiosk",void 0),e([a],t.prototype,"inIdle",void 0),e([a],t.prototype,"modalActive",void 0),e([a],t.prototype,"galleryActive",void 0),e([a],t.prototype,"hideOverlay",void 0),e([a],t.prototype,"searchButtonsOverride",void 0),e([a],t.prototype,"hideCookieConsent",void 0),e([a],t.prototype,"hideHeaderLogo",void 0),e([a],t.prototype,"hideLogoInBooth",void 0),e([a],t.prototype,"disableBookmarked",void 0),e([a],t.prototype,"hideLanguage",void 0),e([a],t.prototype,"monochrome",void 0),e([a],t.prototype,"heatmap",void 0),e([a],t.prototype,"heatmapYah",void 0),e([a],t.prototype,"debugCircles",void 0),e([a],t.prototype,"mapControlsHidden",void 0),e([a],t.prototype,"floorsControlHidden",void 0),e([a],t.prototype,"hideFreeOrDemo",void 0),e([a],t.prototype,"freeBannerDismissed",void 0),e([a],t.prototype,"currentBanner",void 0),e([a],t.prototype,"sceneDefReady",void 0),e([a],t.prototype,"categoryFilterOpen",void 0),e([a],t.prototype,"selectedCategoryFilters",void 0),e([a],t.prototype,"selectedPoiTypeFilters",void 0),e([a],t.prototype,"selectedTrack",void 0),e([a],t.prototype,"subButtonsVisible",void 0),e([a],t.prototype,"searchBoxMode",void 0),e([a],t.prototype,"searchBoxTitle",void 0),e([a],t.prototype,"searchBoxSubtitle",void 0),e([a],t.prototype,"routeTitle",void 0),e([a],t.prototype,"routeDescription",void 0),e([a],t.prototype,"isMultiPointRoute",void 0),e([a],t.prototype,"tourTitle",void 0),e([a],t.prototype,"tourDescription",void 0),e([a],t.prototype,"isMultiPointTour",void 0),e([a],t.prototype,"pathwayOnlyMode",void 0),e([a],t.prototype,"isOverlayScrolled",void 0),e([a],t.prototype,"listScrollTop",void 0),e([a],t.prototype,"listScrollItemId",void 0),e([a],t.prototype,"listScrollIndex",void 0),e([a],t.prototype,"_customUIScale",void 0),e([d],t.prototype,"setSelectedCategoryFilters",null),e([d],t.prototype,"resetCategoryFilter",null),e([d],t.prototype,"setSearchClearMode",null),e([d],t.prototype,"setRouteTitle",null),e([d],t.prototype,"setRouteDescription",null),e([d],t.prototype,"setIsMultiPointRoute",null),e([d],t.prototype,"setTourTitle",null),e([d],t.prototype,"setTourDescription",null),e([d],t.prototype,"setIsMultiPointTour",null),e([d],t.prototype,"setPathwayOnlyMode",null),e([d],t.prototype,"setMultiPointTourList",null),e([n],t.prototype,"activePathwayLayers",null),e([n],t.prototype,"highlightedBooths",null),e([n],t.prototype,"rtl",null),e([n({keepAlive:!0})],t.prototype,"noOverlay",null),e([n],t.prototype,"overlayOnDemand",null),e([n],t.prototype,"overlayHiddenNow",null),e([n({keepAlive:!0})],t.prototype,"selectedExhibitor",null),e([n({keepAlive:!0})],t.prototype,"selectedBooth",null),e([n({keepAlive:!0})],t.prototype,"selectedCategory",null),e([n({keepAlive:!0})],t.prototype,"selectedRoute",null),e([n({keepAlive:!0})],t.prototype,"selectedSpeaker",null),e([n({keepAlive:!0})],t.prototype,"uiScale",null),e([n({keepAlive:!0})],t.prototype,"isGuidedToursActive",null),e([n({keepAlive:!0})],t.prototype,"getRouteNextFloor",null),e([n],t.prototype,"headerHeightPx",null),e([n],t.prototype,"overlayPosition",null),e([n],t.prototype,"overlayCollapsed",null),e([n],t.prototype,"overlaySize",null),e([n],t.prototype,"overlayBottom",null),e([n],t.prototype,"overlayLeft",null),e([n],t.prototype,"overlayWidthPx",null),e([n],t.prototype,"wsPaddingPx",null),e([n],t.prototype,"wsOccupiedHeightPx",null),e([n({keepAlive:!0})],t.prototype,"wsShown",null),e([n],t.prototype,"wsDesktopPosition",null),e([n],t.prototype,"wsPosition",null),e([n],t.prototype,"responsiveClass",null),e([n],t.prototype,"mapVisibleTop",null),e([n],t.prototype,"mapVisibleBottom",null),e([n],t.prototype,"searchActionsHeightPx",null),e([n],t.prototype,"shouldShowSearchButtons",null),e([n],t.prototype,"shouldShowMobileToggle",null),e([n],t.prototype,"mobileToggleIsListMode",null),e([n],t.prototype,"canvasVisibleRectPx",null),e([n],t.prototype,"shouldShiftMapRect",null),e([n],t.prototype,"hasAppliedFilters",null),e([n],t.prototype,"canvasVisibleRectPt",null),e([n],t.prototype,"canvasSizePt",null),e([n({keepAlive:!0})],t.prototype,"shouldUseBackdrop",null),e([a],t.prototype,"forceDim",void 0),e([d],t.prototype,"setForceDim",null),e([n],t.prototype,"dimmed",null),e([n],t.prototype,"defaultSearchItems",null),e([n],t.prototype,"searchItems",null),e([n],t.prototype,"searchList",null),e([n],t.prototype,"foundInDescription",null),e([n],t.prototype,"foundInDescriptionStruct",null),e([n],t.prototype,"categoryFilteredSearchList",null),e([n],t.prototype,"fuzzySearchItems",null),e([n],t.prototype,"listItems",null),e([n({keepAlive:!0})],t.prototype,"listBooths",null),e([n({keepAlive:!0})],t.prototype,"selectedBooths",null),e([n({keepAlive:!0})],t.prototype,"hoveredBooths",null),e([n],t.prototype,"visibility",null),e([d],t.prototype,"setVisibility",null),e([d],t.prototype,"toggleMapOverlay",null),e([d],t.prototype,"changeZoom",null),e([d],t.prototype,"zoomIn",null),e([d],t.prototype,"zoomOut",null),e([d],t.prototype,"fitBounds",null),e([n({keepAlive:!0})],t.prototype,"selectedEventItem",null),e([a],t.prototype,"mapSettings",void 0),e([d],t.prototype,"setMapSettings",null),e([d],t.prototype,"resetMapSettings",null),e([a],t.prototype,"animatePitch",void 0),e([n({keepAlive:!0})],t.prototype,"pitchEnabled",null),e([n],t.prototype,"rollEnabled",null),e([n],t.prototype,"baseQRCodeUrl",null),e([n],t.prototype,"viewMapOnPhoneQRCodeUrl",null),e([n],t.prototype,"routeQRCodeUrl",null),e([n],t.prototype,"isFeaturedExhibitorActive",null),e([n],t.prototype,"activeInterfaceData",null),e([n],t.prototype,"activeInterfaceId",null),e([n],t.prototype,"searchBoxConfig",null),e([n],t.prototype,"searchBoxActions",null),e([n],t.prototype,"overlayInterfaceClasses",null),e([n],t.prototype,"isOverlayOpen",null),e([d],t.prototype,"setOverlayScrolled",null),e([d],t.prototype,"setListScrollTop",null),e([d],t.prototype,"setListScrollItemId",null),e([d],t.prototype,"getListScrollTop",null),e([d],t.prototype,"getListScrollItemId",null),e([d],t.prototype,"clearListScroll",null),e([n],t.prototype,"bannerType",null),e([n],t.prototype,"isBannerVisible",null),e([d],t.prototype,"setCurrentBanner",null),e([a],t.prototype,"forceShowDetails",void 0),e([d],t.prototype,"setForceShowDetails",null),e([n],t.prototype,"showRouteInstantly",null),e([a],t.prototype,"buildRoute",void 0),e([d],t.prototype,"startBuildRoute",null),e([a],t.prototype,"globalErrorMessages",void 0),e([d],t.prototype,"setGlobalErrorMessage",null),e([d],t.prototype,"popGlobalErrorMessage",null),e([d],t.prototype,"initializeUIScale",null),e([d],t.prototype,"setUIScale",null),e([d],t.prototype,"resetUIScale",null),e([a],t.prototype,"setKioskModeEnabled",void 0),e([d],t.prototype,"enableSetKioskMode",null),e([a],t.prototype,"kioskData",void 0),e([d],t.prototype,"setKioskData",null);function J(P){return"description"in P&&typeof P.description=="string"?P.description:void 0}function F(P,o,s=[]){const i=[];return P.forEach(c=>{if(c instanceof x)i.push(...c.booths);else if(c instanceof I)i.push(c);else if(c instanceof O){const r=o.find(l=>l.id===c.boothId);c.boothId&&r&&i.push(r)}else c instanceof K&&s.filter(r=>r.speakers.some(l=>l.id===c.id)&&r.boothId).forEach(r=>{const l=o.find(u=>u.id===r.boothId);l&&i.push(l)})}),new Set(i.filter(Boolean))}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Point as S}from"@expofp/geometry";import{autorun as a,reaction as h,runInAction as v}from"mobx";import{ResizeObserver as g}from"resize-observer";import{applyKioskMode as
|
|
1
|
+
import{Point as S}from"@expofp/geometry";import{autorun as a,reaction as h,runInAction as v}from"mobx";import{ResizeObserver as g}from"resize-observer";import{applyKioskMode as c}from"../../components/Kiosk/kiosk-mode";import{KIOSK_ENABLE_KEY as d,VISIBILITY_STORAGE_KEY as w}from"../../constants";import x from"../../data";import y from"../../tools/logger";import{isWebGlSupported as E}from"../../utils";import{detectLimitedModeViaImage as b}from"../../utils/detectLimitedModeViaImage";import{isLocalStorageAvailable as m}from"../../utils/localStorage";import f from"../../utils/preview-exhibitor";let n=null;export function bindRootElement(t){const e=window.__efpElement;if(!e)return;const{uiState:l}=t;l.rootElement=e;const o=(s,r)=>v("uiState.screenSize",()=>{l.screenSize=new S(s,r)});o(e.clientWidth,e.clientHeight),n?.disconnect(),n=new g(s=>{s.forEach(r=>{o(r.contentRect.width,r.contentRect.height)})}),n.observe(e)}export default function I(t){const{uiState:e,exhibitorStore:l}=t;if(bindRootElement(t),f){const i=l.exhibitorById.get(f.id);i&&(e.previewExhibitor=i)}const o=typeof matchMedia<"u"?matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`):null;o&&o.addEventListener&&o.addEventListener("change",()=>{e.devicePixelRatio=window.devicePixelRatio});const s=f||!E?"full":"medium";x.isRebooking&&e.list.type==="search"&&!e.list.text&&t.selectExhibitors(),e.desiredOverlaySize=s,a(()=>{(e.searchFocused||e.menu)&&e.overlayPosition!=="left"&&(e.desiredOverlaySize="full")}),a(()=>{e.overlaySize!=="full"&&e.menu&&(e.menu=!1)}),e.wsShown||(e.wsStarted=!0),m&&localStorage.getItem(d)==="1"&&c(e,!0),window.__resett=p;function r(){t.reset()}let u;function p(){e.kiosk&&(y.log("zzz2","reset timer"),clearTimeout(u),u=setTimeout(r,3e4),e.inIdle=!1)}a(()=>{const i=e.list;i.type==="search"&&(i.text==="kiosk=1"?c(e,!0):i.text==="kiosk=0"&&c(e,!1))}),h(()=>e.kiosk,i=>{m&&(i?(localStorage.setItem(d,"1"),p()):localStorage.setItem(d,"0"))}),m&&e.setVisibility(JSON.parse(localStorage.getItem(w)??"null")||{}),z(t)}export function destroyUiHandlers(){n&&(n.disconnect(),n=null)}async function z(t){try{if(!await b())return;t.uiState.setGlobalErrorMessage({title:"Unsupported Environment Detected",body:`
|
|
2
2
|
This application requires a proper server environment to function correctly.
|
|
3
3
|
For full functionality, please ensure the application is served through an HTTP/HTTPS server.
|
|
4
4
|
Some features may not work as expected in the current setup.
|
|
@@ -109,12 +109,24 @@ export interface GlobalFilterState {
|
|
|
109
109
|
isActive: boolean;
|
|
110
110
|
}
|
|
111
111
|
export interface MapSettings {
|
|
112
|
+
/** How long a zoom takes, in milliseconds. Clamped to 500-5000. */
|
|
112
113
|
zoomtime?: number;
|
|
114
|
+
/** How long a tilt takes, in milliseconds. Clamped to 500-5000. */
|
|
115
|
+
pitchtime?: number;
|
|
116
|
+
/** Where the map is centered, in WGS84 as `"lat,lng"`. Paired with nothing; `centerxy` wins. */
|
|
113
117
|
center?: string;
|
|
118
|
+
/** Where the map is centered, in projected plan units as `"x,y"`. */
|
|
114
119
|
centerxy?: string;
|
|
120
|
+
/** The floor to activate, by name. */
|
|
115
121
|
z?: string;
|
|
122
|
+
/** The angle to turn the plan to, in degrees from north, 0 to 360. */
|
|
116
123
|
bearing?: number;
|
|
124
|
+
/** Whether the user may turn the plan by hand. Says nothing about a camera command. */
|
|
117
125
|
roll?: 0 | 1;
|
|
126
|
+
/** Whether the user may tilt the plan by hand. Says nothing about a camera command. */
|
|
127
|
+
pitch?: 0 | 1;
|
|
128
|
+
/** The angle to tilt the plan back from top down to, in degrees. */
|
|
129
|
+
pitchdegrees?: number;
|
|
118
130
|
}
|
|
119
131
|
export interface SearchButtonChild {
|
|
120
132
|
id?: number | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function showEventNotFound(e){if(typeof document>"u"||!e)return;e.textContent="";const t=e.style;t.display="flex",t.flexDirection="column",t.alignItems="center",t.justifyContent="center",t.boxSizing="border-box",t.padding="24px",t.background="#ffffff",t.color="#1f2937",t.textAlign="center",t.fontFamily='Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif';const n=document.createElement("div");n.textContent="Event not found",n.style.cssText=["font-size: 28px","font-weight: 600","line-height: 1.25"].join("; ");const o=document.createElement("div");o.textContent="This event does not exist or is no longer available.",o.style.cssText=["margin-top: 8px","font-size: 16px","color: #6b7280"].join("; "),e.appendChild(n),e.appendChild(o)}
|
|
1
|
+
import{markNotIndexable as i}from"../utils/event-head";import s from"../utils/is-own-domain";export function showEventNotFound(e){if(typeof document>"u"||!e)return;s&&i(document),e.textContent="";const t=e.style;t.display="flex",t.flexDirection="column",t.alignItems="center",t.justifyContent="center",t.boxSizing="border-box",t.padding="24px",t.background="#ffffff",t.color="#1f2937",t.textAlign="center",t.fontFamily='Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif';const n=document.createElement("div");n.textContent="Event not found",n.style.cssText=["font-size: 28px","font-weight: 600","line-height: 1.25"].join("; ");const o=document.createElement("div");o.textContent="This event does not exist or is no longer available.",o.style.cssText=["margin-top: 8px","font-size: 16px","color: #6b7280"].join("; "),e.appendChild(n),e.appendChild(o)}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type Brand = 'ExpoFP' | 'LocoMaven';
|
|
2
|
+
/**
|
|
3
|
+
* Apex domain → brand: every event is `<expo>.<apex>` (aws-code README), and
|
|
4
|
+
* the domain is what decides the brand. Not taken from the manifest's
|
|
5
|
+
* `locomaven` flag (aws-code `manifest-json`) — the lambda derives that from
|
|
6
|
+
* the same domain, and the placeholder title is written before any request
|
|
7
|
+
* settles, so only the hostname is known at both moments.
|
|
8
|
+
*/
|
|
9
|
+
declare const BRAND_BY_APEX: {
|
|
10
|
+
readonly 'expofp.com': 'ExpoFP';
|
|
11
|
+
readonly 'locomaven.com': 'LocoMaven';
|
|
12
|
+
};
|
|
13
|
+
export declare const OWN_APEX_DOMAINS: (keyof typeof BRAND_BY_APEX)[];
|
|
14
|
+
/** Pure so it's testable without stubbing `window.location`. */
|
|
15
|
+
export declare function computeBrand(hostname: string): Brand;
|
|
16
|
+
export declare const brand: Brand;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=brand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const t={"expofp.com":"ExpoFP","locomaven.com":"LocoMaven"};export const OWN_APEX_DOMAINS=Object.keys(t);const c="ExpoFP";export function computeBrand(o){const n=OWN_APEX_DOMAINS.find(e=>o===e||o.endsWith(`.${e}`));return n?t[n]:c}export const brand=typeof window>"u"?c:computeBrand(window.location.hostname);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function cameraToMapSettings(
|
|
1
|
+
export function cameraToMapSettings(e){const i={};return e.x!==void 0&&e.y!==void 0&&(i.centerxy=`${e.x},${e.y}`),e.lat!==void 0&&e.lng!==void 0&&(i.center=`${e.lat},${e.lng}`),e.floor!==void 0&&(i.z=e.floor),e.bearing!==void 0&&(i.bearing=e.bearing),e.zoomTime!==void 0&&(i.zoomtime=e.zoomTime),e.pitchTime!==void 0&&(i.pitchtime=e.pitchTime),e.pitchDegrees!==void 0&&(i.pitchdegrees=e.pitchDegrees),i}export function mapSettingsToCamera(e){const i={},n=parseNumberPair(e.centerxy);n&&([i.x,i.y]=n);const f=parseNumberPair(e.center);return f&&([i.lat,i.lng]=f),e.z!==void 0&&(i.floor=e.z),e.bearing!==void 0&&(i.bearing=e.bearing),e.zoomtime!==void 0&&(i.zoomTime=e.zoomtime),e.pitchtime!==void 0&&(i.pitchTime=e.pitchtime),e.pitchdegrees!==void 0&&(i.pitchDegrees=e.pitchdegrees),i}export function parseNumberPair(e){if(!e)return;const i=e.split(",").map(Number);if(!(i.length!==2||!i.every(Number.isFinite)))return[i[0],i[1]]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The search-facing `<head>` (and the one `<h1>`) of an event page.
|
|
3
|
+
*
|
|
4
|
+
* The event shell served on `<expo>.expofp.com` is a bare HTML stub (aws-code
|
|
5
|
+
* `expo-index-v2`) with no description, heading or canonical, so crawlers that
|
|
6
|
+
* render JS get whatever the SDK writes. Every tag here fills a gap only — a
|
|
7
|
+
* page (or a future edge-generated shell) that already carries one wins — and
|
|
8
|
+
* the caller writes them only on our own event hosts (see is-own-domain.ts).
|
|
9
|
+
*/
|
|
10
|
+
/** Search engines cut meta descriptions off past roughly this length. */
|
|
11
|
+
export declare const MAX_DESCRIPTION = 160;
|
|
12
|
+
interface EventHeadSource {
|
|
13
|
+
title: string;
|
|
14
|
+
subtitle: string;
|
|
15
|
+
locale: string;
|
|
16
|
+
exhibitors: readonly unknown[];
|
|
17
|
+
hideExhibitors: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface EventHead {
|
|
20
|
+
description: string;
|
|
21
|
+
/** Undefined when the event has no name to head the page with. */
|
|
22
|
+
heading: string | undefined;
|
|
23
|
+
/** Undefined unless `locale` is a well-formed BCP 47 tag. */
|
|
24
|
+
lang: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
/** Cut to `max` characters on a word boundary, marking the cut with an ellipsis. */
|
|
27
|
+
export declare function truncateAtWord(text: string, max: number): string;
|
|
28
|
+
export declare function buildEventHead(source: EventHeadSource): EventHead;
|
|
29
|
+
/** Write the event head into `doc`, filling only what the page lacks. */
|
|
30
|
+
export declare function applyEventHead(doc: Document, head: EventHead, canonicalUrl: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Keep a page out of the index — the "Event not found" screen: every unknown
|
|
33
|
+
* or removed event host answers 200 with the same shell (a soft 404 the edge
|
|
34
|
+
* cannot yet turn into a real one), so without this they index as duplicates.
|
|
35
|
+
*/
|
|
36
|
+
export declare function markNotIndexable(doc: Document): void;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=event-head.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const MAX_DESCRIPTION=160;export function truncateAtWord(e,t){if(e.length<=t)return e;const i=e.slice(0,t-1),n=i.lastIndexOf(" ");return(n>0?i.slice(0,n):i).replace(/[\s,.:;–—|-]+$/u,"")+"\u2026"}const c=/^[a-z]{2,3}(?:-[a-z0-9]{2,8})*$/iu;export function buildEventHead(e){const t=e.title.trim(),i=e.subtitle.trim(),n=t?`${t} interactive floor plan`:"Interactive event floor plan",o=e.hideExhibitors?0:e.exhibitors.length,a=o>0?`Browse ${o} exhibitors, find booths and get directions.`:"Find booths and get directions.",l=truncateAtWord(`${n}${i?`: ${i}`:""}. ${a}`,160),r=e.locale.trim();return{description:l,heading:t||i||void 0,lang:c.test(r)?r:void 0}}const s=["position: absolute","width: 1px","height: 1px","margin: -1px","padding: 0","overflow: hidden","clip: rect(0, 0, 0, 0)","white-space: nowrap","border: 0"].join("; ");export function applyEventHead(e,t,i){if(!e.querySelector('meta[name="description"]')){const n=e.createElement("meta");n.name="description",n.content=t.description,e.head.appendChild(n)}if(!e.querySelector('link[rel="canonical"]')){const n=e.createElement("link");n.rel="canonical",n.href=i,e.head.appendChild(n)}if(t.heading&&!e.querySelector("h1")){const n=e.createElement("h1");n.textContent=t.heading,n.style.cssText=s,e.body.prepend(n)}t.lang&&(e.documentElement.lang=t.lang)}export function markNotIndexable(e){if(e.querySelector('meta[name="robots"]'))return;const t=e.createElement("meta");t.name="robots",t.content="noindex",e.head.appendChild(t)}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Brand } from './brand';
|
|
2
|
+
interface EventTitleSource {
|
|
3
|
+
title: string;
|
|
4
|
+
subtitle: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The final, real title — event name (+ subtitle), known once `data.js` is
|
|
8
|
+
* loaded. Undefined when the event has neither (both default to `''`): the
|
|
9
|
+
* bare brand suffix would be the same for every such event, so the caller
|
|
10
|
+
* keeps the hostname-derived placeholder instead.
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatEventTitle(source: EventTitleSource, brand: Brand): string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Synchronous placeholder set before any network request completes.
|
|
15
|
+
* Hostname-derived, not a literal constant, so it's unique per event.
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatPlaceholderTitle(hostname: string, brand: Brand): string;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=event-title.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function formatEventTitle(t,o){const n=[t.title,t.subtitle].filter(Boolean);if(n.length)return[...n,`Expo Floor Plan by ${o}`].join(" \u2013 ")}export function formatPlaceholderTitle(t,o){const[n]=t.split(".");return`${n||t} \u2013 Expo Floor Plan by ${o}`}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Pure so it's testable without stubbing `window.location`/`import.meta.env`. */
|
|
2
|
+
export declare function computeIsOwnDomain(hostname: string, isDevServer: boolean): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Whether we're allowed to mutate `document.title` on this page: true on our
|
|
5
|
+
* own event subdomains, false when `load()` mounted the SDK into a `<div>`
|
|
6
|
+
* on a third-party page with no iframe — same `document` as the host, and
|
|
7
|
+
* indistinguishable from a direct visit by `window.self === window.top`
|
|
8
|
+
* alone, so only the hostname tells them apart.
|
|
9
|
+
*/
|
|
10
|
+
declare const val: boolean;
|
|
11
|
+
export default val;
|
|
12
|
+
//# sourceMappingURL=is-own-domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{OWN_APEX_DOMAINS as n}from"./brand";export function computeIsOwnDomain(o,t){return t?!0:n.some(e=>o.endsWith(`.${e}`))}const i=typeof window<"u"&&computeIsOwnDomain(window.location.hostname,!!import.meta.env?.DEV);export default i;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expofp/floorplan",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.35.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/expofp/efp-app.git",
|
|
@@ -69,15 +69,15 @@
|
|
|
69
69
|
"tslib": "^2.3.0",
|
|
70
70
|
"uuid": "^9.0.1",
|
|
71
71
|
"zod": "4.4.3",
|
|
72
|
-
"@expofp/config": "3.
|
|
73
|
-
"@expofp/debug": "3.
|
|
74
|
-
"@expofp/geometry": "3.
|
|
75
|
-
"@expofp/renderer": "3.
|
|
76
|
-
"@expofp/resolve": "3.
|
|
77
|
-
"@expofp/schema": "3.
|
|
78
|
-
"@expofp/ui": "3.
|
|
79
|
-
"@expofp/utils": "3.
|
|
80
|
-
"@expofp/wayfinding": "3.
|
|
72
|
+
"@expofp/config": "3.35.1",
|
|
73
|
+
"@expofp/debug": "3.35.1",
|
|
74
|
+
"@expofp/geometry": "3.35.1",
|
|
75
|
+
"@expofp/renderer": "3.35.1",
|
|
76
|
+
"@expofp/resolve": "3.35.1",
|
|
77
|
+
"@expofp/schema": "3.35.1",
|
|
78
|
+
"@expofp/ui": "3.35.1",
|
|
79
|
+
"@expofp/utils": "3.35.1",
|
|
80
|
+
"@expofp/wayfinding": "3.35.1"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@babel/plugin-proposal-decorators": "^8.0.2",
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
//#region src/tools/event-not-found.ts
|
|
2
|
-
(function() {
|
|
3
|
-
try {
|
|
4
|
-
var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
|
|
5
|
-
e.SENTRY_RELEASE = { id: "3.34.2" };
|
|
6
|
-
var t = new e.Error().stack;
|
|
7
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7aeeccef-252f-4eb6-8ca4-201029176499", e._sentryDebugIdIdentifier = "sentry-dbid-7aeeccef-252f-4eb6-8ca4-201029176499");
|
|
8
|
-
} catch {}
|
|
9
|
-
})();
|
|
10
|
-
function e(e) {
|
|
11
|
-
if (typeof document > "u" || !e) return;
|
|
12
|
-
e.textContent = "";
|
|
13
|
-
let t = e.style;
|
|
14
|
-
t.display = "flex", t.flexDirection = "column", t.alignItems = "center", t.justifyContent = "center", t.boxSizing = "border-box", t.padding = "24px", t.background = "#ffffff", t.color = "#1f2937", t.textAlign = "center", t.fontFamily = "Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif";
|
|
15
|
-
let n = document.createElement("div");
|
|
16
|
-
n.textContent = "Event not found", n.style.cssText = [
|
|
17
|
-
"font-size: 28px",
|
|
18
|
-
"font-weight: 600",
|
|
19
|
-
"line-height: 1.25"
|
|
20
|
-
].join("; ");
|
|
21
|
-
let r = document.createElement("div");
|
|
22
|
-
r.textContent = "This event does not exist or is no longer available.", r.style.cssText = [
|
|
23
|
-
"margin-top: 8px",
|
|
24
|
-
"font-size: 16px",
|
|
25
|
-
"color: #6b7280"
|
|
26
|
-
].join("; "), e.appendChild(n), e.appendChild(r);
|
|
27
|
-
}
|
|
28
|
-
//#endregion
|
|
29
|
-
export { e as showEventNotFound };
|