UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) 6.37 kB
import{getConfig as v}from"@expofp/config";import{PREVIEW_MODE_ATTRIBUTE as T}from"./constants";import c from"./tools/base-runtime-url";import{loadCss as x,loadFont as m}from"./tools/loaders";import R from"./tools/logger";import{initSentry as j}from"./tools/sentry";import{heatmapEnabled as D}from"./utils/heatmap-enabled";import{initI18n as F}from"./utils/i18n";import A from"./utils/is-debug";import V from"./utils/is-localhost";import _ from"./utils/is-webview";import{loadCustomCss as z}from"./utils/loadCustomCss";import{loadIcons as G}from"./utils/loadIcons";import E from"./utils/use-shadow";function e(){throw new Error("FloorPlan not ready")}export default class H{get ready(){return this._ready}get previewMode(){return v().previewMode||this.element.hasAttribute(T)}get allowConsent(){return this.consent==="ask"?void 0:this.consent==="granted"}selectBooth(t){e()}selectExhibitor(t){e()}selectRoute(t,i){e()}getOptimizedRoutes(t){e()}selectCurrentPosition(t,i,s){e()}setBookmarks(t){e()}setEntitiesBookmarks(t){e()}setEntitiesVisited(t){e()}setMarkers(t){e()}updateLayerVisibility(t,i){e()}getCenterCoordinates(){e()}applyParameters(t){e()}exhibitorsList(){e()}boothsList(){e()}categoriesList(){e()}selectCategory(t){e()}select(t){e()}showList(t){e()}selectTour(t){e()}openPlanner(t){e()}startBuildRoute(){e()}getVisibility(){e()}setVisibility(t){e()}findLocation(){e()}zoomIn(){e()}zoomOut(){e()}zoomTo(t,i){e()}switchView(){e()}setCamera(t){e()}getCamera(){e()}fitBounds(){e()}getBounds(t){e()}getBoothRect(t){e()}convertToGeo(t,i){e()}getGeoConfig(){e()}unstable_destroy(){e()}highlightExhibitors(t){e()}highlightBooths(t){e()}onCurrentPositionChanged(t){e()}search(t){e()}getFloors(){e()}onFloorActivated(t){e()}activateFloor(t){e()}showPathway(t,i){e()}showPathwayOnly(t,i){e()}hidePathways(){e()}showSearch(){e()}changeLanguage(t){e()}isGpsTrackingEnabled(){e()}setGpsTrackingEnabled(t){e()}deselectCurrentPosition(){e()}deselectRoute(){e()}reset(){e()}selectAccessibleRoute(t){e()}constructor(t,i){this.icons=new Map,this.enableRotation=!0,this.alwaysShowSidebar=!1;const s=v();if(this.noOverlay=!!s.noOverlay,this.offHistory=!!s.offHistory,this.ignoreQuery=s.ignoreQuery,this.consent=s.consent,this.consent==="ask"&&(_?this.consent="granted":V&&!A&&(this.consent="denied")),this.onBoothClick=t.onBoothClick,this.onBookmarkClick=t.onBookmarkClick,this.onVisitedClick=t.onVisitedClick,this.onCategoryClick=t.onCategoryClick,this.onDetails=t.onDetails,this.onExhibitorCustomButtonClick=t.onExhibitorCustomButtonClick,this.onGetCoordsClick=t.onGetCoordsClick,this.onMarkerClick=t.onMarkerClick,this.onFpConfigured=t.onFpConfigured,this.onDirection=t.onDirection,this.onInit=t.onInit,this.onCurrentPositionChanged=t.onCurrentPositionChanged,this.onFloorActivated=t.onFloorActivated,this.onLeaveEvent=t.onLeaveEvent,this.viewerMode=!!s.viewerMode,this.disableRuntimeAlerts=s.disableRuntimeAlerts,this.maplibre=s.maplibre,window.__efpMaplibre=s.maplibre,this._ready=new Promise((d,a)=>{this.resolveReady=d}),this.element=i,i.__expofp)throw new Error("Element already in use");i.__expofp=this;const y=s.expo;j({eventId:y||"",isWebview:_}),this.eventId=y,window.__efpEvent=y,window.__efpElement=i;const h=document.createElement("div");h.style.height="100%",h.style.width="100%",i.appendChild(h);let n;if(E){n=h.attachShadow({mode:"open"});const d=n,a=document;d.createElement=(...r)=>a.createElement(...r),d.createElementNS=(...r)=>a.createElementNS(...r),d.createTextNode=(...r)=>a.createTextNode(...r)}else n=h;const f=document.createElement("div");f.style.height="100%",f.style.width="100%",n.appendChild(f),E&&Object.defineProperty(f,"ownerDocument",{value:n}),window.__efpShadowDOMStyleParent=E?n:void 0,this.renderTarget=f,R.log("Instantiating ExpoFP floorplan",i,y);let b=0;this.efpStyleLoadHandler=function(d){const a=window.__efpStyleElements;for(;b<a.length;){const r=a[b];n.appendChild(r),b++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const g=this;(async function(){const a=v();await F();const r=new URLSearchParams(window.location.search);let p,w;if(a?.trackerUrl)try{p=new URL(a.trackerUrl),w=p.searchParams.get("expoId")}catch(o){console.error(o)}const I=async o=>{if(!p||!w)return Promise.reject(new Error("trackerUrl or expoId is missing"));const l=new URL(o.dataUrl,p.origin),u=await fetch(l.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:w,token:decodeURIComponent(r.get("t"))})});let C=[];u.ok&&(C=(await u.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:C}},k=a?.heatmap??{},S=D(k)||r.get("heatmap")==="true",O=k.variant==="yah"||r.get("type")==="yah",L=k.kiosk===!0||r.get("subtype")==="kiosk";if(S)try{if(O)L?await I({dataUrl:"/api/kiosks/list/viewer",dataMapper:o=>({...o,id:o.key,name:`Kiosk ${o.key}`})}):await I({dataUrl:"/api/v1/you-are-here/qr-code/list/viewer",dataMapper:(o,l)=>({...o,name:`QR Code #${l+1}`})});else{const o=new URL("/api/fp-stats/get",p.origin);o.searchParams.set("expoId",w),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(r.get("t")));const l=new URL("api/fp-stats/get",p.origin);l.searchParams.set("expoId",w),l.searchParams.set("type","exview"),l.searchParams.set("t",decodeURIComponent(r.get("t")));const[u,C]=await Promise.all([fetch(o.toString()),fetch(l.toString())]),[P,M]=await Promise.all([u.json(),C.json()]);window.__heatmapData={booths:P,exhibitors:M}}}catch(o){console.error("Heatmap: Initialization error",o)}const U=[x(c+"vendor/sanitize-css/sanitize.css",n),x(c+"vendor/perfect-scrollbar/css/perfect-scrollbar.css",n),m("Oswald",c+"fonts/oswald-v17-cyrillic_latin-300.woff",{weight:300}),m("Oswald",c+"fonts/oswald-v17-cyrillic_latin-500.woff",{weight:500}),m("Inter",c+"fonts/inter-400.woff2",{weight:400}),m("Inter",c+"fonts/inter-500.woff2",{weight:500}),m("Inter",c+"fonts/inter-600.woff2",{weight:600}),m("efp-symbols",c+"fonts/efp-symbols.woff",{weight:400}),z(a,n),G(g.icons)];await Promise.all(U),g.enableRotation=a?.enableRotation??!1,g.alwaysShowSidebar=a?.alwaysShowSidebar??!1,R.log("Data loaded"),window.__storeInitAllowed=!0;const{default:B}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());i.firstChild&&i.firstChild!==h;)i.removeChild(i.firstChild);Object.setPrototypeOf(g,B.prototype).init()})()}}