@expofp/floorplan 3.46.1 → 3.47.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 (115) hide show
  1. package/dist/browser/{Button-OKcMiyWO.js → Button-DyqVe4xL.js} +5 -5
  2. package/dist/browser/{CookieConsent-6ulFPlqA.js → CookieConsent-Dne5UXwi.js} +7 -7
  3. package/dist/browser/{Debug-BxskUF4D.js → Debug-CSY6FmRs.js} +7 -7
  4. package/dist/browser/{DebugTools-C1is5dXX.js → DebugTools-CSGF0Uqi.js} +6 -6
  5. package/dist/browser/{Demo-Dx8IKR7Q.js → Demo-AI-22qbf.js} +9 -9
  6. package/dist/browser/{Free-BaIZnChc.js → Free-BmItczwV.js} +10 -10
  7. package/dist/browser/{GalleryContainer-BXomiMwG.js → GalleryContainer-Do5QXu8h.js} +11 -11
  8. package/dist/browser/{GpsLoader-Ccwug0hj.js → GpsLoader-D6boL0AQ.js} +13 -13
  9. package/dist/browser/{KioskStore-D_Ejv_K0.js → KioskStore-DodjzUdk.js} +16 -16
  10. package/dist/browser/{LayerStore-DKg7vekG.js → LayerStore-DCg-juRT.js} +44 -44
  11. package/dist/browser/{MaplibreAdapter-Dh_ASXEG.js → MaplibreAdapter-D838jbrB.js} +17 -17
  12. package/dist/browser/{ModalContainer-DXN2lQG-.js → ModalContainer-DAh3OT88.js} +10 -10
  13. package/dist/browser/{PermissionNotice-CljwxHGD.js → PermissionNotice-D9dFiy8Z.js} +6 -6
  14. package/dist/browser/{RouteStore-4r6xqu2L.js → RouteStore-B82dztUW.js} +24 -24
  15. package/dist/browser/{SetKioskMode-3YCa73LZ.js → SetKioskMode-DcQFm_UG.js} +11 -11
  16. package/dist/browser/{ShowKiosk-CmozIEWm.js → ShowKiosk-BnuT9vM-.js} +11 -11
  17. package/dist/browser/{UIState-DOVwNW-h.js → UIState-Dd6fvko0.js} +12 -12
  18. package/dist/browser/{ViewerMenuPanel-ukfCjPlv.js → ViewerMenuPanel-C3B3OmlN.js} +10 -10
  19. package/dist/browser/{add-debug-secret-listener-DiW9122w.js → add-debug-secret-listener-BJu3pH2x.js} +1 -1
  20. package/dist/browser/{adopt-global-settings-C8NxCufU.js → adopt-global-settings-BerG23m2.js} +9 -9
  21. package/dist/browser/{boolean-editor-DAUiSxaZ.js → boolean-editor-C1i1ID8g.js} +9 -9
  22. package/dist/browser/{bootIntercom-Cxu_tGyN.js → bootIntercom-C3tqD4Ct.js} +2 -2
  23. package/dist/browser/bundle.json +87 -87
  24. package/dist/browser/{camera-events-BzkvmmVT.js → camera-events-DzSywgw0.js} +1 -1
  25. package/dist/browser/{classnames-ht7j544T.js → classnames-CQMYVTW5.js} +2 -2
  26. package/dist/browser/{client-cb0OfXbM.js → client-DbQnuxsE.js} +5 -5
  27. package/dist/browser/{components-D1hWFJkH.js → components-CzNKFauU.js} +2212 -2161
  28. package/dist/browser/{create-live-plan-BYQmwyu_.js → create-live-plan-D17jzmnD.js} +482 -416
  29. package/dist/browser/{debug-context-D-Az5hsc.js → debug-context-CLE9u3W1.js} +6 -6
  30. package/dist/browser/{debug-overlay-Cx_TzAOa.js → debug-overlay-CqyQd6Tu.js} +10 -10
  31. package/dist/browser/{debug-ui-BWGZ29bU.js → debug-ui-CopIbPwZ.js} +6 -6
  32. package/dist/browser/{dist-CxdNXcdm.js → dist-CXSdtHNF.js} +6 -6
  33. package/dist/browser/{dist-DI0TDNHP.js → dist-DrhAFaXl.js} +5 -5
  34. package/dist/browser/{dist-TE6VoTiX.js → dist-mSjAoqZa.js} +3 -3
  35. package/dist/browser/{efp-debug-init-pyajqRUx.js → efp-debug-init-D3gNE8Zq.js} +3 -3
  36. package/dist/browser/{enum-editor-CtGMxTY9.js → enum-editor-DfEZj9xj.js} +4 -4
  37. package/dist/browser/{es5-CaaQfpSO.js → es5-CRZbJ3RK.js} +2 -2
  38. package/dist/browser/{event-head-BM-eM_Bb.js → event-head-C5Pqy8aE.js} +1 -1
  39. package/dist/browser/{event-not-found-B65hzXQP.js → event-not-found-y-baKtlx.js} +3 -3
  40. package/dist/browser/{event-scoped-cache-Dy_k6CT0.js → event-scoped-cache-CUHa0QyF.js} +3 -3
  41. package/dist/browser/{expofpUrl-CtHaWZhI.js → expofpUrl-CUIqO5kL.js} +1 -1
  42. package/dist/browser/{exports-B117IH-s.js → exports-CnYQMV4a.js} +1 -1
  43. package/dist/browser/{favicon-BZ8MgZoI.js → favicon-DtPw8IL3.js} +1 -1
  44. package/dist/browser/{fetch-retry.umd-CZoakvnh.js → fetch-retry.umd-DjnZ3Ut9.js} +2 -2
  45. package/dist/browser/{flex-DqZnQXWR.js → flex-C5mQXGq5.js} +5 -5
  46. package/dist/browser/{floorplan.loader-Dj1p_2Uj.js → floorplan.loader-DEaS-fgT.js} +12 -12
  47. package/dist/browser/{floorplan.ready-DV6RYY5y.js → floorplan.ready-BOnFLVHj.js} +70 -70
  48. package/dist/browser/{framing-rect-BPQPxCHJ.js → framing-rect-BIpsCqTB.js} +12 -12
  49. package/dist/browser/{freeBanner-CV-7PVgM.js → freeBanner-BQ-1hI0V.js} +2 -2
  50. package/dist/browser/{fuse-o5_aSzm4.js → fuse-jVBfzHic.js} +2 -2
  51. package/dist/browser/{i18n-DT4SjeA3.js → i18n-DlquqKCP.js} +333 -318
  52. package/dist/browser/index.js +33 -33
  53. package/dist/browser/{index.module-AwGISzVZ.js → index.module-CN0EtZcO.js} +4 -4
  54. package/dist/browser/{init-ui-_JZLWvuF.js → init-ui-BQ7d5hKB.js} +9 -9
  55. package/dist/browser/{integrateKiosk-LP784XEO.js → integrateKiosk-CumGPvbc.js} +5 -5
  56. package/dist/browser/{is-debug-sgFB2_R1.js → is-debug-IkNSAGo8.js} +4 -4
  57. package/dist/browser/{is-own-domain-Cgslc30X.js → is-own-domain-yrTLx04R.js} +1 -1
  58. package/dist/browser/{is-webview-Cbjly4fl.js → is-webview-DA6FLdme.js} +1 -1
  59. package/dist/browser/{jsx-runtime-DJq9zytl.js → jsx-runtime-BzLvm2y2.js} +2 -2
  60. package/dist/browser/{kiosk-mode-D0Muk9LN.js → kiosk-mode-zD8K_fUT.js} +3 -3
  61. package/dist/browser/{kiosk-record-QLKP2NTE.js → kiosk-record-Ckxa0L0B.js} +1 -1
  62. package/dist/browser/{kioskApi-Cm0aHEDq.js → kioskApi-CG3QGuUx.js} +7 -7
  63. package/dist/browser/{ktx2-D9vr5u5B.js → ktx2-Dx_h97CR.js} +2 -2
  64. package/dist/browser/{lib-Cu-YSKSO.js → lib-5KOc2jVl.js} +3 -3
  65. package/dist/browser/{loadImage-DC3BioQw.js → loadImage-iqS2KHgN.js} +1 -1
  66. package/dist/browser/{logDeviceInfo-U-dghNEE.js → logDeviceInfo-DhvfxT2K.js} +9 -9
  67. package/dist/browser/{mobx-B3ugy_Uo.js → mobx-CUFHrL57.js} +4 -4
  68. package/dist/browser/{mobx.module-C9pJfT4z.js → mobx.module-BTnTbXnp.js} +1 -1
  69. package/dist/browser/{optional-boolean-editor-B6peoFdP.js → optional-boolean-editor-C3k-DXeF.js} +3 -3
  70. package/dist/browser/{optional-enum-editor-DdGc6bGo.js → optional-enum-editor-CeY1nCnF.js} +4 -4
  71. package/dist/browser/{optional-string-editor-D-mZ5TcA.js → optional-string-editor-DrVHjvsL.js} +4 -4
  72. package/dist/browser/{particles.min-r05NeIIO.js → particles.min-BPS1Hdpf.js} +2 -2
  73. package/dist/browser/{react-CAiPe_Qk.js → react-XuvSZP7j.js} +2 -2
  74. package/dist/browser/{react-dom-B-n3e4uH.js → react-dom-Cg1Pcvni.js} +3 -3
  75. package/dist/browser/{rolldown-runtime-BkAGFH-3.js → rolldown-runtime-5rOLGCTp.js} +1 -1
  76. package/dist/browser/{scene-DBB57-1M.js → scene-CeKqMicD.js} +3 -3
  77. package/dist/browser/{scheduler-Btu7810I.js → scheduler-D5sEY0Dn.js} +2 -2
  78. package/dist/browser/{select-1x7gpaD6.js → select-Cbv7ufJV.js} +10 -10
  79. package/dist/browser/{settings-Clb327Gp.js → settings-DgySPhLO.js} +2 -2
  80. package/dist/browser/{settings-item-9ehuHN7w.js → settings-item-e3YLYS4G.js} +6 -6
  81. package/dist/browser/{store-B618He5O.js → store-DTvNQcN7.js} +2 -2
  82. package/dist/browser/{string-editor-zH6d37oA.js → string-editor-Dbv6xI9s.js} +4 -4
  83. package/dist/browser/{text-field-hTc5zeaz.js → text-field-Cg5awwlh.js} +5 -5
  84. package/dist/browser/{theme-rkMDBBl_.js → theme-BRoMMdQq.js} +8 -8
  85. package/dist/browser/{three.core-CoaBWF0W.js → three.core-DvpRLNmt.js} +1 -1
  86. package/dist/browser/{ui-d7u7XbmX.js → ui-DNMlY_VB.js} +8 -8
  87. package/dist/browser/{useRenderTarget-Dsf3ugHo.js → useRenderTarget-C__MnkX7.js} +4 -4
  88. package/dist/browser/{viewport-BDI0afn8.js → viewport-DBuFXrrj.js} +3 -3
  89. package/dist/browser/{wayfinding-BkpHRhUO.js → wayfinding-BUQns13Y.js} +5 -5
  90. package/dist/esm/components/BaseFilterModal.d.ts +4 -2
  91. package/dist/esm/components/BaseFilterModal.js +1 -1
  92. package/dist/esm/components/CategoryFilterModal.js +1 -1
  93. package/dist/esm/components/SearchButtons/SearchButton.d.ts +1 -0
  94. package/dist/esm/components/SearchButtons/SearchButton.js +1 -1
  95. package/dist/esm/services/URLFilterManager.d.ts +8 -0
  96. package/dist/esm/services/URLFilterManager.js +1 -1
  97. package/dist/esm/store/CategoryFilterStore.d.ts +33 -1
  98. package/dist/esm/store/CategoryFilterStore.js +1 -1
  99. package/dist/esm/store/SearchStore.js +1 -1
  100. package/dist/esm/store/providers/SearchShortcutProvider.js +1 -1
  101. package/dist/esm/store/search-buttons/SearchButtonsActions.d.ts +7 -0
  102. package/dist/esm/store/search-buttons/SearchButtonsActions.js +1 -1
  103. package/dist/esm/store/search-buttons/SearchButtonsFactory.d.ts +2 -2
  104. package/dist/esm/store/search-buttons/SearchButtonsFactory.js +1 -1
  105. package/dist/esm/store/search-buttons/SearchButtonsFilters.d.ts +2 -2
  106. package/dist/esm/store/search-buttons/SearchButtonsFilters.js +1 -1
  107. package/dist/esm/store/search-buttons/constants.d.ts +0 -3
  108. package/dist/esm/store/search-buttons/constants.js +1 -1
  109. package/dist/esm/store/search-buttons/utils.d.ts +23 -2
  110. package/dist/esm/store/search-buttons/utils.js +1 -1
  111. package/dist/esm/store/types.d.ts +5 -0
  112. package/dist/esm/test/store-harness.js +1 -1
  113. package/dist/esm/utils/filter-groups.d.ts +9 -0
  114. package/dist/esm/utils/filter-groups.js +1 -0
  115. package/package.json +10 -10
@@ -1,9 +1,9 @@
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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "8b6ee49c-19c3-4811-99e0-0515eca1da1f", e._sentryDebugIdIdentifier = "sentry-dbid-8b6ee49c-19c3-4811-99e0-0515eca1da1f");
7
7
  } catch {}
8
8
  })();
