@expofp/floorplan 3.25.2 → 3.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/browser/{Button-DZ5RJVoX.js → Button-e8P-AcfW.js} +6 -6
  2. package/dist/browser/{CookieConsent-CNE-7zNI.js → CookieConsent-DT6PZdD-.js} +8 -8
  3. package/dist/browser/{Debug-TDQ_xzea.js → Debug-Btnxv9GC.js} +8 -8
  4. package/dist/browser/DebugTools-CH_HoQal.js +1922 -0
  5. package/dist/browser/{Demo-A0X5mRqG.js → Demo-DZoFFss-.js} +10 -10
  6. package/dist/browser/{Free-BjYK0xDM.js → Free-DiFQkGSU.js} +10 -10
  7. package/dist/browser/{GalleryContainer-BsQuHOrj.js → GalleryContainer-aJ6EZ5I3.js} +11 -11
  8. package/dist/browser/{GpsLoader-DoutzmU_.js → GpsLoader-Bu9mBOam.js} +34 -34
  9. package/dist/browser/KioskStore-DUC4jNn0.js +241 -0
  10. package/dist/browser/{MaplibreAdapter-W1ZdQQ00.js → MaplibreAdapter-DIlDXt73.js} +2067 -2152
  11. package/dist/browser/{ModalContainer-BfZm0B_L.js → ModalContainer-CVRxdpt2.js} +11 -11
  12. package/dist/browser/{PermissionNotice-Cm6qrOC_.js → PermissionNotice-B5X5RQja.js} +7 -7
  13. package/dist/browser/SetKioskMode-BbDnU98F.js +48 -0
  14. package/dist/browser/{ShowKiosk-B0cj0p6h.js → ShowKiosk-B7HfONvN.js} +11 -11
  15. package/dist/browser/{ViewerMenuPanel-FFmV-n9m.js → ViewerMenuPanel-CT6kvVUw.js} +17 -17
  16. package/dist/browser/{add-debug-secret-listener-BOW3NQe7.js → add-debug-secret-listener-Dvv-Pg0-.js} +1 -1
  17. package/dist/browser/{adopt-global-settings-DNTNdr3z.js → adopt-global-settings-CXzCKJtp.js} +10 -10
  18. package/dist/browser/{boolean-editor-Bx4HLLyu.js → boolean-editor-CHMR9ZwP.js} +10 -10
  19. package/dist/browser/{bootIntercom-C_8HLvxg.js → bootIntercom-DQcGuly8.js} +3 -3
  20. package/dist/browser/bundle.json +77 -65
  21. package/dist/browser/camera-events-BkrzcISl.js +18 -0
  22. package/dist/browser/{classnames-DovQg6we.js → classnames-BYuGpzao.js} +2 -2
  23. package/dist/browser/{client-CadlVOps.js → client-hxMr1frV.js} +793 -992
  24. package/dist/browser/{components-BK-czcTL.js → components-DiB2l4Q7.js} +1934 -1986
  25. package/dist/browser/debug-context-CfyAAxAt.js +24315 -0
  26. package/dist/browser/{debug-overlay-vFTynZrP.js → debug-overlay-PYUvPcx-.js} +11 -11
  27. package/dist/browser/{debug-ui-BgSppEQg.js → debug-ui-BXRAYxv6.js} +7 -7
  28. package/dist/browser/dimming-Dj-1kBgQ.js +1108 -0
  29. package/dist/browser/{dist-C1WQpGAq.js → dist-30RVEJTr.js} +7 -7
  30. package/dist/browser/{dist-CkAU9dsV.js → dist-DgGMS59X.js} +6 -6
  31. package/dist/browser/{dist-gIYlJ33F.js → dist-opCvrhNh.js} +3 -3
  32. package/dist/browser/{efp-debug-init-CGEJSmuk.js → efp-debug-init-CYfrcz9M.js} +4 -4
  33. package/dist/browser/{enum-editor-BZXgS3I-.js → enum-editor-BYO96W3-.js} +5 -5
  34. package/dist/browser/{es5-DoqUhz95.js → es5-Bpzk_wCi.js} +2 -2
  35. package/dist/browser/{event-not-found-Dl66nXH1.js → event-not-found-DEepFxEc.js} +1 -1
  36. package/dist/browser/{exports-CK5UTqgq.js → exports-Bo5VUoiX.js} +1 -1
  37. package/dist/browser/{favicon-BnTLQysW.js → favicon-Bf88cI9_.js} +1 -1
  38. package/dist/browser/{fetch-retry.umd-D_tGjwEb.js → fetch-retry.umd-D2BnNN8g.js} +2 -2
  39. package/dist/browser/{flex-BCrAgMxK.js → flex-B5cqWC1b.js} +6 -6
  40. package/dist/browser/{floorplan.loader-DXJR9eeS.js → floorplan.loader-D3lRYRJS.js} +10 -10
  41. package/dist/browser/{floorplan.ready-C0sdmceF.js → floorplan.ready-CsdDpbEv.js} +343 -307
  42. package/dist/browser/{fuse-C7evxCwi.js → fuse-CzalO4Mu.js} +2 -2
  43. package/dist/browser/{i18n-Cp32ZzDq.js → i18n-D1sb3MoT.js} +5 -5
  44. package/dist/browser/index.js +14 -14
  45. package/dist/browser/{index.module-CeDH7KeK.js → index.module-JxYvexTC.js} +4 -4
  46. package/dist/browser/{integrateKiosk-JZG1AZBF.js → integrateKiosk-e4HqZu2W.js} +5 -5
  47. package/dist/browser/{is-webview-Be9due3O.js → is-webview-ChPDTaTY.js} +1 -1
  48. package/dist/browser/{jsx-runtime-DwNSQYOA.js → jsx-runtime-Ca1Wj_4-.js} +2 -2
  49. package/dist/browser/{kiosk-record-BMwfA16j.js → kiosk-record-C2cafcoW.js} +1 -1
  50. package/dist/browser/{lib-DeQ47J_S.js → lib-DXqE6M9Z.js} +3 -3
  51. package/dist/browser/{loadImage-DVBOry5-.js → loadImage-8qYzT9NG.js} +4 -4
  52. package/dist/browser/{logDeviceInfo-uPn7yfGH.js → logDeviceInfo-CF95RwQH.js} +9 -9
  53. package/dist/browser/{mobx-DFFcUY2e.js → mobx-B8aGIDdz.js} +7 -7
  54. package/dist/browser/{optional-boolean-editor-DfcaW7-l.js → optional-boolean-editor-D02Q8KUS.js} +4 -4
  55. package/dist/browser/{optional-enum-editor-SEARu4hs.js → optional-enum-editor-RV_EKfNQ.js} +5 -5
  56. package/dist/browser/{optional-string-editor-COLkp8EA.js → optional-string-editor-D_t_aZG2.js} +5 -5
  57. package/dist/browser/{particles.min-DHvuM5ou.js → particles.min-CDyH_67D.js} +2 -2
  58. package/dist/browser/{react-BNCBBLDK.js → react-CDmIhEY6.js} +2 -2
  59. package/dist/browser/{react-dom-ql8ZgjdB.js → react-dom-PGvJwDoR.js} +3 -3
  60. package/dist/browser/{rolldown-runtime-D0mAPq9J.js → rolldown-runtime-CwqkRsWu.js} +1 -1
  61. package/dist/browser/scheduler-MBFOnOYr.js +212 -0
  62. package/dist/browser/{select-CwB0Zi7C.js → select-2x53pvd0.js} +11 -11
  63. package/dist/browser/{settings-MzAuoQZ6.js → settings-BCkl8gdb.js} +2 -2
  64. package/dist/browser/{settings-item-Ca6s5CDf.js → settings-item-DT6Vnw06.js} +7 -7
  65. package/dist/browser/store-Dej5FGrq.js +31205 -0
  66. package/dist/browser/{string-editor-BjOeNcgJ.js → string-editor-w9YDgRoR.js} +5 -5
  67. package/dist/browser/{text-field-6Ccfbuuo.js → text-field-ricOc0h0.js} +6 -6
  68. package/dist/browser/{theme-XlV0fBPc.js → theme-Ce7vpk9b.js} +9 -9
  69. package/dist/browser/{ui-BopruaHZ.js → ui-PDV2rEkU.js} +9 -9
  70. package/dist/browser/{useRenderTarget-CdH-VI6E.js → useRenderTarget-DroCs5kL.js} +5 -5
  71. package/dist/browser/viewport-Jwms2MJD.js +41 -0
  72. package/dist/esm/components/Booth/Booth.js +1 -1
  73. package/dist/esm/components/Event.js +1 -1
  74. package/dist/esm/components/Exhibitor.js +1 -1
  75. package/dist/esm/components/Kiosk/KioskStore.d.ts +5 -2
  76. package/dist/esm/components/Kiosk/KioskStore.js +1 -1
  77. package/dist/esm/components/Kiosk/SetKioskMode.d.ts +1 -2
  78. package/dist/esm/components/Kiosk/SetKioskMode.js +1 -1
  79. package/dist/esm/components/Layout.js +1 -1
  80. package/dist/esm/components/Map/Map.d.ts +1 -1
  81. package/dist/esm/components/Map/Map.js +1 -1
  82. package/dist/esm/components/Map/MapCamera.d.ts +17 -0
  83. package/dist/esm/components/Map/MapCamera.js +1 -0
  84. package/dist/esm/components/Map/MapViewport.d.ts +12 -0
  85. package/dist/esm/components/Map/MapViewport.js +1 -0
  86. package/dist/esm/components/Map/booth-by-xy.d.ts +13 -0
  87. package/dist/esm/components/Map/booth-by-xy.js +1 -1
  88. package/dist/esm/components/Map/camera-events.d.ts +16 -0
  89. package/dist/esm/components/Map/camera-events.js +1 -0
  90. package/dist/esm/components/Map/camera.d.ts +48 -0
  91. package/dist/esm/components/Map/camera.js +1 -0
  92. package/dist/esm/components/Map/drawing/config/TextFitter.d.ts +1 -1
  93. package/dist/esm/components/Map/drawing/config/config-all.d.ts +1 -2
  94. package/dist/esm/components/Map/drawing/config/config-all.js +1 -1
  95. package/dist/esm/components/Map/drawing/config/config-bg.d.ts +1 -2
  96. package/dist/esm/components/Map/drawing/config/config-bg.js +1 -1
  97. package/dist/esm/components/Map/drawing/config/config-booth-badge.d.ts +70 -3
  98. package/dist/esm/components/Map/drawing/config/config-booth-badge.js +1 -1
  99. package/dist/esm/components/Map/drawing/config/config-booth-bg.d.ts +3 -6
  100. package/dist/esm/components/Map/drawing/config/config-booth-bg.js +1 -1
  101. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.d.ts +11 -7
  102. package/dist/esm/components/Map/drawing/config/config-booth-bookmark.js +1 -1
  103. package/dist/esm/components/Map/drawing/config/config-booth-border.d.ts +2 -3
  104. package/dist/esm/components/Map/drawing/config/config-booth-border.js +1 -1
  105. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +16 -3
  106. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +2 -2
  107. package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +18 -4
  108. package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
  109. package/dist/esm/components/Map/drawing/config/config-booths.d.ts +1 -2
  110. package/dist/esm/components/Map/drawing/config/config-booths.js +1 -1
  111. package/dist/esm/components/Map/drawing/config/config-load-layer.d.ts +1 -2
  112. package/dist/esm/components/Map/drawing/config/config-load-layer.js +1 -1
  113. package/dist/esm/components/Map/drawing/config/config-markers.d.ts +23 -2
  114. package/dist/esm/components/Map/drawing/config/config-markers.js +1 -1
  115. package/dist/esm/components/Map/drawing/config/layer-images.d.ts +35 -0
  116. package/dist/esm/components/Map/drawing/config/layer-images.js +1 -0
  117. package/dist/esm/components/Map/drawing/config/loadBoothsImages.d.ts +38 -3
  118. package/dist/esm/components/Map/drawing/config/loadBoothsImages.js +1 -1
  119. package/dist/esm/components/Map/pointer.d.ts +73 -0
  120. package/dist/esm/components/Map/pointer.js +1 -0
  121. package/dist/esm/components/Map/scene.d.ts +20 -0
  122. package/dist/esm/components/Map/scene.js +1 -0
  123. package/dist/esm/components/Map/traffic/trafficLayers.d.ts +2 -7
  124. package/dist/esm/components/Map/traffic/trafficLayers.js +1 -1
  125. package/dist/esm/components/Map/traffic/useBuildRoute.d.ts +4 -3
  126. package/dist/esm/components/Map/traffic/useBuildRoute.js +6 -6
  127. package/dist/esm/components/Map/traffic/useManageTraffic.d.ts +4 -3
  128. package/dist/esm/components/Map/traffic/useManageTraffic.js +1 -1
  129. package/dist/esm/components/Map/viewport.d.ts +63 -0
  130. package/dist/esm/components/Map/viewport.js +1 -0
  131. package/dist/esm/components/Maplibre/MaplibreAdapter.d.ts +6 -2
  132. package/dist/esm/components/Maplibre/MaplibreAdapter.js +1 -1
  133. package/dist/esm/components/Maplibre/MaplibreWrapper.d.ts +30 -8
  134. package/dist/esm/components/Maplibre/MaplibreWrapper.js +1 -1
  135. package/dist/esm/components/Maplibre/useDimming.d.ts +2 -2
  136. package/dist/esm/components/Maplibre/useDimming.js +1 -1
  137. package/dist/esm/components/Maplibre/useKioskIdleEvents.d.ts +5 -6
  138. package/dist/esm/components/Maplibre/useLayerVisibilitySync.d.ts +2 -2
  139. package/dist/esm/components/Maplibre/useLayerVisibilitySync.js +1 -1
  140. package/dist/esm/components/Maplibre/usePoiMarkers.d.ts +1 -2
  141. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.d.ts +8 -5
  142. package/dist/esm/components/Maplibre/useWayfindingAndMarkers.js +1 -1
  143. package/dist/esm/components/Maplibre/utils/layer-defs.d.ts +8 -3
  144. package/dist/esm/components/Maplibre/utils/layer-defs.js +1 -1
  145. package/dist/esm/components/Maplibre/utils/poi-marker-hit-test.d.ts +3 -3
  146. package/dist/esm/components/Speaker.js +1 -1
  147. package/dist/esm/components/Ws.js +1 -1
  148. package/dist/esm/engine/defs.d.ts +30 -0
  149. package/dist/esm/engine/defs.js +3 -0
  150. package/dist/esm/engine/fonts.js +1 -0
  151. package/dist/esm/engine/update-def.d.ts +52 -0
  152. package/dist/esm/engine/update-def.js +1 -0
  153. package/dist/esm/engine/utils/rotation.d.ts +6 -0
  154. package/dist/esm/engine/utils/rotation.js +1 -0
  155. package/dist/esm/floorplan.ready.d.ts +2 -0
  156. package/dist/esm/floorplan.ready.js +1 -1
  157. package/dist/esm/services/url-sync.js +1 -1
  158. package/dist/esm/store/BoothStore.d.ts +11 -0
  159. package/dist/esm/store/HeatmapStore.d.ts +9 -0
  160. package/dist/esm/store/LayerStore.d.ts +2 -0
  161. package/dist/esm/store/LayerStore.js +1 -1
  162. package/dist/esm/store/RootStore.d.ts +0 -2
  163. package/dist/esm/store/RootStore.js +1 -1
  164. package/dist/esm/store/RouteStore.js +1 -1
  165. package/dist/esm/store/ShortcutRegistry.d.ts +14 -0
  166. package/dist/esm/store/ShortcutRegistry.js +1 -1
  167. package/dist/esm/store/UIState.js +1 -1
  168. package/dist/esm/store/details-events.d.ts +11 -0
  169. package/dist/esm/store/details-events.js +1 -0
  170. package/dist/esm/store/init/init-booths.js +1 -1
  171. package/dist/esm/store/providers/SessionsSubButtonProvider.d.ts +18 -0
  172. package/dist/esm/store/providers/SessionsSubButtonProvider.js +1 -1
  173. package/dist/esm/store/search-buttons/SearchButtonsActions.d.ts +15 -2
  174. package/dist/esm/store/search-buttons/SearchButtonsActions.js +1 -1
  175. package/dist/esm/store/search-buttons/SearchButtonsFactory.js +1 -1
  176. package/dist/esm/store/search-buttons/SearchButtonsStore.d.ts +3 -3
  177. package/dist/esm/store/search-buttons/SearchButtonsStore.js +1 -1
  178. package/dist/esm/tools/gtag.d.ts +1 -0
  179. package/dist/esm/tools/gtag.js +1 -1
  180. package/dist/esm/tools/telemetry.d.ts +2 -0
  181. package/dist/esm/tools/telemetry.js +1 -1
  182. package/dist/esm/tools/track-event.d.ts +26 -2
  183. package/dist/esm/tools/track-event.js +1 -1
  184. package/dist/esm/utils/dimming.d.ts +13 -2
  185. package/dist/esm/utils/dimming.js +1 -1
  186. package/dist/esm/utils/mobx.d.ts +2 -2
  187. package/dist/esm/utils/mobx.js +1 -1
  188. package/dist/esm/utils/scene-bounds.d.ts +1 -1
  189. package/dist/esm/utils/scene-bounds.js +1 -1
  190. package/dist/esm/wayfinding/adapters/canvasIconProvider.js +1 -1
  191. package/dist/esm/wayfinding/createWayfinding.d.ts +19 -2
  192. package/dist/esm/wayfinding/createWayfinding.js +1 -1
  193. package/package.json +11 -10
  194. package/dist/browser/KioskStore-CRN9B487.js +0 -290
  195. package/dist/browser/SetKioskMode-BlmUmBkH.js +0 -57
  196. package/dist/browser/booth-by-xy-DgXTlV8u.js +0 -1130
  197. package/dist/browser/main-WTEdqNkt.js +0 -289
  198. package/dist/browser/store-B_c3r86U.js +0 -41370
  199. package/dist/esm/components/Map/pointInConvexQuad.d.ts +0 -3
  200. package/dist/esm/components/Map/pointInConvexQuad.js +0 -1
  201. package/dist/esm/components/Map/visibleArea.d.ts +0 -16
  202. package/dist/esm/components/Map/visibleArea.js +0 -1
  203. package/dist/esm/components/Maplibre/useRendererEvents.d.ts +0 -9
  204. package/dist/esm/components/Maplibre/useRendererEvents.js +0 -1
  205. package/dist/esm/components/Maplibre/utils/update-pump.d.ts +0 -18
  206. package/dist/esm/components/Maplibre/utils/update-pump.js +0 -1
  207. package/dist/esm/renderer/HandlerRegistry.d.ts +0 -18
  208. package/dist/esm/renderer/HandlerRegistry.js +0 -1
  209. package/dist/esm/renderer/RendererService.d.ts +0 -44
  210. package/dist/esm/renderer/RendererService.js +0 -1
  211. package/dist/esm/renderer/engine-core/defs.d.ts +0 -40
  212. package/dist/esm/renderer/engine-core/defs.js +0 -3
  213. package/dist/esm/renderer/engine-core/fonts.js +0 -1
  214. package/dist/esm/renderer/engine-core/settings.d.ts +0 -4
  215. package/dist/esm/renderer/engine-core/settings.js +0 -1
  216. package/dist/esm/renderer/engine-core/types.d.ts +0 -50
  217. package/dist/esm/renderer/engine-core/types.js +0 -1
  218. package/dist/esm/renderer/engine-core/update-def.d.ts +0 -12
  219. package/dist/esm/renderer/engine-core/update-def.js +0 -1
  220. package/dist/esm/renderer/engine-core/utils/rotation.d.ts +0 -17
  221. package/dist/esm/renderer/engine-core/utils/rotation.js +0 -1
  222. package/dist/esm/renderer/index.d.ts +0 -19
  223. package/dist/esm/renderer/index.js +0 -1
  224. /package/dist/esm/{renderer/engine-core → engine}/canvases.d.ts +0 -0
  225. /package/dist/esm/{renderer/engine-core → engine}/canvases.js +0 -0
  226. /package/dist/esm/{renderer/engine-core → engine}/fonts.d.ts +0 -0
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.2" };
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "0a67f4c1-0ef6-428f-92c6-94c57178bf21", e._sentryDebugIdIdentifier = "sentry-dbid-0a67f4c1-0ef6-428f-92c6-94c57178bf21");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "edf52ee9-f3a6-424f-a5ff-f0c8342333ab", e._sentryDebugIdIdentifier = "sentry-dbid-edf52ee9-f3a6-424f-a5ff-f0c8342333ab");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./jsx-runtime-DwNSQYOA.js";
10
- import { t } from "./settings-item-Ca6s5CDf.js";
11
- import { t as n } from "./text-field-6Ccfbuuo.js";
9
+ import { t as e } from "./jsx-runtime-Ca1Wj_4-.js";
10
+ import { t } from "./settings-item-DT6Vnw06.js";
11
+ import { t as n } from "./text-field-ricOc0h0.js";
12
12
  //#region ../debug/src/lib/ui/string-editor.tsx
