@expofp/floorplan 3.2.13 → 3.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Button-BdvuWzrR.js +204 -0
- package/dist/browser/CookieConsent-bTG3GDKg.js +71 -0
- package/dist/browser/{Debug-DGpD6gi3.js → Debug-CjX9xriA.js} +8 -7
- package/dist/browser/{Demo-D58NFoyc.js → Demo-D66SE96z.js} +12 -11
- package/dist/browser/{Free-0cQAwFKa.js → Free-ouV3S0cy.js} +12 -11
- package/dist/browser/{Gallery-CPVZPQ00.js → Gallery-Bm4oVw4n.js} +608 -642
- package/dist/browser/{GpsLoader-qwW4aTNa.js → GpsLoader-BheKXFiI.js} +49 -47
- package/dist/browser/{KioskStore-IujhAAGe.js → KioskStore-CYaE9WLG.js} +62 -62
- package/dist/browser/{Mapbox-BEIVuKI-.js → Mapbox-CDlR6UrM.js} +40 -39
- package/dist/browser/Modal-DS2N0vIo.js +105 -0
- package/dist/browser/{SetKioskMode-DlUxPyq5.js → SetKioskMode-DofzJB3e.js} +18 -17
- package/dist/browser/{ShowKiosk-DzPcuttS.js → ShowKiosk-UX2N2NU3.js} +11 -10
- package/dist/browser/{ThreeComponent-D7GyVwct.js → ThreeComponent-CglSG5wI.js} +248 -247
- package/dist/browser/{TouchHand-DUyEIum1.js → TouchHand-DvgAAuKo.js} +15 -14
- package/dist/browser/{ViewerMenuPanel-DQds_0Se.js → ViewerMenuPanel-KPn2i2KL.js} +22 -21
- package/dist/browser/{add-debug-secret-listener-BoLrZL18.js → add-debug-secret-listener-BN00-9E4.js} +1 -1
- package/dist/browser/{boolean-editor-D439oELN.js → boolean-editor-fbHiF9vJ.js} +11 -11
- package/dist/browser/{bootIntercom-C0fIuZrS.js → bootIntercom-CKo2IztD.js} +3 -3
- package/dist/browser/{box-DQ37DLtr.js → box-B2jxGgXa.js} +6 -6
- package/dist/browser/{browser-BWeq0ALX.js → browser-vqeti97Y.js} +2 -2
- package/dist/browser/bundle.json +68 -53
- package/dist/browser/{classnames-BqhGxx8b.js → classnames-CHmxGkvV.js} +2 -2
- package/dist/browser/{client-DpMmqnL3.js → client-pnzfy6PK.js} +5 -5
- package/dist/browser/components-DVzc3v5I.js +8145 -0
- package/dist/browser/{data-BGGzJSZ3.js → data-BmUUjPca.js} +43 -43
- package/dist/browser/{debug-overlay-DyHs08sf.js → debug-overlay-B_1ADa5Y.js} +12 -12
- package/dist/browser/{debug-ui-Ds2r10P8.js → debug-ui-DBOzEUkM.js} +7 -7
- package/dist/browser/{dist-CXnrXk8a.js → dist-0qGu5ADv.js} +3 -3
- package/dist/browser/{dist-C8-R05Uf.js → dist-BpuX8MZ6.js} +7 -7
- package/dist/browser/{dist-DeJCQ-ni.js → dist-DblWkNUV.js} +6 -6
- package/dist/browser/{efp-debug-init-BAaVZ-Sv.js → efp-debug-init-BwJWCRkJ.js} +3 -3
- package/dist/browser/{enum-editor-bO-7z_65.js → enum-editor-BYkKqvGq.js} +12 -12
- package/dist/browser/{exports-DuxaY9F1.js → exports-BRRDMtlG.js} +1 -1
- package/dist/browser/{favicon-BiX13mYV.js → favicon-C_bgpvWA.js} +1 -1
- package/dist/browser/{fetch-retry.umd-BxHhVEQ9.js → fetch-retry.umd-Dinto0ag.js} +2 -2
- package/dist/browser/{flex-DznufWy4.js → flex-uHBCXaOV.js} +7 -7
- package/dist/browser/{flex.props-CBBCApDT.js → flex.props-eBOcuRMU.js} +3 -3
- package/dist/browser/{floorplan.loader-CYCz53F2.js → floorplan.loader-CMXBnLtZ.js} +650 -649
- package/dist/browser/{floorplan.ready-t0OqKoP2.js → floorplan.ready-UbtSin_R.js} +215 -215
- package/dist/browser/{fuse-2x0Yl6bu.js → fuse-CgTQNNsn.js} +2 -2
- package/dist/browser/{is-debug-Dj3mKaHR.js → i18n-BOl9oxrx.js} +774 -883
- package/dist/browser/index.js +12 -12
- package/dist/browser/is-debug-DMN58EYn.js +122 -0
- package/dist/browser/{jsx-runtime-DS_WWXud.js → jsx-runtime-B2BgIlMm.js} +2 -2
- package/dist/browser/{lib-Bt7PWtNh.js → lib-DByP5YwC.js} +5 -5
- package/dist/browser/{main-DK2hJr48.js → main-D3mbrWsr.js} +1 -1
- package/dist/browser/{mobx-BcjkYuCb.js → mobx-CdvsVcc9.js} +5 -5
- package/dist/browser/{particles.min-BGHzdrAw.js → particles.min-DfI3C-qp.js} +2 -2
- package/dist/browser/{prop-types-DwnAO0Yi.js → prop-types-B6zERU6Z.js} +2 -2
- package/dist/browser/{react-DddeiwYl.js → react-C3o_QT06.js} +2 -2
- package/dist/browser/{react-dom-D8AyYBO2.js → react-dom-sBqrMskT.js} +3 -3
- package/dist/browser/{reset-all-settings-BMiI_ZFm.js → reset-all-settings-BwKg7iVu.js} +8 -8
- package/dist/browser/{rolldown-runtime-DaP-Mfpn.js → rolldown-runtime-DB8Ddt08.js} +1 -1
- package/dist/browser/{settings-Bbym8GNQ.js → settings-BLMQJ1yq.js} +2 -2
- package/dist/browser/{settings-item-D8MTM1Pj.js → settings-item-C19s0haM.js} +7 -7
- package/dist/browser/{store-nbxV99WZ.js → store-CQE29UCE.js} +5684 -5862
- package/dist/browser/{string-editor-BSj1Zdr7.js → string-editor-DyFEQo_P.js} +9 -9
- package/dist/browser/{theme-Bo2UyA3Q.js → theme-CrwkiIG5.js} +9 -9
- package/dist/browser/{ui-C5q_HiUr.js → ui-MUJDbhD1.js} +9 -9
- package/dist/browser/useRenderTarget-Pk0fGZOz.js +48 -0
- package/dist/esm/components/AlertContainer.d.ts +5 -0
- package/dist/esm/components/AlertContainer.js +1 -0
- package/dist/esm/components/Booth/Booth.js +1 -1
- package/dist/esm/components/CookieConsent.js +1 -1
- package/dist/esm/components/EntityItem.d.ts +1 -0
- package/dist/esm/components/EntityItem.js +1 -1
- package/dist/esm/components/EntityItemContainer.d.ts +5 -0
- package/dist/esm/components/EntityItemContainer.js +1 -0
- package/dist/esm/components/EntityList.js +1 -1
- package/dist/esm/components/EntityListRow.js +1 -1
- package/dist/esm/components/Event.js +1 -1
- package/dist/esm/components/Exhibitor.js +1 -1
- package/dist/esm/components/GlobalErrorMessage.js +1 -1
- package/dist/esm/components/HighlightTextContainer.d.ts +6 -0
- package/dist/esm/components/HighlightTextContainer.js +1 -0
- package/dist/esm/components/Kiosk/KioskStore.d.ts +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/Confirm/ConfirmDialog.js +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/SetKioskForm.js +1 -1
- package/dist/esm/components/Kiosk/SetKiosk/types.d.ts +2 -2
- package/dist/esm/components/Kiosk/ShowKiosk.js +1 -1
- package/dist/esm/components/LanguageRow.js +1 -1
- package/dist/esm/components/Layout.js +1 -1
- package/dist/esm/components/List.js +1 -1
- package/dist/esm/components/LogoOverlay.d.ts +0 -1
- package/dist/esm/components/LogoOverlay.js +1 -1
- package/dist/esm/components/Menu.js +1 -1
- package/dist/esm/components/Modal.d.ts +2 -1
- package/dist/esm/components/Modal.js +1 -1
- package/dist/esm/components/Overlay.d.ts +1 -0
- package/dist/esm/components/Overlay.js +1 -1
- package/dist/esm/components/OverlayContainer.js +1 -1
- package/dist/esm/components/PermissionNotice/PermissionNotice.js +1 -1
- package/dist/esm/components/RebookingNotes.js +1 -1
- package/dist/esm/components/RoutePlanner/RoutePlanner.js +1 -1
- package/dist/esm/components/RoutePlanner/RoutePlannerHeader.js +1 -1
- package/dist/esm/components/RoutePlanner/RoutePlannerStopItem.js +1 -1
- package/dist/esm/components/SidebarActions.js +1 -1
- package/dist/esm/components/SimpleRow.js +1 -1
- package/dist/esm/components/Speakers.js +1 -1
- package/dist/esm/components/ToursList.js +1 -1
- package/dist/esm/components/Wayfinding.js +1 -1
- package/dist/esm/components/WayfindingFloorSelectorContainer.d.ts +5 -0
- package/dist/esm/components/WayfindingFloorSelectorContainer.js +1 -0
- package/dist/esm/components/WayfindingTemplate.d.ts +6 -8
- package/dist/esm/components/WayfindingTemplate.js +1 -1
- package/dist/esm/components/index.d.ts +22 -22
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/stories/CookieConsent.stories.js +1 -1
- package/dist/esm/components/stories/Modal.stories.d.ts +5 -0
- package/dist/esm/components/stories/Modal.stories.js +1 -0
- package/dist/esm/components/stories/Share.stories.d.ts +5 -0
- package/dist/esm/components/stories/Share.stories.js +1 -0
- package/dist/esm/components/stories/{CheckboxButton.stories.d.ts → WayInformation.stories.d.ts} +1 -1
- package/dist/esm/components/stories/WayfindingTemplate.stories.d.ts +5 -0
- package/dist/esm/components/stories/WayfindingTemplate.stories.js +1 -0
- package/dist/esm/store/RoutePlannerStore.d.ts +1 -1
- package/dist/esm/store/RoutePlannerStore.js +1 -1
- package/dist/esm/storybook/store/index.stub.d.ts +4 -0
- package/dist/esm/storybook/store/index.stub.js +1 -1
- package/dist/esm/{components → ui/Alert}/Alert.d.ts +3 -3
- package/dist/esm/ui/Alert/Alert.js +1 -0
- package/dist/esm/{components/stories → ui/Alert}/Alert.stories.d.ts +1 -1
- package/dist/esm/ui/Alert/Alert.stories.js +1 -0
- package/dist/esm/ui/Alert/index.d.ts +3 -0
- package/dist/esm/ui/Alert/index.js +1 -0
- package/dist/esm/{components → ui/Badge}/Badge.d.ts +1 -2
- package/dist/esm/ui/Badge/Badge.stories.d.ts +5 -0
- package/dist/esm/ui/Badge/Badge.stories.js +1 -0
- package/dist/esm/ui/Badge/index.d.ts +3 -0
- package/dist/esm/ui/Badge/index.js +1 -0
- package/dist/esm/{components → ui/Button}/Button.d.ts +2 -2
- package/dist/esm/ui/Button/Button.js +1 -0
- package/dist/esm/ui/Button/Button.stories.d.ts +5 -0
- package/dist/esm/ui/Button/Button.stories.js +1 -0
- package/dist/esm/ui/Button/index.d.ts +3 -0
- package/dist/esm/ui/Button/index.js +1 -0
- package/dist/esm/ui/Checkbox/Checkbox.d.ts +18 -0
- package/dist/esm/ui/Checkbox/Checkbox.js +1 -0
- package/dist/esm/ui/Checkbox/Checkbox.stories.d.ts +5 -0
- package/dist/esm/ui/Checkbox/Checkbox.stories.js +1 -0
- package/dist/esm/ui/Checkbox/index.d.ts +3 -0
- package/dist/esm/ui/Checkbox/index.js +1 -0
- package/dist/esm/ui/CheckboxButton/CheckboxButton.d.ts +11 -0
- package/dist/esm/ui/CheckboxButton/CheckboxButton.js +1 -0
- package/dist/esm/ui/CheckboxButton/CheckboxButton.stories.d.ts +5 -0
- package/dist/esm/ui/CheckboxButton/CheckboxButton.stories.js +1 -0
- package/dist/esm/ui/CheckboxButton/index.d.ts +3 -0
- package/dist/esm/ui/CheckboxButton/index.js +1 -0
- package/dist/esm/ui/HighlightText/HighlightText.d.ts +6 -0
- package/dist/esm/ui/HighlightText/HighlightText.js +1 -0
- package/dist/esm/ui/HighlightText/HighlightText.stories.d.ts +7 -0
- package/dist/esm/ui/HighlightText/HighlightText.stories.js +1 -0
- package/dist/esm/ui/HighlightText/index.d.ts +2 -0
- package/dist/esm/ui/HighlightText/index.js +1 -0
- package/dist/esm/ui/Radio/Radio.d.ts +14 -0
- package/dist/esm/ui/Radio/Radio.js +1 -0
- package/dist/esm/ui/Radio/Radio.stories.d.ts +18 -0
- package/dist/esm/ui/Radio/Radio.stories.js +1 -0
- package/dist/esm/ui/Radio/index.d.ts +3 -0
- package/dist/esm/ui/Radio/index.js +1 -0
- package/dist/esm/ui/Spinner/Spinner.d.ts +8 -0
- package/dist/esm/ui/Spinner/Spinner.js +1 -0
- package/dist/esm/ui/Spinner/Spinner.stories.d.ts +5 -0
- package/dist/esm/ui/Spinner/Spinner.stories.js +1 -0
- package/dist/esm/ui/Spinner/index.d.ts +3 -0
- package/dist/esm/ui/Spinner/index.js +1 -0
- package/dist/esm/ui/ToggleButton/ToggleButton.d.ts +16 -0
- package/dist/esm/ui/ToggleButton/ToggleButton.js +1 -0
- package/dist/esm/ui/ToggleButton/ToggleButton.stories.d.ts +5 -0
- package/dist/esm/ui/ToggleButton/ToggleButton.stories.js +1 -0
- package/dist/esm/ui/ToggleButton/index.d.ts +3 -0
- package/dist/esm/ui/ToggleButton/index.js +1 -0
- package/dist/esm/ui/ToggleSwitch/ToggleSwitch.d.ts +17 -0
- package/dist/esm/ui/ToggleSwitch/ToggleSwitch.js +1 -0
- package/dist/esm/ui/ToggleSwitch/ToggleSwitch.stories.d.ts +5 -0
- package/dist/esm/ui/ToggleSwitch/ToggleSwitch.stories.js +1 -0
- package/dist/esm/ui/ToggleSwitch/index.d.ts +3 -0
- package/dist/esm/ui/ToggleSwitch/index.js +1 -0
- package/dist/esm/ui/TouchHand/TouchHand.d.ts +4 -0
- package/dist/esm/ui/TouchHand/TouchHand.js +1 -0
- package/dist/esm/ui/TouchHand/TouchHand.stories.d.ts +5 -0
- package/dist/esm/ui/TouchHand/TouchHand.stories.js +1 -0
- package/dist/esm/ui/TouchHand/index.d.ts +2 -0
- package/dist/esm/ui/TouchHand/index.js +1 -0
- package/dist/esm/ui/WayfindingFloorSelector/WayfindingFloorSelector.d.ts +23 -0
- package/dist/esm/ui/WayfindingFloorSelector/WayfindingFloorSelector.js +1 -0
- package/dist/esm/ui/WayfindingFloorSelector/WayfindingFloorSelector.stories.d.ts +5 -0
- package/dist/esm/ui/WayfindingFloorSelector/WayfindingFloorSelector.stories.js +1 -0
- package/dist/esm/ui/WayfindingFloorSelector/index.d.ts +3 -0
- package/dist/esm/ui/WayfindingFloorSelector/index.js +1 -0
- package/package.json +3 -3
- package/dist/browser/CookieConsent-l5gCtFOx.js +0 -8234
- package/dist/esm/components/Alert.js +0 -1
- package/dist/esm/components/Button.js +0 -1
- package/dist/esm/components/Checkbox.d.ts +0 -13
- package/dist/esm/components/Checkbox.js +0 -1
- package/dist/esm/components/CheckboxButton.d.ts +0 -11
- package/dist/esm/components/CheckboxButton.js +0 -1
- package/dist/esm/components/HighlightText.d.ts +0 -6
- package/dist/esm/components/HighlightText.js +0 -1
- package/dist/esm/components/LayersLoading.d.ts +0 -9
- package/dist/esm/components/LayersLoading.js +0 -1
- package/dist/esm/components/Radio.d.ts +0 -12
- package/dist/esm/components/Radio.js +0 -1
- package/dist/esm/components/ToggleButton.d.ts +0 -11
- package/dist/esm/components/ToggleButton.js +0 -1
- package/dist/esm/components/ToggleSwitch.d.ts +0 -12
- package/dist/esm/components/ToggleSwitch.js +0 -1
- package/dist/esm/components/TouchHand.d.ts +0 -4
- package/dist/esm/components/TouchHand.js +0 -1
- package/dist/esm/components/WayfindingFloorSelector.d.ts +0 -21
- package/dist/esm/components/WayfindingFloorSelector.js +0 -1
- package/dist/esm/components/stories/Alert.stories.js +0 -1
- package/dist/esm/components/stories/Badge.stories.d.ts +0 -5
- package/dist/esm/components/stories/Badge.stories.js +0 -1
- package/dist/esm/components/stories/Button.stories.d.ts +0 -5
- package/dist/esm/components/stories/Button.stories.js +0 -1
- package/dist/esm/components/stories/Checkbox.stories.d.ts +0 -5
- package/dist/esm/components/stories/Checkbox.stories.js +0 -1
- package/dist/esm/components/stories/CheckboxButton.stories.js +0 -1
- package/dist/esm/components/stories/Loading.stories.d.ts +0 -5
- package/dist/esm/components/stories/Loading.stories.js +0 -1
- package/dist/esm/components/stories/Modal.storiesss.d.ts +0 -5
- package/dist/esm/components/stories/Modal.storiesss.js +0 -1
- package/dist/esm/components/stories/Radio.stories.d.ts +0 -10
- package/dist/esm/components/stories/Radio.stories.js +0 -1
- package/dist/esm/components/stories/Share.storiesSS.d.ts +0 -5
- package/dist/esm/components/stories/Share.storiesSS.js +0 -1
- package/dist/esm/components/stories/ToggleButton.stories.d.ts +0 -5
- package/dist/esm/components/stories/ToggleButton.stories.js +0 -1
- package/dist/esm/components/stories/ToggleSwitch.stories.d.ts +0 -5
- package/dist/esm/components/stories/ToggleSwitch.stories.js +0 -1
- package/dist/esm/components/stories/TouchHand.stories.d.ts +0 -5
- package/dist/esm/components/stories/TouchHand.stories.js +0 -1
- package/dist/esm/components/stories/WayInformation.storiesss.d.ts +0 -5
- package/dist/esm/components/stories/WayfindingFloorSelector.storiesss.d.ts +0 -5
- package/dist/esm/components/stories/WayfindingFloorSelector.storiesss.js +0 -1
- package/dist/esm/components/stories/WayfindingTemplate.storiesss.d.ts +0 -5
- package/dist/esm/components/stories/WayfindingTemplate.storiesss.js +0 -1
- /package/dist/esm/components/stories/{WayInformation.storiesss.js → WayInformation.stories.js} +0 -0
- /package/dist/esm/{components → ui/Badge}/Badge.js +0 -0
|
@@ -1,21 +1,22 @@
|
|
|
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.2.
|
|
4
|
+
e.SENTRY_RELEASE = { id: "3.2.14" };
|
|
5
5
|
var t = new e.Error().stack;
|
|
6
|
-
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "
|
|
6
|
+
t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "5c1b1533-bcc8-453c-ab46-5a6abd8c365e", e._sentryDebugIdIdentifier = "sentry-dbid-5c1b1533-bcc8-453c-ab46-5a6abd8c365e");
|
|
7
7
|
} catch {}
|
|
8
8
|
})();
|
|
9
|
-
import { r as e } from "./rolldown-runtime-
|
|
10
|
-
import { t } from "./react-
|
|
11
|
-
import { t as n } from "./jsx-runtime-
|
|
12
|
-
import {
|
|
13
|
-
import { t as i } from "./classnames-
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
9
|
+
import { r as e } from "./rolldown-runtime-DB8Ddt08.js";
|
|
10
|
+
import { t } from "./react-C3o_QT06.js";
|
|
11
|
+
import { t as n } from "./jsx-runtime-B2BgIlMm.js";
|
|
12
|
+
import { C as r } from "./i18n-BOl9oxrx.js";
|
|
13
|
+
import { t as i } from "./classnames-CHmxGkvV.js";
|
|
14
|
+
import { i as a, r as o } from "./Button-BdvuWzrR.js";
|
|
15
|
+
import { $t as s, Bt as c, Cn as l, Dn as u, En as d, Gt as f, Ht as p, Jn as m, Jt as h, Kt as g, On as _, Qt as v, Rt as ee, Sn as y, Tn as b, Un as te, Ut as x, Vt as S, Wt as C, Xt as w, Yn as T, Yt as E, Zt as D, _n as ne, an as O, bn as k, cn as A, dn as re, en as ie, fn as ae, gn as oe, hn as j, i as se, in as ce, kn as le, ln as ue, mn as de, mt as fe, nn as M, o as N, on as P, pn as pe, qt as me, rn as he, s as F, sn as ge, t as I, tn as _e, un as ve, vn as ye, vt as be, wn as L, xn as xe, yn as Se, zt as Ce } from "./store-CQE29UCE.js";
|
|
16
|
+
import { r as R } from "./mobx-CdvsVcc9.js";
|
|
17
|
+
import { _ as we, a as z, f as Te, g as Ee, i as De, n as Oe, t as ke, u as Ae } from "./data-BmUUjPca.js";
|
|
17
18
|
//#region ../../node_modules/.pnpm/three@0.174.0/node_modules/three/examples/jsm/controls/OrbitControls.js
|
|
18
|
-
var
|
|
19
|
+
var je = /* @__PURE__ */ e(t(), 1), Me = /* @__PURE__ */ e(i(), 1), B = te(), Ne = { type: "change" }, V = { type: "start" }, Pe = { type: "end" }, H = new ne(), Fe = new ae(), Ie = Math.cos(70 * ce.DEG2RAD), U = new _(), W = 2 * Math.PI, G = {
|
|
19
20
|
NONE: -1,
|
|
20
21
|
ROTATE: 0,
|
|
21
22
|
DOLLY: 1,
|
|
@@ -24,21 +25,21 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
24
25
|
TOUCH_PAN: 4,
|
|
25
26
|
TOUCH_DOLLY_PAN: 5,
|
|
26
27
|
TOUCH_DOLLY_ROTATE: 6
|
|
27
|
-
},
|
|
28
|
+
}, Le = 1e-6, Re = class extends g {
|
|
28
29
|
constructor(e, t = null) {
|
|
29
|
-
super(e, t), this.state =
|
|
30
|
+
super(e, t), this.state = G.NONE, this.enabled = !0, this.target = new _(), this.cursor = new _(), this.minDistance = 0, this.maxDistance = Infinity, this.minZoom = 0, this.maxZoom = Infinity, this.minTargetRadius = 0, this.maxTargetRadius = Infinity, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -Infinity, this.maxAzimuthAngle = Infinity, this.enableDamping = !1, this.dampingFactor = .05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = {
|
|
30
31
|
LEFT: "ArrowLeft",
|
|
31
32
|
UP: "ArrowUp",
|
|
32
33
|
RIGHT: "ArrowRight",
|
|
33
34
|
BOTTOM: "ArrowDown"
|
|
34
35
|
}, this.mouseButtons = {
|
|
35
|
-
LEFT:
|
|
36
|
-
MIDDLE:
|
|
37
|
-
RIGHT:
|
|
36
|
+
LEFT: M.ROTATE,
|
|
37
|
+
MIDDLE: M.DOLLY,
|
|
38
|
+
RIGHT: M.PAN
|
|
38
39
|
}, this.touches = {
|
|
39
|
-
ONE:
|
|
40
|
-
TWO:
|
|
41
|
-
}, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new
|
|
40
|
+
ONE: L.ROTATE,
|
|
41
|
+
TWO: L.DOLLY_PAN
|
|
42
|
+
}, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new _(), this._lastQuaternion = new oe(), this._lastTargetPosition = new _(), this._quat = new oe().setFromUnitVectors(e.up, new _(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new l(), this._sphericalDelta = new l(), this._scale = 1, this._panOffset = new _(), this._rotateStart = new u(), this._rotateEnd = new u(), this._rotateDelta = new u(), this._panStart = new u(), this._panEnd = new u(), this._panDelta = new u(), this._dollyStart = new u(), this._dollyEnd = new u(), this._dollyDelta = new u(), this._dollyDirection = new _(), this._mouse = new u(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = Be.bind(this), this._onPointerDown = ze.bind(this), this._onPointerUp = Ve.bind(this), this._onContextMenu = Je.bind(this), this._onMouseWheel = We.bind(this), this._onKeyDown = Ge.bind(this), this._onTouchStart = Ke.bind(this), this._onTouchMove = qe.bind(this), this._onMouseDown = He.bind(this), this._onMouseMove = Ue.bind(this), this._interceptControlDown = Ye.bind(this), this._interceptControlUp = Xe.bind(this), this.domElement !== null && this.connect(), this.update();
|
|
42
43
|
}
|
|
43
44
|
connect() {
|
|
44
45
|
this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointercancel", this._onPointerUp), this.domElement.addEventListener("contextmenu", this._onContextMenu), this.domElement.addEventListener("wheel", this._onMouseWheel, { passive: !1 }), this.domElement.getRootNode().addEventListener("keydown", this._interceptControlDown, {
|
|
@@ -71,43 +72,43 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
71
72
|
this.target0.copy(this.target), this.position0.copy(this.object.position), this.zoom0 = this.object.zoom;
|
|
72
73
|
}
|
|
73
74
|
reset() {
|
|
74
|
-
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(
|
|
75
|
+
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(Ne), this.update(), this.state = G.NONE;
|
|
75
76
|
}
|
|
76
77
|
update(e = null) {
|
|
77
78
|
let t = this.object.position;
|
|
78
|
-
|
|
79
|
+
U.copy(t).sub(this.target), U.applyQuaternion(this._quat), this._spherical.setFromVector3(U), this.autoRotate && this.state === G.NONE && this._rotateLeft(this._getAutoRotationAngle(e)), this.enableDamping ? (this._spherical.theta += this._sphericalDelta.theta * this.dampingFactor, this._spherical.phi += this._sphericalDelta.phi * this.dampingFactor) : (this._spherical.theta += this._sphericalDelta.theta, this._spherical.phi += this._sphericalDelta.phi);
|
|
79
80
|
let n = this.minAzimuthAngle, r = this.maxAzimuthAngle;
|
|
80
|
-
isFinite(n) && isFinite(r) && (n < -Math.PI ? n +=
|
|
81
|
+
isFinite(n) && isFinite(r) && (n < -Math.PI ? n += W : n > Math.PI && (n -= W), r < -Math.PI ? r += W : r > Math.PI && (r -= W), n <= r ? this._spherical.theta = Math.max(n, Math.min(r, this._spherical.theta)) : this._spherical.theta = this._spherical.theta > (n + r) / 2 ? Math.max(n, this._spherical.theta) : Math.min(r, this._spherical.theta)), this._spherical.phi = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, this._spherical.phi)), this._spherical.makeSafe(), this.enableDamping === !0 ? this.target.addScaledVector(this._panOffset, this.dampingFactor) : this.target.add(this._panOffset), this.target.sub(this.cursor), this.target.clampLength(this.minTargetRadius, this.maxTargetRadius), this.target.add(this.cursor);
|
|
81
82
|
let i = !1;
|
|
82
83
|
if (this.zoomToCursor && this._performCursorZoom || this.object.isOrthographicCamera) this._spherical.radius = this._clampDistance(this._spherical.radius);
|
|
83
84
|
else {
|
|
84
85
|
let e = this._spherical.radius;
|
|
85
86
|
this._spherical.radius = this._clampDistance(this._spherical.radius * this._scale), i = e != this._spherical.radius;
|
|
86
87
|
}
|
|
87
|
-
if (
|
|
88
|
+
if (U.setFromSpherical(this._spherical), U.applyQuaternion(this._quatInverse), t.copy(this.target).add(U), this.object.lookAt(this.target), this.enableDamping === !0 ? (this._sphericalDelta.theta *= 1 - this.dampingFactor, this._sphericalDelta.phi *= 1 - this.dampingFactor, this._panOffset.multiplyScalar(1 - this.dampingFactor)) : (this._sphericalDelta.set(0, 0, 0), this._panOffset.set(0, 0, 0)), this.zoomToCursor && this._performCursorZoom) {
|
|
88
89
|
let e = null;
|
|
89
90
|
if (this.object.isPerspectiveCamera) {
|
|
90
|
-
let t =
|
|
91
|
+
let t = U.length();
|
|
91
92
|
e = this._clampDistance(t * this._scale);
|
|
92
93
|
let n = t - e;
|
|
93
94
|
this.object.position.addScaledVector(this._dollyDirection, n), this.object.updateMatrixWorld(), i = !!n;
|
|
94
95
|
} else if (this.object.isOrthographicCamera) {
|
|
95
|
-
let t = new
|
|
96
|
+
let t = new _(this._mouse.x, this._mouse.y, 0);
|
|
96
97
|
t.unproject(this.object);
|
|
97
98
|
let n = this.object.zoom;
|
|
98
99
|
this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), this.object.updateProjectionMatrix(), i = n !== this.object.zoom;
|
|
99
|
-
let r = new
|
|
100
|
-
r.unproject(this.object), this.object.position.sub(r).add(t), this.object.updateMatrixWorld(), e =
|
|
100
|
+
let r = new _(this._mouse.x, this._mouse.y, 0);
|
|
101
|
+
r.unproject(this.object), this.object.position.sub(r).add(t), this.object.updateMatrixWorld(), e = U.length();
|
|
101
102
|
} else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), this.zoomToCursor = !1;
|
|
102
|
-
e !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position) : (
|
|
103
|
+
e !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position) : (H.origin.copy(this.object.position), H.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(H.direction)) < Ie ? this.object.lookAt(this.target) : (Fe.setFromNormalAndCoplanarPoint(this.object.up, this.target), H.intersectPlane(Fe, this.target))));
|
|
103
104
|
} else if (this.object.isOrthographicCamera) {
|
|
104
105
|
let e = this.object.zoom;
|
|
105
106
|
this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), e !== this.object.zoom && (this.object.updateProjectionMatrix(), i = !0);
|
|
106
107
|
}
|
|
107
|
-
return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) >
|
|
108
|
+
return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > Le || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > Le || this._lastTargetPosition.distanceToSquared(this.target) > Le ? (this.dispatchEvent(Ne), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
|
|
108
109
|
}
|
|
109
110
|
_getAutoRotationAngle(e) {
|
|
110
|
-
return e === null ?
|
|
111
|
+
return e === null ? W / 60 / 60 * this.autoRotateSpeed : W / 60 * this.autoRotateSpeed * e;
|
|
111
112
|
}
|
|
112
113
|
_getZoomScale(e) {
|
|
113
114
|
let t = Math.abs(e * .01);
|
|
@@ -120,17 +121,17 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
120
121
|
this._sphericalDelta.phi -= e;
|
|
121
122
|
}
|
|
122
123
|
_panLeft(e, t) {
|
|
123
|
-
|
|
124
|
+
U.setFromMatrixColumn(t, 0), U.multiplyScalar(-e), this._panOffset.add(U);
|
|
124
125
|
}
|
|
125
126
|
_panUp(e, t) {
|
|
126
|
-
this.screenSpacePanning === !0 ?
|
|
127
|
+
this.screenSpacePanning === !0 ? U.setFromMatrixColumn(t, 1) : (U.setFromMatrixColumn(t, 0), U.crossVectors(this.object.up, U)), U.multiplyScalar(e), this._panOffset.add(U);
|
|
127
128
|
}
|
|
128
129
|
_pan(e, t) {
|
|
129
130
|
let n = this.domElement;
|
|
130
131
|
if (this.object.isPerspectiveCamera) {
|
|
131
132
|
let r = this.object.position;
|
|
132
|
-
|
|
133
|
-
let i =
|
|
133
|
+
U.copy(r).sub(this.target);
|
|
134
|
+
let i = U.length();
|
|
134
135
|
i *= Math.tan(this.object.fov / 2 * Math.PI / 180), this._panLeft(2 * e * i / n.clientHeight, this.object.matrix), this._panUp(2 * t * i / n.clientHeight, this.object.matrix);
|
|
135
136
|
} else this.object.isOrthographicCamera ? (this._panLeft(e * (this.object.right - this.object.left) / this.object.zoom / n.clientWidth, this.object.matrix), this._panUp(t * (this.object.top - this.object.bottom) / this.object.zoom / n.clientHeight, this.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), this.enablePan = !1);
|
|
136
137
|
}
|
|
@@ -161,7 +162,7 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
161
162
|
_handleMouseMoveRotate(e) {
|
|
162
163
|
this._rotateEnd.set(e.clientX, e.clientY), this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart).multiplyScalar(this.rotateSpeed);
|
|
163
164
|
let t = this.domElement;
|
|
164
|
-
this._rotateLeft(
|
|
165
|
+
this._rotateLeft(W * this._rotateDelta.x / t.clientHeight), this._rotateUp(W * this._rotateDelta.y / t.clientHeight), this._rotateStart.copy(this._rotateEnd), this.update();
|
|
165
166
|
}
|
|
166
167
|
_handleMouseMoveDolly(e) {
|
|
167
168
|
this._dollyEnd.set(e.clientX, e.clientY), this._dollyDelta.subVectors(this._dollyEnd, this._dollyStart), this._dollyDelta.y > 0 ? this._dollyOut(this._getZoomScale(this._dollyDelta.y)) : this._dollyDelta.y < 0 && this._dollyIn(this._getZoomScale(this._dollyDelta.y)), this._dollyStart.copy(this._dollyEnd), this.update();
|
|
@@ -176,16 +177,16 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
176
177
|
let t = !1;
|
|
177
178
|
switch (e.code) {
|
|
178
179
|
case this.keys.UP:
|
|
179
|
-
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateUp(
|
|
180
|
+
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateUp(W * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(0, this.keyPanSpeed), t = !0;
|
|
180
181
|
break;
|
|
181
182
|
case this.keys.BOTTOM:
|
|
182
|
-
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateUp(-
|
|
183
|
+
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateUp(-W * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(0, -this.keyPanSpeed), t = !0;
|
|
183
184
|
break;
|
|
184
185
|
case this.keys.LEFT:
|
|
185
|
-
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateLeft(
|
|
186
|
+
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateLeft(W * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(this.keyPanSpeed, 0), t = !0;
|
|
186
187
|
break;
|
|
187
188
|
case this.keys.RIGHT:
|
|
188
|
-
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateLeft(-
|
|
189
|
+
e.ctrlKey || e.metaKey || e.shiftKey ? this.enableRotate && this._rotateLeft(-W * this.keyRotateSpeed / this.domElement.clientHeight) : this.enablePan && this._pan(-this.keyPanSpeed, 0), t = !0;
|
|
189
190
|
break;
|
|
190
191
|
}
|
|
191
192
|
t && (e.preventDefault(), this.update());
|
|
@@ -222,7 +223,7 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
222
223
|
}
|
|
223
224
|
this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart).multiplyScalar(this.rotateSpeed);
|
|
224
225
|
let t = this.domElement;
|
|
225
|
-
this._rotateLeft(
|
|
226
|
+
this._rotateLeft(W * this._rotateDelta.x / t.clientHeight), this._rotateUp(W * this._rotateDelta.y / t.clientHeight), this._rotateStart.copy(this._rotateEnd);
|
|
226
227
|
}
|
|
227
228
|
_handleTouchMovePan(e) {
|
|
228
229
|
if (this._pointers.length === 1) this._panEnd.set(e.pageX, e.pageY);
|
|
@@ -260,7 +261,7 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
260
261
|
}
|
|
261
262
|
_trackPointer(e) {
|
|
262
263
|
let t = this._pointerPositions[e.pointerId];
|
|
263
|
-
t === void 0 && (t = new
|
|
264
|
+
t === void 0 && (t = new u(), this._pointerPositions[e.pointerId] = t), t.set(e.pageX, e.pageY);
|
|
264
265
|
}
|
|
265
266
|
_getSecondPointerPosition(e) {
|
|
266
267
|
let t = e.pointerId === this._pointers[0] ? this._pointers[1] : this._pointers[0];
|
|
@@ -283,16 +284,16 @@ var Me = /* @__PURE__ */ e(t(), 1), Ne = /* @__PURE__ */ e(i(), 1), Pe = te(), F
|
|
|
283
284
|
return e.ctrlKey && !this._controlActive && (n.deltaY *= 10), n;
|
|
284
285
|
}
|
|
285
286
|
};
|
|
286
|
-
function
|
|
287
|
+
function ze(e) {
|
|
287
288
|
this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(e.pointerId), this.domElement.addEventListener("pointermove", this._onPointerMove), this.domElement.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(e) && (this._addPointer(e), e.pointerType === "touch" ? this._onTouchStart(e) : this._onMouseDown(e)));
|
|
288
289
|
}
|
|
289
|
-
function
|
|
290
|
+
function Be(e) {
|
|
290
291
|
this.enabled !== !1 && (e.pointerType === "touch" ? this._onTouchMove(e) : this._onMouseMove(e));
|
|
291
292
|
}
|
|
292
|
-
function
|
|
293
|
+
function Ve(e) {
|
|
293
294
|
switch (this._removePointer(e), this._pointers.length) {
|
|
294
295
|
case 0:
|
|
295
|
-
this.domElement.releasePointerCapture(e.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(
|
|
296
|
+
this.domElement.releasePointerCapture(e.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(Pe), this.state = G.NONE;
|
|
296
297
|
break;
|
|
297
298
|
case 1:
|
|
298
299
|
let t = this._pointers[0], n = this._pointerPositions[t];
|
|
@@ -304,7 +305,7 @@ function He(e) {
|
|
|
304
305
|
break;
|
|
305
306
|
}
|
|
306
307
|
}
|
|
307
|
-
function
|
|
308
|
+
function He(e) {
|
|
308
309
|
let t;
|
|
309
310
|
switch (e.button) {
|
|
310
311
|
case 0:
|
|
@@ -319,117 +320,117 @@ function Ue(e) {
|
|
|
319
320
|
default: t = -1;
|
|
320
321
|
}
|
|
321
322
|
switch (t) {
|
|
322
|
-
case
|
|
323
|
+
case M.DOLLY:
|
|
323
324
|
if (this.enableZoom === !1) return;
|
|
324
|
-
this._handleMouseDownDolly(e), this.state =
|
|
325
|
+
this._handleMouseDownDolly(e), this.state = G.DOLLY;
|
|
325
326
|
break;
|
|
326
|
-
case
|
|
327
|
+
case M.ROTATE:
|
|
327
328
|
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
328
329
|
if (this.enablePan === !1) return;
|
|
329
|
-
this._handleMouseDownPan(e), this.state =
|
|
330
|
+
this._handleMouseDownPan(e), this.state = G.PAN;
|
|
330
331
|
} else {
|
|
331
332
|
if (this.enableRotate === !1) return;
|
|
332
|
-
this._handleMouseDownRotate(e), this.state =
|
|
333
|
+
this._handleMouseDownRotate(e), this.state = G.ROTATE;
|
|
333
334
|
}
|
|
334
335
|
break;
|
|
335
|
-
case
|
|
336
|
+
case M.PAN:
|
|
336
337
|
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
337
338
|
if (this.enableRotate === !1) return;
|
|
338
|
-
this._handleMouseDownRotate(e), this.state =
|
|
339
|
+
this._handleMouseDownRotate(e), this.state = G.ROTATE;
|
|
339
340
|
} else {
|
|
340
341
|
if (this.enablePan === !1) return;
|
|
341
|
-
this._handleMouseDownPan(e), this.state =
|
|
342
|
+
this._handleMouseDownPan(e), this.state = G.PAN;
|
|
342
343
|
}
|
|
343
344
|
break;
|
|
344
|
-
default: this.state =
|
|
345
|
+
default: this.state = G.NONE;
|
|
345
346
|
}
|
|
346
|
-
this.state !==
|
|
347
|
+
this.state !== G.NONE && this.dispatchEvent(V);
|
|
347
348
|
}
|
|
348
|
-
function
|
|
349
|
+
function Ue(e) {
|
|
349
350
|
switch (this.state) {
|
|
350
|
-
case
|
|
351
|
+
case G.ROTATE:
|
|
351
352
|
if (this.enableRotate === !1) return;
|
|
352
353
|
this._handleMouseMoveRotate(e);
|
|
353
354
|
break;
|
|
354
|
-
case
|
|
355
|
+
case G.DOLLY:
|
|
355
356
|
if (this.enableZoom === !1) return;
|
|
356
357
|
this._handleMouseMoveDolly(e);
|
|
357
358
|
break;
|
|
358
|
-
case
|
|
359
|
+
case G.PAN:
|
|
359
360
|
if (this.enablePan === !1) return;
|
|
360
361
|
this._handleMouseMovePan(e);
|
|
361
362
|
break;
|
|
362
363
|
}
|
|
363
364
|
}
|
|
364
|
-
function
|
|
365
|
-
this.enabled === !1 || this.enableZoom === !1 || this.state !==
|
|
365
|
+
function We(e) {
|
|
366
|
+
this.enabled === !1 || this.enableZoom === !1 || this.state !== G.NONE || (e.preventDefault(), this.dispatchEvent(V), this._handleMouseWheel(this._customWheelEvent(e)), this.dispatchEvent(Pe));
|
|
366
367
|
}
|
|
367
|
-
function
|
|
368
|
+
function Ge(e) {
|
|
368
369
|
this.enabled !== !1 && this._handleKeyDown(e);
|
|
369
370
|
}
|
|
370
|
-
function
|
|
371
|
+
function Ke(e) {
|
|
371
372
|
switch (this._trackPointer(e), this._pointers.length) {
|
|
372
373
|
case 1:
|
|
373
374
|
switch (this.touches.ONE) {
|
|
374
|
-
case
|
|
375
|
+
case L.ROTATE:
|
|
375
376
|
if (this.enableRotate === !1) return;
|
|
376
|
-
this._handleTouchStartRotate(e), this.state =
|
|
377
|
+
this._handleTouchStartRotate(e), this.state = G.TOUCH_ROTATE;
|
|
377
378
|
break;
|
|
378
|
-
case
|
|
379
|
+
case L.PAN:
|
|
379
380
|
if (this.enablePan === !1) return;
|
|
380
|
-
this._handleTouchStartPan(e), this.state =
|
|
381
|
+
this._handleTouchStartPan(e), this.state = G.TOUCH_PAN;
|
|
381
382
|
break;
|
|
382
|
-
default: this.state =
|
|
383
|
+
default: this.state = G.NONE;
|
|
383
384
|
}
|
|
384
385
|
break;
|
|
385
386
|
case 2:
|
|
386
387
|
switch (this.touches.TWO) {
|
|
387
|
-
case
|
|
388
|
+
case L.DOLLY_PAN:
|
|
388
389
|
if (this.enableZoom === !1 && this.enablePan === !1) return;
|
|
389
|
-
this._handleTouchStartDollyPan(e), this.state =
|
|
390
|
+
this._handleTouchStartDollyPan(e), this.state = G.TOUCH_DOLLY_PAN;
|
|
390
391
|
break;
|
|
391
|
-
case
|
|
392
|
+
case L.DOLLY_ROTATE:
|
|
392
393
|
if (this.enableZoom === !1 && this.enableRotate === !1) return;
|
|
393
|
-
this._handleTouchStartDollyRotate(e), this.state =
|
|
394
|
+
this._handleTouchStartDollyRotate(e), this.state = G.TOUCH_DOLLY_ROTATE;
|
|
394
395
|
break;
|
|
395
|
-
default: this.state =
|
|
396
|
+
default: this.state = G.NONE;
|
|
396
397
|
}
|
|
397
398
|
break;
|
|
398
|
-
default: this.state =
|
|
399
|
+
default: this.state = G.NONE;
|
|
399
400
|
}
|
|
400
|
-
this.state !==
|
|
401
|
+
this.state !== G.NONE && this.dispatchEvent(V);
|
|
401
402
|
}
|
|
402
|
-
function
|
|
403
|
+
function qe(e) {
|
|
403
404
|
switch (this._trackPointer(e), this.state) {
|
|
404
|
-
case
|
|
405
|
+
case G.TOUCH_ROTATE:
|
|
405
406
|
if (this.enableRotate === !1) return;
|
|
406
407
|
this._handleTouchMoveRotate(e), this.update();
|
|
407
408
|
break;
|
|
408
|
-
case
|
|
409
|
+
case G.TOUCH_PAN:
|
|
409
410
|
if (this.enablePan === !1) return;
|
|
410
411
|
this._handleTouchMovePan(e), this.update();
|
|
411
412
|
break;
|
|
412
|
-
case
|
|
413
|
+
case G.TOUCH_DOLLY_PAN:
|
|
413
414
|
if (this.enableZoom === !1 && this.enablePan === !1) return;
|
|
414
415
|
this._handleTouchMoveDollyPan(e), this.update();
|
|
415
416
|
break;
|
|
416
|
-
case
|
|
417
|
+
case G.TOUCH_DOLLY_ROTATE:
|
|
417
418
|
if (this.enableZoom === !1 && this.enableRotate === !1) return;
|
|
418
419
|
this._handleTouchMoveDollyRotate(e), this.update();
|
|
419
420
|
break;
|
|
420
|
-
default: this.state =
|
|
421
|
+
default: this.state = G.NONE;
|
|
421
422
|
}
|
|
422
423
|
}
|
|
423
|
-
function
|
|
424
|
+
function Je(e) {
|
|
424
425
|
this.enabled !== !1 && e.preventDefault();
|
|
425
426
|
}
|
|
426
|
-
function
|
|
427
|
+
function Ye(e) {
|
|
427
428
|
e.key === "Control" && (this._controlActive = !0, this.domElement.getRootNode().addEventListener("keyup", this._interceptControlUp, {
|
|
428
429
|
passive: !0,
|
|
429
430
|
capture: !0
|
|
430
431
|
}));
|
|
431
432
|
}
|
|
432
|
-
function
|
|
433
|
+
function Xe(e) {
|
|
433
434
|
e.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, {
|
|
434
435
|
passive: !0,
|
|
435
436
|
capture: !0
|
|
@@ -437,12 +438,12 @@ function Ze(e) {
|
|
|
437
438
|
}
|
|
438
439
|
//#endregion
|
|
439
440
|
//#region ../../node_modules/.pnpm/three@0.174.0/node_modules/three/examples/jsm/loaders/MTLLoader.js
|
|
440
|
-
var
|
|
441
|
+
var Ze = class extends ie {
|
|
441
442
|
constructor(e) {
|
|
442
443
|
super(e);
|
|
443
444
|
}
|
|
444
445
|
load(e, t, n, r) {
|
|
445
|
-
let i = this, a = this.path === "" ?
|
|
446
|
+
let i = this, a = this.path === "" ? _e.extractUrlBase(e) : this.path, o = new h(this.manager);
|
|
446
447
|
o.setPath(this.path), o.setRequestHeader(this.requestHeader), o.setWithCredentials(this.withCredentials), o.load(e, function(n) {
|
|
447
448
|
try {
|
|
448
449
|
t(i.parse(n, a));
|
|
@@ -472,12 +473,12 @@ var Qe = class extends _e {
|
|
|
472
473
|
];
|
|
473
474
|
} else r[s] = c;
|
|
474
475
|
}
|
|
475
|
-
let o = new
|
|
476
|
+
let o = new Qe(this.resourcePath || t, this.materialOptions);
|
|
476
477
|
return o.setCrossOrigin(this.crossOrigin), o.setManager(this.manager), o.setMaterials(a), o;
|
|
477
478
|
}
|
|
478
|
-
},
|
|
479
|
+
}, Qe = class {
|
|
479
480
|
constructor(e = "", t = {}) {
|
|
480
|
-
this.baseUrl = e, this.options = t, this.materialsInfo = {}, this.materials = {}, this.materialsArray = [], this.nameLookup = {}, this.crossOrigin = "anonymous", this.side = this.options.side === void 0 ? 0 : this.options.side, this.wrap = this.options.wrap === void 0 ?
|
|
481
|
+
this.baseUrl = e, this.options = t, this.materialsInfo = {}, this.materials = {}, this.materialsArray = [], this.nameLookup = {}, this.crossOrigin = "anonymous", this.side = this.options.side === void 0 ? 0 : this.options.side, this.wrap = this.options.wrap === void 0 ? Se : this.options.wrap;
|
|
481
482
|
}
|
|
482
483
|
setCrossOrigin(e) {
|
|
483
484
|
return this.crossOrigin = e, this;
|
|
@@ -538,19 +539,19 @@ var Qe = class extends _e {
|
|
|
538
539
|
function a(e, n) {
|
|
539
540
|
if (r[e]) return;
|
|
540
541
|
let a = t.getTextureParams(n, r), o = t.loadTexture(i(t.baseUrl, a.url));
|
|
541
|
-
o.repeat.copy(a.scale), o.offset.copy(a.offset), o.wrapS = t.wrap, o.wrapT = t.wrap, (e === "map" || e === "emissiveMap") && (o.colorSpace =
|
|
542
|
+
o.repeat.copy(a.scale), o.offset.copy(a.offset), o.wrapS = t.wrap, o.wrapT = t.wrap, (e === "map" || e === "emissiveMap") && (o.colorSpace = k), r[e] = o;
|
|
542
543
|
}
|
|
543
544
|
for (let e in n) {
|
|
544
545
|
let t = n[e], i;
|
|
545
546
|
if (t !== "") switch (e.toLowerCase()) {
|
|
546
547
|
case "kd":
|
|
547
|
-
r.color =
|
|
548
|
+
r.color = C.toWorkingColorSpace(new x().fromArray(t), k);
|
|
548
549
|
break;
|
|
549
550
|
case "ks":
|
|
550
|
-
r.specular =
|
|
551
|
+
r.specular = C.toWorkingColorSpace(new x().fromArray(t), k);
|
|
551
552
|
break;
|
|
552
553
|
case "ke":
|
|
553
|
-
r.emissive =
|
|
554
|
+
r.emissive = C.toWorkingColorSpace(new x().fromArray(t), k);
|
|
554
555
|
break;
|
|
555
556
|
case "map_kd":
|
|
556
557
|
a("map", t);
|
|
@@ -590,18 +591,18 @@ var Qe = class extends _e {
|
|
|
590
591
|
}
|
|
591
592
|
getTextureParams(e, t) {
|
|
592
593
|
let n = {
|
|
593
|
-
scale: new
|
|
594
|
-
offset: new
|
|
594
|
+
scale: new u(1, 1),
|
|
595
|
+
offset: new u(0, 0)
|
|
595
596
|
}, r = e.split(/\s+/), i;
|
|
596
597
|
return i = r.indexOf("-bm"), i >= 0 && (t.bumpScale = parseFloat(r[i + 1]), r.splice(i, 2)), i = r.indexOf("-mm"), i >= 0 && (t.displacementBias = parseFloat(r[i + 1]), t.displacementScale = parseFloat(r[i + 2]), r.splice(i, 3)), i = r.indexOf("-s"), i >= 0 && (n.scale.set(parseFloat(r[i + 1]), parseFloat(r[i + 2])), r.splice(i, 4)), i = r.indexOf("-o"), i >= 0 && (n.offset.set(parseFloat(r[i + 1]), parseFloat(r[i + 2])), r.splice(i, 4)), n.url = r.join(" ").trim(), n;
|
|
597
598
|
}
|
|
598
599
|
loadTexture(e, t, n, r, i) {
|
|
599
|
-
let a = this.manager === void 0 ?
|
|
600
|
-
o === null && (o = new
|
|
600
|
+
let a = this.manager === void 0 ? me : this.manager, o = a.getHandler(e);
|
|
601
|
+
o === null && (o = new d(a)), o.setCrossOrigin && o.setCrossOrigin(this.crossOrigin);
|
|
601
602
|
let s = o.load(e, n, r, i);
|
|
602
603
|
return t !== void 0 && (s.mapping = t), s;
|
|
603
604
|
}
|
|
604
|
-
},
|
|
605
|
+
}, $e = /^[og]\s*(.+)?/, et = /^mtllib /, tt = /^usemtl /, nt = /^usemap /, rt = /\s+/, it = new _(), at = new _(), ot = new _(), st = new _(), K = new _(), q = new x();
|
|
605
606
|
function ct() {
|
|
606
607
|
let e = {
|
|
607
608
|
objects: [],
|
|
@@ -708,7 +709,7 @@ function ct() {
|
|
|
708
709
|
},
|
|
709
710
|
addFaceNormal: function(e, t, n) {
|
|
710
711
|
let r = this.vertices, i = this.object.geometry.normals;
|
|
711
|
-
|
|
712
|
+
it.fromArray(r, e), at.fromArray(r, t), ot.fromArray(r, n), K.subVectors(ot, at), st.subVectors(it, at), K.cross(st), K.normalize(), i.push(K.x, K.y, K.z), i.push(K.x, K.y, K.z), i.push(K.x, K.y, K.z);
|
|
712
713
|
},
|
|
713
714
|
addColor: function(e, t, n) {
|
|
714
715
|
let r = this.colors, i = this.object.geometry.colors;
|
|
@@ -754,12 +755,12 @@ function ct() {
|
|
|
754
755
|
};
|
|
755
756
|
return e.startObject("", !1), e;
|
|
756
757
|
}
|
|
757
|
-
var lt = class extends
|
|
758
|
+
var lt = class extends ie {
|
|
758
759
|
constructor(e) {
|
|
759
760
|
super(e), this.materials = null;
|
|
760
761
|
}
|
|
761
762
|
load(e, t, n, r) {
|
|
762
|
-
let i = this, a = new
|
|
763
|
+
let i = this, a = new h(this.manager);
|
|
763
764
|
a.setPath(this.path), a.setRequestHeader(this.requestHeader), a.setWithCredentials(this.withCredentials), a.load(e, function(n) {
|
|
764
765
|
try {
|
|
765
766
|
t(i.parse(n));
|
|
@@ -780,10 +781,10 @@ var lt = class extends _e {
|
|
|
780
781
|
if (i.length === 0) continue;
|
|
781
782
|
let a = i.charAt(0);
|
|
782
783
|
if (a !== "#") if (a === "v") {
|
|
783
|
-
let e = i.split(
|
|
784
|
+
let e = i.split(rt);
|
|
784
785
|
switch (e[0]) {
|
|
785
786
|
case "v":
|
|
786
|
-
t.vertices.push(parseFloat(e[1]), parseFloat(e[2]), parseFloat(e[3])), e.length >= 7 ? (q.setRGB(parseFloat(e[4]), parseFloat(e[5]), parseFloat(e[6]),
|
|
787
|
+
t.vertices.push(parseFloat(e[1]), parseFloat(e[2]), parseFloat(e[3])), e.length >= 7 ? (q.setRGB(parseFloat(e[4]), parseFloat(e[5]), parseFloat(e[6]), k), t.colors.push(q.r, q.g, q.b)) : t.colors.push(void 0, void 0, void 0);
|
|
787
788
|
break;
|
|
788
789
|
case "vn":
|
|
789
790
|
t.normals.push(parseFloat(e[1]), parseFloat(e[2]), parseFloat(e[3]));
|
|
@@ -793,7 +794,7 @@ var lt = class extends _e {
|
|
|
793
794
|
break;
|
|
794
795
|
}
|
|
795
796
|
} else if (a === "f") {
|
|
796
|
-
let e = i.slice(1).trim().split(
|
|
797
|
+
let e = i.slice(1).trim().split(rt), n = [];
|
|
797
798
|
for (let t = 0, r = e.length; t < r; t++) {
|
|
798
799
|
let r = e[t];
|
|
799
800
|
if (r.length > 0) {
|
|
@@ -817,12 +818,12 @@ var lt = class extends _e {
|
|
|
817
818
|
} else if (a === "p") {
|
|
818
819
|
let e = i.slice(1).trim().split(" ");
|
|
819
820
|
t.addPointGeometry(e);
|
|
820
|
-
} else if ((r =
|
|
821
|
+
} else if ((r = $e.exec(i)) !== null) {
|
|
821
822
|
let e = (" " + r[0].slice(1).trim()).slice(1);
|
|
822
823
|
t.startObject(e);
|
|
823
|
-
} else if (
|
|
824
|
-
else if (
|
|
825
|
-
else if (
|
|
824
|
+
} else if (tt.test(i)) t.object.startMaterial(i.substring(7).trim(), t.materialLibraries);
|
|
825
|
+
else if (et.test(i)) t.materialLibraries.push(i.substring(7).trim());
|
|
826
|
+
else if (nt.test(i)) console.warn("THREE.OBJLoader: Rendering identifier \"usemap\" not supported. Textures must be defined in MTL files.");
|
|
826
827
|
else if (a === "s") {
|
|
827
828
|
if (r = i.split(" "), r.length > 1) {
|
|
828
829
|
let e = r[1].trim().toLowerCase();
|
|
@@ -836,49 +837,49 @@ var lt = class extends _e {
|
|
|
836
837
|
}
|
|
837
838
|
}
|
|
838
839
|
t.finalize();
|
|
839
|
-
let i = new
|
|
840
|
+
let i = new w();
|
|
840
841
|
if (i.materialLibraries = [].concat(t.materialLibraries), !(t.objects.length === 1 && t.objects[0].geometry.vertices.length === 0)) for (let e = 0, n = t.objects.length; e < n; e++) {
|
|
841
|
-
let n = t.objects[e], r = n.geometry, a = n.materials,
|
|
842
|
+
let n = t.objects[e], r = n.geometry, a = n.materials, o = r.type === "Line", l = r.type === "Points", u = !1;
|
|
842
843
|
if (r.vertices.length === 0) continue;
|
|
843
|
-
let
|
|
844
|
-
|
|
845
|
-
let
|
|
844
|
+
let d = new c();
|
|
845
|
+
d.setAttribute("position", new E(r.vertices, 3)), r.normals.length > 0 && d.setAttribute("normal", new E(r.normals, 3)), r.colors.length > 0 && (u = !0, d.setAttribute("color", new E(r.colors, 3))), r.hasUVIndices === !0 && d.setAttribute("uv", new E(r.uvs, 2));
|
|
846
|
+
let f = [];
|
|
846
847
|
for (let e = 0, n = a.length; e < n; e++) {
|
|
847
|
-
let n = a[e], r = n.name + "_" + n.smooth + "_" +
|
|
848
|
+
let n = a[e], r = n.name + "_" + n.smooth + "_" + u, i = t.materials[r];
|
|
848
849
|
if (this.materials !== null) {
|
|
849
|
-
if (i = this.materials.create(n.name),
|
|
850
|
-
let e = new
|
|
851
|
-
|
|
852
|
-
} else if (
|
|
853
|
-
let e = new
|
|
850
|
+
if (i = this.materials.create(n.name), o && i && !(i instanceof v)) {
|
|
851
|
+
let e = new v();
|
|
852
|
+
he.prototype.copy.call(e, i), e.color.copy(i.color), i = e;
|
|
853
|
+
} else if (l && i && !(i instanceof j)) {
|
|
854
|
+
let e = new j({
|
|
854
855
|
size: 10,
|
|
855
856
|
sizeAttenuation: !1
|
|
856
857
|
});
|
|
857
|
-
|
|
858
|
+
he.prototype.copy.call(e, i), e.color.copy(i.color), e.map = i.map, i = e;
|
|
858
859
|
}
|
|
859
860
|
}
|
|
860
|
-
i === void 0 && (i =
|
|
861
|
+
i === void 0 && (i = o ? new v() : l ? new j({
|
|
861
862
|
size: 1,
|
|
862
863
|
sizeAttenuation: !1
|
|
863
|
-
}) : new A(), i.name = n.name, i.flatShading = !n.smooth, i.vertexColors =
|
|
864
|
+
}) : new A(), i.name = n.name, i.flatShading = !n.smooth, i.vertexColors = u, t.materials[r] = i), f.push(i);
|
|
864
865
|
}
|
|
865
|
-
let
|
|
866
|
-
if (
|
|
866
|
+
let p;
|
|
867
|
+
if (f.length > 1) {
|
|
867
868
|
for (let e = 0, t = a.length; e < t; e++) {
|
|
868
869
|
let t = a[e];
|
|
869
|
-
|
|
870
|
+
d.addGroup(t.groupStart, t.groupCount, e);
|
|
870
871
|
}
|
|
871
|
-
|
|
872
|
-
} else
|
|
873
|
-
|
|
872
|
+
p = o ? new s(d, f) : l ? new de(d, f) : new P(d, f);
|
|
873
|
+
} else p = o ? new s(d, f[0]) : l ? new de(d, f[0]) : new P(d, f[0]);
|
|
874
|
+
p.name = n.name, i.add(p);
|
|
874
875
|
}
|
|
875
876
|
else if (t.vertices.length > 0) {
|
|
876
|
-
let e = new
|
|
877
|
+
let e = new j({
|
|
877
878
|
size: 1,
|
|
878
879
|
sizeAttenuation: !1
|
|
879
|
-
}), n = new
|
|
880
|
-
n.setAttribute("position", new
|
|
881
|
-
let r = new
|
|
880
|
+
}), n = new c();
|
|
881
|
+
n.setAttribute("position", new E(t.vertices, 3)), t.colors.length > 0 && t.colors[0] !== void 0 && (n.setAttribute("color", new E(t.colors, 3)), e.vertexColors = !0);
|
|
882
|
+
let r = new de(n, e);
|
|
882
883
|
i.add(r);
|
|
883
884
|
}
|
|
884
885
|
return i;
|
|
@@ -915,7 +916,7 @@ var lt = class extends _e {
|
|
|
915
916
|
this.dataURLs = /* @__PURE__ */ new Map();
|
|
916
917
|
for (var t of e.keys()) {
|
|
917
918
|
var n = e.get(t);
|
|
918
|
-
if (n instanceof
|
|
919
|
+
if (n instanceof f) throw Error("CompressedTextures are not supported.");
|
|
919
920
|
if (n.image.toDataURL === void 0) {
|
|
920
921
|
var r = document.createElement("canvas");
|
|
921
922
|
r.width = n.image.naturalWidth, r.height = n.image.naturalHeight, r.getContext("2d").drawImage(n.image, 0, 0), this.dataURLs.set(t, r.toDataURL());
|
|
@@ -934,11 +935,11 @@ var lt = class extends _e {
|
|
|
934
935
|
var s = this.canvas.getContext("2d");
|
|
935
936
|
this.context = s;
|
|
936
937
|
for (t of this.textureOffsets.keys()) {
|
|
937
|
-
for (var a = e.get(t), c = this.textureOffsets.get(t).x, l = this.textureOffsets.get(t).y, u = a.image.width, d = a.image.height,
|
|
938
|
+
for (var a = e.get(t), c = this.textureOffsets.get(t).x, l = this.textureOffsets.get(t).y, u = a.image.width, d = a.image.height, m = l; m < l + d; m += d) for (var h = c; h < c + u; h += u) s.drawImage(a.image, h, m, u, d);
|
|
938
939
|
var g = new ut();
|
|
939
940
|
g.startU = c / o.width, g.endU = (c + u) / o.width, g.startV = 1 - l / o.height, g.endV = 1 - (l + d) / o.height, this.ranges.set(t, g);
|
|
940
941
|
}
|
|
941
|
-
this.makeCanvasPowerOfTwo(), this.mergedTexture = new
|
|
942
|
+
this.makeCanvasPowerOfTwo(), this.mergedTexture = new S(this.canvas), this.mergedTexture.wrapS = p, this.mergedTexture.wrapT = p, this.mergedTexture.minFilter = ve, this.mergedTexture.magFilter = ve, this.mergedTexture.needsUpdate = !0;
|
|
942
943
|
}
|
|
943
944
|
}
|
|
944
945
|
isTextureAlreadyInserted(e, t) {
|
|
@@ -970,7 +971,7 @@ var lt = class extends _e {
|
|
|
970
971
|
if (m < c && p.width <= this.MAX_TEXTURE_SIZE && p.height <= this.MAX_TEXTURE_SIZE) {
|
|
971
972
|
var h = !1;
|
|
972
973
|
for (var g of this.textureOffsets.keys()) if (g != t) {
|
|
973
|
-
var _ = f.rectangle, { x:
|
|
974
|
+
var _ = f.rectangle, { x: v, y: ee } = this.textureOffsets.get(g), y = n.get(g).image, b = new J(_.x, _.y, o, s), te = new J(v, ee, y.width, y.height);
|
|
974
975
|
b.overlaps(te) && (h = !0);
|
|
975
976
|
}
|
|
976
977
|
h || (c = m, l = this.allNodes[d], u = !0);
|
|
@@ -999,14 +1000,14 @@ var lt = class extends _e {
|
|
|
999
1000
|
x: e.rectangle.x,
|
|
1000
1001
|
y: e.rectangle.y
|
|
1001
1002
|
});
|
|
1002
|
-
var
|
|
1003
|
+
var O = e.children[0];
|
|
1003
1004
|
this.allNodes = [
|
|
1004
1005
|
e,
|
|
1005
1006
|
x,
|
|
1006
1007
|
S
|
|
1007
1008
|
];
|
|
1008
1009
|
var a = this.findNextTexture(n);
|
|
1009
|
-
a != null && this.insert(
|
|
1010
|
+
a != null && this.insert(O, a, n);
|
|
1010
1011
|
}
|
|
1011
1012
|
}
|
|
1012
1013
|
makeCanvasPowerOfTwo(e) {
|
|
@@ -1051,7 +1052,7 @@ new A({
|
|
|
1051
1052
|
side: 2,
|
|
1052
1053
|
name: "selected"
|
|
1053
1054
|
});
|
|
1054
|
-
var pt = new
|
|
1055
|
+
var pt = new ue({
|
|
1055
1056
|
metalness: 0,
|
|
1056
1057
|
roughness: 1,
|
|
1057
1058
|
clearcoat: .5,
|
|
@@ -1064,18 +1065,18 @@ var pt = new ve({
|
|
|
1064
1065
|
color: 16734003,
|
|
1065
1066
|
side: 2,
|
|
1066
1067
|
name: "hovered"
|
|
1067
|
-
}), ht = class extends
|
|
1068
|
+
}), ht = class extends w {
|
|
1068
1069
|
constructor(e, t, n, r, i, a) {
|
|
1069
1070
|
super(), this.efpBooth = e, this.threeBooth = t, this.boothMesh = n, this.name = r, this.threeLayer = i, this.z = a, this.material = void 0, this.name = r, n.name = r, this.material = n.material, this.children.push(n), this.layers.set(i);
|
|
1070
1071
|
}
|
|
1071
1072
|
setText() {
|
|
1072
|
-
let e = new
|
|
1073
|
-
if (e.text =
|
|
1074
|
-
e.color = this.efpBooth.labelColor ||
|
|
1073
|
+
let e = new ee();
|
|
1074
|
+
if (e.text = Oe(this.efpBooth), !e.text) return;
|
|
1075
|
+
e.color = this.efpBooth.labelColor || m.boothLabelColor, e.anchorX = "center", e.anchorY = "middle", e.textAlign = "center";
|
|
1075
1076
|
let t = e.text.split(" "), n = Math.max(...t.map((e) => e.length)), { rect: r } = this.threeBooth, i = Math.max(r.width, r.height), a = Math.min(r.width, r.height);
|
|
1076
1077
|
e.fontSize = a, e.fontSize * e.text.length > i && (e.fontSize *= 1.1 * i / (e.fontSize * e.text.length)), e.fontSize / a < .15 && (e.maxWidth = .1, e.fontSize *= t.length, e.fontSize * t.length > a && (e.fontSize *= .9 * a / (e.fontSize * t.length)), e.fontSize * n > i && (e.fontSize *= i / (e.fontSize * n)));
|
|
1077
1078
|
let o = e;
|
|
1078
|
-
var s = (0,
|
|
1079
|
+
var s = (0, B.lineAngle)(this.threeBooth.rect.p0, this.threeBooth.rect.p1) || 0;
|
|
1079
1080
|
return 1.5 * r.width < r.height && (s += 90), o.rotateZ(s * Math.PI / 180), o.position.x = r.center.x, o.position.y = r.center.y, o.position.z = this.z + .01, o.scale.y = -1, o.name = this.name, o.layers.set(this.threeLayer), e;
|
|
1080
1081
|
}
|
|
1081
1082
|
setLogo(e, t, n) {
|
|
@@ -1087,7 +1088,7 @@ var pt = new ve({
|
|
|
1087
1088
|
} else s = -this.efpBooth.rotate * 180 / Math.PI;
|
|
1088
1089
|
let c = e.ranges.get(this.efpBooth.slug + "_logo");
|
|
1089
1090
|
if (!c) return null;
|
|
1090
|
-
var l = new
|
|
1091
|
+
var l = new P(new pe(a, o), n);
|
|
1091
1092
|
return l.layers.set(this.threeLayer), ft(l, c), l.rotateZ((s || 0) * Math.PI / 180), l.position.x = r.center.x, l.position.y = r.center.y, l.position.z = this.z + .01 * this.z, l.scale.y = -1, l.material.map = e.mergedTexture, l.name = this.efpBooth.name, l;
|
|
1092
1093
|
}
|
|
1093
1094
|
dimmed(e) {
|
|
@@ -1123,7 +1124,7 @@ async function _t(e, t) {
|
|
|
1123
1124
|
}
|
|
1124
1125
|
async function vt(e) {
|
|
1125
1126
|
return new Promise((t, n) => {
|
|
1126
|
-
let r = new
|
|
1127
|
+
let r = new Ze();
|
|
1127
1128
|
r.setMaterialOptions({ side: 2 }), r.load(e, (e) => {
|
|
1128
1129
|
t(e);
|
|
1129
1130
|
}, void 0, (e) => {
|
|
@@ -1133,7 +1134,7 @@ async function vt(e) {
|
|
|
1133
1134
|
}
|
|
1134
1135
|
//#endregion
|
|
1135
1136
|
//#region src/components/Threejs/common/Scene.ts
|
|
1136
|
-
var yt = class extends
|
|
1137
|
+
var yt = class extends xe {
|
|
1137
1138
|
constructor() {
|
|
1138
1139
|
super(), this.camera = void 0, this.raycaster = void 0, this.objLayers = /* @__PURE__ */ new Map(), this.layerCounter = 1, this.onClickCallbacks = [];
|
|
1139
1140
|
}
|
|
@@ -1147,63 +1148,63 @@ var yt = class extends ee {
|
|
|
1147
1148
|
//#endregion
|
|
1148
1149
|
//#region src/components/Threejs/common/sceneLoader.ts
|
|
1149
1150
|
async function bt(e, t, n, r, i, a) {
|
|
1150
|
-
let o = new
|
|
1151
|
+
let o = new ye(), s = new yt();
|
|
1151
1152
|
s.raycaster = o, s.camera = r, r.near = .1, r.far = 1e4, r.aspect = n.clientWidth / n.clientHeight, r.updateProjectionMatrix();
|
|
1152
|
-
let
|
|
1153
|
-
|
|
1154
|
-
let
|
|
1153
|
+
let c = new D(16777215, 10, Math.PI);
|
|
1154
|
+
c.castShadow = !0, c.position.set(0, 0, 100), s.add(c);
|
|
1155
|
+
let l = new Ce({
|
|
1155
1156
|
canvas: e || void 0,
|
|
1156
1157
|
context: t || void 0,
|
|
1157
1158
|
antialias: !0,
|
|
1158
1159
|
precision: "highp",
|
|
1159
1160
|
premultipliedAlpha: !0
|
|
1160
1161
|
});
|
|
1161
|
-
|
|
1162
|
-
r.aspect = n.clientWidth / n.clientHeight, r.updateProjectionMatrix(),
|
|
1162
|
+
l.outputColorSpace = k, !e && !t && (l.setSize(n.clientWidth, n.clientHeight), n.appendChild(l.domElement)), l.autoClear = !1, n.addEventListener("resize", () => {
|
|
1163
|
+
r.aspect = n.clientWidth / n.clientHeight, r.updateProjectionMatrix(), l.setSize(n.clientWidth, n.clientHeight), u();
|
|
1163
1164
|
}, !1);
|
|
1164
|
-
function
|
|
1165
|
-
|
|
1165
|
+
function u() {
|
|
1166
|
+
l.resetState(), a(), !e && !t && l.render(s, r);
|
|
1166
1167
|
}
|
|
1167
|
-
function
|
|
1168
|
-
requestAnimationFrame(
|
|
1168
|
+
function d() {
|
|
1169
|
+
requestAnimationFrame(d), u();
|
|
1169
1170
|
}
|
|
1170
|
-
|
|
1171
|
-
let
|
|
1171
|
+
d(), o.layers.enableAll();
|
|
1172
|
+
let f = !1;
|
|
1172
1173
|
n.addEventListener("mousedown", () => {
|
|
1173
|
-
|
|
1174
|
+
f = !0;
|
|
1174
1175
|
}), n.addEventListener("mousemove", () => {
|
|
1175
|
-
|
|
1176
|
+
f = !1;
|
|
1176
1177
|
}), n.addEventListener("mouseup", (e) => {
|
|
1177
|
-
|
|
1178
|
+
f && p(e.clientX - n.parentElement.offsetLeft, e.clientY - n.parentElement.offsetTop), f = !1;
|
|
1178
1179
|
});
|
|
1179
|
-
function
|
|
1180
|
+
function p(e, t) {
|
|
1180
1181
|
i(e, t, o);
|
|
1181
1182
|
let n = o.intersectObjects(s.children).filter((e) => e.object.material.visible).sort((e, t) => e.distance - t.distance);
|
|
1182
1183
|
s.onClickCallbacks.forEach((e) => e(n));
|
|
1183
1184
|
}
|
|
1184
1185
|
return s.scale.x = -1, {
|
|
1185
1186
|
scene: s,
|
|
1186
|
-
renderer:
|
|
1187
|
+
renderer: l
|
|
1187
1188
|
};
|
|
1188
1189
|
}
|
|
1189
1190
|
//#endregion
|
|
1190
1191
|
//#region src/components/Threejs/index.ts
|
|
1191
1192
|
function xt(e, t) {
|
|
1192
1193
|
return new Promise(async (n, r) => {
|
|
1193
|
-
let i = new
|
|
1194
|
+
let i = new re(50, e.clientWidth / e.clientHeight, .1, 1e3);
|
|
1194
1195
|
var { x: a, y: o } = t.viewbox.center;
|
|
1195
1196
|
i.position.x = a + t.area.width * .2, i.position.y = o + t.area.height, i.position.z = t.objLayers[t.objLayers.length - 1].z * Math.max(t.area.height, t.area.width) * .15 || Math.min(t.area.height, t.area.width), i.up.set(0, 0, 1);
|
|
1196
1197
|
let s, c = await bt(null, null, e, i, (t, n, r) => {
|
|
1197
|
-
let a = new
|
|
1198
|
+
let a = new u();
|
|
1198
1199
|
a.x = t / e.clientWidth * 2 - 1, a.y = -(n / e.clientHeight) * 2 + 1, r.setFromCamera(a, i);
|
|
1199
1200
|
}, () => {
|
|
1200
1201
|
s == null || s.update();
|
|
1201
1202
|
});
|
|
1202
|
-
s = new
|
|
1203
|
-
LEFT:
|
|
1204
|
-
RIGHT:
|
|
1205
|
-
MIDDLE:
|
|
1206
|
-
}, s.touches.ONE =
|
|
1203
|
+
s = new Re(i, c.renderer.domElement), s.enableRotate = !0, s.enablePan = !0, s.enableZoom = !0, s.enableDamping = !0, s.zoomSpeed = .7, s.rotateSpeed = 1.5, s.panSpeed = .7, s.target.set(a, o, 0), s.mouseButtons = {
|
|
1204
|
+
LEFT: M.PAN,
|
|
1205
|
+
RIGHT: M.ROTATE,
|
|
1206
|
+
MIDDLE: M.DOLLY
|
|
1207
|
+
}, s.touches.ONE = L.PAN, s.touches.TWO = L.DOLLY_ROTATE, c.scene.background = new x(12895428), n(c.scene);
|
|
1207
1208
|
});
|
|
1208
1209
|
}
|
|
1209
1210
|
//#endregion
|
|
@@ -1242,51 +1243,51 @@ async function wt(e, t) {
|
|
|
1242
1243
|
return new Promise(async (n, r) => {
|
|
1243
1244
|
var { geoConfig: i } = t;
|
|
1244
1245
|
let a = await Ct(e, i.style);
|
|
1245
|
-
|
|
1246
|
-
let o, c, l
|
|
1246
|
+
Ae(a);
|
|
1247
|
+
let o, s, c, l;
|
|
1247
1248
|
a.setBearing(i.bearing - 30), a.setCenter(i.center), a.setZoom(16);
|
|
1248
|
-
let
|
|
1249
|
+
let u = [
|
|
1249
1250
|
0,
|
|
1250
1251
|
0,
|
|
1251
1252
|
(180 - i.bearing) * Math.PI / 180
|
|
1252
|
-
],
|
|
1253
|
-
translateX:
|
|
1254
|
-
translateY:
|
|
1255
|
-
translateZ:
|
|
1256
|
-
rotateX:
|
|
1257
|
-
rotateY:
|
|
1258
|
-
rotateZ:
|
|
1259
|
-
scale: 10 *
|
|
1253
|
+
], d = X.default.MercatorCoordinate.fromLngLat(i.center, 1), f = {
|
|
1254
|
+
translateX: d.x,
|
|
1255
|
+
translateY: d.y,
|
|
1256
|
+
translateZ: d.z,
|
|
1257
|
+
rotateX: u[0],
|
|
1258
|
+
rotateY: u[1],
|
|
1259
|
+
rotateZ: u[2],
|
|
1260
|
+
scale: 10 * d.meterInMercatorCoordinateUnits()
|
|
1260
1261
|
};
|
|
1261
1262
|
a.addLayer({
|
|
1262
1263
|
id: "3d-expofp",
|
|
1263
1264
|
type: "custom",
|
|
1264
1265
|
renderingMode: "3d",
|
|
1265
1266
|
onAdd: async function(t, r) {
|
|
1266
|
-
o = new
|
|
1267
|
+
o = new re();
|
|
1267
1268
|
var i = await bt(t.getCanvas(), r, e, o, (n, r, i) => {
|
|
1268
|
-
let a = t.getFreeCameraOptions(),
|
|
1269
|
-
|
|
1270
|
-
let
|
|
1271
|
-
return
|
|
1269
|
+
let a = t.getFreeCameraOptions(), s = new le(a.position.x, a.position.y, a.position.z, 1), c = new le(-1e3, -1e3, 1, 1);
|
|
1270
|
+
c.x = n / e.clientWidth * 2 - 1, c.y = -(r / e.clientHeight) * 2 + 1, s.applyMatrix4(l.invert());
|
|
1271
|
+
let u = c.clone().applyMatrix4(o.projectionMatrix.clone().invert());
|
|
1272
|
+
return u.divideScalar(u.w), i.set(s, u.sub(s).normalize()), i;
|
|
1272
1273
|
}, () => {});
|
|
1273
|
-
|
|
1274
|
+
s = i.scene, c = i.renderer, n(s);
|
|
1274
1275
|
},
|
|
1275
1276
|
render: function(e, t) {
|
|
1276
|
-
if (!
|
|
1277
|
-
let n = new
|
|
1278
|
-
|
|
1279
|
-
let
|
|
1280
|
-
o.userData.position =
|
|
1277
|
+
if (!c) return;
|
|
1278
|
+
let n = new O().makeRotationAxis(new _(1, 0, 0), f.rotateX), r = new O().makeRotationAxis(new _(0, 1, 0), f.rotateY), i = new O().makeRotationAxis(new _(0, 0, 1), f.rotateZ), u = new O().fromArray(t);
|
|
1279
|
+
l = new O().makeTranslation(f.translateX, f.translateY, f.translateZ).scale(new _(f.scale, -f.scale, f.scale)).multiply(n).multiply(r).multiply(i), o.projectionMatrix = u.multiply(l);
|
|
1280
|
+
let d = a.getFreeCameraOptions(), p = new le(d.position.x, d.position.y, d.position.z, 1).applyMatrix4(l.clone().invert());
|
|
1281
|
+
o.userData.position = p, c.render(s, o), a.triggerRepaint();
|
|
1281
1282
|
}
|
|
1282
1283
|
});
|
|
1283
1284
|
});
|
|
1284
1285
|
}
|
|
1285
1286
|
//#endregion
|
|
1286
1287
|
//#region src/components/Threejs/common/SpriteMesh.ts
|
|
1287
|
-
var Z = class extends
|
|
1288
|
+
var Z = class extends P {
|
|
1288
1289
|
constructor(e, t) {
|
|
1289
|
-
let n = new pe(1, 1), r = new
|
|
1290
|
+
let n = new pe(1, 1), r = new ge({
|
|
1290
1291
|
transparent: !0,
|
|
1291
1292
|
side: 2,
|
|
1292
1293
|
alphaTest: .8,
|
|
@@ -1294,12 +1295,12 @@ var Z = class extends F {
|
|
|
1294
1295
|
precision: "highp"
|
|
1295
1296
|
});
|
|
1296
1297
|
var i = 0;
|
|
1297
|
-
new
|
|
1298
|
+
new d().load(e, (e) => {
|
|
1298
1299
|
r.map = e;
|
|
1299
1300
|
var i = t / e.image.height;
|
|
1300
1301
|
n.scale(e.image.width * i, e.image.height * i, 1), n.translate(0, e.image.height * i / 2, 0), n.rotateX(Math.PI / 2), r.needsUpdate = !0;
|
|
1301
1302
|
}), super(n, r), this.onBeforeRender = (e, t, n, r, a, o) => {
|
|
1302
|
-
let s = (0,
|
|
1303
|
+
let s = (0, B.round)(((0, B.lineAngle)({
|
|
1303
1304
|
x: 0,
|
|
1304
1305
|
y: 0
|
|
1305
1306
|
}, n.position.x && n.position.y && n.position.z ? n.position : n.userData.position) - 90) * Math.PI / 180, 2);
|
|
@@ -1315,7 +1316,7 @@ function Tt(e) {
|
|
|
1315
1316
|
}
|
|
1316
1317
|
//#endregion
|
|
1317
1318
|
//#region src/components/Threejs/assets/from.png
|
|
1318
|
-
var Et = "data:image/png;base64,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", Dt = "data:image/png;base64,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", Ot = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW8AAAJBCAYAAACJcjTPAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR42u3dT1IjSdLG4boEt9AdOISuwBV0A26gA3AA7Vlry5IdO2200UILzDCZIQP6I3uC/ujqAvQ3wz3y+Zm9NjM21V3KzIg3PT08PH79AgAAODd//fo1edf0Bz28a/Gd3n79uv/tn7l0dwFgf1Me/W6+7wb7+K7tu17e//dffar7O8vf3en5N/PvfuOVpwZgKAZ99a5ZMeYPY3zr25jPYPKbck2377r2pAGkpTOxd0Obv//nqgWTPsDU37rrLqZ+V6L1kZEBIEo0fdEZU5dDLmmOlyGZ9IGm/lQMXeoFQG9mPSrpgc6oXxkyMwcQOAXyriWzZuYAYkfX45KvfhparpqZA8gWXd+UxUXRdWwzfy3liowcGGh0fVGi62fRdV4jL5uNxkY00L5pT8tiI8Nuy8hfSmrFTlGgsRz2gmEPxsi7HaFzdeVATsMelbSIuuthG3m32HnbpcnMCiAwZeFRWoS+qlqxfR+IlBYpddgMm3bNj9+aOUA9077qomyGREdE4/dy40B/qZHr0smOCdGpTHyl5BA4bz57y3DojEbefclNzDbgNKZ9a+cj9WziXZAwM/uA/fPZHzsgLUJS7ZTKnVJD4GfTHpXe2Eybwpm4GQr8OdJ+YNqUoJ/KjRkL/P9CpJw2ZduCr7MhBhttX5VJwBAoq4mvNcPC0PLaK5OfWsmHdyk/i5poPUVyJ69NDS9q2naP5qLtqbw2Dah3igZYSG/aY1vZaaAmvpEPR0bTvnAAAjHwv8f/nCMgS177Woqktxzrdgc9lkN7/6NyhufHn/OiPW9poe6FCG3cS5P15Ob8Yb7d0V7TPrrflaPjpkWzT2a//GT2XtD7P08bfBAuTXLlyLHDGiCVWuFFOa5rmi1PWhaju5YGa2Ng586FonCEmLy2te++tfqpGN1142NiUrpBLqVkvsyFT7kHak3QS/21v095lIj6RqT1T+XRTbknG4b+9zhZ2tyDvieidq3/jarXpX2oZv67r5F0i9urIY+lMnbUhePspj1St/2vSXevQdHp1k1KVP461CjcKMC5oqSboUfbpbTuzuaLXlIs90NLy5UFX2dp4mQT6aJURAw1d/1UKkFUCNRbW7kbyhdfGXPSKDhJmuRlgIb96AzDsOPxtnUjd3IPjp0okyGlSUqEbRNFrtTKuuUx2i3metLYd2LMhmDcJcJZyjPmjsZb3mtgaz32mQyLIVSKlO3mamzbGrvzFqtVyjUJMPDlwO8WJp9a35psMWgQY3naWl7crkx8NdgvW62v/XRMlfK+YebFm9oEZCET/1B2ub21WDPrWCp85MVL3fhbI2N77aky7tvWjLvsfFQ1gj+mBls5JKRsYLKQOVDjXjWYHlGbjV3ThBsLmUgXfbS0mGNDA46YC+kPxi5BCwMfiHE/N2Ta98r9cIKv0LvMqRQGzrgzDdSFfB9OPD9GmVOJDLztgfncQKS9UvKHM8+Vq6xzhYG3adzZ83pPBiV6njcpW0QwcMbtxG2YP/8rLXxg4GDcTtlGQjJuZGPgeY17nNW4nemHwMHQMwPHuY37LalxO00b0edXqvazDJxxi7aBpGkUBh7fuK+S5uUePD0kTaNs/sq1ld4aUsCBdJnQuLuzMa88PSSPwtN0K+xy9p5YLOO+SLg4KdpGS3NwkmUOOhcz1pv/OVndttw2Wk2jPCWZh/eeWH3jXiVLk9jajtbn5F2S+WjzW81cWyLjXikBxICi8PBb68vvs+ZUY3AkSpM4igxDnKPTJAbua7jHiDtFjWlZwJl4YhiwgU8SGPiLr+J+BsM4iXFv1JQCOeZst9DqSZ13EGRpNLXwtID/GPireTvMh39RTouOnj+belpAzuDL+tQZiF4/qncCsHMQ9qwCZTgP/IFxA00Z+FPwQgMLmCd40FPNboAmv6bXttC3a9yhm02VEiPGDRw+xxeBgzPrV0e8mTeBjfvZpxVwknn+GDgdKjg74IHeB6/hZtzA6eb7s/rvNh5k2B2UXZTgCQEnT59Ebus894R2f4hRjXvtCQFnm/ujiHNfNVny/JfdV0AvBj4OauAvns73D27OuIHB+0DUZlZ84IsHduWBAShf4DdOwcph3BelZtriJICwX+IlwFRp9uktu4pYx+3JANUNfGH3ZdyHMwu6c9LbNdnXW2ml8C/5zG0iuItYxDAZ+oQLVxqkV0nIcdItYN12UVgX9XStgY9Js5V/vtOyRHYzneTCG/iz6hPpEvWcsY26W7i+/TDpCgtS20+G7mxDgZ7e33+KpgIat/Mm66Q7upPG10Hre1/Li+TG06o+VqYWL2NE3a/BSoBMzn6jqLvITfm/GSebUgVhTaTO2FlYvKxr3Hc+fwY58WbRT0Ta08gftQ2t4h/bYNH31VAmcKge3V33QtPh7M97Gf308BNM4AcL3YP1kGGUFUc6PUO95lkn2Ljkips17S9MfGGhs5+vuGDPf9b6DZ+o5W5+Ul0Fbi7WZ0plxcTPHgiuLF72d7NflQQ2/Sm7HrJpf2HiS+mUs425aD3AH1o17kgn48wN/dNNoLJ55o1hf2vi1lbO96X3FigovGztBl8GusGaTZ3uhXzLtPeuGVeSenp/mQd6xpvWJvljlMkjz32yl/EzQz48gJBKadNjmup70jUGUo/ZVpQj2rYxLOC4HAX6ut+0Yt6v8tzNTA7R9nmicF+DpxmjM9F3YzdTnvvo5zgRbZ89naf66TTB4kb03UjULc999DO8Y9y9pfVmRtzRgUak4xTHWW/iTJ479SS4ULftzNSkAccqyAt5lfUGRoi67wzlg/PbL4y03ie3r8WjA4+3IMHjZbabFyHqfjGMD3p2l8F2rQ3VwJ+VEx4VPN6KvpNG3Q5WOMi4x/LbjuRryMBfRN/5om7dAvd/bipKVKI0N6ZF34mi7mJAohXG3VolCgM/zI/WQZ7fRXQTiBB1OxVHqkQKBZ/XcCIsXt5Hf8vVjrq3hivjZuD4zZfuRd+Bo2413Xs/r5GqkrRVKMoI9xvrF0FKl++jvt1qR91Lw3SvwayOO6+BPxnFKVO6r27M0I4ganARhxycPbQAM2QJc4CboifE7s/qjvk1o6kRnS76XkW6IZPKN2NjWO5s3NcWKJUQir5lCT5uxsrgTRF1XDLuZitQpAx396vbAM/sNoIhVG0AYyflXoP2idk1a+AW65N41kfF0KDfYk2e1NxwtEFnnw/XRvrO8+E+wDMb174JW7lu6RKSPhF9J+rb3r05lNxIl5D0SVIDX9ReuKxpCktRd/gBOmNqg5OgJskX6fvff1PLvN8MUJ+GFC76dgjJ7h62qvysnmoYw0zUbVGGwsqmtQTRd5X21eWMPVG3QUlxN+9YvNzNyx4H0+agpjGIunMMSHIKfaJAZzKYNNf7X/gg6g49GK8YFzlRaq9g57ny8xr1daGiboswpPNgS3Om9ia2eR9R3VTULddNct+NzZvabT4e+3hDPVW6uFdDTNRNou/WvK2XDTs1304GYPzogeJumzc7djLvm2Z7s9dKmWhAtfPgc8gCxdrJJ/iJUR1U65M8RPvEHObtMGGy2H/cHFo3+YVUMWVya1j9GDVMmBT5ek1dkHGeNrG1OghaLbdQSdaNep5LNVMn83Nc0H2lAbc2nCxUkoXLHs27rW6ptQ5dcDpIilVyyqMrMyZuCvLkmYZakZ1IYWfz1seE9DtpZ/F/ekrznhlocnTUROpka8bs5HkPFZ/RqoXIbmwYqTKhpE2Qcs+rcRNrE5VSJiKE3QbZghlRuCZIbXzRvqR+wVaM7Ayw+AOMcqZOnsyc8IHRNPMF+LTbYSGZGVG4JkjtzK+aG3YeUkZ2DlDd+dlcMyM6UHZb7hAcpT27oIt+VZmENm8HDJMDis87x7Ypv466vHNzrRHbGlhPTIgONIelGRQ+7315jDmsa7xx9DLZ+fnoIkg6dbab956lMgclguFTWmTRUt478tdRxR8t373b87E5h1R09fOFu0n1dVTRHBwyvNvzmTEfMtfaLQw4+OuoxpFaPuViPx9yNJqv3ARdICstVjqqaffns2RAdOR8uzOTdp5vtZq/zbMsVjrpY/fno0yQlAu2n/fer8NgxcVKObjdB9OWAdGRxvBoJoXPe7/sa94T+e7wg0lDKtKgqvG8996+WGmxUhSQIwdHDmYw56KWdFZarJTvZt7EvCPPuVo7mif7/MhnjXKYNzVv3rp35igSmEU3Bqda75eDY0BknanfOVfrXMuHXX/ghUHEvIl54z9B7W2l57Te1RSuUh+4KW1CZN61VXHyvOsPnFX4cXZWMm+yYBndvC9Cv2RrFKPb6cW8iXmrODkyvVWpTPDWsIg/iMiBDOZdlUq83U7VqfHjuoN0DYu9B5Ht8WRjXP/zblXpWV3v8uNqfI5rCp8nAqB2zHttJu097+4qPaufsxPKldIMojUDol7qh/HZH6chn1WlGm95t8MG0QPzIWtNvc+7y5BfSe9/aOzTLc0gmjMgOlJTM+mgr963cEFupVawGlLl+nyjdjQ2kw4y75cKPrmNaAhzw+Eg8x4zHzpGZtHB5v0Ubm2w0u7KG8Mhz+cb2Rpv3v16jGjec3m3VINIrTep8e5/3i0jmvdDhR9lg87hg2jFiMhaU+8py0W4NFelH2XR5PBBNGNEdPbTWfB70HQfzrxr5HKYt0VL6v8TvNvTYQYdPO9qlemOopm3rfEWLclipS/eYwLdGuZtKORb+ab0Wpg5R5n3lHkz71OY9y0zIkUCvc6563DPrW/z1pTqJFHASOqEzLlBrDVNmXd7kYB6b1Lf3bh5f7uhsYJ5Wzg5zWDSYZB0Eux3ztV4fvNI5u0MvdyfcaREkHkzb0idkJRJmvn2xrxxqkhAf2/SR2jA5v3EvNOa94WqE1IcIPK2YJlzQDnXkpxXOVDzXosGUkffEyZFXyxUXpoh6c17+t3kXzDv9IPqhWHRb/Psycxg3rbHx4++tYkl7V/PP8/+imbeNSoWdBU8fVTwyrCoRN0bM6IZ876KZt76eZ/evDWrIk2o2jPv8Xc/aBrqbYJDB5ayQVLNdb75NWbeNg7IfZNcN/M+PsXcRcGhOmXh2PSJLfO2wqMR8/7pR12GKjzHsYNM3be6bjQyr3aJ1t56Hmh3hsNZo2+7Lu2mxGnNexrVvPsuM3Oe3nkH2qXFy2EtUmr72p5577ShsUKelHmfP/pWOqg0EKebTzdRzbvv5lS27vYz4J6YW/PGvTTSe4m85xWe7XaXH9Z3fxO1qNInJF3CvI8Ncvv+YZpTSZ+QdEmyebQM+VVll2XzA0/1SXvGfW9kt52C3OkZVypAnxkSvX3yXWgbq90rjjLvl5Ae2U1udany3yTPjS/N+y1sWqzvWm/RQ5UBeM3A0++i1JGz/8BnVOmZX+46sTcqTgYxEJ04n9e4NXSrFPSEPjy6S2NUGJQ+/+oMxnuGmE7WiOrNl9vo5l2jnaj2lfUi8AVDTKO5ETusubLTBp1PP3Bc4QfeGhpVI4oVY1QSiB/nyWOF5/6474/su7ugrb0DHJikB1CyOfJSwbyXoX+kg1LDDM4lo5QqQYyg9qC22X1/Rqs4sYhJf6wqsTgZJ989SrFA3bm9ipNBD9S5OnDlgPjXnKh1MtUkww81WGMN1ikDr2bcqq/ifZHeVhoLF4f8WIuWDHxc4XSlIRv39ttTwlFzLjxUGA+vh75ptvLeKM2sHOZw/vG/MtpCR96bCmNifeikrbF5Q7+GuIPXQuaZPo3tc0gx/uNXmnzOeSqLwm8D+Foa5aST80U/+xRfnzkWKz/94FGFwazeO0caRT348QtRWiH76jz9YuWnH/2a6gdDFC7aRhv57tdjf/RKySB+ikqUFMpty3cHWaz89KNrHFqrj0O+VMqoS6Uw8a9TJL4o047tcaVxc5fuhysZzD3QlRX+K9Je7XwKCqKO6Xml8XN99I+vlNc04POb+OMQI3Gm3VzKpFa3zYtT/PilkkEcaOLdYcerIZh4ucaFHZLy3WGyDzXqvR1K3GRO/K7F6pSyE3kupy3fXe0Ahm8u4KJCn5M3Q6fZCXGVPRr/FGXbESzfHfvUpBp1jkoGB/FJel2qVF6T1Gc/6Pg3qPG5TrWz8ouLuKswWXQZHFh+vPQRf4pg5p1Zd5O3lMvKYw/TvF9rfNWlz/1InRz3uVdWyUeJr+Gi9BS/L5Ur23OkWkp1yLYY9d1JSrQqvwTLs/flenwwkTff/dtb6C3158MwBtzsc7RQ/vu4weucFi0+VNIv2z/o+fOfK6mPaYtjq7umz/O0LKYy8STZhvLMbs9xMSupk7hm9tUnnpNZBjUG3r4YA8/GwN5+91IpZTc6y+CQOgk3Ya/KxHSYrShxp09ym4d2mle1SgS35xwkNQrWbwyn/wyu0YFfQvrGtDUOLvatiPhU5qgu/ev7uqgUdZ9vftYonbFh5z/P4KgufqXsU/VEfoO5PObTXpfDWEHq2df4aqVORAmn7Z9dJu61aZp2LNycymDKoqb+4p/mWa2NX62+leYDT5GcqzmO01zypUlW5yoOECTV25hzlhLBIKmT7UAn6/zcL0snuwzvy+uHL7LBrjHVaAXySbM+LnBa6eKuBjSILnepInGm4mAMZdl3FDjEdZHuxVWxV86or4t8U/OdN9r+YUu4XHis3PZrLUMZWhRe6yCRXjMLlTbsNL1wWXLbIU6hKakxFSl1v7w2QcbCagi58DL/agVN931e6KTZvFC9fGaoFqkl8rq3iNVviqRs9Y82Fl5bT1vWav9aJSVcqePWtsFBs4g0UdUDV3uB30XucV7GwV3D939b68VY42LvLVwe/Wn8Etm4/xB92WLf0BrHoZvmWkup1eogWK1ct1aOqMvBNTBYpllPkulMXCR+kvTIPPEYaKrZWek0Wet+1uk1U2OBLfvCZcUvlrN8RsuJ7xfwdEbRwoHMraRRatZ2d+XANY3opvnV2dMOkscWjPsPk3jtPMdvn/2kHCjx1uDzT/0lXDmYmtW++LdBJPmPTzG9tDZxvzlJfcSw/17TuMtwPucpIsiMz7xy1F0/g9D37q9srWJ/P91kCCrR+OPQFjiLGdxGqdGusKCd6uurZtQd4oulq/6odPEbC5O5jLzF/PhvBycP/llnWsis/LwmUW7Cc6UbcBV4YNwOfTJ/k1p5yLwNv7yUl0NIiRxo4NMEz3BW8ytl8Dci6mJJKxUlPUXlz2VX4U3EI7rKUXO3Hwcce247G3jolFnNF2+4gotKC5dv0SZ89B2TSQx9W9ZS5qWL5aiH5zYuEXV3UtGq/AZfTsc9y5ClhJWj7nCeVa3QPdJbrFYj9yGlXIqey0vys2bF6P+k+ec/+xFFF0l9ZD2XMWfUvYn4NrusGH1fBBgQjyYqUWwDrxl1h26uV8vAakffjJsoh4FXjrrj7g6v1Sq2l8M7GTdRagOvHXWH341a8c02q3CtctxESQy85uapkAuVf6pvHkLtZOVOZESZNR9KViBVD5jmT2COsehBZCPPfkFl7d5Cl78yUGuTSh/Rd9m0of6XKEkaoVY2IFMrj+aj73Jd6oKJTmNqL+euvqjsRbH6mOzxtlvVGhAqS4gsYEbY8Zwq6q69aedcb7ran15EDWvaoAfljLoDbNrZnHgQjOS5ic6a/x6dwX82ou6c5TmTEw6ClUlGdFajezyx90wDXFfuQ5prvf1O9db7a4An4RBlT5/ULizIdlRjk9F3xYMmiIYWfb+eyLjvAlxPG0cAVoy+nzPvyiIaoIHfHzlnq69PNRF1fzLv64xvwCEeJEsUYPHy4og5uxJ1n97AXzO9BUXdRLmi7wjrU01F3UH6gcwOeNnYkEOUKPoO8qW8+NUiWaLvIMX9RKLvHMFh7/1aRN9fv2Sc/k6UJP0QpedQiravSaPvnT/FNJ8iylP3HSHYajrqjhB97/Ip9v7nrkwaohDR91OWFGftc3RF37/qdyEjot2j2QhHETZZYRI09/3ww2B4MXGIwhj4XYJy3umvIVFx1+WXb/Nud5YJQxTKvLeRA63UnQMzbj3/alX4L2dTEkVMnYwClwaOfw2RytH3RL6bKIVmfygNjLBIufw1VCpH35s/vEy2JgpRuOh7HS3IOrYHSyvR91PFB3D922+xq5IoYOokYGng7a+hU/NhfC7x6X6HiUIUVuMo/UvOech5xuh7VTuf9leMY5OI6ItIt3Jr6c+acO0Y0fdbWQC5M0mIwpr3Kkj/kjXHjtWf4KFbOTZJiEKXDOpfEjT6vqgZfTurkoj0Lzk8+pa6IKKIxv06+NLAqE2riIh23SgEW9SJKH7UveHMu0ff8s9EFGWh9IorJ9g2T0T0UxM7BN02T0Skf0nCjTtERN8dBIGfo28bZ4ioat8jJNu4Q0SDNu9rDpx72zwRDc+4nzivjTtElG+RUv8SG3eIKJkeOO7po++NgUVESgNt3CEi0r+kp+h7ZYAR0Rmi7mcOa+MOEeWTo82UDhKR/iVQOkhESgMbSp846Z2ITmHejjZTOkhE+pfA4iURnVtTTlov+tZ1kIgOibodbVY5+tZ1kIgsUiY1cH1PiGgfLThnnPTJ1oAkIv1L8kXfE+kTItK/JGf0re8JEX0XdW85ZczoeyT6JiL9S3Ia+NwAJSL9S3KmT/Q9ISKlgRkXLw1YItK/JGf0vTZoiUj/knzRt74nRKR/SdLo26ENRPqXwOIlEVmkRF/pE4c2EOlfgqTR95OBTKR/CSxeEpH+JbB4SUQnjLpfOF5b0feFxUsi/UuQM/q+NrCJmo6615zO4iURKQ2ExUsi0r8EFi+J6F/9S5QGWrwkonzmfcPZhmPgdl4S6V+CpOmTR4OfKP0i5RU3s3hJRLnM29FmFi+JSP8SWLwkonNrzsEYuMVLomSlgZwLH+mTjUlBpH8J8kXfY4uXRCmi7keOhd+j76XJQaR/CXIuXoq+ieLqgVPhKwOfmSBESgORM33ybLIQhZOjzfBj9D0xUYhCRd3PnAm7Rt8rk4YoTLpEaSB2jr71PSHSvwRJo299T4jqR90jboRDSgf1PSGqZ953nAhKB4n0L4HSQSI6s3lfcx8oHSTKZdxPnAdKB4n0L4HSQZOLSP8SKB0kIv1LoHSQSP8S4M8GrnSQSP8SJE2fKB0k0r8ECaNvpYNE+pcgafStdJBI/xIkjL6VDhLpX4Kk0bfSQSL9S5Aw+lY6SKR/CZIauNJBosOMe8NBUDt9sjEZifQvQb7oe2LxkmgvLTgHokTfSgeJ9C9Bwuhb6SCR/iVIGn0rHST6PurecgpENXClg0RfS/8ShDXvGxOUSP8S5DRwpYNESgORcPFybPGS6F/mfc8ZkCX6Xpq0RPqXIF/0fSH6JvpbU46AbNH3rYlL+pcAOQ38xSQmi5RAvvSJI9NI/xIgafS9NpFJ/xIgX/St7wnpXwIkjb71PSH9S4CE0bcj00j/EiCpgTsyjfQvAZKmT/Q9IaWBQMLo25FppH8JkDT6dmQa6V8CJIy+lQ5Sa+Z9Y2ZjKNG30kHSvwRIGH3rOkitLFKOzWgMzcCVDlJ2816ayRhq+uSZCZD+JUC+6FvpIGU171szGEOPvpUOUjbjfjFzIfr+9Wsk+ib9S4Cc0bfSQcoSdT+ascC/DVzXQdK/BEiYPpkyCNK/BMgZfes6SGH7lygNBL6OvvU9If1LgKQGvmAWpH8JkM+89T0h/UuApAau7wlF0cKMBPZbvNwyDtK/BMgXfU8YCFXWzEwEDou+9T2hWlH31gwEDo++lQ5SrXSJ/iXAkdG3vifUt3mvzDzg+Oj7Qt8T6jnqHpl5wGmi7xvGQj1pbsYBpzVwfU/o7P1LzDTg9OmTscVLOrN5X5tpwHmi7yWToTMZ95MZBpwv+tb3hByyACQ1cH1P6NR6MLOAftIn+p6Q/iVAwuhb3xPSvwRIGn3re0LHRt3PZhLQf/St7wkdK/1LgErRt74npH8JkNTA9T0hpYFAwvTJlCHRnuZ9b+YAMaJvfU9I/xIgYfSt7wntqqkZA8SKvpUO0k9R98ZMAeJF3/qekEVKIGn0fceo6AstzBAgtoErHST9S4CE6ROlg6R/CZA0+lY6SB9R99aMAPJE3/qekP4lQFIDXzAu/UvMBCCfeSsdtEipNBBIauCOTNO/BEBGHJmmfwmAnNG3I9P0LwGQNPpeM7TBRN1PRjzQTvStdNAiJYCk0bcj09rXg5EOtBd9X+h7on8JgJzR9w2j078EQE4D1/ekvaj72cgG2k+fODKtvXSJ/iXAQKLvJePTvwRAvuhb35N2ou6REQ0MK/q+ZYDpNTeSgWEauNJB/UsAJEyf6HvikAUASaPvR0aYLup+NHIB0be+J/qXAEgafet74pAFAAmjb31PkixS6l8C4PfoW9+T+OZ9Y6QC+JOB63sS17g3RiiAr9In+p7EXaQcG6EAvou+9T2JZ95LIxPAT9G3vicOWQCQ1MDnjDOMed8akQD2SZ8oHaxv3C9GIoB9o299T/QvAZA0+tb3pF7UvTYCARwafet7on8JgKTRt74n+pcASBh9Kx3UvwRAUgOfMVb9SwDkTJ88M1f9SwDki74n0if6lwDIGX2vGK3+JQDyRd8j0bf+JQByRt93DFf/EgA5DVzfE/1LACQ072vGq38JgJwG7si046PulZEEoFf0PdG/BEBeA18wYv1LAOQzb31PDuxfYvQAqG3g+p7sr6mRA6A675HkliHrXwIgX/TtyDSLlACSRt9rBv2jFkYKgGjRt9JB/UsAJI2+HZn2tWZGCICo0feFvid/jLqfjQ4A0aPvG4b9n3SJ/iUAUhi4vif6lwBImD4ZW7z8J+oeGREAMkXfS+b9685IAJAt+h503xP9SwBkjr5vHbIAADkN/HWAUfejJw8ge/pkon8JAOSMvh8dsgAA+aLvQfQ9KSki/UsANBV93+tfAgD5ou+m+544ZAFAywY+a3iR8soTBtBy+uS5QfNeerIAWo++Jw1G3RYpAQwi+u9sSn0AAAXXSURBVF41ZN63niiAoUTfTZQOvl/Di6cJYGjR973+JQCQ08BfE0fda08QQJ+Gef1uPtMPdf+78m/Rv2T3dNPo87MrUqIItEpXX/3T0WTl/+99h+D73/ukf8mPhv3w3VdK9zIp/WMYOdBKlL1vaqL8+WmP5pRq8bLP/iXFtN/23empqyGQO9p+ONKoFj3+1kWiyHvaw/0YHbOZqUTi12YBkC/iXmc6VCDLkWl99C8pxv16irz8u27MBiCPcd9lzO9GPzKtr0XK979nq+cKMLxUydWpI9jy7+ulnrnb9BLYwBc9PL/FOXL0ZgYQP+reZG53GrXvSR/9S865cOt0HyB41N3CbsJT5euzHbLQdSY858vHDAHimvfizNHnqqfrCFU62FV99PTSejvzdag+AYKmTLbnrm/u8VruA6VLzr7g9/53jFvI2QOIGbm99Xw9rwHMe9XTtd70cC1PZgkQL2Vy2ZOhXfZ4TdOhHLLw/vfMe7ierZkCxDPvi55Mbdxz9L2paN63PT6/B+YNDNfAm+tf3b0saixe9n3IQh/tAZg3EJSeTG5a4bpqHJk26fkal61UzQAIaN41zmvsu+9JX4uUfaeH+upTAyCmeS8rXdt9S/1L/nB9r8wbGK55v/RgAJuK19eHwd01/GWhzhsIat6PLZXP/eH6rlvZhPTbdd20Vj0DYL8I7qGnvPC0tWus2Tq1rwVZ2+OBuJH3bU8msK58nY+nNu6ahxb0uBg7MkuAmJH3pK9FvQAvquUJjfu64nVcD+WZAfjavPssqZvVvt5DDlf+vfqidjTaY8rEBh0geOpk25MZbCJcb2kLMN/VxEuk/Rgh/9tz61uVJkDw6HvR6i7EHa69OwLurkupdC+xT9qU+zKrVSnzxe996PFZTc0OILZ5T3vcibhxx+NH3TXLOwHskUboeSv5jbt+UHpr1eMzku8GkhjDc4/G8Cqq2/sFO+m5U+KDuw7kMId5zx34LIbt92XU9wlBY3cekDoJVyud7Nn0uaAsZQIkTJ08VTgyzA6+742792PdajTaAnCcUcwqGIVm/18/j95PBKrV3hbA8dH3awUDX7nz/zHuUaVnsXb3gZzmfd+3YRTTuHf3/zHuiz6rfyJvogKwn3G8VTKOuftfz7ilsID80feqknkP2sArR9whGocBOM5ELitG34PcIFJy3Nta97w7Ds/IB9owk4eK5v1XKVu8GMi9vqqxOCnXDbT7Cf9W2cBfax0z1uN9ngW4z5qFAS1Rq/LkD3XH80Zfjusg99dWeKBBg6n9Of85jdLE5pFjT/PRYwbALgY+qf1Z/1s/lPvE9/Ly1Ach6+4I4DvTWUQxnE+mM0t0/7pj1xZRXoKf0iUWKQHpkyoGtI18sEMp/7uPZNrSJcDwDPwqqAl9pFPuonQoLPdqHfh+vUiXAMMy8FlEM/q97K0cLHHR870Zlyj7Nfj9UV0CDJHKW+cPiTAfznHoQ0kl3XT3I7phOxEewIdpvSQyq3+ZeamtXpSviOlPm4DKn5mWaL5bdHxKZtbOpQTwj6GNouZz6csX16ORC6DKKS90eKtXC5QAPhv4hIGHN24bcQAw8ITG7YBnAAyccQNg4HTOEknGDWBnA7eIaXESQFIDv0xcB52+HJBxAzjGwC/KNnWm2p9x3xt5AE7Cu6EsGWsvvUqc+g7g5AZ+Kw9+1ooSPbkBnC2NclkW0pju6Yx7Kb8NoC8TfxCFn6R3+Y3RBKBvA+8OKtgy4oOMe61+G0BV5ML3bmV7bdQAiBKFj1Sk/Hy8m5ECIKqJj8sGE6b9/+V/CykSAJlMfMO0mTaAnCbeNbl6HEpOvFznA9MG0IqJX7ZcXli6/809aQDNUqpTnrIbeVmEXKseATC0aPwim5F/GHZ3Cr0nCAD/i8hv3rWK1oa2tAN40HsEAH6Oyrsc+ayr2Oh2cfYVmXcvjlIl01WKTPUcAYDTGPq0RMGdqW8OMfZi0NtSj979e+4YNQAAAAAAAAAAQB3+D9Ca5pmS16aZAAAAAElFTkSuQmCC", Q = [], kt = new A({ color: 3190763 }), At = new A({ color: 16711680 }), $ = 0, jt = [], Mt = (e) => w.EXPO == "glf24" ? .1 : 1 * (e.area.width + e.area.height) / 1200, Nt = class {
|
|
1319
|
+
var Et = "data:image/png;base64,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", Dt = "data:image/png;base64,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", Ot = "data:image/png;base64,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", Q = [], kt = new A({ color: 3190763 }), At = new A({ color: 16711680 }), $ = 0, jt = [], Mt = (e) => m.EXPO == "glf24" ? .1 : 1 * (e.area.width + e.area.height) / 1200, Nt = class {
|
|
1319
1320
|
constructor(e, t, n) {
|
|
1320
1321
|
this.expo = void 0, this.isMapbox = void 0, this.scene = void 0, this.data = void 0, this.container = void 0, this.isInit = !1, this.expo = e, this.isMapbox = t, this.container = n, setInterval(() => {
|
|
1321
1322
|
if (!Q.length) {
|
|
@@ -1351,7 +1352,7 @@ var Et = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAHCCAMAAABi7QS1AAAD
|
|
|
1351
1352
|
y: n
|
|
1352
1353
|
} : this.convertPoint(t, n, 0), l = this.data.objLayers.find((e) => {
|
|
1353
1354
|
var t;
|
|
1354
|
-
return e.name === ((t =
|
|
1355
|
+
return e.name === ((t = N.layerStore.findLayer(r)) == null ? void 0 : t.name);
|
|
1355
1356
|
}) || this.data.objLayers[0];
|
|
1356
1357
|
s || (e === "from" ? s = new Z(Et, l.height * a * 2) : e === "to" ? s = new Z(Dt, l.height * a * 2) : e === "yah" ? s = new Z(Ot, l.height * a * 2) : e === "cp" && (s = new Z(Ot, l.height * a)), s.name = o, this.scene.add(s)), s.position.set(c.x, c.y, l.z + (e === "from" || e === "to" ? l.height : 0));
|
|
1357
1358
|
} else s && this.scene.remove(s);
|
|
@@ -1364,16 +1365,16 @@ var Et = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAHCCAMAAABi7QS1AAAD
|
|
|
1364
1365
|
if (!this.isInit) return;
|
|
1365
1366
|
var t = e.routeLines.filter((e) => {
|
|
1366
1367
|
var t, n;
|
|
1367
|
-
let r = (t = (n =
|
|
1368
|
+
let r = (t = (n = N.layerStore.layers.find((t) => t.name === e.p0.layer)) == null ? void 0 : n.visible) == null ? !0 : t;
|
|
1368
1369
|
return !e.virtual && r;
|
|
1369
1370
|
});
|
|
1370
1371
|
if (Q.forEach((e) => this.scene.remove(e)), Q.splice(0, Q.length), !t.length) {
|
|
1371
1372
|
this.setMarker("from", null, null, null), this.setMarker("to", null, null, null);
|
|
1372
1373
|
return;
|
|
1373
1374
|
}
|
|
1374
|
-
let n = this.linesToPoints(t), { z: r } = this.data.objLayers.find((e) => e.name === (
|
|
1375
|
+
let n = this.linesToPoints(t), { z: r } = this.data.objLayers.find((e) => e.name === (se.mode === fe.Default ? "Default" : t[0].p0.layer)), i = Mt(this.data);
|
|
1375
1376
|
[].concat(n).reverse().forEach((e, t) => {
|
|
1376
|
-
let n = new
|
|
1377
|
+
let n = new P(new y(i), kt);
|
|
1377
1378
|
n.position.set(e.x, e.y, r + .02), Q.push(n), this.scene.add(n);
|
|
1378
1379
|
}), this.setMarker("to", t[0].p0.x, t[0].p0.y, t[0].p0.layer), this.setMarker("from", t[t.length - 1].p1.x, t[t.length - 1].p1.y, t[t.length - 1].p1.layer);
|
|
1379
1380
|
}
|
|
@@ -1383,24 +1384,24 @@ var Et = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAHCCAMAAABi7QS1AAAD
|
|
|
1383
1384
|
onClickCallback(e) {
|
|
1384
1385
|
var t;
|
|
1385
1386
|
let n = e.filter((e) => e.object.name !== "building")[0], r = n == null || (t = n.object) == null ? void 0 : t.name, i = I.booths.find((e) => e.name === r);
|
|
1386
|
-
i ?
|
|
1387
|
+
i ? N.clickBooth(i) : F.details = null;
|
|
1387
1388
|
}
|
|
1388
1389
|
async initBooths(e, t) {
|
|
1389
|
-
let n = (await
|
|
1390
|
+
let n = (await be(I.booths)).filter((e) => !!e);
|
|
1390
1391
|
var r = /* @__PURE__ */ new Map();
|
|
1391
|
-
n.forEach((e) => r.set(e.name + "_logo", new
|
|
1392
|
-
r.set(e.slug, new
|
|
1392
|
+
n.forEach((e) => r.set(e.name + "_logo", new b(e.htmlImage))), N.boothStore.booths.forEach((e) => {
|
|
1393
|
+
r.set(e.slug, new b(Tt(e.name)));
|
|
1393
1394
|
});
|
|
1394
|
-
var i = new dt(r), a = new
|
|
1395
|
+
var i = new dt(r), a = new ge();
|
|
1395
1396
|
a.side = 2, a.transparent = !0, t.children.forEach((r, o) => {
|
|
1396
1397
|
var [s, c] = r.name.split(/ (.*)/s);
|
|
1397
1398
|
let l = e.addLayer(s);
|
|
1398
1399
|
r.layers.set(l), r.name = c;
|
|
1399
|
-
let u =
|
|
1400
|
+
let u = N.boothStore.booths.find((e) => c && c[0] === "b" && e.name === (c == null ? void 0 : c.substring(1)));
|
|
1400
1401
|
if (u) {
|
|
1401
1402
|
var d;
|
|
1402
1403
|
r.material = new A({
|
|
1403
|
-
color:
|
|
1404
|
+
color: ke(u),
|
|
1404
1405
|
side: 2,
|
|
1405
1406
|
name: r.name
|
|
1406
1407
|
});
|
|
@@ -1420,73 +1421,73 @@ var Et = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAHCCAMAAABi7QS1AAAD
|
|
|
1420
1421
|
}
|
|
1421
1422
|
convertPoint(e, t, n) {
|
|
1422
1423
|
var r = this.data.matrix;
|
|
1423
|
-
return e += r[0], t += r[1], e *= r[2], t *= r[3], e += r[4], t += r[5], new
|
|
1424
|
+
return e += r[0], t += r[1], e *= r[2], t *= r[3], e += r[4], t += r[5], new _(e, t, n);
|
|
1424
1425
|
}
|
|
1425
1426
|
linesToPoints(e) {
|
|
1426
1427
|
let t = [], n = [];
|
|
1427
1428
|
for (let t = 0; t < e.length; t++) {
|
|
1428
1429
|
var r, i;
|
|
1429
|
-
let a = e[t], o = (r = (i =
|
|
1430
|
+
let a = e[t], o = (r = (i = N.layerStore.layers.find((e) => e.name === a.p0.layer)) == null ? void 0 : i.visible) == null ? !0 : r;
|
|
1430
1431
|
!a.virtual && o && n.push(a), (a.virtual || !o || t === e.length - 1) && n.length && (n = []);
|
|
1431
1432
|
}
|
|
1432
1433
|
return t.map((e) => this.convertPoint(e.x, e.y, e.z));
|
|
1433
1434
|
}
|
|
1434
1435
|
}, Pt = n();
|
|
1435
1436
|
function Ft({ isMapbox: e, expo: t }) {
|
|
1436
|
-
let n = (0,
|
|
1437
|
-
(0,
|
|
1437
|
+
let n = (0, je.useRef)(null), r = null;
|
|
1438
|
+
(0, je.useEffect)(() => {
|
|
1438
1439
|
r = new Nt(t, e, n.current), r.init().then(() => {
|
|
1439
|
-
|
|
1440
|
+
N.layerStore.layers.forEach((e) => r.changeLayerVisibility(e.name, e.visible)), r.selectBooths([...F.selectedBooths]), r.updateRouteLines(N.routeStore), Te(!0);
|
|
1440
1441
|
});
|
|
1441
1442
|
}, []);
|
|
1442
|
-
let i =
|
|
1443
|
+
let i = o(() => ({
|
|
1443
1444
|
get initselected() {
|
|
1444
|
-
return ![...
|
|
1445
|
+
return ![...F.selectedBooths].filter((e) => e.rect);
|
|
1445
1446
|
},
|
|
1446
1447
|
get actualCurrentPosition() {
|
|
1447
|
-
let e =
|
|
1448
|
-
return !(e != null && e.z) ||
|
|
1448
|
+
let e = N.routeStore.currentPosition;
|
|
1449
|
+
return !(e != null && e.z) || N.layerStore.visible.indexOf(N.layerStore.findLayer(e.z)) > -1 ? e : null;
|
|
1449
1450
|
},
|
|
1450
1451
|
get style() {
|
|
1451
1452
|
return { left: 0 };
|
|
1452
1453
|
}
|
|
1453
1454
|
}));
|
|
1454
|
-
return R(() =>
|
|
1455
|
-
if (!
|
|
1456
|
-
let e =
|
|
1457
|
-
|
|
1455
|
+
return R(() => F.zoomBy, () => {
|
|
1456
|
+
if (!F.zoomBy || !N.mapboxStore.showMapbox) return;
|
|
1457
|
+
let e = F.zoomBy;
|
|
1458
|
+
F.zoomBy = null, Ee(e > 1);
|
|
1458
1459
|
}), R(() => [
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1460
|
+
N.layerStore.loaded,
|
|
1461
|
+
N.layerStore.visible,
|
|
1462
|
+
F.selectedRoute
|
|
1462
1463
|
], () => {
|
|
1463
|
-
|
|
1464
|
-
}), R(() =>
|
|
1465
|
-
r.hoverBooths([...
|
|
1466
|
-
}), R(() => [
|
|
1464
|
+
N.layerStore.layers.length === N.layerStore.layers.filter((e) => e.loaded).length && N.layerStore.layers.forEach((e) => r.changeLayerVisibility(e.name, e.visible));
|
|
1465
|
+
}), R(() => F.hoveredBooths, () => {
|
|
1466
|
+
r.hoverBooths([...F.hoveredBooths]);
|
|
1467
|
+
}), R(() => [F.selectedBooths, F.listBooths], () => {
|
|
1467
1468
|
var e = [];
|
|
1468
|
-
|
|
1469
|
-
}), R(() =>
|
|
1470
|
-
|
|
1471
|
-
}), R(() =>
|
|
1472
|
-
if (!
|
|
1473
|
-
let e =
|
|
1474
|
-
e.length &&
|
|
1475
|
-
}), R(() =>
|
|
1476
|
-
!
|
|
1477
|
-
}), R(() =>
|
|
1478
|
-
!
|
|
1479
|
-
}), R(() =>
|
|
1480
|
-
!
|
|
1481
|
-
}), R(() =>
|
|
1469
|
+
F.selectedBooths.size ? e = [...F.selectedBooths] : F.listBooths.size && (F.activeListIndex === 0 || F.list.type === "bookmarks" || F.list.type === "category") && (e = [...F.listBooths]), r.selectBooths(e);
|
|
1470
|
+
}), R(() => N.mapboxStore.showMapbox, () => {
|
|
1471
|
+
Te(N.mapboxStore.showMapbox);
|
|
1472
|
+
}), R(() => F.moveToBooths, () => {
|
|
1473
|
+
if (!F.moveToBooths || !N.mapboxStore.showMapbox) return;
|
|
1474
|
+
let e = F.moveToBooths.filter((e) => e.rect).map((e) => e.rect), t = T.fromMultiple(e);
|
|
1475
|
+
e.length && z(t), F.moveToBooths = null;
|
|
1476
|
+
}), R(() => F.moveToRect, () => {
|
|
1477
|
+
!F.moveToRect || !N.mapboxStore.showMapbox || (z(F.moveToRect, 15), F.moveToRect = null);
|
|
1478
|
+
}), R(() => F.moveToLocation, () => {
|
|
1479
|
+
!F.moveToLocation || !N.mapboxStore.showMapbox || De();
|
|
1480
|
+
}), R(() => F.centerMap, () => {
|
|
1481
|
+
!F.centerMap || !N.mapboxStore.showMapbox || (z(T.fromMultiple(I.booths.map((e) => e.rect)), 15), F.centerMap = !1);
|
|
1482
|
+
}), R(() => N.routeStore.routeLines, () => r.updateRouteLines(N.routeStore)), R(() => i.actualCurrentPosition, () => {
|
|
1482
1483
|
var e, t, n;
|
|
1483
1484
|
return r.setMarker("cp", (e = i.actualCurrentPosition) == null ? void 0 : e.x, (t = i.actualCurrentPosition) == null ? void 0 : t.y, (n = i.actualCurrentPosition) == null ? void 0 : n.z);
|
|
1484
|
-
}),
|
|
1485
|
+
}), a(() => /* @__PURE__ */ (0, Pt.jsx)("div", {
|
|
1485
1486
|
style: i.style,
|
|
1486
|
-
className: (0,
|
|
1487
|
+
className: (0, Me.default)("map-container", { hidden: !N.mapboxStore.showMapbox }),
|
|
1487
1488
|
children: /* @__PURE__ */ (0, Pt.jsx)("div", {
|
|
1488
1489
|
ref: n,
|
|
1489
|
-
className: (0,
|
|
1490
|
+
className: (0, Me.default)("map-wrapper", "mapboxgl-map")
|
|
1490
1491
|
})
|
|
1491
1492
|
}));
|
|
1492
1493
|
}
|