@expofp/floorplan
Version:
Interactive floor plan library for expos and events
1,408 lines • 391 kB
JavaScript
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