13
13
  var r = e(), i = (e) => {
14
14
  var i;
@@ -1,15 +1,15 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.2" };
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "9c5a0877-c176-4e2d-b51c-123d50ab2b3c", e._sentryDebugIdIdentifier = "sentry-dbid-9c5a0877-c176-4e2d-b51c-123d50ab2b3c");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "b57a1337-f6ba-488a-8e6f-60f9358b45a2", e._sentryDebugIdIdentifier = "sentry-dbid-b57a1337-f6ba-488a-8e6f-60f9358b45a2");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-D0mAPq9J.js";
10
- import { t } from "./react-BNCBBLDK.js";
11
- import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-BCrAgMxK.js";
12
- import { t as l } from "./classnames-DovQg6we.js";
9
+ import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
10
+ import { t } from "./react-CDmIhEY6.js";
11
+ import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-B5cqWC1b.js";
12
+ import { t as l } from "./classnames-BYuGpzao.js";
13
13
  //#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react@19.2._5ea800d4e947acedb1fa1275f1697b17/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
14
14
  var u = /* @__PURE__ */ e(t()), d = /* @__PURE__ */ e(l()), f = {
15
15
  size: {
@@ -1,18 +1,18 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.2" };
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f658045a-5be7-4ea4-a4b2-ddea9ab9caf3", e._sentryDebugIdIdentifier = "sentry-dbid-f658045a-5be7-4ea4-a4b2-ddea9ab9caf3");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f5429b84-6f5b-4b20-898f-e5345902ef44", e._sentryDebugIdIdentifier = "sentry-dbid-f5429b84-6f5b-4b20-898f-e5345902ef44");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-D0mAPq9J.js";
10
- import { t } from "./react-BNCBBLDK.js";
11
- import { t as n } from "./jsx-runtime-DwNSQYOA.js";
12
- import { t as r } from "./react-dom-ql8ZgjdB.js";
13
- import { C as i, E as a, O as o, T as s, _ as c, o as l, v as u, w as d } from "./flex-BCrAgMxK.js";
14
- import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-C1WQpGAq.js";
15
- import { t as y } from "./classnames-DovQg6we.js";
9
+ import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
10
+ import { t } from "./react-CDmIhEY6.js";
11
+ import { t as n } from "./jsx-runtime-Ca1Wj_4-.js";
12
+ import { t as r } from "./react-dom-PGvJwDoR.js";
13
+ import { C as i, E as a, O as o, T as s, _ as c, o as l, v as u, w as d } from "./flex-B5cqWC1b.js";
14
+ import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-30RVEJTr.js";
15
+ import { t as y } from "./classnames-BYuGpzao.js";
16
16
  //#region ../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.17__@ty_cffccd7838985066e8e1d993b5cb6017/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
17
17
  var b = /* @__PURE__ */ e(r(), 1), x = /* @__PURE__ */ e(t(), 1), S = n(), C = Object.freeze({
18
18
  position: "absolute",
@@ -1,17 +1,17 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.2" };
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "3c34ab8b-5d65-4c06-8595-6ed371acabc5", e._sentryDebugIdIdentifier = "sentry-dbid-3c34ab8b-5d65-4c06-8595-6ed371acabc5");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "cbb5c555-77ff-4375-8420-80c8ae476dcf", e._sentryDebugIdIdentifier = "sentry-dbid-cbb5c555-77ff-4375-8420-80c8ae476dcf");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-D0mAPq9J.js";
10
- import { a as t, i as n, s as r } from "./efp-debug-init-CGEJSmuk.js";
11
- import { a as i, i as a } from "./adopt-global-settings-DNTNdr3z.js";
12
- import { t as o } from "./jsx-runtime-DwNSQYOA.js";
13
- import "./settings-MzAuoQZ6.js";
14
- import { t as s } from "./add-debug-secret-listener-BOW3NQe7.js";
9
+ import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-CYfrcz9M.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-CXzCKJtp.js";
12
+ import { t as o } from "./jsx-runtime-Ca1Wj_4-.js";
13
+ import "./settings-BCkl8gdb.js";
14
+ import { t as s } from "./add-debug-secret-listener-Dvv-Pg0-.js";
15
15
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
16
16
  var c = /* @__PURE__ */ e(r(), 1), l = o(), u = !1;
17
17
  function d() {
@@ -26,7 +26,7 @@ function d() {
26
26
  }
27
27
  });
