@expofp/floorplan 3.21.1 → 3.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/browser/{Button-DyYB6xKN.js → Button-Cdcme0dW.js} +5 -5
  2. package/dist/browser/{CookieConsent-PGzI3yHO.js → CookieConsent-B7cDBqp6.js} +7 -7
  3. package/dist/browser/{Debug-COmrk222.js → Debug-C1YnJvnk.js} +7 -7
  4. package/dist/browser/{Demo-oeV20zP1.js → Demo-BIM3wFq3.js} +9 -9
  5. package/dist/browser/{Free-CegScEga.js → Free-D7U5AEcf.js} +12 -12
  6. package/dist/browser/{Gallery-_lawSGqx.js → Gallery-BXlz1tz4.js} +9 -9
  7. package/dist/browser/{GpsLoader-ClIbEGYM.js → GpsLoader-BdUzK_Wq.js} +29 -29
  8. package/dist/browser/{KioskStore-f0DC16TK.js → KioskStore-t38ARgcW.js} +33 -33
  9. package/dist/browser/{MaplibreAdapter-DeUL0xOU.js → MaplibreAdapter-CSAShUgd.js} +2098 -2047
  10. package/dist/browser/{ModalContainer-DLBgX5QP.js → ModalContainer-B33HKAAU.js} +10 -10
  11. package/dist/browser/{PermissionNotice-BAsy6jo0.js → PermissionNotice-F6g9pz0M.js} +6 -6
  12. package/dist/browser/{SetKioskMode-BfVNX_MG.js → SetKioskMode-CJoi2gHM.js} +11 -11
  13. package/dist/browser/{ShowKiosk-B1C0a6oU.js → ShowKiosk-H4rnBUGh.js} +11 -11
  14. package/dist/browser/{ViewerMenuPanel-D7HWRHcc.js → ViewerMenuPanel-BmJhh8Ln.js} +10 -10
  15. package/dist/browser/{add-debug-secret-listener-DVydJSza.js → add-debug-secret-listener-BNoe6VU3.js} +1 -1
  16. package/dist/browser/{adopt-global-settings-BP7jeIs4.js → adopt-global-settings-DIweHmmO.js} +9 -9
  17. package/dist/browser/{boolean-editor-lXQibdbw.js → boolean-editor-C9fqoeTB.js} +9 -9
  18. package/dist/browser/{bootIntercom-g4N9mYqN.js → bootIntercom-BB5HdKln.js} +2 -2
  19. package/dist/browser/{booth-by-xy-DtDEluxt.js → booth-by-xy-BP9IYJhy.js} +254 -254
  20. package/dist/browser/bundle.json +65 -65
  21. package/dist/browser/{classnames-D1H49Ylw.js → classnames-Dmeqek3o.js} +2 -2
  22. package/dist/browser/{client-DJyhHF20.js → client-CBb2454O.js} +4 -4
  23. package/dist/browser/{components-DrPsXyP7.js → components-DyDFRZBC.js} +787 -738
  24. package/dist/browser/{debug-overlay-2-3s8Atk.js → debug-overlay-DXOrtUeJ.js} +10 -10
  25. package/dist/browser/{debug-ui-Dadmy3yG.js → debug-ui-tNUnR4wz.js} +6 -6
  26. package/dist/browser/{dist-Ch11tk4A.js → dist-BIFUFe-T.js} +5 -5
  27. package/dist/browser/{dist-CoV6SEDf.js → dist-DZfEO0RJ.js} +6 -6
  28. package/dist/browser/{dist-DpyoGiMq.js → dist-DcOtrqGG.js} +3 -3
  29. package/dist/browser/{efp-debug-init-NTJ55pbo.js → efp-debug-init-B4ddpmiL.js} +3 -3
  30. package/dist/browser/{enum-editor-P8k6CxpK.js → enum-editor-CJB3E-Vh.js} +4 -4
  31. package/dist/browser/{es5-BNAXdIXy.js → es5-DeTUpXm2.js} +2 -2
  32. package/dist/browser/{event-not-found-zrxmY-4I.js → event-not-found-WRXwMJms.js} +1 -1
  33. package/dist/browser/{exports-Cmt6qLmi.js → exports-C5uYtLxL.js} +1 -1
  34. package/dist/browser/{favicon-BcvdcBjJ.js → favicon-5gTCZLy9.js} +1 -1
  35. package/dist/browser/{fetch-retry.umd-CwLHs7gm.js → fetch-retry.umd-BoyaQteS.js} +2 -2
  36. package/dist/browser/{flex-CZxVZLiS.js → flex-DjFgAKFt.js} +5 -5
  37. package/dist/browser/{floorplan.loader-CVqPWtRR.js → floorplan.loader-Ck3XnezM.js} +651 -636
  38. package/dist/browser/{floorplan.ready-Cku02kNV.js → floorplan.ready-CzTR8qqL.js} +315 -353
  39. package/dist/browser/{fuse-DAKoh9Sn.js → fuse-BR27GheK.js} +2 -2
  40. package/dist/browser/{i18n-oXBjISpK.js → i18n-DNH3sP4D.js} +2529 -2558
  41. package/dist/browser/index.js +35 -35
  42. package/dist/browser/{index.module-DV0zb8y6.js → index.module-DzGptmYn.js} +4 -4
  43. package/dist/browser/{integrateKiosk-BtlbXjk8.js → integrateKiosk-DN5HgMdz.js} +9 -8
  44. package/dist/browser/{is-webview-CDAwTE_T.js → is-webview-CEqtlsy5.js} +1 -1
  45. package/dist/browser/{jsx-runtime-C_M9qBpc.js → jsx-runtime-BRUHXGcL.js} +2 -2
  46. package/dist/browser/{kiosk-record-5DWijpUq.js → kiosk-record-C6KsyYH0.js} +1 -1
  47. package/dist/browser/{lib-DVQm4XG_.js → lib-BoYL1Y22.js} +3 -3
  48. package/dist/browser/{loadImage-Dkh3AoGR.js → loadImage-2JV_4hsV.js} +4 -4
  49. package/dist/browser/{logDeviceInfo-Ccvah0yg.js → logDeviceInfo-Bga4LjdT.js} +9 -9
  50. package/dist/browser/{main-B88omsdI.js → main-BUSluy8y.js} +1 -1
  51. package/dist/browser/{mobx-DdJZvHEB.js → mobx-Cp-RXiD6.js} +4 -4
  52. package/dist/browser/{optional-boolean-editor-9UNagXL6.js → optional-boolean-editor-biZOa4EF.js} +3 -3
  53. package/dist/browser/{optional-enum-editor-WnN344M7.js → optional-enum-editor-BuzYWVhL.js} +4 -4
  54. package/dist/browser/{optional-string-editor-BixGVxIr.js → optional-string-editor-1Gxph7oU.js} +4 -4
  55. package/dist/browser/{particles.min-DJy8aIR6.js → particles.min-Cq5SYO7P.js} +2 -2
  56. package/dist/browser/{react-DsyxxgJv.js → react-BCiZTNvQ.js} +2 -2
  57. package/dist/browser/{react-dom-BXP4j1KL.js → react-dom-Gayzbfmi.js} +3 -3
  58. package/dist/browser/{rolldown-runtime-foRd1umF.js → rolldown-runtime-C4CgTizo.js} +1 -1
  59. package/dist/browser/{select-Cn_RP7hP.js → select-BEAG7sfR.js} +10 -10
  60. package/dist/browser/{settings-Jt3zjfc9.js → settings-BJrS0XMO.js} +2 -2
  61. package/dist/browser/{settings-item-BdWruI_d.js → settings-item-C-rqGE6m.js} +6 -6
  62. package/dist/browser/{store-BEkesuqa.js → store-DH91iUcL.js} +7014 -7107
  63. package/dist/browser/{string-editor-Cz5tHqIH.js → string-editor-fs3xB248.js} +4 -4
  64. package/dist/browser/{text-field-CiqRIQkJ.js → text-field-CN-pynRC.js} +5 -5
  65. package/dist/browser/{theme-w6xowkim.js → theme-78GgHmsO.js} +8 -8
  66. package/dist/browser/{ui-CpE8-iDh.js → ui-BFQlKtKk.js} +8 -8
  67. package/dist/browser/{useRenderTarget-CseUnJfL.js → useRenderTarget-CtWSXh71.js} +4 -4
  68. package/dist/esm/components/Bookmarks.js +1 -1
  69. package/dist/esm/components/Kiosk/integrateKiosk.d.ts +8 -2
  70. package/dist/esm/components/Kiosk/integrateKiosk.js +1 -1
  71. package/dist/esm/components/Kiosk/kiosk-mode.d.ts +8 -0
  72. package/dist/esm/components/Kiosk/kiosk-mode.js +1 -0
  73. package/dist/esm/components/Kiosk/kiosk-record.d.ts +5 -1
  74. package/dist/esm/components/Kiosk/kioskUrlParam.d.ts +7 -3
  75. package/dist/esm/components/Kiosk/kioskUrlParam.js +1 -1
  76. package/dist/esm/components/Map/Map.js +1 -1
  77. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
  78. package/dist/esm/components/Maplibre/useCameraReactions.js +1 -1
  79. package/dist/esm/components/Maplibre/utils/geo-config.d.ts +32 -0
  80. package/dist/esm/components/Maplibre/utils/geo-config.js +1 -1
  81. package/dist/esm/floorplan.loader.d.ts +6 -5
  82. package/dist/esm/floorplan.loader.js +1 -1
  83. package/dist/esm/floorplan.ready.js +1 -1
  84. package/dist/esm/internal-settings.d.ts +13 -0
  85. package/dist/esm/internal-settings.js +1 -0
  86. package/dist/esm/services/multi-slug.d.ts +3 -3
  87. package/dist/esm/services/url-dispatch.d.ts +3 -5
  88. package/dist/esm/services/url-dispatch.js +1 -1
  89. package/dist/esm/store/BookmarksStore.d.ts +1 -4
  90. package/dist/esm/store/BookmarksStore.js +1 -2
  91. package/dist/esm/store/UIState.d.ts +13 -5
  92. package/dist/esm/store/UIState.js +1 -1
  93. package/dist/esm/store/init/index.js +1 -1
  94. package/dist/esm/store/init/init-booths.d.ts +3 -3
  95. package/dist/esm/store/init/init-booths.js +1 -1
  96. package/dist/esm/store/init/init-ui.js +1 -1
  97. package/dist/esm/utils/customCommands.js +1 -1
  98. package/dist/esm/utils/scene-bounds.d.ts +7 -0
  99. package/dist/esm/utils/scene-bounds.js +1 -1
  100. package/package.json +10 -9
  101. package/dist/esm/store/init/init-bookmarks.d.ts +0 -9
  102. package/dist/esm/store/init/init-bookmarks.js +0 -1
@@ -0,0 +1 @@
1
+ export function toInternalSettings(o){const e=o.mobileLocationProvider?.trim();return Object.freeze({mobileLocationProvider:e||null})}
@@ -8,9 +8,9 @@
8
8
  * is rewritten to the exhibitor's display name, keeping that text readable.
9
9
  *
10
10
  * Only slug-shaped parts count and only they are rewritten: a `key=value`
11
- * part (config key, intent shortcut, one-shot — `=` travels as `%3D` in the
12
- * encoded form) is never a slug. A lone slug riding with such params
13
- * (`?slug&allowConsent=false`) is NOT a multi-slug link — left alone, it
11
+ * part (config key, intent shortcut, one-shot, retired key — `=` travels as
12
+ * `%3D` in the encoded form) is never a slug. A lone slug riding with such
13
+ * params (`?slug&consent=denied`) is NOT a multi-slug link — left alone, it
14
14
  * flows through the parser's config-stripping to a clean single-slug select.
15
15
  *
16
16
  * Returns the rewritten search (delimiter normalized to `&`), or `null` when
@@ -10,15 +10,13 @@ export declare function initUrlRouting(offHistory: boolean): void;
10
10
  /** The public `FloorPlan.applyParameters` — replay a legacy query at runtime. */
11
11
  export declare function applyParameters(queryRaw?: string): void;
12
12
  /**
13
- * The pathway deep link: activate the busiest floor, highlight the listed
14
- * entities, draw the pathway, zoom to the booths — plus the multi-point-tour
15
- * list header when a tour rides along. Also the body of `FloorPlan.showPathway`
16
- * (which passes no tour).
13
+ * The body of `FloorPlan.showPathway`. Lives here from the days the retired
14
+ * `?pathway=` deep link shared it; the multi-point-tour header that link
15
+ * could also raise is `ToursStore.launchTour`'s job now.
17
16
  */
18
17
  export declare function applyPathway(options: {
19
18
  pathwayId: string;
20
19
  boothIds: string[];
21
20
  exhibitorIds: string[];
22
- tourId?: string;
23
21
  }): void;
24
22
  //# sourceMappingURL=url-dispatch.d.ts.map
