@expofp/floorplan 3.1.2 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/{CookieConsent-YALfakcg.js → CookieConsent-A4g2GEnB.js} +1104 -1098
- package/dist/browser/{Debug-Dienfacq.js → Debug-okM_H6zB.js} +7 -7
- package/dist/browser/{Demo-BbY4PJhj.js → Demo-3Yx1xi6F.js} +11 -11
- package/dist/browser/{Free-BlfLzpZ4.js → Free-Iqh_45NP.js} +11 -11
- package/dist/browser/{Gallery-BJ8RKc0W.js → Gallery-CMu4jjUa.js} +16 -16
- package/dist/browser/{GpsLoader-C-qC7AlJ.js → GpsLoader-xmUlSf3T.js} +27 -27
- package/dist/browser/{KioskStore-umOa7R8-.js → KioskStore-DomUDeuw.js} +39 -39
- package/dist/browser/{Mapbox-BQKwe6gC.js → Mapbox-D3-e_F58.js} +14 -14
- package/dist/browser/SetKioskMode-BOvxWaGI.js +54 -0
- package/dist/browser/ShowKiosk-xp1WbCm-.js +26 -0
- package/dist/browser/{ThreeComponent-YJ6J3gEv.js → ThreeComponent-C7dPjvKl.js} +219 -219
- package/dist/browser/{TouchHand-DtBzj-Bj.js → TouchHand-QzRQPyEl.js} +4 -4
- package/dist/browser/{ViewerMenuPanel-Cv7KW_rT.js → ViewerMenuPanel-lREjYMl2.js} +20 -20
- package/dist/browser/{add-debug-secret-listener-BRth-pLl.js → add-debug-secret-listener-s_Acfb_j.js} +1 -1
- package/dist/browser/{boolean-editor-D_18BAC7.js → boolean-editor-BN7VDvLb.js} +6 -6
- package/dist/browser/bootIntercom-BsKv9v5g.js +40 -0
- package/dist/browser/bundle.json +46 -43
- package/dist/browser/{chunk-BjP-W_8B.js → chunk-CilcQ-DK.js} +1 -1
- package/dist/browser/{classnames-nDCZdn8S.js → classnames-BG0vlDcj.js} +2 -2
- package/dist/browser/{client-CHtTpwEK.js → client-CfMi8siJ.js} +4 -4
- package/dist/browser/{data-DRzLxQO7.js → data-a-dtD_1P.js} +49 -49
- package/dist/browser/{debug-overlay-B8CWKuKY.js → debug-overlay-CoH7X4al.js} +8 -8
- package/dist/browser/{debug-ui-DUF5K4cu.js → debug-ui-DouD3wg5.js} +6 -6
- package/dist/browser/{dist-C0wOn0VY.js → dist-CzsjAsAg.js} +5 -5
- package/dist/browser/{exports-DJDFfUko.js → exports-BWEh5Wje.js} +1 -1
- package/dist/browser/{favicon-DtqguaGB.js → favicon-CmG6QFs2.js} +1 -1
- package/dist/browser/{fetch-retry.umd-B8F2bkss.js → fetch-retry.umd-B_g_JELw.js} +2 -2
- package/dist/browser/{flex-DCHbgjnw.js → flex-BQA_6ztI.js} +6 -6
- package/dist/browser/{floorplan.loader-CTycsBPj.js → floorplan.loader-CrKDeH3d.js} +656 -679
- package/dist/browser/{floorplan.ready-D8TO96JJ.js → floorplan.ready-xulLyTpM.js} +16 -15
- package/dist/browser/{fuse-BEUAG1Xp.js → fuse-Cxy73jl3.js} +2 -2
- package/dist/browser/index.js +11 -11
- package/dist/browser/{is-debug-C1gwybh0.js → is-debug-BMJczZcU.js} +2 -2
- package/dist/browser/{jsx-runtime-CGa6rouk.js → jsx-runtime-DDrJF8xL.js} +2 -2
- package/dist/browser/{lib-B-kSneKQ.js → lib-B1mH8TSv.js} +4 -4
- package/dist/browser/locales/ar.json +56 -16
- package/dist/browser/locales/de.json +56 -16
- package/dist/browser/locales/es.json +56 -16
- package/dist/browser/locales/fr.json +56 -16
- package/dist/browser/locales/he.json +56 -16
- package/dist/browser/locales/it.json +56 -16
- package/dist/browser/locales/kk.json +56 -16
- package/dist/browser/locales/ko.json +56 -16
- package/dist/browser/locales/mn.json +56 -16
- package/dist/browser/locales/nl.json +56 -16
- package/dist/browser/locales/pl.json +56 -16
- package/dist/browser/locales/pt.json +56 -16
- package/dist/browser/locales/ru.json +60 -20
- package/dist/browser/locales/sv.json +56 -16
- package/dist/browser/locales/th.json +56 -16
- package/dist/browser/locales/tr.json +56 -16
- package/dist/browser/locales/uk.json +56 -16
- package/dist/browser/locales/vi.json +56 -16
- package/dist/browser/locales/zh.json +56 -16
- package/dist/browser/{main-DscTVUQ0.js → main-CTfIntH-.js} +1 -1
- package/dist/browser/{mobx-DfjpWyaW.js → mobx-CNTM25Oc.js} +4 -4
- package/dist/browser/{particles.min-Biy-VbhD.js → particles.min-DHOz1yro.js} +2 -2
- package/dist/browser/{prop-types-BKhIyeNo.js → prop-types-B-y83www.js} +2 -2
- package/dist/browser/{react-19U-5m1O.js → react-VoeHpohi.js} +2 -2
- package/dist/browser/{react-dom-BeWJor3U.js → react-dom-CN7XBo22.js} +3 -3
- package/dist/browser/{reset-all-settings-DbzRwd74.js → reset-all-settings-x3j4rKGC.js} +1 -1
- package/dist/browser/{settings-CH8qvuVX.js → settings-DYv1eHiY.js} +6 -6
- package/dist/browser/{src-_zgzV95f.js → src-CdV1RTUv.js} +4 -4
- package/dist/browser/{store-CwvDErjP.js → store-BkBqfYWF.js} +3803 -3345
- package/dist/browser/{ui-I67QXE1I.js → ui-DqL_r_LU.js} +6 -6
- package/dist/esm/components/Alert.js +1 -1
- package/dist/esm/components/Autocomplete.js +1 -1
- package/dist/esm/components/BaseFilterModal.js +1 -1
- package/dist/esm/components/EntityItem.js +1 -1
- package/dist/esm/components/EntityList.js +1 -1
- package/dist/esm/components/EventBadge.js +1 -1
- package/dist/esm/components/Exhibitor.js +1 -1
- package/dist/esm/components/HeatmapLegend.js +1 -1
- package/dist/esm/components/Kiosk/KioskStore.d.ts +3 -2
- package/dist/esm/components/Kiosk/KioskStore.js +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/FormInput/RangeInput.js +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskComponent.js +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskForm.js +1 -1
- package/dist/esm/components/Kiosk/SetKioskMode.js +1 -1
- package/dist/esm/components/LanguageRow.js +1 -1
- package/dist/esm/components/LevelBadge.js +1 -1
- package/dist/esm/components/LevelSelector.js +1 -1
- package/dist/esm/components/LogoOverlay.js +1 -1
- package/dist/esm/components/Map/Map.js +1 -1
- package/dist/esm/components/Map/drawing/config/canvases.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-wf.js +1 -1
- package/dist/esm/components/Map/traffic/useBuildRoute.js +4 -4
- package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
- package/dist/esm/components/Map/visibleArea.d.ts +3 -3
- package/dist/esm/components/Map/visibleArea.js +1 -1
- package/dist/esm/components/MarketMaterialList.js +1 -1
- package/dist/esm/components/Overlay.js +1 -1
- package/dist/esm/components/OverlayGrip.d.ts +0 -1
- package/dist/esm/components/OverlayGrip.js +1 -1
- package/dist/esm/components/Share.js +1 -1
- package/dist/esm/components/Shortcuts/ShortcutButton.js +1 -1
- package/dist/esm/components/Shortcuts/ShortcutsFiltersButton.js +1 -1
- package/dist/esm/components/ViewerMenuPanel.js +1 -1
- package/dist/esm/components/WayInformation.js +1 -1
- package/dist/esm/components/WayfindingFloorSelector.js +1 -1
- package/dist/esm/components/YahRow.js +1 -1
- package/dist/esm/floorplan.loader.js +1 -1
- package/dist/esm/floorplan.ready.js +1 -1
- package/dist/esm/intercom/bootIntercom.d.ts +3 -0
- package/dist/esm/intercom/bootIntercom.js +19 -0
- package/dist/esm/intercom/index.d.ts +3 -0
- package/dist/esm/intercom/index.js +1 -0
- package/dist/esm/intercom/shouldLoad.d.ts +4 -0
- package/dist/esm/intercom/shouldLoad.js +1 -0
- package/dist/esm/intercom/types.d.ts +6 -0
- package/dist/esm/intercom/types.js +1 -0
- package/dist/esm/renderer/RendererService.js +1 -1
- package/dist/esm/renderer/engine-core/defs.d.ts +7 -1
- package/dist/esm/renderer/engine-core/defs.js +3 -3
- package/dist/esm/store/SearchButtonsStore.d.ts +1 -1
- package/dist/esm/store/SearchStore.d.ts +1 -1
- package/dist/esm/store/SearchStore.js +1 -1
- package/dist/esm/store/UIState.d.ts +1 -1
- package/dist/esm/store/UIState.js +1 -1
- package/dist/esm/store/init/init-heatmap.js +1 -1
- package/dist/esm/store/init/init-ui.js +1 -1
- package/package.json +4 -4
- package/dist/browser/SetKioskMode-B4WkaonJ.js +0 -49
- package/dist/browser/ShowKiosk-CwQsYu6G.js +0 -26
- package/dist/esm/tools/intercom.d.ts +0 -12
- package/dist/esm/tools/intercom.js +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
import ne from"color";import{observable as he,reaction as q}from"mobx";import{lineLength as Se}from"simple-geometry";import He from"../../../../core/Rect";import o,{layersStore as Ae,uiState as c}from"../../../../store";import{LayersMode as _e}from"../../../../store/LayerStore";import{boothToWaypoint as me,getGraphLines as We,graphDataSource as Ye,computeTransitionPoints as Ue,normalizeRouteDirection as Ge,bezierCurve as qe,splitPolyLine as Ke}from"../../../../wayfinding";import{decreaseByPercentage as oe}from"../../../../utils/math";import{strEqual as ie}from"../../../../utils/strEqual";import{createArrowCurrentCanvas as De,createCurrentCanvas as re,createImageCanvas as z,createTargetCanvas as Ve,createYahCanvas as Xe}from"./canvases";import{toRadians as Ie}from"../../../../utils/math";import{areLayersEnabled as ve}from"../../../../utils/areLayersEnabled";import{createImageDef as H,createLineDef as ye,createCircleCanvas as je,getBounds as R,getRotation as Je}from"../../../../renderer";import{animateLineSegments as Qe}from"../../../../renderer/engine-core/animation";import{splitRouteByPoint as Ze,snapPositionToRoute as et,getThresholdSafe as tt,getThresholdFromMetersToSvg as nt,SNAP_THRESHOLD_METERS as ot}from"./route-snapping";import{fpGeo as Ne}from"../../../Mapbox/utils/fpGeo";import{getRouteLength as pe}from"../../../../wayfinding";const L=devicePixelRatio;let I=[],X=null,T=[],Q=ne("#00A2FF"),it=ne("#FF9F06"),Fe="#A4CCE2",rt="#0794EA";const W=34;let B,M,k,$,Y,ge,Re,Le,xe,Z,C,E,N,F,O,we=[];function at(){I=[];const t=o.routeStore.currentRouteLayer?.name;X=lt();const r=X&&(ve()?ie(t,X.destination?.layer):!0);if(X){const l=X?.routePoint;l&&ie(t,l.layer)&&(I=ct(l,I))}let a=[],f=[];for(let l=0;l<T.length;l++){let _=T[l],x=o.layerStore.mode==_e.Default?!0:o.layerStore.layers.find(h=>h.name==t&&t===_.p0.layer)?.visible||!1;!_.virtual&&x&&a.push(_),(_.virtual||!x||l===T.length-1)&&a.length&&(f=a.map(({p0:h,p1:w})=>(I.push({x:h.x,y:h.y},{x:w.x,y:w.y}),{p0:h,p1:w})))}I.length||(E.hidden=!0,C.hidden=!0);let m=1e6,s=1e6,y=0,u=0;I.forEach(l=>{l.x<m&&(m=l.x),l.y<s&&(s=l.y),l.x>y&&(y=l.x),l.y>u&&(u=l.y)});const d=He.fromX1y1x2y2(m,s,y,u);return{rect:I.length&&(d.w||d.h)?d.withPadding(d.w,d.h):null,lines:f,addTrailPoints:r}}export const WF_TRAIL_LAYER_NAME="wf-trail-points",WF_POINTS_LAYER_NAME="wf-points",WF_CURRENT_POSITION_NAME="wf-current-position",WF_LINES_LAYER_NAME="wf-lines",WF_LINES_ANIMATED_LAYER_NAME="wf-lines-animated";export default function st(t){let r=null;const a=[];let f=null,m=he.box([]),s=he.box([],{deep:!1}),y=[],u=he.box([],{deep:!1});const d=t.scene.rootLayer.children,l=d.find(e=>e.name===WF_POINTS_LAYER_NAME),_=d.find(e=>e.name===WF_CURRENT_POSITION_NAME),x=d.find(e=>e.name===WF_LINES_LAYER_NAME),h=d.find(e=>e.name===WF_TRAIL_LAYER_NAME),w=d.find(e=>e.name===WF_LINES_ANIMATED_LAYER_NAME),U=tt(Ne?.properties?.config?.snapThreshold)||ot,ae=nt({thresholdInMeters:U,gpsConfig:Ne?.properties?.config});let ee=[];const j=o.fp.icons.get("destination");j?(j.id="destination",M=z(j,W,W,L)):M=Ve(L,it.hex()),E=H(M,R(0,0,M.width,M.height),{hidden:!0});const G=o.fp.icons.get("departure");G?(G.id="departure",B=z(G,W,W,L)):B=re(L,Q.hex()),C=H(B,R(0,0,B.width,B.height),{hidden:!0}),k=re(L,Q.hex()),k.id="current-location",N=H(k,R(0,0,k.width,k.height),{hidden:!0,origin:[.5,.5]});const K=o.fp.icons.get("transition");K?(K.id="transition",ge=z(K,34,34,L)):ge=re(L,Q.hex());const se=o.fp.icons.get("transition_up");se&&(se.id="transition_up",Re=z(se,56,34,L));const ue=o.fp.icons.get("transition_down");ue&&(ue.id="transition_down",Le=z(ue,56,34,L)),G?xe=z(G,W,W,L):xe=re(L,Q.hex());const le=o.fp.icons.get("direction");le?(le.id="direction",$=z(le,W,W,L)):$=De(L,Q.hex()),F=H($,R(0,0,$.width,$.height),{hidden:!0});const Pe=o.fp.icons.get("yah");Pe?Y=z(Pe,oe(64,32),oe(90,32),L):Y=Xe(L,"#ff4343"),Y.id="current-location-2",O=H(Y,R(0,0,Y.width,Y.height),{hidden:!0,origin:[.5,1]}),Z=je(4,ne("#b5b7bc").hex());function ce(e=null){const n=o.layerStore.visible.map(i=>i.name);if(I=[],m.set([]),e||(T=[]),n.length&&c.selectedRoute?.from?.rect&&c.selectedRoute?.to?.rect){let i=c.selectedRoute.from,p=c.selectedRoute.to;if(!T.length&&!e&&(T=We(Ye,me(i),me(p),o.routeStore.onlyAccessible,c.selectedRoute.waypoints?.map(me))),!T.length){if(o.routeStore.updateRoute(T),o.routeStore.updateRouteDistance(0),i.name!==p.name)throw new Error(`Route not found. From: ${i.name} to: ${p.name}`);return}const{rect:g,lines:D,addTrailPoints:b}=at();D.length?(ut(t.scale),dt(t.scale,s,y),ze(t,h,!b),t.ptScaleRegistry.unregisterByName(h.name),b&&t.onPtScale(h.name,()=>{const P=ze(t,h)||[];return h.children=P,we=P,h})):t.ptScaleRegistry.unregisterByName(h.name),ee=D,fe(),g&&(c.moveToRect=g)}else C.hidden=!0,E.hidden=!0;o.routeStore.updateRoute(T.filter(i=>!i.virtual)),m.get()||(C.hidden=!0,E.hidden=!0)}function J(){const e=o.routeStore.currentPosition,n=e?.angle?Ie(e.angle):null,i=o.routeStore.currentRouteLayer?.name,p=T.filter(A=>o.layerStore.mode==_e.Default?!0:o.layerStore.layers.find(Oe=>Oe.name==i&&i===A.p0.layer)?.visible).filter(A=>!A.virtual);if(c.kioskData&&c.selectedRoute?.from){const A=o.routeStore.currentRouteLayer;C.hidden=c.selectedRoute?.from?.entity?.type==="route-cut-in"&&A?.name===c.selectedRoute?.from?.layer?.name,E.hidden=c.selectedRoute?.to?.entity?.type==="route-cut-in"&&A?.name===c.selectedRoute?.to?.layer?.name}if(e){const A=Ae.findLayer(e.z)?.visible??!0;o.routeStore.iconType===0||c.selectedRoute?.from&&c.selectedRoute?.to?(O.hidden=!0,N.hidden=!A,N.dim=!A,N.bounds=R(e.x,e.y,k.width,k.height,t.scale),n!=null?(N.hidden=!0,F.hidden=!A,F.dim=!A,F.bounds=R(e.x,e.y,$.width,$.height,t.scale,n)):F.hidden=!0):(N.hidden=!0,F.hidden=!0,O.dim=!A,O.hidden=!A,O.bounds=R(e.x,e.y,Y.width,Y.height,t.scale))}else N.hidden=!0,O.hidden=!0,F.hidden=!0,de(),fe();if(!e||!I.length){t.update(F,N,O);return}const g=c.selectedRoute?.to,D=c.selectedRoute?.from,b={layer:D?.layer?.name,x:C.bounds.center.x,y:C.bounds.center.y},P={layer:g?.layer?.name,x:E.bounds.center.x,y:E.bounds.center.y},S=et(e,p,{snapThreshold:ae,fromPoint:b,toPoint:P,fromRect:D?.rect,toRect:g?.rect}),v=S.snapped?S.snappedPoint:e;fe(S,!0),F.bounds=R(v.x,v.y,$.width,$.height,t.scale,n),N.bounds=R(v.x,v.y,k.width,k.height,t.scale,n),t.update(F,N,O)}function Be(){const e=[{point:F,name:"wf-current-arrow"},{point:N,name:"wf-current-location"},{point:O,name:"wf-current-location-2"}];_.children=e.map(({point:n})=>n),e.forEach(({point:n,name:i})=>te(n,i)),t.update(_)}function V(e=!1){const n=[C,E,...s.get(),...u.get()];e&&(Me(!0),h.children=[],n.forEach(i=>{i.source.id.includes("kiosk")||(i.hidden=!0)})),l.children=n,t.update(l,h)}function de(e,n){const i=T.filter(P=>!P.virtual),p=pe(i);if(!e?.snapped){o.routeStore.updateRouteDistance(p);return}const g=c.selectedRoute?.to,D=pe(n);let b;if(e.snappedPoint?.layer===g?.layer?.name||g?.layer?.name===o.routeStore.currentRouteLayer?.name)b=D;else if(e.snappedPoint?.layer!==g?.layer?.name&&e.snappedPoint?.layer===o.routeStore.currentRouteLayer?.name){const P=i.filter(v=>v.p0.layer!==e?.snappedPoint?.layer&&v.p1.layer!==e?.snappedPoint?.layer),S=pe(P);b=D+S}b&&o.routeStore.updateRouteDistance(b)}function fe(e,n=!1){const i=c.selectedRoute?.from,p=c.selectedRoute?.to;if(!i||!p)return;const g=T[0]?.p0.layer,D=Ge(T,ee,{layer:i.layer?.name??g,x:i.rect.cx,y:i.rect.cy},{layer:p.layer?.name??g,x:p.rect.cx,y:p.rect.cy});if(!e?.snapped){const S=D.map(v=>ye(v,Fe));o.routeStore.currentPosition&&o.routeStore.currentRouteLayer&&o.routeStore.currentPosition?.z?.toString()===o.routeStore.currentRouteLayer?.name.toString()&&de(),Ce([],S,n);return}const{passed:b,remaining:P}=Ze(D,e.snappedPoint);P.length&&(P[0]={...P[0],p0:e.snappedPoint}),de(e,P),Ce(b.map(S=>ye(S,"#B5B7BC")),P.map(S=>ye(S,Fe)),n)}const te=(e,n)=>t.onPtScale(n,i=>(e.hidden||(e.bounds=R(e.bounds.center.x,e.bounds.center.y,e.source.width,e.source.height,i,e.bounds.rotation)),e)),be=(e,n)=>t.onRoll(n,i=>{const p=Je(i,e.bounds.rotation);return p!==void 0&&(e.bounds.rotation=e.bounds.rotation+p),e});function Me(e){r&&(r.stop(),r=null),w.children=[],e&&(x.children=[]),t.update(w,x)}function Ce(e=[],n=[],i=!1){let p=0;if(r&&(i&&(p=r.getProgress()),r.stop(),r=null),x.children=[...e,...n],!n.length){w.children=[],t.update(w,x);return}const g=n.map(b=>({...b,color:rt}));r=Qe(g,(b,P,S)=>{if(S)w.children=[];else{const v=g.slice(0,P);w.children=[...v,b]}t.update(w)},()=>t.scale,p)??null,t.update(x)}a.push(q(()=>[o.layerStore.layersLoaded],()=>{ce(),J(),V()}));const ke=q(()=>[o.routeStore.currentRouteLayer,c.getRouteNextFloor],()=>{o.layerStore.layersLoaded&&(f!==null&&clearTimeout(f),f=setTimeout(()=>{ce(o.routeStore.currentRouteLayer),J(),V(),f=null},0))});a.push(()=>{f!==null&&(clearTimeout(f),f=null),ke()}),a.push(q(()=>[c.selectedRoute,o.routeStore.onlyAccessible],()=>{ce(),J(),V(!c.selectedRoute)})),a.push(q(()=>o.routeStore.currentPosition,()=>{J(),V()})),a.push(q(()=>s.get(),e=>{const n="transitionPoints";t.ptScaleRegistry.unregisterByPrefix(n),t.rollRegistry.unregisterByPrefix(n),e.length&&e.forEach((i,p)=>{const g=`${n}-${p}`;te(i,g),be(i,g)})})),a.push(q(()=>[u.get()],()=>{const e=u.get(),n="kioskArrows";t.ptScaleRegistry.unregisterByPrefix(n),e.length&&e.forEach((i,p)=>te(i,`${n}-${p}`))})),a.push(q(()=>[c.kioskData,Ae.floors.find(e=>e.active),c.selectedRoute],([e,n])=>{u.set([]);const i=ve()?e?.z===n?.name:!0;e&&i&&ft(e,{skipdim:!0,visible:!0,pixelRatio:L},t.scale,u),V()}));function Ee({defs:e}){const n=y.find(i=>e.includes(i.imageDef));n&&o.layerStore.updateVisibility(n.targetLayer,!0)}t.renderer.events.addEventListener("pointer:click",Ee),a.push(()=>t.renderer.events.removeEventListener("pointer:click",Ee));function Te({defs:e}){const n=y.some(i=>e.includes(i.imageDef));t.renderer.canvas.style.cursor=n?"pointer":""}t.renderer.events.addEventListener("pointer:move",Te),a.push(()=>t.renderer.events.removeEventListener("pointer:move",Te)),[{point:C,name:"wf-source"},{point:E,name:"wf-destination"}].forEach(({point:e,name:n})=>{te(e,n),be(e,n)}),V(),J(),Be();function $e(){r&&(r.stop(),r=null),a.forEach(e=>e()),a.length=0}return $e}function ut(t){const r=o.routeStore.currentRouteLayer?.name,a=I;let f=c.selectedRoute?.from,m=c.selectedRoute?.to;const s=c.selectedRoute?.waypoints;if(f?.entity.type==="route-cut-in"&&(f=null),m?.entity.type==="route-cut-in"&&(m=null),!a.length)return;const y=[{key:"sourceLocation",rect:f?.rect,index:void 0},{key:"destinationLocation",rect:m?.rect,index:void 0}];s&&y.push(...s?.map((x,h)=>({key:`waypoint-${x.externalId}`,index:h,rect:x.rect})));const u=r?ie(r,f?.layer?.name):!0,d=r?ie(r,m?.layer?.name):!0;let l=!1,_=!1;a.forEach(({x,y:h})=>{for(const{key:w,rect:U,index:ae}of y)if(U?.containsPoint(x,h)){w==="sourceLocation"&&(C.bounds=R(x,h,B.width,B.height,t),C.hidden=!u,C.dim=!u,l=u),w==="destinationLocation"&&(E.bounds=R(x,h,M.width,M.height,t),E.hidden=!d,E.dim=!d,_=d);break}}),l||(C.bounds=R(a[a.length-1].x,a[a.length-1].y,B.width,B.height,t),C.hidden=!1,C.dim=!1),_||(E.bounds=R(a[0].x,a[0].y,M.width,M.height,t),E.hidden=!d,E.dim=!d)}function lt(){const{from:t,to:r}=o.uiState.selectedRoute||{},a="route-cut-in";return t&&t?.entity.type===a||r&&r?.entity.type===a?o.routeStore.defaultFrom:null}function ct(t,r){if(!t||!r.length)return r;const a=r.reduce((f,m,s)=>Se(t,m)<Se(t,r[f])?s:f,0);return a<=r.length/2?r.slice(a):r.slice(0,a)}function dt(t,r,a){const f=o.routeStore.currentRouteLayer?.name,m=o.layerStore.floors.map(u=>u.name).reverse(),s=Ue({routeLines:T,currentLayerName:f,floorOrder:m});a.length=0;const y=s.map(u=>{const d=u.role==="entry"?xe:u.direction==="up"&&Re?Re:u.direction==="down"&&Le?Le:ge,l=H(d,R(u.x,u.y,d.width,d.height,t),{hidden:!1,dim:!1});return u.role==="exit"&&a.push({imageDef:l,targetLayer:u.targetLayer}),l});r.set(y)}function ft(t,r,a=1,f){if(!t)return;const m=o.fp.icons.get("kiosk");m.id="kiosk";let s;if(m){const u=t?.iconSizePercent?t.iconSizePercent/100:1,d=55;s=z(m,oe(199*u,d),oe(152*u,d),L)}else s=De(L,ne("#ee4422").hex());const y=H(s,R(t.x,t.y,s.width,s.height,a,Ie(t.heading||0)),{hidden:!r.visible,dim:!r.skipdim});f.set([...f.get(),y])}function ze(t,r,a=!1){let f=I.length-1;if(c.selectedRoute?.to?.entity.type==="route-cut-in"&&(f=0),a){we=[],r.children=[],t.update(r);return}const m=t.scale,s=I[f],y=X?.destination;if(!s||!y)return;const u=Z.width,d=Ke([{p0:s,p1:y}],u*2*m);if(d.length<2)return;const l=y.x-s.x,_=y.y-s.y,x=Math.hypot(l,_),h={x:(s.x+y.x)/2,y:(s.y+y.y)/2-x*.2},w=[s,h,y],U=d.map((ae,ee,j)=>{const G=(ee+1)/(j.length+1),K=qe(w,G);return H(Z,R(K.x,K.y,Z.width,Z.height,m),{hidden:!1,dim:!1})})||[];return r.children=U,we=U,U}
|
|
1
|
+
import ne from"color";import{observable as he,reaction as q}from"mobx";import{lineLength as Se}from"simple-geometry";import We from"../../../../core/Rect";import o,{layersStore as Ae,uiState as c}from"../../../../store";import{LayersMode as _e}from"../../../../store/LayerStore";import{boothToWaypoint as me,getGraphLines as Ye,graphDataSource as Ue,computeTransitionPoints as Ge,normalizeRouteDirection as qe,bezierCurve as Ke,splitPolyLine as Ve}from"../../../../wayfinding";import{decreaseByPercentage as oe}from"../../../../utils/math";import{strEqual as ie}from"../../../../utils/strEqual";import{createArrowCurrentCanvas as De,createCurrentCanvas as re,createImageCanvas as k,createTargetCanvas as Xe,createYahCanvas as je}from"./canvases";import{toRadians as Ie}from"../../../../utils/math";import{areLayersEnabled as ve}from"../../../../utils/areLayersEnabled";import{createImageDef as H,createLineDef as ye,createCircleCanvas as Je,getBounds as R,getRotation as Qe}from"../../../../renderer";import{animateLineSegments as Ze}from"../../../../renderer/engine-core/animation";import{splitRouteByPoint as et,snapPositionToRoute as tt,getThresholdSafe as nt,getThresholdFromMetersToSvg as ot,SNAP_THRESHOLD_METERS as it}from"./route-snapping";import{fpGeo as Ne}from"../../../Mapbox/utils/fpGeo";import{getRouteLength as pe}from"../../../../wayfinding";import{pickDefaultScene as Fe}from"../../../../renderer/engine-core/defs";const L=devicePixelRatio;let I=[],X=null,T=[],Q=ne("#00A2FF"),rt=ne("#FF9F06"),ke="#A4CCE2",at="#0794EA";const W=34;let z,B,M,$,Y,ge,Re,Le,xe,Z,C,E,N,F,O,we=[];function st(){I=[];const t=o.routeStore.currentRouteLayer?.name;X=ct();const r=X&&(ve()?ie(t,X.destination?.layer):!0);if(X){const l=X?.routePoint;l&&ie(t,l.layer)&&(I=dt(l,I))}let a=[],f=[];for(let l=0;l<T.length;l++){let _=T[l],x=o.layerStore.mode==_e.Default?!0:o.layerStore.layers.find(m=>m.name==t&&t===_.p0.layer)?.visible||!1;!_.virtual&&x&&a.push(_),(_.virtual||!x||l===T.length-1)&&a.length&&(f=a.map(({p0:m,p1:w})=>(I.push({x:m.x,y:m.y},{x:w.x,y:w.y}),{p0:m,p1:w})))}I.length||(E.hidden=!0,C.hidden=!0);let y=1e6,s=1e6,p=0,u=0;I.forEach(l=>{l.x<y&&(y=l.x),l.y<s&&(s=l.y),l.x>p&&(p=l.x),l.y>u&&(u=l.y)});const d=We.fromX1y1x2y2(y,s,p,u);return{rect:I.length&&(d.w||d.h)?d.withPadding(d.w,d.h):null,lines:f,addTrailPoints:r}}export const WF_TRAIL_LAYER_NAME="wf-trail-points",WF_POINTS_LAYER_NAME="wf-points",WF_CURRENT_POSITION_NAME="wf-current-position",WF_LINES_LAYER_NAME="wf-lines",WF_LINES_ANIMATED_LAYER_NAME="wf-lines-animated";export default function ut(t){let r=null;const a=[];let f=null,y=he.box([]),s=he.box([],{deep:!1}),p=[],u=he.box([],{deep:!1});const d=t.scene.rootLayer.children,l=d.find(e=>e.name===WF_POINTS_LAYER_NAME),_=d.find(e=>e.name===WF_CURRENT_POSITION_NAME),x=d.find(e=>e.name===WF_LINES_LAYER_NAME),m=d.find(e=>e.name===WF_TRAIL_LAYER_NAME),w=d.find(e=>e.name===WF_LINES_ANIMATED_LAYER_NAME),U=nt(Ne?.properties?.config?.snapThreshold)||it,ae=ot({thresholdInMeters:U,gpsConfig:Ne?.properties?.config});let ee=[];const j=o.fp.icons.get("destination");j?(j.id="destination",B=k(j,W,W,L)):B=Xe(L,rt.hex()),E=H(B,R(0,0,B.width,B.height),{hidden:!0});const G=o.fp.icons.get("departure");G?(G.id="departure",z=k(G,W,W,L)):z=re(L,Q.hex()),C=H(z,R(0,0,z.width,z.height),{hidden:!0}),M=re(L,Q.hex()),M.id="current-location",N=H(M,R(0,0,M.width,M.height),{hidden:!0,origin:[.5,.5]});const K=o.fp.icons.get("transition");K?(K.id="transition",ge=k(K,34,34,L)):ge=re(L,Q.hex());const se=o.fp.icons.get("transition_up");se&&(se.id="transition_up",Re=k(se,56,34,L));const ue=o.fp.icons.get("transition_down");ue&&(ue.id="transition_down",Le=k(ue,56,34,L)),G?xe=k(G,W,W,L):xe=re(L,Q.hex());const le=o.fp.icons.get("direction");le?(le.id="direction",$=k(le,W,W,L)):$=De(L,Q.hex()),F=H($,R(0,0,$.width,$.height),{hidden:!0});const Pe=o.fp.icons.get("yah");Pe?Y=k(Pe,oe(64,32),oe(90,32),L):Y=je(L,"#ff4343"),Y.id="current-location-2",O=H(Y,R(0,0,Y.width,Y.height),{hidden:!0,origin:[.5,1]}),Z=Je(4,ne("#b5b7bc").hex());function ce(e=null){const n=o.layerStore.visible.map(i=>i.name);if(I=[],y.set([]),e||(T=[]),n.length&&c.selectedRoute?.from?.rect&&c.selectedRoute?.to?.rect){let i=c.selectedRoute.from,h=c.selectedRoute.to;if(!T.length&&!e&&(T=Ye(Ue,me(i),me(h),o.routeStore.onlyAccessible,c.selectedRoute.waypoints?.map(me))),!T.length){if(o.routeStore.updateRoute(T),o.routeStore.updateRouteDistance(0),i.name!==h.name)throw new Error(`Route not found. From: ${i.name} to: ${h.name}`);return}const{rect:g,lines:D,addTrailPoints:b}=st();D.length?(lt(t.scale),ft(t.scale,s,p),ze(t,m,!b),t.ptScaleRegistry.unregisterByName(m.name),b&&t.onPtScale(m.name,()=>{const P=ze(t,m)||[];return m.children=P,we=P,m})):t.ptScaleRegistry.unregisterByName(m.name),ee=D,fe(),g&&(c.moveToRect=g)}else C.hidden=!0,E.hidden=!0;o.routeStore.updateRoute(T.filter(i=>!i.virtual)),y.get()||(C.hidden=!0,E.hidden=!0)}function J(){const e=o.routeStore.currentPosition,n=e?.angle?Ie(e.angle):null,i=o.routeStore.currentRouteLayer?.name,h=T.filter(A=>o.layerStore.mode==_e.Default?!0:o.layerStore.layers.find(He=>He.name==i&&i===A.p0.layer)?.visible).filter(A=>!A.virtual);if(c.kioskData&&c.selectedRoute?.from){const A=o.routeStore.currentRouteLayer;C.hidden=c.selectedRoute?.from?.entity?.type==="route-cut-in"&&A?.name===c.selectedRoute?.from?.layer?.name,E.hidden=c.selectedRoute?.to?.entity?.type==="route-cut-in"&&A?.name===c.selectedRoute?.to?.layer?.name}if(e){const A=Ae.findLayer(e.z)?.visible??!0;o.routeStore.iconType===0||c.selectedRoute?.from&&c.selectedRoute?.to?(O.hidden=!0,N.hidden=!A,N.dim=!A,N.bounds=R(e.x,e.y,M.width,M.height,t.scale),n!=null?(N.hidden=!0,F.hidden=!A,F.dim=!A,F.bounds=R(e.x,e.y,$.width,$.height,t.scale,n)):F.hidden=!0):(N.hidden=!0,F.hidden=!0,O.dim=!A,O.hidden=!A,O.bounds=R(e.x,e.y,Y.width,Y.height,t.scale))}else N.hidden=!0,O.hidden=!0,F.hidden=!0,de(),fe();if(!e||!I.length){t.update(F,N,O);return}const g=c.selectedRoute?.to,D=c.selectedRoute?.from,b={layer:D?.layer?.name,x:C.bounds.center.x,y:C.bounds.center.y},P={layer:g?.layer?.name,x:E.bounds.center.x,y:E.bounds.center.y},S=tt(e,h,{snapThreshold:ae,fromPoint:b,toPoint:P,fromRect:D?.rect,toRect:g?.rect}),v=S.snapped?S.snappedPoint:e;fe(S,!0),F.bounds=R(v.x,v.y,$.width,$.height,t.scale,n),N.bounds=R(v.x,v.y,M.width,M.height,t.scale,n),t.update(F,N,O)}function Be(){const e=[{point:F,name:"wf-current-arrow"},{point:N,name:"wf-current-location"},{point:O,name:"wf-current-location-2"}];_.children=e.map(({point:n})=>n),e.forEach(({point:n,name:i})=>te(n,i)),t.update(_)}function V(e=!1){const n=[C,E,...s.get(),...u.get()];e&&(Me(!0),m.children=[],n.forEach(i=>{i.source.id.includes("kiosk")||(i.hidden=!0)})),l.children=n,t.update(l,m)}function de(e,n){const i=T.filter(P=>!P.virtual),h=pe(i);if(!e?.snapped){o.routeStore.updateRouteDistance(h);return}const g=c.selectedRoute?.to,D=pe(n);let b;if(e.snappedPoint?.layer===g?.layer?.name||g?.layer?.name===o.routeStore.currentRouteLayer?.name)b=D;else if(e.snappedPoint?.layer!==g?.layer?.name&&e.snappedPoint?.layer===o.routeStore.currentRouteLayer?.name){const P=i.filter(v=>v.p0.layer!==e?.snappedPoint?.layer&&v.p1.layer!==e?.snappedPoint?.layer),S=pe(P);b=D+S}b&&o.routeStore.updateRouteDistance(b)}function fe(e,n=!1){const i=c.selectedRoute?.from,h=c.selectedRoute?.to;if(!i||!h)return;const g=T[0]?.p0.layer,D=qe(T,ee,{layer:i.layer?.name??g,x:i.rect.cx,y:i.rect.cy},{layer:h.layer?.name??g,x:h.rect.cx,y:h.rect.cy});if(!e?.snapped){const S=D.map(v=>ye(v,ke));o.routeStore.currentPosition&&o.routeStore.currentRouteLayer&&o.routeStore.currentPosition?.z?.toString()===o.routeStore.currentRouteLayer?.name.toString()&&de(),Ce([],S,n);return}const{passed:b,remaining:P}=et(D,e.snappedPoint);P.length&&(P[0]={...P[0],p0:e.snappedPoint}),de(e,P),Ce(b.map(S=>ye(S,"#B5B7BC")),P.map(S=>ye(S,ke)),n)}const te=(e,n)=>t.onPtScale(n,i=>(e.hidden||(e.bounds=R(e.bounds.center.x,e.bounds.center.y,e.source.width,e.source.height,i,e.bounds.rotation)),e)),be=(e,n)=>t.onRoll(n,i=>{const h=Qe(i,e.bounds.rotation);return h!==void 0&&(e.bounds.rotation=e.bounds.rotation+h),e});function Me(e){r&&(r.stop(),r=null),w.children=[],e&&(x.children=[]),t.update(w,x)}function Ce(e=[],n=[],i=!1){let h=0;if(r&&(i&&(h=r.getProgress()),r.stop(),r=null),x.children=[...e,...n],!n.length){w.children=[],t.update(w,x);return}const g=n.map(b=>({...b,color:at}));r=Ze(g,(b,P,S)=>{if(S)w.children=[];else{const v=g.slice(0,P);w.children=[...v,b]}t.update(w)},()=>t.scale,h)??null,t.update(x)}a.push(q(()=>[o.layerStore.layersLoaded],()=>{ce(),J(),V()}));const $e=q(()=>[o.routeStore.currentRouteLayer,c.getRouteNextFloor],()=>{o.layerStore.layersLoaded&&(f!==null&&clearTimeout(f),f=setTimeout(()=>{ce(o.routeStore.currentRouteLayer),J(),V(),f=null},0))});a.push(()=>{f!==null&&(clearTimeout(f),f=null),$e()}),a.push(q(()=>[c.selectedRoute,o.routeStore.onlyAccessible],()=>{ce(),J(),V(!c.selectedRoute)})),a.push(q(()=>o.routeStore.currentPosition,()=>{J(),V()})),a.push(q(()=>s.get(),e=>{const n="transitionPoints";t.ptScaleRegistry.unregisterByPrefix(n),t.rollRegistry.unregisterByPrefix(n),e.length&&e.forEach((i,h)=>{const g=`${n}-${h}`;te(i,g),be(i,g)})})),a.push(q(()=>[u.get()],()=>{const e=u.get(),n="kioskArrows";t.ptScaleRegistry.unregisterByPrefix(n),e.length&&e.forEach((i,h)=>te(i,`${n}-${h}`))})),a.push(q(()=>[c.kioskData,Ae.floors.find(e=>e.active),c.selectedRoute],([e,n])=>{u.set([]);const i=ve()?e?.z===n?.name:!0;e&&i&&ht(e,{skipdim:!0,visible:!0,pixelRatio:L},t.scale,u),V()}));function Ee({data:e}){const{defs:n}=Fe(e),i=p.find(h=>n.includes(h.imageDef));i&&o.layerStore.updateVisibility(i.targetLayer,!0)}t.renderer.events.addEventListener("pointer:click",Ee),a.push(()=>t.renderer.events.removeEventListener("pointer:click",Ee));function Te({data:e}){const{defs:n}=Fe(e),i=p.some(h=>n.includes(h.imageDef));t.renderer.canvas.style.cursor=i?"pointer":""}t.renderer.events.addEventListener("pointer:move",Te),a.push(()=>t.renderer.events.removeEventListener("pointer:move",Te)),[{point:C,name:"wf-source"},{point:E,name:"wf-destination"}].forEach(({point:e,name:n})=>{te(e,n),be(e,n)}),V(),J(),Be();function Oe(){r&&(r.stop(),r=null),a.forEach(e=>e()),a.length=0}return Oe}function lt(t){const r=o.routeStore.currentRouteLayer?.name,a=I;let f=c.selectedRoute?.from,y=c.selectedRoute?.to;const s=c.selectedRoute?.waypoints;if(f?.entity.type==="route-cut-in"&&(f=null),y?.entity.type==="route-cut-in"&&(y=null),!a.length)return;const p=[{key:"sourceLocation",rect:f?.rect,index:void 0},{key:"destinationLocation",rect:y?.rect,index:void 0}];s&&p.push(...s?.map((x,m)=>({key:`waypoint-${x.externalId}`,index:m,rect:x.rect})));const u=r?ie(r,f?.layer?.name):!0,d=r?ie(r,y?.layer?.name):!0;let l=!1,_=!1;a.forEach(({x,y:m})=>{for(const{key:w,rect:U,index:ae}of p)if(U?.containsPoint(x,m)){w==="sourceLocation"&&(C.bounds=R(x,m,z.width,z.height,t),C.hidden=!u,C.dim=!u,l=u),w==="destinationLocation"&&(E.bounds=R(x,m,B.width,B.height,t),E.hidden=!d,E.dim=!d,_=d);break}}),l||(C.bounds=R(a[a.length-1].x,a[a.length-1].y,z.width,z.height,t),C.hidden=!1,C.dim=!1),_||(E.bounds=R(a[0].x,a[0].y,B.width,B.height,t),E.hidden=!d,E.dim=!d)}function ct(){const{from:t,to:r}=o.uiState.selectedRoute||{},a="route-cut-in";return t&&t?.entity.type===a||r&&r?.entity.type===a?o.routeStore.defaultFrom:null}function dt(t,r){if(!t||!r.length)return r;const a=r.reduce((f,y,s)=>Se(t,y)<Se(t,r[f])?s:f,0);return a<=r.length/2?r.slice(a):r.slice(0,a)}function ft(t,r,a){const f=o.routeStore.currentRouteLayer?.name,y=o.layerStore.floors.map(u=>u.name).reverse(),s=Ge({routeLines:T,currentLayerName:f,floorOrder:y});a.length=0;const p=s.map(u=>{const d=u.role==="entry"?xe:u.direction==="up"&&Re?Re:u.direction==="down"&&Le?Le:ge,l=H(d,R(u.x,u.y,d.width,d.height,t),{hidden:!1,dim:!1});return u.role==="exit"&&a.push({imageDef:l,targetLayer:u.targetLayer}),l});r.set(p)}function ht(t,r,a=1,f){if(!t)return;const y=o.fp.icons.get("kiosk");y.id="kiosk";let s;if(y){const u=t?.iconSizePercent?t.iconSizePercent/100:1,d=55;s=k(y,oe(199*u,d),oe(152*u,d),L)}else s=De(L,ne("#ee4422").hex());const p=H(s,R(t.x,t.y,s.width,s.height,a,Ie(t.heading||0)),{hidden:!r.visible,dim:!r.skipdim});f.set([...f.get(),p])}function ze(t,r,a=!1){let f=I.length-1;if(c.selectedRoute?.to?.entity.type==="route-cut-in"&&(f=0),a){we=[],r.children=[],t.update(r);return}const y=t.scale,s=I[f],p=X?.destination;if(!s||!p)return;const u=Z.width,d=Ve([{p0:s,p1:p}],u*2*y);if(d.length<2)return;const l=p.x-s.x,_=p.y-s.y,x=Math.hypot(l,_),m={x:(s.x+p.x)/2,y:(s.y+p.y)/2-x*.2},w=[s,m,p],U=d.map((ae,ee,j)=>{const G=(ee+1)/(j.length+1),K=Ke(w,G);return H(Z,R(K.x,K.y,Z.width,Z.height,y),{hidden:!1,dim:!1})})||[];return r.children=U,we=U,U}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{useCallback as
|
|
1
|
+
import{useCallback as _,useEffect as M,useMemo as L,useRef as P}from"react";import{BUILD_ROUTE_DOTS as U,BUILD_ROUTE_LINES as $}from"./trafficLayers";import{createCircleCanvas as S,getBounds as I}from"../../../renderer/engine-core/canvases";import{UpdateQueue as A}from"./UpdateQueue";import{isDefaultScene as K,pickDefaultScene as T}from"../../../renderer/engine-core/defs";const v=49,C=`hsl(257, 76%, ${v}%)`,H=`hsl(339.903, 82%, ${v}%)`,Y=`hsl(257, 76%, ${Math.round(v*1.82)}%)`,O=4,B=O,D="U",R="R",b="S",N="P";class J{_state=[[]];index=0;pointHashSet=new Set;locked=!1;storageKey="expofp_build_route_state";_selected=0;get points(){return this._state[this.index]}set points(t){this._state.push(t),this.setIndex(),this.save()}setIndex(){this.index=Math.max(this._state.length-1,0)}genPointHash(t){return`${t.x},${t.y}`}add(t){const a=this.genPointHash(t);this.pointHashSet.has(a)||(this.pointHashSet.add(a),this.points=[...this.points,t])}undo(){this.index&&(this._state.pop(),this.setIndex(),this.save(),this.select(this.points.length-1))}execute(t){try{if(this.locked)return;this.locked=!0,t()}finally{requestAnimationFrame(()=>{this.locked=!1})}}log(t,a=12){console.log(`%c${t}`,`color: black; font-size: ${a}px; background: LemonChiffon;`)}instruct(){this.log(`How to Build a Route:
|
|
2
2
|
Add Point: Click on the map.
|
|
3
|
-
Apply Smoothing: Press ${
|
|
3
|
+
Apply Smoothing: Press ${R}.
|
|
4
4
|
Apply Simplification: Press ${b}.
|
|
5
|
-
Undo: Press ${
|
|
5
|
+
Undo: Press ${D}.
|
|
6
6
|
Enable/Disable Preview: Press ${N}.
|
|
7
|
-
`,16)}applyChaikinSmoothing(t,a,
|
|
7
|
+
`,16)}applyChaikinSmoothing(t,a,y){let c=[];if(y>=1&&t.length>=2){c=[t[0]];for(let h=1;h<t.length;h++){const s=t[h-1],u=t[h];for(let o=1;o<=y;o++){const n=o/(y+1);c.push({x:s.x+(u.x-s.x)*n,y:s.y+(u.y-s.y)*n})}c.push(u)}}else c=t.slice();for(let h=0;h<a&&!(c.length<2);h++){const s=[{...c[0]}];for(let u=1;u<c.length;u++){const o=c[u-1],n=c[u];s.push({x:.75*o.x+.25*n.x,y:.75*o.y+.25*n.y}),s.push({x:.25*o.x+.75*n.x,y:.25*o.y+.75*n.y})}s.push({...c[c.length-1]}),c=s}return c}applySmoothing(){this.points.length<3||(this.points=this.applyChaikinSmoothing(this.points,1,0),this.select(this.points.length-1))}save(){try{this.points.length?sessionStorage.setItem(this.storageKey,JSON.stringify(this.points)):sessionStorage.removeItem(this.storageKey)}catch(t){console.warn(t)}}restore(){try{const t=sessionStorage.getItem(this.storageKey);if(!t)return;const a=JSON.parse(t);if(!Array.isArray(a))return;a.forEach(y=>this.add(y)),this.select(this.points.length-1)}catch(t){console.warn(t)}}topologyPreservingSimplify(t,a){if(t.length<=2)return t.map(o=>({...o}));const y=(o,n,f)=>{const d=o.x,p=o.y,e=n.x,i=n.y,r=f.x,l=f.y,x=Math.abs((l-i)*d-(r-e)*p+r*i-l*e),g=Math.sqrt((l-i)**2+(r-e)**2);return x/(g||1e-10)},c=(o,n,f,d)=>{const p=(e,i,r)=>(r.y-e.y)*(i.x-e.x)-(i.y-e.y)*(r.x-e.x);return p(o,f,d)*p(n,f,d)<0&&p(f,o,n)*p(d,o,n)<0},h=new Array(t.length).fill(!1);h[0]=h[h.length-1]=!0;const s=[],u=(o,n)=>{if(n<=o+1)return;const f=t[o],d=t[n];let p=0,e=0;for(let i=o+1;i<n;i++){const r=y(t[i],f,d);r>p&&(p=r,e=i)}if(p>a){const i=t[e];let r=!0;for(let l=0;l<s.length-1;l++)if(c(s[l],s[l+1],f,i)||c(s[l],s[l+1],i,d)){r=!1;break}r&&(h[e]=!0,u(o,e),u(e,n))}};return u(0,t.length-1),t.filter((o,n)=>h[n])}applySimplification(){this.points=this.topologyPreservingSimplify(this.points,.5),this.select(this.points.length-1)}get selected(){return this._selected}select(t){this._selected=Math.max(0,Math.min(t,this.points.length-1))}}export function useBuildRoute({enabled:k,rendererService:t}){const a=P(!1),y=P(),c=L(()=>S(O,C),[]),h=L(()=>S(O,H),[]),s=L(()=>new J,[]),u=P(new A),o=L(()=>{if(!t.scene)return{};const e=t.scene.rootLayer.children,i=e.find(l=>l.name===$),r=e.find(l=>l.name===U);return{linesLayer:i,pointsLayer:r}},[t.scene]),n=_(()=>{if(!t?.renderer||!o||!c||!h)return;const{linesLayer:e,pointsLayer:i}=o;if(!e||!i)return;const r=s.points,l=a.current;l?i.children.length=0:i.children=r.map(({x:g,y:m},w)=>{const E=w==s.selected?h:c;return{source:E,bounds:I(g,m,E.width,E.height,y.current)}});const x=[];for(let g=1;g<r.length;g++){const m=r[g-1],w=r[g];x.push({points:[m,w],color:l?C:Y,width:B})}x.length?e.children=x:e.children.length=0,u.current.add(()=>t.update(i,e)),s.instruct(),s.log(JSON.stringify(s.points))},[t,s,o,c,h]),f=_(e=>{const i=e.key.toUpperCase();s.execute(()=>{switch(i){case D:e.preventDefault(),s.undo(),a.current=!1,n();break;case R:e.preventDefault(),s.applySmoothing(),a.current=!1,n();break;case b:e.preventDefault(),s.applySimplification(),a.current=!1,n();break;case N:e.preventDefault(),a.current=!a.current,n();break}})},[s,n]),d=_(({ptScale:e,sceneId:i})=>{if(!K(i)||!t?.renderer||!o)return;const{pointsLayer:r}=o;r&&(y.current=e,s.execute(()=>{const l=r.children,x=[];for(let g=0;g<l.length;g++){const m=l[g];m.bounds=I(m.bounds.center.x,m.bounds.center.y,m.source.width,m.source.height,y.current),x.push(m)}u.current.add(()=>t.update(...x))}))},[t,o,s]),p=_(({data:e})=>{s.execute(()=>{const{point:i}=T(e);s.add({x:i.x,y:i.y}),s.select(s.points.length-1),n()})},[s,n]);M(()=>{const e=t.renderer;if(!(!k||!e))return y.current=t.scale,s.execute(()=>{s.restore(),n()}),e.events.addEventListener("pointer:click",p),e.events.addEventListener("viewport:ptscale",d),window.addEventListener("keyup",f),()=>{window.removeEventListener("keyup",f),e.events.removeEventListener("pointer:click",p),e.events.removeEventListener("viewport:ptscale",d),u.current.destroy()}},[k,t,s,n,p,d,f])}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as yt,useRef as L}from"react";import{getBounds as k}from"../../../renderer";import{getRouteLayerRegex as pt,getRouteStopLayerRegex as wt,TRAFFIC_VEHICLES as xt}from"./trafficLayers";import{loadImage as Et}from"../../../utils/loadImage";import{createImageCanvas as It}from"../drawing/config/canvases";import{UpdateQueue as Mt}from"./UpdateQueue";import Lt from"../../../tools/base-runtime-url";import{toRadians as bt}from"../../../utils/math";const tt=2,
|
|
1
|
+
import{useEffect as yt,useRef as L}from"react";import{getBounds as k}from"../../../renderer";import{getRouteLayerRegex as pt,getRouteStopLayerRegex as wt,TRAFFIC_VEHICLES as xt}from"./trafficLayers";import{loadImage as Et}from"../../../utils/loadImage";import{createImageCanvas as It}from"../drawing/config/canvases";import{UpdateQueue as Mt}from"./UpdateQueue";import Lt from"../../../tools/base-runtime-url";import{toRadians as bt}from"../../../utils/math";import{isDefaultScene as Rt}from"../../../renderer/engine-core/defs";const tt=2,Ft=tt*3.5,G=tt*12,it=G*.7,At=8,Tt="transport_locations",Pt=150,et="#a4aab6",at=1e3,vt=2e4,ut=500;export function useManageTraffic({permission:e,rendererService:n,dataJsonUrl:c,websocketUrl:i}){const t=L(window.devicePixelRatio),s=L(new Map),o=L(new Map),r=L(),y=L(),f=L(performance.now()),M=L(1),w=L(new Mt),A=L(new Map),x=L(),g=L(at),p=L(new Map),a=L();yt(()=>{async function S(){if(!(!e||!n.scene))try{let h;try{h=await(await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}})).json()}catch(u){console.warn("useManageTraffic failed to get JSON",u)}if(!h||h?.disabled||h?.error)return;t.current=lt(n.scale);const V=new Map(h.routes.map(({id:u,color:E})=>[u,E])),C=n.scene.rootLayer.children,W=new Map;V.forEach(u=>{W.set(u,Ct({radius:Ft,color:u,scale:window.devicePixelRatio}))});const z=pt(),Y=C.filter(u=>z.test(u.name)),B=wt(),U=C.filter(u=>B.test(u.name));h.routes.slice(0,Y.length).forEach(({id:u,color:E,path:R,stops:D,hiddenPoints:I},d)=>{A.current.set(u,R);const T=Y[d];if(T){const N=new Map(I?.map(l=>[ot(l),l])??[]);for(let l=1;l<R.length;l++){const O=R[l-1],H=R[l];N.has(ot(O))||N.has(ot(H))||T.children.push({points:[O,H],color:E,width:tt})}T.children.length&&w.current.add(()=>n.update(T))}const m=U[d];if(m&&D?.length){const N=W.get(E);D.forEach(l=>{m.children.push({source:N,bounds:k(l.x,l.y,N.width,N.height,t.current)})}),m.children.length&&w.current.add(()=>n.update(m))}});const $=C.find(u=>u.name===xt),X=new Map;x.current=({ptScale:u,sceneId:E})=>{try{if(!Rt(E))return;t.current=lt(u);const R=[];for(let I=0;I<U.length;I++){const d=U[I].children;for(let T=0;T<d.length;T++){const m=d[T];m.bounds=k(m.bounds.center.x,m.bounds.center.y,m.source.width,m.source.height,t.current,m.bounds.rotation),R.push(m)}}const D=[...s.current.values()];for(let I=0;I<D.length;I++){const d=D[I];d.bounds=k(d.bounds.center.x,d.bounds.center.y,d.source.width,d.source.height,t.current,d.bounds.rotation)}w.current.add(()=>n.update(...R,...D))}catch(R){console.error("ptscale",R)}},n.renderer.events.addEventListener("viewport:ptscale",x.current),V.forEach((u,E)=>{X.set(E,ht({id:E,width:G,height:G,color:u,scale:window.devicePixelRatio}))}),X.set(et,ht({id:"orphan",width:G,height:G,color:et,scale:window.devicePixelRatio}));let j=null;try{const u=await Et(`${Lt}icons/bus-white.svg`);j=It(u,it,it,window.devicePixelRatio)}catch(u){console.error(u)}y.current=u=>{try{const E=JSON.parse(u.data);if(E.type!==Tt)return;const R=u.timeStamp||performance.now();M.current=Math.round(R-f.current),f.current=R;const D=Math.max(M.current??ut,ut),I=o.current,d=s.current,T=$.children,m=w.current;let N=!1;E.data.forEach(({id:l,x:O,y:H,route_id:ct,hidden:gt})=>{if(I.has(l)&&(I.get(l)?.(),I.delete(l)),gt&&d.has(l)&&d.has(Q(l))){const P=d.get(l);P.hidden=!0;const F=d.get(Q(l));F.hidden=!0,m.add(()=>n.update(P,F));return}if(p.current.set(l,performance.now()),!d.has(l)){const P=X.get(ct)||X.get(et),F={id:l,source:P,bounds:k(O,H,P.width,P.height,t.current,0)};if(d.set(l,F),j){const q=Q(l),rt={id:q,source:j,bounds:k(O,H,j.width,j.height,t.current,0)};j.setAttribute("id",q),d.set(q,rt),T.push(F,rt)}else T.push(F);N=!0;return}const Z=d.get(l),st=d.get(Q(l)),mt=Z.bounds.center,K=St(mt,{x:O,y:H},A.current.get(ct));if(K.reduce((P,F,q)=>q===0?P:P+nt(K[q-1],F),0)>=Pt||document.hidden)dt({rendererService:n,updateQueue:m,vehicle:Z,vehicleFinery:st,x:O,y:H,scale:t.current,angle:_t(Z.bounds.center,{x:O,y:H})});else{const P=Dt(K,D,F=>{dt({rendererService:n,updateQueue:m,vehicle:Z,vehicleFinery:st,x:F.x,y:F.y,scale:t.current,angle:F.angle})});I.set(l,P)}}),N&&m.add(()=>n.update($))}catch(E){console.error("handleSocketMessage",E)}},v(),_(h.config?(Number(h.config.vehicle_inactive_interval)||20)*1e3:vt)}catch(h){console.warn(h)}}S();function v(){r.current?.readyState===WebSocket.OPEN||r.current?.readyState===WebSocket.CONNECTING||(r.current=new WebSocket(i),r.current.onmessage=y.current,r.current.onopen=()=>{g.current=at},r.current.onclose=()=>{if(!navigator.onLine)return;setTimeout(v,g.current);const h=3e4;g.current=Math.min(g.current*2,h)})}function b(){v()}window.addEventListener("online",b);function _(h){clearInterval(a.current),a.current=window.setInterval(()=>{const V=performance.now(),C=[],W=[];p.current.forEach((z,Y)=>{if(V-z<h)return;const B=s.current.get(Y);B&&(B.hidden=!0,W.push(B),C.push(Y));const U=Q(Y),$=s.current.get(U);$&&($.hidden=!0,W.push($),C.push(U))}),W.length&&w.current.add(()=>n.update(...W)),C.forEach(z=>p.current.delete(z))},h)}return()=>{x.current&&n.renderer&&n.renderer.events.removeEventListener("viewport:ptscale",x.current),o.current.forEach(h=>h?.()),o.current.clear(),s.current.clear(),w.current.destroy(),window.removeEventListener("online",b),clearInterval(a.current)}},[e,n,c,i])}function lt(e){return Math.min(e||window.devicePixelRatio,At)}function _t(e,n){return Math.atan2(n.y-e.y,n.x-e.x)}function Ct({radius:e,scale:n,color:c}){const i=document.createElement("canvas"),t=i.getContext("2d");t.imageSmoothingEnabled=!1;const s=Math.ceil(e*2*n),o=s/2,r=e*.78,y=e*.33;return i.width=s,i.height=s,t.translate(o,o),t.scale(n,n),t.beginPath(),t.arc(0,0,e,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),t.beginPath(),t.arc(0,0,r,0,2*Math.PI),t.fillStyle=c,t.fill(),t.beginPath(),t.arc(0,0,y,0,2*Math.PI),t.fillStyle="#FFFFFF",t.fill(),i}function ht({id:e,width:n,height:c,color:i,scale:t}){const s=2*t,o=n/2*t,r=c*t,y=.6,f=.01,M=r*y,w=r,A=8*t,x=w+s+M/2+A*2,g=o*2+M+s+A*2,p=document.createElement("canvas");p.setAttribute("id",e),p.width=x,p.height=g;const a=p.getContext("2d"),S=x/2,v=g/2;a.save(),a.translate(S,v),a.rotate(-Math.PI/2),a.translate(-S,-v);const b=S,_=v-w/2+o,h=_+M;return a.shadowColor="rgba(16, 24, 40, 0.2)",a.shadowBlur=A/2,a.beginPath(),a.arc(b,_,o,Math.PI,0,!1),a.bezierCurveTo(b+o,_+r*.3,b+f*o,h,b,h),a.bezierCurveTo(b-f*o,h,b-o,_+r*.3,b-o,_),a.closePath(),a.fillStyle=i,a.fill(),a.strokeStyle="#FFFFFF",a.lineWidth=s,a.stroke(),a.restore(),p}function nt(e,n){return Math.hypot(e.x-n.x,e.y-n.y)}function Q(e){return`${e}_finery`}function dt({rendererService:e,updateQueue:n,vehicle:c,vehicleFinery:i,x:t,y:s,scale:o,angle:r}){c.bounds=k(t,s,c.source.width,c.source.height,o,r),c.hidden=!1,i?(i.bounds=k(t,s,i.source.width,i.source.height,o,bt(e.angle)),i.hidden=!1,n.add(()=>e.update(i,c))):n.add(()=>e.update(c))}function J(e,n,c){return{x:e.x+(n.x-e.x)*c,y:e.y+(n.y-e.y)*c}}function ft(e,n){let c=1/0,i={index:0,t:0};for(let t=0;t<n.length-1;t++){const s=n[t],o=n[t+1],r=o.x-s.x,y=o.y-s.y,f=r*r+y*y,M=f?((e.x-s.x)*r+(e.y-s.y)*y)/f:0,w=Math.max(0,Math.min(1,M)),A=J(s,o,w),x=nt(e,A);x<c&&(c=x,i={index:t,t:w})}return i}function Nt(e,n,c){const i=nt(e,n),t=Math.max(2,Math.ceil(i/c)+1),s=[];for(let o=0;o<t;o++){const r=o/(t-1),y=J(e,n,r);s.push({x:y.x,y:y.y})}return s}function St(e,n,c){if(!c||!c.length)return Nt(e,n,10);const i=ft(e,c),t=ft(n,c),s=[],o=r=>s.push({x:r.x,y:r.y});i.index+1<c.length?o(J(c[i.index],c[i.index+1],i.t)):o(c[i.index]);for(let r=i.index+1;r<=t.index&&r<c.length;r++)o(c[r]);return t.index+1<c.length?o(J(c[t.index],c[t.index+1],t.t)):o(c[t.index]),s}function Dt(e,n,c,i){if(e.length<2)return()=>{};let t=null,s;const o=[];let r=0;for(let f=0;f<e.length-1;f++){const M=Math.hypot(e[f+1].x-e[f].x,e[f+1].y-e[f].y);o.push(M),r+=M}const y=f=>{t||(t=f);const M=f-t,w=Math.min(M/n,1),A=w*r;let x=0,g=0;for(;g<o.length&&x+o[g]<A;)x+=o[g],g++;g>=o.length&&(g=o.length-1);const p=e[g],a=e[Math.min(g+1,e.length-1)],S=o[g]||0,v=S===0?0:(A-x)/S,b=p.x+(a.x-p.x)*v,_=p.y+(a.y-p.y)*v,h=a.x-p.x,V=a.y-p.y,C=h===0&&V===0?0:Math.atan2(V,h);c({x:b,y:_,angle:C}),w<1?s=requestAnimationFrame(y):i&&i()};return s=requestAnimationFrame(y),()=>{s&&cancelAnimationFrame(s)}}function ot(e){return`${e.x},${e.y}`}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Renderer } from "@expofp/renderer";
|
|
1
|
+
import { Renderer, Vector2Like } from "@expofp/renderer";
|
|
2
2
|
export interface MapEngineVisibleArea {
|
|
3
3
|
x: number;
|
|
4
4
|
y: number;
|
|
@@ -8,8 +8,8 @@ export interface MapEngineVisibleArea {
|
|
|
8
8
|
right: number;
|
|
9
9
|
top: number;
|
|
10
10
|
bottom: number;
|
|
11
|
-
center:
|
|
11
|
+
center: Vector2Like;
|
|
12
12
|
}
|
|
13
13
|
export declare function getVisibleArea(renderer: Renderer): MapEngineVisibleArea;
|
|
14
|
-
export declare function isPointVisible(renderer: Renderer, point:
|
|
14
|
+
export declare function isPointVisible(renderer: Renderer, point: Vector2Like): boolean;
|
|
15
15
|
//# sourceMappingURL=visibleArea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function getVisibleArea(t){const o=t.viewport.canvasToSvg({x:0,y:0}),
|
|
1
|
+
import{pickDefaultScenePoint as s}from"../../renderer/engine-core/defs";export function getVisibleArea(t){const o=s(t.viewport.canvasToSvg({x:0,y:0})),i=s(t.viewport.canvasToSvg({x:t.canvas.clientWidth,y:0})),a=s(t.viewport.canvasToSvg({x:0,y:t.canvas.clientHeight})),c=s(t.viewport.canvasToSvg({x:t.canvas.clientWidth,y:t.canvas.clientHeight})),n=Math.min(o.x,i.x,a.x,c.x),v=Math.max(o.x,i.x,a.x,c.x),x=Math.min(o.y,i.y,a.y,c.y),y=Math.max(o.y,i.y,a.y,c.y);return{x:n,y:x,width:v-n,height:y-x,left:n,right:v,top:y,bottom:x,center:{x:(n+v)/2,y:(x+y)/2}}}export function isPointVisible(t,o){const i=getVisibleArea(t);return o.x>=i.left&&o.x<=i.right&&o.y>=i.bottom&&o.y<=i.top}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as a,jsxs as
|
|
1
|
+
import{jsx as a,jsxs as i}from"react/jsx-runtime";import{observer as s}from"mobx-react-lite";import{t}from"../utils/i18n";import"./MarketMaterialList.scss";const l=({fileName:e,path:r})=>i("a",{className:"market-materials__item",href:r,download:!0,target:"_blank",rel:"noopener noreferrer","aria-label":t("Download {{fileName}}",{fileName:e}),children:[a("div",{className:"market-materials__item-icon",children:a("i",{className:"icon-file-solid"})}),a("div",{className:"market-materials__item-name",children:a("span",{children:e})}),a("div",{className:"market-materials__item-download",children:a("i",{className:"icon-download"})})]}),m=({list:e})=>i("div",{className:"market-materials",children:[a("div",{className:"market-materials__title font-medium",children:t("Read More")}),a("div",{className:"market-materials__list",role:"list",children:e.map(r=>a(l,{...r},r.path))})]});export default s(m);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as R,jsxs as X}from"react/jsx-runtime";import fe from"classnames";import{useEffect as I,useRef as v,useState as u,useCallback as a,useMemo as Y,createContext as me}from"react";import{uiState as U}from"../store";import Z from"../tools/debounce";import ge from"./OverlayParticles";import{useWindowSize as he}from"../hooks/useWindowSize";import{useDragGesture as ve}from"../hooks/useDragGesture";import{MOBILE_BREAKPOINT as $}from"../constants";import"./Overlay.scss";export const OverlayScrollContext=me(null);const V=70,
|
|
1
|
+
import{jsx as R,jsxs as X}from"react/jsx-runtime";import fe from"classnames";import{useEffect as I,useRef as v,useState as u,useCallback as a,useMemo as Y,createContext as me}from"react";import{uiState as U}from"../store";import Z from"../tools/debounce";import ge from"./OverlayParticles";import{useWindowSize as he}from"../hooks/useWindowSize";import{useDragGesture as ve}from"../hooks/useDragGesture";import{MOBILE_BREAKPOINT as $}from"../constants";import"./Overlay.scss";import{t as we}from"../utils/i18n";export const OverlayScrollContext=me(null);const V=70,pe="0.3s",ye=10,x=()=>window!==window.top&&(document.documentElement.clientHeight||document.body.clientHeight)||window.innerHeight,z=(d=x(),r,s,D)=>({small:d/r,medium:d/s,full:d-D}),Te=({children:d,open:r,size:s="medium",particles:D=!1,className:ee,onChangeSize:C,onScrollStateChange:w,smallSizeMultiplier:O=12.6,mediumSizeMultiplier:S=2.6,fullSizeOffset:A=0,scrollThreshold:G=ye,disableDrag:W=!1,forceFull:N=!1})=>{const{width:M,height:te}=he(),[t,oe]=u(()=>z(x(),O,S,A)),[l,ne]=u(()=>M<=$),[p,K]=u(!1),[i,re]=u(()=>t[s]),[g,b]=u(()=>t[s]),[h,y]=u(!1),[se,q]=u(r),[L,P]=u(!1),k=v(),j=v(),F=v(null),J=v(null),f=v(null),c=a(e=>{const o=t[e];re(o),b(o),C?.(e)},[t,C]),le=Y(()=>l?N&&r?{height:x()}:{height:r||h?g:0}:{height:r?"auto":void 0},[l,r,g,p,s,h,N]),Q=a(e=>{const o=[t.small,t.medium,t.full].sort();if(e>=t.full){c("full");return}if(e<=t.small){c("small");return}const n=i||t.medium,m=e>n?o.find(E=>E+V>=e)||t.full:o.reverse().find(E=>E-V<=e)||t.small;m===t.full?c("full"):m===t.medium?c("medium"):c("small")},[t,i,c]),ie=a(e=>{K(!0),k.current=e},[]),ce=a(e=>{const o=k.current;if(o===void 0)return;const n=f.current;if(n?.scrollTop>0&&i===t.full)return;const m=o-e;let _=(i||t.medium)+m;n&&i===t.full&&_<i&&(n.style.overflow="hidden"),_=Math.min(Math.max(_,t.small),t.full),j.current=m,b(_)},[i,t]),ue=a(()=>{K(!1),k.current=void 0;const e=f.current;e&&e.style.removeProperty("overflow");const o=j.current;j.current=void 0,o!==void 0&&g!==void 0&&Q(g)},[g,Q]),B=a(e=>{if(p)return;c(s==="small"?"medium":s==="medium"?"full":"small")},[p,s,c]),{touchHandlers:T,mouseHandlers:H}=ve({onDragStart:ie,onDragMove:ce,onDragEnd:ue}),ae=a(()=>{const e=f.current;if(!e)return;const n=e.scrollTop>=G;L!==n&&(P(n),w?.(n))},[G,L,w]),de=Y(()=>Z(()=>{window.__resett?.()},250),[]);I(()=>{if(!l||W)return;const e=F.current,o=J.current,n=f.current;e&&(e.ontouchstart=T.onTouchStart,e.ontouchend=T.onTouchEnd,window.ontouchmove=T.onTouchMove,e.onmousedown=H.onMouseDown,e.onmouseup=H.onMouseUp,window.onmousemove=H.onMouseMove),o&&o.addEventListener("mouseup",B);const m=()=>{i&&i<t.full&&n&&(n.style.overflow="hidden")};return n&&(n.ontouchstart=m),()=>{e&&(window.ontouchmove=null,window.onmousemove=null),o&&o.removeEventListener("mouseup",B)}},[l,T,H,B,i,t]),I(()=>{ne(M<=$);const e=x();oe(z(e,O,S,A))},[M,te,O,S,A]),I(()=>{if(r){q(!0),y(!0);const e=setTimeout(()=>{c(s),y(!1)},10);return()=>clearTimeout(e)}else{y(!0),l&&b(0);const e=setTimeout(()=>{q(!1),y(!1),P(!1)},parseFloat(pe)*1e3);return()=>clearTimeout(e)}},[r,s,c,l]),I(()=>{r&&!h&&(f.current?.scrollTo({top:0}),P(!1),w?.(!1))},[r,h,w,U.details,U.list.type]);const He=a(Z(()=>{window.__resett?.()},250),[U.kiosk]);return se?R(OverlayScrollContext.Provider,{value:f.current,children:X("div",{className:fe("efp-overlay",{"is-open":r,"is-draggable":p,"is-small":s==="small","is-medium":s==="medium","is-full":s==="full","is-mobile":l,"is-desktop":!l,"is-hidden":!l&&!r,"is-animating":h,"is-scrolled":L,"is-forced-full":N&&l},ee),style:le,ref:F,children:[!W&&R("div",{className:"efp-overlay__draghandle",ref:J}),X("div",{className:"efp-overlay__scroll",ref:f,onScroll:e=>{ae(),de()},children:[D?R(ge,{}):null,R("div",{className:"efp-overlay__content",children:d||we("No content")})]})]})}):null};export default Te;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as r,jsxs as
|
|
1
|
+
import{jsx as r,jsxs as o}from"react/jsx-runtime";import i from"classnames";import{observer as l}from"mobx-react-lite";import{uiState as e}from"../store";import"./OverlayGrip.scss";function p(){function t(){return i({"overlay-grip":!0,arr:e.overlaySize==="full"})}function s(a){a.preventDefault(),e.toggleMapOverlay()}return r("a",{href:"/#",className:t(),onClick:s,children:o("svg",{viewBox:"0 0 1200 200",preserveAspectRatio:"xMidYMid meet",xmlns:"http://www.w3.org/2000/svg",children:[r("path",{d:"M100,100 l 500 100 L 1100 100"}),r("path",{d:"M100,150 l 500 0 L 1100 150"})]})})}export default l(p);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as r,jsx as e}from"react/jsx-runtime";import{useState as d}from"react";import h from"classnames";import{observer as m}from"mobx-react-lite";import{t as a}from"../utils/i18n";import"./Share.scss";const p=m(({title:i,url:s})=>{const[c,n]=d(!1),o=encodeURI(s),l={facebook:`https://www.facebook.com/sharer/sharer.php?u=${o}`,xcom:`https://x.com/share?url=${o}`,linkedin:`https://linkedin.com/shareArticle?url=${o}`},t=()=>{navigator.clipboard.writeText(s),n(!0),setTimeout(()=>n(!1),2e3)};return r("div",{className:"share",children:[r("h3",{children:[a("Share")," ",i]}),r("div",{className:"share__socials",children:[r("a",{href:l.facebook,rel:"noopener noreferrer",target:"_blank",className:"share-social facebook","aria-label":a("Share {{title}} on Facebook",{title:i}),children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-facebook","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"Facebook"})]}),r("a",{href:l.xcom,rel:"noopener noreferrer",target:"_blank",className:"share-social xcom","aria-label":a("Share {{title}} on X.com",{title:i}),children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-twitter-x","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"X.COM"})]}),r("a",{href:l.linkedin,rel:"noopener noreferrer",target:"_blank",className:"share-social linkedin","aria-label":a("Share {{title}} on LinkedIn",{title:i}),children:[e("div",{className:"share-social__icon",children:e("i",{className:"icon-linkedin","aria-hidden":"true"})}),e("div",{className:"share-social__title",children:"LinkedIn"})]})]}),r("div",{className:"share__copy",children:[e("span",{children:a("or copy link")}),r("div",{className:"share__copy-input",children:[e("input",{type:"text",defaultValue:s,readOnly:!0,"aria-label":a("Direct link to {{title}}",{title:i})}),e("button",{type:"button",className:h({isCopied:c}),onClick:t,"aria-label":a("Copy link to clipboard"),children:c?e("span",{"aria-live":"polite",children:a("Copied")}):a("Copy")})]})]})]})});export default p;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as s,jsxs as
|
|
1
|
+
import{jsx as s,jsxs as C}from"react/jsx-runtime";import{memo as R,useCallback as u}from"react";import _ from"classnames";import m from"../../store";import"./ShortcutButton.scss";import{t as h}from"../../utils/i18n";const n=R(({id:o,label:r,icon:i,enabled:t,active:c,tooltip:a,badge:e,variant:p="default",showResetButton:f=!1,interfaceId:l})=>{const N=u(()=>{t&&m.shortcutRegistry.handleShortcutClick(l,o)},[t,l,o]),d=u(k=>{k.stopPropagation(),t&&c&&m.shortcutRegistry.handleShortcutReset(l,o)},[t,c,l,o]);return C("button",{className:_("shortcut-button",`shortcut-button--${p}`,{"is-active":c,"is-disabled":!t}),onClick:N,disabled:!t,title:a||r,type:"button","aria-label":a||r,children:[f&&c&&s("div",{className:"shortcut-reset-button",onClick:d,title:h("Reset filter"),"aria-label":h("Reset filter"),children:s("i",{className:"icon-close-solid"})}),i&&s("i",{className:i}),r&&s("span",{className:"shortcut-button__label",children:r}),e&&s("span",{className:"shortcut-button__badge",children:e})]})});n.displayName="ShortcutButton";export default n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{memo as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{memo as u}from"react";import h from"classnames";import{observer as f}from"mobx-react-lite";import s from"../../store";import{t as i}from"../../utils/i18n";import"./ShortcutsFiltersButton.scss";const r=u(f(({interfaceId:t,className:l})=>{const{shortcutRegistry:n}=s,a=n.getShortcuts(t).filter(p=>p.active).length;let e=0;t==="sessions"?e=s.sessionsFilterStore.activeFiltersCount:t==="speakers"&&(e=s.speakerFilterStore.activeFiltersCount);const c=Math.max(a,e),m=()=>{t==="sessions"?s.sessionsFilterStore.openFilterWithSections(["tracks","venues","date","time","sort","settings"]):t==="speakers"&&s.speakerFilterStore.openFilterWithSections(["companies","jobTitles"])};return o("button",{className:h("shortcuts-filters-button",l,{"is-active":c>0}),onClick:m,type:"button","aria-label":i("Open filters"),title:i("Open filters"),children:o("i",{className:"icon-filter-horizontal-solid"})})}));r.displayName="ShortcutsFiltersButton";export default r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,Fragment as w,jsxs as s}from"react/jsx-runtime";import{observer as _}from"mobx-react-lite";import a from"../data";import o,{uiState as x}from"../store";import{t as r}from"../utils/i18n";import{Button as l}from"./";import"./ViewerMenuPanel.scss";function N(n){if(!n)return{venue:"",dateRange:""};const t=n.split(" | ");return{venue:t[0]?.trim()||"",dateRange:t[1]?.trim()||""}}function D(n,t){if(!n||!t)return!1;const c=Date.now();return c>=new Date(n).getTime()&&c<=new Date(t+"T23:59:59").getTime()}const S=_(()=>{const{venue:n,dateRange:t}=N(a.subtitle),u=!(!!a.startDate&&!!a.endDate),d=D(a.startDate,a.endDate),m=o.eventStore.eventItems.length>0,v=o.toursStore.hasTours;function p(i){i.preventDefault(),x.menu=!1}function h(i){i.preventDefault(),o.selectExhibitors()}function f(i){i.preventDefault(),o.selectSessions()}function g(i){i.preventDefault(),o.selectTours()}return s("div",{className:"viewer-panel",children:[s("div",{className:"viewer-panel__info",children:[e("div",{className:"viewer-panel__title",children:a.title}),s("div",{className:"viewer-panel__row",children:[e("i",{className:"viewer-panel__icon icon-schedule"}),u?e("span",{children:r("Ongoing")}):s(w,{children:[e("span",{children:t}),d&&e("div",{className:"viewer-panel__now-badge",children:r("Now")})]})]}),n&&s("div",{className:"viewer-panel__row",children:[e("i",{className:"viewer-panel__icon icon-marker-pin"}),e("span",{children:n})]})]}),s("div",{className:"viewer-panel__buttons",children:[e(l,{variant:"gray",size:"lg",text:r("Map"),onClick:p}),e(l,{variant:"gray",size:"lg",text:r("Exhibitors"),onClick:h}),m&&e(l,{variant:"gray",size:"lg",text:r("Sessions"),onClick:f}),v&&e(l,{variant:"gray",size:"lg",text:r("Guided
|
|
1
|
+
import{jsx as e,Fragment as w,jsxs as s}from"react/jsx-runtime";import{observer as _}from"mobx-react-lite";import a from"../data";import o,{uiState as x}from"../store";import{t as r}from"../utils/i18n";import{Button as l}from"./";import"./ViewerMenuPanel.scss";function N(n){if(!n)return{venue:"",dateRange:""};const t=n.split(" | ");return{venue:t[0]?.trim()||"",dateRange:t[1]?.trim()||""}}function D(n,t){if(!n||!t)return!1;const c=Date.now();return c>=new Date(n).getTime()&&c<=new Date(t+"T23:59:59").getTime()}const S=_(()=>{const{venue:n,dateRange:t}=N(a.subtitle),u=!(!!a.startDate&&!!a.endDate),d=D(a.startDate,a.endDate),m=o.eventStore.eventItems.length>0,v=o.toursStore.hasTours;function p(i){i.preventDefault(),x.menu=!1}function h(i){i.preventDefault(),o.selectExhibitors()}function f(i){i.preventDefault(),o.selectSessions()}function g(i){i.preventDefault(),o.selectTours()}return s("div",{className:"viewer-panel",children:[s("div",{className:"viewer-panel__info",children:[e("div",{className:"viewer-panel__title",children:a.title}),s("div",{className:"viewer-panel__row",children:[e("i",{className:"viewer-panel__icon icon-schedule"}),u?e("span",{children:r("Ongoing")}):s(w,{children:[e("span",{children:t}),d&&e("div",{className:"viewer-panel__now-badge",children:r("Now")})]})]}),n&&s("div",{className:"viewer-panel__row",children:[e("i",{className:"viewer-panel__icon icon-marker-pin"}),e("span",{children:n})]})]}),s("div",{className:"viewer-panel__buttons",children:[e(l,{variant:"gray",size:"lg",text:r("Map"),onClick:p}),e(l,{variant:"gray",size:"lg",text:r("Exhibitors"),onClick:h}),m&&e(l,{variant:"gray",size:"lg",text:r("Sessions"),onClick:f}),v&&e(l,{variant:"gray",size:"lg",text:r("Guided Tours"),onClick:g})]})]})});export default S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as a,jsxs as
|
|
1
|
+
import{jsx as a,jsxs as l}from"react/jsx-runtime";import i from"classnames";import"./WayInformation.scss";import{t as n}from"../utils/i18n";const m=({items:s,accessible:o,onClick:r})=>s?.length?a("div",{className:"efp-wayInformation",onClick:r,role:"button",tabIndex:0,"aria-label":n("Show detailed route steps"),children:s.map((t,e)=>l("div",{className:i("efp-wayInformation__item",{"is-accessible":o&&e===0}),children:[a("span",{children:t.title}),a("strong",{children:t.text})]},e))}):null;export default m;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as r,jsxs as g}from"react/jsx-runtime";import
|
|
1
|
+
import{jsx as r,jsxs as g}from"react/jsx-runtime";import u from"react";import p from"classnames";import"./WayfindingFloorSelector.scss";import{t as f}from"../utils/i18n";const y=({floors:e,current:l,onClickFloor:h})=>{const t=e.findIndex(i=>i?.id===l?.id),m=i=>{if(i>=e.length-1)return null;const n=e[i],o=e[i+1];if(!n||!o)return null;const a=n.basePriority??0;return(o.basePriority??0)<a?"up":"down"},C=i=>t!==-1&&i===t;return r("div",{className:"efp-wayfinding-floor",children:r("div",{className:"efp-wayfinding-floor__body",children:r("div",{className:"efp-wayfinding-floor__list",role:"radiogroup","aria-label":f("Floor selection"),children:e.map((i,n)=>{const o=i?.id===l?.id,a=t!==-1&&n<t,d=n===e.length-1,s=m(n),c=C(n),w=t!==-1&&n<t;return g(u.Fragment,{children:[r("div",{className:p("efp-wayfinding-floor__item",{"is-current":o,"is-passed":a}),children:r("button",{type:"button",role:"radio",title:i.description,"aria-checked":o,"aria-label":i.description||f("Floor {{name}}",{name:i.name}),onClick:()=>h({id:i.id,name:i.name}),children:r("span",{children:i.name})})}),!d&&s&&r("div",{className:p("efp-wayfinding-floor__arrow",{[`efp-wayfinding-floor__arrow--${s}`]:s,"efp-wayfinding-floor__arrow--blink":c,"efp-wayfinding-floor__arrow--passed":w}),"aria-hidden":"true",children:w||c?r("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r("path",{d:"M11.7502 18.2823C11.7503 19.0928 12.4074 19.7499 13.218 19.75C13.5885 19.75 13.9455 19.6096 14.217 19.3575L20.6438 13.3897C21.0303 13.0308 21.2502 12.5274 21.2502 12C21.2502 11.4727 21.0303 10.9693 20.6438 10.6104L14.217 4.64258C13.9795 4.42202 13.6768 4.28716 13.3566 4.25684L13.218 4.25L13.0686 4.25782C12.3282 4.3328 11.7503 4.95766 11.7502 5.71778L11.7502 8.25L4.50024 8.25C3.53374 8.25 2.75024 9.03351 2.75024 9.99996L2.75024 14C2.75024 14.9665 3.53374 15.75 4.50024 15.75L11.7502 15.75L11.7502 18.2823Z",fill:"currentColor"})}):r("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r("path",{d:"M2.5 10C2.5 8.89544 3.39544 8 4.5 8H11.5V5.71777C11.5001 4.76912 12.2692 4.00012 13.2178 4C13.5973 4 13.9649 4.12537 14.2637 4.35449L14.3867 4.45898L20.8145 10.4268C21.2518 10.8329 21.5 11.4032 21.5 12C21.5 12.5968 21.2518 13.1671 20.8145 13.5732L14.3867 19.54L14.3877 19.541C14.0697 19.8365 13.6514 20 13.2178 20C12.2692 19.9999 11.5001 19.2308 11.5 18.2822V16H4.5C3.39545 16 2.5 15.1046 2.5 14V10ZM4.5 14H12.5C13.0523 14 13.5 14.4477 13.5 15V17.6348L19.4531 12.1074C19.4829 12.0797 19.5 12.0407 19.5 12C19.5 11.9593 19.4829 11.9203 19.4531 11.8926L13.5 6.36426V9C13.5 9.55228 13.0523 10 12.5 10H4.5V14Z",fill:"currentColor"})})})]},i.id)})})})})};export default y;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{useObserver as s}from"mobx-react-lite";import m,{layersStore as r,uiState as u}from"../store";import c from"./SimpleRow";import p from"../utils/useHeatmapData";const d=({yah:e,className:i})=>{const{clicks:o,background:n}=p(e);return s(()=>l(c,{style:{background:u.heatmapYah?`linear-gradient(to right, transparent 98%, ${n} 93%) center / 100% 99% no-repeat`:null},className:i,slug:e.id.toString(),onClick:a,line1:e.name,line2:e.z?`Level ${e.z}`:"",lineEnd:o.toString(),highlight:!1}));function a(){const t=r.findLayer(e.z);t&&r.updateVisibility(t,!0),m.routeStore.selectMarker(e.id.toString(),!0)}};export default d;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PREVIEW_MODE_ATTRIBUTE as
|
|
1
|
+
import{PREVIEW_MODE_ATTRIBUTE as V}from"./constants";import l from"./tools/base-runtime-url";import{buildRebookingUrl as H,getRebookingToken as z,retainRebookingToken as G}from"./tools/rebookingUrl";import{loadCss as x,loadFont as g,loadJs as b}from"./tools/loaders";import L from"./tools/logger";import{sleep as N}from"./utils";import{initI18n as Q}from"./utils/i18n";import B from"./utils/is-webview";import{loadCustomCss as q}from"./utils/loadCustomCss";import{loadIcons as W}from"./utils/loadIcons";import $ from"./utils/mergeExhibitors";import E from"./utils/use-shadow";import J from"./utils/is-debug";import K from"./utils/is-localhost";import{initSentry as Y}from"./tools/sentry";import{shouldLoadIntercom as X}from"./intercom";function t(){throw new Error("FloorPlan not ready")}export default class Z{options;renderTarget;_ready;element;eventId;dataUrl;noOverlay;offHistory;ignoreQuery;allowConsent;onInit;disableRuntimeAlerts;viewerMode;efpStyleLoadHandler;resolveReady;icons=new Map;enableRotation=!0;alwaysShowSidebar=!1;get ready(){return this._ready}get previewMode(){return this.options.previewMode||this.element.hasAttribute(V)}onBoothClick;onBookmarkClick;onVisitedClick;onCategoryClick;onFpConfigured;onDirection;onDetails;onExhibitorCustomButtonClick;onGetCoordsClick;onMarkerClick;onLeaveEvent;selectBooth(e){t()}selectExhibitor(e){t()}selectRoute(e,a){t()}getOptimizedRoutes(e){t()}selectCurrentPosition(e,a,h){t()}setBookmarks(e){t()}setEntitiesBookmarks(e){t()}setEntitiesVisited(e){t()}setMarkers(e){t()}updateLayerVisibility(e,a){t()}getCenterCoordinates(){t()}applyParameters(e){t()}exhibitorsList(){t()}boothsList(){t()}categoriesList(){t()}selectCategory(e){t()}getVisibility(){t()}setVisibility(e){t()}findLocation(){t()}zoomIn(){t()}zoomOut(){t()}zoomTo(e,a){t()}switchView(){t()}fitBounds(){t()}getBounds(e){t()}getBoothRect(e){t()}convertToGeo(e,a){t()}unstable_destroy(){t()}highlightExhibitors(e){t()}highlightBooths(e){t()}onCurrentPositionChanged(e){t()}search(e){t()}getFloors(){t()}onFloorActivated(e){t()}activateFloor(e){t()}showPathway(e,a){t()}showPathwayOnly(e,a){t()}hidePathways(){t()}showSearch(){t()}changeLanguage(e){t()}isGpsTrackingEnabled(){t()}setGpsTrackingEnabled(e){t()}deselectCurrentPosition(){t()}deselectRoute(){t()}reset(){t()}constructor(e){this.options=e,this.noOverlay=!!e.noOverlay,this.offHistory=!!e.offHistory,this.ignoreQuery=e.ignoreQuery,this.allowConsent=K&&!J?!1:e.allowConsent,this.onBoothClick=e.onBoothClick,this.onBookmarkClick=e.onBookmarkClick,this.onVisitedClick=e.onVisitedClick,this.onCategoryClick=e.onCategoryClick,this.onDetails=e.onDetails,this.onExhibitorCustomButtonClick=e.onExhibitorCustomButtonClick,this.onGetCoordsClick=e.onGetCoordsClick,this.onMarkerClick=e.onMarkerClick,this.onFpConfigured=e.onFpConfigured,this.onDirection=e.onDirection,this.onInit=e.onInit,this.onCurrentPositionChanged=e.onCurrentPositionChanged,this.onFloorActivated=e.onFloorActivated,this.onLeaveEvent=e.onLeaveEvent,this.viewerMode=!!e.viewerMode,this.disableRuntimeAlerts=e.disableRuntimeAlerts??!0,this._ready=new Promise((d,i)=>{this.resolveReady=d});const a=e.element;if(this.element=a,a.__expofp)throw new Error("Element already in use");if(a.__expofp=this,a.getAttribute("data-event-id")||a.getAttribute("data-event"))throw new Error("data-xxx attributes are removed, use options instead");const h=e.expo||e.event;if(!h)throw new Error("`expo` option is required");Y({eventId:h||"",isWebview:B}),this.eventId=h,window.__efpEvent=h,window.__efpElement=a;const P=[...a.classList];a.classList.remove(...P),a.classList.add("expofp-floorplan-default",...P);const O=document.head||document.getElementsByTagName("head")[0],I=document.createElement("style");O.prepend(I),I.textContent=".expofp-floorplan-default { width: 100%; height: 100%;}";const m=document.createElement("div");m.style.height="100%",m.style.width="100%",a.appendChild(m);let n;if(B&&(this.allowConsent=!0),e.allowConsent===void 0){const i=new URL(window.location.href).searchParams.get("allowConsent");i&&(this.allowConsent=i==="true")}if(E){n=m.attachShadow({mode:"open"});const d=n,i=document;d.createElement=(...r)=>i.createElement(...r),d.createElementNS=(...r)=>i.createElementNS(...r),d.createTextNode=(...r)=>i.createTextNode(...r)}else n=m;const y=document.createElement("div");if(y.style.height="100%",y.style.width="100%",n.appendChild(y),E&&Object.defineProperty(y,"ownerDocument",{value:n}),window.__efpShadowDOMStyleParent=E?n:void 0,this.renderTarget=y,a.getAttribute("data-data-url"))throw new Error("data-xxx attributes are removed, use options instead");const u=e.legacyDataUrlBase;window.__dataUrlBase=u,this.dataUrl=u,L.log("Instantiating ExpoFP floorplan",e.element,h);const D=u+"data.js",j=u+"wf.data.js",R=u+"fp.svg.js",T=[b(j),b(D),b(R)];let v=0;this.efpStyleLoadHandler=function(d){const i=window.__efpStyleElements;for(;v<i.length;){const r=i[v];n.appendChild(r),v++}},window.addEventListener("__efpStyleLoad",this.efpStyleLoadHandler);const k=this;(async function(){await Promise.all(T);let i=0;for(;window.__fpPending&&!window.__fp;)await N(2e3),await b(R+`?v=${++i}`);const r=window.__data,_=X(r);_&&import("./intercom/bootIntercom").then(({bootIntercom:o})=>o(_)).catch(()=>{}),await Q();const f=new URLSearchParams(window.location.search);let w,C;if(r?.trackerUrl)try{w=new URL(r.trackerUrl),C=w.searchParams.get("expoId")}catch(o){console.error(o)}const U=async o=>{if(!w||!C)return Promise.reject(new Error("trackerUrl or expoId is missing"));const s=new URL(o.dataUrl,w.origin),c=await fetch(s.toString(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoId:C,token:decodeURIComponent(f.get("t"))})});let p=[];c.ok&&(p=(await c.json()).map(o.dataMapper)),window.__heatmapDataYah={yah:p}};if(f.get("heatmap")==="true")try{if(f.get("type")==="yah")f.get("subtype")==="kiosk"?await U({dataUrl:"/api/kiosks/list/viewer",dataMapper:o=>({...o,id:o.key,name:`Kiosk ${o.key}`})}):await U({dataUrl:"/api/v1/you-are-here/qr-code/list/viewer",dataMapper:(o,s)=>({...o,name:`QR Code #${s+1}`})});else{const o=new URL("/api/fp-stats/get",w.origin);o.searchParams.set("expoId",C),o.searchParams.set("type","booview"),o.searchParams.set("t",decodeURIComponent(f.get("t")));const s=new URL("api/fp-stats/get",w.origin);s.searchParams.set("expoId",C),s.searchParams.set("type","exview"),s.searchParams.set("t",decodeURIComponent(f.get("t")));const[c,p]=await Promise.all([fetch(o.toString()),fetch(s.toString())]),[S,A]=await Promise.all([c.json(),p.json()]);window.__heatmapData={booths:S,exhibitors:A}}}catch(o){console.error("Heatmap: Initialization error",o)}try{const o=z();if(o){G(o);const s=H("api/rebooking-data",{rt:o,expoKey:h}),c=await fetch(s);if(c.ok){const p=await c.json();$(r,p)}r.isRebooking=c.ok}else r.isRebooking=!1}catch(o){console.error(o)}const M=[x(l+"vendor/sanitize-css/sanitize.css",n),x(l+"vendor/perfect-scrollbar/css/perfect-scrollbar.css",n),x(l+"vendor/mapbox/mapbox-gl.css",n),g("Oswald",l+"fonts/oswald-v17-cyrillic_latin-300.woff",{weight:300}),g("Oswald",l+"fonts/oswald-v17-cyrillic_latin-500.woff",{weight:500}),g("Inter",l+"fonts/inter-400.woff2",{weight:400}),g("Inter",l+"fonts/inter-500.woff2",{weight:500}),g("Inter",l+"fonts/inter-600.woff2",{weight:600}),g("efp-symbols",l+"fonts/efp-symbols.woff",{weight:400}),q(r,n),W(k.icons)];await Promise.all(M),k.enableRotation=r?.enableRotation??!1,k.alwaysShowSidebar=r?.alwaysShowSidebar??!1,L.log("Data loaded");const{default:F}=await import("./floorplan.ready");for(document.querySelectorAll(".expofp-floorplan-loader").forEach(o=>o.remove());a.firstChild&&a.firstChild!==m;)a.removeChild(a.firstChild);Object.setPrototypeOf(k,F.prototype).init()})()}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as g,Fragment as L,jsxs as C}from"react/jsx-runtime";import{reaction as T}from"mobx";import{createRoot as R}from"react-dom/client";import{install as I}from"resize-observer";import V from"./components/Layout";import $ from"./floorplan.loader";import{applyParameters as M,destroyHistory as j,initRouting as z}from"./services/routing";import t from"./store";import{Route as S,findBooth as x,separateExternalIds as E}from"./store/RouteStore";import{destroyUiHandlers as G}from"./store/init/init-ui";import{GaEventActions as P,destroyGtag as _,sendEventToGa as w,setConsentSettings as q}from"./tools/gtag";import N from"./tools/report-error";import{resetGlobalVariables as Y}from"./tools/reset";import H from"./tools/track-event";import{fpGeo as v}from"./components/Mapbox/utils/fpGeo";import{convertLocalToGps as O,isValidPointCoords as d}from"./utils/gps";import m from"./core/Rect";import{mapEntity as y}from"./utils/mapEntity";import{LANG_KEY as X,MAX_ROUTE_WAYPOINTS as p,PATHWAY_KEY as U}from"./constants";import{getStorage as B}from"./utils/entity-storage";import{ErrorBoundary as D}from"@sentry/react";import{POISelectorsSchema as F,BoundsSchema as K,ZoomToOptionsSchema as A}from"./schemas/sdk.schemas";import W from"debug";import{buildOptimizedRoute as Q}from"./utils/buildOptimizedRoute";import{hasLocale as Z,getLocales as J}from"./utils/i18n";const b=W("efp:api");I();export default class ee extends ${root;init(){this.ignoreQuery||z(this.offHistory),H("load"),t.fp=this,q(this.allowConsent),w(P.Load,""),this.root=R(this.renderTarget),this.root.render(g(D,{children:g(V,{offHistory:this.offHistory,allowConsent:this.allowConsent})})),w(P.Rendered,""),T(()=>t.layerStore.layersLoaded,()=>{this.resolveReady(),t.initialized||this.onInit?.(this),t.initialized=!0})}selectBooth(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectBooth","Parameter must be a string or an array of strings.","EFP000000");return}const i=t.boothStore.booths.filter(o=>typeof e=="string"?o.name===e||o.externalId===e:e.includes(o.name)||e.includes(o.externalId));t.selectBooth(i)}selectExhibitor(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectExhibitor","Parameter must be a string or an array of strings.","EFP000100");return}if(!e?.length){t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null;return}const i=t.exhibitorStore.exhibitors.filter(s=>typeof e=="string"?s.name===e||s.externalId===e:e.includes(s.name)||e.includes(s.externalId));if(!i?.length)return;if(typeof e=="string"){t.selectExhibitor(i[0]),t.moveToList([i[0]]);return}const o=i.flatMap(s=>s.booths.map(r=>r.layer)),{description:n}=o.reduce((s,r)=>(s.freq[r.description]=(s.freq[r.description]||0)+1,s.freq[r.description]>s.maxCount&&(s.maxCount=s.freq[r.description],s.mostFrequent=r),s),{freq:{},mostFrequent:o[0],maxCount:0}).mostFrequent;t.layerStore.updateVisibility(n,!0),t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null,t.uiState.list={type:"filter",items:i,query:{key:"exhibitors",value:i.map(s=>s.externalId).join(",")}},t.moveToList()}highlightExhibitors(e){Array.isArray(e)||a("highlightExhibitors","Parameter must be an array of strings.","EFP000200"),t.boothStore.highlightedByExternalIds=[],t.exhibitorStore.highlightedByExternalIds=[...e]}highlightBooths(e){Array.isArray(e)||a("highlightBooths","Parameter must be an array of strings.","EFP000300"),t.exhibitorStore.highlightedByExternalIds=[],t.boothStore.highlightedByExternalIds=[...e]}highlightEntities(e){Array.isArray(e)||a("highlightEntities","Parameter must be an array of strings.","EFP000400");const{boothExternalIds:i,exhibitorExternalIds:o}=E(e);t.boothStore.highlightedByExternalIds=[...i],t.exhibitorStore.highlightedByExternalIds=[...o]}selectRoute(e,i){if(Array.isArray(e)){let o=[...e];const n=o.shift(),s=o.pop();if(o.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);if(!n||!s){a("selectRoute","Invalid route format: When providing an array, it must include at least two points: a start and a destination.","EFP000401");return}t.routeStore.selectRoute(new S(f(n),f(s),o.map(f)));return}e||a("selectRoute","At a minimum, the starting point must be passed.","EFP000402"),t.routeStore.selectRoute(new S(f(e),f(i)))}getOptimizedRoutes(e){if(!Array.isArray(e))return a("getOptimizedRoutes","Parameter must be an array.","EFP000500"),[];if(e.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);const i=e.map(f).filter(n=>!!n);if(!i.length)throw new Error("No booths found for the provided waypoints.");const o=new Map;for(const n of i){const s=n.layer?.name??"",r=o.get(s);r?r.push(n):o.set(s,[n])}return Array.from(o.values()).map(n=>({waypoints:Q(n.map(s=>[s.name,{cx:s.rect.cx,cy:s.rect.cy}]))}))}selectCurrentPosition(e,i,o){const n=d(e.x)&&d(e.y),s=d(e.lng)&&d(e.lat);!n&&!s&&a("selectCurrentPosition","A point must be passed. Either (x,y) or (lat,lng) are required.","EFP000600"),t.routeStore.selectCurrentPosition(e,i,o),this.onCurrentPositionChanged?.(e)}setBookmarks(e){(!Array.isArray(e)||!e.length)&&a("setBookmarks","Parameter must be an array.","EFP000700"),e.forEach(i=>{const o=t.exhibitorStore.exhibitors.find(n=>n.name===i.name||n.externalId===i.externalId);o&&(o.bookmarked=i.bookmarked)})}setEntitiesBookmarks(e){if(!Array.isArray(e)||!e.length){a("setEntitiesBookmarks","Parameter must be an array.","EFP000701");return}const i=["exhibitor","event","speaker","booth"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesBookmarks",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000702");return}const n=B("bookmarked"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceBookmarked(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceBookmarked(r)},speaker:{existingIds:new Set(n.speakers||[]),finder:r=>t.speakerStore.speakers.find(l=>l.name===r||l.externalId===r||l.slug===r),replacer:r=>t.speakerStore.replaceBookmarked(r)},booth:{existingIds:new Set(n.booths||[]),finder:r=>{const l=t.boothStore.findBooth(r);return l?.exhibitors.length===0?l:void 0},replacer:r=>t.boothStore.replaceBookmarked(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.bookmarked?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setEntitiesVisited(e){if(!Array.isArray(e)||!e.length){a("setEntitiesVisited","Parameter must be an array.","EFP000703");return}const i=["exhibitor","event"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesVisited",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000704");return}const n=B("visited"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceVisited(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceVisited(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.visited?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setMarkers(e){if(!e||!Array.isArray(e.icons)||!Array.isArray(e.markers)){a("setMarkers","Invalid input.","EFP000800");return}t.routeStore.setMarkers(e)}selectMarker(e,i=!0){return typeof e!="string"&&a("selectMarker","The identifier must be passed.","EFP000900"),t.routeStore.selectMarker(e,i)}drawCircles(e){Array.isArray(e)||a("drawCircles","Invalid input.","EFP000A00"),t.uiState.debugCircles=e}checkRoutes(){t.routeStore.checkRoutes()}updateLayerVisibility(e,i){typeof e!="string"&&a("updateLayerVisibility","The layer name (string) must be passed.","EFP000B00"),i||a("updateLayerVisibility","Passing a false value to visible will have no effect.","EFP000B01"),t.layerStore.updateVisibility(e,i)}getCenterCoordinates(){return t.fp.getCenterCoordinates()}exhibitorsList(){return t.exhibitorStore.exhibitors.map(e=>y(e))}boothsList(){return t.boothStore.booths.map(e=>y(e))}categoriesList(){return t.categoryStore.categories.map(e=>y(e))}selectCategory(e){if(e==null||typeof e!="string"){t.searchStore.selectSearch();return}const i=e?.toLowerCase(),o=t.categoryStore.categories.find(({name:n,slug:s})=>n?.toLowerCase()===i||s?.toLowerCase()===i);if(!o){a("selectCategory",`Category ${e} not found.`,"EFP000C01");return}t.selectCategory(o)}applyParameters(e){typeof e!="string"&&a("applyParameters","A query string must be passed.","EFP000D00"),M(e)}getVisibility(){return t.uiState.visibility}setVisibility(e){(typeof e!="object"||!Object.keys(e).length)&&a("setVisibility","The parameter must be passed.","EFP000E00"),t.uiState.setVisibility(e)}findLocation(){t.routeStore.findLocation()}zoomIn(){t.uiState.zoomIn()}zoomOut(){t.uiState.zoomOut()}switchView(){t.mapboxStore.activateMapbox()}zoomTo(e,i){b("zoomTo called with selectors=%O options=%O",e,i);const o=F.safeParse(e);if(!o.success){a("zoomTo",o.error.message,"EFP001600");return}const n=A.safeParse(i);if(!n.success){a("zoomTo",n.error.message,"EFP001601");return}const s=this.getBounds(e);s&&this.fitBounds(s,i)}getBounds(e){b("getBounds called with selectors=%O",e);const i=F.safeParse(e);if(!i.success){a("getBounds",i.error.message,"EFP001400");return}const o=[];if(e.booths?.forEach(s=>{let r;s.externalId?r=t.boothStore.boothByExternalId.get(s.externalId):s.name&&(r=t.boothStore.boothByName.get(s.name.toLowerCase())),r?.rect&&o.push(r.rect)}),e.exhibitors?.forEach(s=>{let r;s.externalId?r=t.exhibitorStore.exhibitorByExternalId.get(s.externalId):s.name&&(r=t.exhibitorStore.exhibitorByName.get(s.name.toLowerCase())),r?.booths?.forEach(l=>{l.rect&&o.push(l.rect)})}),o.length===0)return;const n=m.fromMultiple(o);return{leftTop:{x:n.x1,y:n.y1},rightBottom:{x:n.x2,y:n.y2}}}fitBounds(e,i){if(b("fitBounds called with bounds=%O options=%O",e,i),!e){t.uiState.fitBounds();return}const o=K.safeParse(e);if(!o.success){a("fitBounds",o.error.message,"EFP001500");return}const n=A.safeParse(i);if(!n.success){a("fitBounds",n.error.message,"EFP001501");return}let s;if(i?.padding){const r=i.padding;s=m.fromX1y1x2y2(e.leftTop.x-r,e.leftTop.y-r,e.rightBottom.x+r,e.rightBottom.y+r)}else s=m.fromX1y1x2y2(e.leftTop.x,e.leftTop.y,e.rightBottom.x,e.rightBottom.y);t.uiState.moveToRect=s}getBoothRect(e){return typeof e!="string"&&a("getBoothRect","A booth name must be passed.","EFP000F00"),x(e)?.rect}convertToGeo(e,i){if(!v?.properties?.config){a("convertToGeo","The coordinates cannot be converted because the GPS configuration is not defined.","EFP001000");return}if(!e||!i){a("convertToGeo","Both coordinates must be passed.","EFP001001");return}return O(e,i,v.properties.config)}unstable_destroy(){let e=window.__efpElement.firstChild;Y(),window.removeEventListener("__efpStyleLoad",this.efpStyleLoadHandler),window.removeEventListener("error",N),j(),G(),_(),[...document.getElementsByTagName("script")].filter(o=>o.src.indexOf("/fp.svg")>-1||o.src.indexOf("/wf.data.js")>-1||o.src.indexOf("/data.js")>-1).forEach(o=>o.remove()),this.root.unmount(),e.remove()}search(e){return typeof e!="string"&&a("search","A search string must be passed.","EFP001100"),t.fuzzySearchEngineStore.loadEngine().then(()=>(t.searchStore.selectSearch(e),t.uiState.fuzzySearchItems.map(i=>({item:y(i.item),score:i.score}))))}getFloors(){return t.layerStore.floors.map(e=>({name:e.name,shortName:e.shortName,description:e.description,active:e.active,disabled:e.disabled,index:e.index}))}activateFloor(e){if(!e?.name&&e?.index==null){a("activateFloor","Invalid floorId. It must contain either a name or an index.","EFP001200");return}const i=this.getFloors();if(e.name){const o=i.find(n=>n.name===e.name||n.shortName===e.name);if(!o){a("activateFloor",`Floor with name "${e.name}" not found.`,"EFP001201");return}if(o.active)return;this.updateLayerVisibility(o.name,!0);return}if(e.index!==null){const o=i.find(s=>s.index===e.index),n=o?.name;if(!n){a("activateFloor",`Floor at index ${e.index} does not exist.`,"EFP001203");return}if(o.active)return;this.updateLayerVisibility(n,!0);return}}showPathway(e,i){const o=new URLSearchParams;if(o.set(U,e),i?.length){const{boothExternalIds:n,exhibitorExternalIds:s}=E(i);n.length>0&&o.set("booths",n.join(",")),s.length>0&&o.set("exhibitors",s.join(","))}this.applyParameters(o.toString())}showPathwayOnly(e,i){this.activateFloor({name:i}),t.layerStore.showPathWay(e),t.uiState.setPathwayOnlyMode(!0);const o=t.layerStore.findLayer(e),n=t.layerStore.findLayer(i),s=o?.rect||o?.viewbox?o:n;if(s?.rect||s?.viewbox){const r=s.viewbox??s.rect;t.uiState.moveToRect=m.fromX1y1x2y2(r.x1,r.y1,r.x2,r.y2)}}hidePathways(){this.highlightBooths([]),t.layerStore.hidePathways(),t.uiState.setPathwayOnlyMode(!1)}showSearch(){t.selectSearch("")}changeLanguage(e){const i=e?.toLowerCase?.();if(!Z(i)){a("changeLanguage",`Language "${e}" was not found. Available languages: ${J().map(n=>n.id).join(",")}`,"EFP001300");return}const o=new URLSearchParams;o.set(X,i),this.applyParameters(o.toString())}isGpsTrackingEnabled(){return t.routeStore.gpsEnabled}setGpsTrackingEnabled(e){t.routeStore.setGpsTrackingEnabled(e)}deselectCurrentPosition(){t.routeStore.selectCurrentPosition(null,!1)}deselectRoute(){t.routeStore.selectRoute(null)}reset(){this.selectBooth(""),this.selectExhibitor(""),this.selectCategory(),this.deselectCurrentPosition(),this.deselectRoute(),this.highlightEntities([]),t.uiState.kioskData&&t.resetCameraFn?t.resetCameraFn?.():this.fitBounds()}}function f(u){return typeof u=="string"?x(u):t.routeStore.getNearestBooth(u)}let k=0;function a(u,e,i){const o=`Error calling "${u}" SDK method.`,n=`${e.endsWith(".")?e:e+"."} More information at`;let s="https://developer.expofp.com/guide/java-script-api-reference";if(i&&(s+=`#error-${i}`),console.error(`${o} ${n} ${s}`),t.fp.disableRuntimeAlerts)return;t.uiState.setGlobalErrorMessage({title:o,body:C(L,{children:[n," ",g("a",{href:s,target:"_blank",children:s})]})}),clearTimeout(k);const r=8e3;k=window.setTimeout(()=>{const l=async()=>{t.uiState.globalErrorMessages.length>0&&(t.uiState.popGlobalErrorMessage(),await new Promise(h=>setTimeout(h,r/2)),l())};l()},r)}
|
|
1
|
+
import{jsx as g,Fragment as L,jsxs as C}from"react/jsx-runtime";import{reaction as T}from"mobx";import{createRoot as R}from"react-dom/client";import{install as I}from"resize-observer";import V from"./components/Layout";import $ from"./floorplan.loader";import{applyParameters as M,destroyHistory as j,initRouting as z}from"./services/routing";import t from"./store";import{Route as S,findBooth as x,separateExternalIds as E}from"./store/RouteStore";import{destroyUiHandlers as G}from"./store/init/init-ui";import{GaEventActions as P,destroyGtag as _,sendEventToGa as w,setConsentSettings as q}from"./tools/gtag";import N from"./tools/report-error";import{resetGlobalVariables as Y}from"./tools/reset";import H from"./tools/track-event";import{fpGeo as v}from"./components/Mapbox/utils/fpGeo";import{convertLocalToGps as O,isValidPointCoords as d}from"./utils/gps";import m from"./core/Rect";import{mapEntity as y}from"./utils/mapEntity";import{LANG_KEY as X,MAX_ROUTE_WAYPOINTS as p,PATHWAY_KEY as U}from"./constants";import{getStorage as B}from"./utils/entity-storage";import{ErrorBoundary as D}from"@sentry/react";import{POISelectorsSchema as F,BoundsSchema as K,ZoomToOptionsSchema as A}from"./schemas/sdk.schemas";import W from"debug";import{buildOptimizedRoute as Q}from"./utils/buildOptimizedRoute";import{hasLocale as Z,getLocales as J}from"./utils/i18n";const b=W("efp:api");I();export default class ee extends ${root;init(){this.ignoreQuery||z(this.offHistory),H("load"),t.fp=this,q(this.allowConsent),w(P.Load,""),this.root=R(this.renderTarget),this.root.render(g(D,{children:g(V,{offHistory:this.offHistory,allowConsent:this.allowConsent})})),w(P.Rendered,""),T(()=>t.layerStore.layersLoaded,()=>{this.resolveReady(),t.initialized||this.onInit?.(this),t.initialized=!0})}selectBooth(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectBooth","Parameter must be a string or an array of strings.","EFP000000");return}const i=t.boothStore.booths.filter(o=>typeof e=="string"?o.name===e||o.externalId===e:e.includes(o.name)||e.includes(o.externalId));t.selectBooth(i)}selectExhibitor(e){if(typeof e!="string"&&!Array.isArray(e)){a("selectExhibitor","Parameter must be a string or an array of strings.","EFP000100");return}if(!e?.length){t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null;return}const i=t.exhibitorStore.exhibitors.filter(s=>typeof e=="string"?s.name===e||s.externalId===e:e.includes(s.name)||e.includes(s.externalId));if(!i?.length)return;if(typeof e=="string"){t.selectExhibitor(i[0]),t.moveToList([i[0]]);return}const o=i.flatMap(s=>s.booths.map(r=>r.layer)),{description:n}=o.reduce((s,r)=>(s.freq[r.description]=(s.freq[r.description]||0)+1,s.freq[r.description]>s.maxCount&&(s.maxCount=s.freq[r.description],s.mostFrequent=r),s),{freq:{},mostFrequent:o[0],maxCount:0}).mostFrequent;t.layerStore.updateVisibility(n,!0),t.uiState.menu=!1,t.searchStore.resetSearchBox(),t.uiState.details=null,t.uiState.list={type:"filter",items:i,query:{key:"exhibitors",value:i.map(s=>s.externalId).join(",")}},t.moveToList()}highlightExhibitors(e){Array.isArray(e)||a("highlightExhibitors","Parameter must be an array of strings.","EFP000200"),t.boothStore.highlightedByExternalIds=[],t.exhibitorStore.highlightedByExternalIds=[...e]}highlightBooths(e){Array.isArray(e)||a("highlightBooths","Parameter must be an array of strings.","EFP000300"),t.exhibitorStore.highlightedByExternalIds=[],t.boothStore.highlightedByExternalIds=[...e]}highlightEntities(e){Array.isArray(e)||a("highlightEntities","Parameter must be an array of strings.","EFP000400");const{boothExternalIds:i,exhibitorExternalIds:o}=E(e);t.boothStore.highlightedByExternalIds=[...i],t.exhibitorStore.highlightedByExternalIds=[...o]}selectRoute(e,i){if(Array.isArray(e)){let o=[...e];const n=o.shift(),s=o.pop();if(o.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);if(!n||!s){a("selectRoute","Invalid route format: When providing an array, it must include at least two points: a start and a destination.","EFP000401");return}t.routeStore.selectRoute(new S(f(n),f(s),o.map(f)));return}e||a("selectRoute","At a minimum, the starting point must be passed.","EFP000402"),t.routeStore.selectRoute(new S(f(e),f(i)))}getOptimizedRoutes(e){if(!Array.isArray(e))return a("getOptimizedRoutes","Parameter must be an array.","EFP000500"),[];if(e.length>p)throw new Error(`The maximum number of waypoints is ${p}.`);const i=e.map(f).filter(n=>!!n);if(!i.length)throw new Error("No booths found for the provided waypoints.");const o=new Map;for(const n of i){const s=n.layer?.name??"",r=o.get(s);r?r.push(n):o.set(s,[n])}return Array.from(o.values()).map(n=>({waypoints:Q(n.map(s=>[s.name,{cx:s.rect.cx,cy:s.rect.cy}]))}))}selectCurrentPosition(e,i,o){const n=d(e.x)&&d(e.y),s=d(e.lng)&&d(e.lat);!n&&!s&&a("selectCurrentPosition","A point must be passed. Either (x,y) or (lat,lng) are required.","EFP000600"),t.routeStore.selectCurrentPosition(e,i,o),this.onCurrentPositionChanged?.(e)}setBookmarks(e){(!Array.isArray(e)||!e.length)&&a("setBookmarks","Parameter must be an array.","EFP000700"),e.forEach(i=>{const o=t.exhibitorStore.exhibitors.find(n=>n.name===i.name||n.externalId===i.externalId);o&&(o.bookmarked=i.bookmarked)})}setEntitiesBookmarks(e){if(!Array.isArray(e)||!e.length){a("setEntitiesBookmarks","Parameter must be an array.","EFP000701");return}const i=["exhibitor","event","speaker","booth"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesBookmarks",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000702");return}const n=B("bookmarked"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceBookmarked(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceBookmarked(r)},speaker:{existingIds:new Set(n.speakers||[]),finder:r=>t.speakerStore.speakers.find(l=>l.name===r||l.externalId===r||l.slug===r),replacer:r=>t.speakerStore.replaceBookmarked(r)},booth:{existingIds:new Set(n.booths||[]),finder:r=>{const l=t.boothStore.findBooth(r);return l?.exhibitors.length===0?l:void 0},replacer:r=>t.boothStore.replaceBookmarked(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.bookmarked?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setEntitiesVisited(e){if(!Array.isArray(e)||!e.length){a("setEntitiesVisited","Parameter must be an array.","EFP000703");return}const i=["exhibitor","event"],o=e.find(r=>!r.type||!i.includes(r.type));if(o){a("setEntitiesVisited",`Invalid entity type: ${o.type}. Must be one of: ${i.join(", ")}.`,"EFP000704");return}const n=B("visited"),s={exhibitor:{existingIds:new Set(n.exhibitors||[]),finder:r=>t.exhibitorStore.findExhibitor(r),replacer:r=>t.exhibitorStore.replaceVisited(r)},event:{existingIds:new Set(n.events||[]),finder:r=>t.eventStore.findByNameOrSlug(r),replacer:r=>t.eventStore.replaceVisited(r)}};e.forEach(r=>{const l=s[r.type],h=r.name||r.externalId||"",c=l.finder(h);c?r.visited?l.existingIds.add(c.id):l.existingIds.delete(c.id):console.warn(`Entity not found: ${r.type} with query "${h}"`)}),Object.values(s).forEach(r=>{r.replacer(Array.from(r.existingIds))})}setMarkers(e){if(!e||!Array.isArray(e.icons)||!Array.isArray(e.markers)){a("setMarkers","Invalid input.","EFP000800");return}t.routeStore.setMarkers(e)}selectMarker(e,i=!0){return typeof e!="string"&&a("selectMarker","The identifier must be passed.","EFP000900"),t.routeStore.selectMarker(e,i)}drawCircles(e){Array.isArray(e)||a("drawCircles","Invalid input.","EFP000A00"),t.uiState.debugCircles=e}checkRoutes(){t.routeStore.checkRoutes()}updateLayerVisibility(e,i){typeof e!="string"&&a("updateLayerVisibility","The layer name (string) must be passed.","EFP000B00"),i||a("updateLayerVisibility","Passing a false value to visible will have no effect.","EFP000B01"),t.layerStore.updateVisibility(e,i)}getCenterCoordinates(){return t.fp.getCenterCoordinates()}exhibitorsList(){return t.exhibitorStore.exhibitors.map(e=>y(e))}boothsList(){return t.boothStore.booths.map(e=>y(e))}categoriesList(){return t.categoryStore.categories.map(e=>y(e))}selectCategory(e){if(e==null||typeof e!="string"){t.searchStore.selectSearch();return}const i=e?.toLowerCase(),o=t.categoryStore.categories.find(({name:n,slug:s})=>n?.toLowerCase()===i||s?.toLowerCase()===i);if(!o){a("selectCategory",`Category ${e} not found.`,"EFP000C01");return}t.selectCategory(o)}applyParameters(e){typeof e!="string"&&a("applyParameters","A query string must be passed.","EFP000D00"),M(e)}getVisibility(){return t.uiState.visibility}setVisibility(e){(typeof e!="object"||!Object.keys(e).length)&&a("setVisibility","The parameter must be passed.","EFP000E00"),t.uiState.setVisibility(e)}findLocation(){t.routeStore.findLocation()}zoomIn(){t.uiState.zoomIn()}zoomOut(){t.uiState.zoomOut()}switchView(){t.mapboxStore.activateMapbox()}zoomTo(e,i){b("zoomTo called with selectors=%O options=%O",e,i);const o=F.safeParse(e);if(!o.success){a("zoomTo",o.error.message,"EFP001600");return}const n=A.safeParse(i);if(!n.success){a("zoomTo",n.error.message,"EFP001601");return}const s=this.getBounds(e);s&&this.fitBounds(s,i)}getBounds(e){b("getBounds called with selectors=%O",e);const i=F.safeParse(e);if(!i.success){a("getBounds",i.error.message,"EFP001400");return}const o=[];if(e.booths?.forEach(s=>{let r;s.externalId?r=t.boothStore.boothByExternalId.get(s.externalId):s.name&&(r=t.boothStore.boothByName.get(s.name.toLowerCase())),r?.rect&&o.push(r.rect)}),e.exhibitors?.forEach(s=>{let r;s.externalId?r=t.exhibitorStore.exhibitorByExternalId.get(s.externalId):s.name&&(r=t.exhibitorStore.exhibitorByName.get(s.name.toLowerCase())),r?.booths?.forEach(l=>{l.rect&&o.push(l.rect)})}),o.length===0)return;const n=m.fromMultiple(o);return{leftTop:{x:n.x1,y:n.y1},rightBottom:{x:n.x2,y:n.y2}}}fitBounds(e,i){if(b("fitBounds called with bounds=%O options=%O",e,i),!e){t.uiState.fitBounds();return}const o=K.safeParse(e);if(!o.success){a("fitBounds",o.error.message,"EFP001500");return}const n=A.safeParse(i);if(!n.success){a("fitBounds",n.error.message,"EFP001501");return}let s;if(i?.padding){const r=i.padding;s=m.fromX1y1x2y2(e.leftTop.x-r,e.leftTop.y-r,e.rightBottom.x+r,e.rightBottom.y+r)}else s=m.fromX1y1x2y2(e.leftTop.x,e.leftTop.y,e.rightBottom.x,e.rightBottom.y);t.uiState.moveToRect=s}getBoothRect(e){return typeof e!="string"&&a("getBoothRect","A booth name must be passed.","EFP000F00"),x(e)?.rect}convertToGeo(e,i){if(!v?.properties?.config){a("convertToGeo","The coordinates cannot be converted because the GPS configuration is not defined.","EFP001000");return}if(!e||!i){a("convertToGeo","Both coordinates must be passed.","EFP001001");return}return O(e,i,v.properties.config)}unstable_destroy(){let e=window.__efpElement.firstChild;Y(),window.removeEventListener("__efpStyleLoad",this.efpStyleLoadHandler),window.removeEventListener("error",N),j(),G(),_(),[...document.getElementsByTagName("script")].filter(o=>o.src.indexOf("/fp.svg")>-1||o.src.indexOf("/wf.data.js")>-1||o.src.indexOf("/data.js")>-1).forEach(o=>o.remove()),this.root.unmount(),e.remove()}search(e){return typeof e!="string"&&a("search","A search string must be passed.","EFP001100"),t.fuzzySearchEngineStore.loadEngine().then(()=>(t.searchStore.selectSearch(e),t.uiState.fuzzySearchItems.map(i=>({item:y(i.item),score:i.score}))))}getFloors(){return t.layerStore.floors.map(e=>({name:e.name,shortName:e.shortName,description:e.description,active:e.active,disabled:e.disabled,index:e.index}))}activateFloor(e){if(!e?.name&&e?.index==null){a("activateFloor","Invalid floorId. It must contain either a name or an index.","EFP001200");return}const i=this.getFloors();if(e.name){const o=i.find(n=>n.name===e.name||n.shortName===e.name);if(!o){a("activateFloor",`Floor with name "${e.name}" not found.`,"EFP001201");return}if(o.active)return;this.updateLayerVisibility(o.name,!0);return}if(e.index!==null){const o=i.find(s=>s.index===e.index),n=o?.name;if(!n){a("activateFloor",`Floor at index ${e.index} does not exist.`,"EFP001203");return}if(o.active)return;this.updateLayerVisibility(n,!0);return}}showPathway(e,i){const o=new URLSearchParams;if(o.set(U,e),i?.length){const{boothExternalIds:n,exhibitorExternalIds:s}=E(i);n.length>0&&o.set("booths",n.join(",")),s.length>0&&o.set("exhibitors",s.join(","))}this.applyParameters(o.toString())}showPathwayOnly(e,i){this.activateFloor({name:i}),t.layerStore.showPathWay(e),t.uiState.setPathwayOnlyMode(!0);const o=t.layerStore.findLayer(e),n=t.layerStore.findLayer(i),s=o?.rect||o?.viewbox?o:n;if(s?.rect||s?.viewbox){const r=s.viewbox??s.rect;t.uiState.moveToRect=m.fromX1y1x2y2(r.x1,r.y1,r.x2,r.y2)}}hidePathways(){this.highlightBooths([]),t.layerStore.hidePathways(),t.uiState.setPathwayOnlyMode(!1)}showSearch(){t.selectSearch("")}changeLanguage(e){const i=e?.toLowerCase?.();if(!Z(i)){a("changeLanguage",`Language "${e}" was not found. Available languages: ${J().map(n=>n.id).join(",")}`,"EFP001300");return}const o=new URLSearchParams;o.set(X,i),this.applyParameters(o.toString())}isGpsTrackingEnabled(){return t.routeStore.gpsEnabled}setGpsTrackingEnabled(e){t.routeStore.setGpsTrackingEnabled(e)}deselectCurrentPosition(){t.routeStore.selectCurrentPosition(null,!1)}deselectRoute(){t.routeStore.selectRoute(null)}reset(){this.selectBooth(""),this.selectExhibitor(""),this.selectCategory(),this.deselectCurrentPosition(),this.deselectRoute(),this.highlightEntities([]),t.uiState.kioskData&&t.resetCameraFn?t.resetCameraFn?.():this.fitBounds()}}function f(u){return typeof u=="string"?x(u):t.routeStore.getNearestBooth(u)}let k=0;function a(u,e,i){const o=`Error calling "${u}" SDK method.`,n=`${e.endsWith(".")?e:e+"."} More information at`;let s="https://developer.expofp.com/guide/java-script-api-reference";if(i&&(s+=`#error-${i}`),console.error(`${o} ${n} ${s}`),t.fp.disableRuntimeAlerts)return;t.uiState.setGlobalErrorMessage({title:o,body:C(L,{children:[n," ",g("a",{href:s,target:"_blank",rel:"noreferrer",children:s})]})}),clearTimeout(k);const r=8e3;k=window.setTimeout(()=>{const l=async()=>{t.uiState.globalErrorMessages.length>0&&(t.uiState.popGlobalErrorMessage(),await new Promise(h=>setTimeout(h,r/2)),l())};l()},r)}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const c="k5f7wyx2";let a=!1;function s(){if(document.getElementById("efp-intercom-position"))return;const e=document.createElement("style");e.id="efp-intercom-position",e.textContent=`
|
|
2
|
+
.intercom-namespace,
|
|
3
|
+
.intercom-lightweight-app,
|
|
4
|
+
.intercom-app,
|
|
5
|
+
[class*="intercom-with-namespace-"]:not(.intercom-messenger-frame) {
|
|
6
|
+
z-index: 20 !important;
|
|
7
|
+
}
|
|
8
|
+
.intercom-lightweight-app-launcher,
|
|
9
|
+
.intercom-app > [class*="intercom-with-namespace-"]:not(.intercom-messenger-frame) {
|
|
10
|
+
right: 10px !important;
|
|
11
|
+
bottom: 50px !important;
|
|
12
|
+
}
|
|
13
|
+
@media (max-width: 767px) {
|
|
14
|
+
.intercom-lightweight-app-launcher,
|
|
15
|
+
.intercom-app > [class*="intercom-with-namespace-"]:not(.intercom-messenger-frame) {
|
|
16
|
+
bottom: 80px !important;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`,document.head.appendChild(e)}export function bootIntercom(e){if(a)return;a=!0;const{subDomain:m,subscriptionStatus:r}=e,i=window;i.intercomSettings={api_base:"https://api-iam.intercom.io",app_id:c,alignment:"right",expofp_subdomain:m,expofp_subscription_status:r},s();const n=function(){n.c(arguments)};n.q=[],n.c=function(t){n.q.push(t)},i.Intercom=n;const o=()=>{const t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src=`https://widget.intercom.io/widget/${c}`,document.head.appendChild(t)};document.readyState==="complete"?o():window.addEventListener("load",o,!1)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{shouldLoadIntercom}from"./shouldLoad";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function r(){const t=window.location.hostname.split(".");return t.length>=3&&t[t.length-2]==="expofp"&&t[t.length-1]==="com"}function o(){return r()?window.location.hostname.split(".")[0]:"main"}function u(t){if(t?.free===!0)return"Free";const n=t?.trialExpiresAt;if(n){const i=new Date(n).getTime();if(!Number.isNaN(i))return Date.now()<i?"Trial Active":"Trial Expired"}return"Active"}function a(){if(process.env.NODE_ENV==="production")return!1;const t=new URLSearchParams(window.location.search);return!t.has("__intercom_subdomain")&&!t.has("__intercom_status")}function c(t){if(process.env.NODE_ENV==="production")return t;const n=new URLSearchParams(window.location.search),i=n.get("__intercom_subdomain"),e=n.get("__intercom_status"),s=e&&["Active","Trial Active","Trial Expired","Free"].includes(e)?e:t.subscriptionStatus;return{subDomain:i??t.subDomain,subscriptionStatus:s}}export function shouldLoadIntercom(t){if(a()||process.env.NODE_ENV==="production"&&!r()||!window.navigator.onLine)return null;const n=c({subDomain:o(),subscriptionStatus:u(t)});return n.subDomain!=="demo"&&n.subscriptionStatus!=="Free"&&n.subscriptionStatus!=="Trial Expired"?null:n}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Renderer as a}from"@expofp/renderer";import{HandlerRegistry as n}from"./HandlerRegistry";import{loadCustomFontsUrls as l}from"./index";import s from"../tools/logger";export class RendererService{_renderer=null;_scene=null;_fontUrls=[];ptScaleRegistry=new n;rollRegistry=new n;layerImagesRegistry=new n;get renderer(){return this._renderer?.isInitialized?this._renderer:null}get scene(){return this._scene}get fontUrls(){return this._fontUrls}getCameraState(){if(!this._renderer?.isInitialized){s.warn("Renderer is not initialized. Cannot get camera state.");return}return this._renderer.controls.getCameraState()}get scale(){return this.getCameraState()?.ptScale??1}get angle(){return this.getCameraState()?.roll??0}create(e){return this._renderer=new a(e),this._fontUrls=l(),this.setupEventListeners(),this._renderer}start(e){if(this._scene=e,!this._renderer)throw new Error("RendererService: renderer is not created.");this._renderer.init(e),this._renderer.start()}dispose(){this.ptScaleRegistry.clear(),this.rollRegistry.clear(),this.layerImagesRegistry.clear(),this._renderer?.dispose(),this._renderer=null,this._scene=null,this._fontUrls=[]}onPtScale(e,r){return this.ptScaleRegistry.register(e,r)}onRoll(e,r){return this.rollRegistry.register(e,r)}onLayerImages(e,r){return this.layerImagesRegistry.register(e,r)}update(...e){if(!this._renderer?.isInitialized){s.warn("Renderer is not initialized. Cannot update.");return}this._renderer.update(...e)}setupEventListeners(){const e=this._renderer;e.events.addEventListener("viewport:ptscale",r=>{if(!Number.isFinite(r))return;const
|
|
1
|
+
import{Renderer as a}from"@expofp/renderer";import{HandlerRegistry as n}from"./HandlerRegistry";import{loadCustomFontsUrls as l}from"./index";import s from"../tools/logger";import{isDefaultScene as o}from"./engine-core/defs";export class RendererService{_renderer=null;_scene=null;_fontUrls=[];ptScaleRegistry=new n;rollRegistry=new n;layerImagesRegistry=new n;get renderer(){return this._renderer?.isInitialized?this._renderer:null}get scene(){return this._scene}get fontUrls(){return this._fontUrls}getCameraState(){if(!this._renderer?.isInitialized){s.warn("Renderer is not initialized. Cannot get camera state.");return}return this._renderer.controls.getCameraState()}get scale(){return this.getCameraState()?.ptScale??1}get angle(){return this.getCameraState()?.roll??0}create(e){return this._renderer=new a(e),this._fontUrls=l(),this.setupEventListeners(),this._renderer}start(e){if(this._scene=e,!this._renderer)throw new Error("RendererService: renderer is not created.");this._renderer.init(e),this._renderer.start()}dispose(){this.ptScaleRegistry.clear(),this.rollRegistry.clear(),this.layerImagesRegistry.clear(),this._renderer?.dispose(),this._renderer=null,this._scene=null,this._fontUrls=[]}onPtScale(e,r){return this.ptScaleRegistry.register(e,r)}onRoll(e,r){return this.rollRegistry.register(e,r)}onLayerImages(e,r){return this.layerImagesRegistry.register(e,r)}update(...e){if(!this._renderer?.isInitialized){s.warn("Renderer is not initialized. Cannot update.");return}this._renderer.update(...e)}setupEventListeners(){const e=this._renderer;e.events.addEventListener("viewport:ptscale",({ptScale:r,sceneId:t})=>{if(!o(t)||!Number.isFinite(r))return;const i=[...this.ptScaleRegistry.invoke(r)];i.length&&e.update(...i)}),e.events.addEventListener("navigation:roll",r=>{if(!Number.isFinite(r))return;const t=[];for(const i of this.rollRegistry.invoke(r))Array.isArray(i)?t.push(...i):t.push(i);t.length&&e.update(...t)})}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImageDef, ImageSource, LayerDef, LineDef, Polygon, Rect, ShapeDef, TextAlignment, TextDef, TextLineDef, RenderableDefCollection, SceneDef } from "@expofp/renderer";
|
|
1
|
+
import { ImageDef, ImageSource, LayerDef, LineDef, Polygon, Rect, ShapeDef, TextAlignment, TextDef, TextLineDef, RenderableDefCollection, SceneDef, PointWithinSceneData, Vector2Like } from "@expofp/renderer";
|
|
2
2
|
import { MeshType, Line, TextLines, DefOptions } from "./types";
|
|
3
3
|
export declare function rectToShapeDef(rect: Rect | SVGRectElement, color?: string): ShapeDef;
|
|
4
4
|
export declare function meshToShapeDef(mesh: MeshType, color: string): ShapeDef;
|
|
@@ -12,4 +12,10 @@ export declare function createLineDef({ p0, p1 }: Line, color?: string, width?:
|
|
|
12
12
|
export declare function createLayerDef(name: string, children: RenderableDefCollection, options?: DefOptions): LayerDef;
|
|
13
13
|
export declare function createSceneDef(layers: LayerDef[], viewboxRect: SVGRectElement | Rect, background?: string, memoryLimit?: number): SceneDef;
|
|
14
14
|
export declare function createShapeDot(rect: Rect, color?: string, radius?: number): ImageDef;
|
|
15
|
+
export declare function isDefaultScene(sceneId: string | undefined): boolean;
|
|
16
|
+
export declare function pickDefaultScene(data: PointWithinSceneData[]): PointWithinSceneData;
|
|
17
|
+
export declare function pickDefaultScenePoint(points: {
|
|
18
|
+
sceneId?: string;
|
|
19
|
+
point: Vector2Like;
|
|
20
|
+
}[]): Vector2Like;
|
|
15
21
|
//# sourceMappingURL=defs.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{Polygon as
|
|
2
|
-
`),fontUrl:r[0]||
|
|
3
|
-
`),fontUrl:r[1]||
|
|
1
|
+
import{Polygon as a,Rect as f}from"@expofp/renderer";import{createCircleCanvas as u}from"./canvases";import{DEFAULT_FONT_LIGHT_URL as s,DEFAULT_FONT_URL as d}from"./fonts";export function rectToShapeDef(e,n){let t;return e instanceof SVGRectElement&&(t=f.fromSvg(e)),createShapeDef(t,n)}export function meshToShapeDef(e,n){if(!e)throw new Error("Create ShapeDef: mesh is not provided");const t=e.positions.map(i=>({x:i[0],y:Math.abs(i[1])})),r=e.cells,o=new a(t,r);return createShapeDef(o,n)}export function createShapeDef(e,n="#000"){if(!e||!(e instanceof a||e instanceof f))throw new Error("Invalid shape definition");return{shape:e,color:n}}export function createImageDef(e,n,t){if(!e)throw new Error("Image source is not provided");return{source:e,bounds:n,...t}}export function createTextDef(e,n,t,r,o){if(e.length===0)throw new Error("Invalid text lines");return{lines:e,bounds:n,padding:t,alignment:r,...o}}export function createTextDefLines(e,n,t,r=[void 0,void 0]){const[o,i]=e,c=[{text:o.join(`
|
|
2
|
+
`),fontUrl:r[0]||d,color:n,fontSize:t}];return i.length&&c.push({text:i.join(`
|
|
3
|
+
`),fontUrl:r[1]||s,color:n,fontSize:t}),c}export function createLineDef({p0:e,p1:n},t="#000",r=10){if(!(e?.x&&e.y||n?.x&&n.y))throw new Error("Line data is invalid");return{points:[{x:e.x,y:e.y},{x:n.x,y:n.y}],color:t,width:r}}export function createLayerDef(e,n,t){if(!e)throw new Error("Layer name is required");return n||(n=[]),{name:e,children:n,...t}}export function createSceneDef(e,n,t,r){let o;return n instanceof SVGRectElement?o=f.fromSvg(n):n instanceof f&&(o=n),{rootLayer:createLayerDef("root",e),background:t,viewbox:o,memoryLimit:r}}export function createShapeDot(e,n="#000",t=1.5){const r=u(t,n),o=new f({x:e.center.x-r.width/2,y:e.center.y-r.height/2},{x:e.center.x+r.width/2,y:e.center.y+r.height/2},e.rotation);return createImageDef(r,o)}export function isDefaultScene(e){return e===void 0}export function pickDefaultScene(e){const n=e.find(t=>isDefaultScene(t.sceneId));if(!n)throw new Error("Default scene not found");return n}export function pickDefaultScenePoint(e){const n=e.find(t=>isDefaultScene(t.sceneId));if(!n)throw new Error("Default scene point not found");return n.point}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default
|
|
1
|
+
export { default } from "./search-buttons/SearchButtonsStore";
|
|
2
2
|
//# sourceMappingURL=SearchButtonsStore.d.ts.map
|
|
@@ -24,7 +24,7 @@ export default class SearchStore {
|
|
|
24
24
|
get searchBoxActions(): InterfaceAction[];
|
|
25
25
|
get shouldShowSearchInput(): boolean;
|
|
26
26
|
get shouldShowCloseButton(): boolean;
|
|
27
|
-
get closeButtonAction(): "
|
|
27
|
+
get closeButtonAction(): "clear" | "close";
|
|
28
28
|
get shouldShowShadow(): boolean;
|
|
29
29
|
get placeholder(): string;
|
|
30
30
|
get searchBoxClass(): {
|