UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

1,408 lines 391 kB
function __vite_inject_css__(css, id, forceLightDom){ if (typeof document==='undefined') return; var shadow=!forceLightDom&&typeof window!=='undefined'&&window.__efpShadowDOMStyleParent; var parent=shadow||document.head; var s=document.createElement('style'); s.setAttribute('data-chunk-style', id); s.appendChild(document.createTextNode(css)); parent.appendChild(s);} (function() { try { var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {}; e.SENTRY_RELEASE = { id: "3.7.8" }; var t = new e.Error().stack; t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "ab25749c-3558-42a6-b05d-199c7f94710b", e._sentryDebugIdIdentifier = "sentry-dbid-ab25749c-3558-42a6-b05d-199c7f94710b"); } catch {} })(); import { r as e, t } from "./rolldown-runtime-YBAZwyzS.js"; import { t as n } from "./react-Di3Pmpio.js"; import { t as r } from "./jsx-runtime-C8yjdFgZ.js"; import { a as i, o as a, r as o, s } from "./loadImage-CAq2UZsg.js"; import { A as c, C as l, I as u, _ as d, ct as f, d as p, g as m, j as h, k as g, n as _, o as v, s as y, t as b, w as x } from "./i18n-BEer1tI4.js"; import { n as S } from "./exports-Bo62ffaz.js"; import { t as C } from "./fuse-C01hPccw.js"; import { t as w } from "./react-dom-xeogvqlp.js"; import { t as T } from "./classnames-BRCgwycl.js"; import { i as E, n as D, r as O, t as k } from "./Button-C4gPbjAY.js"; import "./PermissionNotice-D-iU7GsJ.js"; import "./CookieConsent-JWfsWylZ.js"; import { $t as A, D as j, Dt as ee, E as M, Ht as N, Jt as te, Kt as P, Lt as F, Mt as I, Ot as ne, St as re, T as ie, Ut as ae, Xt as oe, Yt as se, _ as ce, a as L, an as le, at as ue, b as de, bt as fe, cn as R, d as pe, en as me, f as he, fn as z, gt as ge, h as _e, ht as ve, i as B, in as ye, jt as be, kt as xe, ln as Se, m as V, n as Ce, nn as H, o as U, ot as we, r as Te, rn as Ee, s as W, sn as De, st as Oe, t as ke, tn as Ae, tt as je, u as Me, un as Ne, ut as Pe, v as G, wt as Fe, x as Ie, xt as Le, y as Re, yt as ze } from "./store-DTwRqruF.js"; import "./Demo-CPD-4aZQ.js"; import { n as Be, r as K, t as Ve } from "./mobx-BLgYz-7U.js"; import "./Gallery-DBbbgZd-.js"; import { t as He } from "./useRenderTarget-Cpdl_o5r.js"; import "./TouchHand-D9gZTA6M.js"; import { a as Ue, c as We, i as Ge, l as Ke, n as qe, o as Je, s as Ye, t as Xe, u as Ze } from "./createWayfinding-Dqwtb_AQ.js"; import { t as Qe } from "./Modal-D5iXq44j.js"; //#region src/components/SessionsFiltersModal.tsx var q = /* @__PURE__ */ e(T(), 1), J = /* @__PURE__ */ e(n(), 1), Y = r(), $e = D(({ store: e, visibleSections: t, open: n, onClose: r }) => { let i = e.state.filters; i.date.pending !== "all" || i.sortOrder.pending !== "desc" || i.use24hFormat.pending !== !1 || i.showBookmarksOnly.pending !== !1 || i.selectedTracks.pending.length > 0 || i.selectedVenues.pending.length; let a = (0, J.useMemo)(() => e.rootStore.eventStore.futureEvents.length, [e.rootStore.eventStore.futureEvents]), o = (0, J.useMemo)(() => { let t = e.rootStore.eventStore.tracks; return t.length ? [{ groupName: "Tracks", items: t.map((t) => ({ id: t.id, name: t.name, color: t.color, countProvider: () => e.rootStore.eventStore.getEventsByTrack(t.id).length })), showGroupActions: !0, fullWidth: !0 }] : []; }, [e.rootStore.eventStore.tracks]), s = (0, J.useMemo)(() => { let t = e.rootStore.eventStore.venues; return t.length ? [{ groupName: "Venues", items: t.map((t) => ({ id: t.id, name: t.name, countProvider: () => e.rootStore.eventStore.getEventsByVenue(t.id).length })), showGroupActions: !0, fullWidth: !0 }] : []; }, [e.rootStore.eventStore.venues]), c = (t) => { let n = t.map((e) => Number(e)); e.setPending("selectedTracks", n); }, l = (t) => { let n = t.map((e) => Number(e)); e.setPending("selectedVenues", n); }, u = n === void 0 ? e.state.isOpen : n, d = r || (() => e.closeFilter()), f = t || e.state.visibleSections; return /* @__PURE__ */ (0, Y.jsx)(Qe, { open: u, title: y("Sessions Filters"), badge: e.activeFiltersCount > 0 ? e.activeFiltersCount : void 0, maxWidth: 800, footerLeft: [{ label: y("Clear all"), variant: "gray", disabled: i.selectedTracks.pending.length === 0 && i.selectedVenues.pending.length === 0, onClick: () => { e.resetFilters(), r && r(); } }], footerRight: [{ label: y("Apply"), variant: "primary", onClick: () => { e.applyFilters(), r && r(); } }], onClickClose: d, children: /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-filters-modal", children: [ f.includes("tracks") && o.length > 0 && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-filters-modal__section", children: /* @__PURE__ */ (0, Y.jsx)(qi, { groups: o, selectedIds: i.selectedTracks.pending, onChange: c, showItemCounts: !0 }) }), f.includes("venues") && s.length > 0 && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-filters-modal__section", children: /* @__PURE__ */ (0, Y.jsx)(qi, { groups: s, selectedIds: i.selectedVenues.pending, onChange: l, showItemCounts: !0 }) }), f.includes("date") && /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-filters-modal__section", children: [/* @__PURE__ */ (0, Y.jsx)("h3", { children: y("Date") }), /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-filters-modal__buttons", children: [ "all", "today", "tomorrow" ].map((t) => /* @__PURE__ */ (0, Y.jsx)("button", { className: (0, q.default)("efp-sessions-filters-modal__btn", { "is-active": i.date.pending === t }), onClick: () => e.setPending("date", t), children: y(t === "all" ? "All dates" : t.charAt(0).toUpperCase() + t.slice(1)) }, t)) })] }), f.includes("time") && a >= 30 && /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-filters-modal__section", children: [/* @__PURE__ */ (0, Y.jsx)("h3", { children: y("Session time") }), /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-filters-modal__buttons", children: [ "all", "morning", "midday", "afternoon" ].map((t) => /* @__PURE__ */ (0, Y.jsx)("button", { className: (0, q.default)("efp-sessions-filters-modal__btn", { "is-active": i.timeOfDay.pending === t }), onClick: () => e.setPending("timeOfDay", t), children: y(t === "all" ? "All times" : t.charAt(0).toUpperCase() + t.slice(1)) }, t)) })] }), f.includes("sort") && /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-filters-modal__section", children: [/* @__PURE__ */ (0, Y.jsx)("h3", { children: y("Sort order") }), /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-filters-modal__buttons", children: [/* @__PURE__ */ (0, Y.jsx)("button", { className: (0, q.default)("efp-sessions-filters-modal__btn", { "is-active": i.sortOrder.pending === "desc" }), onClick: () => e.setPending("sortOrder", "desc"), children: y("Earliest first") }), /* @__PURE__ */ (0, Y.jsx)("button", { className: (0, q.default)("efp-sessions-filters-modal__btn", { "is-active": i.sortOrder.pending === "asc" }), onClick: () => e.setPending("sortOrder", "asc"), children: y("Latest first") })] })] }), f.includes("settings") && /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-filters-modal__section", children: [ /* @__PURE__ */ (0, Y.jsx)("h3", { children: y("Additional settings") }), /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-filters-modal__toggle", children: /* @__PURE__ */ (0, Y.jsx)(hi, { name: "showBookmarksOnly", label: y("Show bookmarks only"), value: i.showBookmarksOnly.pending, onChange: (t) => e.setPending("showBookmarksOnly", t) }) }), /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-filters-modal__toggle", children: /* @__PURE__ */ (0, Y.jsx)(hi, { name: "use24hFormat", label: y("Show time in 24h format"), value: i.use24hFormat.pending, onChange: (t) => e.setPending("use24hFormat", t) }) }) ] }) ] }) }); }), et = ze(), tt = 5, nt = 768, rt = ({ children: e, ariaLabel: t, leftAriaLabel: n, rightAriaLabel: r, className: i, scrollAmount: a = 150, mobileBreakpoint: o = nt, showArrowsOnMobile: s = !1, arrowPosition: c = "inside", scrollBehavior: l = "smooth", isRtl: u = !1, enableDragScroll: d = !0, dragScrollSensitivity: f = 1, onScroll: p }) => { let m = (0, J.useRef)(null), h = (0, J.useRef)(null), g = (0, J.useRef)(null), [_, v] = (0, J.useState)(!1), [y, b] = (0, J.useState)(!1), [x, S] = (0, J.useState)(!1), [C, w] = (0, J.useState)(0), [T, E] = (0, J.useState)(0), D = (0, J.useCallback)(() => window.innerWidth > o && !("ontouchstart" in window || navigator.maxTouchPoints > 0), [o]), O = (0, J.useCallback)((e, t, n) => { let r = t - n; return e < 0 ? Math.abs(e) : e > r / 2 ? r - e : e; }, []), k = (0, J.useCallback)(() => { let e = h.current; if (!e) return; if (window.innerWidth <= o && !s) { v(!1), b(!1); return; } let { scrollLeft: t, scrollWidth: n, clientWidth: r } = e; if (!(n > r)) { v(!1), b(!1); return; } if (u) { let e = n - r, i = O(t, n, r); v(i > tt), b(i < e - tt); } else v(t > tt), b(t < n - r - tt); }, [ o, s, O, u ]), A = (0, J.useCallback)(() => { k(), p && h.current && p(h.current.scrollLeft); }, [k, p]), j = (0, J.useCallback)((e) => { let t = h.current; if (!t) return; let n = t.scrollLeft, r; if (u) { let i = -(t.scrollWidth - t.clientWidth); r = e === "left" ? Math.min(0, n + a) : Math.max(i, n - a); } else r = e === "left" ? Math.max(0, n - a) : n + a; t.scrollTo({ left: r, behavior: l }); }, [ a, l, u ]), ee = (0, J.useCallback)((e) => { !d || !D() || !h.current || ge(e.target) || (S(!0), w(e.pageX - h.current.offsetLeft), E(h.current.scrollLeft), e.preventDefault()); }, [d, D]), M = (0, J.useCallback)((e) => { if (!x || !h.current) return; e.preventDefault(); let t = (e.pageX - h.current.offsetLeft - C) * f; h.current.scrollLeft = T - t; }, [ x, C, T, f ]), N = (0, J.useCallback)(() => { S(!1); }, []); (0, J.useEffect)(() => { if (x) return document.addEventListener("mousemove", M), document.addEventListener("mouseup", N), document.addEventListener("mouseleave", N), () => { document.removeEventListener("mousemove", M), document.removeEventListener("mouseup", N), document.removeEventListener("mouseleave", N); }; }, [ x, M, N ]), (0, J.useEffect)(() => { k(); let e = () => k(); return window.addEventListener("resize", e), m.current && !g.current && (g.current = new et.ResizeObserver(k), g.current.observe(m.current)), () => { window.removeEventListener("resize", e), g.current && (g.current.disconnect(), g.current = null); }; }, [k]); let te = d && D() ? x ? "grabbing" : "grab" : void 0; return /* @__PURE__ */ (0, Y.jsx)("div", { ref: m, className: (0, q.default)("efp-scrollable-row", i), role: "group", "aria-label": t, children: /* @__PURE__ */ (0, Y.jsxs)("div", { className: (0, q.default)("efp-scrollable-row__container", { [`efp-scrollable-row__container--${c}`]: c }), children: [ _ && /* @__PURE__ */ (0, Y.jsx)("button", { type: "button", className: (0, q.default)("efp-scrollable-row__arrow", "efp-scrollable-row__arrow--left", { "efp-scrollable-row__arrow--rtl": u }), onClick: () => j("left"), "aria-label": n, children: /* @__PURE__ */ (0, Y.jsx)("i", { className: "icon-chevron-left" }) }), /* @__PURE__ */ (0, Y.jsx)("div", { ref: h, className: (0, q.default)("efp-scrollable-row__scroll-wrapper", { "efp-scrollable-row__scroll-wrapper--dragging": x }), onScroll: A, onMouseDown: ee, style: { cursor: te, userSelect: x ? "none" : void 0 }, children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-scrollable-row__content", children: e }) }), y && /* @__PURE__ */ (0, Y.jsx)("button", { type: "button", className: (0, q.default)("efp-scrollable-row__arrow", "efp-scrollable-row__arrow--right", { "efp-scrollable-row__arrow--rtl": u }), onClick: () => j("right"), "aria-label": r, children: /* @__PURE__ */ (0, Y.jsx)("i", { className: "icon-chevron-right" }) }) ] }) }); }, it = D((e) => /* @__PURE__ */ (0, Y.jsx)(rt, { ...e, isRtl: W.rtl, leftAriaLabel: y("Scroll left"), rightAriaLabel: y("Scroll right") })), at = (0, J.memo)(({ id: e, label: t, icon: n, enabled: r, active: i, tooltip: a, badge: o, variant: s = "default", showResetButton: c = !1, interfaceId: l }) => { let u = (0, J.useCallback)(() => { r && U.shortcutRegistry.handleShortcutClick(l, e); }, [ r, l, e ]), d = (0, J.useCallback)((t) => { t.stopPropagation(), r && i && U.shortcutRegistry.handleShortcutReset(l, e); }, [ r, i, l, e ]); return /* @__PURE__ */ (0, Y.jsxs)("button", { className: (0, q.default)("shortcut-button", `shortcut-button--${s}`, { "is-active": i, "is-disabled": !r }), onClick: u, disabled: !r, title: a || t, type: "button", "aria-label": a || t, children: [ c && i && /* @__PURE__ */ (0, Y.jsx)("div", { className: "shortcut-reset-button", onClick: d, title: y("Reset filter"), "aria-label": y("Reset filter"), children: /* @__PURE__ */ (0, Y.jsx)("i", { className: "icon-close-solid" }) }), n && /* @__PURE__ */ (0, Y.jsx)("i", { className: n }), t && /* @__PURE__ */ (0, Y.jsx)("span", { className: "shortcut-button__label", children: t }), o && /* @__PURE__ */ (0, Y.jsx)("span", { className: "shortcut-button__badge", children: o }) ] }); }); at.displayName = "ShortcutButton"; //#endregion //#region src/components/Shortcuts/ShortcutsFiltersButton.tsx var ot = (0, J.memo)(D(({ interfaceId: e, className: t }) => { let { shortcutRegistry: n } = U, r = n.getShortcuts(e).filter((e) => e.active).length, i = 0; e === "sessions" ? i = U.sessionsFilterStore.activeFiltersCount : e === "speakers" && (i = U.speakerFilterStore.activeFiltersCount); let a = Math.max(r, i); return /* @__PURE__ */ (0, Y.jsx)("button", { className: (0, q.default)("shortcuts-filters-button", t, { "is-active": a > 0 }), onClick: () => { e === "sessions" ? U.sessionsFilterStore.openFilterWithSections([ "tracks", "venues", "date", "time", "sort", "settings" ]) : e === "speakers" && U.speakerFilterStore.openFilterWithSections(["companies", "jobTitles"]); }, type: "button", "aria-label": y("Open filters"), title: y("Open filters"), children: /* @__PURE__ */ (0, Y.jsx)("i", { className: "icon-filter-horizontal-solid" }) }); })); ot.displayName = "ShortcutsFiltersButton"; //#endregion //#region src/components/Shortcuts/ShortcutsToolbar.tsx var st = (0, J.memo)(D(({ interfaceId: e, showFiltersButton: t = !0, className: n }) => { let { shortcutRegistry: r } = U, i = r.getShortcuts(e); return !r.shouldShowShortcuts(e) || i.length === 0 ? null : /* @__PURE__ */ (0, Y.jsx)("div", { className: (0, q.default)("shortcuts-toolbar", n), children: /* @__PURE__ */ (0, Y.jsxs)(it, { ariaLabel: y("Shortcuts"), className: "shortcuts-toolbar__scrollable", scrollAmount: 150, showArrowsOnMobile: !1, arrowPosition: "inside", children: [t && /* @__PURE__ */ (0, Y.jsx)(ot, { interfaceId: e }), i.map((t) => /* @__PURE__ */ (0, Y.jsx)(at, { ...t, interfaceId: e }, t.id))] }) }); })); st.displayName = "ShortcutsToolbar"; //#endregion //#region src/components/Sessions.tsx var ct = D(({ showFilters: e = !0 }) => { let t = U.eventStore.eventItems, { filters: { date: { value: n }, timeOfDay: { value: r }, sortOrder: { value: i }, showBookmarksOnly: { value: a }, showLiveOnly: { value: o }, selectedTracks: { value: s }, selectedVenues: { value: c } } } = U.sessionsFilterStore.state, l = (0, J.useMemo)(() => { let e = /* @__PURE__ */ new Date(); e.setHours(0, 0, 0, 0); let i = new Date(e); i.setDate(e.getDate() + 1); let l = t; if (n !== "all" && (l = l.filter((t) => { let r = new Date(t.startDate); if (r.setHours(0, 0, 0, 0), n === "today") return r.getTime() === e.getTime(); if (n === "tomorrow") return r.getTime() === i.getTime(); if (n === "past") { let e = /* @__PURE__ */ new Date(); return new Date(t.endDate) < e; } return !0; })), r !== "all" && n === "today" && (l = l.filter((e) => { let t = new Date(e.startDate).getHours(); switch (r) { case "morning": return t >= 6 && t < 12; case "midday": return t >= 12 && t < 18; case "afternoon": return t >= 18 && t <= 23; default: return !0; } })), W.selectedTrack && (l = l.filter((e) => e.tracks.some((e) => e.id === W.selectedTrack.id))), a && (l = l.filter((e) => e.bookmarked)), o) { let e = /* @__PURE__ */ new Date(); l = l.filter((t) => { let n = new Date(t.startDate), r = new Date(t.endDate); return n <= e && e <= r; }); } s.length > 0 && (l = l.filter((e) => e.tracks.some((e) => s.includes(e.id)))), c.length > 0 && (l = l.filter((e) => e.boothId && c.includes(e.boothId))); let u = U.searchStore.searchText; return u && (l = new C(l, { keys: ["name"], threshold: .3, ignoreLocation: !0, includeScore: !0 }).search(u).map((e) => e.item)), l; }, [ t, U.searchStore.searchText, n, r, W.selectedTrack, a, o, s, c, U.sessionsFilterStore.state ]), u = (0, J.useMemo)(() => [...l].sort((e, t) => { let n = new Date(e.startDate).getTime(), r = new Date(t.startDate).getTime(); return i === "asc" ? r - n : n - r; }), [l, i]); return /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-sessions-content", children: [e && /* @__PURE__ */ (0, Y.jsx)(st, { interfaceId: "sessions" }), u.length > 0 ? /* @__PURE__ */ (0, Y.jsx)(un, { events: u, showBooths: !0, isSessions: !0, onEventClick: (e) => { U.selectEventItem(e, !0); } }) : /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-sessions-empty", children: U.sessionsFilterStore.activeFiltersCount > 0 || U.searchStore.searchText || W.selectedTrack ? y(a ? "No bookmarked events found. Try adjusting your filters." : "No events found. Try adjusting your filters.") : y("No events found") })] }); }), lt = D((e) => W.list.type !== "sessions" || W.details ? null : /* @__PURE__ */ (0, Y.jsx)(ct, { ...e })), ut = D(() => { let e = U.toursStore.tourItems, t = U.toursStore.hasTours, n = U.toursStore.currentExpo, r = U.toursStore.toursLoadError, i = (0, J.useMemo)(() => { let t = e, n = U.searchStore.searchText; return n && (t = new C(t, { keys: ["name"], threshold: .3, ignoreLocation: !0, includeScore: !0 }).search(n).map((e) => e.item)), t; }, [e, U.searchStore.searchText]), a = (e, t, n) => { U.toursStore.launchTour(e, t, n); }; return E(() => r ? /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-content", children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-empty", children: /* @__PURE__ */ (0, Y.jsxs)("p", { children: [ y("Error loading Guided Tours"), ": ", r ] }) }) }) : t ? i.length === 0 ? /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-content", children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-empty", children: /* @__PURE__ */ (0, Y.jsx)("p", { children: y("No Guided Tours found matching your search") }) }) }) : /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-content", children: /* @__PURE__ */ (0, Y.jsx)(Ht, { tours: i, onTourClick: a }) }) : /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-content", children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-empty", children: /* @__PURE__ */ (0, Y.jsxs)("p", { children: [ y("No Guided Tours available for"), " ", n ] }) }) })); }), dt = D((e) => W.list.type !== "tours" || W.details ? null : /* @__PURE__ */ (0, Y.jsx)(ut, { ...e })), ft = ({ active: e, isCenter: t = !1 }) => /* @__PURE__ */ (0, Y.jsx)("div", { className: (0, q.default)("efp-spinner", { "is-hidden": !e }), style: t ? { top: 0, bottom: 0, left: 0, right: 0, margin: "auto" } : void 0, children: /* @__PURE__ */ (0, Y.jsx)("svg", { viewBox: "25 25 50 50", children: /* @__PURE__ */ (0, Y.jsx)("circle", { r: "20", cy: "50", cx: "50" }) }) }), pt = /* @__PURE__ */ t(((e, t) => { (function(n) { var r = (function() { var e = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g, t = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, n = /[^-+\dA-Z]/g; return function(c, l, u, d) { if (arguments.length === 1 && s(c) === "string" && !/\d/.test(c) && (l = c, c = void 0), c = c || /* @__PURE__ */ new Date(), c instanceof Date || (c = new Date(c)), isNaN(c)) throw TypeError("Invalid date"); l = String(r.masks[l] || l || r.masks.default); var f = l.slice(0, 4); (f === "UTC:" || f === "GMT:") && (l = l.slice(4), u = !0, f === "GMT:" && (d = !0)); var p = u ? "getUTC" : "get", m = c[p + "Date"](), h = c[p + "Day"](), g = c[p + "Month"](), _ = c[p + "FullYear"](), v = c[p + "Hours"](), y = c[p + "Minutes"](), b = c[p + "Seconds"](), x = c[p + "Milliseconds"](), S = u ? 0 : c.getTimezoneOffset(), C = a(c), w = o(c), T = { d: m, dd: i(m), ddd: r.i18n.dayNames[h], dddd: r.i18n.dayNames[h + 7], m: g + 1, mm: i(g + 1), mmm: r.i18n.monthNames[g], mmmm: r.i18n.monthNames[g + 12], yy: String(_).slice(2), yyyy: _, h: v % 12 || 12, hh: i(v % 12 || 12), H: v, HH: i(v), M: y, MM: i(y), s: b, ss: i(b), l: i(x, 3), L: i(Math.round(x / 10)), t: v < 12 ? r.i18n.timeNames[0] : r.i18n.timeNames[1], tt: v < 12 ? r.i18n.timeNames[2] : r.i18n.timeNames[3], T: v < 12 ? r.i18n.timeNames[4] : r.i18n.timeNames[5], TT: v < 12 ? r.i18n.timeNames[6] : r.i18n.timeNames[7], Z: d ? "GMT" : u ? "UTC" : (String(c).match(t) || [""]).pop().replace(n, ""), o: (S > 0 ? "-" : "+") + i(Math.floor(Math.abs(S) / 60) * 100 + Math.abs(S) % 60, 4), S: [ "th", "st", "nd", "rd" ][m % 10 > 3 ? 0 : (m % 100 - m % 10 != 10) * m % 10], W: C, N: w }; return l.replace(e, function(e) { return e in T ? T[e] : e.slice(1, e.length - 1); }); }; })(); r.masks = { default: "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:sso", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'", expiresHeaderFormat: "ddd, dd mmm yyyy HH:MM:ss Z" }, r.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], timeNames: [ "a", "p", "am", "pm", "A", "P", "AM", "PM" ] }; function i(e, t) { for (e = String(e), t = t || 2; e.length < t;) e = "0" + e; return e; } function a(e) { var t = new Date(e.getFullYear(), e.getMonth(), e.getDate()); t.setDate(t.getDate() - (t.getDay() + 6) % 7 + 3); var n = new Date(t.getFullYear(), 0, 4); n.setDate(n.getDate() - (n.getDay() + 6) % 7 + 3); var r = t.getTimezoneOffset() - n.getTimezoneOffset(); t.setHours(t.getHours() - r); var i = (t - n) / (864e5 * 7); return 1 + Math.floor(i); } function o(e) { var t = e.getDay(); return t === 0 && (t = 7), t; } function s(e) { return e === null ? "null" : e === void 0 ? "undefined" : typeof e == "object" ? Array.isArray(e) ? "array" : {}.toString.call(e).slice(8, -1).toLowerCase() : typeof e; } typeof define == "function" && define.amd ? define(function() { return r; }) : typeof e == "object" ? t.exports = r : n.dateFormat = r; })(e); })), mt = (e) => { let t = (0, J.useMemo)(() => e ? U.heatmapStore.getClicksByItem(e) : 0, [e]); return { clicks: t, background: (0, J.useMemo)(() => U.heatmapStore.getColorByClicks(t), [t]) }; }, ht = "#FFFF99", gt = ({ text: e, highlight: t }) => { if (!t || !e) return /* @__PURE__ */ (0, Y.jsx)(Y.Fragment, { children: e }); let n = e.toLowerCase().indexOf(t.toLowerCase()); if (n === -1) return /* @__PURE__ */ (0, Y.jsx)(Y.Fragment, { children: e }); let r = n + t.length; return /* @__PURE__ */ (0, Y.jsxs)(Y.Fragment, { children: [ e.slice(0, n), /* @__PURE__ */ (0, Y.jsx)("mark", { style: { background: `linear-gradient(to top, ${ht}, transparent)` }, children: e.slice(n, r) }), e.slice(r) ] }); }, _t = ({ id: e, title: t, subtitle: n, image: r, icon: i, typeColor: a, iconClassName: o, variant: s = "default", titleBadge: c, datetime: l, subtitleLabel: u, additionalInfo: d = [], bookmarked: f = !1, featured: p = !1, visited: m, current: h = !1, heatmapColor: g, accentBorderColor: _, hideUserState: v = !1, compactDetails: y, secondaryText: b, highlight: x, featuredLabel: S, hallLabel: C, levelLabel: w, onClick: T }) => { let E = !!(l != null && l.date || l != null && l.time), D = E || !!u || !!n; return /* @__PURE__ */ (0, Y.jsx)("div", { role: "button", className: (0, q.default)("efp-entity-item", { "is-featured": p, "is-visited": m, "is-current": h, "has-heatmap": !!g, "has-accent": !!_, "is-person": s === "person" }), "aria-label": t, tabIndex: 0, "aria-current": h ? "true" : void 0, onClick: () => T == null ? void 0 : T(e), onKeyDown: (t) => { (t.key === "Enter" || t.key === " ") && (t.preventDefault(), T == null || T(e)); }, style: { ...a ? { "--item-type-color": a } : {}, ...g && { "--heatmap-color": g }, ..._ && { "--accent-border-color": _ } }, children: /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__body", children: [/* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__left", children: [/* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-entity-item__icon", children: i ? /* @__PURE__ */ (0, Y.jsx)("img", { src: i, alt: t }) : o ? /* @__PURE__ */ (0, Y.jsx)("i", { className: o, "aria-hidden": "true" }) : null }), !v && /* @__PURE__ */ (0, Y.jsxs)(Y.Fragment, { children: [m && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-entity-item__visited", children: /* @__PURE__ */ (0, Y.jsx)("i", { className: "icon-checkmark" }) }), f && /* @__PURE__ */ (0, Y.jsx)("i", { className: (0, q.default)("efp-entity-item__bookmarked", "icon-bookmark-solid") })] })] }), /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__right", children: [/* @__PURE__ */ (0, Y.jsxs)("div", { className: (0, q.default)("efp-entity-item__content", { "with-image": r }), children: [ /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__header", children: [/* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__title", children: [ /* @__PURE__ */ (0, Y.jsx)(gt, { text: t, highlight: x }), b && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-entity-item__description", children: /* @__PURE__ */ (0, Y.jsx)(gt, { text: b, highlight: x }) }), c !== void 0 && /* @__PURE__ */ (0, Y.jsx)("span", { children: c }) ] }), p && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-entity-item__featured", children: S })] }), D && /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__subtitle", children: [ E && /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-entity-item__datetime", children: [(l == null ? void 0 : l.date) && /* @__PURE__ */ (0, Y.jsx)("strong", { children: l.date }), (l == null ? void 0 : l.time) && /* @__PURE__ */ (0, Y.jsx)("span", { children: l.time })] }), u && /* @__PURE__ */ (0, Y.jsx)("span", { children: u }), n && /* @__PURE__ */ (0, Y.jsx)("div", { children: n }) ] }), !!d.length && /* @__PURE__ */ (0, Y.jsx)("ul", { className: (0, q.default)("efp-entity-item__details", { "compact-details": y }), children: d.map((e, t) => /* @__PURE__ */ (0, Y.jsxs)("li", { className: "efp-entity-item__details-item", children: [e.type === "location" && /* @__PURE__ */ (0, Y.jsxs)(Y.Fragment, { children: [ e.locationName && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-entity-item__details-item-booth", children: /* @__PURE__ */ (0, Y.jsx)(gt, { text: e.locationName, highlight: x }) }), e.hall && /* @__PURE__ */ (0, Y.jsxs)("div", { children: [ C, "\xA0", /* @__PURE__ */ (0, Y.jsx)("span", { children: e.hall }) ] }), e.level && /* @__PURE__ */ (0, Y.jsxs)("div", { children: [e.showLevelLabel && /* @__PURE__ */ (0, Y.jsxs)("span", { children: [w, "\xA0"] }), /* @__PURE__ */ (0, Y.jsx)("span", { children: e.level })] }) ] }), e.type === "text" && /* @__PURE__ */ (0, Y.jsx)("span", { children: e.text })] }, t)) }) ] }), r && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-entity-item__image", children: /* @__PURE__ */ (0, Y.jsx)("img", { src: r, alt: t }) })] })] }) }); }, vt = (e) => !!e && /^\d+$/.test(e), yt = { booth: { typeColor: "var(--color-booth)" }, exhibitor: { typeColor: "var(--color-exhibitor)" }, event: { typeColor: "var(--color-event)", hasDatetime: !0 }, speaker: { typeColor: "var(--color-speaker)", variant: "person" }, category: { typeColor: "var(--color-category)", hasTitleBadge: !0, hasSubtitleLabel: !0 } }, bt = (e) => e.type === "location" ? { ...e, showLevelLabel: vt(e.level) } : e, X = D(({ kind: e, itemsCount: t, date: n, time: r, additionalInfo: i, ...a }) => { var o; let s = yt[e], c = s.hasDatetime && (n || r) ? { date: n, time: r } : void 0, l = W.list.type === "search" ? W.list.text : void 0; return /* @__PURE__ */ (0, Y.jsx)(_t, { ...a, additionalInfo: i == null ? void 0 : i.map(bt), typeColor: s.typeColor, iconClassName: `icon-${e}-solid`, variant: (o = s.variant) == null ? "default" : o, titleBadge: s.hasTitleBadge ? t : void 0, datetime: c, subtitleLabel: s.hasSubtitleLabel ? y("Category") : void 0, highlight: l, featuredLabel: y("Featured"), hallLabel: y("Hall"), levelLabel: y("Level") }); }), xt = D(({ text: e }) => /* @__PURE__ */ (0, Y.jsx)(gt, { text: e, highlight: W.list.type === "search" ? W.list.text : void 0 })), St = ({ line1: e, line2: t, lineEnd: n, slug: r, style: i, className: a, active: o = !1, onClick: s, onMouseOver: c, onMouseOut: l, highlight: u = !0 }) => { return /* @__PURE__ */ (0, Y.jsxs)("a", { href: "?" + encodeURIComponent(r), onClick: d, className: "efp-simple-row" + (o ? " active" : "") + " " + a, onMouseOver: f, onMouseOut: p, style: { marginLeft: R.isRebooking ? "5px" : null, ...i }, children: [/* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-simple-row__col", children: [/* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-simple-row__main", dir: "auto", children: u ? /* @__PURE__ */ (0, Y.jsx)(xt, { text: e }) : e }), /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-simple-row__sub", dir: "auto", children: t })] }), n && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-simple-row__end", children: n })] }); function d(e) { e.preventDefault(), s(); } function f() { c && c(); } function p() { l && l(); } }, Ct = ({ yah: e, className: t }) => { let { clicks: n, background: r } = mt(e); return E(() => /* @__PURE__ */ (0, Y.jsx)(St, { style: { background: W.heatmapYah ? `linear-gradient(to right, transparent 98%, ${r} 93%) center / 100% 99% no-repeat` : null }, className: t, slug: e.id.toString(), onClick: i, line1: e.name, line2: e.z ? `Level ${e.z}` : "", lineEnd: n.toString(), highlight: !1 })); function i() { let t = B.findLayer(e.z); t && B.updateVisibility(t, !0), U.routeStore.selectMarker(e.id.toString(), !0); } }, Z = /* @__PURE__ */ e(pt(), 1), wt = D(({ item: e, index: t, current: n, compactDetails: r, onClick: i }) => { let a = { background: void 0, clicks: void 0 }; W.heatmap && (e instanceof Ae || e instanceof H || e instanceof se) && (a = mt(e)); let o = W.foundInDescriptionStruct[e.id]; if (e instanceof Ae) { var s; let t = "exhibitor"; return /* @__PURE__ */ (0, Y.jsx)(X, { onClick: (e) => i(t, e), id: e.id.toString(), featured: e.featured, kind: t, image: e.logo, title: e.name, bookmarked: e.bookmarked, visited: e.visited, additionalInfo: e.booths.map((e) => ({ type: "location", locationName: e.name, level: e.layer && (R.shortLevelName ? e.layer.shortName : e.layer.description) || "" })), current: n, compactDetails: r, heatmapColor: a.background, accentBorderColor: R.isRebooking ? (s = ne[e.rebookingState]) == null ? void 0 : s.color.primary : void 0, hideUserState: W.kiosk, secondaryText: o }); } if ("rect" in e) return /* @__PURE__ */ (0, Y.jsx)(X, { onClick: (e) => i("booth", e), id: e.id.toString(), kind: "booth", title: e.name, icon: e.poiIcon, bookmarked: e.bookmarked, current: n, heatmapColor: a.background, secondaryText: o }); if (e instanceof me) return /* @__PURE__ */ (0, Y.jsx)(X, { onClick: (e) => i("category", e), id: e.id.toString(), itemsCount: e.exhibitors.length, kind: "category", title: e.name, current: n, secondaryText: o }); if (e instanceof he) { let t = []; return e.jobTitle && t.push({ type: "text", text: e.jobTitle }), /* @__PURE__ */ (0, Y.jsx)(X, { id: e.id.toString(), kind: "speaker", title: e.name, subtitle: e.company, image: e.photoFile, additionalInfo: t, bookmarked: e.bookmarked, onClick: () => U.selectSpeaker(e, !0), secondaryText: o }, e.id); } if (e instanceof A) { var c, l; let t = e.boothId ? ke.booths.find((t) => t.id === e.boothId) : null; return /* @__PURE__ */ (0, Y.jsx)(X, { id: e.id.toString(), onClick: (e) => i("event", e), kind: "event", title: e.name, date: (0, Z.default)(e.startDate, "dd mmm ddd"), time: `${(0, Z.default)(e.startDate, "h:MM")} - ${(0, Z.default)(e.endDate, "h:MM")}`, additionalInfo: t ? [{ type: "location", locationName: t.name, level: R.shortLevelName ? (c = t.layer) == null ? void 0 : c.shortName : (l = t.layer) == null ? void 0 : l.description }] : [], bookmarked: e.bookmarked, visited: e.visited, current: n, hideUserState: W.kiosk, secondaryText: o }); } return e instanceof se ? /* @__PURE__ */ (0, Y.jsx)(Ct, { yah: e, className: `list-row ${t === W.activeListIndex ? "active" : ""}` }) : null; }), Tt = ({ onDragStart: e, onDragMove: t, onDragEnd: n }) => { let r = (0, J.useRef)(!1), i = (0, J.useCallback)((t) => { r.current = !0, e(t.touches[0].clientY); }, [e]), a = (0, J.useCallback)((e) => { r.current && t(e.touches[0].clientY); }, [t]), o = (0, J.useCallback)(() => { r.current && (r.current = !1, n()); }, [n]), s = (0, J.useCallback)((t) => { r.current = !0, e(t.clientY); }, [e]), c = (0, J.useCallback)((e) => { r.current && t(e.clientY); }, [t]), l = (0, J.useCallback)(() => { r.current && (r.current = !1, n()); }, [n]); return { touchHandlers: { onTouchStart: i, onTouchMove: a, onTouchEnd: o }, mouseHandlers: { onMouseDown: s, onMouseMove: c, onMouseUp: l } }; }, Et = () => { let [e, t] = (0, J.useState)(() => window === window.top ? { width: window.innerWidth, height: window.innerHeight } : { width: document.documentElement.clientWidth || window.innerWidth, height: document.documentElement.clientHeight || window.innerHeight }); return (0, J.useEffect)(() => { let e = () => { window === window.top ? t({ width: window.innerWidth, height: window.innerHeight }) : t({ width: document.documentElement.clientWidth || window.innerWidth, height: document.documentElement.clientHeight || window.innerHeight }); }; return window.addEventListener("resize", e), window.addEventListener("orientationchange", e), () => { window.removeEventListener("resize", e), window.removeEventListener("orientationchange", e); }; }, []), e; }; //#endregion //#region src/tools/debounce.ts function Dt(e, t) { let n; return (...r) => { clearTimeout(n), n = setTimeout(() => { e(...r); }, t); }; } //#endregion //#region src/components/OverlayParticles.tsx function Ot() { let [t, n] = (0, J.useState)(!1), [r, i] = (0, J.useState)(), [a, o] = (0, J.useState)(!1), s = (0, J.useRef)(); return Ve(() => { var e; return o(W.overlayPosition === "left" && ((e = c.getEngine()) == null ? void 0 : e.name) !== "EdgeHTML"); }), (0, J.useEffect)(() => { a && !r && import( /* webpackChunkName: "particlesjs" */ "./particles.min-4B9bHzCK.js" ).then((t) => /* @__PURE__ */ e(t.default, 1)).then((e) => { i(e.default); }); }, [a, r]), (0, J.useEffect)(() => { if (r && a) { let e = r.init({ selector: s.current, maxParticles: 50, speed: .4, sizeVariations: 4, color: "#0C5AB8", connectParticles: !0 }); return n(!0), () => { e.destroy(); }; } }, [r, a]), a ? /* @__PURE__ */ (0, Y.jsx)("div", { children: /* @__PURE__ */ (0, Y.jsx)("canvas", { className: `overlay-particles__canvas ${t ? "-visible" : ""}`, ref: s }) }) : null; } var kt = D(Ot), At = (0, J.createContext)(null), jt = 70, Mt = "0.3s", Nt = 10, Pt = () => window === window.top ? window.innerHeight : document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight, Ft = (e = Pt(), t, n, r) => ({ small: e / t, medium: e / n, full: e - r }), It = ({ children: e, open: t, size: n = "medium", particles: r = !1, className: i, onChangeSize: a, onScrollStateChange: o, smallSizeMultiplier: s = 12.6, mediumSizeMultiplier: c = 2.6, fullSizeOffset: l = 0, scrollThreshold: u = Nt, disableDrag: d = !1, forceFull: f = !1, scrollResetKey: p }) => { let { width: m, height: h } = Et(), [g, _] = (0, J.useState)(() => Ft(Pt(), s, c, l)), [v, b] = (0, J.useState)(() => m <= 768), [x, S] = (0, J.useState)(!1), [C, w] = (0, J.useState)(() => g[n]), [T, E] = (0, J.useState)(() => g[n]), [D, O] = (0, J.useState)(!1), [k, A] = (0, J.useState)(t), [j, ee] = (0, J.useState)(!1), M = (0, J.useRef)(), N = (0, J.useRef)(), te = (0, J.useRef)(null), P = (0, J.useRef)(null), F = (0, J.useRef)(null), I = (0, J.useCallback)((e) => { let t = g[e]; w(t), E(t), a == null || a(e); }, [g, a]), ne = (0, J.useMemo)(() => v ? f && t ? { height: Pt() } : { height: t || D ? T : 0 } : { height: t ? "auto" : void 0 }, [ v, t, T, x, n, D, f ]), re = (0, J.useCallback)((e) => { let t = [ g.small, g.medium, g.full ].sort(); if (e >= g.full) { I("full"); return; } if (e <= g.small) { I("small"); return; } let n = e > (C || g.medium) ? t.find((t) => t + jt >= e) || g.full : t.reverse().find((t) => t - jt <= e) || g.small; n === g.full ? I("full") : n === g.medium ? I("medium") : I("small"); }, [ g, C, I ]), ie = (0, J.useCallback)((e) => { S(!0), M.current = e; }, []), ae = (0, J.useCallback)((e) => { let t = M.current; if (t === void 0) return; let n = F.current; if ((n == null ? void 0 : n.scrollTop) > 0 && C === g.full) return; let r = t - e, i = (C || g.medium) + r; n && C === g.full && i < C && (n.style.overflow = "hidden"), i = Math.min(Math.max(i, g.small), g.full), N.current = r, E(i); }, [C, g]), oe = (0, J.useCallback)(() => { S(!1), M.current = void 0; let e = F.current; e && e.style.removeProperty("overflow"); let t = N.current; N.current = void 0, t !== void 0 && T !== void 0 && re(T); }, [T, re]), se = (0, J.useCallback)((e) => { x || I(n === "small" ? "medium" : n === "medium" ? "full" : "small"); }, [ x, n, I ]), { touchHandlers: ce, mouseHandlers: L } = Tt({ onDragStart: ie, onDragMove: ae, onDragEnd: oe }), le = (0, J.useCallback)(() => { let e = F.current; if (!e) return; let t = e.scrollTop >= u; j !== t && (ee(t), o == null || o(t)); }, [ u, j, o ]), ue = (0, J.useMemo)(() => Dt(() => { var e, t; (e = (t = window).__resett) == null || e.call(t); }, 250), []); return (0, J.useEffect)(() => { if (!v || d) return; let e = te.current, t = P.current, n = F.current; return e && (e.ontouchstart = ce.onTouchStart, e.ontouchend = ce.onTouchEnd, window.ontouchmove = ce.onTouchMove, e.onmousedown = L.onMouseDown, e.onmouseup = L.onMouseUp, window.onmousemove = L.onMouseMove), t && t.addEventListener("mouseup", se), n && (n.ontouchstart = () => { C && C < g.full && n && (n.style.overflow = "hidden"); }), () => { e && (window.ontouchmove = null, window.onmousemove = null), t && t.removeEventListener("mouseup", se); }; }, [ v, ce, L, se, C, g ]), (0, J.useEffect)(() => { b(m <= 768), _(Ft(Pt(), s, c, l)); }, [ m, h, s, c, l ]), (0, J.useEffect)(() => { if (t) { A(!0), O(!0); let e = setTimeout(() => { I(n), O(!1); }, 10); return () => clearTimeout(e); } else { O(!0), v && E(0); let e = setTimeout(() => { A(!1), O(!1), ee(!1); }, parseFloat(Mt) * 1e3); return () => clearTimeout(e); } }, [ t, n, I, v ]), (0, J.useEffect)(() => { if (t && !D) { var e; (e = F.current) == null || e.scrollTo({ top: 0 }), ee(!1), o == null || o(!1); } }, [ t, D, o, p ]), k ? /* @__PURE__ */ (0, Y.jsx)(At.Provider, { value: F.current, children: /* @__PURE__ */ (0, Y.jsxs)("div", { className: (0, q.default)("efp-overlay", { "is-open": t, "is-draggable": x, "is-small": n === "small", "is-medium": n === "medium", "is-full": n === "full", "is-mobile": v, "is-desktop": !v, "is-hidden": !v && !t, "is-animating": D, "is-scrolled": j, "is-forced-full": f && v }, i), style: ne, ref: te, children: [!d && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-overlay__draghandle", ref: P }), /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-overlay__scroll", ref: F, onScroll: (e) => { le(), ue(); }, children: [r ? /* @__PURE__ */ (0, Y.jsx)(kt, {}) : null, /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-overlay__content", children: e || y("No content") })] })] }) }) : null; }, Lt = () => import( /* webpackChunkName: "react-virtuoso-entity-list" */ "./dist-DLi44XiQ.js" ).then((e) => ({ default: e.Virtuoso })).catch(() => new Promise((e) => setTimeout(() => e(Lt()), 3e3))), Rt = (0, J.lazy)(Lt), zt = ["ipia2025"], Q = D(({ updatedScrollableRef: e, updateScroll: t }) => { let n = (0, J.useContext)(At), r = (0, J.useRef)(null), i = W.getListScrollItemId(W.list.type), a = zt.includes(z.EXPO); (0, J.useEffect)(() => { let e = W.getListScrollTop(W.list.type), t = W.getListScrollItemId(W.list.type); (e > 0 || t) && setTimeout(() => { if (r.current) { if (t) { let e = W.listItems.findIndex((e) => { var n; return (e == null || (n = e.id) == null ? void 0 : n.toString()) === t.toString(); }); if (e !== -1) { r.current.scrollToIndex({ index: e, align: "center", behavior: "auto" }); return; } } e > 0 && r.current.scrollTo({ top: e, behavior: "auto" }); } }, 100); }, [W.list.type]); let o = W.showRouteInstantly, s = (0, J.useCallback)((t, n) => { var i; let a = parseInt(n, 10); if (W.setListScrollItemId((i = W.list) == null ? void 0 : i.type, a), r.current) r.current.getState((e) => { var t; let n = (e == null ? void 0 : e.scrollTop) || 0; W.setListScrollTop((t = W.list) == null ? void 0 : t.type, n); }); else if (e.current) { var s; W.setListScrollTop((s = W.list) == null ? void 0 : s.type, e.current.scrollTop || 0); } switch (t) { case "exhibitor": let e = U.exhibitorStore.exhibitors.find((e) => e.id === a); o ? U.routeStore.clickRoute(null, U.routeStore.tempToBooth || e.booths[0]) : U.clickExhibitor(e); break; case "booth": let t = U.boothStore.booths.find((e) => e.id === a); o ? U.routeStore.clickRoute(null, t) : U.clickBoothInList2(t); break; case "category": U.clickCategory(U.categoryStore.categories.find((e) => e.id === a)); break; case "event": let n = U.eventStore.eventItems.find((e) => e.id === a); if (n) { let e = U.boothStore.booths.find((e) => e.id === n.boothId); o && e ? U.routeStore.clickRoute(null, e) : U.selectEventItem(n, !0); } break; case "speaker": { let e = U.speakerStore.speakers.find((e) => e.id === a); e && U.selectSpeaker(e, !0); break; } } }, [o, e]); return n === null || W.setKioskModeEnabled ? null : W.listItems.length ? /* @__PURE__ */ (0, Y.jsx)("div", { style: { height: "100%", cursor: "pointer", resize: "both", minHeight: 100 }, children: /* @__PURE__ */ (0, Y.jsx)(J.Suspense, { fallback: /* @__PURE__ */ (0, Y.jsx)(ft, { active: !0, isCenter: !0 }), children: /* @__PURE__ */ (0, Y.jsx)(Rt, { ref: r, className: "list-virtual", style: { minHeight: W.listItems.length ? "1px" : 0 }, data: W.listItems, itemContent: (e, t) => { var n; let r = t; return r ? /* @__PURE__ */ (0, Y.jsx)(wt, { item: r, index: e, current: (i == null ? void 0 : i.toString()) === ((n = r.id) == null ? void 0 : n.toString()), compactDetails: a, onClick: s }, r.id) : null; }, itemsRendered: () => t && setTimeout(t), totalListHeightChanged: () => t && t(), customScrollParent: n, totalCount: W.listItems.length, overscan: 20, increaseViewportBy: 200, initialItemCount: Math.min(W.listScrollIndex + 30, W.listItems.length) }) }) }) : /* @__PURE__ */ (0, Y.jsx)(() => /* @__PURE__ */ (0, Y.jsx)("div", { className: "list-empty", children: W.list.type === "search" ? y("Oops, nothing found") : y("No items to show") }), {}); }), Bt = () => { let e = (0, J.useRef)(null); return E(() => { let t = U.toursStore.currentTour; if (!t) return null; let n = t.points && t.points.length > 0; return /* @__PURE__ */ (0, Y.jsxs)("div", { className: (0, q.default)("efp-tour-points", { hidden: W.kiosk }), children: [W.tourDescription && /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-wayfinding-description", children: W.tourDescription }), n && /* @__PURE__ */ (0, Y.jsx)(Q, { updatedScrollableRef: e })] }); }); }, Vt = () => E(() => !W.menu && !W.details && U.toursStore.currentTour && /* @__PURE__ */ (0, Y.jsx)(Bt, {})), Ht = D(({ tours: e, onTourClick: t }) => { let n = (e, n, r) => { t && t(e, n, r); }; return e.length === 0 ? /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-empty", children: /* @__PURE__ */ (0, Y.jsx)("p", { children: y("No Guided Tours found") }) }) : /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tours-list", children: e.map((e) => /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tour-item", onClick: () => n(e, e.name, e.description), role: "button", tabIndex: 0, onKeyDown: (t) => { (t.key === "Enter" || t.key === " ") && (t.preventDefault(), n(e, e.name, e.description)); }, children: /* @__PURE__ */ (0, Y.jsxs)("div", { className: "efp-tour-item__body", children: [/* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tour-item__left", children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tour-item__icon", children: /* @__PURE__ */ (0, Y.jsx)("i", { className: "icon-route-solid" }) }) }), /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tour-item__right", children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tour-item__content", children: /* @__PURE__ */ (0, Y.jsx)("div", { className: "efp-tour-item__title", children: /* @__PURE__ */ (0, Y.jsx)(xt, { text: e.name }) }) }) })] }) }, e.id)) }); }), Ut = ({ children: e, position: t, variant: n = "info", inline: r = !1, showIcon: i = !0, size: a = "md", closable: o = !1, title: s, closeLabel: c, onClose: l }) => { let u = () => { switch (n) { case "error": return "icon-close-solid"; case "success": return "icon-checkmark-solid"; case "warning": return "icon-warning-solid"; default: return "icon-info-solid"; } }; return /* @__PURE__ */ (0, Y.jsxs)("div", { className: (0, q.default)("efp-alert