@@ -1 +1 @@
1
- import{applyIntents as G,getConfig as y,parseFromUrlTolerant as Y,parseIntentsFromUrl as K,parseLegacyQuery as x,serializeSelection as W}from"@expofp/config";import{Box as Q}from"@expofp/geometry";import{UrlConfigSchema as z}from"@expofp/schema";import{safeDecode as d}from"@expofp/utils";import{autorun as v,runInAction as w,when as p}from"mobx";import{recoverKioskFromUrlPrams as H}from"../components/Kiosk/recoverKioskFromUrlPrams";import{LEGACY_PREVIEW_MODE_STORAGE_KEY as j,LEGACY_VIEWER_MODE_STORAGE_KEY as N,PREVIEW_MODE_STORAGE_KEY as M,VIEWER_MODE_STORAGE_KEY as B}from"../constants";import g from"../data";import o,{uiState as r}from"../store";import{BoothBase as P}from"../store/BoothStore";import{CurrentPosition as $,extractRoute as q}from"../store/RouteStore";import{setConsentSettings as J}from"../tools/gtag";import L from"../tools/logger";import{areLayersEnabled as X}from"../utils/areLayersEnabled";import{cameraToMapSettings as b}from"../utils/camera-map-settings";import{handleCustomCommand as Z}from"../utils/customCommands";import{getMostFrequent as ee}from"../utils/getMostFrequent";import{heatmapEnabled as te}from"../utils/heatmap-enabled";import{hasLocale as oe,setLocale as re}from"../utils/i18n";import{isLocalStorageAvailable as R}from"../utils/localStorage";import{stripTrackingParams as ie}from"../utils/trackingParams";import{rewriteMultiSlugQuery as se}from"./multi-slug";import{currentSearch as m,disableUrlWrites as ae,initUrlSync as ne,pushQuery as le,replaceQuery as f}from"./url-sync";let S=!1;export function applyDeclarativeConfig(){O(y()),p(()=>o.layerStore.layersLoaded,()=>{const e=y().camera;Object.keys(e).length&&E(b(e));const t=y().visibility;Object.keys(t).length&&r.setVisibility(t)})}export function initUrlRouting(e){ne({offHistory:e,onNavigate:I}),F(),k(),p(()=>o.layerStore.layersLoaded,()=>{o.urlFilterManager&&!o.urlFilterManager.isInitialized&&o.urlFilterManager.initialize(),I(),v(D),v(V),r.viewerMode&&(r.menu=!0)})}export function applyParameters(e=""){f("?"+d(e.toString())),o.layerStore.layersLoaded?T(e):(k(),p(()=>o.layerStore.layersLoaded,()=>T(e)))}function T(e){const t="?"+d(e),s=me(t);O(s),s.consent&&J(s.consent),s.camera&&Object.keys(s.camera).length&&E(b(s.camera)),s.visibility&&Object.keys(s.visibility).length&&r.setVisibility(s.visibility),F(),I();const i=[...s.intents??[],...K(t).intents];i.length&&G(o.fp,i)}function k(){const e=m(),t=e.length>1?d(e.substring(1)):"";return Z(t)}function I(){S=!0;try{const e=new URLSearchParams(d(window.location.search));H(e);const{primary:t,oneShots:s}=x(m()),i=s.find(l=>l.type==="camera");if(i){const l=i.roll;E({...b(i.camera),roll:l})}const u=t.type==="select"&&(!t.slug||/^t=[^&]*$/.test(t.slug))&&(r.heatmap||r.heatmapYah);!k()&&!u&&ue(t)}finally{S=!1}V(),D()}function ue(e){const t=o.fp;switch(e.type){case"kiosk":e.enabled===!0?r.kiosk=!0:e.enabled===!1&&(r.kiosk=!1,r.resetUIScale());return;case"list":t.showList(e.list);return;case"tour":t.selectTour(e.tourId);return;case"planner":t.openPlanner({items:e.items,from:e.from,fromBookmarks:e.fromBookmarks});return;case"route":{o.routeStore.setOnlyAccessible(e.accessible),o.routeStore.selectRoute(q(e.from??"",e.to??"",e.waypoints)),o.uiState.setIsMultiPointRoute(e.waypoints.length>0),e.title&&o.uiState.setRouteTitle(e.title);return}case"language":oe(e.langId)&&re(e.langId);return;case"printPdf":o.uiState.printingPdf=!0;return;case"visibility":o.uiState.setVisibility(e.hidden.reduce((s,i)=>({...s,[i]:!1}),{}));return;case"buildRoute":t.startBuildRoute();return;case"pathway":applyPathway(e);return;case"selectExhibitors":setTimeout(()=>t.selectExhibitor(e.values),250);return;case"ownedByFilters":L.log("Skipping filter parameters in dispatchFromUrl (owned by URLFilterManager)");return;case"ownedByConfig":return;case"select":t.select(e.slug);return}}export function applyPathway(e){const{pathwayId:t,boothIds:s,exhibitorIds:i,tourId:u}=e;if(u){const a=o.toursStore.getTourById(u);a&&w(()=>{o.uiState.setTourTitle(a.name),o.uiState.setTourDescription(a.description??""),o.uiState.setIsMultiPointTour(!0),o.uiState.setMultiPointTourList(a.id)})}const l=o.boothStore.booths.filter(a=>s.includes(a.externalId)),c=o.exhibitorStore.exhibitors.filter(a=>i.includes(a.externalId)).flatMap(a=>a.booths),n=[...l,...c];if(X()){const a=ee(n.map(h=>h.layer.name));a&&o.fp.activateFloor({name:a})}(s.length>0||i.length>0)&&o.fp.highlightEntities([...s,...i]),o.layerStore.showPathWay(t),n.length>0&&w(()=>{o.uiState.moveToRect=Q.fromUnion(...n.map(a=>a.rect).filter(Boolean)),o.uiState.rollReset=!0})}function F(){const e=m(),{oneShots:t}=x(e);for(const i of t)ce(i);e.startsWith("?preview=")&&f("?"),m().includes("copy_exh")&&f("?");const s=ie(m());s!==null&&f("?"+s),r.previewExhibitor&&f("?"+r.previewExhibitor.slug),fe()}function ce(e){switch(e.type){case"heatmap":U(e.yah);return;case"blueDot":{const t=new $(e.x,e.y,o.layerStore.findLayer(e.layer??"")?.name,void 0,e.lat,e.lng);p(()=>o.layerStore.layersLoaded,()=>o.routeStore.selectCurrentPosition(t,!0,1));return}case"viewerMode":R&&(e.enabled?localStorage.setItem(B,"true"):(localStorage.removeItem(B),localStorage.removeItem(N)));return;case"previewMode":R&&(e.enabled?localStorage.setItem(M,"true"):(localStorage.removeItem(M),localStorage.removeItem(j)));return;case"uiScale":e.scale!==null?o.uiState.setUIScale(e.scale,!0):L.warn(`Invalid ui-scale parameter: ${e.raw}. Must be a number between 0.8 and 1.4.`);return;case"resetUiScale":o.uiState.resetUIScale();return;case"legacyBookmarks":{const t=e.appendExhibitorId===null?void 0:o.exhibitorStore.exhibitorById.get(e.appendExhibitorId);f(t?"?"+t.slug:"?bookmarks");return}}}function U(e){ae(),e?(r.heatmapYah=!0,r.monochrome=!0,r.hideLogoInBooth=!0,r.hideHeaderLogo=!0,r.disableBookmarked=!0):r.heatmap=!0}function fe(){const e=se(m(),t=>o.exhibitorStore.exhibitors.find(i=>i.slug===t||i.externalId===t)?.name);e!==null&&f(e)}function O(e){e.noOverlay!==void 0&&(r.hideOverlay=e.noOverlay),e.monochrome&&(r.monochrome=!0),e.hideHeaderLogo&&(r.hideHeaderLogo=!0),e.hideLogoInBooth&&(r.hideLogoInBooth=!0),e.disableFeatured&&o.exhibitorStore.exhibitors.forEach(t=>t.featured=!1),e.disableBookmarked&&(r.disableBookmarked=!0),e.disableGps&&o.routeStore.setGpsTrackingEnabled(!1),e.heatmap&&te(e.heatmap)&&U(e.heatmap.variant==="yah")}function me(e){return Y(z,e).value}let C=null,_=null,A=null;function V(){const{selection:e,exhibitor:t,booth:s,eventItem:i}=de(),u=o.urlFilterManager.filterSearch();if(S)return;const l=W(e)||u;m()!==l&&(t!==C||s!==_||i!==A?le(l):f(l),C=t,_=s,A=i)}function de(){const e=r.selectedExhibitor,t=r.selectedBooth,s=r.selectedEventItem,i=r.selectedRoute,u=r.selectedSpeaker,l=r.setKioskModeEnabled,c=r.list;let n;if(c.type==="route-planner"&&!e&&!t&&!s){const a=o.routePlannerStore;n={type:"planner",fromBookmarks:a.source==="bookmarks",items:a.items.map(h=>h.entity.slug).filter(Boolean),from:a.startPoint?.slug||void 0}}else if(i&&!r.isMultiPointRoute)n={type:"route",to:i.to instanceof P?i.to.slug:void 0,from:i.from instanceof P?i.from.slug:void 0,accessible:o.routeStore.onlyAccessible,waypoints:i.waypoints?.map(a=>a.slug)};else if(e)n={type:"slug",slug:e.slug};else if(t)n={type:"slug",slug:t.slug};else if(s)n={type:"slug",slug:s.slug};else if(u)n={type:"slug",slug:u.slug};else if(l)n={type:"none"};else switch(c.type){case"bookmarks":case"visited":case"sessions":case"exhibitors":case"speakers":case"tours":case"language":n={type:"list",list:c.type};break;case"category":n={type:"slug",slug:r.selectedCategory?.slug??""};break;case"search":n={type:"slug",slug:c.text||""};break;case"filter":n={type:"filter",key:c.query.key,value:c.query.value};break;case"multi-point-tour":n={type:"tour",tourId:c.tourId};break;default:throw new Error("Unkown list.type")}return{selection:n,exhibitor:e,booth:t,eventItem:s}}function D(){const e=r.selectedExhibitor,t=r.selectedEventItem,s=r.selectedSpeaker;let i="";e?i=e.name:t?i=t.name:s?i=s.name:r.list.type==="search"&&r.list.text?i="`"+(r.list.text||"")+"`":r.list.type==="multi-point-tour"&&r.tourTitle&&(i=r.tourTitle),i.length&&(i+=" \u2013 "),i+=g.title,g.subtitle&&(i+=" \u2013 "+g.subtitle),i+=" \u2013 Expo Floor Plan by ExpoFP",document.title=i}function E(e){try{if(r.setMapSettings(e),e.z){const t=o.layerStore.layers.find(s=>s.name===e.z);t&&o.layerStore.updateVisibility(t,!0)}}catch(t){console.error("Failed to process map settings.",t)}}
1
+ import{applyIntents as G,getConfig as h,parseDeprecatedUrlParams as K,parseFromUrlTolerant as V,parseIntentsFromUrl as Y,parseLegacyQuery as E,serializeSelection as Q}from"@expofp/config";import{Box as W}from"@expofp/geometry";import{UrlConfigSchema as z}from"@expofp/schema";import{safeDecode as p}from"@expofp/utils";import{autorun as v,runInAction as H,when as d}from"mobx";import{applyKioskMode as j}from"../components/Kiosk/kiosk-mode";import{recoverKioskFromUrlPrams as N}from"../components/Kiosk/recoverKioskFromUrlPrams";import{LEGACY_PREVIEW_MODE_STORAGE_KEY as $,LEGACY_VIEWER_MODE_STORAGE_KEY as q,PREVIEW_MODE_STORAGE_KEY as I,VIEWER_MODE_STORAGE_KEY as x}from"../constants";import y from"../data";import i,{uiState as o}from"../store";import{BoothBase as w}from"../store/BoothStore";import{CurrentPosition as J,extractRoute as X}from"../store/RouteStore";import{setConsentSettings as Z}from"../tools/gtag";import M from"../tools/logger";import{areLayersEnabled as ee}from"../utils/areLayersEnabled";import{cameraToMapSettings as P}from"../utils/camera-map-settings";import{handleCustomCommand as te}from"../utils/customCommands";import{getMostFrequent as oe}from"../utils/getMostFrequent";import{heatmapEnabled as re}from"../utils/heatmap-enabled";import{isLocalStorageAvailable as B}from"../utils/localStorage";import{stripTrackingParams as ie}from"../utils/trackingParams";import{rewriteMultiSlugQuery as ne}from"./multi-slug";import{currentSearch as m,disableUrlWrites as se,initUrlSync as ae,pushQuery as le,replaceQuery as f}from"./url-sync";let g=!1;export function applyDeclarativeConfig(){k(h()),d(()=>i.layerStore.layersLoaded,()=>{const e=h().camera;Object.keys(e).length&&A(P(e));const t=h().visibility;Object.keys(t).length&&o.setVisibility(t)})}export function initUrlRouting(e){ae({offHistory:e,onNavigate:S}),L(),b(),d(()=>i.layerStore.layersLoaded,()=>{i.urlFilterManager&&!i.urlFilterManager.isInitialized&&i.urlFilterManager.initialize(),S(),v(_),v(T),o.viewerMode&&(o.menu=!0)})}export function applyParameters(e=""){f("?"+p(e.toString())),i.layerStore.layersLoaded?F(e):(b(),d(()=>i.layerStore.layersLoaded,()=>F(e)))}function F(e){const t="?"+p(e),r=fe(t),n=[...r.intents??[],...Y(t).intents],{intents:c=[],...l}=K(t,{visibility:r.visibility,consent:r.consent,intents:n});k(r),k(l);const a=r.consent??l.consent;a&&Z(a),r.camera&&Object.keys(r.camera).length&&A(P(r.camera)),r.visibility&&Object.keys(r.visibility).length&&o.setVisibility(r.visibility),L(),S();const s=[...n,...c];s.length&&G(i.fp,s)}function b(){const e=m(),t=e.length>1?p(e.substring(1)):"";return te(t)}function S(){g=!0;try{const e=new URLSearchParams(p(window.location.search));N(e);const{primary:t}=E(m()),r=t.type==="select"&&(!t.slug||/^t=[^&]*$/.test(t.slug))&&(o.heatmap||o.heatmapYah);!b()&&!r&&ce(t)}finally{g=!1}T(),_()}function ce(e){const t=i.fp;switch(e.type){case"kiosk":e.enabled!==null&&j(o,e.enabled);return;case"list":t.showList(e.list);return;case"tour":t.selectTour(e.tourId);return;case"planner":t.openPlanner({items:e.items,from:e.from,fromBookmarks:e.fromBookmarks});return;case"route":{i.routeStore.setOnlyAccessible(e.accessible),i.routeStore.selectRoute(X(e.from??"",e.to??"",e.waypoints)),i.uiState.setIsMultiPointRoute(e.waypoints.length>0),e.title&&i.uiState.setRouteTitle(e.title);return}case"selectExhibitors":setTimeout(()=>t.selectExhibitor(e.values),250);return;case"ownedByFilters":M.log("Skipping filter parameters in dispatchFromUrl (owned by URLFilterManager)");return;case"ownedByConfig":return;case"select":t.select(e.slug);return}}export function applyPathway(e){const{pathwayId:t,boothIds:r,exhibitorIds:n}=e,c=i.boothStore.booths.filter(s=>r.includes(s.externalId)),l=i.exhibitorStore.exhibitors.filter(s=>n.includes(s.externalId)).flatMap(s=>s.booths),a=[...c,...l];if(ee()){const s=oe(a.map(u=>u.layer.name));s&&i.fp.activateFloor({name:s})}(r.length>0||n.length>0)&&i.fp.highlightEntities([...r,...n]),i.layerStore.showPathWay(t),a.length>0&&H(()=>{i.uiState.moveToRect=W.fromUnion(...a.map(s=>s.rect).filter(Boolean)),i.uiState.rollReset=!0})}function L(){const{oneShots:e}=E(m());for(const r of e)ue(r);const t=ie(m());t!==null&&f("?"+t),o.previewExhibitor&&f("?"+o.previewExhibitor.slug),me()}function ue(e){switch(e.type){case"heatmap":R(e.yah);return;case"blueDot":{const t=new J(e.x,e.y,i.layerStore.findLayer(e.layer??"")?.name,void 0,e.lat,e.lng);d(()=>i.layerStore.layersLoaded,()=>i.routeStore.selectCurrentPosition(t,!0,1));return}case"viewerMode":B&&(e.enabled?localStorage.setItem(x,"true"):(localStorage.removeItem(x),localStorage.removeItem(q)));return;case"previewMode":B&&(e.enabled?localStorage.setItem(I,"true"):(localStorage.removeItem(I),localStorage.removeItem($)));return;case"uiScale":e.scale!==null?i.uiState.setUIScale(e.scale,!0):M.warn(`Invalid ui-scale parameter: ${e.raw}. Must be a number between 0.8 and 1.4.`);return;case"resetUiScale":i.uiState.resetUIScale();return}}function R(e){se(),e?(o.heatmapYah=!0,o.monochrome=!0,o.hideLogoInBooth=!0,o.hideHeaderLogo=!0,o.disableBookmarked=!0):o.heatmap=!0}function me(){const e=ne(m(),t=>i.exhibitorStore.exhibitors.find(n=>n.slug===t||n.externalId===t)?.name);e!==null&&f(e)}function k(e){e.noOverlay!==void 0&&(o.hideOverlay=e.noOverlay),e.monochrome&&(o.monochrome=!0),e.hideHeaderLogo&&(o.hideHeaderLogo=!0),e.hideLogoInBooth&&(o.hideLogoInBooth=!0),e.disableFeatured&&i.exhibitorStore.exhibitors.forEach(t=>t.featured=!1),e.disableBookmarked&&(o.disableBookmarked=!0),e.disableGps&&i.routeStore.setGpsTrackingEnabled(!1),e.heatmap&&re(e.heatmap)&&R(e.heatmap.variant==="yah")}function fe(e){return V(z,e).value}let U=null,O=null,C=null;function T(){const{selection:e,exhibitor:t,booth:r,eventItem:n}=pe(),c=i.urlFilterManager.filterSearch();if(g)return;const l=Q(e)||c;m()!==l&&(t!==U||r!==O||n!==C?le(l):f(l),U=t,O=r,C=n)}function pe(){const e=o.selectedExhibitor,t=o.selectedBooth,r=o.selectedEventItem,n=o.selectedRoute,c=o.selectedSpeaker,l=o.setKioskModeEnabled,a=o.list;let s;if(a.type==="route-planner"&&!e&&!t&&!r){const u=i.routePlannerStore;s={type:"planner",fromBookmarks:u.source==="bookmarks",items:u.items.map(D=>D.entity.slug).filter(Boolean),from:u.startPoint?.slug||void 0}}else if(n&&!o.isMultiPointRoute)s={type:"route",to:n.to instanceof w?n.to.slug:void 0,from:n.from instanceof w?n.from.slug:void 0,accessible:i.routeStore.onlyAccessible,waypoints:n.waypoints?.map(u=>u.slug)};else if(e)s={type:"slug",slug:e.slug};else if(t)s={type:"slug",slug:t.slug};else if(r)s={type:"slug",slug:r.slug};else if(c)s={type:"slug",slug:c.slug};else if(l)s={type:"none"};else switch(a.type){case"bookmarks":case"visited":case"sessions":case"exhibitors":case"speakers":case"tours":case"language":s={type:"list",list:a.type};break;case"category":s={type:"slug",slug:o.selectedCategory?.slug??""};break;case"search":s={type:"slug",slug:a.text||""};break;case"filter":s={type:"filter",key:a.query.key,value:a.query.value};break;case"multi-point-tour":s={type:"tour",tourId:a.tourId};break;default:throw new Error("Unkown list.type")}return{selection:s,exhibitor:e,booth:t,eventItem:r}}function _(){const e=o.selectedExhibitor,t=o.selectedEventItem,r=o.selectedSpeaker;let n="";e?n=e.name:t?n=t.name:r?n=r.name:o.list.type==="search"&&o.list.text?n="`"+(o.list.text||"")+"`":o.list.type==="multi-point-tour"&&o.tourTitle&&(n=o.tourTitle),n.length&&(n+=" \u2013 "),n+=y.title,y.subtitle&&(n+=" \u2013 "+y.subtitle),n+=" \u2013 Expo Floor Plan by ExpoFP",document.title=n}function A(e){try{if(o.setMapSettings(e),e.z){const t=i.layerStore.layers.find(r=>r.name===e.z);t&&i.layerStore.updateVisibility(t,!0)}}catch(t){console.error("Failed to process map settings.",t)}}
@@ -1,12 +1,9 @@
1
- import RootStore from './RootStore';
1
+ import type RootStore from './RootStore';
2
2
  export default class BookmarksStore {
3
3
  private readonly rootStore;
4
- private readonly _share;
5
4
  constructor(rootStore: RootStore);
6
5
  get bookmarkedBooths(): import("./BoothStore").Booth[];
7
6
  get total(): number;
8
- get hasBookmarks(): boolean;
9
7
  get hasRoutableBookmarks(): boolean;
10
- share(): void;
11
8
  }