28
28
  let o = async (t) => {
29
- let { DebugUi: n } = await import("./debug-ui-BgSppEQg.js"), { createRoot: i } = await import("./client-CadlVOps.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-BXRAYxv6.js"), { createRoot: i } = await import("./client-hxMr1frV.js").then((t) => /* @__PURE__ */ e(t.t(), 1)), a = document.createElement("div");
30
30
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, l.jsx)(n, {
31
31
  useDebugButtonState: r.useState,
32
32
  open: t
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.2" };
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
5
  var t = new e.Error().stack;
6
- t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7407e64e-4c4e-4bfb-b2ef-80063ad22998", e._sentryDebugIdIdentifier = "sentry-dbid-7407e64e-4c4e-4bfb-b2ef-80063ad22998");
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "39485aff-c926-4ecb-9ba3-8a127a388075", e._sentryDebugIdIdentifier = "sentry-dbid-39485aff-c926-4ecb-9ba3-8a127a388075");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-D0mAPq9J.js";
10
- import { t } from "./react-BNCBBLDK.js";
11
- import { l as n } from "./store-B_c3r86U.js";
9
+ import { r as e } from "./rolldown-runtime-CwqkRsWu.js";
10
+ import { t } from "./react-CDmIhEY6.js";
11
+ import { l as n } from "./store-Dej5FGrq.js";
12
12
  //#region ../ui/src/shared/activeElement.ts
13
13
  var r = (e) => !!e && "activeElement" in e;
14
14
  function i(e) {
@@ -0,0 +1,41 @@
1
+ (function() {
2
+ try {
3
+ var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
+ e.SENTRY_RELEASE = { id: "3.27.0" };
5
+ var t = new e.Error().stack;
6
+ t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "df793f8e-2c61-4fcc-bf8c-e603b2d7b174", e._sentryDebugIdIdentifier = "sentry-dbid-df793f8e-2c61-4fcc-bf8c-e603b2d7b174");
7
+ } catch {}
8
+ })();
9
+ import { c as e, vt as t } from "./store-Dej5FGrq.js";
10
+ //#region src/components/Map/viewport.ts
11
+ function n(e) {
12
+ return {
13
+ canvasToPlan: (t) => e.current.api.canvasToPlan(t),
14
+ planToCanvas: (t) => e.current.api.planToCanvas(t),
15
+ isVisible: (t) => e.current.api.isVisible(t)
16
+ };
17
+ }
18
+ function r(e) {
19
+ a = e;
20
+ }
21
+ function i() {
22
+ return a;
23
+ }
24
+ var a;
25
+ function o(n) {
26
+ let r = i();
27
+ if (!n || !r) throw Error("Canvas not ready");
28
+ let a = r.canvasToPlan({
29
+ x: n.clientWidth / 2,
30
+ y: n.clientHeight / 2
31
+ });
32
+ if (!a) throw Error("The camera is not looking at the plan");
33
+ let o = e.layerStore.visible.find((e) => e.mode === t.TurnedOff || e.mode === t.TurnedOn);
34
+ return {
35
+ x: a.x,
36
+ y: a.y,
37
+ z: (o == null ? void 0 : o.name) || null
38
+ };
39
+ }
40
+ //#endregion
41
+ export { r as i, n, i as r, o as t };
@@ -1 +1 @@
1
- import{Fragment as b,jsx as o,jsxs as u}from"react/jsx-runtime";import"./Booth.scss";import{observer as p,useLocalStore as _}from"mobx-react-lite";import{useEffect as y,useRef as x}from"react";import l from"../../data";import c,{uiState as i}from"../../store";import{RegularBooth as N,SpecialBooth as S}from"../../store/BoothStore";import C from"../../tools/settings";import{t as E}from"../../utils/i18n";import T from"../../utils/useHeatmapOverlay";import{LevelBadge as I}from"../";import L from"../EntityItemContainer";import j from"../Schedule";import H from"../SidebarActionsContainer";import{BoothOnHold as A}from"./BoothOnHold";import{BoothReserved as M}from"./BoothReserved";import{BoothWithoutExhibitor as k}from"./BoothWithoutExhibitor";const U=p(()=>{const d=x(),e=_(()=>({get booth(){return i.selectedBooth},get regular(){return this.booth instanceof N?this.booth:null},get special(){return this.booth instanceof S?this.booth:null},get showReserve(){return!i.kiosk&&this.regular&&(this.regular.price==="0"&&!!this.regular.buyUrl||!!this.regular.reserveUrl)},get showBuy(){return!i.kiosk&&this.regular&&this.regular.buyUrl&&this.regular.price&&this.regular.price!=="0"},get title(){return this.booth.fullName},get reserveTitle(){return l.reserveButtonTerm||E("Reserve")},get descriptionCombined(){return this.booth.description||l.reserveInstructions||""}}));y(()=>{if(e.booth.schedule?.length){const t=new Date,r=[...e.booth.schedule].sort((n,s)=>new Date(n.startDate).getTime()-new Date(s.startDate).getTime());if(r.some(n=>(n.endDate?new Date(n.endDate):new Date(n.startDate))<t)){const n=r.find(s=>(s.endDate?new Date(s.endDate):new Date(s.startDate))>t);if(n&&d.current){const s=d.current.querySelector(`[data-event-id="${n.id}"]`);s&&setTimeout(()=>{const f=d.current.getBoundingClientRect(),R=s.getBoundingClientRect().top-f.top-20;d.current.scrollTop=R},100)}}}},[e.booth.schedule]);function v(t){const r=parseInt(t);c.clickExhibitor(c.exhibitorStore.exhibitors.find(g=>g.id===r))}function B(t){c.selectEventItem(t,!0)}function D(){e.booth.exhibitors.length===0&&(e.booth.bookmarkedDirectly=!e.booth.bookmarkedDirectly)}const F=o("div",{className:"booth__bar",children:e.title});let a=null;const h=e.booth.layer?.description,{heatmapBar:w}=T(e.booth),m=e.booth.exhibitors.sort((t,r)=>+!!r.featured-+!!t.featured).map(t=>o(L,{onClick:v,id:t.id.toString(),featured:t.featured,kind:"exhibitor",image:t.logo?.url,title:t.name,bookmarked:t.bookmarked,visited:t.visited,additionalInfo:t.booths.map(r=>({type:"location",locationName:r.name,level:h||r.layer?.name}))},t.id.toString()));if(l.isRebooking)a=o(b,{children:m});else if(e.regular){const t=e.regular;t.onHold?a=o(A,{booth:t,description:"",showBuy:!1,showReserve:!1,isRebooking:!1,level:h}):t.reserved?a=o(M,{}):t.exhibitors.length===0?a=o(k,{booth:t,description:e.descriptionCombined,showBuy:!i.previewMode&&e.showBuy,showReserve:!i.previewMode&&e.showReserve,isRebooking:!1,level:h}):a=o(b,{children:m})}else a=u("div",{className:"booth__content -spec",children:[o(I,{level:h}),o("div",{className:"booth__desc",dangerouslySetInnerHTML:{__html:e.special.description}}),o(b,{children:m})]});return u("div",{className:"booth",children:[u("div",{className:"booth__header",children:[u("div",{className:"booth__header-name",children:[o("div",{className:"booth__header-icon",children:o("i",{className:"icon-booth-solid"})}),o("span",{dir:"auto",children:e.title}),w]}),o("button",{type:"button",onClick:()=>c.searchStore.handleBackAction(),className:"booth__header-close",children:o("i",{className:"icon-close"})})]}),!l.isRebooking&&C.wayfinding&&!i.isGuidedToursActive&&o("div",{className:"exhibitor__directions",style:{paddingLeft:15,paddingRight:15},children:o(H,{showBookmark:!i.disableBookmarked&&!l.hideBookmarks&&!i.kiosk&&e.booth.exhibitors.length===0,showShare:!1,inBookmark:e.booth.exhibitors.length===0?e.booth.bookmarkedDirectly:!1,onClickBookmark:D,onClickDirections:()=>{c.routeStore.clickRoute(null,e.booth)}})}),a,l.isRebooking&&e.regular&&e.regular.exhibitors.length===0&&o(k,{showBuy:!1,description:e.descriptionCombined,showReserve:!1,booth:e.regular,isRebooking:l.isRebooking,level:h}),!!e.booth.schedule?.length&&o(j,{isSessions:!0,showBooths:!0,events:[...e.booth.schedule].sort((t,r)=>new Date(t.startDate).getTime()-new Date(r.startDate).getTime()),onEventClick:B})]})});export default p(()=>!i.menu&&i.selectedBooth?o(U,{}):null);
1
+ import{Fragment as b,jsx as t,jsxs as m}from"react/jsx-runtime";import"./Booth.scss";import{observer as p,useLocalStore as y}from"mobx-react-lite";import{useEffect as _,useRef as x}from"react";import l from"../../data";import c,{uiState as i}from"../../store";import{RegularBooth as N,SpecialBooth as E}from"../../store/BoothStore";import S from"../../tools/settings";import C from"../../tools/track-event";import{t as T}from"../../utils/i18n";import I from"../../utils/useHeatmapOverlay";import{LevelBadge as L}from"../";import j from"../EntityItemContainer";import H from"../Schedule";import A from"../SidebarActionsContainer";import{BoothOnHold as M}from"./BoothOnHold";import{BoothReserved as U}from"./BoothReserved";import{BoothWithoutExhibitor as k}from"./BoothWithoutExhibitor";const F=p(()=>{const d=x(),e=y(()=>({get booth(){return i.selectedBooth},get regular(){return this.booth instanceof N?this.booth:null},get special(){return this.booth instanceof E?this.booth:null},get showReserve(){return!i.kiosk&&this.regular&&(this.regular.price==="0"&&!!this.regular.buyUrl||!!this.regular.reserveUrl)},get showBuy(){return!i.kiosk&&this.regular&&this.regular.buyUrl&&this.regular.price&&this.regular.price!=="0"},get title(){return this.booth.fullName},get reserveTitle(){return l.reserveButtonTerm||T("Reserve")},get descriptionCombined(){return this.booth.description||l.reserveInstructions||""}}));_(()=>{if(e.booth.schedule?.length){const o=new Date,r=[...e.booth.schedule].sort((n,s)=>new Date(n.startDate).getTime()-new Date(s.startDate).getTime());if(r.some(n=>(n.endDate?new Date(n.endDate):new Date(n.startDate))<o)){const n=r.find(s=>(s.endDate?new Date(s.endDate):new Date(s.startDate))>o);if(n&&d.current){const s=d.current.querySelector(`[data-event-id="${n.id}"]`);s&&setTimeout(()=>{const f=d.current.getBoundingClientRect(),R=s.getBoundingClientRect().top-f.top-20;d.current.scrollTop=R},100)}}}},[e.booth.schedule]);function v(o){const r=parseInt(o);c.clickExhibitor(c.exhibitorStore.exhibitors.find(g=>g.id===r))}function B(o){c.selectEventItem(o,!0)}function D(){e.booth.exhibitors.length===0&&(e.booth.bookmarkedDirectly=!e.booth.bookmarkedDirectly,e.booth.bookmarkedDirectly&&C("bookmark",e.booth.name,"booth"))}const O=t("div",{className:"booth__bar",children:e.title});let a=null;const h=e.booth.layer?.description,{heatmapBar:w}=I(e.booth),u=e.booth.exhibitors.sort((o,r)=>+!!r.featured-+!!o.featured).map(o=>t(j,{onClick:v,id:o.id.toString(),featured:o.featured,kind:"exhibitor",image:o.logo?.url,title:o.name,bookmarked:o.bookmarked,visited:o.visited,additionalInfo:o.booths.map(r=>({type:"location",locationName:r.name,level:h||r.layer?.name}))},o.id.toString()));if(l.isRebooking)a=t(b,{children:u});else if(e.regular){const o=e.regular;o.onHold?a=t(M,{booth:o,description:"",showBuy:!1,showReserve:!1,isRebooking:!1,level:h}):o.reserved?a=t(U,{}):o.exhibitors.length===0?a=t(k,{booth:o,description:e.descriptionCombined,showBuy:!i.previewMode&&e.showBuy,showReserve:!i.previewMode&&e.showReserve,isRebooking:!1,level:h}):a=t(b,{children:u})}else a=m("div",{className:"booth__content -spec",children:[t(L,{level:h}),t("div",{className:"booth__desc",dangerouslySetInnerHTML:{__html:e.special.description}}),t(b,{children:u})]});return m("div",{className:"booth",children:[m("div",{className:"booth__header",children:[m("div",{className:"booth__header-name",children:[t("div",{className:"booth__header-icon",children:t("i",{className:"icon-booth-solid"})}),t("span",{dir:"auto",children:e.title}),w]}),t("button",{type:"button",onClick:()=>c.searchStore.handleBackAction(),className:"booth__header-close",children:t("i",{className:"icon-close"})})]}),!l.isRebooking&&S.wayfinding&&!i.isGuidedToursActive&&t("div",{className:"exhibitor__directions",style:{paddingLeft:15,paddingRight:15},children:t(A,{showBookmark:!i.disableBookmarked&&!l.hideBookmarks&&!i.kiosk&&e.booth.exhibitors.length===0,showShare:!1,inBookmark:e.booth.exhibitors.length===0?e.booth.bookmarkedDirectly:!1,onClickBookmark:D,onClickDirections:()=>{c.routeStore.clickRoute(null,e.booth)}})}),a,l.isRebooking&&e.regular&&e.regular.exhibitors.length===0&&t(k,{showBuy:!1,description:e.descriptionCombined,showReserve:!1,booth:e.regular,isRebooking:l.isRebooking,level:h}),!!e.booth.schedule?.length&&t(H,{isSessions:!0,showBooths:!0,events:[...e.booth.schedule].sort((o,r)=>new Date(o.startDate).getTime()-new Date(r.startDate).getTime()),onEventClick:B})]})});export default p(()=>!i.menu&&i.selectedBooth?t(F,{}):null);
@@ -1 +1 @@
1
- import{Fragment as I,jsx as e,jsxs as l}from"react/jsx-runtime";import"./Event.scss";import{Button as M}from"@expofp/ui";import c from"classnames";import g from"dateformat";import{observer as T,useLocalStore as x,useObserver as F}from"mobx-react-lite";import{useEffect as O,useRef as C,useState as y}from"react";import u from"../data";import a,{uiState as s}from"../store";import{GaEventActions as m,sendEventToGa as v}from"../tools/gtag";import H from"../tools/settings";import{useReaction as j}from"../utils/mobx";import A from"../utils/sanitizeHtml";import B from"./EventBadgeContainer";import V from"./ShowMoreButtonContainer";import G from"./SidebarActionsContainer";import{getDescription as L}from"./utils/getDescription";function R(){const n=C(null),o=x(()=>({collapsed:!0,updateOverlayContent:null,get event(){return s.selectedEventItem},get booth(){return this.event?.boothId?a.boothStore.booths.find(t=>t.id===this.event.boothId):null},get disableCollapse(){return(this.event?.description||"").length<800}})),[k,D]=y(!1),[h,_]=y(!1),f=C(null);O(()=>{(()=>{if(f.current){const r=f.current.offsetHeight;D(r>300)}})()},[]),j(()=>o.event,()=>{n.current&&n.current.parentElement&&(n.current.parentElement.scrollTop=0),o.collapsed=!0,_(!1)});function q(t,r){if(b(r),s.kiosk)return t.preventDefault()}function b(t){o.event&&v(t,o.event.name)}const N=t=>{const r=a.sessionsFilterStore.state.filters.use24hFormat.value,p=new Date(t);return g(p,r?"HH:MM":"h:MMtt")},w=t=>{const r=new Date(t);return g(r,"dddd, mmmm d, yyyy")};return F(()=>{const t=o.event;if(!t)return null;const r=l(I,{children:[e("div",{className:"efp-event__bar",children:e("span",{onClick:()=>a.toggleMapOverlay(),children:l("div",{className:"efp-event__bar-name",children:[e("div",{className:"efp-event__bar-icon",children:e("i",{className:"icon-event-solid"})}),l("span",{dir:"auto",children:[t.name,e(B,{event:t})]})]})})}),e("div",{className:"efp-event__bar-booth",onClick:()=>a.toggleMapOverlay(),children:u.boothTerm})]}),p=()=>{o.collapsed=!1,setTimeout(o.updateOverlayContent)};function J(i,d){return!i||!d||s.kiosk||s.previewMode?null:e("div",{className:"event-custom-button",children:e(M,{link:d,inline:!0,onClick:E=>{E.preventDefault(),b(m.ClickCustomButton),window.open(d,"_blank","noopener,noreferrer")},target:"_blank",children:i})})}const S=c({"efp-event":!0,[s.responsiveClass]:!0});return l("div",{className:S,children:[l("div",{className:"efp-event__header",children:[l("div",{className:"efp-event__header-name",children:[e("div",{className:"efp-event__header-icon",children:e("i",{className:"icon-event-solid"})}),l("span",{dir:"auto",children:[t.name,e(B,{event:t})]})]}),e("button",{type:"button",onClick:()=>a.searchStore.handleBackAction(),className:"efp-event__header-close",children:e("i",{className:"icon-close"})})]}),e("div",{className:"efp-event__buttons",children:!s.isGuidedToursActive&&e(G,{showBookmark:!s.disableBookmarked&&!u.hideBookmarks&&!s.kiosk,showDirections:o.booth&&H.wayfinding,inBookmark:o.event?.bookmarked||!1,showShare:!0,showVisited:!s.kiosk,visited:o.event?.visited||!1,onClickBookmark:$,onClickShare:K,onClickDirections:()=>{o.booth&&a.routeStore.clickRoute(null,o.booth)},onClickVisited:z})}),l("div",{className:c("efp-event__details",{"details-hidden":s.kiosk&&k&&!h}),ref:f,children:[l("div",{className:c("efp-event-booths",{"is-links-disabled":s.isGuidedToursActive}),children:[o.booth&&l("a",{href:`?${o.booth.slug}`,onClick:i=>{i.preventDefault(),a.toggleMapOverlay(),a.selectBooth(o.booth)},className:"efp-event-booths__booth",children:[e("div",{className:"efp-event-booths__booth-name",children:o.booth.name}),o.booth.layer&&e("div",{className:"efp-event-categories__booth-level",children:u.shortLevelName?o.booth.layer.shortName:o.booth.layer.description})]}),t.hasTracks&&t.tracks.map(i=>e("div",{className:"efp-event-booths__track",children:i.name},i.id))]}),l("div",{className:"efp-event-list",children:[l("div",{className:"efp-event-list__block",children:[e("div",{className:"efp-event-list__block-icon",children:e("i",{className:"icon-event-solid"})}),e("div",{className:"efp-event-list__block-content",children:e("div",{className:"efp-event-list__block-item",children:l("div",{className:"efp-event-list__block-info",children:[e("div",{className:"efp-event-list__block-title",children:w(t.startDate)}),l("div",{className:"efp-event-list__block-description",children:[N(t.startDate)," to"," ",t.endDate?N(t.endDate):"-"]})]})})})]}),t.hasSpeakers&&l("div",{className:"efp-event-list__block",children:[e("div",{className:"efp-event-list__block-icon",children:e("i",{className:"icon-speaker-solid"})}),e("div",{className:"efp-event-list__block-content",children:t.speakers.map(i=>l("a",{href:`?${i.slug}`,onClick:d=>{d.preventDefault(),a.selectSpeaker(i,!0)},className:"efp-event-list__block-item efp-event-list__block-item--clickable",children:[i.photoFile&&e("div",{className:"efp-event-list__block-avatar",children:e("img",{src:i.photoFile,alt:i.name})}),l("div",{className:"efp-event-list__block-info",children:[e("div",{className:"efp-event-list__block-title",children:i.name}),l("div",{className:"efp-event-list__block-description",children:[i.company&&e("strong",{children:i.company}),i.jobTitle&&e("span",{children:i.jobTitle})]})]})]},i.id))})]})]}),(t.description||t.logoFile)&&l("div",{className:c("efp-event-description",{collapsed:o.collapsed&&!o.disableCollapse&&!s.kiosk}),children:[t.logoFile&&e("div",{className:c("efp-event-description__logo",{"efp-event-description__logo--left":!t.description}),children:e("img",{src:t.logoFile,alt:t.name,crossOrigin:"anonymous"})}),t.description&&e("span",{className:"event-description__content",dir:"auto",dangerouslySetInnerHTML:{__html:A(L(t.description))},onClick:p})]})]}),s.kiosk&&k&&e(V,{className:c("efp-event__show-more",{"is-sticky":h}),expanded:h,onClick:()=>_(i=>!i)})]})})}function K(){const n=s.selectedEventItem;n&&(v(m.ClickCustomButton,n.name),a.toggleModal("share"))}function $(){const n=s.selectedEventItem;n&&(n.bookmarked=!n.bookmarked,s.onBookmarkClick&&s.onBookmarkClick({name:n.name,bookmarked:n.bookmarked,externalId:n.externalId}),v(m.ClickCustomButton,n.name))}function z(){const n=s.selectedEventItem;n&&(n.visited=!n.visited,s.onVisitedClick&&s.onVisitedClick({name:n.name,visited:n.visited,externalId:n.externalId}),v(m.ClickCustomButton,n.name))}const W=T(()=>s.selectedEventItem?e(R,{}):null);export default W;
1
+ import{Fragment as I,jsx as e,jsxs as l}from"react/jsx-runtime";import"./Event.scss";import{Button as M}from"@expofp/ui";import c from"classnames";import g from"dateformat";import{observer as T,useLocalStore as x,useObserver as F}from"mobx-react-lite";import{useEffect as O,useRef as C,useState as y}from"react";import k from"../data";import a,{uiState as s}from"../store";import{GaEventActions as m,sendEventToGa as v}from"../tools/gtag";import H from"../tools/settings";import j from"../tools/track-event";import{useReaction as A}from"../utils/mobx";import V from"../utils/sanitizeHtml";import B from"./EventBadgeContainer";import G from"./ShowMoreButtonContainer";import L from"./SidebarActionsContainer";import{getDescription as R}from"./utils/getDescription";function K(){const o=C(null),n=x(()=>({collapsed:!0,updateOverlayContent:null,get event(){return s.selectedEventItem},get booth(){return this.event?.boothId?a.boothStore.boothById.get(this.event.boothId):null},get disableCollapse(){return(this.event?.description||"").length<800}})),[u,D]=y(!1),[h,_]=y(!1),f=C(null);O(()=>{(()=>{if(f.current){const r=f.current.offsetHeight;D(r>300)}})()},[]),A(()=>n.event,()=>{o.current&&o.current.parentElement&&(o.current.parentElement.scrollTop=0),n.collapsed=!0,_(!1)});function J(t,r){if(b(r),s.kiosk)return t.preventDefault()}function b(t){n.event&&v(t,n.event.name)}const N=t=>{const r=a.sessionsFilterStore.state.filters.use24hFormat.value,p=new Date(t);return g(p,r?"HH:MM":"h:MMtt")},w=t=>{const r=new Date(t);return g(r,"dddd, mmmm d, yyyy")};return F(()=>{const t=n.event;if(!t)return null;const r=l(I,{children:[e("div",{className:"efp-event__bar",children:e("span",{onClick:()=>a.toggleMapOverlay(),children:l("div",{className:"efp-event__bar-name",children:[e("div",{className:"efp-event__bar-icon",children:e("i",{className:"icon-event-solid"})}),l("span",{dir:"auto",children:[t.name,e(B,{event:t})]})]})})}),e("div",{className:"efp-event__bar-booth",onClick:()=>a.toggleMapOverlay(),children:k.boothTerm})]}),p=()=>{n.collapsed=!1,setTimeout(n.updateOverlayContent)};function P(i,d){return!i||!d||s.kiosk||s.previewMode?null:e("div",{className:"event-custom-button",children:e(M,{link:d,inline:!0,onClick:E=>{E.preventDefault(),b(m.ClickCustomButton),window.open(d,"_blank","noopener,noreferrer")},target:"_blank",children:i})})}const S=c({"efp-event":!0,[s.responsiveClass]:!0});return l("div",{className:S,children:[l("div",{className:"efp-event__header",children:[l("div",{className:"efp-event__header-name",children:[e("div",{className:"efp-event__header-icon",children:e("i",{className:"icon-event-solid"})}),l("span",{dir:"auto",children:[t.name,e(B,{event:t})]})]}),e("button",{type:"button",onClick:()=>a.searchStore.handleBackAction(),className:"efp-event__header-close",children:e("i",{className:"icon-close"})})]}),e("div",{className:"efp-event__buttons",children:!s.isGuidedToursActive&&e(L,{showBookmark:!s.disableBookmarked&&!k.hideBookmarks&&!s.kiosk,showDirections:n.booth&&H.wayfinding,inBookmark:n.event?.bookmarked||!1,showShare:!0,showVisited:!s.kiosk,visited:n.event?.visited||!1,onClickBookmark:z,onClickShare:$,onClickDirections:()=>{n.booth&&a.routeStore.clickRoute(null,n.booth)},onClickVisited:W})}),l("div",{className:c("efp-event__details",{"details-hidden":s.kiosk&&u&&!h}),ref:f,children:[l("div",{className:c("efp-event-booths",{"is-links-disabled":s.isGuidedToursActive}),children:[n.booth&&l("a",{href:`?${n.booth.slug}`,onClick:i=>{i.preventDefault(),a.toggleMapOverlay(),a.selectBooth(n.booth)},className:"efp-event-booths__booth",children:[e("div",{className:"efp-event-booths__booth-name",children:n.booth.name}),n.booth.layer&&e("div",{className:"efp-event-categories__booth-level",children:k.shortLevelName?n.booth.layer.shortName:n.booth.layer.description})]}),t.hasTracks&&t.tracks.map(i=>e("div",{className:"efp-event-booths__track",children:i.name},i.id))]}),l("div",{className:"efp-event-list",children:[l("div",{className:"efp-event-list__block",children:[e("div",{className:"efp-event-list__block-icon",children:e("i",{className:"icon-event-solid"})}),e("div",{className:"efp-event-list__block-content",children:e("div",{className:"efp-event-list__block-item",children:l("div",{className:"efp-event-list__block-info",children:[e("div",{className:"efp-event-list__block-title",children:w(t.startDate)}),l("div",{className:"efp-event-list__block-description",children:[N(t.startDate)," to"," ",t.endDate?N(t.endDate):"-"]})]})})})]}),t.hasSpeakers&&l("div",{className:"efp-event-list__block",children:[e("div",{className:"efp-event-list__block-icon",children:e("i",{className:"icon-speaker-solid"})}),e("div",{className:"efp-event-list__block-content",children:t.speakers.map(i=>l("a",{href:`?${i.slug}`,onClick:d=>{d.preventDefault(),a.selectSpeaker(i,!0)},className:"efp-event-list__block-item efp-event-list__block-item--clickable",children:[i.photoFile&&e("div",{className:"efp-event-list__block-avatar",children:e("img",{src:i.photoFile,alt:i.name})}),l("div",{className:"efp-event-list__block-info",children:[e("div",{className:"efp-event-list__block-title",children:i.name}),l("div",{className:"efp-event-list__block-description",children:[i.company&&e("strong",{children:i.company}),i.jobTitle&&e("span",{children:i.jobTitle})]})]})]},i.id))})]})]}),(t.description||t.logoFile)&&l("div",{className:c("efp-event-description",{collapsed:n.collapsed&&!n.disableCollapse&&!s.kiosk}),children:[t.logoFile&&e("div",{className:c("efp-event-description__logo",{"efp-event-description__logo--left":!t.description}),children:e("img",{src:t.logoFile,alt:t.name,crossOrigin:"anonymous"})}),t.description&&e("span",{className:"event-description__content",dir:"auto",dangerouslySetInnerHTML:{__html:V(R(t.description))},onClick:p})]})]}),s.kiosk&&u&&e(G,{className:c("efp-event__show-more",{"is-sticky":h}),expanded:h,onClick:()=>_(i=>!i)})]})})}function $(){const o=s.selectedEventItem;o&&(v(m.ClickCustomButton,o.name),a.toggleModal("share"))}function z(){const o=s.selectedEventItem;o&&(o.bookmarked=!o.bookmarked,s.onBookmarkClick&&s.onBookmarkClick({name:o.name,bookmarked:o.bookmarked,externalId:o.externalId}),v(m.ClickBookmark,o.name),o.bookmarked&&j("bookmark",o.name,"session"))}function W(){const o=s.selectedEventItem;o&&(o.visited=!o.visited,s.onVisitedClick&&s.onVisitedClick({name:o.name,visited:o.visited,externalId:o.externalId}),v(m.ClickCustomButton,o.name))}const q=T(()=>s.selectedEventItem?e(K,{}):null);export default q;
@@ -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 o}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{t as h}from"../utils/i18n";import ne from"../utils/is-mobile";import{useReaction as ae}from"../utils/mobx";import se from"../utils/useHeatmapOverlay";import le from"./AlertContainer";import ce from"./DownloadListContainer";import U from"./ErrorBoundary";import de from"./RebookingNotesContainer";import he from"./RebookingRadioGroupContainer";import me from"./Schedule";import ue from"./ShowMoreButtonContainer";import be from"./SidebarActionsContainer";import{getDescription as ke}from"./utils/getDescription";const G=ee.lazy(()=>import("./GalleryContainer")),ge=Q(function(){const S=C(null),r=Z(()=>({collapsed:!0,updateOverlayContent:null,get exhibitor(){return o.selectedExhibitor},get websiteTrimmed(){return this.exhibitor.website?this.exhibitor.website.replace(/^(http(s?):\/\/)([^/]+)(\/)?$/i,"$3"):""},get anySocial(){return o.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||o.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}=se(r.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}),[]),ae(()=>r.exhibitor,()=>{S.current&&(S.current.parentElement.scrollTop=0),r.collapsed=!0});function _(e,c){if(u(c),o.kiosk)return e.preventDefault()}function H(e,c,m){O(d.ClickCustomButton,r.exhibitor.name);const b={externalId:r.exhibitor.externalId,buttonNumber:e,buttonUrl:c,preventDefault:m.preventDefault.bind(m)};o.onExhibitorCustomButtonClick&&o.onExhibitorCustomButtonClick(b)}function u(e){O(e,r.exhibitor.name)}const B=C(),V={entering:{opacity:1},entered:{opacity:1},exiting:{opacity:0},exited:{opacity:0}},E=150;return T(()=>{const e=r.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(he,{value:e.rebookingState.toString(),onChange:s=>a.exhibitorStore.setRebookingState(e,parseInt(s),e.rebookingNote)}),i(de,{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(le,{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,[o.responsiveClass]:!0}),b=()=>{r.collapsed=!1,setTimeout(r.updateOverlayContent)};function k(t,l,s){return!t||!l||o.kiosk||o.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&&!o.kiosk&&window.location.host.endsWith(".expofp.com")&&y.EXPO!=="globalaltsmiami2024"}function L(){r.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:!o.isGuidedToursActive&&i(be,{showBookmark:!o.disableBookmarked&&!p.hideBookmarks&&!o.kiosk,showDirections:e.booths.length>0&&y.wayfinding,inBookmark:e.bookmarked,showShare:K(),showVisited:!o.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:o.responsiveClass,onOpenGallery:()=>a.openGallery(),onCloseGallery:()=>a.closeGallery(),onImageLoadHeightUpdate:L,leading:!0,images:[e.leadingImageUrl]})})})}):null,n("div",{className:g("exhibitor__details",{"details-hidden":o.kiosk&&w&&!f}),ref:x,children:[n("div",{className:g("exhibitor-categories",{"is-links-disabled":o.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:r.collapsed&&!r.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:ke(e.description)},onClick:b}):null]}):null,(!!e.schedule?.length||!!e.booths[0]?.schedule.length)&&i(me,{events:[...e.schedule||e.booths[0]?.schedule||[]].sort((t,l)=>new Date(t.startDate).getTime()-new Date(l.startDate).getTime())}),!o.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:o.responsiveClass,onOpenGallery:()=>a.openGallery(),onCloseGallery:()=>a.closeGallery(),onImageLoadHeightUpdate:L,images:e.gallery})})})}),!o.kiosk&&e.marketMaterials&&n(N,{children:[i("div",{className:"exhibitor-sep"}),i(ce,{list:e.marketMaterials})]}),r.showEdit&&i("div",{className:"exhibitor-sep"}),!o.kiosk&&r.showEdit&&i("div",{className:"exhibitor-edit",children:i(R,{size:"sm",variant:"secondary",onClick:q,children:h("Edit")})}),r.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:r.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})})]}),r.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})]}),o.kiosk&&w&&i(ue,{className:g("exhibitor__show-more",{"is-sticky":f}),expanded:f,onClick:()=>M(t=>!t)})]})]})});function P(){const e=window.navigator,c={title:o.selectedExhibitor.name,url:window.location.href};ne&&e?.canShare&&e.canShare(c)?e.share(c):a.toggleModal("share")}function j(e){a.clickCategory(e)}function q(e){if(o.kiosk)return e.preventDefault();e.target.blur();const c=r.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:r.exhibitor.id}))}function F(){r.exhibitor.bookmarked=!r.exhibitor.bookmarked,o.onBookmarkClick&&o.onBookmarkClick({name:r.exhibitor.name,bookmarked:r.exhibitor.bookmarked,externalId:r.exhibitor.externalId})}function $(){r.exhibitor.visited=!r.exhibitor.visited,o.onVisitedClick&&o.onVisitedClick({name:r.exhibitor.name,visited:r.exhibitor.visited,externalId:r.exhibitor.externalId})}});export default()=>T(()=>i(N,{children:!o.menu&&o.selectedExhibitor?i(ge,{}):null}));
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}));
@@ -4,7 +4,6 @@ import { type SetKioskChangeEvent } from './SetKiosk/types';
4
4
  declare class KioskStore {
5
5
  get kiosk(): Kiosk | null;
6
6
  setKiosk(kiosk: Kiosk | null): void;
7
- get renderer(): import("@expofp/renderer").Renderer | null;
8
7
  private getCameraState;
9
8
  savedKiosk: Kiosk | null;
10
9
  get hasUnsavedChanges(): boolean;
@@ -23,7 +22,11 @@ declare class KioskStore {
23
22
  */
24
23
  private resetMaplibreCamera;
25
24
  private waitForMaplibreCameraPort;
26
- private resetRendererCamera;
25
+ /**
26
+ * Restores the home framing on the floor plan. The plan's own camera takes it whenever it is up;
27
+ * without one mounted there is nothing to move.
28
+ */
29
+ private resetPlanCamera;
27
30
  restoreData(): void;
28
31
  handleSetupReady(): void;
29
32
  handleClose(): void;
@@ -1 +1 @@
1
- import{__decorate as r}from"tslib";import{action as o,computed as m,observable as d,toJS as c,when as k}from"mobx";import a from"../../store";import{areLayersEnabled as S}from"../../utils/areLayersEnabled";import{t as h}from"../../utils/i18n";import{isPointVisible as g}from"../Map/visibleArea";import{getPtScaleZoomRatio as f,toFiniteNumber as u}from"./kiosk-record";import{updateKiosk as C}from"./kioskApi";import{getSavedKiosk as y,removeKiosk as M,saveKiosk as K}from"./SetKiosk";const v=2e4;class s{constructor(){this.savedKiosk=null,this.statusMessages=[],this.statusMessageTimer=0,this.isResettingCamera=!1}get kiosk(){return a.uiState.kioskData}setKiosk(e){a.uiState.setKioskData(e)}get renderer(){return a.rendererService.renderer}getCameraState(){if(a.maplibreStore.showMaplibre){const t=a.maplibreStore.cameraPort?.getCameraState();return t?{mapCenterLng:t.lng,mapCenterLat:t.lat,mapZoom:t.zoom,mapBearingDegrees:t.bearing,mapPitchDegrees:t.pitch}:{}}const e=a.rendererService.getCameraState();return e?{mapInitialPtScale:this.initialPtScale,mapPtScale:e.ptScale,mapCenterX:e.center.x,mapCenterY:e.center.y,mapRollDegrees:e.roll,mapPitch:e.pitch}:{}}get hasUnsavedChanges(){const e=this.savedKiosk,t=c(this.kiosk);if(!t||!e)return!!t!=!!e;const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!0;for(const l of n)if(!(l in t)||e[l]!==t[l])return!0;return!1}addStatusMessage(e){this.statusMessages=[{...e,id:Date.now()}],this.startCleanupMessages()}clearStatusMessages(){this.statusMessages=[]}startCleanupMessages(){clearTimeout(this.statusMessageTimer),this.statusMessageTimer=window.setTimeout(()=>this.clearStatusMessages(),1e3)}async resetCamera(){if(!this.isResettingCamera){this.isResettingCamera=!0;try{if(a.maplibreStore.showMaplibre&&await this.resetMaplibreCamera())return;await this.resetRendererCamera()}finally{this.isResettingCamera=!1}}}async resetMaplibreCamera(){const e=await this.waitForMaplibreCameraPort();if(!e)return!1;const t=this.kiosk;t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=u(t?.mapCenterLng),i=u(t?.mapCenterLat),l=u(t?.mapZoom);return n===void 0||i===void 0||l===void 0?(e.resetPitch(),a.uiState.fitBounds(),!0):(e.applyCameraState({lng:n,lat:i,zoom:l,bearing:u(t?.mapBearingDegrees),pitch:u(t?.mapPitchDegrees)}),!0)}async waitForMaplibreCameraPort(){const{maplibreStore:e}=a;if(e.cameraPort)return e.cameraPort;try{await k(()=>!!e.cameraPort||!e.showMaplibre,{timeout:v})}catch{return null}return e.cameraPort}async resetRendererCamera(){const e=this.renderer;if(!e)return;const t=this.kiosk;await e.controls.resetCamera({pan:!0,zoom:!0,roll:!0,pitch:!0},!0),t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=f(t);n!==void 0&&await e.controls.zoomBy(n,!0);const i=u(t?.mapCenterX),l=u(t?.mapCenterY);i!==void 0&&l!==void 0&&await e.controls.panTo(i,l,!0);const p=u(t?.mapRollDegrees);p!==void 0&&await e.controls.rollTo(p,!0)}restoreData(){const e=y();e&&(this.setKiosk(e),this.savedKiosk=e,a.uiState.kiosk=!0)}handleSetupReady(){this.restoreData(),a.uiState.kiosk=!0,a.uiState.hideFreeOrDemo=!0,a.uiState.setForceDim(!0),a.searchStore.setSearchText(""),a.searchStore.setFocused(!1),this.resetCamera()}handleClose(){this.setKiosk(null),a.uiState.setForceDim(!1),a.uiState.enableSetKioskMode(!1),a.searchStore.closeSearch()}handleDelete(){M(),this.setKiosk(null),a.uiState.resetMapSettings(),a.uiState.resetUIScale(),this.addStatusMessage({variant:"success",title:h("Deleted")})}handleSave(){const e=this.renderer;if(!e)return;const t=c(this.kiosk);if(!t)return;const n=this.getCameraState(),i={...t,...n};if(!g(e,i)){this.addStatusMessage({variant:"error",title:h("Kiosk not visible")});return}this.setKiosk(i),K(i),C(i,"https://app.expofp.com/"),a.uiState.setUIScale(i.uiScale,!0),this.addStatusMessage({variant:"success",title:h("Saved")}),this.savedKiosk=i}delayChange(e){requestAnimationFrame(()=>e?.())}handleChange(e){const t=c(this.kiosk);t&&(Number.isFinite(e.angle)&&this.setKiosk({...t,heading:e.angle}),Number.isFinite(e.scale)&&(this.setKiosk({...t,uiScale:e.scale}),this.delayChange(()=>a.uiState.setUIScale(e.scale,!1))),Number.isFinite(e.percent)&&this.setKiosk({...t,iconSizePercent:e.percent}))}setInitialPtScale(e){if(this.initialPtScale)return;this.initialPtScale=e;const t=c(this.kiosk);t&&this.setKiosk({...t,mapInitialPtScale:e})}handleClick(e){const t=c(this.kiosk),n=a.fp.getFloors(),i=S()?n.find(p=>p.active)?.name??null:null,l=a.uiState.uiScale;this.setKiosk({...t,x:e.x,y:e.y,z:i,uiScale:t?.uiScale||l,heading:t?.heading||0,iconSizePercent:t?.iconSizePercent||100,...this.getCameraState()})}handleNavigationChange(){const e=c(this.kiosk);e&&this.setKiosk({...e,...this.getCameraState()})}}r([m({keepAlive:!0})],s.prototype,"kiosk",null),r([o],s.prototype,"setKiosk",null),r([m({keepAlive:!0})],s.prototype,"renderer",null),r([d],s.prototype,"savedKiosk",void 0),r([m({keepAlive:!0})],s.prototype,"hasUnsavedChanges",null),r([d],s.prototype,"statusMessages",void 0),r([o],s.prototype,"addStatusMessage",null),r([o],s.prototype,"clearStatusMessages",null),r([o],s.prototype,"startCleanupMessages",null),r([o],s.prototype,"resetCamera",null),r([o],s.prototype,"restoreData",null),r([o],s.prototype,"handleSetupReady",null),r([o],s.prototype,"handleClose",null),r([o],s.prototype,"handleDelete",null),r([o],s.prototype,"handleSave",null),r([o],s.prototype,"handleChange",null),r([o],s.prototype,"setInitialPtScale",null),r([o],s.prototype,"handleClick",null),r([o],s.prototype,"handleNavigationChange",null);export default new s;
1
+ import{__decorate as i}from"tslib";import{action as o,computed as h,observable as k,toJS as c,when as S}from"mobx";import a from"../../store";import{areLayersEnabled as g}from"../../utils/areLayersEnabled";import{t as m}from"../../utils/i18n";import{mapCamera as d}from"../Map/camera";import{mapViewport as f}from"../Map/viewport";import{getPtScaleZoomRatio as C,toFiniteNumber as u}from"./kiosk-record";import{updateKiosk as y}from"./kioskApi";import{getSavedKiosk as M,removeKiosk as K,saveKiosk as P}from"./SetKiosk";const b=2e4;class s{constructor(){this.savedKiosk=null,this.statusMessages=[],this.statusMessageTimer=0,this.isResettingCamera=!1}get kiosk(){return a.uiState.kioskData}setKiosk(e){a.uiState.setKioskData(e)}getCameraState(){if(a.maplibreStore.showMaplibre){const t=a.maplibreStore.cameraPort?.getCameraState();return t?{mapCenterLng:t.lng,mapCenterLat:t.lat,mapZoom:t.zoom,mapBearingDegrees:t.bearing,mapPitchDegrees:t.pitch}:{}}const e=d()?.state();return e?{mapInitialPtScale:this.initialPtScale,mapPtScale:e.pixelSize,mapCenterX:e.center.x,mapCenterY:e.center.y,mapRollDegrees:e.roll,mapPitch:e.pitch}:{}}get hasUnsavedChanges(){const e=this.savedKiosk,t=c(this.kiosk);if(!t||!e)return!!t!=!!e;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!0;for(const l of n)if(!(l in t)||e[l]!==t[l])return!0;return!1}addStatusMessage(e){this.statusMessages=[{...e,id:Date.now()}],this.startCleanupMessages()}clearStatusMessages(){this.statusMessages=[]}startCleanupMessages(){clearTimeout(this.statusMessageTimer),this.statusMessageTimer=window.setTimeout(()=>this.clearStatusMessages(),1e3)}async resetCamera(){if(!this.isResettingCamera){this.isResettingCamera=!0;try{if(a.maplibreStore.showMaplibre&&await this.resetMaplibreCamera())return;await this.resetPlanCamera()}finally{this.isResettingCamera=!1}}}async resetMaplibreCamera(){const e=await this.waitForMaplibreCameraPort();if(!e)return!1;const t=this.kiosk;t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=u(t?.mapCenterLng),r=u(t?.mapCenterLat),l=u(t?.mapZoom);return n===void 0||r===void 0||l===void 0?(e.resetPitch(),a.uiState.fitBounds(),!0):(e.applyCameraState({lng:n,lat:r,zoom:l,bearing:u(t?.mapBearingDegrees),pitch:u(t?.mapPitchDegrees)}),!0)}async waitForMaplibreCameraPort(){const{maplibreStore:e}=a;if(e.cameraPort)return e.cameraPort;try{await S(()=>!!e.cameraPort||!e.showMaplibre,{timeout:b})}catch{return null}return e.cameraPort}async resetPlanCamera(){const e=d();if(!e)return;const t=this.kiosk;await e.api.reset({pan:!0,zoom:!0,roll:!0,pitch:!0},{immediate:!0}),t?.z!=null&&a.fp.activateFloor({name:String(t.z)});const n=C(t);n!==void 0&&await e.api.zoomBy(n,{immediate:!0});const r=u(t?.mapCenterX),l=u(t?.mapCenterY);r!==void 0&&l!==void 0&&await e.api.panTo({x:r,y:l},{immediate:!0});const p=u(t?.mapRollDegrees);p!==void 0&&await e.api.rollTo(p,{immediate:!0})}restoreData(){const e=M();e&&(this.setKiosk(e),this.savedKiosk=e,a.uiState.kiosk=!0)}handleSetupReady(){this.restoreData(),a.uiState.kiosk=!0,a.uiState.hideFreeOrDemo=!0,a.uiState.setForceDim(!0),a.searchStore.setSearchText(""),a.searchStore.setFocused(!1),this.resetCamera()}handleClose(){this.setKiosk(null),a.uiState.setForceDim(!1),a.uiState.enableSetKioskMode(!1),a.searchStore.closeSearch()}handleDelete(){K(),this.setKiosk(null),a.uiState.resetMapSettings(),a.uiState.resetUIScale(),this.addStatusMessage({variant:"success",title:m("Deleted")})}handleSave(){const e=f();if(!e)return;const t=c(this.kiosk);if(!t)return;const n=this.getCameraState(),r={...t,...n};if(!e.isVisible({x:r.x,y:r.y})){this.addStatusMessage({variant:"error",title:m("Kiosk not visible")});return}this.setKiosk(r),P(r),y(r,"https://app.expofp.com/"),a.uiState.setUIScale(r.uiScale,!0),this.addStatusMessage({variant:"success",title:m("Saved")}),this.savedKiosk=r}delayChange(e){requestAnimationFrame(()=>e?.())}handleChange(e){const t=c(this.kiosk);t&&(Number.isFinite(e.angle)&&this.setKiosk({...t,heading:e.angle}),Number.isFinite(e.scale)&&(this.setKiosk({...t,uiScale:e.scale}),this.delayChange(()=>a.uiState.setUIScale(e.scale,!1))),Number.isFinite(e.percent)&&this.setKiosk({...t,iconSizePercent:e.percent}))}setInitialPtScale(e){if(this.initialPtScale)return;this.initialPtScale=e;const t=c(this.kiosk);t&&this.setKiosk({...t,mapInitialPtScale:e})}handleClick(e){const t=c(this.kiosk),n=a.fp.getFloors(),r=g()?n.find(p=>p.active)?.name??null:null,l=a.uiState.uiScale;this.setKiosk({...t,x:e.x,y:e.y,z:r,uiScale:t?.uiScale||l,heading:t?.heading||0,iconSizePercent:t?.iconSizePercent||100,...this.getCameraState()})}handleNavigationChange(){const e=c(this.kiosk);e&&this.setKiosk({...e,...this.getCameraState()})}}i([h({keepAlive:!0})],s.prototype,"kiosk",null),i([o],s.prototype,"setKiosk",null),i([k],s.prototype,"savedKiosk",void 0),i([h({keepAlive:!0})],s.prototype,"hasUnsavedChanges",null),i([k],s.prototype,"statusMessages",void 0),i([o],s.prototype,"addStatusMessage",null),i([o],s.prototype,"clearStatusMessages",null),i([o],s.prototype,"startCleanupMessages",null),i([o],s.prototype,"resetCamera",null),i([o],s.prototype,"restoreData",null),i([o],s.prototype,"handleSetupReady",null),i([o],s.prototype,"handleClose",null),i([o],s.prototype,"handleDelete",null),i([o],s.prototype,"handleSave",null),i([o],s.prototype,"handleChange",null),i([o],s.prototype,"setInitialPtScale",null),i([o],s.prototype,"handleClick",null),i([o],s.prototype,"handleNavigationChange",null);export default new s;
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
- declare const SetKioskMode: React.FunctionComponent<object>;
1
+ declare const SetKioskMode: import("react").FunctionComponent<object>;
3
2
  export default SetKioskMode;
4
3
  //# sourceMappingURL=SetKioskMode.d.ts.map
@@ -1 +1 @@
1
- import{jsx as l}from"react/jsx-runtime";import{observer as c}from"mobx-react-lite";import{useEffect as d}from"react";import{isDefaultScene as v,pickDefaultScene as m}from"../../renderer/engine-core/defs";import r from"../../store";import{useInit as S}from"../../utils/mobx";import e from"./KioskStore";import h from"./SetKiosk";const p=c(()=>{S(()=>{Promise.resolve().then(()=>e.handleSetupReady())}),d(()=>{const t=({ptScale:a,sceneId:i})=>{v(i)&&e.setInitialPtScale(a)};e.renderer.events.addEventListener("viewport:ptscale",t);const s=({data:a})=>{const{point:i}=m(a);e.handleClick(i)};e.renderer.events.addEventListener("pointer:click",s);const o=()=>e.handleNavigationChange();return e.renderer.events.addEventListener("navigation:change",o),()=>{e.renderer.events.removeEventListener("viewport:ptscale",t),e.renderer.events.removeEventListener("pointer:click",s),e.renderer.events.removeEventListener("navigation:change",o)}},[e.renderer]);const n=!!e.kiosk;return l(h,{isSaveDisabled:n?!e.hasUnsavedChanges:!0,isDeleteDisabled:!n,areControlsDisabled:!n,confirmOnClose:n?e.hasUnsavedChanges:!1,angle:e.kiosk?.heading||0,uiScale:e.kiosk?.uiScale||r.uiState.uiScale,minUiScale:r.uiState.minUIScale,maxUiScale:r.uiState.maxUIScale,uiScaleStep:.01,iconSizePercent:e.kiosk?.iconSizePercent||100,isInfoVisible:!n,statusMessages:e.statusMessages,onClose:()=>e.handleClose(),onDelete:()=>e.handleDelete(),onSave:()=>e.handleSave(),onChange:t=>e.handleChange(t)})});export default p;
1
+ import{jsx as n}from"react/jsx-runtime";import{observer as r}from"mobx-react-lite";import{useEffect as i}from"react";import s from"../../store";import{useInit as l}from"../../utils/mobx";import{mapCamera as m}from"../Map/camera";import{onCameraMoved as S}from"../Map/camera-events";import{setPlanClickListener as t}from"../Map/pointer";import e from"./KioskStore";import c from"./SetKiosk";const d=r(()=>{l(()=>{Promise.resolve().then(()=>e.handleSetupReady())}),i(()=>{const a=m()?.state();a&&e.setInitialPtScale(a.pixelSize)},[]),i(()=>(t(a=>e.handleClick(a)),()=>t()),[]),i(()=>S(()=>e.handleNavigationChange()),[]);const o=!!e.kiosk;return n(c,{isSaveDisabled:o?!e.hasUnsavedChanges:!0,isDeleteDisabled:!o,areControlsDisabled:!o,confirmOnClose:o?e.hasUnsavedChanges:!1,angle:e.kiosk?.heading||0,uiScale:e.kiosk?.uiScale||s.uiState.uiScale,minUiScale:s.uiState.minUIScale,maxUiScale:s.uiState.maxUIScale,uiScaleStep:.01,iconSizePercent:e.kiosk?.iconSizePercent||100,isInfoVisible:!o,statusMessages:e.statusMessages,onClose:()=>e.handleClose(),onDelete:()=>e.handleDelete(),onSave:()=>e.handleSave(),onChange:a=>e.handleChange(a)})});export default d;
@@ -1 +1 @@
1
- import{jsx as o,jsxs as D}from"react/jsx-runtime";import"@styles/main.scss";import"./Layout.scss";import{Spinner as x}from"@expofp/ui";import R from"classnames";import{observer as B}from"mobx-react-lite";import i,{Suspense as a,useEffect as L,useState as v}from"react";import t,{layersStore as c,uiState as e}from"../store";import{LayersMode as k}from"../store/LayerStore";import{checkUserIsGDPR as G,GaEventActions as m,hasUserConsent as T,sendEventToGa as n,setConsentSettings as S,setCookieConsent as C}from"../tools/gtag";import F from"../tools/settings";import j from"../tools/track-event";import{isWebGlSupported as A}from"../utils";import{t as I}from"../utils/i18n";import P from"../utils/is-debug";import{useReaction as l}from"../utils/mobx";import{CategoryFilterModal as V}from"./CategoryFilterModal";import H from"./ErrorBoundary";import $ from"./GlobalErrorMessage";import K from"./HeatmapLegendContainer";import N from"./IntercomLauncher";import _ from"./LevelSelectorContainer";import U from"./LogoOverlay";import W from"./Map/Map";import q from"./MapControlsContainer";import X from"./MobileToggleButtonContainer";import Y from"./OverlayContainer";import J from"./SearchBox";import Q from"./SearchButtons/SearchButtons";import Z from"./SessionsFiltersModal";import ee from"./ShareContainer";import oe from"./SpeakersFiltersModal";import te from"./Ws";const re=i.lazy(()=>import("./Demo")),ie=i.lazy(()=>import("./Free")),ae=i.lazy(()=>import("./Debug")),ne=i.lazy(()=>import("./Maplibre/MaplibreAdapter")),le=i.lazy(()=>import("./ModalContainer")),se=i.lazy(()=>import("./CookieConsent")),me=i.lazy(()=>import("./GpsLoader")),de=i.lazy(()=>import("./Kiosk/SetKioskMode")),pe=i.lazy(()=>import("./Kiosk/ShowKiosk"));export default B(function({offHistory:b,consent:d}){const[f,p]=v(!1),[w,z]=v(!1),u=t.maplibreStore.showMaplibre,M=e.searchButtonsOverride!==!1&&(!e.noOverlay||e.overlayOnDemand),O=!e.noOverlay||e.overlayOnDemand&&(w||e.isOverlayOpen);let s=null;e.bannerType==="demo"?s=o(re,{}):e.bannerType==="free"&&(s=o(ie,{}));const g=()=>{C(!0),S(),t.uiState.hideCookieConsent=!0},E=()=>{C(!1),S(),t.uiState.hideCookieConsent=!0};L(()=>{async function r(){const h=await G();p(!!(h||h===null))}T(d)?p(!0):r()},[]),l(()=>e.isOverlayOpen,r=>r&&z(!0)),l(()=>e.selectedExhibitor,r=>{t.heatmapStore.forceTrack?(n(t.heatmapStore.forceTrack.action,t.heatmapStore.forceTrack.label),t.heatmapStore.forceTrack=null):r&&(j("exview",r.id),n(m.ViewExhibitor,r.name))}),l(()=>e.selectedBooth,r=>r?.name&&n(m.ViewBooth,r.name)),l(()=>e.selectedCategory,r=>r?.name&&n(m.ViewCategory,r?.name)),l(()=>e.selectedEventItem,r=>r?.name&&n(m.ViewExhibitor,r.name));const y=!e.hideCookieConsent&&!e.kiosk&&f&&d==="ask";return o("div",{id:"efp-layout",className:R("layout",{"efp-kiosk":e.kiosk,"efp-kiosk-route-active":e.kiosk&&e.selectedRoute?.from&&e.selectedRoute?.to,"efp-layers-mode":t.layerStore.mode,"efp-ws-mode":e.wsShown,"efp-no-overlay":e.overlayHiddenNow,"efp-overlay-on-demand":e.overlayOnDemand,"efp-top-banner":e.bannerType==="free"&&!e.freeBannerDismissed,"efp-viewer-mode":e.viewerMode}),dir:e.rtl?"rtl":"ltr",style:{"--ui-scale":e.uiScale.toString()},children:D("div",{className:`layout__fixed expo-${F.EXPO} overlay-${t.uiState.overlayPosition}`,children:[(c.mode===k.Radio||c.mode===k.CheckBox)&&!e.floorsControlHidden&&t.initialized&&o(_,{}),O&&t.initialized&&o(Y,{isGDPR:f,consent:d}),t.initialized&&o(U,{}),(!e.noOverlay||e.overlayOnDemand&&e.isOverlayOpen)&&t.initialized&&!(e.viewerMode&&e.menu)&&o(J,{}),M&&t.initialized&&o(Q,{}),!e.noOverlay&&t.initialized&&o(X,{}),!e.mapControlsHidden&&t.initialized&&o(q,{}),o(N,{}),!e.hideHeaderLogo&&t.initialized&&o(te,{}),t.routeStore.gpsEnabled&&o(me,{requestCompassAllowed:!y}),A&&!u&&o(W,{}),u&&o(H,{children:o(a,{fallback:o("div",{}),children:o(ne,{viewMode:t.maplibreStore.mapViewMode})})}),s&&!e.hideFreeOrDemo&&!e.heatmap?o(a,{fallback:null,children:s}):null,y&&o(a,{fallback:null,children:o(se,{link:"https://expofp.com/pages/viewer-cookie-consent",onAccept:g,onReject:E})}),P?o(a,{fallback:null,children:o(ae,{})}):null,e.modalActive.share?o(a,{fallback:null,children:o(le,{variant:"share",ariaLabel:I("Share"),open:e.modalActive.share,onClose:()=>t.toggleModal("share"),children:o(ee,{title:e.selectedExhibitor?.name||e.selectedEventItem?.name||"",url:b?`${window.location.origin}?${encodeURI(e.selectedExhibitor?.slug||e.selectedEventItem?.slug)}`:window.location.href})})}):null,e.heatmap||e.heatmapYah?o(K,{style:{left:`calc(50% + ${t.uiState.mapVisibleStart/2}px)`},className:e.responsiveClass}):null,o(x,{active:!c.layersLoaded}),o("div",{id:"fps"}),t.initialized&&o(V,{}),t.initialized&&o(Z,{store:t.sessionsFilterStore}),t.initialized&&o(oe,{store:t.speakerFilterStore}),o($,{}),t.initialized&&e.setKioskModeEnabled&&o(a,{fallback:null,children:o(de,{})}),t.initialized&&!e.setKioskModeEnabled&&o(a,{fallback:null,children:o(pe,{})})]})})});
1
+ import{jsx as o,jsxs as x}from"react/jsx-runtime";import"@styles/main.scss";import"./Layout.scss";import{Spinner as R}from"@expofp/ui";import B from"classnames";import{observer as L}from"mobx-react-lite";import r,{Suspense as n,useEffect as G,useState as k}from"react";import t,{layersStore as f,uiState as e}from"../store";import{LayersMode as C}from"../store/LayerStore";import{checkUserIsGDPR as F,GaEventActions as d,hasUserConsent as T,sendEventToGa as s,setConsentSettings as S,setCookieConsent as b}from"../tools/gtag";import j from"../tools/settings";import u from"../tools/track-event";import{isWebGlSupported as A}from"../utils";import{t as P}from"../utils/i18n";import V from"../utils/is-debug";import{useReaction as l}from"../utils/mobx";import{CategoryFilterModal as H}from"./CategoryFilterModal";import I from"./ErrorBoundary";import $ from"./GlobalErrorMessage";import K from"./HeatmapLegendContainer";import N from"./IntercomLauncher";import _ from"./LevelSelectorContainer";import U from"./LogoOverlay";import W from"./Map/Map";import q from"./MapControlsContainer";import X from"./MobileToggleButtonContainer";import Y from"./OverlayContainer";import J from"./SearchBox";import Q from"./SearchButtons/SearchButtons";import Z from"./SessionsFiltersModal";import ee from"./ShareContainer";import oe from"./SpeakersFiltersModal";import te from"./Ws";const ie=r.lazy(()=>import("./Demo")),re=r.lazy(()=>import("./Free")),ae=r.lazy(()=>import("./Debug")),ne=r.lazy(()=>import("./Maplibre/MaplibreAdapter")),le=r.lazy(()=>import("./ModalContainer")),se=r.lazy(()=>import("./CookieConsent")),me=r.lazy(()=>import("./GpsLoader")),de=r.lazy(()=>import("./Kiosk/SetKioskMode")),pe=r.lazy(()=>import("./Kiosk/ShowKiosk"));export default L(function({offHistory:w,consent:p}){const[y,c]=k(!1),[z,M]=k(!1),h=t.maplibreStore.showMaplibre,O=e.searchButtonsOverride!==!1&&(!e.noOverlay||e.overlayOnDemand),g=!e.noOverlay||e.overlayOnDemand&&(z||e.isOverlayOpen);let m=null;e.bannerType==="demo"?m=o(ie,{}):e.bannerType==="free"&&(m=o(re,{}));const E=()=>{b(!0),S(),t.uiState.hideCookieConsent=!0},D=()=>{b(!1),S(),t.uiState.hideCookieConsent=!0};G(()=>{async function i(){const a=await F();c(!!(a||a===null))}T(p)?c(!0):i()},[]),l(()=>e.isOverlayOpen,i=>i&&M(!0)),l(()=>e.selectedExhibitor,i=>{const a=t.heatmapStore.forceTrack;if(t.heatmapStore.forceTrack=null,a&&a.exhibitor===i){s(a.action,a.label);return}i&&(u("exview",i.id),s(d.ViewExhibitor,i.name))}),l(()=>e.selectedBooth,i=>i?.name&&s(d.ViewBooth,i.name)),l(()=>e.selectedCategory,i=>i?.name&&s(d.ViewCategory,i?.name)),l(()=>e.selectedEventItem,i=>{i?.name&&(u("sesview",i.name),s(d.ViewExhibitor,i.name))}),l(()=>e.selectedSpeaker,i=>{i?.name&&u("spkview",i.name)});const v=!e.hideCookieConsent&&!e.kiosk&&y&&p==="ask";return o("div",{id:"efp-layout",className:B("layout",{"efp-kiosk":e.kiosk,"efp-kiosk-route-active":e.kiosk&&e.selectedRoute?.from&&e.selectedRoute?.to,"efp-layers-mode":t.layerStore.mode,"efp-ws-mode":e.wsShown,"efp-no-overlay":e.overlayHiddenNow,"efp-overlay-on-demand":e.overlayOnDemand,"efp-top-banner":e.bannerType==="free"&&!e.freeBannerDismissed,"efp-viewer-mode":e.viewerMode}),dir:e.rtl?"rtl":"ltr",style:{"--ui-scale":e.uiScale.toString()},children:x("div",{className:`layout__fixed expo-${j.EXPO} overlay-${t.uiState.overlayPosition}`,children:[(f.mode===C.Radio||f.mode===C.CheckBox)&&!e.floorsControlHidden&&t.initialized&&o(_,{}),g&&t.initialized&&o(Y,{isGDPR:y,consent:p}),t.initialized&&o(U,{}),(!e.noOverlay||e.overlayOnDemand&&e.isOverlayOpen)&&t.initialized&&!(e.viewerMode&&e.menu)&&o(J,{}),O&&t.initialized&&o(Q,{}),!e.noOverlay&&t.initialized&&o(X,{}),!e.mapControlsHidden&&t.initialized&&o(q,{}),o(N,{}),!e.hideHeaderLogo&&t.initialized&&o(te,{}),t.routeStore.gpsEnabled&&o(me,{requestCompassAllowed:!v}),A&&!h&&o(W,{}),h&&o(I,{children:o(n,{fallback:o("div",{}),children:o(ne,{viewMode:t.maplibreStore.mapViewMode})})}),m&&!e.hideFreeOrDemo&&!e.heatmap?o(n,{fallback:null,children:m}):null,v&&o(n,{fallback:null,children:o(se,{link:"https://expofp.com/pages/viewer-cookie-consent",onAccept:E,onReject:D})}),V?o(n,{fallback:null,children:o(ae,{})}):null,e.modalActive.share?o(n,{fallback:null,children:o(le,{variant:"share",ariaLabel:P("Share"),open:e.modalActive.share,onClose:()=>t.toggleModal("share"),children:o(ee,{title:e.selectedExhibitor?.name||e.selectedEventItem?.name||"",url:w?`${window.location.origin}?${encodeURI(e.selectedExhibitor?.slug||e.selectedEventItem?.slug)}`:window.location.href})})}):null,e.heatmap||e.heatmapYah?o(K,{style:{left:`calc(50% + ${t.uiState.mapVisibleStart/2}px)`},className:e.responsiveClass}):null,o(R,{active:!f.layersLoaded}),o("div",{id:"fps"}),t.initialized&&o(H,{}),t.initialized&&o(Z,{store:t.sessionsFilterStore}),t.initialized&&o(oe,{store:t.speakerFilterStore}),o($,{}),t.initialized&&e.setKioskModeEnabled&&o(n,{fallback:null,children:o(de,{})}),t.initialized&&!e.setKioskModeEnabled&&o(n,{fallback:null,children:o(pe,{})})]})})});
@@ -1,2 +1,2 @@
1
- export default function Map(): import("react").JSX.Element;
1
+ export default function Map(): import("react").JSX.Element | null;
2
2
  //# sourceMappingURL=Map.d.ts.map
@@ -1 +1 @@
1
- import{Fragment as ne,jsx as k,jsxs as U}from"react/jsx-runtime";import{Box as L}from"@expofp/geometry";import{Draggable as ie}from"@expofp/ui";import ae from"classnames";import se from"color";import{observable as le,reaction as me}from"mobx";import{useObserver as ce}from"mobx-react-lite";import{useEffect as fe,useMemo as de,useRef as x,useState as ue}from"react";import{DEBUG_STORAGE_KEY as Z}from"../../constants";import pe from"../../data";import{fpGeo as he}from"../../data/fpGeo";import{svgArea as j}from"../../data/svg";import{boxToRenderer as B,createSceneDef as ve,mapRollSetting as A}from"../../renderer";import{pickDefaultScene as $,pickDefaultScenePoint as ye}from"../../renderer/engine-core/defs";import n,{boothStore as ge,layersStore as v,uiState as o}from"../../store";import{BoothBase as K}from"../../store/BoothStore";import{Category as be}from"../../store/CategoryStore";import{Exhibitor as V}from"../../store/ExhibitorStore";import{LayerMode as R}from"../../store/LayerStore";import{Route as we}from"../../store/RouteStore";import E from"../../tools/logger";import h from"../../tools/settings";import{areLayersEnabled as Se}from"../../utils/areLayersEnabled";import{parseNumberPair as W}from"../../utils/camera-map-settings";import{applyVenueDimValue as xe,createDimmingAnimator as Re}from"../../utils/dimming";import{convertGpsToLocal as Te}from"../../utils/gps";import y from"../../utils/is-debug";import{isPathwayLayer as H}from"../../utils/is-pathway-layer";import{useReaction as u}from"../../utils/mobx";import{createWayfinding as Ce}from"../../wayfinding";import q from"./booth-by-xy";import ke from"./drawing/config/config-all";import{configMarkers as Le,getMarkerFromClick as Be}from"./drawing/config/config-markers";import{loadLayersImages as Ee}from"./drawing/config/loadBoothsImages";import{useBuildRoute as Me}from"./traffic/useBuildRoute";import{useManageTraffic as Pe}from"./traffic/useManageTraffic";const M=Number.isFinite(h.maxZoom)?h.maxZoom:void 0,ze=M!==void 0;export default function Ie(){let P={};const J="#ebebeb",g=x(null),b=de(()=>le({moving:!1,prevLevel:n.layerStore.layers.find(e=>!e.frozen&&e.visible)}),[]),a=n.rendererService,T=x(Re(e=>xe(a,e)));let m;const w=x(null),z=x(null);let I=null,_=null,D=null,F=!1;function G(){v.layers.forEach(e=>{e.configured=!1,e.children=[],e.loaded=!1})}const[Q,Y]=ue(()=>typeof window<"u"&&window.localStorage?localStorage.getItem(Z)!=="false":!0);u(()=>n.routeStore.currentRouteLayer,()=>{const e=n.routeStore.currentRouteLayer;if(!a.scene||!e||b.prevLevel===e)return;const r=a.scene.rootLayer.children.filter(t=>n.layerStore.floors.some(l=>t.name.includes(l.name))),s=e.name;if(!r.find(t=>t.name===s))return;const i=r?.map(t=>(t.name===s&&(t.hidden=!1),t.name===b.prevLevel?.name&&(t.hidden=!0),t));b.prevLevel=e,a.update(...i)}),u(()=>o.centerMap,()=>{!o.centerMap||n.maplibreStore.showMaplibre||(m.controls.resetCamera({zoom:!!(o.list.type==="search"&&o.list.text)}),o.centerMap=!1)}),fe(()=>{if(!g.current)return;async function e(){const r=g.current;if(!r)return;G(),v.layersLoaded=!1;let s={};try{if(y){const t=document.createElement("canvas").getContext("webgl2"),l=t&&t.getExtension("EXT_disjoint_timer_query_webgl2"),f=(await import("stats-gl")).default,c=new f({trackGPU:l,horizontal:!0}),p=z.current;if(!p)throw new Error("memoryInfoPanel not found.");c.dom.style.position="relative",p.style.width=`${90*(l?3:2)}px`,p.style.height="48px",p.appendChild(c.dom),s={stats:c,memoryInfoPanel:p}}}catch(i){console.error(i)}m=a.create({canvas:r,ui:s}),w.current=m,me(()=>o.canvasVisibleRectPx,(i,t)=>{i&&(m.visibleRect=B(i)),t.dispose()},{fireImmediately:!0}),ke(a).then(({layers:i,cleanup:t})=>{if(F||w.current!==m){t();return}D=t,y&&console.log("Renderer settings",m);const l=se(h.backgroundColor==="none"?J:h.backgroundColor).string();P=ve(i,j,l),a.start(P),T.current.setTarget(o.dimmed,{immediate:!0}),A(m,n.fp.enableRotation?1:0),M!==void 0&&m.viewport.setMaxZoom(M),v.layersLoaded=!0,n.fp.onFpConfigured&&n.fp?.onFpConfigured(),I=Ce(a,n),_=Le(a),Ee(a)}),m.events.addEventListener("pointer:move",({data:i})=>{if(o.setKioskModeEnabled)return;const{point:t,defs:l}=$(i),d=q(t.x,t.y),f=N(l[0]);o.hoveredBooth=d||f}),m.events.addEventListener("pointer:out",()=>{o.setKioskModeEnabled||(o.hoveredBooth=null)}),m.events.addEventListener("pointer:click",({data:i})=>{if(!o?.rootElement)return;window.__resett&&window.__resett(),o.overlayPosition==="bottom"&&o.overlaySize==="full"&&n.showMap();const{point:t,defs:l}=$(i),{x:d,y:f}=t;if(o.onGetCoordsClick){const S=n.layerStore.layers.find(C=>C.visible&&(C.mode===R.TurnedOn||C.mode===R.TurnedOff));o.onGetCoordsClick({x:d,y:f,z:S?.name||null})}if(o.setKioskModeEnabled)return;if(o.onMarkerClick){const S=Be(d,f,a.scale);y&&console.log("marker",S),o.onMarkerClick(S)}const c=q(t.x,t.y),p=N(l[0]);y&&console.log("boothIdFromClientXy",c,"boothByShape",p,"pointer:click point",t),n.clickBooth(c||p)}),m.events.addEventListener("navigation:change",()=>window.__resett&&window.__resett())}return e(),n.fp.getCenterCoordinates=oe,()=>ee()},[]);function ee(){F=!0,T.current.stop(),I?.(),_?.(),D?.(),G(),v.layersLoaded=!1,a.disposeIfCurrent(w.current),w.current=null}function oe(){const e=g.current;if(!e)throw new Error("Canvas not ready");const r=ye(m.viewport.canvasToSvg({x:e.clientWidth/2,y:e.clientHeight/2})),i=n.layerStore.visible.find(t=>t.mode===R.TurnedOff||t.mode===R.TurnedOn)?.name||null;return{...r,z:i}}function N(e){return!e||!e.shape?null:ge.booths.find(r=>r.shapes?.find(s=>s.shape==e.shape))??null}u(()=>o.zoomBy,()=>{if(!o.zoomBy||n.maplibreStore.showMaplibre)return;const e=o.zoomBy;m.controls.zoomBy(e),o.zoomBy=null}),u(()=>o.dimmed,e=>{T.current.setTarget(e)}),u(()=>o.details,()=>{if(!o.onDetails)return;if(!o.details){o.onDetails(null);return}let e=o.details;if(h.EXPO==="wineparis"&&(e instanceof V&&(e=e.booths[0]),!e))return;let r=null,s=[];e instanceof V?(r="exhibitor",s=e.booths.map(t=>t.name).sort((t,l)=>t==n.routeStore.tempToBooth?.name?-1:l==n.routeStore.tempToBooth?.name?1:0)):e instanceof K?(r="booth",s=[e.name]):e instanceof we?(r="route",s=[e.from?.name,e.to?.name].filter(t=>!!t)):e instanceof be&&(r="category",s=e.exhibitors.map(t=>t.booths.map(l=>l.name)).flat());const i={type:r,name:e?.name,id:e?.id,externalId:e?.externalId,boothsNames:s};o.onDetails({...i,...r==="route"?{routeInfo:n.routeStore.routeInfo??void 0}:{}})}),u(()=>o.canvasVisibleRectPx,e=>{a.renderer&&(a.renderer.visibleRect=B(e))},{fireImmediately:!0}),u(()=>o.moveToRect,()=>{!o.moveToRect||n.maplibreStore.showMaplibre||(o.moveToRect&&o.moveToRect.size.height!==1/0&&o.moveToRect.size.width!==1/0&&o.moveToRect.size.height>0&&o.moveToRect.size.width>0&&X(o.moveToRect,o.moveToRectPaddingPercent),o.moveToRect=null,o.moveToRectPaddingPercent=null)}),u(()=>o.rollReset,e=>{e&&(m.controls.resetCamera({roll:!0}),o.rollReset=!1)}),u(()=>o.moveToBooths,()=>{if(E.log("this.moveToBooths",o.moveToBooths),!o.moveToBooths||n.maplibreStore.showMaplibre)return;E.log("watched moveToBooths",o.moveToBooths);const e=o.moveToBooths.filter(r=>r.rect).map(r=>r.rect);e.length!==0&&(X(L.fromUnion(...e)),o.moveToBooths=null)}),u(()=>o.mapSettings,({zoomtime:e,center:r,centerxy:s,bearing:i,roll:t,z:l})=>{if(!(n.maplibreStore.showMaplibre||!a.renderer))try{e&&e!==o.defaultMapSettings.zoomtime&&a.renderer.controls.configure({zoomTime:e/1e3}),n.fp.enableRotation&&A(m,t??0);let d;if(r){const f=W(r),c=he?.properties.config;if(!c)throw new Error("Map center given in GPS, but the plan has no GPS config");f&&(d=Te({lat:f[0],lng:f[1]},c)??void 0)}else if(s){const f=W(s);f&&(d={x:f[0],y:f[1]})}l&&n.fp.activateFloor({name:l}),d&&a.renderer.controls.panTo(d.x,d.y),typeof i=="number"&&Number.isFinite(i)&&a.renderer.controls.rollTo(i)}catch(d){E.error("Error in mapSettings reaction",d)}}),Me({enabled:v.layersLoaded&&o.buildRoute,rendererService:a});const O="routes-api.expofp.com",te=pe.busRoutes??!1;Pe({permission:v.layersLoaded&&te,rendererService:a,dataJsonUrl:`https://${O}/v1/routes?expo=${h.EXPO}`,websocketUrl:`wss://${O}/locations?expo=${h.EXPO}`}),u(()=>n.layerStore.visible,e=>{if(!a.scene)return;const r=e.filter(t=>H(t.name)),i=a.scene.rootLayer.children.filter(t=>H(t.name));i.forEach(t=>{t.hidden=!r.find(l=>l.name===t.name)}),a.update(...i)});function X(e,r){let s=e;const i=r??re(e,j),t=o.selectedRoute?.from,l=t instanceof K?t.layer?.name:t?.layer;o.kioskData&&(!Se()||l===n.routeStore.currentRouteLayer?.name)&&(s=L.fromUnion(e,new L(o.kioskData.x,o.kioskData.y,1,1)));const d=B(s),f={paddingPercent:i,maxZoom:ze?void 0:10},c=m.visibleRect;if(o.shouldShiftMapRect&&c){c.min={...c.min,x:c.min.x+o.overlayWidthPx},m.visibleRect=c;try{m.controls.zoomTo(d,f)}finally{c.min={...c.min,x:c.min.x-o.overlayWidthPx}}}else m.controls.zoomTo(d,f)}function re(e,r){return!e||!r?0:(e.area/r.area>.1?15:25)/100}return ce(()=>U(ne,{children:[k("canvas",{style:{width:"100%",height:"100%"},ref:g,className:ae({map:!0,moving:b.moving,hidden:n.maplibreStore.showMaplibre}),children:"ExpoFP.com"}),y&&Q&&U(ie,{className:"debug-fps",children:[k("div",{ref:z}),k("button",{onClick:()=>{typeof window<"u"&&window.localStorage&&localStorage.setItem(Z,"false"),Y(!1)},style:{padding:"4px 8px",fontSize:"11px",cursor:"pointer",backgroundColor:"#333",color:"#fff",border:"1px solid #555",width:"100%"},children:"Hide debug"})]})]}))}
1
+ import{jsx as S,jsxs as P}from"react/jsx-runtime";import{Renderer as _,update as h}from"@expofp/renderer";import F from"classnames";import{observable as D}from"mobx";import{useObserver as b}from"mobx-react-lite";import{useEffect as g,useMemo as N,useRef as y,useState as O}from"react";import z from"../../data";import{svgArea as k}from"../../data/svg";import{createSceneDef as j}from"../../engine/defs";import i,{layersStore as d,uiState as m}from"../../store";import f from"../../tools/settings";import{applyVenueDim as I,createDimmingAnimator as V}from"../../utils/dimming";import Z from"../../utils/is-debug";import{isPathwayLayer as x}from"../../utils/is-pathway-layer";import{useReaction as v}from"../../utils/mobx";import{createWayfinding as $}from"../../wayfinding";import U from"./drawing/config/config-all";import{configMarkers as W}from"./drawing/config/config-markers";import{loadLayersImages as X}from"./drawing/config/loadBoothsImages";import{MapCamera as B}from"./MapCamera";import{MapViewport as H}from"./MapViewport";import{clearSelection as G}from"./pointer";import{setMapScene as E}from"./scene";import{useBuildRoute as J}from"./traffic/useBuildRoute";import{useManageTraffic as q}from"./traffic/useManageTraffic";import{centerCoordinates as K}from"./viewport";const Q="#ebebeb",C="routes-api.expofp.com",Y=1e4;function ee(t){return Number.isFinite(f.maxZoom)?f.maxZoom:t.viewbox.size.width>Y?100:35}function re(){if(!i.fp.enableRotation)return!1;const t=m.mapSettings.roll;return t===void 0||Number(t)===1}function oe(){return f.EXPO==="imexamerica25-3d"?!0:void 0}function te(){const t=m.mapSettings.zoomtime;if(!(!t||t===m.defaultMapSettings.zoomtime))return{zoomTime:t/1e3}}export default function ne(){const t=y(null),l=N(()=>D({moving:!1,prevLevel:i.layerStore.layers.find(r=>!r.frozen&&r.visible)}),[]),[o,T]=O(void 0),c=y(null),p=y(null);function R(){d.layers.forEach(r=>{r.configured=!1,r.children=[],r.loaded=!1})}g(()=>{let r=!1;return R(),d.layersLoaded=!1,U().then(({layers:s,cleanup:a})=>{if(r){a();return}p.current=a;const n=f.backgroundColor==="none"?Q:f.backgroundColor,e=j(s,k,n);T(e),E(e),c.current=V(u=>{I(e,u)&&h(e.rootLayer)}),c.current.setTarget(m.dimmed,{immediate:!0}),d.layersLoaded=!0,i.fp.onFpConfigured&&i.fp.onFpConfigured(),X()}),()=>{r=!0,p.current?.(),p.current=null,c.current?.stop(),c.current=null,E(void 0),R()}},[]),v(()=>m.dimmed,r=>{c.current?.setTarget(r)}),g(()=>{i.fp.getCenterCoordinates=()=>K(t.current)},[]),g(()=>{if(!o)return;const r=$({scene:o,store:i,canvas:t}),s=W({scene:o});return()=>{r(),s()}},[o]),v(()=>i.routeStore.currentRouteLayer,()=>{const r=i.routeStore.currentRouteLayer;if(!o||!r||l.prevLevel===r)return;const s=o.rootLayer.children.filter(e=>i.layerStore.floors.some(u=>e.name.includes(u.name))),a=r.name;if(!s.find(e=>e.name===a))return;const n=[];s.forEach(e=>{e.name===a&&e.hidden!==!1&&(e.hidden=!1,n.push(e)),e.name===l.prevLevel?.name&&e.hidden!==!0&&(e.hidden=!0,n.push(e))}),l.prevLevel=r,n.length&&h(...n)},void 0,[o]),v(()=>i.layerStore.visible,r=>{if(!o)return;const s=r.filter(e=>x(e.name)),a=o.rootLayer.children,n=[];for(const e of a){if(!x(e.name))continue;const u=!s.find(A=>A.name===e.name);e.hidden!==u&&(e.hidden=u,n.push(e))}n.length&&h(...n)},void 0,[o]);const L=b(()=>d.layersLoaded),M=b(()=>!!m.buildRoute);J({enabled:L&&M,scene:o});const w=z.busRoutes??!1;return q({permission:L&&w,scene:o,dataJsonUrl:`https://${C}/v1/routes?expo=${f.EXPO}`,websocketUrl:`wss://${C}/locations?expo=${f.EXPO}`}),b(()=>o?P(_,{debug:Z,style:{width:"100%",height:"100%"},ref:t,className:F({map:!0}),scene:o,maxZoom:ee(o),bounds:d.bounds,controls:{roll:re(),pitch:oe()},smoothTime:te(),visibleRect:m.canvasVisibleRectPx,onPointerMissed:G,children:[S(B,{}),S(H,{})]}):null)}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Everything that moves the plan's camera on the store's say-so, and the camera itself handed out to
3
+ * the SDK that lives outside React.
4
+ *
5
+ * Rendered **inside** `<Renderer>`, which is what lets it hold the camera: the renderer publishes it
6
+ * through a hook, and a hook only resolves in a component R3F has mounted under the canvas. That is
7
+ * the whole reason `Map` is split in two — the outer half watches the stores and builds the scene,
8
+ * this half drives what the stores ask for. The plan's coordinate conversions go out the same way
9
+ * but from `MapViewport`, which the MapLibre view mounts too.
10
+ *
11
+ * Each of the store's command flags is a one-shot: it is read, acted on, and cleared, exactly as the
12
+ * imperative map read them. None of them check for MapLibre any more — `Layout` unmounts the plan
13
+ * entirely in that mode, so there is nothing here to guard.
14
+ * @returns Nothing; this renders no scene node.
15
+ */
16
+ export declare function MapCamera(): null;
17
+ //# sourceMappingURL=MapCamera.d.ts.map
@@ -0,0 +1 @@
1
+ import{Box as s}from"@expofp/geometry";import{useCameraAPI as h,useCameraMoveStart as y,useCameraState as x}from"@expofp/renderer";import{useEffect as R,useLayoutEffect as T,useRef as B,useState as M}from"react";import{fpGeo as P}from"../../data/fpGeo";import{svgArea as S}from"../../data/svg";import p,{uiState as r}from"../../store";import{BoothBase as C}from"../../store/BoothStore";import d from"../../tools/logger";import F from"../../tools/settings";import{areLayersEnabled as w}from"../../utils/areLayersEnabled";import{parseNumberPair as l}from"../../utils/camera-map-settings";import{convertGpsToLocal as z}from"../../utils/gps";import{useReaction as f}from"../../utils/mobx";import{createMapCamera as E,setMapCamera as v}from"./camera";import{notifyCameraMoved as N}from"./camera-events";import{resetExternalOverlay as b}from"./pointer";export function MapCamera(){const o=h(),n=x(),t=B({api:o,state:n}),[a]=M(()=>E(t));return T(()=>{t.current={api:o,state:n}}),R(()=>(v(a),()=>v(void 0)),[a]),y(()=>{b(),N()}),f(()=>r.zoomBy,e=>{e&&(t.current.api.zoomBy(e),r.zoomBy=null)},void 0,[]),f(()=>r.rollReset,e=>{e&&(t.current.api.reset({roll:!0}),r.rollReset=!1)},void 0,[]),f(()=>r.centerMap,e=>{e&&(t.current.api.reset({zoom:!!(r.list.type==="search"&&r.list.text)}),r.centerMap=!1)},void 0,[]),f(()=>r.moveToRect,e=>{if(!e)return;const{width:m,height:i}=e.size;m>0&&i>0&&Number.isFinite(m)&&Number.isFinite(i)&&g(t.current.api,e,r.moveToRectPaddingPercent??void 0),r.moveToRect=null,r.moveToRectPaddingPercent=null},void 0,[]),f(()=>r.moveToBooths,e=>{if(!e)return;d.log("watched moveToBooths",e);const m=e.filter(i=>i.rect).map(i=>i.rect);m.length&&g(t.current.api,s.fromUnion(...m)),r.moveToBooths=null},void 0,[]),f(()=>r.mapSettings,({center:e,centerxy:m,bearing:i,z:c})=>{try{c&&p.fp.activateFloor({name:c});const u=A(e,m);u&&t.current.api.panTo(u),Number.isFinite(i)&&t.current.api.rollTo(i)}catch(u){d.error("Error in mapSettings reaction",u)}},void 0,[]),null}function g(o,n,t){o.zoomTo(L(n),{padding:t??G(n,S),maxZoom:Number.isFinite(F.maxZoom)?void 0:10,within:k()})}function k(){const o=r.canvasVisibleRectPx;return r.shouldShiftMapRect?s.fromMinMax({x:o.min.x+r.overlayWidthPx,y:o.min.y},o.max):o}function L(o){const n=r.kioskData;if(!n)return o;const t=r.selectedRoute?.from,a=t instanceof C?t.layer?.name:t?.layer;return(w()?a===p.routeStore.currentRouteLayer?.name:!0)?s.fromUnion(o,new s(n.x,n.y,1,1)):o}function G(o,n){return!o||!n?0:(o.area/n.area>.1?15:25)/100}function A(o,n){if(o){const a=l(o);if(!a)return;const e=P?.properties?.config;if(!e)throw new Error("Map center given in GPS, but the plan has no GPS config");return z({lat:a[0],lng:a[1]},e)??void 0}const t=l(n);if(t)return{x:t[0],y:t[1]}}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Hands the plan's coordinate conversions out to the SDK that lives outside React.
3
+ *
4
+ * Rendered **inside** `<Renderer>`, which is what lets it hold them: `useViewport` only resolves in
5
+ * a component R3F has mounted under the canvas. A component of its own rather than another job for
6
+ * `MapCamera` because the conversions outlive that split — they depend on the scene's `Space` and
7
+ * the camera three is drawing with, and on nothing that steers the camera, so they are just as
8
+ * available in external mode, where MapLibre owns the camera and `MapCamera` is not mounted at all.
9
+ * @returns Nothing; this renders no scene node.
10
+ */
11
+ export declare function MapViewport(): null;
12
+ //# sourceMappingURL=MapViewport.d.ts.map
@@ -0,0 +1 @@
1
+ import{useViewport as p}from"@expofp/renderer";import{useEffect as i,useLayoutEffect as n,useRef as u,useState as f}from"react";import{createMapViewport as a,setMapViewport as o}from"./viewport";export function MapViewport(){const e=p(),t=u({api:e}),[r]=f(()=>a(t));return n(()=>{t.current={api:e}}),i(()=>(o(r),()=>o(void 0)),[r]),null}
@@ -1,3 +1,16 @@
1
1
  import type { Booth } from '../../store/BoothStore';
2
+ /**
3
+ * Starts keeping the hit-test index current with the stores, and returns the disposer.
4
+ *
5
+ * Called from the instance wiring (`floorplan.ready`) rather than run at module scope: this module
6
+ * sits inside the store ↔ components import cycle (the store's own modules reach it through the
7
+ * config chain), and `reaction` reads its expression the moment it is created — at module scope
8
+ * that is `boothStore` still in its temporal dead zone. Bound at init, every store exists;
9
+ * `fireImmediately` buckets whatever a remount finds already loaded, and the reaction tracks
10
+ * changes from there exactly as before. One binding serves both map modes — the MapLibre path
11
+ * resolves outdoor-PoI booths through this index too.
12
+ * @returns Disposes the reaction.
13
+ */
14
+ export declare function bindBoothHitTest(): () => void;
2
15
  export default function getBoothIdFromClientXy(clientX: number, clientY: number): Booth | null;
3
16
  //# sourceMappingURL=booth-by-xy.d.ts.map
@@ -1 +1 @@
1
- import{Box as d,Polygon as v,Rect as z}from"@expofp/geometry";import{reaction as I}from"mobx";import{getTrianglesFromFpPaths as X}from"../../data/svg";import{boothStore as b,layersStore as x}from"../../store";import{LayersMode as A}from"../../store/LayerStore";import F from"../../tools/logger";let y=[],u=new Map,g=null,w=[];function S(){const l=b.booths.filter(t=>t.visible&&t.rect&&t.rect.size.width>0&&t.rect.size.height>0);if(y=[],g=null,u=new Map,w=l.filter(t=>t.paths),!l.length)return;const c=[];let s=1/0,n=1/0,f=-1/0,e=-1/0;for(const t of l){const a=t.rotate?new z(t.rect.center,t.rect.size,t.rotate):null,o=a?a.bounds:t.rect;c.push({booth:t,shape:a??t.rect,bounds:o}),o.min.x<s&&(s=o.min.x),o.min.y<n&&(n=o.min.y),o.max.x>f&&(f=o.max.x),o.max.y>e&&(e=o.max.y)}const i=d.fromMinMax({x:s,y:n},{x:f,y:e}),r=2,m=Math.ceil(i.size.width/r),h=Math.ceil(i.size.height/r);for(let t=0;t<r;t++)for(let a=0;a<r;a++){const o=i.min.x+t*m,M=i.min.y+a*h,p=new d(o,M,m,h);y.push(p),u.set(p,c.filter(P=>p.intersects(P.bounds)))}F.log("hover segmentToHitAreas",u)}I(()=>[b.booths,x.loaded,x.visible],()=>S());function B(l,c){const s={x:l,y:c};let n;g&&g.containsPoint(s)?n=g:n=y.find(e=>e.containsPoint(s)),n&&(g=n);const f=n?u.get(n):void 0;if(f){const e=f.filter(i=>i.booth.visible&&i.shape.containsPoint(s));if(e.length)return(e.length>1?e.sort((r,m)=>r.booth.rect.area-m.booth.rect.area)[0]:e[0]).booth}for(const e of w)if(e.visible)for(const i of e.paths)for(const r of X(i.index,x.mode!==A.Default?e.layer.name:"")){const m=r.map(h=>({x:h[0],y:h[1]}));if(v.fromConvexRing(m).containsPoint(s))return e}return null}export default function C(l,c){return B(l,c)}
1
+ import{Box as y,Polygon as v,Rect as I}from"@expofp/geometry";import{reaction as z}from"mobx";import{getTrianglesFromFpPaths as X}from"../../data/svg";import{boothStore as b,layersStore as d}from"../../store";import{LayersMode as A}from"../../store/LayerStore";import B from"../../tools/logger";let x=[],g=new Map,u=null,w=[];function F(){const l=b.booths.filter(t=>t.visible&&t.rect&&t.rect.size.width>0&&t.rect.size.height>0);if(x=[],u=null,g=new Map,w=l.filter(t=>t.paths),!l.length)return;const c=[];let r=1/0,n=1/0,f=-1/0,e=-1/0;for(const t of l){const a=t.rotate?new I(t.rect.center,t.rect.size,t.rotate):null,o=a?a.bounds:t.rect;c.push({booth:t,shape:a??t.rect,bounds:o}),o.min.x<r&&(r=o.min.x),o.min.y<n&&(n=o.min.y),o.max.x>f&&(f=o.max.x),o.max.y>e&&(e=o.max.y)}const i=y.fromMinMax({x:r,y:n},{x:f,y:e}),s=2,m=Math.ceil(i.size.width/s),h=Math.ceil(i.size.height/s);for(let t=0;t<s;t++)for(let a=0;a<s;a++){const o=i.min.x+t*m,M=i.min.y+a*h,p=new y(o,M,m,h);x.push(p),g.set(p,c.filter(P=>p.intersects(P.bounds)))}B.log("hover segmentToHitAreas",g)}export function bindBoothHitTest(){return z(()=>[b.booths,d.loaded,d.visible],()=>F(),{fireImmediately:!0})}function H(l,c){const r={x:l,y:c};let n;u&&u.containsPoint(r)?n=u:n=x.find(e=>e.containsPoint(r)),n&&(u=n);const f=n?g.get(n):void 0;if(f){const e=f.filter(i=>i.booth.visible&&i.shape.containsPoint(r));if(e.length)return(e.length>1?e.sort((s,m)=>s.booth.rect.area-m.booth.rect.area)[0]:e[0]).booth}for(const e of w)if(e.visible)for(const i of e.paths)for(const s of X(i.index,d.mode!==A.Default?e.layer.name:"")){const m=s.map(h=>({x:h[0],y:h[1]}));if(v.fromConvexRing(m).containsPoint(r))return e}return null}export default function S(l,c){return H(l,c)}