@expofp/floorplan 3.45.11 → 3.45.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/{Button-wvbcVeFB.js → Button-RHSLdZ8P.js} +5 -5
- package/dist/browser/{CookieConsent-Culs9sI1.js → CookieConsent-tlDN9k4r.js} +7 -7
- package/dist/browser/{Debug-BM8bkKs4.js → Debug-8l7GSED6.js} +7 -7
- package/dist/browser/{DebugTools-fmsxTLzp.js → DebugTools-ipof0w8h.js} +6 -6
- package/dist/browser/{Demo-C3o1FEbw.js → Demo-CwZivFF-.js} +9 -9
- package/dist/browser/{Free-D1AZmJe7.js → Free-D4gNZ4RA.js} +10 -10
- package/dist/browser/{GalleryContainer-Bbj-p43R.js → GalleryContainer-B8L8n_4E.js} +11 -11
- package/dist/browser/{GpsLoader-BNqyoowH.js → GpsLoader-u9Gln6H7.js} +13 -13
- package/dist/browser/{KioskStore-BiM1CrZM.js → KioskStore-BWf8YM7M.js} +10 -10
- package/dist/browser/{LayerStore-CYhUcBJN.js → LayerStore-CrWyrBRa.js} +825 -819
- package/dist/browser/{MaplibreAdapter-Cr1b2MUz.js → MaplibreAdapter-Cd-gdHxM.js} +144 -144
- package/dist/browser/{ModalContainer-bhF8uauy.js → ModalContainer-DVKprzvo.js} +10 -10
- package/dist/browser/{PermissionNotice-Cp33Dup_.js → PermissionNotice-BMQHGUs9.js} +6 -6
- package/dist/browser/{RouteStore-BnA20xcN.js → RouteStore-BiUI1Uef.js} +127 -127
- package/dist/browser/{SetKioskMode-DlEk89q8.js → SetKioskMode-Bt9Ap5HU.js} +14 -14
- package/dist/browser/{ShowKiosk-C_2hw-6E.js → ShowKiosk-rsxj5Ort.js} +10 -10
- package/dist/browser/{UIState-B9mFI9_m.js → UIState-DgWaz-eQ.js} +89 -89
- package/dist/browser/{ViewerMenuPanel-DlXU3ixM.js → ViewerMenuPanel-6oBbHGtm.js} +11 -11
- package/dist/browser/{add-debug-secret-listener-xal_XewS.js → add-debug-secret-listener-CrdHdOJy.js} +1 -1
- package/dist/browser/{adopt-global-settings-BDiKKjee.js → adopt-global-settings-zscIy9Gm.js} +9 -9
- package/dist/browser/{boolean-editor-Sma15U6s.js → boolean-editor-CKqy8Ity.js} +9 -9
- package/dist/browser/{bootIntercom-CvT_A8p8.js → bootIntercom-B98qYnKB.js} +2 -2
- package/dist/browser/bundle.json +85 -85
- package/dist/browser/{camera-events-DtEEOjHJ.js → camera-events-CT_HBink.js} +1 -1
- package/dist/browser/{classnames-DOWh55m7.js → classnames-jjUCCpoy.js} +2 -2
- package/dist/browser/{client-Bq8KC_Gd.js → client-CWN8yeUz.js} +5 -5
- package/dist/browser/{components-DAgPmGLN.js → components-BYuTjlcn.js} +239 -245
- package/dist/browser/{create-live-plan-CyeXLvG9.js → create-live-plan-DplxEMws.js} +73 -73
- package/dist/browser/{debug-context-DgfLIP_z.js → debug-context-DswaH7mN.js} +5 -5
- package/dist/browser/{debug-overlay-DjhkoXTh.js → debug-overlay-khJHt49U.js} +10 -10
- package/dist/browser/{debug-ui-C5Ov9nWP.js → debug-ui-BEApU0Hr.js} +6 -6
- package/dist/browser/{dist-D7R1HRT6.js → dist-BsTWH7q7.js} +5 -5
- package/dist/browser/{dist-D8q30ciB.js → dist-CgdNmEoc.js} +3 -3
- package/dist/browser/{dist-BPgTae9z.js → dist-q2Ip5e-y.js} +6 -6
- package/dist/browser/{efp-debug-init-CI7-9-EF.js → efp-debug-init-DBQbSv4u.js} +3 -3
- package/dist/browser/{enum-editor-DgdrIT6p.js → enum-editor-CxeGNBqb.js} +4 -4
- package/dist/browser/{es5-CKWQYgqj.js → es5-C4CifKWw.js} +2 -2
- package/dist/browser/{event-head-CGnPGf8r.js → event-head-D1EKVWKM.js} +1 -1
- package/dist/browser/{event-not-found-BczHwPfj.js → event-not-found-DcLfsbev.js} +3 -3
- package/dist/browser/{event-scoped-cache-D2VS2gfE.js → event-scoped-cache-BbzF7HuS.js} +2 -2
- package/dist/browser/{expofpUrl-BjxV_NsI.js → expofpUrl-BkFfQVWT.js} +1 -1
- package/dist/browser/{exports-Ck0hSnNP.js → exports-CJmfzEbr.js} +1 -1
- package/dist/browser/{favicon-DXRCQyX8.js → favicon-C17ZDAmX.js} +1 -1
- package/dist/browser/{fetch-retry.umd-BpErXOBo.js → fetch-retry.umd-KfV_kX2J.js} +2 -2
- package/dist/browser/{flex-BQOoxB4K.js → flex-BlLYvxBy.js} +5 -5
- package/dist/browser/{floorplan.loader-BevvQXsH.js → floorplan.loader-BZfuR9KC.js} +12 -12
- package/dist/browser/{floorplan.ready-CfjIq-tD.js → floorplan.ready-CuozrQJq.js} +30 -30
- package/dist/browser/{framing-rect-DMoOdaT6.js → framing-rect-_cN7Jp0z.js} +355 -363
- package/dist/browser/{freeBanner-BLUQe1wS.js → freeBanner-DC2vjpf5.js} +2 -2
- package/dist/browser/{fuse-ZrYQLa2i.js → fuse-BYQPvbIk.js} +2 -2
- package/dist/browser/{i18n-BLaFErhY.js → i18n-BDc7lWFh.js} +6 -6
- package/dist/browser/index.js +17 -17
- package/dist/browser/{index.module-Cgw9eIFs.js → index.module-DUgyUoBP.js} +4 -4
- package/dist/browser/{init-ui-C168qd--.js → init-ui-xCaP1iGt.js} +13 -13
- package/dist/browser/{integrateKiosk-CItUrjqr.js → integrateKiosk-pm7XEmxW.js} +5 -5
- package/dist/browser/{is-debug-5Wx1pzmC.js → is-debug-Bk6Ww-mR.js} +4 -4
- package/dist/browser/{is-own-domain-CQwNRlOP.js → is-own-domain-DtyPiuBK.js} +1 -1
- package/dist/browser/{is-webview-M2z00we8.js → is-webview-DpsVH2Y1.js} +1 -1
- package/dist/browser/{jsx-runtime-BUD3cKrd.js → jsx-runtime-ClNfOC6f.js} +2 -2
- package/dist/browser/{kiosk-mode-oR6Qku6R.js → kiosk-mode-CHV9ESCa.js} +3 -3
- package/dist/browser/{kiosk-record-B4TPlUVM.js → kiosk-record-WGoZsWrI.js} +1 -1
- package/dist/browser/{kioskApi-Bjbnt2QJ.js → kioskApi-CbDD11ug.js} +7 -7
- package/dist/browser/{lib-DCkZiNTx.js → lib-CyCGPKo7.js} +3 -3
- package/dist/browser/{loadImage-CsHBlWDX.js → loadImage-w_zuSX7Q.js} +1 -1
- package/dist/browser/{logDeviceInfo-CBp39wle.js → logDeviceInfo-DladzOhP.js} +9 -9
- package/dist/browser/{mobx-BKuZa-uE.js → mobx-DRjOCpOl.js} +4 -4
- package/dist/browser/{mobx.module-DLfbGzOu.js → mobx.module-Cv_4Fqn4.js} +1 -1
- package/dist/browser/{optional-boolean-editor-C_nG8KPk.js → optional-boolean-editor-CX8YBA0h.js} +3 -3
- package/dist/browser/{optional-enum-editor-Cz65owXN.js → optional-enum-editor-BxGv8bpn.js} +4 -4
- package/dist/browser/{optional-string-editor-CiixI5VU.js → optional-string-editor-DqMnNBXu.js} +4 -4
- package/dist/browser/{particles.min-Dg9rhGQw.js → particles.min-ejj5e5kU.js} +2 -2
- package/dist/browser/{react-9fRUfYcQ.js → react-Dw5YXa-Y.js} +2 -2
- package/dist/browser/{react-dom-BnQ0aR5T.js → react-dom-Dd8g1448.js} +3 -3
- package/dist/browser/{rolldown-runtime-DW9kw2-Z.js → rolldown-runtime-BDjyEY82.js} +1 -1
- package/dist/browser/{scene-CfgUV6qo.js → scene-BuSOJ1kI.js} +9 -9
- package/dist/browser/{scheduler-2CNHK3J9.js → scheduler-2PunDhbX.js} +2 -2
- package/dist/browser/{select-DhztBWaW.js → select-BZ4woGJi.js} +10 -10
- package/dist/browser/{settings-CQJfzF0P.js → settings-BQ58wk59.js} +2 -2
- package/dist/browser/{settings-item-C8z-VDRo.js → settings-item-DkAN7SK-.js} +6 -6
- package/dist/browser/{store-CToL6ro6.js → store-Djiw0f15.js} +2 -2
- package/dist/browser/{string-editor-CfDpSKQj.js → string-editor-BxjGvgq8.js} +4 -4
- package/dist/browser/{text-field-Cc4OOu_O.js → text-field-1Qf6vcza.js} +5 -5
- package/dist/browser/{theme-DyT10pAe.js → theme-BY0D9YiW.js} +8 -8
- package/dist/browser/{ui-oWcLvPG5.js → ui-DFokN_S5.js} +8 -8
- package/dist/browser/{useRenderTarget-QHju4vdT.js → useRenderTarget-Bh-xmMgH.js} +4 -4
- package/dist/browser/{viewport-DtGAyX5m.js → viewport-BUn4KlO1.js} +3 -3
- package/dist/browser/{wayfinding-xq3uzwvp.js → wayfinding-BHyh7Wne.js} +228 -228
- package/dist/esm/components/Exhibitor.js +1 -1
- package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
- package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
- package/dist/esm/engine/utils/rotation.d.ts +8 -0
- package/dist/esm/engine/utils/rotation.js +1 -1
- package/dist/esm/store/RouteStore.d.ts +1 -1
- package/package.json +11 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as N,jsx as i,jsxs as n}from"react/jsx-runtime";import"./Exhibitor.scss";import{Button as R}from"@expofp/ui";import g from"classnames";import{observer as Q,useLocalStore as Z,useObserver as T}from"mobx-react-lite";import ee,{Suspense as D,useEffect as ie,useRef as C,useState as I}from"react";import{Transition as te}from"react-transition-group";import p from"../data";import a,{uiState as r}from"../store";import{RegularBooth as oe}from"../store/BoothStore";import{GaEventActions as d,sendEventToGa as O}from"../tools/gtag";import re from"../tools/logger";import y from"../tools/settings";import ne from"../tools/track-event";import{t as h}from"../utils/i18n";import ae from"../utils/is-mobile";import{useReaction as se}from"../utils/mobx";import le from"../utils/useHeatmapOverlay";import ce from"./AlertContainer";import de from"./DownloadListContainer";import U from"./ErrorBoundary";import he from"./RebookingNotesContainer";import me from"./RebookingRadioGroupContainer";import ue from"./Schedule";import be from"./ShowMoreButtonContainer";import ke from"./SidebarActionsContainer";import{getDescription as ge}from"./utils/getDescription";const G=ee.lazy(()=>import("./GalleryContainer")),pe=Q(function(){const S=C(null),o=Z(()=>({collapsed:!0,updateOverlayContent:null,get exhibitor(){return r.selectedExhibitor},get websiteTrimmed(){return this.exhibitor.website?this.exhibitor.website.replace(/^(http(s?):\/\/)([^/]+)(\/)?$/i,"$3"):""},get anySocial(){return r.kiosk?!1:!!["facebook","instagram","linkedin","twitter","googlePlus","xing","youtube"].find(e=>this.exhibitor[e])},get anyAddress(){return!!["address","address2","phone1","website","email"].find(e=>this.exhibitor[e])},get anyMedia(){return!!this.exhibitor.videoUrl||!!(this.exhibitor.gallery&&this.exhibitor.gallery.length)},get anyButtons(){return!!(this.exhibitor.customButtonTitle||this.exhibitor.customButton2Title||this.exhibitor.customButton3Title)},get disableCollapse(){return!this.anySocial&&!this.anyAddress&&!this.anyMedia&&!this.anyButtons||r.overlayPosition==="left"&&(this.exhibitor.description||"").length<800},get showEdit(){return!!(p.sendLoginLinkUrl&&this.sendLinkEmail)},get sendLinkEmail(){return this.exhibitor.privateEmail||this.exhibitor.email}})),{heatmapBar:A}=le(o.exhibitor),[w,z]=I(!1),[f,M]=I(!1),x=C(null);ie(()=>((()=>{if(x.current){const c=x.current.offsetHeight;z(c>300)}})(),()=>{a.exhibitorStore.rebookingStateChangeRequested=!1}),[]),se(()=>o.exhibitor,()=>{S.current&&(S.current.parentElement.scrollTop=0),o.collapsed=!0});function _(e,c){if(u(c),r.kiosk)return e.preventDefault()}function H(e,c,m){O(d.ClickCustomButton,o.exhibitor.name);const b={externalId:o.exhibitor.externalId,buttonNumber:e,buttonUrl:c,preventDefault:m.preventDefault.bind(m)};r.onExhibitorCustomButtonClick&&r.onExhibitorCustomButtonClick(b)}function u(e){O(e,o.exhibitor.name)}const B=C(),V={entering:{opacity:1},entered:{opacity:1},exiting:{opacity:0},exited:{opacity:0}},E=150;return T(()=>{const e=o.exhibitor,c=p.isRebooking?(()=>{const t=new Set;for(const s of e.booths)s instanceof oe&&s.size&&t.add(s.size);const l=Array.from(t);return n("div",{children:[l.length>0&&i("div",{className:"booth__infos",style:{padding:"0 15px",marginBottom:"1rem"},children:n("div",{className:"booth__info",children:[i("div",{className:"booth__info-icon",children:i("i",{className:"icon-size"})}),n("div",{className:"booth__info-body",children:[i("div",{className:"booth__info-title",children:h("Size")}),i("div",{className:"booth__info-val",children:l.join(", ")})]})]})}),i(me,{value:e.rebookingState.toString(),onChange:s=>a.exhibitorStore.setRebookingState(e,parseInt(s),e.rebookingNote)}),i(he,{value:e.rebookingNote||"",onSave:s=>a.exhibitorStore.setRebookingState(e,e.rebookingState,s)},e.id),i(te,{in:a.exhibitorStore.rebookingStateChangeRequested,nodeRef:B,timeout:E,appear:!0,enter:!0,exit:!0,mountOnEnter:!0,unmountOnExit:!0,children:s=>i("div",{ref:B,style:{position:"fixed",bottom:"1rem",left:"1rem",zIndex:9999,transition:`opacity ${E}ms ease-in-out`,opacity:0,...V[s]},children:i(ce,{title:a.exhibitorStore.rebookingStateSaved?h("Changes saved"):h("Oops! Something went wrong"),variant:a.exhibitorStore.rebookingStateSaved?"success":"error",inline:!0,closable:!0,onClose:()=>{a.exhibitorStore.rebookingStateChangeRequested=!1}})})})]})})():null,m=g({exhibitor:!0,"is-featured":e.featured,bookmarked:e.bookmarked,[r.responsiveClass]:!0}),b=()=>{o.collapsed=!1,setTimeout(o.updateOverlayContent)};function k(t,l,s){return!t||!l||r.kiosk||r.previewMode?null:i("div",{className:"exhibitor-custom-button",children:i(R,{link:l,inline:!0,onClick:v=>{H(s,l,v)},target:"_blank",children:t})},s)}const X=({exhibitor:t})=>{const s=[k(t.customButtonTitle,t.customButtonUrl,1),k(t.customButton2Title,t.customButton2Url,2),k(t.customButton3Title,t.customButton3Url,3)].filter(Boolean);return s.length===0?null:i("div",{className:"exhibitor-custom-buttons",children:s})};function K(){return!p.hideShareButton&&!r.kiosk&&window.location.host.endsWith(".expofp.com")&&y.EXPO!=="globalaltsmiami2024"}function L(){o.updateOverlayContent()}const W=()=>{a.routeStore.clickRoute(null,a.routeStore.tempToBooth||e.booths[0]),a.routeStore.currentRouteExhibitor=e},J=t=>/^\d+$/.test(t),Y=t=>p.shortLevelName?t.layer?.shortName:t.layer?.description;return n("div",{className:m,"aria-label":h("Details"),children:[n("div",{className:"exhibitor__header",children:[n("div",{className:"exhibitor__header-name",children:[i("div",{className:"exhibitor__header-icon",children:i("i",{className:"icon-exhibitor-solid"})}),i("span",{dir:"auto",children:e.name}),A]}),i("button",{type:"button",onClick:()=>a.searchStore.handleBackAction(),className:"exhibitor__header-close",children:i("i",{className:"icon-close"})})]}),c||n(N,{children:[i("div",{className:"exhibitor__buttons",children:!r.isGuidedToursActive&&i(ke,{showBookmark:!r.disableBookmarked&&!p.hideBookmarks&&!r.kiosk,showDirections:e.booths.length>0&&y.wayfinding,inBookmark:e.bookmarked,showShare:K(),showVisited:!r.kiosk,visited:e.visited,onClickBookmark:F,onClickShare:P,onClickDirections:W,onClickVisited:$})}),e.leadingImageUrl?i("div",{className:"exhibitor__leading-image-container exhibitor-slider",children:e.leadingImageLinkUrl?i("a",{href:e.leadingImageLinkUrl,target:"_blank",rel:"noopener noreferrer",children:i("img",{src:e.leadingImageUrl,className:"exhibitor__leading-image",alt:"",crossOrigin:"anonymous"})}):i(U,{children:i(D,{fallback:null,children:i(G,{className:r.responsiveClass,onOpenGallery:()=>a.openGallery(),onCloseGallery:()=>a.closeGallery(),onImageLoadHeightUpdate:L,leading:!0,images:[e.leadingImageUrl]})})})}):null,n("div",{className:g("exhibitor__details",{"details-hidden":r.kiosk&&w&&!f}),ref:x,children:[n("div",{className:g("exhibitor-categories",{"is-links-disabled":r.isGuidedToursActive}),children:[e.featured&&i("div",{className:"exhibitor-featured",children:h("Featured")}),e.booths.map(t=>{const l=Y(t),s=v=>{v.preventDefault(),a.toggleMapOverlay(),a.selectBooth(t)};return n("a",{href:`?${t.slug}`,onClick:s,className:"exhibitor-categories__booth",children:[i("div",{className:"exhibitor-categories__booth-name",children:t.name}),l&&n("div",{className:"exhibitor-categories__booth-level",children:[J(l)?h("Level")+" ":"",l]})]},t.id)}),e.categories.map(t=>i("a",{href:"?"+encodeURIComponent(t.slug),onClick:l=>{l.preventDefault(),j(t)},className:t.sponsorship?"exhibitor-categories__sponsorship":"exhibitor-categories__cat",children:t.name},t.id))]}),e.description||e.logo?.url?n("div",{className:g("exhibitor-description",{collapsed:o.collapsed&&!o.disableCollapse}),children:[e.logo?.url?i("div",{className:g("exhibitor-description__logo",{"exhibitor-description__logo--left":!e.description}),children:i("img",{src:e.logo.url,alt:e.name,crossOrigin:"anonymous"})}):null,e.description?i("span",{className:"exhibitor-description__content",dir:"auto",dangerouslySetInnerHTML:{__html:ge(e.description)},onClick:b}):null]}):null,(!!e.schedule?.length||!!e.booths[0]?.schedule.length)&&i(ue,{events:[...e.schedule||e.booths[0]?.schedule||[]].sort((t,l)=>new Date(t.startDate).getTime()-new Date(l.startDate).getTime())}),!r.kiosk&&e.videoUrl&&navigator.onLine&&i("div",{className:"exhibitor-video",children:i("iframe",{src:e.videoUrl,"data-allow":"encrypted-media; autoplay; fullscreen",title:h("Exhibitor Video"),allowFullScreen:!0})}),e.gallery&&i("div",{className:"exhibitor-slider",onClick:()=>u(d.ViewGallery),children:i(U,{children:i(D,{fallback:null,children:i(G,{className:r.responsiveClass,onOpenGallery:()=>a.openGallery(),onCloseGallery:()=>a.closeGallery(),onImageLoadHeightUpdate:L,images:e.gallery})})})}),!r.kiosk&&e.marketMaterials&&n(N,{children:[i("div",{className:"exhibitor-sep"}),i(de,{list:e.marketMaterials})]}),o.showEdit&&i("div",{className:"exhibitor-sep"}),!r.kiosk&&o.showEdit&&i("div",{className:"exhibitor-edit",children:i(R,{size:"sm",variant:"secondary",onClick:q,children:h("Edit")})}),o.anyAddress&&n("div",{className:"exhibitor-meta",children:[!!(e.address||e.address2)&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-marker-pin-solid"})}),n("div",{className:"exhibitor-meta__content",children:[e.address,!!e.address2&&i("div",{children:e.address2}),!!(e.city||e.state||e.zip)&&n("div",{children:[e.city,!!(e.city&&e.state)&&i("span",{children:" "}),e.state,!!(e.state&&e.zip)&&i("span",{children:"\xA0"})," ",e.zip]}),!!e.country&&i("div",{children:e.country})]})]}),!!e.phone1&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-phone-solid"})}),i("div",{className:"exhibitor-meta__content",children:i("a",{dir:"ltr",href:"tel:"+e.phone1,className:"exhibitor-meta__link",onClick:t=>_(t,d.ClickPhone),children:e.phone1})})]}),!!e.website&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-globe-solid"})}),i("div",{className:"exhibitor-meta__content",children:i("a",{href:e.website,target:"_blank",rel:"noopener noreferrer",className:"exhibitor-meta__link",onClick:t=>_(t,d.ClickWebsite),children:o.websiteTrimmed})})]}),!!e.email&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-mail-at-solid"})}),i("div",{className:"exhibitor-meta__content",children:i("a",{href:"mailto:"+e.email,target:"_blank",rel:"noopener noreferrer",className:"exhibitor-meta__link",onClick:t=>_(t,d.ClickEmail),children:e.email})})]}),o.anySocial&&n("div",{className:"exhibitor-meta__socials",children:[i("a",{href:e.facebook,className:"exhibitor-meta__social",onClick:()=>u(d.ClickFacebook),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-facebook"})}),i("a",{href:e.instagram,className:"exhibitor-meta__social",onClick:()=>u(d.ClickInstagaram),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-instagram"})}),i("a",{href:e.linkedin,className:"exhibitor-meta__social",onClick:()=>u(d.ClickLinkedin),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-linkedin"})}),i("a",{href:e.twitter,className:"exhibitor-meta__social",onClick:()=>u(d.ClickTwitter),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-twitter-x"})}),i("a",{href:e.xing,className:"exhibitor-meta__social",onClick:()=>u(d.ClickXing),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-xing"})}),i("a",{href:e.youtube,className:"exhibitor-meta__social",onClick:()=>u(d.ClickYoutube),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-youtube"})})]})]}),i(X,{exhibitor:e})]}),r.kiosk&&w&&i(be,{className:g("exhibitor__show-more",{"is-sticky":f}),expanded:f,onClick:()=>M(t=>!t)})]})]})});function P(){const e=window.navigator,c={title:r.selectedExhibitor.name,url:window.location.href};ae&&e?.canShare&&e.canShare(c)?e.share(c):a.toggleModal("share")}function j(e){a.clickCategory(e)}function q(e){if(r.kiosk)return e.preventDefault();e.target.blur();const c=o.sendLinkEmail;if(!window.confirm(h("Send login instructions to {{email}} to edit profile?",{email:c}))||y.EXPO==="expo")return;const m=new XMLHttpRequest;m.open("POST",p.sendLoginLinkUrl),m.setRequestHeader("Content-Type","application/json");function b(){alert(h("Error sending login instructions"))}m.onload=function(k){if(this.status!==200){b();return}alert(h("A link to edit profile was sent to {{email}}",{email:c}))},m.onerror=function(k){re.error("Error",k),b()},m.send(JSON.stringify({id:o.exhibitor.id}))}function F(){o.exhibitor.bookmarked=!o.exhibitor.bookmarked,r.onBookmarkClick&&r.onBookmarkClick({name:o.exhibitor.name,bookmarked:o.exhibitor.bookmarked,externalId:o.exhibitor.externalId}),o.exhibitor.bookmarked&&ne("bookmark",o.exhibitor.id,"exhibitor")}function $(){o.exhibitor.visited=!o.exhibitor.visited,r.onVisitedClick&&r.onVisitedClick({name:o.exhibitor.name,visited:o.exhibitor.visited,externalId:o.exhibitor.externalId})}});export default()=>T(()=>i(N,{children:!r.menu&&r.selectedExhibitor?i(pe,{}):null}));
|
|
1
|
+
import{Fragment as N,jsx as i,jsxs as n}from"react/jsx-runtime";import"./Exhibitor.scss";import{Button as B}from"@expofp/ui";import k from"classnames";import{observer as J,useLocalStore as Y,useObserver as E}from"mobx-react-lite";import Q,{Suspense as L,useEffect as Z,useRef as R,useState as D}from"react";import{Transition as ee}from"react-transition-group";import f from"../data";import a,{uiState as r}from"../store";import{RegularBooth as ie}from"../store/BoothStore";import{GaEventActions as d,sendEventToGa as T}from"../tools/gtag";import te from"../tools/logger";import C from"../tools/settings";import oe from"../tools/track-event";import{t as h}from"../utils/i18n";import re from"../utils/is-mobile";import{useReaction as ne}from"../utils/mobx";import ae from"../utils/useHeatmapOverlay";import se from"./AlertContainer";import le from"./DownloadListContainer";import I from"./ErrorBoundary";import ce from"./RebookingNotesContainer";import de from"./RebookingRadioGroupContainer";import he from"./Schedule";import me from"./ShowMoreButtonContainer";import ue from"./SidebarActionsContainer";import{getDescription as be}from"./utils/getDescription";const O=Q.lazy(()=>import("./GalleryContainer")),ke=J(function(){const o=Y(()=>({collapsed:!0,get exhibitor(){return r.selectedExhibitor},get websiteTrimmed(){return this.exhibitor.website?this.exhibitor.website.replace(/^(http(s?):\/\/)([^/]+)(\/)?$/i,"$3"):""},get anySocial(){return r.kiosk?!1:!!["facebook","instagram","linkedin","twitter","googlePlus","xing","youtube"].find(e=>this.exhibitor[e])},get anyAddress(){return!!["address","address2","phone1","website","email"].find(e=>this.exhibitor[e])},get anyMedia(){return!!this.exhibitor.videoUrl||!!(this.exhibitor.gallery&&this.exhibitor.gallery.length)},get anyButtons(){return!!(this.exhibitor.customButtonTitle||this.exhibitor.customButton2Title||this.exhibitor.customButton3Title)},get disableCollapse(){return!this.anySocial&&!this.anyAddress&&!this.anyMedia&&!this.anyButtons||r.overlayPosition==="left"&&(this.exhibitor.description||"").length<800},get showEdit(){return!!(f.sendLoginLinkUrl&&this.sendLinkEmail)},get sendLinkEmail(){return this.exhibitor.privateEmail||this.exhibitor.email}})),{heatmapBar:G}=ae(o.exhibitor),[y,U]=D(!1),[p,A]=D(!1),x=R(null);Z(()=>((()=>{if(x.current){const c=x.current.offsetHeight;U(c>300)}})(),()=>{a.exhibitorStore.rebookingStateChangeRequested=!1}),[]),ne(()=>o.exhibitor,()=>{o.collapsed=!0});function _(e,c){if(u(c),r.kiosk)return e.preventDefault()}function z(e,c,m){T(d.ClickCustomButton,o.exhibitor.name);const b={externalId:o.exhibitor.externalId,buttonNumber:e,buttonUrl:c,preventDefault:m.preventDefault.bind(m)};r.onExhibitorCustomButtonClick&&r.onExhibitorCustomButtonClick(b)}function u(e){T(e,o.exhibitor.name)}const S=R(null),M={entering:{opacity:1},entered:{opacity:1},exiting:{opacity:0},exited:{opacity:0}},w=150;return E(()=>{const e=o.exhibitor,c=f.isRebooking?(()=>{const t=new Set;for(const l of e.booths)l instanceof ie&&l.size&&t.add(l.size);const s=Array.from(t);return n("div",{children:[s.length>0&&i("div",{className:"booth__infos",style:{padding:"0 15px",marginBottom:"1rem"},children:n("div",{className:"booth__info",children:[i("div",{className:"booth__info-icon",children:i("i",{className:"icon-size"})}),n("div",{className:"booth__info-body",children:[i("div",{className:"booth__info-title",children:h("Size")}),i("div",{className:"booth__info-val",children:s.join(", ")})]})]})}),i(de,{value:e.rebookingState.toString(),onChange:l=>a.exhibitorStore.setRebookingState(e,parseInt(l),e.rebookingNote)}),i(ce,{value:e.rebookingNote||"",onSave:l=>a.exhibitorStore.setRebookingState(e,e.rebookingState,l)},e.id),i(ee,{in:a.exhibitorStore.rebookingStateChangeRequested,nodeRef:S,timeout:w,appear:!0,enter:!0,exit:!0,mountOnEnter:!0,unmountOnExit:!0,children:l=>i("div",{ref:S,style:{position:"fixed",bottom:"1rem",left:"1rem",zIndex:9999,transition:`opacity ${w}ms ease-in-out`,opacity:0,...M[l]},children:i(se,{title:a.exhibitorStore.rebookingStateSaved?h("Changes saved"):h("Oops! Something went wrong"),variant:a.exhibitorStore.rebookingStateSaved?"success":"error",inline:!0,closable:!0,onClose:()=>{a.exhibitorStore.rebookingStateChangeRequested=!1}})})})]})})():null,m=k({exhibitor:!0,"is-featured":e.featured,bookmarked:e.bookmarked,[r.responsiveClass]:!0}),b=()=>{o.collapsed=!1};function g(t,s,l){return!t||!s||r.kiosk||r.previewMode?null:i("div",{className:"exhibitor-custom-button",children:i(B,{link:s,inline:!0,onClick:v=>{z(l,s,v)},target:"_blank",children:t})},l)}function F(){const s=[g(e.customButtonTitle,e.customButtonUrl,1),g(e.customButton2Title,e.customButton2Url,2),g(e.customButton3Title,e.customButton3Url,3)].filter(Boolean);return s.length===0?null:i("div",{className:"exhibitor-custom-buttons",children:s})}function $(){return!f.hideShareButton&&!r.kiosk&&window.location.host.endsWith(".expofp.com")&&C.EXPO!=="globalaltsmiami2024"}const X=()=>{a.routeStore.clickRoute(null,a.routeStore.tempToBooth||e.booths[0]),a.routeStore.currentRouteExhibitor=e},K=t=>/^\d+$/.test(t),W=t=>f.shortLevelName?t.layer?.shortName:t.layer?.description;return n("div",{className:m,"aria-label":h("Details"),children:[n("div",{className:"exhibitor__header",children:[n("div",{className:"exhibitor__header-name",children:[i("div",{className:"exhibitor__header-icon",children:i("i",{className:"icon-exhibitor-solid"})}),i("span",{dir:"auto",children:e.name}),G]}),i("button",{type:"button",onClick:()=>a.searchStore.handleBackAction(),className:"exhibitor__header-close",children:i("i",{className:"icon-close"})})]}),c||n(N,{children:[i("div",{className:"exhibitor__buttons",children:!r.isGuidedToursActive&&i(ue,{showBookmark:!r.disableBookmarked&&!f.hideBookmarks&&!r.kiosk,showDirections:e.booths.length>0&&C.wayfinding,inBookmark:e.bookmarked,showShare:$(),showVisited:!r.kiosk,visited:e.visited,onClickBookmark:j,onClickShare:V,onClickDirections:X,onClickVisited:q})}),e.leadingImageUrl?i("div",{className:"exhibitor__leading-image-container exhibitor-slider",children:e.leadingImageLinkUrl?i("a",{href:e.leadingImageLinkUrl,target:"_blank",rel:"noopener noreferrer",children:i("img",{src:e.leadingImageUrl,className:"exhibitor__leading-image",alt:"",crossOrigin:"anonymous"})}):i(I,{children:i(L,{fallback:null,children:i(O,{className:r.responsiveClass,onOpenGallery:()=>a.openGallery(),onCloseGallery:()=>a.closeGallery(),leading:!0,images:[e.leadingImageUrl]})})})}):null,n("div",{className:k("exhibitor__details",{"details-hidden":r.kiosk&&y&&!p}),ref:x,children:[n("div",{className:k("exhibitor-categories",{"is-links-disabled":r.isGuidedToursActive}),children:[e.featured&&i("div",{className:"exhibitor-featured",children:h("Featured")}),e.booths.map(t=>{const s=W(t),l=v=>{v.preventDefault(),a.toggleMapOverlay(),a.selectBooth(t)};return n("a",{href:`?${t.slug}`,onClick:l,className:"exhibitor-categories__booth",children:[i("div",{className:"exhibitor-categories__booth-name",children:t.name}),s&&n("div",{className:"exhibitor-categories__booth-level",children:[K(s)?h("Level")+" ":"",s]})]},t.id)}),e.categories.map(t=>i("a",{href:"?"+encodeURIComponent(t.slug),onClick:s=>{s.preventDefault(),H(t)},className:t.sponsorship?"exhibitor-categories__sponsorship":"exhibitor-categories__cat",children:t.name},t.id))]}),e.description||e.logo?.url?n("div",{className:k("exhibitor-description",{collapsed:o.collapsed&&!o.disableCollapse}),children:[e.logo?.url?i("div",{className:k("exhibitor-description__logo",{"exhibitor-description__logo--left":!e.description}),children:i("img",{src:e.logo.url,alt:e.name,crossOrigin:"anonymous"})}):null,e.description?i("span",{className:"exhibitor-description__content",dir:"auto",dangerouslySetInnerHTML:{__html:be(e.description)},onClick:b}):null]}):null,(!!e.schedule?.length||!!e.booths[0]?.schedule.length)&&i(he,{events:[...e.schedule||e.booths[0]?.schedule||[]].sort((t,s)=>new Date(t.startDate).getTime()-new Date(s.startDate).getTime())}),!r.kiosk&&e.videoUrl&&navigator.onLine&&i("div",{className:"exhibitor-video",children:i("iframe",{src:e.videoUrl,"data-allow":"encrypted-media; autoplay; fullscreen",title:h("Exhibitor Video"),allowFullScreen:!0})}),e.gallery&&i("div",{className:"exhibitor-slider",onClick:()=>u(d.ViewGallery),children:i(I,{children:i(L,{fallback:null,children:i(O,{className:r.responsiveClass,onOpenGallery:()=>a.openGallery(),onCloseGallery:()=>a.closeGallery(),images:e.gallery})})})}),!r.kiosk&&e.marketMaterials&&n(N,{children:[i("div",{className:"exhibitor-sep"}),i(le,{list:e.marketMaterials})]}),o.showEdit&&i("div",{className:"exhibitor-sep"}),!r.kiosk&&o.showEdit&&i("div",{className:"exhibitor-edit",children:i(B,{size:"sm",variant:"secondary",onClick:P,children:h("Edit")})}),o.anyAddress&&n("div",{className:"exhibitor-meta",children:[!!(e.address||e.address2)&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-marker-pin-solid"})}),n("div",{className:"exhibitor-meta__content",children:[e.address,!!e.address2&&i("div",{children:e.address2}),!!(e.city||e.state||e.zip)&&n("div",{children:[e.city,!!(e.city&&e.state)&&i("span",{children:" "}),e.state,!!(e.state&&e.zip)&&i("span",{children:"\xA0"})," ",e.zip]}),!!e.country&&i("div",{children:e.country})]})]}),!!e.phone1&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-phone-solid"})}),i("div",{className:"exhibitor-meta__content",children:i("a",{dir:"ltr",href:"tel:"+e.phone1,className:"exhibitor-meta__link",onClick:t=>_(t,d.ClickPhone),children:e.phone1})})]}),!!e.website&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-globe-solid"})}),i("div",{className:"exhibitor-meta__content",children:i("a",{href:e.website,target:"_blank",rel:"noopener noreferrer",className:"exhibitor-meta__link",onClick:t=>_(t,d.ClickWebsite),children:o.websiteTrimmed})})]}),!!e.email&&n("div",{className:"exhibitor-meta__item",children:[i("div",{className:"exhibitor-meta__icon",children:i("i",{className:"icon-mail-at-solid"})}),i("div",{className:"exhibitor-meta__content",children:i("a",{href:"mailto:"+e.email,target:"_blank",rel:"noopener noreferrer",className:"exhibitor-meta__link",onClick:t=>_(t,d.ClickEmail),children:e.email})})]}),o.anySocial&&n("div",{className:"exhibitor-meta__socials",children:[i("a",{href:e.facebook,className:"exhibitor-meta__social",onClick:()=>u(d.ClickFacebook),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-facebook"})}),i("a",{href:e.instagram,className:"exhibitor-meta__social",onClick:()=>u(d.ClickInstagaram),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-instagram"})}),i("a",{href:e.linkedin,className:"exhibitor-meta__social",onClick:()=>u(d.ClickLinkedin),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-linkedin"})}),i("a",{href:e.twitter,className:"exhibitor-meta__social",onClick:()=>u(d.ClickTwitter),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-twitter-x"})}),i("a",{href:e.xing,className:"exhibitor-meta__social",onClick:()=>u(d.ClickXing),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-xing"})}),i("a",{href:e.youtube,className:"exhibitor-meta__social",onClick:()=>u(d.ClickYoutube),target:"_blank",rel:"noopener noreferrer",children:i("i",{className:"icon-youtube"})})]})]}),F()]}),r.kiosk&&y&&i(me,{className:k("exhibitor__show-more",{"is-sticky":p}),expanded:p,onClick:()=>A(t=>!t)})]})]})});function V(){const e={title:o.exhibitor.name,url:window.location.href};re&&typeof navigator.canShare=="function"&&navigator.canShare(e)?navigator.share(e):a.toggleModal("share")}function H(e){a.clickCategory(e)}function P(e){if(r.kiosk)return e.preventDefault();e.target.blur();const c=o.sendLinkEmail;if(!window.confirm(h("Send login instructions to {{email}} to edit profile?",{email:c}))||C.EXPO==="expo")return;const m=new XMLHttpRequest;m.open("POST",f.sendLoginLinkUrl),m.setRequestHeader("Content-Type","application/json");function b(){alert(h("Error sending login instructions"))}m.onload=function(){if(this.status!==200){b();return}alert(h("A link to edit profile was sent to {{email}}",{email:c}))},m.onerror=function(g){te.error("Error",g),b()},m.send(JSON.stringify({id:o.exhibitor.id}))}function j(){o.exhibitor.bookmarked=!o.exhibitor.bookmarked,r.onBookmarkClick&&r.onBookmarkClick({name:o.exhibitor.name,bookmarked:o.exhibitor.bookmarked,externalId:o.exhibitor.externalId}),o.exhibitor.bookmarked&&oe("bookmark",o.exhibitor.id,"exhibitor")}function q(){o.exhibitor.visited=!o.exhibitor.visited,r.onVisitedClick&&r.onVisitedClick({name:o.exhibitor.name,visited:o.exhibitor.visited,externalId:o.exhibitor.externalId})}});export default()=>E(()=>i(N,{children:!r.menu&&r.selectedExhibitor?i(ke,{}):null}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Box as T}from"@expofp/geometry";import{update as M}from"@expofp/renderer";import{reaction as R}from"mobx";import{createImageDef as L}from"../../../../engine/defs";import
|
|
1
|
+
import{Box as T}from"@expofp/geometry";import{update as M}from"@expofp/renderer";import{reaction as R}from"mobx";import{createImageDef as L}from"../../../../engine/defs";import{attachExactRoll as V}from"../../../../engine/utils/rotation.js";import u,{layersStore as P,uiState as W}from"../../../../store";import{setMarkerResolver as B}from"../../pointer";import{createImageCanvas as Y,getBounds as y,imageCanvasCssSize as A}from"./canvases";const _="_selected";export const MARKER_LAYER_NAME="markers";export function rescaleMarker(s,h,f){const{center:r,rotation:a,elevation:o}=s.bounds,{width:i,height:m}=h;return s.bounds=y(r.x,r.y,i,m,f,a,o),[s]}function j(s){b=s}export function configMarkers(s){const{scene:h}=s,f=[],r=new Map,a=new Map;let o=[];const i=h.rootLayer.children.find(e=>e.name===MARKER_LAYER_NAME);i.onScale=({pixelSize:e})=>j(e),B(markerAt),M(i);async function m(e){const t=[];e.forEach(c=>{const{name:d,content:n,width:l,height:g,scale:k}=c;if(r.has(d))return;const p=new Image,x=new Promise((w,D)=>{p.onload=()=>{r.set(d,{img:p,width:l,height:g,scale:k}),w()},p.onerror=v=>{D(v)}});t.push(x),p.src=n,p.crossOrigin="anonymous"}),await Promise.all(t)}const E=(e,t)=>{e.onScale=({pixelSize:c})=>rescaleMarker(e,t,c)},$=e=>{e.screenSpace||V(e)};function I(e,t){const c=a.get(e);if(c)return c;const d=Y(t.img,t.width,t.height,window.devicePixelRatio,t.scale||1);return a.set(e,d),d}function F(){const e=u.routeStore.markersData.markers;if(!e.length)return;o=[];const t=1,c=0,d=W.is3DView;e.forEach(n=>{const l=r.get(n.icon);if(!l)return;const g=r.get(n.selectedIcon);if(!g)return;const k=l.scale||1,p=I(n.icon,l),x=I(n.selectedIcon,g),w=P.findLayer(n.z)?.visible??!0,D=A(l.img,l.width,l.height,k),v=A(g.img,g.width,g.height,k),N=y(n.x,n.y,D.width,D.height,t,c),O=y(n.x,n.y,v.width,v.height,t,c);let S;switch(n.position){case"lefttop":S=[0,0];break;case"centertop":S=[.5,0];break;case"centerbottom":S=[.5,1];break;default:S=[.5,.5]}const C={...L(p,N,{hidden:!w,origin:S}),id:n.id,scale:k,screenSpace:d},z={...L(x,O,{hidden:!(w&&n.active),origin:S}),id:`${n.id}${_}`,scale:k,screenSpace:d};E(C,D),E(z,v),o.push(C,z)}),i.children=o,o.forEach($)}function H(){i.children=[],o=[]}function K(){const e=u.routeStore.markersData.markers;e.length&&e.forEach(t=>{const c=o.find(l=>l.id===t.id),d=o.find(l=>l.id===`${t.id}${_}`);if(!c||!d)return;const n=P.findLayer(t.z)?.visible??!0;t.active?(c.hidden=!0,d.hidden=!(n&&t.active)):(c.hidden=!n,d.hidden=!0)})}return f.push(R(()=>[u.routeStore.selectedMarkers,u.layerStore.visible],()=>{if(!u.routeStore.markersData.markers.length){H(),M(i);return}K(),M(...o)})),f.push(R(()=>u.routeStore.markersData.markers,()=>{m(u.routeStore.markersData.icons).then(()=>{F(),M(i)})},{fireImmediately:!0})),function(){f.forEach(t=>t()),f.length=0,i.onScale=void 0,B(),b=1,M(i)}}export function markerAt(s,h){return getMarkerFromClick(s,h,b)}export function getMarkerFromClick(s,h,f){for(const r of u.routeStore.markersData.markers){const a=u.routeStore.markersData.icons.find(m=>m.name===r.icon);if(!a)continue;const o=a.width*(a.scale||1)*f,i=a.height*(a.scale||1)*f;if(q(s,h,r.x,r.y,o,i)){const m=u.layerStore.findLayer(r.z);if(!m||m&&m.visible)return r}}return null}function q(s,h,f,r,a,o){return T.fromCenter({x:f,y:r},{x:2*a,y:2*o}).containsPoint({x:s,y:h})}let b=1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{lineAngle as fe,pointDistance as he,Rect as be}from"@expofp/geometry";import{update as z}from"@expofp/renderer";import{useEffect as
|
|
1
|
+
import{lineAngle as fe,pointDistance as he,Rect as be}from"@expofp/geometry";import{update as z}from"@expofp/renderer";import{useEffect as ve,useRef as S}from"react";import{attachExactRoll as Ce}from"../../../engine/utils/rotation.js";import _e from"../../../tools/base-runtime-url";import{loadImage as Fe}from"../../../utils/loadImage";import{mapCamera as Pe}from"../camera";import{createCanvas as ge,createImageCanvas as Ne,getBounds as B,imageCanvasCssSize as De}from"../drawing/config/canvases";import{getRouteLayerRegex as Oe,getRouteStopLayerRegex as He,TRAFFIC_VEHICLES as ce}from"./trafficLayers";import{UpdateQueue as Ve}from"./UpdateQueue";const se=2,ze=se*3.5,J=se*12,K=J*.7,We=8,ie=2,me=.6,pe=8,ke="transport_locations",Ge=150,Ye="#a4aab6",we=1e3,$e=2e4,Ie=500;export function useManageTraffic({permission:e,scene:n,dataJsonUrl:o,websocketUrl:a}){const t=S(1),r=S(new Map),c=S(new Map),s=S(null),f=S(null),d=S(0),w=S(1),b=S(new Ve),R=S(new Map),E=S(we),m=S(new Map),x=S(void 0);ve(()=>{if(!e||!n)return;let l=!1,_;const T=n.rootLayer.children,p=c.current,I=r.current,y=b.current;async function Re(){try{let u;try{const i=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json"}});if(!i.ok||i.status===204)return;u=await i.json()}catch(i){console.warn("useManageTraffic failed to get JSON",i)}if(l||!u||u.disabled||u.error)return;t.current=Ee(Pe()?.state().pixelSize??1);const W=new Map(u.routes.map(({id:i,color:h})=>[i,h])),v=new Map;W.forEach(i=>{v.set(i,qe({radius:ze,color:i,scale:window.devicePixelRatio}))});const Y=Oe(),$=T.filter(i=>Y.test(i.name)),X=He(),U=T.filter(i=>X.test(i.name));u.routes.slice(0,$.length).forEach(({id:i,color:h,path:g,stops:O,hiddenPoints:L},k)=>{R.current.set(i,g);const M=$[k];if(M){const H=new Map(L?.map(P=>[ue(P),P])??[]);for(let P=1;P<g.length;P++){const A=g[P-1],V=g[P];H.has(ue(A))||H.has(ue(V))||M.children.push({points:{p0:A,p1:V},color:h,width:se})}M.children.length&&y.add(()=>z(M))}const C=U[k],F=v.get(h);C&&F&&O?.length&&(O.forEach(H=>{C.children.push({source:F,bounds:B(H.x,H.y,...Q(F),t.current)})}),C.children.length&&y.add(()=>z(C)))});const D=T.find(i=>i.name===ce);if(!D){console.warn(`useManageTraffic: the scene has no "${ce}" layer`);return}const j=new Map;D.onScale=({pixelSize:i})=>{t.current=Ee(i);const h=[];for(const g of U){const O=g.children;for(const L of O){const k=L.source;L.bounds=B(L.bounds.center.x,L.bounds.center.y,...Q(k),t.current,L.bounds.rotation),h.push(L)}}for(const g of r.current.values()){const O=g.source;g.bounds=B(g.bounds.center.x,g.bounds.center.y,...Q(O),t.current,g.bounds.rotation),h.push(g)}return h},y.add(()=>z(D)),W.forEach((i,h)=>{j.set(h,xe({id:h,width:J,height:J,color:i,scale:window.devicePixelRatio}))});const Le=xe({id:"orphan",width:J,height:J,color:Ye,scale:window.devicePixelRatio});let q=null;try{const i=await Fe(`${_e}icons/bus-white.svg`);if(l)return;q=Ne(i,K,K,window.devicePixelRatio);const{width:h,height:g}=De(i,K,K);ne.set(q,[h,g])}catch(i){console.error(i)}f.current=i=>{try{const h=JSON.parse(i.data);if(h.type!==ke)return;const g=i.timeStamp||performance.now();w.current=Math.round(g-d.current),d.current=g;const O=Math.max(w.current??Ie,Ie),L=D.children;let k=!1;h.data.forEach(({id:M,x:C,y:F,route_id:H,hidden:P})=>{p.has(M)&&(p.get(M)?.(),p.delete(M));const A=I.get(M),V=I.get(le(M))??null;if(P&&A&&V){A.hidden=!0,V.hidden=!0,y.add(()=>z(A,V));return}if(m.current.set(M,performance.now()),!A){const G=j.get(H)??Le,N={source:G,bounds:B(C,F,...Q(G),t.current,0)};if(I.set(M,N),q){const Z=le(M),re={source:q,bounds:B(C,F,...Q(q),t.current,0)};Ce(re),q.setAttribute("id",Z),I.set(Z,re),L.push(N,re)}else L.push(N);k=!0;return}const Ae=A.bounds.center,oe=Qe(Ae,{x:C,y:F},R.current.get(H));if(oe.reduce((G,N,Z)=>Z===0?G:G+ae(oe[Z-1],N),0)>=Ge||document.hidden)Me({updateQueue:y,vehicle:A,vehicleFinery:V,x:C,y:F,scale:t.current,angle:je(A.bounds.center,{x:C,y:F})});else{const G=Xe(oe,O,N=>{Me({updateQueue:y,vehicle:A,vehicleFinery:V,x:N.x,y:N.y,scale:t.current,angle:N.angle})});p.set(M,G)}}),k&&y.add(()=>z(D))}catch(h){console.error("handleSocketMessage",h)}},d.current=performance.now(),te(),window.addEventListener("online",de),Te(u.config?(Number(u.config.vehicle_inactive_interval)||20)*1e3:$e)}catch(u){console.warn(u)}}Re();function te(){l||s.current?.readyState===WebSocket.OPEN||s.current?.readyState===WebSocket.CONNECTING||(s.current=new WebSocket(a),s.current.onmessage=f.current,s.current.onopen=()=>{E.current=we},s.current.onclose=()=>{if(l||!navigator.onLine)return;_=window.setTimeout(te,E.current);const u=3e4;E.current=Math.min(E.current*2,u)})}function de(){te()}function Te(u){clearInterval(x.current),!l&&(x.current=window.setInterval(()=>{const W=performance.now(),v=[],Y=[];m.current.forEach(($,X)=>{if(W-$<u)return;const U=I.get(X);U&&(U.hidden=!0,Y.push(U),v.push(X));const D=le(X),j=I.get(D);j&&(j.hidden=!0,Y.push(j),v.push(D))}),Y.length&&y.add(()=>z(...Y)),v.forEach($=>m.current.delete($))},u))}return()=>{l=!0,clearTimeout(_);const u=s.current;u&&(u.onopen=null,u.onmessage=null,u.onclose=null,u.close(),s.current=null),f.current=null;const W=T.find(v=>v.name===ce);W&&(W.onScale=void 0),p.forEach(v=>v?.()),p.clear(),I.clear(),y.destroy(),window.removeEventListener("online",de),clearInterval(x.current)}},[e,n,o,a])}function Q(e){const n=ne.get(e);if(!n)throw new Error("useManageTraffic: an icon was drawn without a recorded CSS size");return n}function ye(e){return e*2}function Ue(e,n){const o=n*me,a=pe*2;return[n+ie+o/2+a,e+o+ie+a]}function Ee(e){return Math.min(e||1,We)}function je(e,n){return fe(e,n)}function qe({radius:e,scale:n,color:o}){const a=Math.ceil(e*2*n),t=ge(a,a,n);ne.set(t,[ye(e),ye(e)]);const r=t.getContext("2d");r.imageSmoothingEnabled=!1;const c=a/2,s=e*.78,f=e*.33;return r.translate(c,c),r.scale(n,n),r.beginPath(),r.arc(0,0,e,0,2*Math.PI),r.fillStyle="#FFFFFF",r.fill(),r.beginPath(),r.arc(0,0,s,0,2*Math.PI),r.fillStyle=o,r.fill(),r.beginPath(),r.arc(0,0,f,0,2*Math.PI),r.fillStyle="#FFFFFF",r.fill(),t}function xe({id:e,width:n,height:o,color:a,scale:t}){const r=ie*t,c=n/2*t,s=o*t,f=me,d=.01,w=s*f,b=s,R=pe*t,E=b+r+w/2+R*2,m=c*2+w+r+R*2,x=ge(E,m,t);ne.set(x,Ue(n,o)),x.setAttribute("id",e);const l=x.getContext("2d"),_=E/2,T=m/2;l.save(),l.translate(_,T),l.rotate(-Math.PI/2),l.translate(-_,-T);const p=_,I=T-b/2+c,y=I+w;return l.shadowColor="rgba(16, 24, 40, 0.2)",l.shadowBlur=R/2,l.beginPath(),l.arc(p,I,c,Math.PI,0,!1),l.bezierCurveTo(p+c,I+s*.3,p+d*c,y,p,y),l.bezierCurveTo(p-d*c,y,p-c,I+s*.3,p-c,I),l.closePath(),l.fillStyle=a,l.fill(),l.strokeStyle="#FFFFFF",l.lineWidth=r,l.stroke(),l.restore(),x}function ae(e,n){return he(e,n)}function le(e){return`${e}_finery`}function Me({updateQueue:e,vehicle:n,vehicleFinery:o,x:a,y:t,scale:r,angle:c}){const s=n.source;if(n.bounds=B(a,t,...Q(s),r,c),n.hidden=!1,o){const{size:f,rotation:d,elevation:w}=o.bounds;o.bounds=new be({x:a,y:t},f,d,w),o.hidden=!1,e.add(()=>z(o,n))}else e.add(()=>z(n))}function ee(e,n,o){return{x:e.x+(n.x-e.x)*o,y:e.y+(n.y-e.y)*o}}function Se(e,n){let o=1/0,a={index:0,t:0};for(let t=0;t<n.length-1;t++){const r=n[t],c=n[t+1],s=c.x-r.x,f=c.y-r.y,d=s*s+f*f,w=d?((e.x-r.x)*s+(e.y-r.y)*f)/d:0,b=Math.max(0,Math.min(1,w)),R=ee(r,c,b),E=ae(e,R);E<o&&(o=E,a={index:t,t:b})}return a}function Be(e,n,o){const a=ae(e,n),t=Math.max(2,Math.ceil(a/o)+1),r=[];for(let c=0;c<t;c++){const s=c/(t-1),f=ee(e,n,s);r.push(f)}return r}function Qe(e,n,o){if(!o||!o.length)return Be(e,n,10);const a=Se(e,o),t=Se(n,o),r=[],c=s=>r.push(s);a.index+1<o.length?c(ee(o[a.index],o[a.index+1],a.t)):c(o[a.index]);for(let s=a.index+1;s<=t.index&&s<o.length;s++)c(o[s]);return t.index+1<o.length?c(ee(o[t.index],o[t.index+1],t.t)):c(o[t.index]),r}function Xe(e,n,o,a){if(e.length<2)return()=>{};let t=null,r;const c=[];let s=0;for(let d=0;d<e.length-1;d++){const w=he(e[d],e[d+1]);c.push(w),s+=w}const f=d=>{t||(t=d);const w=d-t,b=Math.min(w/n,1),R=b*s;let E=0,m=0;for(;m<c.length&&E+c[m]<R;)E+=c[m],m++;m>=c.length&&(m=c.length-1);const x=e[m],l=e[Math.min(m+1,e.length-1)],_=c[m]||0,T=_===0?0:(R-E)/_,p=x.x+(l.x-x.x)*T,I=x.y+(l.y-x.y)*T,y=fe(x,l);o({x:p,y:I,angle:y}),b<1?r=requestAnimationFrame(f):a&&a()};return r=requestAnimationFrame(f),()=>{r&&cancelAnimationFrame(r)}}function ue(e){return`${e.x},${e.y}`}const ne=new WeakMap;
|
|
@@ -9,5 +9,13 @@ export declare function flipImageDef(imageDef: ImageDef, angle: number): boolean
|
|
|
9
9
|
* @returns The same def.
|
|
10
10
|
*/
|
|
11
11
|
export declare function attachCardinalSnap(imageDef: ImageDef): ImageDef;
|
|
12
|
+
/**
|
|
13
|
+
* Declares the camera-roll rule on a def that has to stay upright on screen: it turns to the plan's
|
|
14
|
+
* exact roll, where {@link attachCardinalSnap} follows it in quarter turns. So an unchanged roll is
|
|
15
|
+
* the only no-op.
|
|
16
|
+
* @param imageDef - The def to keep upright.
|
|
17
|
+
* @returns The same def.
|
|
18
|
+
*/
|
|
19
|
+
export declare function attachExactRoll(imageDef: ImageDef): ImageDef;
|
|
12
20
|
export declare function rotateImageDef(imageDef: ImageDef, angle: number): boolean;
|
|
13
21
|
//# sourceMappingURL=rotation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{flipAngle as h,getQuarterTurns as
|
|
1
|
+
import{flipAngle as h,getQuarterTurns as y,shouldFlip as f}from"../update-def";export function isInnerInsideOuter(n,o){if(!o)return!1;const t=Math.cos(o.rotation??0),s=Math.sin(o.rotation??0),r=o.size.x/2,c=o.size.y/2;return l(n,n.rotation+Math.PI/2).every(a=>{const i=a.x-o.center.x,u=a.y-o.center.y,e=i*t+u*s,x=u*t-i*s;return Math.abs(e)<=r&&Math.abs(x)<=c})}function l(n,o=n.rotation){const t=n.size.x/2,s=n.size.y/2,r=Math.sin(o),c=Math.cos(o),a=n.center.x,i=n.center.y;return[{x:-t,y:-s},{x:t,y:-s},{x:t,y:s},{x:-t,y:s}].map(e=>({x:a+e.x*c-e.y*r,y:i+e.x*r+e.y*c}))}export function flipImageDef(n,o){const t=n.bounds;return f(o,t.rotation)?(t.rotate(h(t.rotation)-t.rotation,t),!0):!1}export function attachCardinalSnap(n){return n.onRoll=({roll:o})=>rotateImageDef(n,o)?[n]:void 0,n}export function attachExactRoll(n){return n.onRoll=({roll:o})=>{const{bounds:t}=n;if(o!==t.rotation)return t.set(t.center.x,t.center.y,t.size.x,t.size.y,o,t.elevation),[n]},n}export function rotateImageDef(n,o){const t=n.bounds,s=y(o,t.rotation);return s===0?!1:(t.rotate(s*Math.PI/2,t),!0)}
|
|
@@ -52,7 +52,7 @@ export default class RouteStore {
|
|
|
52
52
|
selectMarker(id: string, focus: boolean): Promise<void>;
|
|
53
53
|
get selectedMarkers(): Marker[];
|
|
54
54
|
get layers(): Layer[];
|
|
55
|
-
clickRoute(from: Booth, to: Booth): void;
|
|
55
|
+
clickRoute(from: Booth | null, to: Booth): void;
|
|
56
56
|
selectCurrentPosition(point: CurrentPosition | null, focus?: boolean, icon?: number): void;
|
|
57
57
|
findLocation(): void;
|
|
58
58
|
/** The dot, plus — when it lies outside the drawing — enough of the nearest map edge for context. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expofp/floorplan",
|
|
3
|
-
"version": "3.45.
|
|
3
|
+
"version": "3.45.13",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/expofp/efp-app.git",
|
|
@@ -69,15 +69,15 @@
|
|
|
69
69
|
"tslib": "^2.3.0",
|
|
70
70
|
"uuid": "^9.0.1",
|
|
71
71
|
"zod": "4.4.3",
|
|
72
|
-
"@expofp/config": "3.45.
|
|
73
|
-
"@expofp/debug": "3.45.
|
|
74
|
-
"@expofp/geometry": "3.45.
|
|
75
|
-
"@expofp/renderer": "3.45.
|
|
76
|
-
"@expofp/resolve": "3.45.
|
|
77
|
-
"@expofp/schema": "3.45.
|
|
78
|
-
"@expofp/ui": "3.45.
|
|
79
|
-
"@expofp/utils": "3.45.
|
|
80
|
-
"@expofp/wayfinding": "3.45.
|
|
72
|
+
"@expofp/config": "3.45.13",
|
|
73
|
+
"@expofp/debug": "3.45.13",
|
|
74
|
+
"@expofp/geometry": "3.45.13",
|
|
75
|
+
"@expofp/renderer": "3.45.13",
|
|
76
|
+
"@expofp/resolve": "3.45.13",
|
|
77
|
+
"@expofp/schema": "3.45.13",
|
|
78
|
+
"@expofp/ui": "3.45.13",
|
|
79
|
+
"@expofp/utils": "3.45.13",
|
|
80
|
+
"@expofp/wayfinding": "3.45.13"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@babel/plugin-proposal-decorators": "^8.0.2",
|
|
@@ -93,6 +93,7 @@
|
|
|
93
93
|
"@types/lz-string": "1.3.32",
|
|
94
94
|
"@types/react": "^19.2.17",
|
|
95
95
|
"@types/react-dom": "^19.2.3",
|
|
96
|
+
"@types/react-transition-group": "^4.4.12",
|
|
96
97
|
"@vitejs/plugin-react": "^6.0.4",
|
|
97
98
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
98
99
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|