9
- import "./adopt-global-settings-C8NxCufU.js";
9
+ import "./adopt-global-settings-BerG23m2.js";
@@ -1,16 +1,16 @@
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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "12edc63f-e6e7-4dfc-9a76-31666c53718c", e._sentryDebugIdIdentifier = "sentry-dbid-12edc63f-e6e7-4dfc-9a76-31666c53718c");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BkAGFH-3.js";
10
- import { t } from "./react-CAiPe_Qk.js";
11
- import { t as n } from "./jsx-runtime-DJq9zytl.js";
12
- import { c as r, l as i, t as a, u as o, y as s } from "./flex-DqZnQXWR.js";
13
- import { t as c } from "./classnames-ht7j544T.js";
9
+ import { r as e } from "./rolldown-runtime-5rOLGCTp.js";
10
+ import { t } from "./react-XuvSZP7j.js";
11
+ import { t as n } from "./jsx-runtime-BzLvm2y2.js";
12
+ import { c as r, l as i, t as a, u as o, y as s } from "./flex-C5mQXGq5.js";
13
+ import { t as c } from "./classnames-CQMYVTW5.js";
14
14
  //#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/separator.props.js
15
15
  var l = /* @__PURE__ */ e(t()), u = /* @__PURE__ */ e(c()), d = {
16
16
  orientation: {
@@ -1,12 +1,12 @@
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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "6d823a43-fa42-42af-9c05-a4ee303c909d", e._sentryDebugIdIdentifier = "sentry-dbid-6d823a43-fa42-42af-9c05-a4ee303c909d");
7
7
  } catch {}
8
8
  })();
9
- import { o as e } from "./mobx.module-C9pJfT4z.js";
9
+ import { o as e } from "./mobx.module-BTnTbXnp.js";
10
10
  //#region src/utils/swappable-proxy.ts
11
11
  function t(e, t) {
12
12
  let n = () => {
@@ -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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "bae75e1e-5013-4517-a846-519e3920f180", e._sentryDebugIdIdentifier = "sentry-dbid-bae75e1e-5013-4517-a846-519e3920f180");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./jsx-runtime-DJq9zytl.js";
10
- import { t } from "./settings-item-9ehuHN7w.js";
11
- import { t as n } from "./text-field-hTc5zeaz.js";
9
+ import { t as e } from "./jsx-runtime-BzLvm2y2.js";
10
+ import { t } from "./settings-item-e3YLYS4G.js";
11
+ import { t as n } from "./text-field-Cg5awwlh.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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7cff17ce-12f6-438a-9ef4-00cf6a0b1475", e._sentryDebugIdIdentifier = "sentry-dbid-7cff17ce-12f6-438a-9ef4-00cf6a0b1475");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BkAGFH-3.js";
10
- import { t } from "./react-CAiPe_Qk.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-DqZnQXWR.js";
12
- import { t as l } from "./classnames-ht7j544T.js";
9
+ import { r as e } from "./rolldown-runtime-5rOLGCTp.js";
10
+ import { t } from "./react-XuvSZP7j.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-C5mQXGq5.js";
12
+ import { t as l } from "./classnames-CQMYVTW5.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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "507523b1-aa12-4507-b680-c254edab8300", e._sentryDebugIdIdentifier = "sentry-dbid-507523b1-aa12-4507-b680-c254edab8300");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BkAGFH-3.js";
10
- import { t } from "./react-CAiPe_Qk.js";
11
- import { t as n } from "./jsx-runtime-DJq9zytl.js";
12
- import { t as r } from "./react-dom-B-n3e4uH.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-DqZnQXWR.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-CxdNXcdm.js";
15
- import { t as y } from "./classnames-ht7j544T.js";
9
+ import { r as e } from "./rolldown-runtime-5rOLGCTp.js";
10
+ import { t } from "./react-XuvSZP7j.js";
11
+ import { t as n } from "./jsx-runtime-BzLvm2y2.js";
12
+ import { t as r } from "./react-dom-Cg1Pcvni.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-C5mQXGq5.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-CXSdtHNF.js";
15
+ import { t as y } from "./classnames-CQMYVTW5.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",
@@ -2,7 +2,7 @@
2
2
  (function() {
3
3
  try {
4
4
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
5
- e.SENTRY_RELEASE = { id: "3.46.1" };
5
+ e.SENTRY_RELEASE = { id: "3.47.0" };
6
6
  var t = new e.Error().stack;
7
7
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "12f972d0-9d52-45d6-94ec-e58395a64a1e", e._sentryDebugIdIdentifier = "sentry-dbid-12f972d0-9d52-45d6-94ec-e58395a64a1e");
8
8
  } catch {}
@@ -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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "81863b16-dfcf-4b3e-9293-bdc5f05a30a1", e._sentryDebugIdIdentifier = "sentry-dbid-81863b16-dfcf-4b3e-9293-bdc5f05a30a1");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BkAGFH-3.js";
10
- import { a as t, i as n, s as r } from "./efp-debug-init-pyajqRUx.js";
11
- import { a as i, i as a } from "./adopt-global-settings-C8NxCufU.js";
12
- import { t as o } from "./jsx-runtime-DJq9zytl.js";
13
- import "./settings-Clb327Gp.js";
14
- import { t as s } from "./add-debug-secret-listener-DiW9122w.js";
9
+ import { r as e } from "./rolldown-runtime-5rOLGCTp.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-D3gNE8Zq.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-BerG23m2.js";
12
+ import { t as o } from "./jsx-runtime-BzLvm2y2.js";
13
+ import "./settings-DgySPhLO.js";
14
+ import { t as s } from "./add-debug-secret-listener-BJu3pH2x.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() {
@@ -29,7 +29,7 @@ function d() {
29
29
  }
30
30
  });
31
31
  let o = async (t) => {
32
- let { DebugUi: n } = await import("./debug-ui-BWGZ29bU.js"), { createRoot: i } = await import("./client-cb0OfXbM.js").then((t) => /* @__PURE__ */ e(t.t(), 1)), a = document.createElement("div");
32
+ let { DebugUi: n } = await import("./debug-ui-CopIbPwZ.js"), { createRoot: i } = await import("./client-DbQnuxsE.js").then((t) => /* @__PURE__ */ e(t.t(), 1)), a = document.createElement("div");
33
33
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, l.jsx)(n, {
34
34
  useDebugButtonState: r.useState,
35
35
  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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "1e89fc3a-fa3d-42bb-94d8-f0f786d433ec", e._sentryDebugIdIdentifier = "sentry-dbid-1e89fc3a-fa3d-42bb-94d8-f0f786d433ec");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-BkAGFH-3.js";
10
- import { t } from "./react-CAiPe_Qk.js";
11
- import { u as n } from "./store-B618He5O.js";
9
+ import { r as e } from "./rolldown-runtime-5rOLGCTp.js";
10
+ import { t } from "./react-XuvSZP7j.js";
11
+ import { u as n } from "./store-DTvNQcN7.js";
12
12
  //#region ../ui/src/shared/activeElement.ts
13
13
  var r = (e) => !!e && "activeElement" in e;
14
14
  function i(e) {
@@ -1,13 +1,13 @@
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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "cd544147-31ec-4446-b8a2-8021e027057b", e._sentryDebugIdIdentifier = "sentry-dbid-cd544147-31ec-4446-b8a2-8021e027057b");
7
7
  } catch {}
8
8
  })();
9
- import { l as e } from "./store-B618He5O.js";
10
- import { t } from "./LayerStore-DKg7vekG.js";
9
+ import { l as e } from "./store-DTvNQcN7.js";
10
+ import { t } from "./LayerStore-DCg-juRT.js";
11
11
  //#region src/components/Map/viewport.ts
12
12
  function n(e) {
13
13
  return {
@@ -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.46.1" };
4
+ e.SENTRY_RELEASE = { id: "3.47.0" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "60580d2c-c701-4a3e-85e9-b8bfd3ef6bdc", e._sentryDebugIdIdentifier = "sentry-dbid-60580d2c-c701-4a3e-85e9-b8bfd3ef6bdc");
7
7
  } catch {}
8
8
  })();
9
- import { r as e, t } from "./rolldown-runtime-BkAGFH-3.js";
10
- import { o as n } from "./is-debug-sgFB2_R1.js";
11
- import { i as r, l as i } from "./mobx.module-C9pJfT4z.js";
12
- import { $t as a, At as o, Dt as s, Et as c, Kt as l, St as u, an as d, bt as f, cn as p, dn as m, ht as h, in as g, it as _, jt as v, kt as y, ln as b, nn as x, on as S, qt as C, un as ee, wt as w, xt as T } from "./LayerStore-DKg7vekG.js";
9
+ import { r as e, t } from "./rolldown-runtime-5rOLGCTp.js";
10
+ import { o as n } from "./is-debug-IkNSAGo8.js";
11
+ import { i as r, l as i } from "./mobx.module-BTnTbXnp.js";
12
+ import { $t as a, At as o, Dt as s, Et as c, Kt as l, St as u, an as d, bt as f, cn as p, dn as m, ht as h, in as g, it as _, jt as v, kt as y, ln as b, nn as x, on as S, qt as C, un as ee, wt as w, xt as T } from "./LayerStore-DCg-juRT.js";
13
13
  //#region ../geometry/src/lib/geo.ts
14
14
  var E = 6371e3;