12
9
  //# sourceMappingURL=BookmarksStore.d.ts.map
@@ -1,2 +1 @@
1
- import{__decorate as e}from"tslib";import l from"copy-to-clipboard";import{computed as a}from"mobx";import{t as s}from"../utils/i18n";export default class r{constructor(t){this.rootStore=t,this._share=this.share.bind(this)}get bookmarkedBooths(){return this.rootStore.boothStore.booths.filter(t=>t.exhibitors.length===0&&t.bookmarkedDirectly)}get total(){return this.rootStore.exhibitorStore.bookmarked.length+this.rootStore.eventStore.bookmarked.length+this.rootStore.speakerStore.bookmarked.length+this.bookmarkedBooths.length}get hasBookmarks(){return this.total>0}get hasRoutableBookmarks(){return this.rootStore.exhibitorStore.bookmarked.length>0||this.bookmarkedBooths.length>0}share(){const{exhibitorStore:t,eventStore:h,speakerStore:k}=this.rootStore,i=window.location,m=[...t.bookmarked.map(o=>o.id),...h.bookmarked.map(o=>o.id),...k.bookmarked.map(o=>o.id),...this.bookmarkedBooths.map(o=>o.id)];l(`${i.protocol}//${i.host}/?b=`+m.join("|")),alert(s("Link copied to clipboard")+`.
2
- `+s("Open it on another device to import bookmarks")+".")}}e([a],r.prototype,"bookmarkedBooths",null),e([a],r.prototype,"total",null),e([a],r.prototype,"hasBookmarks",null),e([a],r.prototype,"hasRoutableBookmarks",null);
1
+ import{__decorate as e}from"tslib";import{computed as r}from"mobx";export default class t{constructor(o){this.rootStore=o}get bookmarkedBooths(){return this.rootStore.boothStore.booths.filter(o=>o.exhibitors.length===0&&o.bookmarkedDirectly)}get total(){return this.rootStore.exhibitorStore.bookmarked.length+this.rootStore.eventStore.bookmarked.length+this.rootStore.speakerStore.bookmarked.length+this.bookmarkedBooths.length}get hasRoutableBookmarks(){return this.rootStore.exhibitorStore.bookmarked.length>0||this.bookmarkedBooths.length>0}}e([r],t.prototype,"bookmarkedBooths",null),e([r],t.prototype,"total",null),e([r],t.prototype,"hasRoutableBookmarks",null);
@@ -37,6 +37,14 @@ export default class UIState {
37
37
  rollReset: boolean;
38
38
  moveToBooths: Booth[] | null;
39
39
  moveToRect: Box | null;
40
+ /**
41
+ * Breathing room the pending `moveToRect` wants, as a fraction of the viewport
42
+ * per side. `null` leaves each renderer on its own default — the adaptive
43
+ * 15%/25% for the legacy one, a fixed inset for the map. Fit-to-screen sets 0:
44
+ * its rect is the framing itself, so padding it would zoom past the authored
45
+ * viewbox.
46
+ */
47
+ moveToRectPaddingPercent: number | null;
40
48
  moveToLocation: boolean;
41
49
  menu: boolean;
42
50
  searchFocused: boolean;
@@ -127,12 +135,12 @@ export default class UIState {
127
135
  get noOverlay(): boolean;
128
136
  get overlayOnDemand(): boolean;
129
137
  get overlayHiddenNow(): boolean;
130
- get onBoothClick(): (e: FloorPlanBoothClickEvent) => void;
138
+ get onBoothClick(): (e: import("..").FloorPlanBoothClickEvent) => void;
131
139
  get onMarkerClick(): (e: import("..").FloorPlanMarkerEvent) => void;
132
- get onBookmarkClick(): (e: FloorPlanBookmarkClickEvent) => void;
133
- get onVisitedClick(): (e: FloorPlanVisitedClickEvent) => void;
134
- get onCategoryClick(): (e: FloorPlanCategoryClickEvent) => void;
135
- get onDirection(): (e: FloorPlanDirectionEvent) => void;
140
+ get onBookmarkClick(): (e: import("..").FloorPlanBookmarkClickEvent) => void;
141
+ get onVisitedClick(): (e: import("..").FloorPlanVisitedClickEvent) => void;
142
+ get onCategoryClick(): (e: import("..").FloorPlanCategory) => void;
143
+ get onDirection(): (e: import("..").FloorPlanDirectionEvent) => void;
136
144
  get onDetails(): (e: import("..").FloorPlanDetailsEvent) => void;
137
145
  get onExhibitorCustomButtonClick(): (e: import("..").FloorPlanCustomButtonEvent) => void;
138
146
  get onGetCoordsClick(): (e: import("..").FloorPlanGetCoordsEvent) => void;
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{Box as it}from"@expofp/geometry";import{action as u,computed as n,observable as l}from"mobx";import{setKioskUrlParams as st}from"../components/Kiosk/kioskUrlParam";import{LANGUAGE_TYPE as E,LEGACY_PREVIEW_MODE_STORAGE_KEY as rt,LEGACY_UI_SCALE_STORAGE_KEY as N,LEGACY_VIEWER_MODE_STORAGE_KEY as lt,MOBILE_BREAKPOINT as at,PREVIEW_MODE_STORAGE_KEY as nt,UI_SCALE_STORAGE_KEY as U,VIEWER_MODE_STORAGE_KEY as ht,VISIBILITY_STORAGE_KEY as W}from"../constants";import C from"../data";import{svgArea as H,svgAreaExplicit as ct}from"../data/svg";import{readFreeBannerDismissed as pt}from"../tools/freeBanner";import{hasUserConsent as dt}from"../tools/gtag";import{hasHtmlTags as X}from"../tools/has-html-tags";import ut from"../tools/logger";import L from"../tools/settings";import{stripHtml as j}from"../tools/strip-html";import{remsToPixels as D}from"../utils";import Z from"../utils/browser";import{getLocale as ft,getLocales as yt,t as v}from"../utils/i18n";import{isLocalStorageAvailable as w}from"../utils/localStorage";import{getResponsiveClass as mt}from"../utils/responsiveClass";import{sanitizeStr as J}from"../utils/sanitizeText";import{resolveVenueFitRect as gt}from"../utils/scene-bounds";import{uiState as P}from".";import{BoothBase as I,RegularBooth as M,SpecialBooth as _}from"./BoothStore";import{EventItem as R}from"./EventStore";import{Exhibitor as x}from"./ExhibitorStore";import{findEntityByExternalId as St,Route as T}from"./RouteStore";import{SpeakerItem as V}from"./SpeakerStore";const vt=["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(a=>a.id)||[]:[]}get highlightedBooths(){const o=new Set(this.rootStore.exhibitorStore.highlightedByExternalIds),a=new Set(this.rootStore.boothStore.highlightedByExternalIds),s=new Set([this.rootStore.exhibitorStore.exhibitors.filter(i=>o.has(i.externalId)).flatMap(i=>i.booths.filter(r=>r instanceof M)).map(i=>i.id.toString()),this.rootStore.boothStore.booths.filter(i=>a.has(i.externalId)).map(i=>i.id.toString())].flat());if(this.list?.type==="search"&&this.list?.text?.trim().length){s.clear();const i=this.fuzzySearchItems.filter(r=>r.score===0).map(r=>r.item);i.length?F(i,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(r=>s.add(r.id.toString())):this.listBooths.forEach(r=>s.add(r.id.toString()))}if(this.list?.type==="filter"&&(s.clear(),this.list.items.flatMap(i=>i.booths.filter(r=>r instanceof M)).forEach(i=>s.add(i.id.toString()))),this.categoryFilterOpen&&this.selectedCategoryFilters.length>0?(s.clear(),this.selectedCategoryFilters.forEach(i=>{i.exhibitors.flatMap(r=>r.booths).forEach(r=>s.add(r.id.toString()))})):this.list?.type==="category"&&(s.clear(),this.list.category.exhibitors.flatMap(i=>i.booths).forEach(i=>s.add(i.id.toString()))),this.list?.type==="bookmarks"&&(s.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(i=>s.add(i.id.toString()))),this.list?.type==="visited"&&(s.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(i=>s.add(i.id.toString()))),this.list?.type==="exhibitors"){s.clear();const i=this.list.text?.toLowerCase().trim();let r=this.rootStore.exhibitorStore.exhibitors;i&&(r=r.filter(d=>d.name.toLowerCase().includes(i))),r.flatMap(d=>d.booths.filter(f=>f instanceof M)).forEach(d=>s.add(d.id.toString()))}if(this.selectedPoiTypeFilters.length>0&&(s.clear(),this.selectedPoiTypeFilters.forEach(i=>{this.rootStore.boothStore.booths.filter(r=>r.poiTypeId===i.id).forEach(r=>s.add(r.id.toString()))})),this.details instanceof T&&(s.clear(),this.details.from instanceof I&&s.add(this.details.from.id.toString()),this.details.to instanceof I&&s.add(this.details.to.id.toString()),this.details.waypoints?.forEach(i=>s.add(i.id.toString()))),this.details instanceof I&&(s.clear(),s.add(this.details.id.toString())),this.details instanceof x&&(s.clear(),this.details.booths.filter(i=>i instanceof M).forEach(i=>s.add(i.id.toString()))),this.details instanceof R){const i=this.details;if(i.boothId){s.clear();const r=this.rootStore.boothStore.booths.find(d=>d.id===i.boothId);r&&s.add(r.id.toString())}}return s.delete(void 0),s.delete(null),s}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 a=this.details;return{mode:"details",title:a.title||a.name}}},{id:"event",className:"efp-overlay-event",priority:70,isActive:()=>this.details instanceof R,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"route",className:"efp-overlay-route",priority:70,isActive:()=>this.details instanceof T,searchBoxConfig:()=>{const a=this.details;return{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:()=>!P.menu&&!!P.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 V,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 T),searchBoxConfig:()=>({mode:"interface",title:v("Route planner")})}].sort((a,s)=>s.priority-a.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.moveToLocation=!1,this.menu=!1,this.searchFocused=!1,this.searchClearMode=!1,this.printingPdf=!1,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=!!dt(),this.hideHeaderLogo=!1,this.hideLogoInBooth=!1,this.disableBookmarked=!1,this.hideLanguage=!1,this.monochrome=!1,this.heatmap=!1,this.heatmapYah=!1,this.debugCircles=[],this.mapControlsHidden=!1,this.floorsControlHidden=!1,this.hideFreeOrDemo=!1,this.freeBannerDismissed=pt(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.rootStore=o,this.initializeUIScale()}get rtl(){const o=ft();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 T?this.details:null}get selectedSpeaker(){return this.details instanceof V?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,a=this.rootStore.routeStore.currentRouteLayer?.name;if(!a)return null;const s=o.findIndex(c=>c.layer?.name===a);return s===-1?null:o[s+1]?.layer?.name}get headerHeightRem(){return 0}get headerHeightPx(){return D(this.headerHeightRem)}get overlayPosition(){return!this.screenSize||this.screenSize.width>at||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 mt(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 fullSizeOffset(){const o=this.wsShown?54:0,a=this.bannerType==="free"&&!this.freeBannerDismissed?40:0,s=20;if(this.details&&!(this.details instanceof T))return o+a+s;const c=54,i=this.shouldShowSearchButtons?54:0;return o+a+c+s+i}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 it.fromMinMax({x:P.rtl?0:this.mapVisibleStart,y:this.mapVisibleTop+this.searchActionsHeightPx},{x:P.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(P.overlayCollapsed)return!1;if(w&&localStorage.getItem("forcebackdrop")==="1")return!0;if(this.overlayBottom||this.selectedExhibitor?.leadingImageUrl&&!this.selectedExhibitor?.leadingImageLinkUrl)return!1;const o=Z.satisfies({safari:">=13"}),a=Z.satisfies({chrome:">=77"});var s=/(android)/i.test(navigator.userAgent);return s?!1:o||a&&P.canvasSizePt.height*P.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:a,boothStore:s,heatmapStore:c}=this.rootStore;let i=o.exhibitors;const r=a.categories.filter(y=>y.exhibitors.length),d=s.booths;this.selectedPoiTypeFilters.length>0&&(i=i.filter(y=>y.booths.some(m=>this.selectedPoiTypeFilters.some(S=>m.poiTypeId===S.id))));let f=[];const k=!this.selectedCategoryFilters.length&&C.showCategories?r.filter(y=>vt.includes(L.EXPO)?!y.name.includes("/"):!0):[],A=d.filter(y=>y instanceof _);return this.selectedCategoryFilters.length>0?f=[...i]:(C.showCompaniesAndBooths&&(f=f.concat(i)),C.showOtherSpaces&&(f=f.concat(A))),this.heatmap?[...i,...d].sort((m,S)=>c.getClicksByType(S)-c.getClicksByType(m)):this.heatmapYah?c.heatmapData?.yah?.sort((y,m)=>c.getClicksByType(m)-c.getClicksByType(y))||[]:i.length===0?d:k.concat(f.sort((y,m)=>{const S=y instanceof x&&y.featured!==void 0,B=m instanceof x&&m.featured!==void 0;if(S!==B)return S?-1:1;const O=y instanceof _&&y.title?y.title:y.name,z=m instanceof _&&m.title?m.title:m.name;return O.localeCompare(z,void 0,{sensitivity:"base",numeric:!0})}))}get searchItems(){if(this.list.type!=="search")return[];let o=this.list.text?.trim().toLowerCase()||"";const{exhibitorStore:a,categoryStore:s,boothStore:c,eventStore:i,speakerStore:r,heatmapStore:d}=this.rootStore;let f=a.exhibitors;const k=s.categories.filter(h=>h.exhibitors.length),A=c.booths,y=i.eventItems,m=r.speakers;if(this.selectedCategoryFilters.length>0&&(f=f.filter(h=>this.selectedCategoryFilters.some(p=>h.categories.some(g=>g.id===p.id)))),this.selectedPoiTypeFilters.length>0&&(f=f.filter(h=>h.booths.some(p=>this.selectedPoiTypeFilters.some(g=>p.poiTypeId===g.id)))),!o)return this.defaultSearchItems;const S=[o.replace(/&[^&=]+=[^&]+/g,"")];if(this.heatmapYah)return d.heatmapData.yah.filter(p=>Number.isNaN(Number(o))?p:p.viewCount>=Number(o)).sort((p,g)=>d.getClicksByType(g)-d.getClicksByType(p));const B=[],O=new Set,z=new Set,G=new Set,q=new Set;function Y(h){return h?h.replace(/[!@#$%^*-\.,\(\)^#$%:?_+'"\/]/g," ").replace(/\s\s+/g," "):""}function b(h,p){return!h||!p?!1:Y(h).toLowerCase().includes(Y(p).toLowerCase())}function Q(h,p){return h?b(h,p)||b(C.levelTerm+" "+h,p):!1}f.forEach(h=>{S.some(p=>b(h.name,p)||h.booths.some(g=>!p&&b(g.name,p)||Q(g.layer?.name??null,p)))&&O.add(h)}),this.selectedCategoryFilters.length>0&&A.forEach(h=>{(this.heatmap||!(h instanceof M)||!Array.from(O).find(g=>g.booths.includes(h)))&&S.some(g=>b(h.title||"",g)||b(h.name,g)||b(h.fullName,g)||Q(h.layer?.name??null,g))&&z.add(h)});const tt=y,et=m;if(tt.forEach(h=>{S.some(p=>b(h.name||"",p)||b(h.description||"",p))&&G.add(h)}),et.forEach(h=>{S.some(p=>b(h.name,p)||b(h.company,p)||b(h.jobTitle,p))&&q.add(h)}),B.push(...G),B.push(...O),this.heatmap)return B.sort((h,p)=>d.getClicksByType(p)-d.getClicksByType(h));const ot=new Map(B.map(h=>[h.id,h]));return B.map(h=>{if(!h.name)return null;const p=J(h instanceof I&&h.fullName.toLowerCase()||h.name.toLowerCase()),g=p.indexOf(J(o));if(g===-1)return null;const $={id:h.id,position:g,lowerCaseName:p,featured:!1};return h instanceof x&&($.featured=h.featured),$}).filter(Boolean).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})=>ot.get(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 a=this.fuzzySearchItems.map(({item:r})=>r),s=new Set(a.map(r=>r.name)),c=this.categoryFilteredSearchList.filter(r=>!s.has(r.name)),i=[];for(const r of c){const d=r.description;if(!d)continue;const k=(X(d)?j(d):d).toLowerCase().indexOf(o);k!==-1&&i.push({item:r,pos:k})}return i.sort((r,d)=>r.pos-d.pos),i.map(r=>r.item)}get foundInDescriptionStruct(){const o={};if(this.list?.type!=="search")return o;const a=this.list?.text?.trim().toLowerCase();return this.foundInDescription.forEach(s=>{let c=s.description;if(!c)return;X(c)&&(c=j(c));const i=c.toLowerCase().indexOf(a);if(i===-1)return;const r=3,d=i>r?i-r:0,f=c.substring(d).trim();o[s.id]=i>0?`...${f}`:f}),o}get categoryFilteredSearchList(){return this.selectedCategoryFilters.length===0?this.searchList:this.searchList.filter(o=>o instanceof x&&this.selectedCategoryFilters.some(a=>o.categories.some(s=>s.id===a.id)))}get fuzzySearchItems(){if(this.list?.type!=="search")return[];const o=this.list?.text?.trim().toLowerCase();if(!o)return this.defaultSearchItems.map(i=>({item:i,score:0,matches:[]}));const a=this.rootStore.fuzzySearchEngineStore.search(this.categoryFilteredSearchList,o),s=[],c=[];for(const i of a){const r=i.item,d=r.entity.type,f=d==="booth"?r:null,k=d==="exhibitor"?r:null,A=[r.name?.toLowerCase()??"",f?.title?.toLowerCase()??"",f?.fullName?.toLowerCase()??"",...k?.booths?.map(m=>m.name?.toLowerCase()??"")??[]];let y=1/0;for(const m of A){const S=m.indexOf(o);S!==-1&&S<y&&(y=S)}y!==1/0?s.push({result:{item:r,score:0},pos:y}):c.push(i)}return s.sort((i,r)=>i.pos-r.pos),[...s.map(i=>i.result),...c]}get listItems(){if(this.details instanceof T&&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:i})=>i).concat(this.foundInDescription):this.searchItems;return o=o.filter(i=>i.entity.type==="booth"?!i.exhibitors.length:!0),this.hasAppliedFilters?o.filter(i=>{if(this.selectedCategoryFilters.length>0&&i instanceof x&&!this.selectedCategoryFilters.some(r=>i.categories.some(d=>d.id===r.id)))return!1;if(this.selectedPoiTypeFilters.length>0){if(i instanceof x&&!i.booths.some(r=>this.selectedPoiTypeFilters.some(d=>r.poiTypeId===d.id))||i instanceof I&&!this.selectedPoiTypeFilters.some(r=>i.poiTypeId===r.id))return!1;if(i instanceof R&&i.boothId){const r=this.rootStore.boothStore.booths.find(d=>d.id===i.boothId);if(!r||!this.selectedPoiTypeFilters.some(d=>r.poiTypeId===d.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(i=>i.exhibitors.length===0&&i.bookmarkedDirectly)];case"visited":return[...this.rootStore.exhibitorStore.visited,...this.rootStore.eventStore.visited];case"category":return this.list.category.exhibitors;case E:return yt();case"filter":return this.list.items;case"sessions":return this.rootStore.eventStore.eventItems;case"exhibitors":const a=this.rootStore.exhibitorStore.exhibitors,s=this.list.text?.toLowerCase().trim();return s?a.filter(i=>i.name.toLowerCase().includes(s)):a;case"multi-point-tour":const c=this.rootStore.toursStore.getTourById(this.list.tourId);return c?!c.points||c.points.length===0?[]:c.points.map(i=>{const r=parseInt(i);if(!isNaN(r)){const f=this.rootStore.boothStore.boothById.get(r);if(f)return f}return St(i)?.entity||null}).filter(Boolean):[];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 a=this.selectedRoute,s=[a?.from,a?.to,...a?.waypoints??[]].filter(c=>c instanceof I);return o.push(...s),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 a=["controls","levels","header","overlay"],s={...a.reduce((i,r)=>({...i,[r]:!0}),{}),...Object.keys(o).filter(i=>a.includes(i)).reduce((i,r)=>({...i,[r]:o[r]}),{})},c=typeof o.searchButtons=="boolean"?o.searchButtons:null;w&&(Object.values(s).every(Boolean)&&c===null?localStorage.removeItem(W):localStorage.setItem(W,JSON.stringify(c===null?s:{...s,searchButtons:c}))),this.mapControlsHidden=!s.controls,this.floorsControlHidden=!s.levels,this.hideHeaderLogo=!s.header,this.hideFreeOrDemo=!s.header,this.hideOverlay=!s.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(){if(this.rootStore.maplibreStore.showMaplibre){const{rect:o}=gt({layerViewbox:this.rootStore.layerStore.viewboxRectangle,explicitArea:ct?H:null,layerRectangle:this.rootStore.layerStore.rectangle,sceneDef:this.rootStore.rendererService.scene,svgArea:H});this.moveToRect=o}else this.moveToRect=this.rootStore.layerStore.rectangle||H;this.rollReset=!0}get previewMode(){const o=w?localStorage.getItem(nt)??localStorage.getItem(rt):null;return o==="true"||o==="1"||this.rootStore.fp.previewMode}get viewerMode(){const o=w?localStorage.getItem(ht)??localStorage.getItem(lt):null;return o==="true"||o==="1"||this.rootStore.fp.viewerMode}get selectedEventItem(){return this.details instanceof R?this.details:null}get defaultMapSettings(){return{zoomtime:500,center:void 0,centerxy:void 0,z:void 0,bearing:0,roll:1}}setMapSettings(o){const a={};for(const s in o)o[s]!=null&&(s==="zoomtime"?a[s]=Math.min(Math.max(o[s]||this.mapSettings.zoomtime,500),5e3):a[s]=o[s]);this.mapSettings={...this.mapSettings,...a}}resetMapSettings(){this.mapSettings={...this.defaultMapSettings}}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 a=o.toString();return console.log("View Map On Phone QR Code Url",a),a}get routeQRCodeUrl(){const o=new URL(this.baseQRCodeUrl),a=this.selectedRoute?.from,s=this.selectedRoute?.to,c=a instanceof I?a.slug:"",i=s instanceof I?s.slug:"";o.search=`?route%3A${encodeURIComponent(i)}%3A${encodeURIComponent(c)}%3Afalse`,st(o.searchParams,this.kioskData,["x","y","z"]);const r=o.toString();return console.log("Route QR Code Url",r),r}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 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=[],a=this.activeInterfaceData;return a&&(o.push(a.className),a.additionalClasses&&o.push(...a.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,a){this.listScrollTop=a,this.scrollPositions.set(o,a)}setListScrollItemId(o,a){this.listScrollItemId=a,this.scrollItemIds.set(o,a)}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 a=localStorage.getItem(U)??localStorage.getItem(N);if(a){const s=parseFloat(a);!isNaN(s)&&s>=.8&&s<=1.4&&(this._customUIScale=s)}}}setUIScale(o,a=!0){if(isNaN(o)||o<this.minUIScale||o>this.maxUIScale){ut.warn(`Invalid ui-scale value: ${o}. Must be between ${this.minUIScale} and ${this.maxUIScale}.`);return}this._customUIScale=o,a&&w&&(localStorage.setItem(U,o.toString()),localStorage.removeItem(N))}resetUIScale(){this._customUIScale=null,w&&(localStorage.removeItem(U),localStorage.removeItem(N))}enableSetKioskMode(o){this.setKioskModeEnabled=o}setKioskData(o){this.kioskData=o}}e([l.struct],t.prototype,"list",void 0),e([l.ref],t.prototype,"details",void 0),e([l.ref],t.prototype,"hoveredExhibitor",void 0),e([l.ref],t.prototype,"hoveredBooth",void 0),e([l],t.prototype,"zoomBy",void 0),e([l],t.prototype,"rollReset",void 0),e([l],t.prototype,"moveToBooths",void 0),e([l],t.prototype,"moveToRect",void 0),e([l],t.prototype,"moveToLocation",void 0),e([l],t.prototype,"menu",void 0),e([l],t.prototype,"searchFocused",void 0),e([l],t.prototype,"searchClearMode",void 0),e([l],t.prototype,"printingPdf",void 0),e([l.struct],t.prototype,"screenSize",void 0),e([l],t.prototype,"desiredOverlaySize",void 0),e([l],t.prototype,"overlayShowsAll",void 0),e([l],t.prototype,"centerMap",void 0),e([l],t.prototype,"zoomAfTransformK",void 0),e([l],t.prototype,"activeListIndex",void 0),e([l],t.prototype,"devicePixelRatio",void 0),e([l],t.prototype,"wsStarted",void 0),e([l],t.prototype,"canvasStarted",void 0),e([l],t.prototype,"kiosk",void 0),e([l],t.prototype,"inIdle",void 0),e([l],t.prototype,"modalActive",void 0),e([l],t.prototype,"galleryActive",void 0),e([l],t.prototype,"hideOverlay",void 0),e([l],t.prototype,"searchButtonsOverride",void 0),e([l],t.prototype,"hideCookieConsent",void 0),e([l],t.prototype,"hideHeaderLogo",void 0),e([l],t.prototype,"hideLogoInBooth",void 0),e([l],t.prototype,"disableBookmarked",void 0),e([l],t.prototype,"hideLanguage",void 0),e([l],t.prototype,"monochrome",void 0),e([l],t.prototype,"heatmap",void 0),e([l],t.prototype,"heatmapYah",void 0),e([l],t.prototype,"debugCircles",void 0),e([l],t.prototype,"mapControlsHidden",void 0),e([l],t.prototype,"floorsControlHidden",void 0),e([l],t.prototype,"hideFreeOrDemo",void 0),e([l],t.prototype,"freeBannerDismissed",void 0),e([l],t.prototype,"currentBanner",void 0),e([l],t.prototype,"sceneDefReady",void 0),e([l],t.prototype,"categoryFilterOpen",void 0),e([l],t.prototype,"selectedCategoryFilters",void 0),e([l],t.prototype,"selectedPoiTypeFilters",void 0),e([l],t.prototype,"selectedTrack",void 0),e([l],t.prototype,"subButtonsVisible",void 0),e([l],t.prototype,"mapControlsDOMRect",void 0),e([l],t.prototype,"searchBoxMode",void 0),e([l],t.prototype,"searchBoxTitle",void 0),e([l],t.prototype,"searchBoxSubtitle",void 0),e([l],t.prototype,"routeTitle",void 0),e([l],t.prototype,"routeDescription",void 0),e([l],t.prototype,"isMultiPointRoute",void 0),e([l],t.prototype,"tourTitle",void 0),e([l],t.prototype,"tourDescription",void 0),e([l],t.prototype,"isMultiPointTour",void 0),e([l],t.prototype,"pathwayOnlyMode",void 0),e([l],t.prototype,"isOverlayScrolled",void 0),e([l],t.prototype,"listScrollTop",void 0),e([l],t.prototype,"listScrollItemId",void 0),e([l],t.prototype,"listScrollIndex",void 0),e([l],t.prototype,"_customUIScale",void 0),e([u],t.prototype,"setSelectedCategoryFilters",null),e([u],t.prototype,"resetCategoryFilter",null),e([u],t.prototype,"setSearchClearMode",null),e([u],t.prototype,"setRouteTitle",null),e([u],t.prototype,"setRouteDescription",null),e([u],t.prototype,"setIsMultiPointRoute",null),e([u],t.prototype,"setTourTitle",null),e([u],t.prototype,"setTourDescription",null),e([u],t.prototype,"setIsMultiPointTour",null),e([u],t.prototype,"setPathwayOnlyMode",null),e([u],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,"fullSizeOffset",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([l],t.prototype,"forceDim",void 0),e([u],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([u],t.prototype,"setVisibility",null),e([u],t.prototype,"toggleMapOverlay",null),e([u],t.prototype,"changeZoom",null),e([u],t.prototype,"zoomIn",null),e([u],t.prototype,"zoomOut",null),e([u],t.prototype,"fitBounds",null),e([n({keepAlive:!0})],t.prototype,"selectedEventItem",null),e([l],t.prototype,"mapSettings",void 0),e([u],t.prototype,"setMapSettings",null),e([u],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,"searchBoxConfig",null),e([n],t.prototype,"searchBoxActions",null),e([n],t.prototype,"overlayInterfaceClasses",null),e([n],t.prototype,"isOverlayOpen",null),e([u],t.prototype,"setOverlayScrolled",null),e([u],t.prototype,"setListScrollTop",null),e([u],t.prototype,"setListScrollItemId",null),e([u],t.prototype,"getListScrollTop",null),e([u],t.prototype,"getListScrollItemId",null),e([u],t.prototype,"clearListScroll",null),e([n],t.prototype,"bannerType",null),e([n],t.prototype,"isBannerVisible",null),e([u],t.prototype,"setCurrentBanner",null),e([l],t.prototype,"forceShowDetails",void 0),e([u],t.prototype,"setForceShowDetails",null),e([n],t.prototype,"showRouteInstantly",null),e([l],t.prototype,"buildRoute",void 0),e([u],t.prototype,"startBuildRoute",null),e([l],t.prototype,"globalErrorMessages",void 0),e([u],t.prototype,"setGlobalErrorMessage",null),e([u],t.prototype,"popGlobalErrorMessage",null),e([u],t.prototype,"initializeUIScale",null),e([u],t.prototype,"setUIScale",null),e([u],t.prototype,"resetUIScale",null),e([l],t.prototype,"setKioskModeEnabled",void 0),e([u],t.prototype,"enableSetKioskMode",null),e([l],t.prototype,"kioskData",void 0),e([u],t.prototype,"setKioskData",null);function F(K,o,a=[]){const s=[];return K.forEach(c=>{c instanceof x?s.push(...c.booths):c instanceof I?s.push(c):c instanceof R?c.boothId&&s.push(o.find(i=>i.id===c.boothId)):c instanceof V&&a.filter(i=>i.speakers.some(r=>r.id===c.id)&&i.boothId).forEach(i=>s.push(o.find(r=>r.id===i.boothId)))}),new Set(s.filter(Boolean))}
1
+ import{__decorate as e}from"tslib";import{Box as it}from"@expofp/geometry";import{action as u,computed as n,observable as a}from"mobx";import{setKioskUrlParams as st}from"../components/Kiosk/kioskUrlParam";import{LANGUAGE_TYPE as E,LEGACY_PREVIEW_MODE_STORAGE_KEY as rt,LEGACY_UI_SCALE_STORAGE_KEY as N,LEGACY_VIEWER_MODE_STORAGE_KEY as lt,MOBILE_BREAKPOINT as at,PREVIEW_MODE_STORAGE_KEY as nt,UI_SCALE_STORAGE_KEY as U,VIEWER_MODE_STORAGE_KEY as ht,VISIBILITY_STORAGE_KEY as W}from"../constants";import C from"../data";import{svgArea as H,svgAreaExplicit as ct}from"../data/svg";import{readFreeBannerDismissed as pt}from"../tools/freeBanner";import{hasUserConsent as dt}from"../tools/gtag";import{hasHtmlTags as X}from"../tools/has-html-tags";import ut from"../tools/logger";import L from"../tools/settings";import{stripHtml as j}from"../tools/strip-html";import{remsToPixels as D}from"../utils";import Z from"../utils/browser";import{getLocale as ft,getLocales as yt,t as v}from"../utils/i18n";import{isLocalStorageAvailable as w}from"../utils/localStorage";import{getResponsiveClass as mt}from"../utils/responsiveClass";import{sanitizeStr as J}from"../utils/sanitizeText";import{fitRectIsFraming as gt,getVenueFitMarginPercent as St,resolveVenueFitRect as vt}from"../utils/scene-bounds";import{uiState as P}from".";import{BoothBase as I,RegularBooth as M,SpecialBooth as _}from"./BoothStore";import{EventItem as R}from"./EventStore";import{Exhibitor as x}from"./ExhibitorStore";import{findEntityByExternalId as bt,Route as T}from"./RouteStore";import{SpeakerItem as V}from"./SpeakerStore";const It=["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(l=>l.id)||[]:[]}get highlightedBooths(){const o=new Set(this.rootStore.exhibitorStore.highlightedByExternalIds),l=new Set(this.rootStore.boothStore.highlightedByExternalIds),s=new Set([this.rootStore.exhibitorStore.exhibitors.filter(i=>o.has(i.externalId)).flatMap(i=>i.booths.filter(r=>r instanceof M)).map(i=>i.id.toString()),this.rootStore.boothStore.booths.filter(i=>l.has(i.externalId)).map(i=>i.id.toString())].flat());if(this.list?.type==="search"&&this.list?.text?.trim().length){s.clear();const i=this.fuzzySearchItems.filter(r=>r.score===0).map(r=>r.item);i.length?F(i,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(r=>s.add(r.id.toString())):this.listBooths.forEach(r=>s.add(r.id.toString()))}if(this.list?.type==="filter"&&(s.clear(),this.list.items.flatMap(i=>i.booths.filter(r=>r instanceof M)).forEach(i=>s.add(i.id.toString()))),this.categoryFilterOpen&&this.selectedCategoryFilters.length>0?(s.clear(),this.selectedCategoryFilters.forEach(i=>{i.exhibitors.flatMap(r=>r.booths).forEach(r=>s.add(r.id.toString()))})):this.list?.type==="category"&&(s.clear(),this.list.category.exhibitors.flatMap(i=>i.booths).forEach(i=>s.add(i.id.toString()))),this.list?.type==="bookmarks"&&(s.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(i=>s.add(i.id.toString()))),this.list?.type==="visited"&&(s.clear(),F(this.listItems,this.rootStore.boothStore.booths,this.rootStore.eventStore.eventItems).forEach(i=>s.add(i.id.toString()))),this.list?.type==="exhibitors"){s.clear();const i=this.list.text?.toLowerCase().trim();let r=this.rootStore.exhibitorStore.exhibitors;i&&(r=r.filter(d=>d.name.toLowerCase().includes(i))),r.flatMap(d=>d.booths.filter(f=>f instanceof M)).forEach(d=>s.add(d.id.toString()))}if(this.selectedPoiTypeFilters.length>0&&(s.clear(),this.selectedPoiTypeFilters.forEach(i=>{this.rootStore.boothStore.booths.filter(r=>r.poiTypeId===i.id).forEach(r=>s.add(r.id.toString()))})),this.details instanceof T&&(s.clear(),this.details.from instanceof I&&s.add(this.details.from.id.toString()),this.details.to instanceof I&&s.add(this.details.to.id.toString()),this.details.waypoints?.forEach(i=>s.add(i.id.toString()))),this.details instanceof I&&(s.clear(),s.add(this.details.id.toString())),this.details instanceof x&&(s.clear(),this.details.booths.filter(i=>i instanceof M).forEach(i=>s.add(i.id.toString()))),this.details instanceof R){const i=this.details;if(i.boothId){s.clear();const r=this.rootStore.boothStore.booths.find(d=>d.id===i.boothId);r&&s.add(r.id.toString())}}return s.delete(void 0),s.delete(null),s}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 l=this.details;return{mode:"details",title:l.title||l.name}}},{id:"event",className:"efp-overlay-event",priority:70,isActive:()=>this.details instanceof R,searchBoxConfig:()=>({mode:"details",title:this.details.name})},{id:"route",className:"efp-overlay-route",priority:70,isActive:()=>this.details instanceof T,searchBoxConfig:()=>{const l=this.details;return{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:()=>!P.menu&&!!P.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 V,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 T),searchBoxConfig:()=>({mode:"interface",title:v("Route planner")})}].sort((l,s)=>s.priority-l.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.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=!!dt(),this.hideHeaderLogo=!1,this.hideLogoInBooth=!1,this.disableBookmarked=!1,this.hideLanguage=!1,this.monochrome=!1,this.heatmap=!1,this.heatmapYah=!1,this.debugCircles=[],this.mapControlsHidden=!1,this.floorsControlHidden=!1,this.hideFreeOrDemo=!1,this.freeBannerDismissed=pt(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.rootStore=o,this.initializeUIScale()}get rtl(){const o=ft();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 T?this.details:null}get selectedSpeaker(){return this.details instanceof V?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,l=this.rootStore.routeStore.currentRouteLayer?.name;if(!l)return null;const s=o.findIndex(c=>c.layer?.name===l);return s===-1?null:o[s+1]?.layer?.name}get headerHeightRem(){return 0}get headerHeightPx(){return D(this.headerHeightRem)}get overlayPosition(){return!this.screenSize||this.screenSize.width>at||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 mt(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 fullSizeOffset(){const o=this.wsShown?54:0,l=this.bannerType==="free"&&!this.freeBannerDismissed?40:0,s=20;if(this.details&&!(this.details instanceof T))return o+l+s;const c=54,i=this.shouldShowSearchButtons?54:0;return o+l+c+s+i}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 it.fromMinMax({x:P.rtl?0:this.mapVisibleStart,y:this.mapVisibleTop+this.searchActionsHeightPx},{x:P.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(P.overlayCollapsed)return!1;if(w&&localStorage.getItem("forcebackdrop")==="1")return!0;if(this.overlayBottom||this.selectedExhibitor?.leadingImageUrl&&!this.selectedExhibitor?.leadingImageLinkUrl)return!1;const o=Z.satisfies({safari:">=13"}),l=Z.satisfies({chrome:">=77"});var s=/(android)/i.test(navigator.userAgent);return s?!1:o||l&&P.canvasSizePt.height*P.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:l,boothStore:s,heatmapStore:c}=this.rootStore;let i=o.exhibitors;const r=l.categories.filter(y=>y.exhibitors.length),d=s.booths;this.selectedPoiTypeFilters.length>0&&(i=i.filter(y=>y.booths.some(m=>this.selectedPoiTypeFilters.some(S=>m.poiTypeId===S.id))));let f=[];const k=!this.selectedCategoryFilters.length&&C.showCategories?r.filter(y=>It.includes(L.EXPO)?!y.name.includes("/"):!0):[],A=d.filter(y=>y instanceof _);return this.selectedCategoryFilters.length>0?f=[...i]:(C.showCompaniesAndBooths&&(f=f.concat(i)),C.showOtherSpaces&&(f=f.concat(A))),this.heatmap?[...i,...d].sort((m,S)=>c.getClicksByType(S)-c.getClicksByType(m)):this.heatmapYah?c.heatmapData?.yah?.sort((y,m)=>c.getClicksByType(m)-c.getClicksByType(y))||[]:i.length===0?d:k.concat(f.sort((y,m)=>{const S=y instanceof x&&y.featured!==void 0,B=m instanceof x&&m.featured!==void 0;if(S!==B)return S?-1:1;const O=y instanceof _&&y.title?y.title:y.name,z=m instanceof _&&m.title?m.title:m.name;return O.localeCompare(z,void 0,{sensitivity:"base",numeric:!0})}))}get searchItems(){if(this.list.type!=="search")return[];let o=this.list.text?.trim().toLowerCase()||"";const{exhibitorStore:l,categoryStore:s,boothStore:c,eventStore:i,speakerStore:r,heatmapStore:d}=this.rootStore;let f=l.exhibitors;const k=s.categories.filter(h=>h.exhibitors.length),A=c.booths,y=i.eventItems,m=r.speakers;if(this.selectedCategoryFilters.length>0&&(f=f.filter(h=>this.selectedCategoryFilters.some(p=>h.categories.some(g=>g.id===p.id)))),this.selectedPoiTypeFilters.length>0&&(f=f.filter(h=>h.booths.some(p=>this.selectedPoiTypeFilters.some(g=>p.poiTypeId===g.id)))),!o)return this.defaultSearchItems;const S=[o.replace(/&[^&=]+=[^&]+/g,"")];if(this.heatmapYah)return d.heatmapData.yah.filter(p=>Number.isNaN(Number(o))?p:p.viewCount>=Number(o)).sort((p,g)=>d.getClicksByType(g)-d.getClicksByType(p));const B=[],O=new Set,z=new Set,G=new Set,q=new Set;function Y(h){return h?h.replace(/[!@#$%^*-\.,\(\)^#$%:?_+'"\/]/g," ").replace(/\s\s+/g," "):""}function b(h,p){return!h||!p?!1:Y(h).toLowerCase().includes(Y(p).toLowerCase())}function Q(h,p){return h?b(h,p)||b(C.levelTerm+" "+h,p):!1}f.forEach(h=>{S.some(p=>b(h.name,p)||h.booths.some(g=>!p&&b(g.name,p)||Q(g.layer?.name??null,p)))&&O.add(h)}),this.selectedCategoryFilters.length>0&&A.forEach(h=>{(this.heatmap||!(h instanceof M)||!Array.from(O).find(g=>g.booths.includes(h)))&&S.some(g=>b(h.title||"",g)||b(h.name,g)||b(h.fullName,g)||Q(h.layer?.name??null,g))&&z.add(h)});const tt=y,et=m;if(tt.forEach(h=>{S.some(p=>b(h.name||"",p)||b(h.description||"",p))&&G.add(h)}),et.forEach(h=>{S.some(p=>b(h.name,p)||b(h.company,p)||b(h.jobTitle,p))&&q.add(h)}),B.push(...G),B.push(...O),this.heatmap)return B.sort((h,p)=>d.getClicksByType(p)-d.getClicksByType(h));const ot=new Map(B.map(h=>[h.id,h]));return B.map(h=>{if(!h.name)return null;const p=J(h instanceof I&&h.fullName.toLowerCase()||h.name.toLowerCase()),g=p.indexOf(J(o));if(g===-1)return null;const $={id:h.id,position:g,lowerCaseName:p,featured:!1};return h instanceof x&&($.featured=h.featured),$}).filter(Boolean).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})=>ot.get(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 l=this.fuzzySearchItems.map(({item:r})=>r),s=new Set(l.map(r=>r.name)),c=this.categoryFilteredSearchList.filter(r=>!s.has(r.name)),i=[];for(const r of c){const d=r.description;if(!d)continue;const k=(X(d)?j(d):d).toLowerCase().indexOf(o);k!==-1&&i.push({item:r,pos:k})}return i.sort((r,d)=>r.pos-d.pos),i.map(r=>r.item)}get foundInDescriptionStruct(){const o={};if(this.list?.type!=="search")return o;const l=this.list?.text?.trim().toLowerCase();return this.foundInDescription.forEach(s=>{let c=s.description;if(!c)return;X(c)&&(c=j(c));const i=c.toLowerCase().indexOf(l);if(i===-1)return;const r=3,d=i>r?i-r:0,f=c.substring(d).trim();o[s.id]=i>0?`...${f}`:f}),o}get categoryFilteredSearchList(){return this.selectedCategoryFilters.length===0?this.searchList:this.searchList.filter(o=>o instanceof x&&this.selectedCategoryFilters.some(l=>o.categories.some(s=>s.id===l.id)))}get fuzzySearchItems(){if(this.list?.type!=="search")return[];const o=this.list?.text?.trim().toLowerCase();if(!o)return this.defaultSearchItems.map(i=>({item:i,score:0,matches:[]}));const l=this.rootStore.fuzzySearchEngineStore.search(this.categoryFilteredSearchList,o),s=[],c=[];for(const i of l){const r=i.item,d=r.entity.type,f=d==="booth"?r:null,k=d==="exhibitor"?r:null,A=[r.name?.toLowerCase()??"",f?.title?.toLowerCase()??"",f?.fullName?.toLowerCase()??"",...k?.booths?.map(m=>m.name?.toLowerCase()??"")??[]];let y=1/0;for(const m of A){const S=m.indexOf(o);S!==-1&&S<y&&(y=S)}y!==1/0?s.push({result:{item:r,score:0},pos:y}):c.push(i)}return s.sort((i,r)=>i.pos-r.pos),[...s.map(i=>i.result),...c]}get listItems(){if(this.details instanceof T&&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:i})=>i).concat(this.foundInDescription):this.searchItems;return o=o.filter(i=>i.entity.type==="booth"?!i.exhibitors.length:!0),this.hasAppliedFilters?o.filter(i=>{if(this.selectedCategoryFilters.length>0&&i instanceof x&&!this.selectedCategoryFilters.some(r=>i.categories.some(d=>d.id===r.id)))return!1;if(this.selectedPoiTypeFilters.length>0){if(i instanceof x&&!i.booths.some(r=>this.selectedPoiTypeFilters.some(d=>r.poiTypeId===d.id))||i instanceof I&&!this.selectedPoiTypeFilters.some(r=>i.poiTypeId===r.id))return!1;if(i instanceof R&&i.boothId){const r=this.rootStore.boothStore.booths.find(d=>d.id===i.boothId);if(!r||!this.selectedPoiTypeFilters.some(d=>r.poiTypeId===d.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(i=>i.exhibitors.length===0&&i.bookmarkedDirectly)];case"visited":return[...this.rootStore.exhibitorStore.visited,...this.rootStore.eventStore.visited];case"category":return this.list.category.exhibitors;case E:return yt();case"filter":return this.list.items;case"sessions":return this.rootStore.eventStore.eventItems;case"exhibitors":const l=this.rootStore.exhibitorStore.exhibitors,s=this.list.text?.toLowerCase().trim();return s?l.filter(i=>i.name.toLowerCase().includes(s)):l;case"multi-point-tour":const c=this.rootStore.toursStore.getTourById(this.list.tourId);return c?!c.points||c.points.length===0?[]:c.points.map(i=>{const r=parseInt(i);if(!isNaN(r)){const f=this.rootStore.boothStore.boothById.get(r);if(f)return f}return bt(i)?.entity||null}).filter(Boolean):[];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 l=this.selectedRoute,s=[l?.from,l?.to,...l?.waypoints??[]].filter(c=>c instanceof I);return o.push(...s),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 l=["controls","levels","header","overlay"],s={...l.reduce((i,r)=>({...i,[r]:!0}),{}),...Object.keys(o).filter(i=>l.includes(i)).reduce((i,r)=>({...i,[r]:o[r]}),{})},c=typeof o.searchButtons=="boolean"?o.searchButtons:null;w&&(Object.values(s).every(Boolean)&&c===null?localStorage.removeItem(W):localStorage.setItem(W,JSON.stringify(c===null?s:{...s,searchButtons:c}))),this.mapControlsHidden=!s.controls,this.floorsControlHidden=!s.levels,this.hideHeaderLogo=!s.header,this.hideFreeOrDemo=!s.header,this.hideOverlay=!s.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:l}=vt({layerViewbox:this.rootStore.layerStore.viewboxRectangle,explicitArea:ct?H:null,layerRectangle:this.rootStore.layerStore.rectangle,sceneDef:this.rootStore.rendererService.scene,svgArea:H});this.moveToRect=o,this.moveToRectPaddingPercent=gt(l)?0:St(o,H),this.rollReset=!0}get previewMode(){const o=w?localStorage.getItem(nt)??localStorage.getItem(rt):null;return o==="true"||o==="1"||this.rootStore.fp.previewMode}get viewerMode(){const o=w?localStorage.getItem(ht)??localStorage.getItem(lt):null;return o==="true"||o==="1"||this.rootStore.fp.viewerMode}get selectedEventItem(){return this.details instanceof R?this.details:null}get defaultMapSettings(){return{zoomtime:500,center:void 0,centerxy:void 0,z:void 0,bearing:0,roll:1}}setMapSettings(o){const l={};for(const s in o)o[s]!=null&&(s==="zoomtime"?l[s]=Math.min(Math.max(o[s]||this.mapSettings.zoomtime,500),5e3):l[s]=o[s]);this.mapSettings={...this.mapSettings,...l}}resetMapSettings(){this.mapSettings={...this.defaultMapSettings}}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 l=o.toString();return console.log("View Map On Phone QR Code Url",l),l}get routeQRCodeUrl(){const o=new URL(this.baseQRCodeUrl),l=this.selectedRoute?.from,s=this.selectedRoute?.to,c=l instanceof I?l.slug:"",i=s instanceof I?s.slug:"";o.search=`?route%3A${encodeURIComponent(i)}%3A${encodeURIComponent(c)}%3Afalse`,st(o.searchParams,this.kioskData,["x","y","z"]);const r=o.toString();return console.log("Route QR Code Url",r),r}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 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=[],l=this.activeInterfaceData;return l&&(o.push(l.className),l.additionalClasses&&o.push(...l.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,l){this.listScrollTop=l,this.scrollPositions.set(o,l)}setListScrollItemId(o,l){this.listScrollItemId=l,this.scrollItemIds.set(o,l)}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 l=localStorage.getItem(U)??localStorage.getItem(N);if(l){const s=parseFloat(l);!isNaN(s)&&s>=.8&&s<=1.4&&(this._customUIScale=s)}}}setUIScale(o,l=!0){if(isNaN(o)||o<this.minUIScale||o>this.maxUIScale){ut.warn(`Invalid ui-scale value: ${o}. Must be between ${this.minUIScale} and ${this.maxUIScale}.`);return}this._customUIScale=o,l&&w&&(localStorage.setItem(U,o.toString()),localStorage.removeItem(N))}resetUIScale(){this._customUIScale=null,w&&(localStorage.removeItem(U),localStorage.removeItem(N))}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,"mapControlsDOMRect",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([u],t.prototype,"setSelectedCategoryFilters",null),e([u],t.prototype,"resetCategoryFilter",null),e([u],t.prototype,"setSearchClearMode",null),e([u],t.prototype,"setRouteTitle",null),e([u],t.prototype,"setRouteDescription",null),e([u],t.prototype,"setIsMultiPointRoute",null),e([u],t.prototype,"setTourTitle",null),e([u],t.prototype,"setTourDescription",null),e([u],t.prototype,"setIsMultiPointTour",null),e([u],t.prototype,"setPathwayOnlyMode",null),e([u],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,"fullSizeOffset",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([u],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([u],t.prototype,"setVisibility",null),e([u],t.prototype,"toggleMapOverlay",null),e([u],t.prototype,"changeZoom",null),e([u],t.prototype,"zoomIn",null),e([u],t.prototype,"zoomOut",null),e([u],t.prototype,"fitBounds",null),e([n({keepAlive:!0})],t.prototype,"selectedEventItem",null),e([a],t.prototype,"mapSettings",void 0),e([u],t.prototype,"setMapSettings",null),e([u],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,"searchBoxConfig",null),e([n],t.prototype,"searchBoxActions",null),e([n],t.prototype,"overlayInterfaceClasses",null),e([n],t.prototype,"isOverlayOpen",null),e([u],t.prototype,"setOverlayScrolled",null),e([u],t.prototype,"setListScrollTop",null),e([u],t.prototype,"setListScrollItemId",null),e([u],t.prototype,"getListScrollTop",null),e([u],t.prototype,"getListScrollItemId",null),e([u],t.prototype,"clearListScroll",null),e([n],t.prototype,"bannerType",null),e([n],t.prototype,"isBannerVisible",null),e([u],t.prototype,"setCurrentBanner",null),e([a],t.prototype,"forceShowDetails",void 0),e([u],t.prototype,"setForceShowDetails",null),e([n],t.prototype,"showRouteInstantly",null),e([a],t.prototype,"buildRoute",void 0),e([u],t.prototype,"startBuildRoute",null),e([a],t.prototype,"globalErrorMessages",void 0),e([u],t.prototype,"setGlobalErrorMessage",null),e([u],t.prototype,"popGlobalErrorMessage",null),e([u],t.prototype,"initializeUIScale",null),e([u],t.prototype,"setUIScale",null),e([u],t.prototype,"resetUIScale",null),e([a],t.prototype,"setKioskModeEnabled",void 0),e([u],t.prototype,"enableSetKioskMode",null),e([a],t.prototype,"kioskData",void 0),e([u],t.prototype,"setKioskData",null);function F(K,o,l=[]){const s=[];return K.forEach(c=>{c instanceof x?s.push(...c.booths):c instanceof I?s.push(c):c instanceof R?c.boothId&&s.push(o.find(i=>i.id===c.boothId)):c instanceof V&&l.filter(i=>i.speakers.some(r=>r.id===c.id)&&i.boothId).forEach(i=>s.push(o.find(r=>r.id===i.boothId)))}),new Set(s.filter(Boolean))}
@@ -1 +1 @@
1
- import{initBookmarkedFromUrl as m}from"./init-bookmarks";import{iniAllBooths as o}from"./init-booths";import r from"./init-categories";import t from"./init-events";import n from"./init-exhibitors";import{initHeatmap as p}from"./init-heatmap";import f from"./init-layers";import{initPoiTypes as a}from"./init-poiTypes";import l from"./init-speakers";import e from"./init-ui";export default function k(i){f(i),t(i),l(i),n(i),r(i),a(i),o(i),m(i),p(i),e(i)}
1
+ import{iniAllBooths as m}from"./init-booths";import t from"./init-categories";import o from"./init-events";import r from"./init-exhibitors";import{initHeatmap as n}from"./init-heatmap";import p from"./init-layers";import{initPoiTypes as f}from"./init-poiTypes";import a from"./init-speakers";import e from"./init-ui";export default function l(i){p(i),o(i),a(i),r(i),t(i),f(i),m(i),n(i),e(i)}
@@ -1,6 +1,6 @@
1
- import { Booth } from '../BoothStore';
2
- import { Layer } from '../LayerStore';
3
- import RootStore from '../RootStore';
1
+ import { type Booth } from '../BoothStore';
2
+ import { type Layer } from '../LayerStore';
3
+ import type RootStore from '../RootStore';
4
4
  export declare function iniAllBooths(store: RootStore): void;
5
5
  export default function initBooths(store: RootStore, layer: Layer): Booth[];
6
6
  //# sourceMappingURL=init-booths.d.ts.map
@@ -1 +1 @@
1
- import{Box as v,degToRad as A,radToDeg as z}from"@expofp/geometry";import D from"color";import*as F from"d3-selection";import{autorun as M}from"mobx";import E from"../../data";import{getLayerSvg as O,getTrianglesFromFpPaths as T}from"../../data/svg";import{getNextId as U}from"../../tools/id";import B from"../../tools/logger";import N from"../../tools/settings";import{generateUniqueSlug as W}from"../../tools/slug";import{sortByName as V}from"../../utils";import{areLayersEnabled as $}from"../../utils/areLayersEnabled";import{getStorage as P,saveStorage as G}from"../../utils/entity-storage";import{extractMetaFromString as H}from"../../utils/extractMetaFromString";import{RegularBooth as x,SpecialBooth as L}from"../BoothStore";import{Exhibitor as X}from"../ExhibitorStore";import{uiState as j}from"../index";const C=new Map,k=[];export function iniAllBooths(t){C.clear(),k.length=0;const d=parseInt(_("copy_exh"));for(const i of E.booths||[]){const{text:l,meta:c}=H(i.name),o=i.special?new L:new x;Object.assign(o,i),o.meta=c,o.slug=W(o.name),C.set(o.name.toLowerCase(),o),J(o);const m=o;m.exhibitors=[];for(const u of i.exhibitors){const b=t.exhibitorStore.exhibitorById.get(u);b&&(m.exhibitors.push(b),d&&R(b,m,d),b.booths.push(m))}!i.exhibitors.length&&d&&R(null,m,d),o.schedule=t.eventStore.eventItems.filter(u=>u.boothId===o.id),o.name=l,k.push(o)}k.sort((i,l)=>i.name.localeCompare(l.name,void 0,{sensitivity:"base",numeric:!0}));for(const i of t.exhibitorStore.exhibitors)V(i.booths);t.boothStore.booths=k,B.log("initBooths",t.boothStore.booths.length),q(t)}function q(t){const l=(P("bookmarked").booths||[]).filter(c=>{const o=t.boothStore.boothById.get(c);return o&&o.exhibitors.length===0});t.boothStore.replaceBookmarked(l),M(()=>{const c=P("bookmarked"),o=t.boothStore.booths.filter(m=>m.exhibitors.length===0&&m.bookmarkedDirectly).map(m=>m.id);G("bookmarked",{exhibitors:c.exhibitors,events:c.events,speakers:c.speakers,booths:o})})}export default function Q(t,d){const i=d.name,{boothStore:l,layerStore:c}=t,o=[],m=$(),u=F.select(O(d)).selectAll(`[data-layer='${i}'] > [data-tagname='efp-booth'], [data-layer='${i}'] > g[id^=b], [data-layer='${i}'] > rect[id^=b]`).nodes();for(const r of u){const S=r.closest("svg > [data-layer]").attributes["data-layer"]?.value;if(!S)continue;let a,I=!1;r.tagName==="rect"?a=r:(a=Array.from(r.children).find(h=>h.tagName==="rect"),I=a===r.firstElementChild);const g=(r.id||r.getAttribute("data-name")).substring(1).toLowerCase();let e=C.get(g),n=e instanceof x?e:null,w=e instanceof L?e:null;if(e||(B.error("SVG booth rect not found in the event data:",g),e=n=new x,e.id=U(),e.name=g.toUpperCase(),e.slug=W(g),e.error=!0,e.exhibitors=[],C.set(g,e)),o.push(e),e.layer=m?c.layers.find(h=>h.name===S):null,e.borderColor=a?.getAttribute("stroke")||a?.style.stroke||N.boothBorderColor||"#FFFFFF",e.borderWidth=parseFloat(a?.getAttribute("stroke-width")||a?.style.strokeWidth),isNaN(e.borderWidth)&&(e.borderWidth=l.borderWidth),!j.heatmap)e.labelColor=a?.getAttribute("data-label-color");else{const h=t.heatmapStore.getTotalClicksByBooth(e),f=D(t.heatmapStore.getColorByClicks(h));e.labelColor=f.darken(.3).isLight()?"#555":"#fff"}e.rect=a?v.fromSvg(a):null,e.noLabels=!!a?.dataset.nolabel||a?.id.startsWith("no"),n?(n.availColor=r.getAttribute("data-avail-color")||a?.getAttribute("data-avail-color")||n.availColor,n.soldColor=r.getAttribute("data-sold-color")||a?.getAttribute("data-sold-color")||n.soldColor,n.holdColor=r.getAttribute("data-hold-color")||a?.getAttribute("data-hold-color")||n.holdColor,n.size=E.dimensionless?null:n.size||r.getAttribute("data-size"),n.status==="reserved"?n.reserved=!0:n.status==="onhold"&&(n.onHold=!0)):w.color=(parseInt(a.getAttribute("data-poi-type"))>0?a.style?.fill:r.getAttribute("data-color")||a.getAttribute("data-color"))||w.color;const y=a?.getAttribute("transform");if(y){const h=y.match(/translate\(([-0-9.]+) ([-0-9.]+)\) rotate\(([-0-9.]+)\)/);if(h){const s=parseFloat(h[3]);e.rotate=A(s)}else{const s=y.match(/rotate\(([-0-9.]+).*\)/);if(s){const p=parseFloat(s[1]);e.rotate=A(p)}else{const p=y.match(/matrix\(\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*\)/);p&&(e.rotate=Math.asin(parseFloat(p[2])))}}if(Math.abs(z(e.rotate))>180){e.rotate+=A(90);const s=e.rect;e.rect=new v(s.center.x-s.size.height/2,s.center.y-s.size.width/2,s.size.height,s.size.width)}}if(r.tagName==="g"){e.paths=[],e.pathsWithRect=I;var b=[];for(const h of F.select(r).selectAll("path, rect").nodes())if(h.tagName==="path"){const f=h;if(f.tagName!=="path")continue;const s=parseInt(f.getAttribute("data-index")),p=!!f.getAttribute("data-unblinking");e.paths.push({index:s,color:f.style.fill,unblinking:p}),a||b.push(...T(s,i))}if(b.length){const h=b.flatMap(f=>f.map(s=>({x:s[0],y:s[1]})));e.rect=v.fromPoints(h),e.noLabels=!0}}}for(const r of o)r.rect?r.store=l:(B.error("event data booth not found in SVG:",r.name,r),o.splice(o.indexOf(r),1));return o}function _(t){return new URLSearchParams(window.location.search).get(t)}function R(t,d,i){let l=new X;l.name="EXHIBITOR NAME",l.slug="exhibitor-name",l.booths=[],l=t||l;for(let c=0;c<i;c++){const o={...l,id:Date.now()};d.exhibitors.push(o)}}function J(t){N.EXPO==="cbresupplypartner"&&t instanceof x&&!t.availColor&&t.type&&(t.type.indexOf("Premium A - 2m height restriction Passport")!==-1?t.availColor="#939393":t.type.indexOf("No free-standing")!==-1?t.availColor="#BA3DC8":t.type.endsWith("Passport")?t.availColor="#939393":t.type.startsWith("Premium A - 2m")?t.availColor="#FF9E4E":t.type.startsWith("Premium A - 4m")?t.availColor="#EA4335":t.type.startsWith("Premium B - 2m")?t.availColor="#523BC0":t.type.startsWith("Premium C - 2.4m")&&(t.availColor="#3ECC78"))}
1
+ import{Box as v,degToRad as S,radToDeg as R}from"@expofp/geometry";import M from"color";import*as W from"d3-selection";import{autorun as O}from"mobx";import w from"../../data";import{getLayerSvg as T,getTrianglesFromFpPaths as V}from"../../data/svg";import{getNextId as G}from"../../tools/id";import y from"../../tools/logger";import P from"../../tools/settings";import{generateUniqueSlug as E}from"../../tools/slug";import{sortByName as $}from"../../utils";import{areLayersEnabled as U}from"../../utils/areLayersEnabled";import{getStorage as z,saveStorage as j}from"../../utils/entity-storage";import{extractMetaFromString as q}from"../../utils/extractMetaFromString";import{RegularBooth as C,SpecialBooth as L}from"../BoothStore";import{uiState as H}from"../index";const k=new Map,x=[];export function iniAllBooths(e){k.clear(),x.length=0;for(const l of w.booths||[]){const{text:d,meta:b}=q(l.name),r=l.special?new L:new C;Object.assign(r,l),r.meta=b,r.slug=E(r.name),k.set(r.name.toLowerCase(),r),K(r);const n=r;n.exhibitors=[];for(const m of l.exhibitors??[]){const p=e.exhibitorStore.exhibitorById.get(m);p&&(n.exhibitors.push(p),p.booths.push(n))}r.schedule=e.eventStore.eventItems.filter(m=>m.boothId===r.id),r.name=d,x.push(r)}x.sort((l,d)=>l.name.localeCompare(d.name,void 0,{sensitivity:"base",numeric:!0}));for(const l of e.exhibitorStore.exhibitors)$(l.booths);e.boothStore.booths=x,y.log("initBooths",e.boothStore.booths.length),X(e)}function X(e){const b=(z("bookmarked").booths||[]).filter(r=>{const n=e.boothStore.boothById.get(r);return n&&n.exhibitors.length===0});e.boothStore.replaceBookmarked(b),O(()=>{const r=z("bookmarked"),n=e.boothStore.booths.filter(m=>m.exhibitors.length===0&&m.bookmarkedDirectly).map(m=>m.id);j("bookmarked",{exhibitors:r.exhibitors,events:r.events,speakers:r.speakers,booths:n})})}export default function J(e,l){const d=l.name,{boothStore:b,layerStore:r}=e,n=[],m=U(),p=W.select(T(l)).selectAll(`[data-layer='${d}'] > [data-tagname='efp-booth'], [data-layer='${d}'] > g[id^=b], [data-layer='${d}'] > rect[id^=b]`).nodes();for(const o of p){const F=o.closest("svg > [data-layer]").getAttribute("data-layer");if(!F)continue;let a,I=!1;o.tagName==="rect"?a=o:(a=Array.from(o.children).find(h=>h.tagName==="rect"),I=a===o.firstElementChild);const N=o.id||o.getAttribute("data-name");if(!N){y.error("SVG booth element has neither id nor data-name:",o);continue}const u=N.substring(1).toLowerCase();let t=k.get(u),i=t instanceof C?t:null;const A=t instanceof L?t:null;if(t||(y.error("SVG booth rect not found in the event data:",u),t=i=new C,t.id=G(),t.name=u.toUpperCase(),t.slug=E(u),t.error=!0,t.exhibitors=[],k.set(u,t)),n.push(t),t.layer=m?r.layers.find(h=>h.name===F):null,t.borderColor=a?.getAttribute("stroke")||a?.style.stroke||P.boothBorderColor||"#FFFFFF",t.borderWidth=parseFloat(a?.getAttribute("stroke-width")||a?.style.strokeWidth),isNaN(t.borderWidth)&&(t.borderWidth=b.borderWidth),!H.heatmap)t.labelColor=a?.getAttribute("data-label-color");else{const h=e.heatmapStore.getTotalClicksByBooth(t),f=M(e.heatmapStore.getColorByClicks(h));t.labelColor=f.darken(.3).isLight()?"#555":"#fff"}t.rect=a?v.fromSvg(a):null,t.noLabels=!!a?.dataset.nolabel||a?.id.startsWith("no"),i?(i.availColor=o.getAttribute("data-avail-color")||a?.getAttribute("data-avail-color")||i.availColor,i.soldColor=o.getAttribute("data-sold-color")||a?.getAttribute("data-sold-color")||i.soldColor,i.holdColor=o.getAttribute("data-hold-color")||a?.getAttribute("data-hold-color")||i.holdColor,i.size=w.dimensionless?null:i.size||o.getAttribute("data-size"),i.status==="reserved"?i.reserved=!0:i.status==="onhold"&&(i.onHold=!0)):A&&(A.color=(parseInt(a.getAttribute("data-poi-type")??"")>0?a.style?.fill:o.getAttribute("data-color")||a.getAttribute("data-color"))||A.color);const g=a?.getAttribute("transform");if(g){const h=g.match(/translate\(([-0-9.]+) ([-0-9.]+)\) rotate\(([-0-9.]+)\)/);if(h){const s=parseFloat(h[3]);t.rotate=S(s)}else{const s=g.match(/rotate\(([-0-9.]+).*\)/);if(s){const c=parseFloat(s[1]);t.rotate=S(c)}else{const c=g.match(/matrix\(\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*(?:,|\s)\s*([-0-9.]+)\s*\)/);c&&(t.rotate=Math.asin(parseFloat(c[2])))}}if(Math.abs(R(t.rotate))>180){t.rotate+=S(90);const s=t.rect;t.rect=new v(s.center.x-s.size.height/2,s.center.y-s.size.width/2,s.size.height,s.size.width)}}if(o.tagName==="g"){t.paths=[],t.pathsWithRect=I;const h=[];for(const f of W.select(o).selectAll("path, rect").nodes())if(f.tagName==="path"){const s=f;if(s.tagName!=="path")continue;const c=parseInt(s.getAttribute("data-index")??""),D=!!s.getAttribute("data-unblinking");t.paths.push({index:c,color:s.style.fill,unblinking:D}),a||h.push(...V(c,d))}if(h.length){const f=h.flatMap(s=>s.map(c=>({x:c[0],y:c[1]})));t.rect=v.fromPoints(f),t.noLabels=!0}}}const B=n.filter(o=>o.rect?!0:(y.error("event data booth not found in SVG:",o.name,o),!1));for(const o of B)o.store=b;return B}function K(e){P.EXPO==="cbresupplypartner"&&e instanceof C&&!e.availColor&&e.type&&(e.type.indexOf("Premium A - 2m height restriction Passport")!==-1?e.availColor="#939393":e.type.indexOf("No free-standing")!==-1?e.availColor="#BA3DC8":e.type.endsWith("Passport")?e.availColor="#939393":e.type.startsWith("Premium A - 2m")?e.availColor="#FF9E4E":e.type.startsWith("Premium A - 4m")?e.availColor="#EA4335":e.type.startsWith("Premium B - 2m")?e.availColor="#523BC0":e.type.startsWith("Premium C - 2.4m")&&(e.availColor="#3ECC78"))}
@@ -1,4 +1,4 @@
1
- import{Point as h}from"@expofp/geometry";import{autorun as s,reaction as v,runInAction as g}from"mobx";import{ResizeObserver as k}from"resize-observer";import{KIOSK_ENABLE_KEY as l,VISIBILITY_STORAGE_KEY as w}from"../../constants";import E from"../../data";import y from"../../tools/logger";import{isWebGlSupported as x}from"../../utils";import{detectLimitedModeViaImage as b}from"../../utils/detectLimitedModeViaImage";import{isLocalStorageAvailable as a}from"../../utils/localStorage";import c from"../../utils/preview-exhibitor";let o;export default function I(i){const{uiState:e,exhibitorStore:u,searchStore:T}=i;e.rootElement=window.__efpElement,f(e.rootElement.clientWidth,e.rootElement.clientHeight),o=new k(t=>{t.forEach(r=>{f(r.contentRect.width,r.contentRect.height)})}),o.observe(e.rootElement),c&&(e.previewExhibitor=u.exhibitorById.get(c.id));const n=typeof matchMedia<"u"?matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`):null;n&&n.addEventListener&&n.addEventListener("change",()=>{e.devicePixelRatio=window.devicePixelRatio});const p=c||!x?"full":"medium";E.isRebooking&&e.list.type==="search"&&!e.list.text&&i.selectExhibitors(),e.desiredOverlaySize=p,s(()=>{(e.searchFocused||e.menu)&&e.overlayPosition!=="left"&&(e.desiredOverlaySize="full")}),s(()=>{e.overlaySize!=="full"&&e.menu&&(e.menu=!1)}),e.wsShown||(e.wsStarted=!0),e.kiosk=a&&localStorage.getItem(l)==="1",window.__resett=d;function S(){i.reset()}var m;function d(){e.kiosk&&(y.log("zzz2","reset timer"),clearTimeout(m),m=setTimeout(S,3e4),e.inIdle=!1)}s(()=>{const t=e.list;t.type==="search"&&(t.text==="kkiosk"?e.kiosk=!0:t.text==="nokkiosk"&&(e.kiosk=!1))}),v(()=>e.kiosk,t=>{a&&(t?(localStorage.setItem(l,"1"),d()):localStorage.setItem(l,"0"))}),a&&e.setVisibility(JSON.parse(localStorage.getItem(w))||{});function f(t,r){g("uiState.screenSize",()=>{e.screenSize=new h(t,r)})}z(i)}export function destroyUiHandlers(){o&&(o.disconnect(),o=null)}async function z(i){try{if(!await b())return;i.uiState.setGlobalErrorMessage({title:"Unsupported Environment Detected",body:`
1
+ import{Point as v}from"@expofp/geometry";import{autorun as l,reaction as g,runInAction as w}from"mobx";import{ResizeObserver as E}from"resize-observer";import{applyKioskMode as u}from"../../components/Kiosk/kiosk-mode";import{KIOSK_ENABLE_KEY as s,VISIBILITY_STORAGE_KEY as y}from"../../constants";import x from"../../data";import b from"../../tools/logger";import{isWebGlSupported as k}from"../../utils";import{detectLimitedModeViaImage as I}from"../../utils/detectLimitedModeViaImage";import{isLocalStorageAvailable as a}from"../../utils/localStorage";import c from"../../utils/preview-exhibitor";let o=null;export default function z(i){const{uiState:e,exhibitorStore:p}=i;if(e.rootElement=window.__efpElement,f(e.rootElement.clientWidth,e.rootElement.clientHeight),o=new E(t=>{t.forEach(r=>{f(r.contentRect.width,r.contentRect.height)})}),o.observe(e.rootElement),c){const t=p.exhibitorById.get(c.id);t&&(e.previewExhibitor=t)}const n=typeof matchMedia<"u"?matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`):null;n&&n.addEventListener&&n.addEventListener("change",()=>{e.devicePixelRatio=window.devicePixelRatio});const h=c||!k?"full":"medium";x.isRebooking&&e.list.type==="search"&&!e.list.text&&i.selectExhibitors(),e.desiredOverlaySize=h,l(()=>{(e.searchFocused||e.menu)&&e.overlayPosition!=="left"&&(e.desiredOverlaySize="full")}),l(()=>{e.overlaySize!=="full"&&e.menu&&(e.menu=!1)}),e.wsShown||(e.wsStarted=!0),e.kiosk=a&&localStorage.getItem(s)==="1",window.__resett=d;function S(){i.reset()}let m;function d(){e.kiosk&&(b.log("zzz2","reset timer"),clearTimeout(m),m=setTimeout(S,3e4),e.inIdle=!1)}l(()=>{const t=e.list;t.type==="search"&&(t.text==="kiosk=1"?u(e,!0):t.text==="kiosk=0"&&u(e,!1))}),g(()=>e.kiosk,t=>{a&&(t?(localStorage.setItem(s,"1"),d()):localStorage.setItem(s,"0"))}),a&&e.setVisibility(JSON.parse(localStorage.getItem(y)??"null")||{});function f(t,r){w("uiState.screenSize",()=>{e.screenSize=new v(t,r)})}T(i)}export function destroyUiHandlers(){o&&(o.disconnect(),o=null)}async function T(i){try{if(!await I())return;i.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.
@@ -1 +1 @@
1
- import{DEBUG_KEY as i,SET_KIOSK_KEY as a}from"../constants";import n from"../data";import s,{uiState as l}from"../store";import{handleDebugMode as c}from"../tools/handleDebugMode";import{getRebookingTokenFromQuery as m}from"../tools/rebookingUrl";export function handleCustomCommand(o){if(o=o.trim(),o.toLowerCase()==="__addcache")navigator.serviceWorker.getRegistrations().then(r=>{if(!r.length)return alert("No registered service workers.");var t=[];s.exhibitorStore.exhibitors.forEach(e=>{e.logo?.url&&t.push(e.logo.url),t.push(...e.gallery||[])}),Promise.all(t.map(e=>fetch(e))).then(e=>alert(`${e.length} images loaded.`)).catch(e=>alert(e))});else if(/^copy_exh=\d+/.test(o)){const r=o.match(/^copy_exh=(\d+)/);if(r&&!isNaN(parseInt(r[1]))){const e=`${window.location.origin+window.location.pathname}?${r[0]}`;window.location.replace(e)}}else{if(m())return!0;o.startsWith(i)?c():o===(n.customSetKiosk||a)&&l.enableSetKioskMode(!0)}return!1}
1
+ import{DEBUG_KEY as i,SET_KIOSK_KEY as a}from"../constants";import s from"../data";import l,{uiState as m}from"../store";import{handleDebugMode as n}from"../tools/handleDebugMode";import{getRebookingTokenFromQuery as f}from"../tools/rebookingUrl";export function handleCustomCommand(r){if(r=r.trim(),r.toLowerCase()==="__addcache")navigator.serviceWorker.getRegistrations().then(t=>{if(!t.length)return alert("No registered service workers.");const o=[];l.exhibitorStore.exhibitors.forEach(e=>{e.logo?.url&&o.push(e.logo.url),o.push(...e.gallery||[])}),Promise.all(o.map(e=>fetch(e))).then(e=>alert(`${e.length} images loaded.`)).catch(e=>alert(e))});else{if(f())return!0;r.startsWith(i)?n():r===(s.customSetKiosk||a)&&m.enableSetKioskMode(!0)}return!1}
@@ -28,6 +28,13 @@ export declare function expandRectByPercent(rect: Box, pct: number): Box;
28
28
  export declare function getVenueFitRect(sceneDef: SceneDef | null | undefined, baseRect: Box): Box | null;
29
29
  /** Where a resolved Fit-to-screen rectangle came from (most → least specific). */
30
30
  export type VenueFitSource = 'layer-viewbox' | 'explicit-viewbox' | 'layer-rectangle' | 'scene-derived' | 'svg-area';
31
+ /**
32
+ * Whether a resolved fit rect *is* the framing, so a fit must show it exactly:
33
+ * true for the authored boxes, and for the scene-derived one because it already
34
+ * carries its adaptive margin. The remaining sources are bare geometry and still
35
+ * want each renderer's own breathing room around them.
36
+ */
37
+ export declare function fitRectIsFraming(source: VenueFitSource): boolean;
31
38
  export interface VenueFitInputs {
32
39
  /** Union of authored per-layer viewboxes (`LayerStore.viewboxRectangle`). */
33
40
  layerViewbox?: Box | null;
@@ -1 +1 @@
1
- import{Box as s}from"@expofp/geometry";const x="areamap";export function getSceneVenueRect(e){const n=e?.rootLayer?.children;if(!n?.length)return null;let t=1/0,o=1/0,a=-1/0,c=-1/0;const f=(i,r)=>{!Number.isFinite(i)||!Number.isFinite(r)||(i<t&&(t=i),r<o&&(o=r),i>a&&(a=i),r>c&&(c=r))},u=i=>{const r=i;r.children&&r.children.forEach(u),r.bounds?.min&&r.bounds?.max&&(f(r.bounds.min.x,r.bounds.min.y),f(r.bounds.max.x,r.bounds.max.y)),r.points&&r.points.forEach(l=>f(l.x,l.y))};for(const i of n){const r=i.name;typeof r=="string"&&r.toLowerCase()===x||u(i)}return t>a||o>c?null:s.fromMinMax({x:t,y:o},{x:a,y:c})}export function getVenueFitMarginPercent(e,n){return!e||!n||n.area<=0||e.area/n.area>.1?.15:.25}export function expandRectByPercent(e,n){return n?e.expand({x:e.size.width*n,y:e.size.height*n}):e}export function getVenueFitRect(e,n){const t=getSceneVenueRect(e);return t?expandRectByPercent(t,getVenueFitMarginPercent(t,n)):null}export function resolveVenueFitRect(e){if(e.layerViewbox)return{rect:e.layerViewbox,source:"layer-viewbox"};if(e.explicitArea)return{rect:e.explicitArea,source:"explicit-viewbox"};if(e.layerRectangle)return{rect:e.layerRectangle,source:"layer-rectangle"};const n=getVenueFitRect(e.sceneDef,e.svgArea);return n?{rect:n,source:"scene-derived"}:{rect:e.svgArea,source:"svg-area"}}
1
+ import{Box as x}from"@expofp/geometry";const s="areamap";export function getSceneVenueRect(e){const r=e?.rootLayer?.children;if(!r?.length)return null;let t=1/0,o=1/0,a=-1/0,c=-1/0;const f=(i,n)=>{!Number.isFinite(i)||!Number.isFinite(n)||(i<t&&(t=i),n<o&&(o=n),i>a&&(a=i),n>c&&(c=n))},u=i=>{const n=i;n.children&&n.children.forEach(u),n.bounds?.min&&n.bounds?.max&&(f(n.bounds.min.x,n.bounds.min.y),f(n.bounds.max.x,n.bounds.max.y)),n.points&&n.points.forEach(l=>f(l.x,l.y))};for(const i of r){const n=i.name;typeof n=="string"&&n.toLowerCase()===s||u(i)}return t>a||o>c?null:x.fromMinMax({x:t,y:o},{x:a,y:c})}export function getVenueFitMarginPercent(e,r){return!e||!r||r.area<=0||e.area/r.area>.1?.15:.25}export function expandRectByPercent(e,r){return r?e.expand({x:e.size.width*r,y:e.size.height*r}):e}export function getVenueFitRect(e,r){const t=getSceneVenueRect(e);return t?expandRectByPercent(t,getVenueFitMarginPercent(t,r)):null}export function fitRectIsFraming(e){return e==="layer-viewbox"||e==="explicit-viewbox"||e==="scene-derived"}export function resolveVenueFitRect(e){if(e.layerViewbox)return{rect:e.layerViewbox,source:"layer-viewbox"};if(e.explicitArea)return{rect:e.explicitArea,source:"explicit-viewbox"};if(e.layerRectangle)return{rect:e.layerRectangle,source:"layer-rectangle"};const r=getVenueFitRect(e.sceneDef,e.svgArea);return r?{rect:r,source:"scene-derived"}:{rect:e.svgArea,source:"svg-area"}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.21.1",
3
+ "version": "3.23.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/expofp/efp-app.git",
@@ -72,14 +72,14 @@
72
72
  "tslib": "^2.3.0",
73
73
  "uuid": "^9.0.1",
74
74
  "zod": "4.4.3",
75
- "@expofp/config": "3.21.1",
76
- "@expofp/debug": "3.21.1",
77
- "@expofp/geometry": "3.21.1",
78
- "@expofp/resolve": "3.21.1",
79
- "@expofp/schema": "3.21.1",
80
- "@expofp/ui": "3.21.1",
81
- "@expofp/utils": "3.21.1",
82
- "@expofp/wayfinding": "3.21.1"
75
+ "@expofp/config": "3.23.0",
76
+ "@expofp/debug": "3.23.0",
77
+ "@expofp/resolve": "3.23.0",
78
+ "@expofp/geometry": "3.23.0",
79
+ "@expofp/schema": "3.23.0",
80
+ "@expofp/ui": "3.23.0",
81
+ "@expofp/wayfinding": "3.23.0",
82
+ "@expofp/utils": "3.23.0"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@babel/plugin-proposal-decorators": "^8.0.2",
@@ -87,6 +87,7 @@
87
87
  "@sentry/vite-plugin": "^5.4.0",
88
88
  "@types/color": "^3.0.7",
89
89
  "@types/d3": "^7.1.0",
90
+ "@types/d3-selection": "^3.0.11",
90
91
  "@types/history": "^4.7.11",
91
92
  "@types/lz-string": "1.3.32",
92
93
  "@types/react": "^19.2.17",
@@ -1,9 +0,0 @@
1
- import RootStore from '../RootStore';
2
- /**
3
- * Parses bookmarks from the ?b= / ?ba= URL parameter and applies them to all stores.
4
- * Must be called AFTER all entities (exhibitors, events, speakers, booths) are loaded.
5
- * Direct read on purpose (plan §4.11): only the ids are consumed here at store init —
6
- * the open/land action for the same keys is url-dispatch's `legacyBookmarks` arm.
7
- */
8
- export declare function initBookmarkedFromUrl(rootStore: RootStore): void;
9
- //# sourceMappingURL=init-bookmarks.d.ts.map
@@ -1 +0,0 @@
1
- import{getStorage as m,saveStorage as d}from"../../utils/entity-storage";export function initBookmarkedFromUrl(t){const n=new URL(window.location.href),k=n.searchParams.get("b"),h=n.searchParams.get("ba"),p=k||h;if(!p)return;const s=p.split("|").map(e=>Number.parseInt(e,10)).filter(e=>Number.isFinite(e)&&e>0),c=new Set(t.eventStore.eventItems.map(e=>e.id)),o=s.filter(e=>t.exhibitorStore.exhibitorById.has(e)),r=s.filter(e=>c.has(e)),a=s.filter(e=>t.speakerStore.speakersMap.has(e)),i=s.filter(e=>{const b=t.boothStore.boothById.get(e);return b&&b.exhibitors.length===0});if(h){const e=m("bookmarked");o.push(...e.exhibitors),r.push(...e.events),a.push(...e.speakers),i.push(...e.booths)}d("bookmarked",{exhibitors:o,events:r,speakers:a,booths:i}),t.exhibitorStore.replaceBookmarked(o),t.eventStore.replaceBookmarked(r),t.speakerStore.replaceBookmarked(a),t.boothStore.replaceBookmarked(i)}