15
15
  function D(e, t) {
@@ -1,8 +1,10 @@
1
+ import './BaseFilterModal.scss';
1
2
  import React from 'react';
2
- import type { FilterGroup, FilterStore } from '../store/types';
3
+ import type RootStore from '../store/RootStore.js';
4
+ import type { FilterGroup, FilterStore } from '../store/types.js';
3
5
  interface BaseFilterModalProps {
4
6
  store: FilterStore;
5
- rootStore: any;
7
+ rootStore: RootStore;
6
8
  title: string;
7
9
  groups: FilterGroup[];
8
10
  }
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{observer as u,useLocalStore as C}from"mobx-react-lite";import{t as a}from"../utils/i18n";import{ModalContainer as I}from"./";import S from"./MultiSelectGroupsContainer";export const BaseFilterModal=u(({store:t,rootStore:r,title:d,groups:s})=>{const n=C(()=>({get pendingSelectedIds(){return t.state.pendingItems.map(e=>e.id)},get totalItemsCount(){return t.state.pendingItems.length===0?t.getFilteredItems().length:r.exhibitorStore.exhibitors.filter(e=>e.categories.some(l=>t.state.pendingItems.some(i=>i.id===l.id))).length},get allCategories(){return s.flatMap(e=>e.items)},get isAllSelected(){return this.allCategories.every(e=>this.pendingSelectedIds.includes(e.id))},get isPartiallySelected(){const e=this.allCategories.filter(l=>this.pendingSelectedIds.includes(l.id)).length;return e>0&&e<this.allCategories.length},get totalCategoriesCount(){return this.allCategories.length}})),g=e=>{const l=s.flatMap(i=>i.items).filter(i=>e.includes(i.id));t.setPendingItems(l)},c=()=>{t.applyFilter()},h=()=>{t.closeFilter()},m=()=>{t.clearPendingItems()},f=e=>{const l=n.allCategories;t.setPendingItems(e?l:[])},p=()=>t.state.isOpen;return o(I,{open:t.state.isOpen,title:d,onClose:h,footerLeft:[{label:a("Clear all"),onClick:m,variant:"gray",disabled:n.pendingSelectedIds.length===0}],footerRight:[{label:n.pendingSelectedIds.length>0?a("Show #{{count}}# Matching Exhibitors",{count:n.totalItemsCount}):a("Show All Exhibitors"),onClick:c,variant:"primary",withBadge:!0,disabled:!p()}],children:o(S,{groups:s,selectedIds:n.pendingSelectedIds,variant:"categories",onChange:g,itemCountProvider:e=>r.categoryStore.categoryById.get(Number(e.id))?.exhibitors?.length||0})})});
1
+ import{jsx as a,jsxs as p}from"react/jsx-runtime";import"./BaseFilterModal.scss";import{observer as v,useLocalStore as O}from"mobx-react-lite";import{useMemo as g,useState as u}from"react";import{filterGroups as M}from"../utils/filter-groups.js";import{t as n}from"../utils/i18n.js";import{ModalContainer as N}from"./index.js";import w from"./MultiSelectGroupsContainer.js";const E=10;export const BaseFilterModal=v(({store:e,rootStore:d,title:f,groups:i})=>{const r=O(()=>({get pendingSelectedIds(){return e.state.pendingItems.map(t=>t.id)},get totalItemsCount(){return e.state.pendingItems.length===0?e.getFilteredItems().length:d.exhibitorStore.exhibitors.filter(t=>t.categories.some(s=>e.state.pendingItems.some(l=>l.id===s.id))).length}})),[o,c]=u(""),h=g(()=>M(i,o),[i,o]),b=g(()=>i.reduce((t,s)=>t+s.items.length,0)>E,[i]),[m,I]=u({isOpen:e.state.isOpen,groups:i});(m.isOpen!==e.state.isOpen||m.groups!==i)&&(I({isOpen:e.state.isOpen,groups:i}),c(""));const S=t=>{const s=i.flatMap(l=>l.items).filter(l=>t.includes(l.id));e.setPendingItems(s)},C=()=>{e.applyFilter()},_=()=>{e.closeFilter()},y=()=>{e.clearPendingItems()},x=()=>e.state.isOpen;return p(N,{open:e.state.isOpen,title:f,onClose:_,footerLeft:[{label:n("Clear all"),onClick:y,variant:"gray",disabled:r.pendingSelectedIds.length===0}],footerRight:[{label:r.pendingSelectedIds.length>0?n("Show #{{count}}# Matching Exhibitors",{count:r.totalItemsCount}):n("Show All Exhibitors"),onClick:C,variant:"primary",withBadge:!0,disabled:!x()}],children:[b&&p("div",{className:"efp-filter-modal__search",children:[a("i",{className:"icon-search efp-filter-modal__search-icon","aria-hidden":"true"}),a("input",{type:"search",className:"efp-filter-modal__search-input",value:o,placeholder:n("Search..."),"aria-label":n("Search..."),onChange:t=>c(t.target.value)}),o&&a("button",{type:"button",className:"efp-filter-modal__search-clear","aria-label":n("Clear search"),onClick:()=>c(""),children:a("i",{className:"icon-close","aria-hidden":"true"})})]}),h.length>0?a(w,{groups:h,selectedIds:r.pendingSelectedIds,variant:"categories",onChange:S,itemCountProvider:t=>d.categoryStore.categoryById.get(Number(t.id))?.exhibitors?.length||0}):a("p",{className:"efp-filter-modal__empty",role:"status",children:n("Oops, nothing found")})]})});
@@ -1 +1 @@
1
- import{jsx as p}from"react/jsx-runtime";import{observer as u}from"mobx-react-lite";import{useEffect as f,useMemo as h}from"react";import{useURLFilters as d}from"../hooks/useURLFilters";import o from"../store";import{t as y}from"../utils/i18n";import{BaseFilterModal as F}from"./BaseFilterModal";export const CategoryFilterModal=u(()=>{const{currentFilters:a}=d(),l=h(()=>{const n=o.categoryStore.categories||[],t={},s=[],m=[];n.forEach(e=>{if(!e||!e.exhibitors||e.exhibitors.length===0)return;const r=(e.name||"").split("/").map(i=>i.trim());if(r.length>1){const i=r[0],c=r.slice(1).join(" / ");t[i]||(t[i]={groupName:i,items:[]},m.push(i)),t[i].items.push({id:e.id,name:c})}else s.push({id:e.id,name:e.name})});const g=[];return s.length>0&&g.push({groupName:"General",items:s,fullWidth:!0}),m.forEach(e=>{const r=t[e];r&&r.items&&r.items.length>0&&g.push(r)}),g},[o.categoryStore.categories]);return f(()=>{if(o.categoryFilterStore.state.isOpen&&a.categories.length>0){const n=a.categories.map(t=>{const s=o.categoryStore.categories.find(m=>m.name.toLowerCase()===t.toLowerCase());return s?{id:s.id,name:s.name}:null}).filter(t=>t!==null);n.length>0&&o.categoryFilterStore.setPendingItems(n)}},[o.categoryFilterStore.state.isOpen,a.categories]),p(F,{store:o.categoryFilterStore,rootStore:o,title:y("Categories"),groups:l})});
1
+ import{jsx as y}from"react/jsx-runtime";import{observer as S}from"mobx-react-lite";import{useEffect as F,useMemo as x}from"react";import{useURLFilters as I}from"../hooks/useURLFilters";import t from"../store";import{t as w,tIfExists as C}from"../utils/i18n";import{BaseFilterModal as E}from"./BaseFilterModal";export const CategoryFilterModal=S(()=>{const{currentFilters:a}=I(),{viewScope:g,viewsOwnSelection:p}=t.categoryFilterStore,n=g?.categoryIds??null,u=g?.title??null,d=x(()=>{const l=t.categoryStore.categories||[],s=n?l.filter(e=>n.includes(e.id)):l,r={},c=[],f=[];s.forEach(e=>{if(!e||!e.exhibitors||e.exhibitors.length===0)return;const o=(e.name||"").split("/").map(i=>i.trim());if(o.length>1){const i=o[0],h=o.slice(1).join(" / ");r[i]||(r[i]={groupName:i,items:[]},f.push(i)),r[i].items.push({id:e.id,name:h})}else c.push({id:e.id,name:e.name})});const m=[];return c.length>0&&m.push({groupName:"General",items:c,fullWidth:!0}),f.forEach(e=>{const o=r[e];o&&o.items&&o.items.length>0&&m.push(o)}),m},[t.categoryStore.categories,n]);return F(()=>{if(t.categoryFilterStore.state.isOpen&&p&&a.categories.length>0){const l=a.categories.map(s=>{const r=t.categoryStore.categories.find(c=>c.name.toLowerCase()===s.toLowerCase());return r?{id:r.id,name:r.name}:null}).filter(s=>s!==null).filter(s=>!n||n.includes(s.id));l.length>0&&t.categoryFilterStore.setPendingItems(l)}},[t.categoryFilterStore.state.isOpen,p,a.categories,n]),y(E,{store:t.categoryFilterStore,rootStore:t,title:u?C(u):w("Categories"),groups:d})});
@@ -8,6 +8,7 @@ export interface SearchButtonProps {
8
8
  active: boolean;
9
9
  count?: number;
10
10
  variant?: 'toggle' | 'action';
11
+ expanded?: boolean;
11
12
  isDimmed?: boolean;
12
13
  isDisabled?: boolean;
13
14
  showZeroCount?: boolean;
@@ -1 +1 @@
1
- import{jsx as t,jsxs as b}from"react/jsx-runtime";import"./SearchButton.scss";import c from"classnames";import{observer as _}from"mobx-react-lite";const x=_(({id:j,label:e,icon:o,text:a,active:i,count:s,variant:m="toggle",isDimmed:d=!1,isDisabled:r=!1,showZeroCount:u=!1,backgroundColor:n,textColor:f,onClick:h})=>{const p=s!==void 0&&(s>0||u),l=!!n;return b("button",{type:"button",style:l?{"--btn-bg-color":n,"--btn-text-color":f||"#1a1a1a"}:void 0,className:c("efp-search-button",`efp-search-button--${m}`,{"is-active":i,"is-dimmed":d,"is-disabled":r,"has-custom-color":l}),onClick:()=>{h?.(),window.__resett?.()},disabled:r,"aria-label":e,title:e,children:[o&&t("i",{className:o}),a&&t("span",{className:"efp-search-button__text",children:a}),p&&t("span",{className:c("efp-search-button__count",{"is-zero":s===0}),children:s})]})});export default x;
1
+ import{jsx as o,jsxs as _}from"react/jsx-runtime";import"./SearchButton.scss";import a from"classnames";import{observer as x}from"mobx-react-lite";const N=x(({id:j,label:n,icon:c,text:t,active:l,count:e,variant:s="toggle",expanded:u=!1,isDimmed:f=!1,isDisabled:i=!1,showZeroCount:h=!1,backgroundColor:r,textColor:m,onClick:p})=>{const b=e!==void 0&&(e>0||h),d=!!r;return _("button",{type:"button",style:d?{"--btn-bg-color":r,"--btn-text-color":m||"#1a1a1a"}:void 0,className:a("efp-search-button",`efp-search-button--${s}`,{"is-active":l,"is-dimmed":f,"is-disabled":i,"has-custom-color":d}),onClick:()=>{p?.(),window.__resett?.()},disabled:i,"aria-label":n,title:t?void 0:n,"aria-haspopup":s==="action"?"dialog":void 0,"aria-expanded":s==="action"?u:void 0,children:[c&&o("i",{className:a(c,"efp-search-button__icon")}),t&&o("span",{className:"efp-search-button__text",children:t}),s==="action"&&o("i",{className:"icon-chevron-down efp-search-button__chevron","aria-hidden":"true"}),b&&o("span",{className:a("efp-search-button__count",{"is-zero":e===0}),children:e})]})});export default N;
@@ -24,6 +24,14 @@ export declare class URLFilterManager {
24
24
  */
25
25
  filterSearch(): string;
26
26
  updateURLFromFilters(): void;
27
+ /**
28
+ * The custom search button that owns the current selection, or `null` for the
29
+ * built-in one. Read by both writers, so `currentFilters` — what
30
+ * `getCurrentFilters()` hands out — can never name an owner the address bar
31
+ * omits: an owner without a selection is not an owner, the same invariant
32
+ * `CategoryFilterStore.clearSelection()` keeps on the store side.
33
+ */
34
+ private owningSearchButtonId;
27
35
  setCategories(categoryNames: string[]): void;
28
36
  setPoiType(poiTypeName: string | null): void;
29
37
  setPoiTypes(poiTypeNames: string[]): void;
@@ -1 +1 @@
1
- import{__decorate as a}from"tslib";import{getConfig as m}from"@expofp/config";import{action as c,observable as g}from"mobx";import{PREFIXES as S}from"../store/search-buttons/constants";import l from"../tools/logger";import{planReaction as u}from"../utils/plan-reactions.js";import{decodeString as P,decodeStringArray as F,encodeString as L,encodeStringArray as T,toLowerCaseArray as d,toLowerCaseString as f}from"../utils/urlEncoding";import{replaceQuery as I}from"./url-sync";const h={CATEGORIES:"categories",POI_TYPE:"poiType",POI_TYPES:"poiTypes",EXHIBITORS:"exhibitors"};export class URLFilterManager{constructor(e){this.rootStore=e,this.currentFilters={categories:[],poiType:null,poiTypes:[],exhibitors:!1},this.isInitialized=!1,this.setupReactions()}initialize(){this.parseURLFilters(),this.applyFiltersToStore(),this.isInitialized=!0,l.log("URLFilterManager initialized with filters:",this.currentFilters)}parseURLFilters(){const{categories:e,poiType:t,poiTypes:r,exhibitors:i}=this.readRawFilters(),o=r.filter(s=>{if(!s)return!1;const n=this.rootStore.poiTypeStore.poiTypes.some(p=>p.name.toLowerCase()===s.toLowerCase());return n||l.warn(`POI type not found in data: ${s}`),n});e.length>0&&(t||o.length>0)?(l.warn("URL contains both categories and POI types. Clearing POI types."),this.currentFilters={categories:e,poiType:null,poiTypes:[],exhibitors:i}):this.currentFilters={categories:e,poiType:t,poiTypes:o,exhibitors:i},l.log("URLFilterManager parsed filters:",{categories:e,poiType:t,poiTypes:r,exhibitors:i}),this.validateFilters(this.currentFilters)}readRawFilters(){const e=m().filters;if(Object.keys(e).length>0)return{categories:[...e.categories??[]],poiType:e.poiType??null,poiTypes:[...e.poiTypes??[]],exhibitors:e.exhibitors??!1};const t=new URLSearchParams(window.location.search),r=t.get(h.CATEGORIES),i=r?F(r):[],o=t.get(h.POI_TYPE),s=o?P(o):null,n=t.get(h.POI_TYPES),p=n?F(n):[],y=t.get(h.EXHIBITORS);return{categories:i,poiType:s,poiTypes:p,exhibitors:y==="true"||y===""}}applyFiltersToStore(){const{uiState:e,categoryFilterStore:t,searchButtonsStore:r}=this.rootStore;if(this.currentFilters.categories.length>0){const i=this.currentFilters.categories.map(o=>this.rootStore.categoryStore.categories.find(s=>s.name.toLowerCase()===o.toLowerCase())).filter(o=>o!==void 0);i.length>0?(e.selectedCategoryFilters=i,t.state.selectedItems=i.map(o=>({id:o.id,name:o.name})),e.categoryFilterOpen=!0,l.log("URLFilterManager applied categories:",i.map(o=>o.name)),setTimeout(()=>{this.focusOnFilteredBooths(),this.rootStore.searchStore.setFocused(!0)},100)):l.warn("URLFilterManager: no categories found for names:",this.currentFilters.categories)}if(this.currentFilters.poiType){const i=this.rootStore.poiTypeStore.poiTypes.find(o=>o.name.toLowerCase()===this.currentFilters.poiType.toLowerCase());i?(e.selectedPoiTypeFilters=[i],r.setPoiFilterId(`${S.POI_TYPE}${i.id}`),l.log("URLFilterManager applied POI type:",i.name),setTimeout(()=>{this.focusOnFilteredBooths(),this.rootStore.searchStore.setFocused(!0)},100)):l.warn("URLFilterManager: no POI type found for name:",this.currentFilters.poiType)}if(this.currentFilters.poiTypes.length>0){const i=this.currentFilters.poiTypes.map(o=>o?this.rootStore.poiTypeStore.poiTypes.find(s=>s.name.toLowerCase()===o.toLowerCase()):null).filter(o=>o!=null);i.length>0?(e.selectedPoiTypeFilters=i,l.log("URLFilterManager applied POI types:",i.map(o=>o.name)),setTimeout(()=>{this.focusOnFilteredBooths(),this.rootStore.searchStore.setFocused(!0)},100)):(l.warn("URLFilterManager: no POI types found for names:",this.currentFilters.poiTypes),this.currentFilters.poiTypes=[])}this.currentFilters.exhibitors&&this.openExhibitorsList()}filterSearch(){const{uiState:e}=this.rootStore,t=new URLSearchParams;if(e.selectedCategoryFilters.length>0){const r=e.selectedCategoryFilters.map(o=>o.name.toLowerCase()),i=T(r);i&&t.set(h.CATEGORIES,i)}if(e.selectedPoiTypeFilters.length>0&&e.selectedCategoryFilters.length===0)if(e.selectedPoiTypeFilters.length===1){const r=e.selectedPoiTypeFilters[0].name.toLowerCase();if(r){const i=L(r);i&&t.set(h.POI_TYPE,i)}}else{const r=e.selectedPoiTypeFilters.map(o=>o.name.toLowerCase()),i=T(r);i&&t.set(h.POI_TYPES,i)}return this.currentFilters.exhibitors&&e.selectedCategoryFilters.length===0&&e.selectedPoiTypeFilters.length===0&&t.set(h.EXHIBITORS,"true"),t.toString()?`?${t.toString()}`:""}updateURLFromFilters(){const{uiState:e}=this.rootStore;I(this.filterSearch()),this.currentFilters={categories:e.selectedCategoryFilters.length>0?e.selectedCategoryFilters.map(t=>t.name):[],poiType:e.selectedPoiTypeFilters.length===1&&e.selectedCategoryFilters.length===0?e.selectedPoiTypeFilters[0].name:null,poiTypes:e.selectedPoiTypeFilters.length>1&&e.selectedCategoryFilters.length===0?e.selectedPoiTypeFilters.map(t=>t.name):[],exhibitors:this.currentFilters.exhibitors}}setCategories(e){this.currentFilters.categories=d(e),this.currentFilters.poiType=null,this.isInitialized&&this.updateURLFromFilters()}setPoiType(e){this.currentFilters.poiType=f(e),this.currentFilters.poiTypes=[],this.currentFilters.categories=[],this.isInitialized&&this.updateURLFromFilters()}setPoiTypes(e){this.currentFilters.poiTypes=d(e),this.currentFilters.poiType=null,this.currentFilters.categories=[],this.isInitialized&&this.updateURLFromFilters()}clearAllFilters(){this.currentFilters={categories:[],poiType:null,poiTypes:[],exhibitors:!1};const{uiState:e}=this.rootStore;e.categoryFilterOpen=!1,this.updateURLFromFilters()}getCurrentFilters(){return{...this.currentFilters}}setupReactions(){u(()=>this.rootStore.uiState.selectedCategoryFilters,e=>{if(this.isInitialized&&e.length>0){const t=d(e.map(r=>r.name));this.setCategories(t)}}),u(()=>this.rootStore.uiState.selectedPoiTypeFilters,e=>{if(this.isInitialized&&e.length>0)if(e.length===1){const t=f(e[0].name);t&&this.setPoiType(t)}else{const t=d(e.map(r=>r.name));this.setPoiTypes(t)}})}validateFilters(e){if(e.categories.length>0&&(e.poiType||e.poiTypes.length>0))return l.warn("Categories and POI types cannot be active simultaneously"),!1;if(e.poiType&&e.poiTypes.length>0)return l.warn("Both single POI type and multiple POI types cannot be active simultaneously"),!1;for(const t of e.categories)if(!this.getCategoryIdByName(t))return l.warn(`Category not found: ${t}`),!1;if(e.poiType&&!this.getPoiTypeIdByName(e.poiType))return l.warn(`POI type not found: ${e.poiType}`),!1;for(const t of e.poiTypes)if(!this.getPoiTypeIdByName(t))return l.warn(`POI type not found: ${t}`),!1;return!0}getCategoryIdByName(e){const t=this.rootStore.categoryStore.categories.find(r=>r.name.toLowerCase()===e.toLowerCase());return t?t.id:null}getPoiTypeIdByName(e){const t=this.rootStore.poiTypeStore.poiTypes.find(r=>r.name.toLowerCase()===e.toLowerCase());return t?t.id:null}focusOnFilteredBooths(){if(!this.rootStore.layerStore.layersLoaded){u(()=>this.rootStore.layerStore.layersLoaded,()=>{this.focusOnFilteredBooths()},{fireImmediately:!1});return}const{uiState:e,exhibitorStore:t,boothStore:r}=this.rootStore;let i=[];if(e.selectedCategoryFilters.length>0){const s=t.exhibitors.filter(n=>e.selectedCategoryFilters.some(p=>n.categories.some(y=>y.id===p.id)));i=r.booths.filter(n=>s.some(p=>p.id===n.exhibitors[0]?.id))}if(e.selectedPoiTypeFilters.length>0){const s=r.booths.filter(n=>e.selectedPoiTypeFilters.some(p=>n.poiTypeId===p.id));i.length>0?i=i.filter(n=>s.some(p=>p.id===n.id)):i=s}const o=i.filter(s=>s.visible);o.length>0?(e.moveToBooths=o,this.rootStore.moveToList(o)):i.length>0&&(this.rootStore.showMap(),this.rootStore.moveToList(i))}openExhibitorsList(){const{uiState:e}=this.rootStore;e.list={type:"exhibitors",text:"",focused:!1},setTimeout(()=>{this.rootStore.searchStore.setFocused(!0)},100),l.log("URLFilterManager opened exhibitors list")}}a([g],URLFilterManager.prototype,"currentFilters",void 0),a([g],URLFilterManager.prototype,"isInitialized",void 0),a([c],URLFilterManager.prototype,"initialize",null),a([c],URLFilterManager.prototype,"parseURLFilters",null),a([c],URLFilterManager.prototype,"applyFiltersToStore",null),a([c],URLFilterManager.prototype,"updateURLFromFilters",null),a([c],URLFilterManager.prototype,"setCategories",null),a([c],URLFilterManager.prototype,"setPoiType",null),a([c],URLFilterManager.prototype,"setPoiTypes",null),a([c],URLFilterManager.prototype,"clearAllFilters",null),a([c],URLFilterManager.prototype,"focusOnFilteredBooths",null),a([c],URLFilterManager.prototype,"openExhibitorsList",null);
1
+ import{__decorate as p}from"tslib";import{getConfig as m,toQueryString as S}from"@expofp/config";import{action as c,observable as d}from"mobx";import{PREFIXES as P}from"../store/search-buttons/constants";import{getButtonConfig as I,getScopeCategoryIds as C}from"../store/search-buttons/utils";import l from"../tools/logger";import{planReaction as g}from"../utils/plan-reactions.js";import{decodeString as L,decodeStringArray as F,encodeString as w,encodeStringArray as T,toLowerCaseArray as y,toLowerCaseString as f}from"../utils/urlEncoding";import{replaceQuery as R}from"./url-sync";const h={CATEGORIES:"categories",POI_TYPE:"poiType",POI_TYPES:"poiTypes",EXHIBITORS:"exhibitors"};export class URLFilterManager{constructor(e){this.rootStore=e,this.currentFilters={categories:[],poiType:null,poiTypes:[],exhibitors:!1,searchButton:null},this.isInitialized=!1,this.setupReactions()}initialize(){this.parseURLFilters(),this.applyFiltersToStore(),this.isInitialized=!0,l.log("URLFilterManager initialized with filters:",this.currentFilters)}parseURLFilters(){const{categories:e,poiType:t,poiTypes:s,exhibitors:r,searchButton:i}=this.readRawFilters(),o=s.filter(n=>{if(!n)return!1;const a=this.rootStore.poiTypeStore.poiTypes.some(u=>u.name.toLowerCase()===n.toLowerCase());return a||l.warn(`POI type not found in data: ${n}`),a});e.length>0&&(t||o.length>0)?(l.warn("URL contains both categories and POI types. Clearing POI types."),this.currentFilters={categories:e,poiType:null,poiTypes:[],exhibitors:r,searchButton:i}):this.currentFilters={categories:e,poiType:t,poiTypes:o,exhibitors:r,searchButton:i},l.log("URLFilterManager parsed filters:",{categories:e,poiType:t,poiTypes:s,exhibitors:r}),this.validateFilters(this.currentFilters)}readRawFilters(){const e=m().filters;if(Object.keys(e).length>0)return{categories:[...e.categories??[]],poiType:e.poiType??null,poiTypes:[...e.poiTypes??[]],exhibitors:e.exhibitors??!1,searchButton:e.searchButton??null};const t=new URLSearchParams(window.location.search),s=t.get(h.CATEGORIES),r=s?F(s):[],i=t.get(h.POI_TYPE),o=i?L(i):null,n=t.get(h.POI_TYPES),a=n?F(n):[],u=t.get(h.EXHIBITORS);return{categories:r,poiType:o,poiTypes:a,exhibitors:u==="true"||u==="",searchButton:null}}applyFiltersToStore(){const{uiState:e,categoryFilterStore:t,searchButtonsStore:s}=this.rootStore,r=this.currentFilters.searchButton;if(r){const i=I(r),o=i?C(i):[];i?.type==="categories"&&o.length>0?(this.currentFilters.categories=this.currentFilters.categories.filter(n=>o.includes(this.getCategoryIdByName(n)??-1)),t.setOwner(r)):(l.warn(`URLFilterManager: unknown categories search button: ${r}`),this.currentFilters.searchButton=null)}if(this.currentFilters.categories.length>0){const i=this.currentFilters.categories.map(o=>this.rootStore.categoryStore.categories.find(n=>n.name.toLowerCase()===o.toLowerCase())).filter(o=>o!==void 0);i.length>0?(e.selectedCategoryFilters=i,t.state.selectedItems=i.map(o=>({id:o.id,name:o.name})),e.categoryFilterOpen=!0,l.log("URLFilterManager applied categories:",i.map(o=>o.name)),setTimeout(()=>{this.focusOnFilteredBooths(),this.rootStore.searchStore.setFocused(!0)},100)):l.warn("URLFilterManager: no categories found for names:",this.currentFilters.categories)}if(this.currentFilters.poiType){const i=this.rootStore.poiTypeStore.poiTypes.find(o=>o.name.toLowerCase()===this.currentFilters.poiType.toLowerCase());i?(e.selectedPoiTypeFilters=[i],s.setPoiFilterId(`${P.POI_TYPE}${i.id}`),l.log("URLFilterManager applied POI type:",i.name),setTimeout(()=>{this.focusOnFilteredBooths(),this.rootStore.searchStore.setFocused(!0)},100)):l.warn("URLFilterManager: no POI type found for name:",this.currentFilters.poiType)}if(this.currentFilters.poiTypes.length>0){const i=this.currentFilters.poiTypes.map(o=>o?this.rootStore.poiTypeStore.poiTypes.find(n=>n.name.toLowerCase()===o.toLowerCase()):null).filter(o=>o!=null);i.length>0?(e.selectedPoiTypeFilters=i,l.log("URLFilterManager applied POI types:",i.map(o=>o.name)),setTimeout(()=>{this.focusOnFilteredBooths(),this.rootStore.searchStore.setFocused(!0)},100)):(l.warn("URLFilterManager: no POI types found for names:",this.currentFilters.poiTypes),this.currentFilters.poiTypes=[])}this.currentFilters.exhibitors&&this.openExhibitorsList()}filterSearch(){const{uiState:e}=this.rootStore,t=this.owningSearchButtonId();if(t)return`?${S({filters:{searchButton:t,categories:e.selectedCategoryFilters.map(r=>r.name.toLowerCase())}})}`;const s=new URLSearchParams;if(e.selectedCategoryFilters.length>0){const r=e.selectedCategoryFilters.map(o=>o.name.toLowerCase()),i=T(r);i&&s.set(h.CATEGORIES,i)}if(e.selectedPoiTypeFilters.length>0&&e.selectedCategoryFilters.length===0)if(e.selectedPoiTypeFilters.length===1){const r=e.selectedPoiTypeFilters[0].name.toLowerCase();if(r){const i=w(r);i&&s.set(h.POI_TYPE,i)}}else{const r=e.selectedPoiTypeFilters.map(o=>o.name.toLowerCase()),i=T(r);i&&s.set(h.POI_TYPES,i)}return this.currentFilters.exhibitors&&e.selectedCategoryFilters.length===0&&e.selectedPoiTypeFilters.length===0&&s.set(h.EXHIBITORS,"true"),s.toString()?`?${s.toString()}`:""}updateURLFromFilters(){const{uiState:e}=this.rootStore;R(this.filterSearch()),this.currentFilters={categories:e.selectedCategoryFilters.length>0?e.selectedCategoryFilters.map(t=>t.name):[],poiType:e.selectedPoiTypeFilters.length===1&&e.selectedCategoryFilters.length===0?e.selectedPoiTypeFilters[0].name:null,poiTypes:e.selectedPoiTypeFilters.length>1&&e.selectedCategoryFilters.length===0?e.selectedPoiTypeFilters.map(t=>t.name):[],exhibitors:this.currentFilters.exhibitors,searchButton:this.owningSearchButtonId()}}owningSearchButtonId(){return this.rootStore.uiState.selectedCategoryFilters.length===0?null:this.rootStore.categoryFilterStore.scopeButtonId}setCategories(e){this.currentFilters.categories=y(e),this.currentFilters.poiType=null,this.isInitialized&&this.updateURLFromFilters()}setPoiType(e){this.currentFilters.poiType=f(e),this.currentFilters.poiTypes=[],this.currentFilters.categories=[],this.isInitialized&&this.updateURLFromFilters()}setPoiTypes(e){this.currentFilters.poiTypes=y(e),this.currentFilters.poiType=null,this.currentFilters.categories=[],this.isInitialized&&this.updateURLFromFilters()}clearAllFilters(){this.currentFilters={categories:[],poiType:null,poiTypes:[],exhibitors:!1,searchButton:null};const{uiState:e}=this.rootStore;e.categoryFilterOpen=!1,this.updateURLFromFilters()}getCurrentFilters(){return{...this.currentFilters}}setupReactions(){g(()=>this.rootStore.uiState.selectedCategoryFilters,e=>{if(this.isInitialized&&e.length>0){const t=y(e.map(s=>s.name));this.setCategories(t)}}),g(()=>this.rootStore.uiState.selectedPoiTypeFilters,e=>{if(this.isInitialized&&e.length>0)if(e.length===1){const t=f(e[0].name);t&&this.setPoiType(t)}else{const t=y(e.map(s=>s.name));this.setPoiTypes(t)}})}validateFilters(e){if(e.categories.length>0&&(e.poiType||e.poiTypes.length>0))return l.warn("Categories and POI types cannot be active simultaneously"),!1;if(e.poiType&&e.poiTypes.length>0)return l.warn("Both single POI type and multiple POI types cannot be active simultaneously"),!1;for(const t of e.categories)if(!this.getCategoryIdByName(t))return l.warn(`Category not found: ${t}`),!1;if(e.poiType&&!this.getPoiTypeIdByName(e.poiType))return l.warn(`POI type not found: ${e.poiType}`),!1;for(const t of e.poiTypes)if(!this.getPoiTypeIdByName(t))return l.warn(`POI type not found: ${t}`),!1;return!0}getCategoryIdByName(e){const t=this.rootStore.categoryStore.categories.find(s=>s.name.toLowerCase()===e.toLowerCase());return t?t.id:null}getPoiTypeIdByName(e){const t=this.rootStore.poiTypeStore.poiTypes.find(s=>s.name.toLowerCase()===e.toLowerCase());return t?t.id:null}focusOnFilteredBooths(){if(!this.rootStore.layerStore.layersLoaded){g(()=>this.rootStore.layerStore.layersLoaded,()=>{this.focusOnFilteredBooths()},{fireImmediately:!1});return}const{uiState:e,exhibitorStore:t,boothStore:s}=this.rootStore;let r=[];if(e.selectedCategoryFilters.length>0){const o=t.exhibitors.filter(n=>e.selectedCategoryFilters.some(a=>n.categories.some(u=>u.id===a.id)));r=s.booths.filter(n=>o.some(a=>a.id===n.exhibitors[0]?.id))}if(e.selectedPoiTypeFilters.length>0){const o=s.booths.filter(n=>e.selectedPoiTypeFilters.some(a=>n.poiTypeId===a.id));r.length>0?r=r.filter(n=>o.some(a=>a.id===n.id)):r=o}const i=r.filter(o=>o.visible);i.length>0?(e.moveToBooths=i,this.rootStore.moveToList(i)):r.length>0&&(this.rootStore.showMap(),this.rootStore.moveToList(r))}openExhibitorsList(){const{uiState:e}=this.rootStore;e.list={type:"exhibitors",text:"",focused:!1},setTimeout(()=>{this.rootStore.searchStore.setFocused(!0)},100),l.log("URLFilterManager opened exhibitors list")}}p([d],URLFilterManager.prototype,"currentFilters",void 0),p([d],URLFilterManager.prototype,"isInitialized",void 0),p([c],URLFilterManager.prototype,"initialize",null),p([c],URLFilterManager.prototype,"parseURLFilters",null),p([c],URLFilterManager.prototype,"applyFiltersToStore",null),p([c],URLFilterManager.prototype,"updateURLFromFilters",null),p([c],URLFilterManager.prototype,"setCategories",null),p([c],URLFilterManager.prototype,"setPoiType",null),p([c],URLFilterManager.prototype,"setPoiTypes",null),p([c],URLFilterManager.prototype,"clearAllFilters",null),p([c],URLFilterManager.prototype,"focusOnFilteredBooths",null),p([c],URLFilterManager.prototype,"openExhibitorsList",null);
@@ -1,10 +1,42 @@
1
1
  import BaseFilterStore from './BaseFilterStore';
2
2
  import { type Exhibitor } from './ExhibitorStore';
3
3
  import { type FilterItem } from './types';
4
+ /** What the category modal shows: a custom button's categories, or the whole catalog. */
5
+ export interface CategoryScope {
6
+ /** The button the modal belongs to; `null` is the built-in Categories button. */
7
+ buttonId: string | null;
8
+ /** `null` shows the whole catalog. */
9
+ categoryIds: number[] | null;
10
+ title: string | null;
11
+ }
4
12
  export default class CategoryFilterStore extends BaseFilterStore {
13
+ /** The search button that owns the applied selection; `null` is the built-in Categories button. */
14
+ scopeButtonId: string | null;
15
+ /**
16
+ * What the modal shows (or last showed). Opening a modal only sets this; the
17
+ * owner and the selection change on Apply, so a modal closed without applying
18
+ * leaves the applied filter, its highlight and its URL as they were.
19
+ */
20
+ viewScope: CategoryScope | null;
5
21
  get filteredExhibitors(): Exhibitor[];
6
22
  get filteredBooths(): import("./BoothStore").Booth[];
7
- get publicRootStore(): import("./RootStore").default;
23
+ /** Whether the modal shows the button that owns the applied selection. */
24
+ get viewsOwnSelection(): boolean;
25
+ openFilter(): void;
26
+ openFilterForButton(buttonId: string, categoryIds: number[], title: string): void;
27
+ setOwner(buttonId: string | null): void;
28
+ /** Another button's selection opens unticked: each button picks its own categories. */
29
+ private openScope;
30
+ applyFilter(): void;
31
+ /**
32
+ * Drops the category selection AND its owner, in one place. The two travel
33
+ * together — a scope left behind keeps its custom button highlighted (and its
34
+ * id in the URL) after the selection it describes is gone, and a selection
35
+ * left behind reappears as pre-ticked boxes the next time the modal opens.
36
+ * Every site that clears one clears the other by calling this; held by hand in
37
+ * five places, the invariant had already drifted apart in three of them.
38
+ */
39
+ clearSelection(): void;
8
40
  updateUIState(): void;
9
41
  getFilteredItems(): FilterItem[];
10
42
  getMatchingExhibitorsCount(): number;
@@ -1 +1 @@
1
- import{__decorate as i}from"tslib";import{action as a,computed as s}from"mobx";import l from"./BaseFilterStore";export default class r extends l{get filteredExhibitors(){return this.state.selectedItems.length===0?this.rootStore.exhibitorStore.exhibitors:this.rootStore.exhibitorStore.exhibitors.filter(t=>this.state.selectedItems.some(e=>t.categories.some(o=>o.id===e.id)))}get filteredBooths(){return this.rootStore.boothStore.booths.filter(t=>this.filteredExhibitors.some(e=>e.id===t.exhibitors[0]?.id))}get publicRootStore(){return this.rootStore}updateUIState(){this.rootStore.uiState.menu=!1;const t=this.state.selectedItems.map(o=>this.rootStore.categoryStore.categories.find(h=>h.id===o.id)).filter(Boolean);this.rootStore.uiState.selectedCategoryFilters=t,this.rootStore.uiState.categoryFilterOpen=!0,this.rootStore.searchStore.setFocused(!0),this.rootStore.moveToList(),this.rootStore.showMap();const e=t.map(o=>o.name);this.rootStore.urlFilterManager.setCategories(e)}getFilteredItems(){return this.rootStore.exhibitorStore.exhibitors.map(t=>({id:t.id,name:t.name}))}getMatchingExhibitorsCount(){return this.state.pendingItems.length===0?this.rootStore.exhibitorStore.exhibitors.length:this.rootStore.exhibitorStore.exhibitors.filter(t=>t.categories.some(e=>this.state.pendingItems.some(o=>o.id===e.id))).length}resetFilter(){this.state.pendingItems=[],this.state.selectedItems=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.uiState.categoryFilterOpen=!1,this.rootStore.uiState.list={type:"search",text:"",focused:!1},this.rootStore.urlFilterManager.setCategories([])}}i([s],r.prototype,"filteredExhibitors",null),i([s],r.prototype,"filteredBooths",null),i([a],r.prototype,"resetFilter",null);
1
+ import{__decorate as o}from"tslib";import{action as s,computed as l,observable as n}from"mobx";import h from"./BaseFilterStore";const a={buttonId:null,categoryIds:null,title:null};export default class e extends h{constructor(){super(...arguments),this.scopeButtonId=null,this.viewScope=null}get filteredExhibitors(){return this.state.selectedItems.length===0?this.rootStore.exhibitorStore.exhibitors:this.rootStore.exhibitorStore.exhibitors.filter(t=>this.state.selectedItems.some(i=>t.categories.some(r=>r.id===i.id)))}get filteredBooths(){return this.rootStore.boothStore.booths.filter(t=>this.filteredExhibitors.some(i=>i.id===t.exhibitors[0]?.id))}get viewsOwnSelection(){return this.viewScope!==null&&this.viewScope.buttonId===this.scopeButtonId}openFilter(){this.openScope(a)}openFilterForButton(t,i,r){this.openScope({buttonId:t,categoryIds:i,title:r})}setOwner(t){this.scopeButtonId=t}openScope(t){this.viewScope=t,this.state.isOpen=!0,this.state.pendingItems=this.viewsOwnSelection?[...this.state.selectedItems]:[]}applyFilter(){this.setOwner(this.state.pendingItems.length>0?this.viewScope?.buttonId??null:null),super.applyFilter()}clearSelection(){this.state.selectedItems=[],this.state.pendingItems=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.uiState.categoryFilterOpen=!1,this.setOwner(null)}updateUIState(){this.rootStore.uiState.menu=!1;const t=this.state.selectedItems.map(r=>this.rootStore.categoryStore.categories.find(p=>p.id===r.id)).filter(r=>r!==void 0);this.rootStore.uiState.selectedCategoryFilters=t,this.rootStore.uiState.categoryFilterOpen=!0,this.rootStore.searchStore.setFocused(!0),this.rootStore.moveToList(),this.rootStore.showMap();const i=t.map(r=>r.name);this.rootStore.urlFilterManager.setCategories(i)}getFilteredItems(){return this.rootStore.exhibitorStore.exhibitors.map(t=>({id:t.id,name:t.name}))}getMatchingExhibitorsCount(){return this.state.pendingItems.length===0?this.rootStore.exhibitorStore.exhibitors.length:this.rootStore.exhibitorStore.exhibitors.filter(t=>t.categories.some(i=>this.state.pendingItems.some(r=>r.id===i.id))).length}resetFilter(){this.clearSelection(),this.rootStore.uiState.list={type:"search",text:"",focused:!1},this.rootStore.urlFilterManager.setCategories([])}}o([n],e.prototype,"scopeButtonId",void 0),o([n.ref],e.prototype,"viewScope",void 0),o([l],e.prototype,"filteredExhibitors",null),o([l],e.prototype,"filteredBooths",null),o([l],e.prototype,"viewsOwnSelection",null),o([s],e.prototype,"openFilter",null),o([s],e.prototype,"openFilterForButton",null),o([s],e.prototype,"setOwner",null),o([s],e.prototype,"openScope",null),o([s],e.prototype,"applyFilter",null),o([s],e.prototype,"clearSelection",null),o([s],e.prototype,"resetFilter",null);
@@ -1 +1 @@
1
- import{__decorate as s}from"tslib";import{action as a,computed as o,observable as u}from"mobx";import{LANGUAGE_TYPE as y,MOBILE_BREAKPOINT as x}from"../constants";import c from"../data";import{goBack as d}from"../services/url-sync";import p from"../tools/settings";import{t as l}from"../utils/i18n";import{sanitizeSearch as B}from"../utils/sanitizeText";import{Route as n}from"./RouteStore";class r{static closeDetails(t){return t.details?(t.details=null,!0):!1}static closeMultiPointTour(t){return t.rootStore.fp.hidePathways(),!0}static clearSearchAndFocus(t){return t.searchText?(t.setSearchText(""),t.setFocused(!0),!0):!1}static returnToSearch(t,i=!1){t.list={type:"search",text:"",focused:i}}static returnToSessions(t,i=!1){t.list={type:"sessions",text:"",focused:i}}static returnToTours(t,i=!1){t.list={type:"tours",text:"",focused:i}}static openMenu(t){t.menu=!0}static closeMenu(t){t.menu=!1}static clearListScroll(t,i){t.clearListScroll(i)}static resetActiveListIndex(t){t.activeListIndex=-1}}export default class e{constructor(t){this.searchText="",this.isFocused=!1,this.isClearMode=!1,this.skipInputFocus=!1,this.rootStore=t}get uiState(){return this.rootStore.uiState}get searchBoxConfig(){return this.uiState.searchBoxConfig}get searchBoxMode(){return this.searchBoxConfig.mode}get searchBoxTitle(){return this.searchBoxConfig.title}get searchBoxSubtitle(){return this.searchBoxConfig.subtitle}get searchBoxBadge(){return this.searchBoxConfig.badge}get searchBoxIcon(){return this.searchBoxConfig.icon}get searchBoxActions(){return this.uiState.searchBoxActions}get shouldShowSearchInput(){return this.searchBoxMode==="search"}get shouldShowCloseButton(){const{menu:t,details:i,list:h}=this.uiState,S=c.isRebooking&&h.type==="exhibitors";return!this.shouldShowSearchInput||h.type==="sessions"||h.type==="tours"||h.type==="speakers"||h.type==="exhibitors"&&!S?!0:t||i!==null||!!this.searchText||this.isClearMode||this.isFocused}get closeButtonAction(){return!this.shouldShowSearchInput||this.searchBoxMode==="details"||this.uiState.list.type==="sessions"||this.uiState.list.type==="speakers"||this.uiState.list.type==="exhibitors"&&!c.isRebooking?"close":this.searchText?"clear":"close"}get shouldShowShadow(){const{menu:t,details:i,list:h}=this.uiState,S=h.type==="search"&&!!h.text;return!(this.rootStore.fp.alwaysShowSidebar||t||i!==null||h.type!=="search"||S||this.isFocused||this.uiState.heatmap)}get placeholder(){const{list:t,heatmapYah:i}=this.uiState;return t.type==="sessions"?l("Search sessions"):t.type==="tours"?l("Search Guided Tours"):t.type==="exhibitors"?l("Search exhibitors"):t.type==="speakers"?l("Search speakers"):p.EXPO.startsWith("lenzerheidemotorclassics")?"SUCHE":p.EXPO.startsWith("jetlag")?"Search location or artist":i?l("Find values greater than"):this.uiState.hasAppliedFilters?l("Search"):c.searchText||l("Search")}get searchBoxClass(){return{"is-details":this.searchBoxMode==="details"&&!(this.uiState.details instanceof n),"is-interface":this.searchBoxMode==="interface","has-shadow":this.shouldShowShadow,"has-subtitle":!!this.searchBoxConfig.subtitle,"has-badge":!!this.searchBoxConfig.badge,"has-icon":!!this.searchBoxConfig.icon,"is-overlay-full":this.uiState.isOverlayOpen&&this.uiState.overlaySize==="full","is-featured-exhibitor":this.uiState.isFeaturedExhibitorActive,"is-route":this.uiState.details instanceof n,"is-guided-tours":this.uiState.isGuidedToursActive,"is-overlay-scrolled":this.uiState.isOverlayScrolled,"overlay-pulse":this.uiState.kiosk&&this.uiState.inIdle&&!this.uiState.setKioskModeEnabled}}get ariaLabel(){return!this.shouldShowSearchInput||this.searchBoxMode==="details"?l("Close"):this.searchText?l("Clear search"):l("Close")}selectSearch(t){window.__resett&&window.__resett(),this.uiState.details=null;const i=B(t||"",Object.keys(this.uiState.mapSettings).map(h=>`${h}=`));this.setSearchText(i),this.uiState.activeListIndex=-1}selectSearchAndFocus(t){this.selectSearch(t),this.setFocused(!0)}setSearchText(t){this.searchText=t,this.uiState.hasAppliedFilters?this.rootStore.moveToList():this.uiState.centerMap=!0,this.uiState.activeListIndex=t?0:-1,this.uiState.list.type!=="sessions"&&this.uiState.list.type!=="tours"&&this.uiState.list.type!=="speakers"&&this.uiState.list.type!=="exhibitors"?this.uiState.list={type:"search",text:t,focused:this.isFocused}:this.uiState.list.type==="exhibitors"&&(this.uiState.list={type:"exhibitors",text:t,focused:this.isFocused}),this.uiState.searchClearMode=this.isClearMode}setFocused(t){this.isFocused=t,this.isClearMode=!1,this.skipInputFocus=!1,this.uiState.searchFocused=t,this.uiState.searchClearMode=!1,this.uiState.desiredOverlaySize="full"}handleBackAction(){const{uiState:t}=this,{list:i}=t;if(t.desiredOverlaySize="full",this.backMode==="menu"){this.resetSearchButtonState(),r.openMenu(t);return}if(i.type==="route-planner"){this.rootStore.routePlannerStore.close(),this.rootStore.selectBookmarks(),d();return}if(i.type==="multi-point-tour"&&!t.details){r.returnToTours(t,!1),this.rootStore.fp.hidePathways();return}if(t.details){t.details=null,d();return}if(t.menu){i.type==="sessions"?t.list={type:"sessions",text:"",focused:!0}:i.type==="exhibitors"?t.list={type:"exhibitors",text:"",focused:!0}:t.list={type:"search",text:"",focused:!0},this.setFocused(!0),this.isClearMode=!0,r.closeMenu(t);return}if(i.type==="tours"&&t.details instanceof n){t.details=null;return}if(i.type==="sessions"||i.type==="tours"||i.type==="exhibitors"){if(r.closeDetails(t))return;this.clearActiveFilters(),r.returnToSearch(t,!1),this.selectSearchAndFocus();return}switch(i.type){case"filter":t.details=null;return;case"multi-point-tour":this.rootStore.fp.hidePathways(),r.closeDetails(t)?r.returnToTours(t,!1):d();return;case"category":this.rootStore.selectCategory(i.category);return;case"speakers":if(r.closeDetails(t))return;r.returnToSessions(t,!1);return;case"bookmarks":case"visited":if(r.closeDetails(t))return;this.selectSearchAndFocus();return;case y:r.returnToSearch(t,!1),r.openMenu(t);return}r.closeDetails(t)||r.clearSearchAndFocus(this)||r.openMenu(t)}closeSearch(){const{uiState:t}=this,{list:i}=t;if(i.type==="route-planner"){this.rootStore.routePlannerStore.close(),r.returnToSearch(t,!1),this.resetSearchBox();return}if(r.closeDetails(t),r.clearListScroll(t,i.type),r.closeMultiPointTour(t),i.type==="bookmarks"){r.returnToSearch(t,!1),this.resetSearchBox();return}if(t.selectedCategory){r.returnToSearch(t,!1),this.resetSearchBox();return}if(i.type==="sessions"){this.closeSessions();return}if(i.type==="exhibitors"){if(c.isRebooking){this.searchBoxMode==="search"&&this.searchText?(this.setSearchText(""),this.isClearMode=!0,this.clearActiveFilters()):this.resetSearchBox();return}this.closeExhibitors();return}if(t.menu){r.closeMenu(t),this.resetSearchBox();return}if(this.searchBoxMode==="search"&&!t.details&&this.searchText){this.setSearchText(""),this.isClearMode=!0,this.clearActiveFilters();return}r.returnToSearch(t,!1),this.searchText="",this.resetSearchBox(),t.details=null,this.clearActiveFilters()}clearActiveFilters(){this.rootStore.searchButtonsStore.setPoiFilterId(null),this.rootStore.uiState.selectedPoiTypeFilters=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.categoryFilterStore.state.selectedItems=[],this.rootStore.categoryFilterStore.state.pendingItems=[],this.rootStore.searchButtonsStore.searchShortcutState.activeParentId=null,this.rootStore.searchButtonsStore.searchShortcutState.activeChildren.clear(),this.rootStore.searchButtonsStore.searchShortcutState.isShortcutsVisible=!1,this.rootStore.urlFilterManager&&this.rootStore.urlFilterManager.isInitialized&&this.rootStore.urlFilterManager.clearAllFilters()}resetSearchButtonState(){const{uiState:t}=this;this.rootStore.searchButtonsStore.clearAllFilters(),this.rootStore.searchButtonsStore.setSubButtonId(null),this.rootStore.searchButtonsStore.hideSubButtons(),t.selectedTrack=null,this.searchText="",this.isClearMode=!1}handleSearchAction(){this.isFocused||this.setFocused(!0)}openOverlayWithoutInputFocus(){this.skipInputFocus=!0,this.isFocused=!0,this.isClearMode=!1,this.uiState.searchFocused=!0,this.uiState.searchClearMode=!1,this.uiState.desiredOverlaySize="full"}closeSessions(){this.searchText="",r.returnToSearch(this.uiState,!1),this.uiState.details=null,r.resetActiveListIndex(this.uiState),this.uiState.selectedTrack=null,this.rootStore.searchButtonsStore.setSubButtonId(null),this.rootStore.searchButtonsStore.hideSubButtons()}closeExhibitors(){this.searchText="",r.returnToSearch(this.uiState,!1),this.uiState.details=null,r.resetActiveListIndex(this.uiState)}resetSearchBox(){this.setFocused(!1),this.isClearMode=!1,this.syncWithUIState()}syncWithUIState(){this.searchText=(this.uiState.list.type==="search"||this.uiState.list.type==="exhibitors")&&this.uiState.list.text||"",this.isFocused=this.uiState.searchFocused,this.isClearMode=this.uiState.searchClearMode}get actionButtonIcon(){return this.shouldShowSearchInput?this.shouldShowCloseButton?"icon-close":"icon-search":"icon-close"}clearAndSelectSearch(){this.selectSearch(""),this.setFocused(!1)}get backMode(){const t=this.uiState.list.type;return(t==="bookmarks"||t==="visited")&&!this.uiState.details&&!this.uiState.menu||this.shouldShowSearchInput&&!this.searchText?"menu":"back"}get isMobileDetailsMode(){return window.innerWidth<x&&this.uiState.details!==null&&this.uiState.overlaySize==="full"&&!(this.uiState.details instanceof n)}get shouldShowTitle(){return!this.shouldShowSearchInput}get searchState(){return{text:this.searchText,isFocused:this.isFocused,isClearMode:this.isClearMode,mode:this.searchBoxMode,title:this.searchBoxConfig.title,subtitle:this.searchBoxConfig.subtitle,badge:this.searchBoxConfig.badge,icon:this.searchBoxConfig.icon}}}s([u],e.prototype,"searchText",void 0),s([u],e.prototype,"isFocused",void 0),s([u],e.prototype,"isClearMode",void 0),s([u],e.prototype,"skipInputFocus",void 0),s([o],e.prototype,"searchBoxConfig",null),s([o],e.prototype,"searchBoxMode",null),s([o],e.prototype,"searchBoxTitle",null),s([o],e.prototype,"searchBoxSubtitle",null),s([o],e.prototype,"searchBoxBadge",null),s([o],e.prototype,"searchBoxIcon",null),s([o],e.prototype,"searchBoxActions",null),s([o],e.prototype,"shouldShowSearchInput",null),s([o],e.prototype,"shouldShowCloseButton",null),s([o],e.prototype,"closeButtonAction",null),s([o],e.prototype,"shouldShowShadow",null),s([o],e.prototype,"placeholder",null),s([o],e.prototype,"searchBoxClass",null),s([o],e.prototype,"ariaLabel",null),s([a],e.prototype,"selectSearch",null),s([a],e.prototype,"selectSearchAndFocus",null),s([a],e.prototype,"setSearchText",null),s([a],e.prototype,"setFocused",null),s([a],e.prototype,"handleBackAction",null),s([a],e.prototype,"closeSearch",null),s([a],e.prototype,"clearActiveFilters",null),s([a],e.prototype,"resetSearchButtonState",null),s([a],e.prototype,"handleSearchAction",null),s([a],e.prototype,"openOverlayWithoutInputFocus",null),s([a],e.prototype,"closeSessions",null),s([a],e.prototype,"closeExhibitors",null),s([a],e.prototype,"resetSearchBox",null),s([a],e.prototype,"syncWithUIState",null),s([o],e.prototype,"actionButtonIcon",null),s([a],e.prototype,"clearAndSelectSearch",null),s([o],e.prototype,"backMode",null),s([o],e.prototype,"isMobileDetailsMode",null),s([o],e.prototype,"shouldShowTitle",null),s([o],e.prototype,"searchState",null);
1
+ import{__decorate as s}from"tslib";import{action as a,computed as o,observable as u}from"mobx";import{LANGUAGE_TYPE as y,MOBILE_BREAKPOINT as x}from"../constants";import c from"../data";import{goBack as d}from"../services/url-sync";import p from"../tools/settings";import{t as l}from"../utils/i18n";import{sanitizeSearch as B}from"../utils/sanitizeText";import{Route as n}from"./RouteStore";class r{static closeDetails(t){return t.details?(t.details=null,!0):!1}static closeMultiPointTour(t){return t.rootStore.fp.hidePathways(),!0}static clearSearchAndFocus(t){return t.searchText?(t.setSearchText(""),t.setFocused(!0),!0):!1}static returnToSearch(t,i=!1){t.list={type:"search",text:"",focused:i}}static returnToSessions(t,i=!1){t.list={type:"sessions",text:"",focused:i}}static returnToTours(t,i=!1){t.list={type:"tours",text:"",focused:i}}static openMenu(t){t.menu=!0}static closeMenu(t){t.menu=!1}static clearListScroll(t,i){t.clearListScroll(i)}static resetActiveListIndex(t){t.activeListIndex=-1}}export default class e{constructor(t){this.searchText="",this.isFocused=!1,this.isClearMode=!1,this.skipInputFocus=!1,this.rootStore=t}get uiState(){return this.rootStore.uiState}get searchBoxConfig(){return this.uiState.searchBoxConfig}get searchBoxMode(){return this.searchBoxConfig.mode}get searchBoxTitle(){return this.searchBoxConfig.title}get searchBoxSubtitle(){return this.searchBoxConfig.subtitle}get searchBoxBadge(){return this.searchBoxConfig.badge}get searchBoxIcon(){return this.searchBoxConfig.icon}get searchBoxActions(){return this.uiState.searchBoxActions}get shouldShowSearchInput(){return this.searchBoxMode==="search"}get shouldShowCloseButton(){const{menu:t,details:i,list:h}=this.uiState,S=c.isRebooking&&h.type==="exhibitors";return!this.shouldShowSearchInput||h.type==="sessions"||h.type==="tours"||h.type==="speakers"||h.type==="exhibitors"&&!S?!0:t||i!==null||!!this.searchText||this.isClearMode||this.isFocused}get closeButtonAction(){return!this.shouldShowSearchInput||this.searchBoxMode==="details"||this.uiState.list.type==="sessions"||this.uiState.list.type==="speakers"||this.uiState.list.type==="exhibitors"&&!c.isRebooking?"close":this.searchText?"clear":"close"}get shouldShowShadow(){const{menu:t,details:i,list:h}=this.uiState,S=h.type==="search"&&!!h.text;return!(this.rootStore.fp.alwaysShowSidebar||t||i!==null||h.type!=="search"||S||this.isFocused||this.uiState.heatmap)}get placeholder(){const{list:t,heatmapYah:i}=this.uiState;return t.type==="sessions"?l("Search sessions"):t.type==="tours"?l("Search Guided Tours"):t.type==="exhibitors"?l("Search exhibitors"):t.type==="speakers"?l("Search speakers"):p.EXPO.startsWith("lenzerheidemotorclassics")?"SUCHE":p.EXPO.startsWith("jetlag")?"Search location or artist":i?l("Find values greater than"):this.uiState.hasAppliedFilters?l("Search"):c.searchText||l("Search")}get searchBoxClass(){return{"is-details":this.searchBoxMode==="details"&&!(this.uiState.details instanceof n),"is-interface":this.searchBoxMode==="interface","has-shadow":this.shouldShowShadow,"has-subtitle":!!this.searchBoxConfig.subtitle,"has-badge":!!this.searchBoxConfig.badge,"has-icon":!!this.searchBoxConfig.icon,"is-overlay-full":this.uiState.isOverlayOpen&&this.uiState.overlaySize==="full","is-featured-exhibitor":this.uiState.isFeaturedExhibitorActive,"is-route":this.uiState.details instanceof n,"is-guided-tours":this.uiState.isGuidedToursActive,"is-overlay-scrolled":this.uiState.isOverlayScrolled,"overlay-pulse":this.uiState.kiosk&&this.uiState.inIdle&&!this.uiState.setKioskModeEnabled}}get ariaLabel(){return!this.shouldShowSearchInput||this.searchBoxMode==="details"?l("Close"):this.searchText?l("Clear search"):l("Close")}selectSearch(t){window.__resett&&window.__resett(),this.uiState.details=null;const i=B(t||"",Object.keys(this.uiState.mapSettings).map(h=>`${h}=`));this.setSearchText(i),this.uiState.activeListIndex=-1}selectSearchAndFocus(t){this.selectSearch(t),this.setFocused(!0)}setSearchText(t){this.searchText=t,this.uiState.hasAppliedFilters?this.rootStore.moveToList():this.uiState.centerMap=!0,this.uiState.activeListIndex=t?0:-1,this.uiState.list.type!=="sessions"&&this.uiState.list.type!=="tours"&&this.uiState.list.type!=="speakers"&&this.uiState.list.type!=="exhibitors"?this.uiState.list={type:"search",text:t,focused:this.isFocused}:this.uiState.list.type==="exhibitors"&&(this.uiState.list={type:"exhibitors",text:t,focused:this.isFocused}),this.uiState.searchClearMode=this.isClearMode}setFocused(t){this.isFocused=t,this.isClearMode=!1,this.skipInputFocus=!1,this.uiState.searchFocused=t,this.uiState.searchClearMode=!1,this.uiState.desiredOverlaySize="full"}handleBackAction(){const{uiState:t}=this,{list:i}=t;if(t.desiredOverlaySize="full",this.backMode==="menu"){this.resetSearchButtonState(),r.openMenu(t);return}if(i.type==="route-planner"){this.rootStore.routePlannerStore.close(),this.rootStore.selectBookmarks(),d();return}if(i.type==="multi-point-tour"&&!t.details){r.returnToTours(t,!1),this.rootStore.fp.hidePathways();return}if(t.details){t.details=null,d();return}if(t.menu){i.type==="sessions"?t.list={type:"sessions",text:"",focused:!0}:i.type==="exhibitors"?t.list={type:"exhibitors",text:"",focused:!0}:t.list={type:"search",text:"",focused:!0},this.setFocused(!0),this.isClearMode=!0,r.closeMenu(t);return}if(i.type==="tours"&&t.details instanceof n){t.details=null;return}if(i.type==="sessions"||i.type==="tours"||i.type==="exhibitors"){if(r.closeDetails(t))return;this.clearActiveFilters(),r.returnToSearch(t,!1),this.selectSearchAndFocus();return}switch(i.type){case"filter":t.details=null;return;case"multi-point-tour":this.rootStore.fp.hidePathways(),r.closeDetails(t)?r.returnToTours(t,!1):d();return;case"category":this.rootStore.selectCategory(i.category);return;case"speakers":if(r.closeDetails(t))return;r.returnToSessions(t,!1);return;case"bookmarks":case"visited":if(r.closeDetails(t))return;this.selectSearchAndFocus();return;case y:r.returnToSearch(t,!1),r.openMenu(t);return}r.closeDetails(t)||r.clearSearchAndFocus(this)||r.openMenu(t)}closeSearch(){const{uiState:t}=this,{list:i}=t;if(i.type==="route-planner"){this.rootStore.routePlannerStore.close(),r.returnToSearch(t,!1),this.resetSearchBox();return}if(r.closeDetails(t),r.clearListScroll(t,i.type),r.closeMultiPointTour(t),i.type==="bookmarks"){r.returnToSearch(t,!1),this.resetSearchBox();return}if(t.selectedCategory){r.returnToSearch(t,!1),this.resetSearchBox();return}if(i.type==="sessions"){this.closeSessions();return}if(i.type==="exhibitors"){if(c.isRebooking){this.searchBoxMode==="search"&&this.searchText?(this.setSearchText(""),this.isClearMode=!0,this.clearActiveFilters()):this.resetSearchBox();return}this.closeExhibitors();return}if(t.menu){r.closeMenu(t),this.resetSearchBox();return}if(this.searchBoxMode==="search"&&!t.details&&this.searchText){this.setSearchText(""),this.isClearMode=!0,this.clearActiveFilters();return}r.returnToSearch(t,!1),this.searchText="",this.resetSearchBox(),t.details=null,this.clearActiveFilters()}clearActiveFilters(){this.rootStore.searchButtonsStore.setPoiFilterId(null),this.rootStore.uiState.selectedPoiTypeFilters=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.categoryFilterStore.state.selectedItems=[],this.rootStore.categoryFilterStore.state.pendingItems=[],this.rootStore.categoryFilterStore.setOwner(null),this.rootStore.searchButtonsStore.searchShortcutState.activeParentId=null,this.rootStore.searchButtonsStore.searchShortcutState.activeChildren.clear(),this.rootStore.searchButtonsStore.searchShortcutState.isShortcutsVisible=!1,this.rootStore.urlFilterManager&&this.rootStore.urlFilterManager.isInitialized&&this.rootStore.urlFilterManager.clearAllFilters()}resetSearchButtonState(){const{uiState:t}=this;this.rootStore.searchButtonsStore.clearAllFilters(),this.rootStore.searchButtonsStore.setSubButtonId(null),this.rootStore.searchButtonsStore.hideSubButtons(),t.selectedTrack=null,this.searchText="",this.isClearMode=!1}handleSearchAction(){this.isFocused||this.setFocused(!0)}openOverlayWithoutInputFocus(){this.skipInputFocus=!0,this.isFocused=!0,this.isClearMode=!1,this.uiState.searchFocused=!0,this.uiState.searchClearMode=!1,this.uiState.desiredOverlaySize="full"}closeSessions(){this.searchText="",r.returnToSearch(this.uiState,!1),this.uiState.details=null,r.resetActiveListIndex(this.uiState),this.uiState.selectedTrack=null,this.rootStore.searchButtonsStore.setSubButtonId(null),this.rootStore.searchButtonsStore.hideSubButtons()}closeExhibitors(){this.searchText="",r.returnToSearch(this.uiState,!1),this.uiState.details=null,r.resetActiveListIndex(this.uiState)}resetSearchBox(){this.setFocused(!1),this.isClearMode=!1,this.syncWithUIState()}syncWithUIState(){this.searchText=(this.uiState.list.type==="search"||this.uiState.list.type==="exhibitors")&&this.uiState.list.text||"",this.isFocused=this.uiState.searchFocused,this.isClearMode=this.uiState.searchClearMode}get actionButtonIcon(){return this.shouldShowSearchInput?this.shouldShowCloseButton?"icon-close":"icon-search":"icon-close"}clearAndSelectSearch(){this.selectSearch(""),this.setFocused(!1)}get backMode(){const t=this.uiState.list.type;return(t==="bookmarks"||t==="visited")&&!this.uiState.details&&!this.uiState.menu||this.shouldShowSearchInput&&!this.searchText?"menu":"back"}get isMobileDetailsMode(){return window.innerWidth<x&&this.uiState.details!==null&&this.uiState.overlaySize==="full"&&!(this.uiState.details instanceof n)}get shouldShowTitle(){return!this.shouldShowSearchInput}get searchState(){return{text:this.searchText,isFocused:this.isFocused,isClearMode:this.isClearMode,mode:this.searchBoxMode,title:this.searchBoxConfig.title,subtitle:this.searchBoxConfig.subtitle,badge:this.searchBoxConfig.badge,icon:this.searchBoxConfig.icon}}}s([u],e.prototype,"searchText",void 0),s([u],e.prototype,"isFocused",void 0),s([u],e.prototype,"isClearMode",void 0),s([u],e.prototype,"skipInputFocus",void 0),s([o],e.prototype,"searchBoxConfig",null),s([o],e.prototype,"searchBoxMode",null),s([o],e.prototype,"searchBoxTitle",null),s([o],e.prototype,"searchBoxSubtitle",null),s([o],e.prototype,"searchBoxBadge",null),s([o],e.prototype,"searchBoxIcon",null),s([o],e.prototype,"searchBoxActions",null),s([o],e.prototype,"shouldShowSearchInput",null),s([o],e.prototype,"shouldShowCloseButton",null),s([o],e.prototype,"closeButtonAction",null),s([o],e.prototype,"shouldShowShadow",null),s([o],e.prototype,"placeholder",null),s([o],e.prototype,"searchBoxClass",null),s([o],e.prototype,"ariaLabel",null),s([a],e.prototype,"selectSearch",null),s([a],e.prototype,"selectSearchAndFocus",null),s([a],e.prototype,"setSearchText",null),s([a],e.prototype,"setFocused",null),s([a],e.prototype,"handleBackAction",null),s([a],e.prototype,"closeSearch",null),s([a],e.prototype,"clearActiveFilters",null),s([a],e.prototype,"resetSearchButtonState",null),s([a],e.prototype,"handleSearchAction",null),s([a],e.prototype,"openOverlayWithoutInputFocus",null),s([a],e.prototype,"closeSessions",null),s([a],e.prototype,"closeExhibitors",null),s([a],e.prototype,"resetSearchBox",null),s([a],e.prototype,"syncWithUIState",null),s([o],e.prototype,"actionButtonIcon",null),s([a],e.prototype,"clearAndSelectSearch",null),s([o],e.prototype,"backMode",null),s([o],e.prototype,"isMobileDetailsMode",null),s([o],e.prototype,"shouldShowTitle",null),s([o],e.prototype,"searchState",null);
@@ -1 +1 @@
1
- import{__decorate as c}from"tslib";import{computed as h}from"mobx";import{BaseShortcutProvider as a}from"../ShortcutProvider";export class SearchShortcutProvider extends a{constructor(t){super(),this.rootStore=t,this.id="search"}createShortcuts(){const{searchButtonsStore:t}=this.rootStore,o=[],r=t.getActiveParent();if(r&&r.children){const s=r.children.filter(e=>e.visible);if(r.type==="poi_types"&&s.length===1)return o;s.forEach(e=>{if(e.type==="poi_types"||e.type==="categories"){const i=e.id?.toString()||e.name,n=t.isChildActive(i);o.push({id:i,label:e.name,enabled:!0,active:n,tooltip:n?`Remove ${e.name} from filter (show all ${r.name})`:`Filter only by ${e.name}`,variant:"default",action:"toggle",showResetButton:!1})}})}return o}get shortcuts(){return this.createShortcuts()}shouldShowShortcuts(){const{searchButtonsStore:t}=this.rootStore;return t.hasActiveParentWithChildren}handleShortcutClick(t){const{searchButtonsStore:o}=this.rootStore;o.toggleChildFilter(t)}handleShortcutReset(){const{searchButtonsStore:t}=this.rootStore;t.clearAllChildFilters()}}c([h],SearchShortcutProvider.prototype,"shortcuts",null);
1
+ import{__decorate as c}from"tslib";import{computed as h}from"mobx";import{BaseShortcutProvider as a}from"../ShortcutProvider";export class SearchShortcutProvider extends a{constructor(t){super(),this.rootStore=t,this.id="search"}createShortcuts(){const{searchButtonsStore:t}=this.rootStore,o=[],r=t.getActiveParent();if(r&&r.children){const s=r.children.filter(e=>e.visible);if(r.type==="poi_types"&&s.length===1)return o;s.forEach(e=>{if(e.type==="poi_types"){const i=e.id?.toString()||e.name,n=t.isChildActive(i);o.push({id:i,label:e.name,enabled:!0,active:n,tooltip:n?`Remove ${e.name} from filter (show all ${r.name})`:`Filter only by ${e.name}`,variant:"default",action:"toggle",showResetButton:!1})}})}return o}get shortcuts(){return this.createShortcuts()}shouldShowShortcuts(){const{searchButtonsStore:t}=this.rootStore;return t.hasActiveParentWithChildren}handleShortcutClick(t){const{searchButtonsStore:o}=this.rootStore;o.toggleChildFilter(t)}handleShortcutReset(){const{searchButtonsStore:t}=this.rootStore;t.clearAllChildFilters()}}c([h],SearchShortcutProvider.prototype,"shortcuts",null);
@@ -39,6 +39,13 @@ export declare class SearchButtonsActions {
39
39
  private handleBookmarksClick;
40
40
  private handleVisitedClick;
41
41
  private handleToursClick;
42
+ /**
43
+ * Opens the category modal. Without a scope it is the built-in Categories
44
+ * button — the whole catalog; with one, the custom `type: 'categories'` button
45
+ * that narrows the modal to its own children. Either takes the selection over
46
+ * only on Apply. Getting there is identical either way: leave whatever other
47
+ * filter is on, then open.
48
+ */
42
49
  private handleCategoriesClick;
43
50
  private handleExhibitorsClick;
44
51
  private handlePoiTypeClick;
@@ -1 +1 @@
1
- import{__decorate as r}from"tslib";import{action as l}from"mobx";import{MOBILE_BREAKPOINT as n}from"../../constants";import c from"../../tools/track-event";import{PREFIXES as h,SearchButtonType as o}from"./constants";import{extractPoiTypeId as u,getButtonConfig as S}from"./utils";export class SearchButtonsActions{constructor(e,t,i){this.rootStore=e,this.state=t,this.filters=i}reportActivation(e){e&&c("sbtnview",e)}handleSearchButtonClick(e,t){const s={[o.BOOKMARKS]:()=>this.handleBookmarksClick(t),[o.VISITED]:()=>this.handleVisitedClick(t),[o.SESSIONS]:()=>this.handleSessionsClick(t),[o.TOURS]:()=>this.handleToursClick(t),[o.CATEGORIES]:()=>this.handleCategoriesClick(t),[o.EXHIBITORS]:()=>this.handleExhibitorsClick(t)}[e];if(s){s();return}e.startsWith(h.POI_TYPE)&&this.handlePoiTypeClick(e,t)}handleExtendedSearchButtonClick(e){const t=S(e);if(!t)return;const i=t.name;if(t.type==="link"){this.handleLinkClick(t,i);return}const s=t.children?.filter(a=>a.visible)||[];if(s.length===1&&s[0].type==="poi_types"&&s[0].name===t.name){this.handleSearchButtonClick(e,i);return}t.children&&s.length>0?this.handleParentButton(e,t,i):this.handleSearchButtonClick(e,i)}handleMainButtonClick(e){this.handleSearchButtonClick(e)}handleSessionsClick(e){const{uiState:t}=this.rootStore;t.list.type==="sessions"?this.switchToSearch():(this.reportActivation(e),this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"sessions",text:"",focused:!1},this.state.setSubButton(null),t.selectedTrack=null,this.state.subButtonsEnabled&&this.showSubButtons("sessions"),this.isMobile&&(t.desiredOverlaySize="full"))}togglePoiType(e){this.handleSearchButtonClick(`${h.POI_TYPE}${e}`)}clearAllFilters(){this.switchToSearch()}deactivateForNavigation(){const{uiState:e}=this.rootStore;(this.state.activePoiFilterId!==null||this.state.searchShortcutState.activeParentId!==null||e.hasAppliedFilters)&&this.clearActiveFilters()}showSubButtons(e){this.state.subButtonsEnabled&&(this.state.setSubButtonParent(e),this.state.setSubButton(null),this.rootStore.uiState.subButtonsVisible=!0)}hideSubButtons(){this.state.setSubButtonParent(null),this.state.setSubButton(null),this.rootStore.uiState.subButtonsVisible=!1}handleSubButtonClick(e){this.state.activeSubButtonId!==e&&this.state.setSubButton(e)}toggleListView(e,t,i){this.rootStore.uiState.list.type===e?this.switchToSearch():(this.reportActivation(i),this.resetAllFilters(),t())}handleBookmarksClick(e){this.toggleListView("bookmarks",()=>{this.rootStore.clickBookmarks()},e)}handleVisitedClick(e){this.toggleListView("visited",()=>{this.rootStore.clickVisited()},e)}handleToursClick(e){const{uiState:t}=this.rootStore;t.list.type==="tours"?this.switchToSearch():(this.reportActivation(e),this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"tours",text:"",focused:!1},this.isMobile&&(t.desiredOverlaySize="full"))}handleCategoriesClick(e){const{uiState:t}=this.rootStore;this.reportActivation(e),t.list.type!=="search"?this.switchToSearch():this.state.activePoiFilterId&&this.filters.clearPoiTypeFilters(),this.state.searchShortcutState.activeParentId&&(this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters()),this.rootStore.categoryFilterStore.openFilter()}handleExhibitorsClick(e){const{uiState:t}=this.rootStore;t.list.type==="exhibitors"?this.switchToSearch():(this.reportActivation(e),this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"exhibitors",text:"",focused:!1},this.isMobile&&(t.desiredOverlaySize="full"))}handlePoiTypeClick(e,t){const{uiState:i}=this.rootStore,s=this.state.activePoiFilterId!==e;s&&this.reportActivation(t);const a=i.list.type==="search"&&i.list.text||"";i.list.type!=="search"?this.switchToSearch(!0):i.selectedCategoryFilters.length>0&&this.filters.clearCategoryFilters(),this.state.searchShortcutState.activeParentId&&(this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters()),s?this.setPoiFilterFromString(e):this.filters.clearPoiTypeFilters(),a&&i.list.type==="search"&&(i.list={type:"search",text:a,focused:!1}),this.rootStore.searchStore.selectSearchAndFocus(a)}handleLinkClick(e,t){const i=e.children?.find(s=>s.type==="link");i&&"linkUrl"in i&&(this.reportActivation(t),window.open(i.linkUrl,"_blank"))}handleParentButton(e,t,i){const{uiState:s}=this.rootStore;if(this.state.searchShortcutState.activeParentId===e){this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters(),this.rootStore.urlFilterManager.clearAllFilters(),s.centerMap=!0,s.overlaySize==="full"&&s.searchFocused&&this.rootStore.searchStore.setFocused(!1);return}this.reportActivation(i),s.list.type!=="search"&&this.switchToSearch(),this.state.activePoiFilterId&&this.state.setPoiFilter(null),this.state.setActiveParentId(e),this.state.showShortcuts(!0),this.state.clearChildren(),this.filters.applyAllChildrenFilters(t),this.rootStore.searchStore.selectSearchAndFocus()}preserveSearchText(e){const{uiState:t}=this.rootStore,i=t.list.type==="search"&&t.list.text||"";e(),t.list.type==="search"&&i&&(t.list={type:"search",text:i,focused:!1})}switchToSearch(e=!1){const t=()=>{this.resetAllFilters(),this.rootStore.uiState.details=null,this.rootStore.uiState.menu=!1,this.rootStore.uiState.list={type:"search",text:"",focused:!1}};e?this.preserveSearchText(t):t()}resetAllFilters(){this.clearActiveFilters(),this.rootStore.fp.hidePathways()}clearActiveFilters(){this.state.reset(),this.rootStore.uiState.selectedPoiTypeFilters=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.uiState.categoryFilterOpen=!1,this.rootStore.categoryFilterStore.state.selectedItems=[],this.rootStore.categoryFilterStore.state.pendingItems=[],this.rootStore.urlFilterManager.clearAllFilters()}setPoiFilterFromString(e){this.state.setPoiFilter(e);const t=u(e);if(t!==null){const i=this.rootStore.poiTypeStore.poiTypes.find(s=>s.id===t);i&&(this.rootStore.uiState.selectedPoiTypeFilters=[i],this.rootStore.urlFilterManager.setPoiType(i.name))}}get isMobile(){return typeof window<"u"&&window.innerWidth<=n}}r([l],SearchButtonsActions.prototype,"handleSearchButtonClick",null),r([l],SearchButtonsActions.prototype,"handleExtendedSearchButtonClick",null),r([l],SearchButtonsActions.prototype,"handleMainButtonClick",null),r([l],SearchButtonsActions.prototype,"handleSessionsClick",null),r([l],SearchButtonsActions.prototype,"togglePoiType",null),r([l],SearchButtonsActions.prototype,"clearAllFilters",null),r([l],SearchButtonsActions.prototype,"deactivateForNavigation",null),r([l],SearchButtonsActions.prototype,"showSubButtons",null),r([l],SearchButtonsActions.prototype,"hideSubButtons",null),r([l],SearchButtonsActions.prototype,"handleSubButtonClick",null);
1
+ import{__decorate as r}from"tslib";import{action as l}from"mobx";import{MOBILE_BREAKPOINT as n}from"../../constants";import c from"../../tools/track-event";import{PREFIXES as h,SearchButtonType as o}from"./constants";import{extractPoiTypeId as u,getButtonConfig as S,getScopeCategoryIds as d}from"./utils";export class SearchButtonsActions{constructor(e,t,i){this.rootStore=e,this.state=t,this.filters=i}reportActivation(e){e&&c("sbtnview",e)}handleSearchButtonClick(e,t){const s={[o.BOOKMARKS]:()=>this.handleBookmarksClick(t),[o.VISITED]:()=>this.handleVisitedClick(t),[o.SESSIONS]:()=>this.handleSessionsClick(t),[o.TOURS]:()=>this.handleToursClick(t),[o.CATEGORIES]:()=>this.handleCategoriesClick(void 0,t),[o.EXHIBITORS]:()=>this.handleExhibitorsClick(t)}[e];if(s){s();return}e.startsWith(h.POI_TYPE)&&this.handlePoiTypeClick(e,t)}handleExtendedSearchButtonClick(e){const t=S(e);if(!t)return;const i=t.name;if(t.type==="link"){this.handleLinkClick(t,i);return}const s=t.children?.filter(a=>a.visible)||[];if(s.length===1&&s[0].type==="poi_types"&&s[0].name===t.name){this.handleSearchButtonClick(e,i);return}if(t.type===o.CATEGORIES){this.handleCategoriesClick({buttonId:e,buttonConfig:t},i);return}t.children&&s.length>0?this.handleParentButton(e,t,i):this.handleSearchButtonClick(e,i)}handleMainButtonClick(e){this.handleSearchButtonClick(e)}handleSessionsClick(e){const{uiState:t}=this.rootStore;t.list.type==="sessions"?this.switchToSearch():(this.reportActivation(e),this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"sessions",text:"",focused:!1},this.state.setSubButton(null),t.selectedTrack=null,this.state.subButtonsEnabled&&this.showSubButtons("sessions"),this.isMobile&&(t.desiredOverlaySize="full"))}togglePoiType(e){this.handleSearchButtonClick(`${h.POI_TYPE}${e}`)}clearAllFilters(){this.switchToSearch()}deactivateForNavigation(){const{uiState:e}=this.rootStore;(this.state.activePoiFilterId!==null||this.state.searchShortcutState.activeParentId!==null||e.hasAppliedFilters)&&this.clearActiveFilters()}showSubButtons(e){this.state.subButtonsEnabled&&(this.state.setSubButtonParent(e),this.state.setSubButton(null),this.rootStore.uiState.subButtonsVisible=!0)}hideSubButtons(){this.state.setSubButtonParent(null),this.state.setSubButton(null),this.rootStore.uiState.subButtonsVisible=!1}handleSubButtonClick(e){this.state.activeSubButtonId!==e&&this.state.setSubButton(e)}toggleListView(e,t,i){this.rootStore.uiState.list.type===e?this.switchToSearch():(this.reportActivation(i),this.resetAllFilters(),t())}handleBookmarksClick(e){this.toggleListView("bookmarks",()=>{this.rootStore.clickBookmarks()},e)}handleVisitedClick(e){this.toggleListView("visited",()=>{this.rootStore.clickVisited()},e)}handleToursClick(e){const{uiState:t}=this.rootStore;t.list.type==="tours"?this.switchToSearch():(this.reportActivation(e),this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"tours",text:"",focused:!1},this.isMobile&&(t.desiredOverlaySize="full"))}handleCategoriesClick(e,t){const{uiState:i}=this.rootStore;this.reportActivation(t),i.list.type!=="search"?this.switchToSearch():this.state.activePoiFilterId&&this.filters.clearPoiTypeFilters(),this.state.searchShortcutState.activeParentId&&(this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters()),e?this.rootStore.categoryFilterStore.openFilterForButton(e.buttonId,d(e.buttonConfig),e.buttonConfig.name):this.rootStore.categoryFilterStore.openFilter()}handleExhibitorsClick(e){const{uiState:t}=this.rootStore;t.list.type==="exhibitors"?this.switchToSearch():(this.reportActivation(e),this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"exhibitors",text:"",focused:!1},this.isMobile&&(t.desiredOverlaySize="full"))}handlePoiTypeClick(e,t){const{uiState:i}=this.rootStore,s=this.state.activePoiFilterId!==e;s&&this.reportActivation(t);const a=i.list.type==="search"&&i.list.text||"";i.list.type!=="search"?this.switchToSearch(!0):i.selectedCategoryFilters.length>0&&this.filters.clearCategoryFilters(),this.state.searchShortcutState.activeParentId&&(this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters()),s?this.setPoiFilterFromString(e):this.filters.clearPoiTypeFilters(),a&&i.list.type==="search"&&(i.list={type:"search",text:a,focused:!1}),this.rootStore.searchStore.selectSearchAndFocus(a)}handleLinkClick(e,t){const i=e.children?.find(s=>s.type==="link");i&&"linkUrl"in i&&(this.reportActivation(t),window.open(i.linkUrl,"_blank"))}handleParentButton(e,t,i){const{uiState:s}=this.rootStore;if(this.state.searchShortcutState.activeParentId===e){this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters(),this.rootStore.urlFilterManager.clearAllFilters(),s.centerMap=!0,s.overlaySize==="full"&&s.searchFocused&&this.rootStore.searchStore.setFocused(!1);return}this.reportActivation(i),s.list.type!=="search"&&this.switchToSearch(),this.state.activePoiFilterId&&this.state.setPoiFilter(null),this.state.setActiveParentId(e),this.state.showShortcuts(!0),this.state.clearChildren(),this.filters.applyAllChildrenFilters(t),this.rootStore.searchStore.selectSearchAndFocus()}preserveSearchText(e){const{uiState:t}=this.rootStore,i=t.list.type==="search"&&t.list.text||"";e(),t.list.type==="search"&&i&&(t.list={type:"search",text:i,focused:!1})}switchToSearch(e=!1){const t=()=>{this.resetAllFilters(),this.rootStore.uiState.details=null,this.rootStore.uiState.menu=!1,this.rootStore.uiState.list={type:"search",text:"",focused:!1}};e?this.preserveSearchText(t):t()}resetAllFilters(){this.clearActiveFilters(),this.rootStore.fp.hidePathways()}clearActiveFilters(){this.state.reset(),this.rootStore.uiState.selectedPoiTypeFilters=[],this.rootStore.categoryFilterStore.clearSelection(),this.rootStore.urlFilterManager.clearAllFilters()}setPoiFilterFromString(e){this.state.setPoiFilter(e);const t=u(e);if(t!==null){const i=this.rootStore.poiTypeStore.poiTypes.find(s=>s.id===t);i&&(this.rootStore.uiState.selectedPoiTypeFilters=[i],this.rootStore.urlFilterManager.setPoiType(i.name))}}get isMobile(){return typeof window<"u"&&window.innerWidth<=n}}r([l],SearchButtonsActions.prototype,"handleSearchButtonClick",null),r([l],SearchButtonsActions.prototype,"handleExtendedSearchButtonClick",null),r([l],SearchButtonsActions.prototype,"handleMainButtonClick",null),r([l],SearchButtonsActions.prototype,"handleSessionsClick",null),r([l],SearchButtonsActions.prototype,"togglePoiType",null),r([l],SearchButtonsActions.prototype,"clearAllFilters",null),r([l],SearchButtonsActions.prototype,"deactivateForNavigation",null),r([l],SearchButtonsActions.prototype,"showSubButtons",null),r([l],SearchButtonsActions.prototype,"hideSubButtons",null),r([l],SearchButtonsActions.prototype,"handleSubButtonClick",null);
@@ -11,11 +11,12 @@ export declare class SearchButtonsFactory {
11
11
  createButtons(configs: SearchButtonTypeConfig[]): SearchButtonConfig[];
12
12
  private createButton;
13
13
  private createBaseButton;
14
- private createButtonId;
15
14
  private createBookmarksButton;
16
15
  private createVisitedButton;
17
16
  private createCategoriesButton;
18
17
  private createSimpleCategoriesButton;
18
+ /** Whether the category modal is open on this button (`null`: the built-in one). */
19
+ private isModalOpenFor;
19
20
  private createSessionsButton;
20
21
  private createGuidedToursButton;
21
22
  private createPoiTypeButton;
@@ -23,7 +24,6 @@ export declare class SearchButtonsFactory {
23
24
  private shouldFlattenToSinglePoiType;
24
25
  private createLinkButton;
25
26
  private createExhibitorsButton;
26
- private countCategories;
27
27
  private countPoiTypes;
28
28
  private dedupeButtons;
29
29
  private countBookmarks;