@qispace/vue3-player 0.0.16 → 0.1.1
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/vue-components/config/vite.config.d.ts +2 -0
- package/dist/vue-components/config/vite.config.dev.d.ts +2 -0
- package/dist/vue-components/config/vite.config.web-components.d.ts +2 -0
- package/dist/vue-components/src/components/apartmentChooser/VApartmentChooser.vue.d.ts +129 -0
- package/dist/vue-components/src/components/apartmentChooser/VApartmentChooserNavigation.vue.d.ts +46 -0
- package/dist/vue-components/src/components/apartmentChooser/VApartmentChooserRaster.vue.d.ts +77 -0
- package/dist/vue-components/src/components/apartmentChooser/VApartmentChooserRotator.vue.d.ts +43 -0
- package/dist/vue-components/src/components/apartmentChooser/VApartmentChooserSvg.vue.d.ts +77 -0
- package/dist/vue-components/src/components/apartmentChooser/index.d.ts +5 -0
- package/dist/vue-components/src/components/apartmentChooser/types.d.ts +13 -0
- package/dist/vue-components/src/components/buildingPicker/VBuildingChooser.vue.d.ts +93 -0
- package/dist/vue-components/src/components/buildingPicker/VBuildingChooserRaster.vue.d.ts +97 -0
- package/dist/vue-components/src/components/buildingPicker/VBuildingChooserRasterOverlay.vue.d.ts +46 -0
- package/dist/vue-components/src/components/buildingPicker/VBuildingChooserSceneImageStack.vue.d.ts +27 -0
- package/dist/vue-components/src/components/buildingPicker/VBuildingChooserSunSimControl.vue.d.ts +37 -0
- package/dist/vue-components/src/components/buildingPicker/VBuildingChooserSvg.vue.d.ts +102 -0
- package/dist/vue-components/src/components/buildingPicker/index.d.ts +6 -0
- package/dist/vue-components/src/components/buildingPicker/types.d.ts +11 -0
- package/dist/{components → vue-components/src/components}/index.d.ts +1 -1
- package/dist/vue-components/src/components/shared/VFloatingCard.vue.d.ts +30 -0
- package/dist/vue-components/src/components/shared/VHoverProbe.vue.d.ts +4 -0
- package/dist/vue-components/src/components/shared/VNorthDirection.vue.d.ts +15 -0
- package/dist/vue-components/src/components/shared/VZoomBox.vue.d.ts +60 -0
- package/dist/vue-components/src/components/shared/index.d.ts +4 -0
- package/dist/vue-components/src/components/virtualTour/VCompass.vue.d.ts +15 -0
- package/dist/vue-components/src/components/virtualTour/VDisclaimer.vue.d.ts +2 -0
- package/dist/vue-components/src/components/virtualTour/VFloorLevel.vue.d.ts +38 -0
- package/dist/vue-components/src/components/virtualTour/VFullScreenButton.vue.d.ts +19 -0
- package/dist/vue-components/src/components/virtualTour/VInteriorSelector.vue.d.ts +21 -0
- package/dist/vue-components/src/components/virtualTour/VPlayer.vue.d.ts +74 -0
- package/dist/vue-components/src/components/virtualTour/VSettingsUI.vue.d.ts +23 -0
- package/dist/vue-components/src/components/virtualTour/VSingleImage.vue.d.ts +31 -0
- package/dist/vue-components/src/components/virtualTour/VSocialShare.vue.d.ts +2 -0
- package/dist/vue-components/src/components/virtualTour/VTimeOfDay.vue.d.ts +34 -0
- package/dist/vue-components/src/components/virtualTour/VTutorial.vue.d.ts +19 -0
- package/dist/vue-components/src/components/virtualTour/VViewModeToggle.vue.d.ts +19 -0
- package/dist/vue-components/src/components/virtualTour/VVirtualTour.vue.d.ts +156 -0
- package/dist/vue-components/src/components/virtualTour/VWaypointCarousel.vue.d.ts +25 -0
- package/dist/vue-components/src/components/virtualTour/index.d.ts +1 -0
- package/dist/vue-components/src/components/virtualTour/minimap/VMiniMap.vue.d.ts +35 -0
- package/dist/vue-components/src/components/virtualTour/minimap/VMiniMapMap.vue.d.ts +25 -0
- package/dist/vue-components/src/components/virtualTour/minimap/VMinimapCompass.vue.d.ts +19 -0
- package/dist/vue-components/src/components/virtualTour/minimap/VMoveable.vue.d.ts +18 -0
- package/dist/vue-components/src/components/virtualTour/minimap/VRotationMarker.vue.d.ts +15 -0
- package/dist/vue-components/src/components/virtualTour/minimap/VSunSimulationSlider.vue.d.ts +23 -0
- package/dist/vue-components/src/components/virtualTour/minimap/index.d.ts +1 -0
- package/dist/vue-components/src/lib/apartmentChooser/BuildingViewerModel.d.ts +18 -0
- package/dist/vue-components/src/lib/apartmentChooser/RotationStep.d.ts +10 -0
- package/dist/vue-components/src/lib/apartmentChooser/SceneRotator.d.ts +10 -0
- package/dist/vue-components/src/lib/apartmentChooser/index.d.ts +3 -0
- package/dist/vue-components/src/lib/buildingPicker/BuildingMap.d.ts +7 -0
- package/dist/vue-components/src/lib/buildingPicker/BuildingPickerResourceProvider.d.ts +27 -0
- package/dist/vue-components/src/lib/buildingPicker/CanvasRaster.d.ts +8 -0
- package/dist/vue-components/src/lib/buildingPicker/DayOfYearSelector.d.ts +12 -0
- package/dist/vue-components/src/lib/buildingPicker/SampleRaster.d.ts +5 -0
- package/dist/vue-components/src/lib/buildingPicker/index.d.ts +5 -0
- package/dist/vue-components/src/lib/shared/BatchLoadTracker.d.ts +17 -0
- package/dist/vue-components/src/lib/shared/I18N.d.ts +7 -0
- package/dist/vue-components/src/lib/shared/ResourceLoader.d.ts +5 -0
- package/dist/vue-components/src/lib/shared/index.d.ts +3 -0
- package/dist/vue-components/src/lib/virtualTour/CameraSnapshot.d.ts +5 -0
- package/dist/vue-components/src/lib/virtualTour/FullscreenModel.d.ts +13 -0
- package/dist/vue-components/src/vue-components.d.ts +2 -0
- package/dist/vue-components/src/vue-components.esm.d.ts +4 -0
- package/dist/vue-components/src/web-components.d.ts +11 -0
- package/dist/vue-components/style.css +1 -0
- package/dist/vue-components/vue3-player.js +4744 -0
- package/dist/vue-components/vue3-player.umd.cjs +1 -0
- package/package.json +24 -14
- package/dist/components/apartmentChooser/QiApartmentChooser.vue.d.ts +0 -2
- package/dist/components/apartmentChooser/QiApartmentChooserNavigation.vue.d.ts +0 -51
- package/dist/components/apartmentChooser/QiApartmentChooserRaster.vue.d.ts +0 -2
- package/dist/components/apartmentChooser/QiApartmentChooserRotator.vue.d.ts +0 -65
- package/dist/components/apartmentChooser/QiApartmentChooserSvg.vue.d.ts +0 -2
- package/dist/components/buildingPicker/QiBuildingChooser.vue.d.ts +0 -121
- package/dist/components/buildingPicker/QiBuildingChooserRaster.vue.d.ts +0 -2
- package/dist/components/buildingPicker/QiBuildingChooserRasterOverlay.vue.d.ts +0 -53
- package/dist/components/buildingPicker/QiBuildingChooserSceneImageStack.vue.d.ts +0 -32
- package/dist/components/buildingPicker/QiBuildingChooserSunSimControl.vue.d.ts +0 -42
- package/dist/components/buildingPicker/QiBuildingChooserSvg.vue.d.ts +0 -2
- package/dist/components/shared/QiFloatingCard.vue.d.ts +0 -18
- package/dist/components/shared/QiHoverProbe.vue.d.ts +0 -4
- package/dist/components/shared/QiNorthDirection.vue.d.ts +0 -21
- package/dist/components/shared/QiZoomBox.vue.d.ts +0 -83
- package/dist/components/virtualTourV2/Compass.vue.d.ts +0 -22
- package/dist/components/virtualTourV2/Disclaimer.vue.d.ts +0 -4
- package/dist/components/virtualTourV2/FloorLevel.vue.d.ts +0 -27
- package/dist/components/virtualTourV2/FullScreenButton.vue.d.ts +0 -14
- package/dist/components/virtualTourV2/InteriorSelector.vue.d.ts +0 -24
- package/dist/components/virtualTourV2/Player.vue.d.ts +0 -82
- package/dist/components/virtualTourV2/SettingsUI.vue.d.ts +0 -105
- package/dist/components/virtualTourV2/SingleImage.vue.d.ts +0 -26
- package/dist/components/virtualTourV2/SocialShare.vue.d.ts +0 -10
- package/dist/components/virtualTourV2/TimeOfDay.vue.d.ts +0 -27
- package/dist/components/virtualTourV2/Tutorial.vue.d.ts +0 -23
- package/dist/components/virtualTourV2/ViewModeToggle.vue.d.ts +0 -16
- package/dist/components/virtualTourV2/VirtualTourV2.vue.d.ts +0 -322
- package/dist/components/virtualTourV2/WaypointCarousel.vue.d.ts +0 -31
- package/dist/components/virtualTourV2/index.d.ts +0 -1
- package/dist/components/virtualTourV2/minimapv2/MiniMapMap.vue.d.ts +0 -82
- package/dist/components/virtualTourV2/minimapv2/MiniMapV2.vue.d.ts +0 -78
- package/dist/components/virtualTourV2/minimapv2/MinimapCompass.vue.d.ts +0 -30
- package/dist/components/virtualTourV2/minimapv2/Moveable.vue.d.ts +0 -8
- package/dist/components/virtualTourV2/minimapv2/RotationMarkerV2.vue.d.ts +0 -12
- package/dist/components/virtualTourV2/minimapv2/SunsimulationSlider.vue.d.ts +0 -48
- package/dist/components/virtualTourV2/minimapv2/index.d.ts +0 -1
- package/dist/style.css +0 -1
- package/dist/vue3-player.js +0 -5414
- package/dist/vue3-player.umd.cjs +0 -1
- package/src/components/apartmentChooser/QiApartmentChooser.vue +0 -319
- package/src/components/apartmentChooser/QiApartmentChooserNavigation.vue +0 -88
- package/src/components/apartmentChooser/QiApartmentChooserRaster.vue +0 -408
- package/src/components/apartmentChooser/QiApartmentChooserRotator.vue +0 -202
- package/src/components/apartmentChooser/QiApartmentChooserSvg.vue +0 -257
- package/src/components/apartmentChooser/index.js +0 -5
- package/src/components/buildingPicker/QiBuildingChooser.vue +0 -61
- package/src/components/buildingPicker/QiBuildingChooserRaster.vue +0 -312
- package/src/components/buildingPicker/QiBuildingChooserRasterOverlay.vue +0 -96
- package/src/components/buildingPicker/QiBuildingChooserSceneImageStack.vue +0 -89
- package/src/components/buildingPicker/QiBuildingChooserSunSimControl.vue +0 -257
- package/src/components/buildingPicker/QiBuildingChooserSvg.vue +0 -414
- package/src/components/buildingPicker/index.js +0 -6
- package/src/components/index.ts +0 -4
- package/src/components/shared/QiFloatingCard.vue +0 -76
- package/src/components/shared/QiHoverProbe.vue +0 -22
- package/src/components/shared/QiNorthDirection.vue +0 -27
- package/src/components/shared/QiZoomBox.vue +0 -322
- package/src/components/shared/index.js +0 -4
- package/src/components/virtualTourV2/Compass.vue +0 -37
- package/src/components/virtualTourV2/Disclaimer.vue +0 -41
- package/src/components/virtualTourV2/FloorLevel.vue +0 -73
- package/src/components/virtualTourV2/FullScreenButton.vue +0 -23
- package/src/components/virtualTourV2/InteriorSelector.vue +0 -90
- package/src/components/virtualTourV2/ManualSlideShow.vue +0 -198
- package/src/components/virtualTourV2/ManualSlideShowPlayer.vue +0 -159
- package/src/components/virtualTourV2/Player.vue +0 -300
- package/src/components/virtualTourV2/ScrollHelper.vue +0 -74
- package/src/components/virtualTourV2/SettingsUI.vue +0 -355
- package/src/components/virtualTourV2/SingleImage.vue +0 -36
- package/src/components/virtualTourV2/SocialShare.vue +0 -163
- package/src/components/virtualTourV2/TimeOfDay.vue +0 -50
- package/src/components/virtualTourV2/Tutorial.vue +0 -690
- package/src/components/virtualTourV2/ViewModeToggle.vue +0 -24
- package/src/components/virtualTourV2/VirtualTourV2.vue +0 -875
- package/src/components/virtualTourV2/WaypointCarousel.vue +0 -162
- package/src/components/virtualTourV2/index.ts +0 -20
- package/src/components/virtualTourV2/minimapv2/MiniMapMap.vue +0 -262
- package/src/components/virtualTourV2/minimapv2/MiniMapV2.vue +0 -110
- package/src/components/virtualTourV2/minimapv2/MinimapCompass.vue +0 -39
- package/src/components/virtualTourV2/minimapv2/Moveable.vue +0 -208
- package/src/components/virtualTourV2/minimapv2/RotationMarkerV2.vue +0 -79
- package/src/components/virtualTourV2/minimapv2/SunsimulationSlider.vue +0 -203
- package/src/components/virtualTourV2/minimapv2/index.ts +0 -1
- /package/dist/{lib → vue-components/src/lib}/index.d.ts +0 -0
|
@@ -0,0 +1,4744 @@
|
|
|
1
|
+
var Dt = Object.defineProperty;
|
|
2
|
+
var Rt = (u, t, e) => t in u ? Dt(u, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : u[t] = e;
|
|
3
|
+
var J = (u, t, e) => (Rt(u, typeof t != "symbol" ? t + "" : t, e), e);
|
|
4
|
+
import { defineComponent as Q, ref as r, computed as V, openBlock as h, createElementBlock as F, watch as Z, onMounted as ce, onBeforeUnmount as Oe, withDirectives as de, createElementVNode as o, normalizeStyle as re, vShow as me, createVNode as y, Fragment as Ce, renderList as _e, createCommentVNode as H, inject as pe, resolveComponent as T, withCtx as M, toDisplayString as z, unref as oe, createTextVNode as se, normalizeClass as ye, createBlock as N, renderSlot as ie, provide as De, watchEffect as qe, resolveDynamicComponent as mt, normalizeProps as pt, guardReactiveProps as ht, mergeProps as be, nextTick as Tt, createSlots as Ot, Transition as ze, pushScopeId as ot, popScopeId as nt, vModelText as $t, createStaticVNode as ft, onBeforeUpdate as Ht } from "vue";
|
|
5
|
+
import gt from "axios";
|
|
6
|
+
import * as jt from "@qispace/player-core";
|
|
7
|
+
import * as xe from "three";
|
|
8
|
+
class $e {
|
|
9
|
+
async loadJson(t) {
|
|
10
|
+
return (await gt.get(t)).data;
|
|
11
|
+
}
|
|
12
|
+
async loadImage(t) {
|
|
13
|
+
return new Promise((e, l) => {
|
|
14
|
+
const a = new Image();
|
|
15
|
+
a.crossOrigin = "anonymous", a.onload = () => {
|
|
16
|
+
e(a);
|
|
17
|
+
}, a.onerror = l, a.src = t;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async loadImageData(t) {
|
|
21
|
+
const e = await this.loadImage(t), l = document.createElement("canvas");
|
|
22
|
+
try {
|
|
23
|
+
const a = l.getContext("2d");
|
|
24
|
+
return l.width = e.width, l.height = e.height, a.drawImage(e, 0, 0), l.toDataURL("image/png");
|
|
25
|
+
} finally {
|
|
26
|
+
l.remove();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const Pt = /* @__PURE__ */ Q({
|
|
31
|
+
__name: "VHoverProbe",
|
|
32
|
+
setup(u, { expose: t }) {
|
|
33
|
+
const e = r(), l = V(() => window.getComputedStyle(e.value).display === "none");
|
|
34
|
+
return t({
|
|
35
|
+
isHoverEnabled: l
|
|
36
|
+
}), (a, n) => (h(), F("div", {
|
|
37
|
+
ref_key: "hoverCheck",
|
|
38
|
+
ref: e,
|
|
39
|
+
class: "hover-check"
|
|
40
|
+
}, null, 512));
|
|
41
|
+
}
|
|
42
|
+
}), te = (u, t) => {
|
|
43
|
+
const e = u.__vccOpts || u;
|
|
44
|
+
for (const [l, a] of t)
|
|
45
|
+
e[l] = a;
|
|
46
|
+
return e;
|
|
47
|
+
}, He = /* @__PURE__ */ te(Pt, [["__scopeId", "data-v-eb9b348d"]]), Nt = /* @__PURE__ */ Q({
|
|
48
|
+
__name: "VApartmentChooserRaster",
|
|
49
|
+
props: {
|
|
50
|
+
cdnFileResolver: {},
|
|
51
|
+
viewModel: {},
|
|
52
|
+
selectedUnitId: {},
|
|
53
|
+
unitCallback: { type: Function, default: (u) => u },
|
|
54
|
+
canGoToUnitCallback: { type: Function, default: () => !0 },
|
|
55
|
+
sceneData: { default: () => [] },
|
|
56
|
+
colorCallback: { type: Function, default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) },
|
|
57
|
+
drawObserver: {}
|
|
58
|
+
},
|
|
59
|
+
emits: ["selectUnit", "goToUnit", "hoverOver", "hoverOut", "pos"],
|
|
60
|
+
setup(u, { emit: t }) {
|
|
61
|
+
const e = u, l = t, a = r({ x: 0, y: 0, width: 0, height: 0 }), n = r(null), s = r(0), i = r(0), k = r(null), p = r(null), v = r(null), m = r(null), I = r(-1), _ = r(!1), L = r(null), C = r(null), E = r({}), D = r("auto"), g = r(null), A = r(void 0), R = r(new $e()), c = r({}), f = r(), b = r(), B = r(), U = V(() => f.value.isHoverEnabled), $ = V(() => e.cdnFileResolver(`/scenedata${e.viewModel.currentScene}.png`)), q = V(() => $.value in E.value ? E.value[$.value] : null), ee = V(() => {
|
|
62
|
+
if (I.value < 0)
|
|
63
|
+
return !1;
|
|
64
|
+
const j = e.sceneData.find(
|
|
65
|
+
(P) => P.index === I.value
|
|
66
|
+
);
|
|
67
|
+
return j ? e.unitCallback ? e.unitCallback(j.apartmentId) : j.apartmentId : !1;
|
|
68
|
+
}), w = V(() => ({
|
|
69
|
+
width: s.value + "px",
|
|
70
|
+
height: i.value + "px",
|
|
71
|
+
cursor: D.value
|
|
72
|
+
})), x = V(() => `hover-${_.value ? "over" : "out"}-${ee.value ? typeof ee.value == "object" && "unitId" in ee.value ? ee.value.unitId : ee.value : ""}`);
|
|
73
|
+
Z(
|
|
74
|
+
$,
|
|
75
|
+
() => {
|
|
76
|
+
E.value[$.value] || R.value.loadImageData($.value).then((j) => {
|
|
77
|
+
E.value = {
|
|
78
|
+
...E.value,
|
|
79
|
+
[$.value]: j
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
{ immediate: !0 }
|
|
84
|
+
), Z(q, () => {
|
|
85
|
+
q.value && W();
|
|
86
|
+
}), Z(
|
|
87
|
+
() => e.viewModel.currentScene,
|
|
88
|
+
() => {
|
|
89
|
+
Ve();
|
|
90
|
+
},
|
|
91
|
+
{ immediate: !0 }
|
|
92
|
+
), Z(
|
|
93
|
+
[
|
|
94
|
+
() => e.viewModel.isRotating,
|
|
95
|
+
() => e.drawObserver,
|
|
96
|
+
() => e.selectedUnitId
|
|
97
|
+
],
|
|
98
|
+
() => {
|
|
99
|
+
Ve();
|
|
100
|
+
}
|
|
101
|
+
), Z(ee, () => {
|
|
102
|
+
Ve(), ee.value ? D.value = "pointer" : D.value = "auto";
|
|
103
|
+
}), Z(x, () => {
|
|
104
|
+
_.value ? l("hoverOver", {
|
|
105
|
+
hoverApartment: ee.value,
|
|
106
|
+
closeHandler: () => Ge()
|
|
107
|
+
}) : l("hoverOut", {
|
|
108
|
+
hoverApartment: ee.value,
|
|
109
|
+
closeHandler: () => Ge()
|
|
110
|
+
});
|
|
111
|
+
}), Z(a, () => {
|
|
112
|
+
l("pos", a.value);
|
|
113
|
+
}), ce(() => {
|
|
114
|
+
A.value = () => {
|
|
115
|
+
clearTimeout(g.value), Me(), g.value = setTimeout(() => {
|
|
116
|
+
Me();
|
|
117
|
+
}, 50);
|
|
118
|
+
}, window.addEventListener("resize", A.value), Me();
|
|
119
|
+
}), Oe(() => {
|
|
120
|
+
window.removeEventListener("resize", A.value);
|
|
121
|
+
for (const j in E.value)
|
|
122
|
+
URL.revokeObjectURL(E.value[j]);
|
|
123
|
+
});
|
|
124
|
+
function W() {
|
|
125
|
+
n.value = b, k.value = n.value.getContext("2d", { willReadFrequently: !0 }), p.value = new Image(), p.value.onload = () => {
|
|
126
|
+
Pe(), n.value.addEventListener("mousemove", Ne(S, 50));
|
|
127
|
+
}, p.value.src = q.value;
|
|
128
|
+
}
|
|
129
|
+
function S(j) {
|
|
130
|
+
const P = K(j.offsetX, j.offsetY);
|
|
131
|
+
_.value = P >= 0, I.value = P, a.value = {
|
|
132
|
+
x: j.offsetX,
|
|
133
|
+
y: j.offsetY,
|
|
134
|
+
width: s.value,
|
|
135
|
+
height: i.value
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function Y(j) {
|
|
139
|
+
const P = K(j.offsetX, j.offsetY);
|
|
140
|
+
P < 0 || U && fe(P);
|
|
141
|
+
}
|
|
142
|
+
function X() {
|
|
143
|
+
if (p.value && p.value.width) {
|
|
144
|
+
n.value.width = p.value.width, n.value.height = p.value.height, k.value.drawImage(
|
|
145
|
+
p.value,
|
|
146
|
+
0,
|
|
147
|
+
0,
|
|
148
|
+
p.value.width,
|
|
149
|
+
p.value.height
|
|
150
|
+
), m.value = k.value.getImageData(
|
|
151
|
+
0,
|
|
152
|
+
0,
|
|
153
|
+
n.value.width,
|
|
154
|
+
n.value.height
|
|
155
|
+
), v.value = k.value.getImageData(
|
|
156
|
+
0,
|
|
157
|
+
0,
|
|
158
|
+
n.value.width,
|
|
159
|
+
n.value.height
|
|
160
|
+
);
|
|
161
|
+
const j = m.value.data;
|
|
162
|
+
c.value = {};
|
|
163
|
+
for (let P = 0; P < j.length; P += 4)
|
|
164
|
+
c.value[j[P]] = [];
|
|
165
|
+
for (let P = 3; P < j.length; P += 4)
|
|
166
|
+
j[P] === 255 && j[P - 3] in c.value && c.value[j[P - 3]].push(P - 3);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function K(j, P) {
|
|
170
|
+
L.value = j, C.value = P;
|
|
171
|
+
const le = n.value.offsetWidth / n.value.width, Se = n.value.offsetHeight / n.value.height, Ee = (j / le).toFixed(), Fe = (P / Se).toFixed(), we = Number(Fe) * (n.value.width * 4) + Number(Ee) * 4, ke = m.value.data[we];
|
|
172
|
+
return m.value.data[we + 3] > 0 ? ke : -1;
|
|
173
|
+
}
|
|
174
|
+
function ne() {
|
|
175
|
+
he().forEach((P) => {
|
|
176
|
+
if (P.index >= 0) {
|
|
177
|
+
const le = ue(P.index), Se = ve(P.index);
|
|
178
|
+
let Ee = "idle";
|
|
179
|
+
!ee.value && e.selectedUnitId && Se === e.selectedUnitId ? Ee = "selected" : ee.value && I.value === P.index && (Ee = "hover");
|
|
180
|
+
const Fe = e.unitCallback ? e.unitCallback(Se) : Se;
|
|
181
|
+
if (Fe) {
|
|
182
|
+
const we = e.colorCallback(Fe, Ee);
|
|
183
|
+
if (we)
|
|
184
|
+
for (let ke = 0; ke < le.length; ke++)
|
|
185
|
+
v.value.data[le[ke]] = we.r, v.value.data[le[ke] + 1] = we.g, v.value.data[le[ke] + 2] = we.b, v.value.data[le[ke] + 3] = we.a;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
function ue(j) {
|
|
191
|
+
return m.value ? c.value[j] : !1;
|
|
192
|
+
}
|
|
193
|
+
function ve(j) {
|
|
194
|
+
const P = e.sceneData.find((le) => le.index === j);
|
|
195
|
+
return P && P.apartmentId;
|
|
196
|
+
}
|
|
197
|
+
function he() {
|
|
198
|
+
if (m.value) {
|
|
199
|
+
const j = Object.keys(c.value).map(
|
|
200
|
+
(le) => parseInt(le)
|
|
201
|
+
);
|
|
202
|
+
return e.sceneData.filter(
|
|
203
|
+
(le) => j.includes(le.index)
|
|
204
|
+
);
|
|
205
|
+
} else
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
function fe(j) {
|
|
209
|
+
const P = ve(j);
|
|
210
|
+
ge(P);
|
|
211
|
+
}
|
|
212
|
+
function ge(j) {
|
|
213
|
+
const P = e.unitCallback ? e.unitCallback(j) : j;
|
|
214
|
+
l("selectUnit", P), P && this.canGoToUnitCallback(P) && l("goToUnit", P);
|
|
215
|
+
}
|
|
216
|
+
function Ie(j = 0) {
|
|
217
|
+
if (!v.value)
|
|
218
|
+
return;
|
|
219
|
+
const P = v.value.data;
|
|
220
|
+
for (let le = 3; le < P.length; le += 4)
|
|
221
|
+
P[le] = j;
|
|
222
|
+
}
|
|
223
|
+
function Me() {
|
|
224
|
+
if (!B.value)
|
|
225
|
+
return !1;
|
|
226
|
+
s.value = B.value.offsetWidth, i.value = B.value.offsetHeight;
|
|
227
|
+
}
|
|
228
|
+
function Pe() {
|
|
229
|
+
X(), Ve();
|
|
230
|
+
}
|
|
231
|
+
function Ve() {
|
|
232
|
+
Ie(), ne(), k.value && v.value && k.value.putImageData(v.value, 0, 0);
|
|
233
|
+
}
|
|
234
|
+
function Ge() {
|
|
235
|
+
_.value = !1;
|
|
236
|
+
}
|
|
237
|
+
const Ae = r(!1);
|
|
238
|
+
function Ne(j, P) {
|
|
239
|
+
return Ae.value = !0, function(...le) {
|
|
240
|
+
Ae.value && (Ae.value = !1, j.apply(this, le), setTimeout(() => Ae.value = !0, P));
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
return (j, P) => (h(), F("div", {
|
|
244
|
+
ref_key: "$el",
|
|
245
|
+
ref: B,
|
|
246
|
+
id: "canvas"
|
|
247
|
+
}, [
|
|
248
|
+
de(o("canvas", {
|
|
249
|
+
id: "canvas-mask",
|
|
250
|
+
ref_key: "canvasMask",
|
|
251
|
+
ref: b,
|
|
252
|
+
style: re(w.value),
|
|
253
|
+
onClick: Y
|
|
254
|
+
}, null, 4), [
|
|
255
|
+
[me, !j.viewModel.isRotating]
|
|
256
|
+
]),
|
|
257
|
+
y(He, {
|
|
258
|
+
ref_key: "hoverProbe",
|
|
259
|
+
ref: f
|
|
260
|
+
}, null, 512)
|
|
261
|
+
], 512));
|
|
262
|
+
}
|
|
263
|
+
}), wt = /* @__PURE__ */ te(Nt, [["__scopeId", "data-v-dbb7046f"]]), Yt = ["viewBox"], Wt = ["innerHTML", "onMouseenter", "onMouseleave", "onClick"], Gt = /* @__PURE__ */ Q({
|
|
264
|
+
__name: "VApartmentChooserSvg",
|
|
265
|
+
props: {
|
|
266
|
+
cdnFileResolver: {},
|
|
267
|
+
viewModel: {},
|
|
268
|
+
selectedUnitId: {},
|
|
269
|
+
unitCallback: { type: Function, default: (u) => u },
|
|
270
|
+
canGoToUnitCallback: { type: Function, default: () => !0 },
|
|
271
|
+
sceneData: { default: () => [] },
|
|
272
|
+
colorCallback: { type: Function, default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) },
|
|
273
|
+
drawObserver: {}
|
|
274
|
+
},
|
|
275
|
+
emits: ["selectUnit", "goToUnit", "hoverOver", "hoverOut", "pos"],
|
|
276
|
+
setup(u, { emit: t }) {
|
|
277
|
+
const e = u, l = t, a = r({ x: 0, y: 0, width: 0, height: 0 }), n = r(-1), s = r({}), i = r(null), k = r(new $e()), p = r(), v = r(), m = V(() => v.value.isHoverEnabled);
|
|
278
|
+
Z(
|
|
279
|
+
() => e.viewModel.currentScene,
|
|
280
|
+
() => {
|
|
281
|
+
e.viewModel.currentScene in s.value && (i.value = s.value[e.viewModel.currentScene]);
|
|
282
|
+
},
|
|
283
|
+
{ immediate: !0 }
|
|
284
|
+
), Z(
|
|
285
|
+
s,
|
|
286
|
+
() => {
|
|
287
|
+
e.viewModel.currentScene in s.value && (i.value = s.value[e.viewModel.currentScene]);
|
|
288
|
+
},
|
|
289
|
+
{ immediate: !0 }
|
|
290
|
+
), Z(a, () => {
|
|
291
|
+
l("pos", a.value);
|
|
292
|
+
}), Z(n, (c, f) => {
|
|
293
|
+
if (c >= 0) {
|
|
294
|
+
const b = L(c);
|
|
295
|
+
l("hoverOver", {
|
|
296
|
+
hoverApartment: b,
|
|
297
|
+
closeHandler: () => {
|
|
298
|
+
n.value = -1;
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
} else {
|
|
302
|
+
const b = L(f);
|
|
303
|
+
l("hoverOut", {
|
|
304
|
+
hoverApartment: b,
|
|
305
|
+
closeHandler: () => {
|
|
306
|
+
n.value = -1;
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}), ce(() => {
|
|
311
|
+
for (let c = 1; c <= 4; c++) {
|
|
312
|
+
const f = e.cdnFileResolver(`/scenedata${c}.svg`), b = {};
|
|
313
|
+
k.value.loadJson(f).then((B) => {
|
|
314
|
+
b.markup = B;
|
|
315
|
+
const $ = new DOMParser().parseFromString(B, "image/svg+xml").getElementsByTagName("svg")[0];
|
|
316
|
+
b.viewBox = $.getAttribute("viewBox"), b.svgObjects = Array.from(
|
|
317
|
+
$.querySelectorAll("*[data-index]")
|
|
318
|
+
).map((q) => ({
|
|
319
|
+
index: parseInt(q.getAttribute("data-index")),
|
|
320
|
+
svg: q.innerHTML
|
|
321
|
+
})), s.value = { ...s.value, [c]: b };
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
p.value.addEventListener("mousemove", R(I, 50));
|
|
325
|
+
});
|
|
326
|
+
function I(c) {
|
|
327
|
+
a.value = {
|
|
328
|
+
x: c.offsetX,
|
|
329
|
+
y: c.offsetY,
|
|
330
|
+
width: p.value.offsetWidth,
|
|
331
|
+
height: p.value.offsetHeight
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
function _(c) {
|
|
335
|
+
var f;
|
|
336
|
+
return (f = e.sceneData.find((b) => b.index === parseInt(c))) == null ? void 0 : f.apartmentId;
|
|
337
|
+
}
|
|
338
|
+
function L(c) {
|
|
339
|
+
const f = _(c);
|
|
340
|
+
return e.unitCallback ? e.unitCallback(f) : f;
|
|
341
|
+
}
|
|
342
|
+
function C(c) {
|
|
343
|
+
m.value && (n.value = c);
|
|
344
|
+
}
|
|
345
|
+
function E(c) {
|
|
346
|
+
m.value && (n.value = -1);
|
|
347
|
+
}
|
|
348
|
+
function D(c) {
|
|
349
|
+
const f = L(c);
|
|
350
|
+
l("selectUnit", f), m.value && f && e.canGoToUnitCallback(f) ? l("goToUnit", f) : n.value = c;
|
|
351
|
+
}
|
|
352
|
+
function g(c) {
|
|
353
|
+
const f = _(c), b = L(c);
|
|
354
|
+
let B = "idle";
|
|
355
|
+
n.value < 0 && e.selectedUnitId && f === e.selectedUnitId ? B = "selected" : n.value >= 0 && n.value === c && (B = "hover");
|
|
356
|
+
const U = e.colorCallback(b, B);
|
|
357
|
+
if (U) {
|
|
358
|
+
const { r: $, g: q, b: ee, a: w, s: x } = U;
|
|
359
|
+
return {
|
|
360
|
+
strokeWidth: x !== void 0 ? x : 2,
|
|
361
|
+
stroke: `rgb(${$}, ${q}, ${ee})`,
|
|
362
|
+
strokeOpacity: 1,
|
|
363
|
+
fill: `rgb(${$}, ${q}, ${ee})`,
|
|
364
|
+
fillOpacity: w / 255,
|
|
365
|
+
cursor: `${e.canGoToUnitCallback(b) ? "cursor" : "default"} !important`
|
|
366
|
+
};
|
|
367
|
+
} else
|
|
368
|
+
return {
|
|
369
|
+
strokeWidth: 0,
|
|
370
|
+
stroke: "white",
|
|
371
|
+
strokeOpacity: 0,
|
|
372
|
+
fill: "white",
|
|
373
|
+
fillOpacity: 0,
|
|
374
|
+
cursor: "default !important"
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
const A = r(!1);
|
|
378
|
+
function R(c, f) {
|
|
379
|
+
return A.value = !0, function(...b) {
|
|
380
|
+
A.value && (A.value = !1, c.apply(this, b), setTimeout(() => A.value = !0, f));
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
return (c, f) => (h(), F("div", {
|
|
384
|
+
id: "container",
|
|
385
|
+
ref_key: "container",
|
|
386
|
+
ref: p
|
|
387
|
+
}, [
|
|
388
|
+
de(o("div", {
|
|
389
|
+
class: "svg-container",
|
|
390
|
+
style: re({
|
|
391
|
+
opacity: !i.value || !i.value.svgObjects ? 0 : 1
|
|
392
|
+
})
|
|
393
|
+
}, [
|
|
394
|
+
i.value && i.value.svgObjects ? (h(), F("svg", {
|
|
395
|
+
key: 0,
|
|
396
|
+
viewBox: i.value.viewBox
|
|
397
|
+
}, [
|
|
398
|
+
(h(!0), F(Ce, null, _e(i.value.svgObjects, ({ index: b, svg: B }) => (h(), F("g", {
|
|
399
|
+
key: b,
|
|
400
|
+
innerHTML: B,
|
|
401
|
+
style: re(g(b)),
|
|
402
|
+
onMouseenter: (U) => C(b),
|
|
403
|
+
onMouseleave: (U) => E(),
|
|
404
|
+
onClick: (U) => D(b)
|
|
405
|
+
}, null, 44, Wt))), 128))
|
|
406
|
+
], 8, Yt)) : H("", !0)
|
|
407
|
+
], 4), [
|
|
408
|
+
[me, !c.viewModel.isRotating]
|
|
409
|
+
]),
|
|
410
|
+
y(He, {
|
|
411
|
+
ref_key: "hoverProbe",
|
|
412
|
+
ref: v
|
|
413
|
+
}, null, 512)
|
|
414
|
+
], 512));
|
|
415
|
+
}
|
|
416
|
+
}), kt = /* @__PURE__ */ te(Gt, [["__scopeId", "data-v-3e771deb"]]), Qt = {
|
|
417
|
+
key: 0,
|
|
418
|
+
class: "d-none d-md-flex"
|
|
419
|
+
}, zt = /* @__PURE__ */ Q({
|
|
420
|
+
__name: "VApartmentChooserNavigation",
|
|
421
|
+
props: {
|
|
422
|
+
canGoToUnitCallback: { type: Function, default: () => !0 },
|
|
423
|
+
selectedUnit: {},
|
|
424
|
+
prevUnit: {},
|
|
425
|
+
nextUnit: {},
|
|
426
|
+
viewModel: {}
|
|
427
|
+
},
|
|
428
|
+
emits: ["prevUnit", "nextUnit", "goToUnit"],
|
|
429
|
+
setup(u, { emit: t }) {
|
|
430
|
+
const e = u, l = t, a = pe("i18n");
|
|
431
|
+
ce(() => {
|
|
432
|
+
window.addEventListener("keydown", n);
|
|
433
|
+
}), Oe(() => {
|
|
434
|
+
window.removeEventListener("keydown", n);
|
|
435
|
+
});
|
|
436
|
+
function n(s) {
|
|
437
|
+
s.keyCode === 37 ? e.prevUnit && l("prevUnit") : s.keyCode === 39 && e.nextUnit && l("nextUnit");
|
|
438
|
+
}
|
|
439
|
+
return (s, i) => {
|
|
440
|
+
const k = T("v-btn");
|
|
441
|
+
return h(), F("div", null, [
|
|
442
|
+
y(k, {
|
|
443
|
+
elevation: "1",
|
|
444
|
+
icon: "mdi-rotate-right",
|
|
445
|
+
class: "black darken-1",
|
|
446
|
+
onClick: i[0] || (i[0] = (p) => s.viewModel.rotateClockwise())
|
|
447
|
+
}),
|
|
448
|
+
y(k, {
|
|
449
|
+
elevation: "1",
|
|
450
|
+
plain: "",
|
|
451
|
+
icon: "mdi-chevron-left",
|
|
452
|
+
class: "mr-sm-4 ml-sm-8 mr-3 ml-3 black darken-1",
|
|
453
|
+
disabled: !s.prevUnit,
|
|
454
|
+
onClick: i[1] || (i[1] = (p) => l("prevUnit"))
|
|
455
|
+
}, null, 8, ["disabled"]),
|
|
456
|
+
y(k, {
|
|
457
|
+
color: "success darken-2",
|
|
458
|
+
elevation: "1",
|
|
459
|
+
rounded: "",
|
|
460
|
+
plain: "",
|
|
461
|
+
disabled: !s.selectedUnit || !s.canGoToUnitCallback(s.selectedUnit),
|
|
462
|
+
onClick: i[2] || (i[2] = (p) => l("goToUnit", s.selectedUnit))
|
|
463
|
+
}, {
|
|
464
|
+
default: M(() => [
|
|
465
|
+
s.selectedUnit && s.canGoToUnitCallback(s.selectedUnit) ? (h(), F("span", Qt, z(oe(a).getLabel("see-apartment")) + " ", 1)) : H("", !0),
|
|
466
|
+
o("span", null, z(s.selectedUnit && "title" in s.selectedUnit ? s.selectedUnit.title : "-"), 1)
|
|
467
|
+
]),
|
|
468
|
+
_: 1
|
|
469
|
+
}, 8, ["disabled"]),
|
|
470
|
+
y(k, {
|
|
471
|
+
elevation: "1",
|
|
472
|
+
plain: "",
|
|
473
|
+
icon: "mdi-chevron-right",
|
|
474
|
+
class: "mr-sm-8 ml-sm-4 mr-3 ml-3 black darken-1",
|
|
475
|
+
disabled: !s.nextUnit,
|
|
476
|
+
onClick: i[3] || (i[3] = (p) => l("nextUnit"))
|
|
477
|
+
}, null, 8, ["disabled"]),
|
|
478
|
+
y(k, {
|
|
479
|
+
elevation: "1",
|
|
480
|
+
plain: "",
|
|
481
|
+
icon: "mdi-rotate-left",
|
|
482
|
+
class: "black darken-1",
|
|
483
|
+
onClick: i[4] || (i[4] = (p) => s.viewModel.rotateCounterClockwise())
|
|
484
|
+
})
|
|
485
|
+
]);
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
}), bt = /* @__PURE__ */ te(zt, [["__scopeId", "data-v-02d5a12e"]]);
|
|
489
|
+
class tt {
|
|
490
|
+
constructor(t) {
|
|
491
|
+
J(this, "_numParts");
|
|
492
|
+
J(this, "_loadedCount");
|
|
493
|
+
J(this, "_isError");
|
|
494
|
+
J(this, "_finishedAction");
|
|
495
|
+
J(this, "_errorAction");
|
|
496
|
+
J(this, "_loadProgressAction");
|
|
497
|
+
this._numParts = t, this._loadedCount = 0, this._isError = !1, this._finishedAction = () => {
|
|
498
|
+
}, this._errorAction = () => {
|
|
499
|
+
}, this._loadProgressAction = () => {
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
onLoadFinished(t) {
|
|
503
|
+
return this._finishedAction = t, this;
|
|
504
|
+
}
|
|
505
|
+
onLoadError(t) {
|
|
506
|
+
return this._errorAction = t, this;
|
|
507
|
+
}
|
|
508
|
+
onLoadProgress(t) {
|
|
509
|
+
return this._loadProgressAction = t, this;
|
|
510
|
+
}
|
|
511
|
+
partLoaded() {
|
|
512
|
+
this.isFinished || (this._loadedCount++, this._loadProgressAction(this.percentLoaded), this.isFinished && this._finishedAction());
|
|
513
|
+
}
|
|
514
|
+
errorDetected() {
|
|
515
|
+
this._isError || (this._isError = !0, this._errorAction());
|
|
516
|
+
}
|
|
517
|
+
get isFinished() {
|
|
518
|
+
return this._loadedCount >= this._numParts;
|
|
519
|
+
}
|
|
520
|
+
get isError() {
|
|
521
|
+
return this._isError;
|
|
522
|
+
}
|
|
523
|
+
get percentLoaded() {
|
|
524
|
+
return Math.round(this._loadedCount * 100 / this._numParts);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
class at {
|
|
528
|
+
constructor(t, e, l, a) {
|
|
529
|
+
J(this, "_rotator");
|
|
530
|
+
J(this, "_direction");
|
|
531
|
+
J(this, "_frameIndex");
|
|
532
|
+
J(this, "_sceneCount");
|
|
533
|
+
this._rotator = t, this._direction = e, this._frameIndex = l, this._sceneCount = a;
|
|
534
|
+
}
|
|
535
|
+
get atEnd() {
|
|
536
|
+
return this._sceneCount === 0;
|
|
537
|
+
}
|
|
538
|
+
get frameIndex() {
|
|
539
|
+
return this._frameIndex;
|
|
540
|
+
}
|
|
541
|
+
nextFrame() {
|
|
542
|
+
const t = this._rotator.clampFrameIndex(
|
|
543
|
+
this._frameIndex + this._direction
|
|
544
|
+
), e = this._rotator.isCardinalFrame(t) ? this._sceneCount - 1 : this._sceneCount;
|
|
545
|
+
return new at(
|
|
546
|
+
this._rotator,
|
|
547
|
+
this._direction,
|
|
548
|
+
t,
|
|
549
|
+
e
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
class qt {
|
|
554
|
+
constructor(t, e) {
|
|
555
|
+
J(this, "_cardinalFrames");
|
|
556
|
+
J(this, "_totalFrameCount");
|
|
557
|
+
this._cardinalFrames = t, this._totalFrameCount = e;
|
|
558
|
+
}
|
|
559
|
+
start(t, e, l) {
|
|
560
|
+
const a = this.startFrameIndexForScene(e);
|
|
561
|
+
return new at(this, t, a, l);
|
|
562
|
+
}
|
|
563
|
+
isCardinalFrame(t) {
|
|
564
|
+
return this._cardinalFrames.includes(t);
|
|
565
|
+
}
|
|
566
|
+
clampFrameIndex(t) {
|
|
567
|
+
return (this._totalFrameCount + t) % this._totalFrameCount;
|
|
568
|
+
}
|
|
569
|
+
startFrameIndexForScene(t) {
|
|
570
|
+
return this._cardinalFrames[t];
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
const Zt = {
|
|
574
|
+
key: 0,
|
|
575
|
+
class: "fill-parent d-flex justify-center align-center blue-grey lighten-5"
|
|
576
|
+
}, Xt = {
|
|
577
|
+
key: 1,
|
|
578
|
+
class: "frame-container"
|
|
579
|
+
}, Kt = {
|
|
580
|
+
key: 0,
|
|
581
|
+
class: "frame-image"
|
|
582
|
+
}, Jt = ["srcset", "type"], eo = ["src"], to = {
|
|
583
|
+
key: 2,
|
|
584
|
+
id: "image-stack",
|
|
585
|
+
class: "frame-container"
|
|
586
|
+
}, oo = ["alt"], no = ["srcset"], ao = ["src"], ct = 64, Ye = 4, lo = 120, io = /* @__PURE__ */ Q({
|
|
587
|
+
__name: "VApartmentChooserRotator",
|
|
588
|
+
props: {
|
|
589
|
+
viewModel: {},
|
|
590
|
+
build: { default: "" },
|
|
591
|
+
cdnFileResolver: {},
|
|
592
|
+
cardinalFrames: {}
|
|
593
|
+
},
|
|
594
|
+
emits: ["loaded", "error", "progress"],
|
|
595
|
+
setup(u, { emit: t }) {
|
|
596
|
+
const e = u, l = t, a = _(), n = r(
|
|
597
|
+
new tt(a.length).onLoadFinished(() => l("loaded")).onLoadProgress((D) => l("progress", D)).onLoadError(() => l("error"))
|
|
598
|
+
), s = r(
|
|
599
|
+
new qt(e.cardinalFrames, ct)
|
|
600
|
+
), i = r(a), k = r(!1), p = V(() => i.value.find((D) => D.show));
|
|
601
|
+
Z(
|
|
602
|
+
() => e.viewModel.currentScene,
|
|
603
|
+
(D, g) => {
|
|
604
|
+
const A = E(g, D), R = C(g, D);
|
|
605
|
+
v(g, A, R);
|
|
606
|
+
}
|
|
607
|
+
), ce(() => {
|
|
608
|
+
I();
|
|
609
|
+
});
|
|
610
|
+
function v(D, g, A) {
|
|
611
|
+
e.viewModel.isRotating || (e.viewModel.isRotating = !0, m(
|
|
612
|
+
s.value.start(
|
|
613
|
+
g,
|
|
614
|
+
D % Ye,
|
|
615
|
+
A
|
|
616
|
+
)
|
|
617
|
+
));
|
|
618
|
+
}
|
|
619
|
+
function m(D) {
|
|
620
|
+
setTimeout(() => {
|
|
621
|
+
i.value[D.frameIndex].show = !1;
|
|
622
|
+
const g = D.nextFrame();
|
|
623
|
+
i.value[g.frameIndex].show = !0, g.atEnd ? I() : window.requestAnimationFrame(() => m(g));
|
|
624
|
+
}, 1e3 / lo);
|
|
625
|
+
}
|
|
626
|
+
function I() {
|
|
627
|
+
const D = s.value.startFrameIndexForScene(
|
|
628
|
+
e.viewModel.currentScene % Ye
|
|
629
|
+
);
|
|
630
|
+
D in i.value && (i.value[D].show = !0), e.viewModel.isRotating = !1;
|
|
631
|
+
}
|
|
632
|
+
function _() {
|
|
633
|
+
const D = [];
|
|
634
|
+
for (let g = 0; g < ct; g++) {
|
|
635
|
+
const { sourceSet: A, defaultPath: R } = L(g);
|
|
636
|
+
D.push({
|
|
637
|
+
index: g,
|
|
638
|
+
sourceSet: A,
|
|
639
|
+
defaultPath: R,
|
|
640
|
+
show: !1
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
return D;
|
|
644
|
+
}
|
|
645
|
+
function L(D) {
|
|
646
|
+
const g = ("0000" + (D + 1)).slice(-4), A = e.build ? `?v=${e.build}` : "", R = [
|
|
647
|
+
`${e.cdnFileResolver(`/480/${g}.jpg${A}`)} 480w`,
|
|
648
|
+
`${e.cdnFileResolver(`/960/${g}.jpg${A}`)} 960w`,
|
|
649
|
+
`${e.cdnFileResolver(`/1280/${g}.jpg${A}`)} 1280w`
|
|
650
|
+
].join(","), c = e.cdnFileResolver(
|
|
651
|
+
`/480/${g}.jpg${A}`
|
|
652
|
+
);
|
|
653
|
+
return { sourceSet: R, defaultPath: c };
|
|
654
|
+
}
|
|
655
|
+
function C(D, g) {
|
|
656
|
+
const A = Ye / 2, R = Math.abs(D - g);
|
|
657
|
+
return R > A ? Ye - R : R;
|
|
658
|
+
}
|
|
659
|
+
function E(D, g) {
|
|
660
|
+
if (D === g)
|
|
661
|
+
return 0;
|
|
662
|
+
const R = Math.abs(D - g) < Ye / 2;
|
|
663
|
+
return R && D < g || !R && D > g ? 1 : -1;
|
|
664
|
+
}
|
|
665
|
+
return (D, g) => {
|
|
666
|
+
const A = T("v-icon");
|
|
667
|
+
return h(), F("div", null, [
|
|
668
|
+
n.value.isError ? (h(), F("div", Zt, [
|
|
669
|
+
y(A, { "x-large": "" }, {
|
|
670
|
+
default: M(() => [
|
|
671
|
+
se("mdi-alert-circle-outline")
|
|
672
|
+
]),
|
|
673
|
+
_: 1
|
|
674
|
+
})
|
|
675
|
+
])) : k.value ? (h(), F("div", to, [
|
|
676
|
+
(h(!0), F(Ce, null, _e(i.value, (R) => (h(), F("picture", {
|
|
677
|
+
key: R.index,
|
|
678
|
+
alt: R.index,
|
|
679
|
+
class: ye({ "frame-image": !0, show: R.show })
|
|
680
|
+
}, [
|
|
681
|
+
o("source", {
|
|
682
|
+
srcset: R.sourceSet,
|
|
683
|
+
type: "image/jpeg"
|
|
684
|
+
}, null, 8, no),
|
|
685
|
+
o("img", {
|
|
686
|
+
src: R.defaultPath,
|
|
687
|
+
alt: "Building image",
|
|
688
|
+
onLoad: g[2] || (g[2] = (c) => n.value.partLoaded()),
|
|
689
|
+
onError: g[3] || (g[3] = (c) => n.value.errorDetected())
|
|
690
|
+
}, null, 40, ao)
|
|
691
|
+
], 10, oo))), 128))
|
|
692
|
+
])) : (h(), F("div", Xt, [
|
|
693
|
+
p.value ? (h(), F("picture", Kt, [
|
|
694
|
+
o("source", {
|
|
695
|
+
srcset: p.value.sourceSet,
|
|
696
|
+
type: p.value.type
|
|
697
|
+
}, null, 8, Jt),
|
|
698
|
+
o("img", {
|
|
699
|
+
src: p.value.defaultPath,
|
|
700
|
+
onLoad: g[0] || (g[0] = (R) => k.value = !0),
|
|
701
|
+
onError: g[1] || (g[1] = (R) => n.value.errorDetected())
|
|
702
|
+
}, null, 40, eo)
|
|
703
|
+
])) : H("", !0)
|
|
704
|
+
]))
|
|
705
|
+
]);
|
|
706
|
+
};
|
|
707
|
+
}
|
|
708
|
+
}), yt = /* @__PURE__ */ te(io, [["__scopeId", "data-v-8e71d825"]]), so = /* @__PURE__ */ Q({
|
|
709
|
+
__name: "VFloatingCard",
|
|
710
|
+
props: {
|
|
711
|
+
pos: {},
|
|
712
|
+
isHoverable: { type: Boolean }
|
|
713
|
+
},
|
|
714
|
+
emits: ["outside"],
|
|
715
|
+
setup(u, { emit: t }) {
|
|
716
|
+
const e = u, l = t, a = V(() => {
|
|
717
|
+
const n = e.pos.x <= e.pos.width / 2 ? "left" : "right";
|
|
718
|
+
return `${e.pos.y <= e.pos.height / 2 ? "top" : "bottom"}-${n}`;
|
|
719
|
+
});
|
|
720
|
+
return (n, s) => {
|
|
721
|
+
const i = T("v-dialog"), k = T("v-fade-transition");
|
|
722
|
+
return h(), N(k, {
|
|
723
|
+
origin: a.value.replace("-", " ") + " " + n.pos.x + " " + n.pos.y
|
|
724
|
+
}, {
|
|
725
|
+
default: M(() => [
|
|
726
|
+
n.isHoverable ? (h(), F("div", {
|
|
727
|
+
key: 0,
|
|
728
|
+
class: ye(["floating-card", a.value]),
|
|
729
|
+
style: re({ left: `${n.pos.x}px`, top: `${n.pos.y}px`, pointerEvents: "none" })
|
|
730
|
+
}, [
|
|
731
|
+
ie(n.$slots, "default", { isHoverable: n.isHoverable }, void 0, !0)
|
|
732
|
+
], 6)) : (h(), N(i, {
|
|
733
|
+
key: 1,
|
|
734
|
+
value: !0,
|
|
735
|
+
width: "auto",
|
|
736
|
+
"onClick:outside": s[0] || (s[0] = (p) => l("outside", p))
|
|
737
|
+
}, {
|
|
738
|
+
default: M(() => [
|
|
739
|
+
ie(n.$slots, "default", { isHoverable: n.isHoverable }, void 0, !0)
|
|
740
|
+
]),
|
|
741
|
+
_: 3
|
|
742
|
+
}))
|
|
743
|
+
]),
|
|
744
|
+
_: 3
|
|
745
|
+
}, 8, ["origin"]);
|
|
746
|
+
};
|
|
747
|
+
}
|
|
748
|
+
}), Ze = /* @__PURE__ */ te(so, [["__scopeId", "data-v-0695e74f"]]), ro = /* @__PURE__ */ Q({
|
|
749
|
+
__name: "VZoomBox",
|
|
750
|
+
props: {
|
|
751
|
+
desktop: { type: Boolean, default: !0 },
|
|
752
|
+
mobile: { type: Boolean, default: !0 },
|
|
753
|
+
maxScale: { default: 10 },
|
|
754
|
+
consumeMouseClickWhenMoved: { type: Boolean, default: !0 },
|
|
755
|
+
consumeMouseUpWhenMoved: { type: Boolean, default: !0 }
|
|
756
|
+
},
|
|
757
|
+
emits: ["update"],
|
|
758
|
+
setup(u, { emit: t }) {
|
|
759
|
+
const e = u, l = t, a = r(100), n = r(0), s = r(0), i = r(!1), k = r(!1), p = r(void 0), v = r(!1), m = r(), I = V(() => `translateX(${n.value}px) translateY(${s.value}px) scale(${_.value})`), _ = V(() => a.value / 100), L = V(() => e.maxScale * 100);
|
|
760
|
+
Z([_, n, s], () => {
|
|
761
|
+
W();
|
|
762
|
+
}), Z(
|
|
763
|
+
() => e.desktop,
|
|
764
|
+
() => {
|
|
765
|
+
e.desktop ? C() : D();
|
|
766
|
+
}
|
|
767
|
+
), Z(
|
|
768
|
+
() => e.mobile,
|
|
769
|
+
() => {
|
|
770
|
+
e.mobile ? E() : g();
|
|
771
|
+
}
|
|
772
|
+
), ce(() => {
|
|
773
|
+
e.desktop && C(), e.mobile && E();
|
|
774
|
+
}), Oe(() => {
|
|
775
|
+
e.desktop && D(), e.mobile && g();
|
|
776
|
+
});
|
|
777
|
+
function C() {
|
|
778
|
+
m.value.addEventListener("wheel", A, {
|
|
779
|
+
capture: !0
|
|
780
|
+
}), m.value.addEventListener("mousedown", R, {
|
|
781
|
+
capture: !0
|
|
782
|
+
}), m.value.addEventListener("mousemove", c, {
|
|
783
|
+
capture: !0
|
|
784
|
+
}), window.addEventListener("mouseup", f, {
|
|
785
|
+
capture: !0
|
|
786
|
+
}), window.addEventListener("click", b, {
|
|
787
|
+
capture: !0
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
function E() {
|
|
791
|
+
m.value.addEventListener("touchstart", B, {
|
|
792
|
+
capture: !0
|
|
793
|
+
}), m.value.addEventListener("touchmove", U, {
|
|
794
|
+
capture: !0
|
|
795
|
+
}), window.addEventListener("touchend", $, {
|
|
796
|
+
capture: !0
|
|
797
|
+
}), window.addEventListener("touchcancel", $, {
|
|
798
|
+
capture: !0
|
|
799
|
+
});
|
|
800
|
+
}
|
|
801
|
+
function D() {
|
|
802
|
+
m.value.removeEventListener("wheel", A, {
|
|
803
|
+
capture: !0
|
|
804
|
+
}), m.value.removeEventListener("mousedown", R, {
|
|
805
|
+
capture: !0
|
|
806
|
+
}), m.value.removeEventListener("mousemove", c, {
|
|
807
|
+
capture: !0
|
|
808
|
+
}), window.removeEventListener("mouseup", f, {
|
|
809
|
+
capture: !0
|
|
810
|
+
}), window.removeEventListener("click", b, {
|
|
811
|
+
capture: !0
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
function g() {
|
|
815
|
+
m.value.removeEventListener("touchstart", B, {
|
|
816
|
+
capture: !0
|
|
817
|
+
}), m.value.removeEventListener("touchmove", U, {
|
|
818
|
+
capture: !0
|
|
819
|
+
}), window.removeEventListener("touchend", $, {
|
|
820
|
+
capture: !0
|
|
821
|
+
}), window.removeEventListener("touchcancel", $, {
|
|
822
|
+
capture: !0
|
|
823
|
+
});
|
|
824
|
+
}
|
|
825
|
+
function A(S) {
|
|
826
|
+
const { x: Y, y: X } = q(S);
|
|
827
|
+
x(-S.deltaY / 10, Y, X), S.preventDefault();
|
|
828
|
+
}
|
|
829
|
+
function R(S) {
|
|
830
|
+
i.value = !0, v.value = !1, p.value = S;
|
|
831
|
+
}
|
|
832
|
+
function c(S) {
|
|
833
|
+
if (i.value) {
|
|
834
|
+
const { x: Y, y: X } = q(S), { x: K, y: ne } = q(p.value), ue = {
|
|
835
|
+
x: Y - K,
|
|
836
|
+
y: X - ne
|
|
837
|
+
};
|
|
838
|
+
ee(ue.x), w(ue.y), v.value = !0, p.value = S;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
function f(S) {
|
|
842
|
+
i.value && v.value && e.consumeMouseUpWhenMoved && (S.preventDefault(), S.stopImmediatePropagation());
|
|
843
|
+
}
|
|
844
|
+
function b(S) {
|
|
845
|
+
i.value && (v.value && e.consumeMouseClickWhenMoved && (S.preventDefault(), S.stopImmediatePropagation()), i.value = !1);
|
|
846
|
+
}
|
|
847
|
+
function B(S) {
|
|
848
|
+
i.value = S.touches.length === 1, k.value = S.touches.length === 2, p.value = S;
|
|
849
|
+
}
|
|
850
|
+
function U(S) {
|
|
851
|
+
if (i.value) {
|
|
852
|
+
const { x: Y, y: X } = q(S.touches[0]), { x: K, y: ne } = q(p.value.touches[0]), ue = {
|
|
853
|
+
x: Y - K,
|
|
854
|
+
y: X - ne
|
|
855
|
+
};
|
|
856
|
+
ee(ue.x), w(ue.y);
|
|
857
|
+
} else if (k.value && S.touches.length === 2) {
|
|
858
|
+
const { x: Y, y: X } = q(S.touches[0]), { x: K, y: ne } = q(p.value.touches[0]), { x: ue, y: ve } = q(S.touches[1]), { x: he, y: fe } = q(p.value.touches[1]), ge = Math.hypot(K - he, ne - fe), Ie = Math.hypot(Y - ue, X - ve), Me = (ue + Y) / 2, Pe = (ve + X) / 2;
|
|
859
|
+
x(Ie - ge, Me, Pe);
|
|
860
|
+
}
|
|
861
|
+
p.value = S;
|
|
862
|
+
}
|
|
863
|
+
function $() {
|
|
864
|
+
i.value = !1, k.value = !1;
|
|
865
|
+
}
|
|
866
|
+
function q(S) {
|
|
867
|
+
const { left: Y, top: X } = m.value.getBoundingClientRect();
|
|
868
|
+
return {
|
|
869
|
+
x: S.clientX - Y,
|
|
870
|
+
y: S.clientY - X
|
|
871
|
+
};
|
|
872
|
+
}
|
|
873
|
+
function ee(S) {
|
|
874
|
+
const Y = m.value.clientWidth, X = Y * _.value;
|
|
875
|
+
n.value = Math.max(
|
|
876
|
+
Math.min(0, n.value + S),
|
|
877
|
+
-(X - Y)
|
|
878
|
+
);
|
|
879
|
+
}
|
|
880
|
+
function w(S) {
|
|
881
|
+
const Y = m.value.clientHeight, X = Y * _.value;
|
|
882
|
+
s.value = Math.max(
|
|
883
|
+
Math.min(0, s.value + S),
|
|
884
|
+
-(X - Y)
|
|
885
|
+
);
|
|
886
|
+
}
|
|
887
|
+
function x(S, Y, X) {
|
|
888
|
+
const K = m.value.clientWidth, ne = m.value.clientHeight, ue = K * _.value, ve = ne * _.value;
|
|
889
|
+
a.value = Math.min(Math.max(100, a.value + S), L.value);
|
|
890
|
+
const he = K * _.value, fe = ne * _.value, ge = he - ue, Ie = fe - ve;
|
|
891
|
+
n.value -= Y / K * ge, s.value -= X / ne * Ie, ee(0), w(0);
|
|
892
|
+
}
|
|
893
|
+
function W() {
|
|
894
|
+
l("update", {
|
|
895
|
+
scale: _.value,
|
|
896
|
+
x: n.value,
|
|
897
|
+
y: s.value,
|
|
898
|
+
resolve: (S, Y) => {
|
|
899
|
+
const X = m.value.clientWidth, K = m.value.clientHeight, ne = n.value / -_.value, ue = s.value / -_.value, ve = ne + X / _.value, he = ue + K / _.value, fe = S / X * (ve - ne) + ne, ge = Y / K * (he - ue) + ue;
|
|
900
|
+
return { x: fe, y: ge };
|
|
901
|
+
}
|
|
902
|
+
});
|
|
903
|
+
}
|
|
904
|
+
return (S, Y) => (h(), F("div", {
|
|
905
|
+
ref_key: "box",
|
|
906
|
+
ref: m,
|
|
907
|
+
class: "zoom-box-container"
|
|
908
|
+
}, [
|
|
909
|
+
o("div", {
|
|
910
|
+
style: re({ "transform-origin": "top left", transform: I.value }),
|
|
911
|
+
class: "zoom-box"
|
|
912
|
+
}, [
|
|
913
|
+
ie(S.$slots, "default", {}, void 0, !0)
|
|
914
|
+
], 4)
|
|
915
|
+
], 512));
|
|
916
|
+
}
|
|
917
|
+
}), Xe = /* @__PURE__ */ te(ro, [["__scopeId", "data-v-52f62ef2"]]), lt = 4;
|
|
918
|
+
function _t(u) {
|
|
919
|
+
return u < lt ? u + 1 : 1;
|
|
920
|
+
}
|
|
921
|
+
function uo(u) {
|
|
922
|
+
return u > 1 ? u - 1 : lt;
|
|
923
|
+
}
|
|
924
|
+
class co {
|
|
925
|
+
constructor(t) {
|
|
926
|
+
J(this, "_state");
|
|
927
|
+
J(this, "_navigator");
|
|
928
|
+
J(this, "_sceneModel");
|
|
929
|
+
this._state = {
|
|
930
|
+
isRotating: !1,
|
|
931
|
+
currentScene: t
|
|
932
|
+
};
|
|
933
|
+
}
|
|
934
|
+
get isRotating() {
|
|
935
|
+
return this._state.isRotating;
|
|
936
|
+
}
|
|
937
|
+
set isRotating(t) {
|
|
938
|
+
this._state.isRotating = t;
|
|
939
|
+
}
|
|
940
|
+
get navigator() {
|
|
941
|
+
return this._navigator;
|
|
942
|
+
}
|
|
943
|
+
get sceneModel() {
|
|
944
|
+
return this._sceneModel;
|
|
945
|
+
}
|
|
946
|
+
unlessRotatingDo(t) {
|
|
947
|
+
this.isRotating || t();
|
|
948
|
+
}
|
|
949
|
+
get currentScene() {
|
|
950
|
+
return this._state.currentScene;
|
|
951
|
+
}
|
|
952
|
+
set currentScene(t) {
|
|
953
|
+
this._state.currentScene = t;
|
|
954
|
+
}
|
|
955
|
+
rotateCounterClockwise() {
|
|
956
|
+
this.unlessRotatingDo(() => {
|
|
957
|
+
this.currentScene = _t(this.currentScene);
|
|
958
|
+
});
|
|
959
|
+
}
|
|
960
|
+
rotateClockwise() {
|
|
961
|
+
this.unlessRotatingDo(() => {
|
|
962
|
+
this.currentScene = uo(this.currentScene);
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
const vo = {
|
|
967
|
+
// virtual tour default labels
|
|
968
|
+
interior: "Interiør",
|
|
969
|
+
"see-a-selection-of-the-options-in-the-project": "Se et utvalg av tilvalgsmulighetene i prosjektet.",
|
|
970
|
+
"floor-plan": "Planløsning",
|
|
971
|
+
"all-illustrations-are-indicative-deviations-may-occur": {
|
|
972
|
+
nb: "Alle illustrasjoner er veiledende. Avvik kan forekomme.",
|
|
973
|
+
en: "All illustrations are indicative. Discrepancies may exist."
|
|
974
|
+
},
|
|
975
|
+
"read-more-here": "Les mer her",
|
|
976
|
+
"i-understand": { nb: "Jeg forstår", en: "I understand" },
|
|
977
|
+
share: "Share",
|
|
978
|
+
"share-to-facebook": "Share to Facebook",
|
|
979
|
+
"share-to-linkedin": "Share to Linkedin",
|
|
980
|
+
"share-to-twitter": "Share to Twitter",
|
|
981
|
+
"share-via-email": "Share via Email",
|
|
982
|
+
"copy-link": "Copy link",
|
|
983
|
+
"virtual-view": "Virtuell Visning",
|
|
984
|
+
"slide-show": "Slide Show",
|
|
985
|
+
// building chooser default labels
|
|
986
|
+
room: "Room",
|
|
987
|
+
floor: "Floor",
|
|
988
|
+
"see-apartments": "See apartments",
|
|
989
|
+
// apartment chooser default labels
|
|
990
|
+
"see-apartment": "See apartment",
|
|
991
|
+
"click-and-drag-to-look-around": {
|
|
992
|
+
en: "Click and drag to look around",
|
|
993
|
+
nb: "Klikk og dra for å se deg rundt"
|
|
994
|
+
},
|
|
995
|
+
"click-on-the-cricles-to-move-around": {
|
|
996
|
+
en: "Click on the circles to move around",
|
|
997
|
+
nb: "Klikk på sirkelene for å gå rundt"
|
|
998
|
+
},
|
|
999
|
+
"use-the-mouse-wheel-to-zoom": {
|
|
1000
|
+
en: "Use the mouse wheel to zoom",
|
|
1001
|
+
nb: "Bruk mushjulet for å zoome"
|
|
1002
|
+
},
|
|
1003
|
+
"you-can-also-use-the-arrow-keys-to-move-around": {
|
|
1004
|
+
en: "You can also use the arrow keys to move around",
|
|
1005
|
+
nb: "Du kan også bruke pilene på tastaturet for å gå rundt"
|
|
1006
|
+
},
|
|
1007
|
+
"tap-and-drag-to-look-around": {
|
|
1008
|
+
en: "Tap and drag to look around",
|
|
1009
|
+
nb: "Trykk og dra for å se deg rundt"
|
|
1010
|
+
},
|
|
1011
|
+
"tap-on-the-circles-to-move-around": {
|
|
1012
|
+
en: "Tap on the circles to move around",
|
|
1013
|
+
nb: "Trykk på sirkelene for å gå rundt"
|
|
1014
|
+
},
|
|
1015
|
+
"use-two-fingers-to-zoom": {
|
|
1016
|
+
en: "Use two fingers to zoom",
|
|
1017
|
+
nb: "Bruk to fingre for å zoome"
|
|
1018
|
+
},
|
|
1019
|
+
"dont-show-again": { en: "Don't Show Again", nb: "Ikke vis igjen" }
|
|
1020
|
+
};
|
|
1021
|
+
class Le {
|
|
1022
|
+
constructor(t = null, e = null) {
|
|
1023
|
+
J(this, "_labels");
|
|
1024
|
+
J(this, "_language");
|
|
1025
|
+
this._labels = { ...vo, ...t || {} }, this._language = e || "en";
|
|
1026
|
+
}
|
|
1027
|
+
getLabel(t) {
|
|
1028
|
+
return t in this._labels ? this.get(this._labels[t]) : t;
|
|
1029
|
+
}
|
|
1030
|
+
get(t) {
|
|
1031
|
+
if (typeof t == "string")
|
|
1032
|
+
return t;
|
|
1033
|
+
if (this._language in t && t[this._language])
|
|
1034
|
+
return t[this._language];
|
|
1035
|
+
for (const e in t)
|
|
1036
|
+
if (t[e])
|
|
1037
|
+
return t[e];
|
|
1038
|
+
return "";
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
const mo = { key: 0 }, po = { class: "interactive-viewer" }, ho = { class: "fill-parent" }, fo = { key: 0 }, go = {
|
|
1042
|
+
key: 1,
|
|
1043
|
+
class: "navigation"
|
|
1044
|
+
}, wo = { key: 2 }, ko = 4, bo = /* @__PURE__ */ Q({
|
|
1045
|
+
__name: "VApartmentChooser",
|
|
1046
|
+
props: {
|
|
1047
|
+
i18n: {},
|
|
1048
|
+
showCards: { type: Boolean, default: !0 },
|
|
1049
|
+
build: { default: "" },
|
|
1050
|
+
buildingSceneDataResolver: {},
|
|
1051
|
+
buildingScenesByApartmentResolver: {},
|
|
1052
|
+
cdnFileResolver: {},
|
|
1053
|
+
colorCallback: { type: Function, default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) },
|
|
1054
|
+
unitCallback: { type: Function, default: (u) => u },
|
|
1055
|
+
canGoToUnitCallback: { type: Function, default: () => !0 },
|
|
1056
|
+
selectedUnitId: {},
|
|
1057
|
+
nextUnit: {},
|
|
1058
|
+
prevUnit: {},
|
|
1059
|
+
drawObserver: { default: null },
|
|
1060
|
+
interactiveDesktop: { type: Boolean, default: !0 },
|
|
1061
|
+
interactiveMobile: { type: Boolean, default: !0 },
|
|
1062
|
+
useSvg: { type: Boolean, default: !1 }
|
|
1063
|
+
},
|
|
1064
|
+
emits: ["selectUnit", "goToUnit", "navUnit", "hoverOverUnit", "hoverOutUnit", "initialized"],
|
|
1065
|
+
setup(u, { emit: t }) {
|
|
1066
|
+
const e = [0, 16, 32, 48], l = u, a = t;
|
|
1067
|
+
De(
|
|
1068
|
+
"i18n",
|
|
1069
|
+
l.i18n ? new Le(l.i18n.labels, l.i18n.language) : new Le()
|
|
1070
|
+
);
|
|
1071
|
+
const n = r({ isReady: !1, isError: !1, progress: void 0 }), s = r(null), i = r(null), k = r(null), p = r(void 0), v = r(new $e()), m = r({ x: 0, y: 0, width: 0, height: 0 }), I = r(void 0), _ = r(void 0), L = r(null), C = V(() => L.value.isHoverEnabled), E = V(() => l.unitCallback ? l.unitCallback(l.selectedUnitId) : l.selectedUnitId), D = V(() => l.useSvg ? kt : wt);
|
|
1072
|
+
qe(() => {
|
|
1073
|
+
if (l.selectedUnitId && p.value) {
|
|
1074
|
+
const c = s.value[l.selectedUnitId];
|
|
1075
|
+
c && (p.value.currentScene = c);
|
|
1076
|
+
}
|
|
1077
|
+
}), ce(async () => {
|
|
1078
|
+
let c = null;
|
|
1079
|
+
try {
|
|
1080
|
+
c = await v.value.loadJson(
|
|
1081
|
+
l.cdnFileResolver("/apartmentChooser.json")
|
|
1082
|
+
);
|
|
1083
|
+
} catch {
|
|
1084
|
+
console.info("apartmentChooser.json not found");
|
|
1085
|
+
}
|
|
1086
|
+
const f = c && c.startScene !== void 0 ? c.startScene : ko;
|
|
1087
|
+
k.value = c && c.scenes !== void 0 ? c.scenes : e, i.value = c && c.sceneData !== void 0 ? c.sceneData.map((U) => ({
|
|
1088
|
+
apartmentId: U.apartmentID,
|
|
1089
|
+
index: U.index
|
|
1090
|
+
})) : l.buildingSceneDataResolver ? await l.buildingSceneDataResolver() : [], s.value = c && c.sceneData !== void 0 ? c.sceneData.map((U) => {
|
|
1091
|
+
const $ = U.bestScene === 0 ? 4 : U.bestScene;
|
|
1092
|
+
return { unitId: U.apartmentID, scene: $ };
|
|
1093
|
+
}).reduce((U, $) => ({ ...U, [$.unitId]: $.scene }), {}) : l.buildingScenesByApartmentResolver ? await l.buildingScenesByApartmentResolver() : [];
|
|
1094
|
+
const b = (U, $ = "unitId") => {
|
|
1095
|
+
let q = f, ee = [];
|
|
1096
|
+
for (let w = 0; w < lt; w++)
|
|
1097
|
+
ee.push(q), q = _t(q);
|
|
1098
|
+
return U.sort((w, x) => {
|
|
1099
|
+
const W = ee.findIndex(
|
|
1100
|
+
(Y) => Y === s.value[w[$]]
|
|
1101
|
+
), S = ee.findIndex(
|
|
1102
|
+
(Y) => Y === s.value[x[$]]
|
|
1103
|
+
);
|
|
1104
|
+
return W < S ? -1 : W > S ? 1 : 0;
|
|
1105
|
+
}), U;
|
|
1106
|
+
}, B = (U) => {
|
|
1107
|
+
p.value = new co(U);
|
|
1108
|
+
};
|
|
1109
|
+
a("initialized", {
|
|
1110
|
+
scene: f,
|
|
1111
|
+
scenes: k.value,
|
|
1112
|
+
sceneData: i.value,
|
|
1113
|
+
scenesByApartment: s.value,
|
|
1114
|
+
unitsSceneSort: b,
|
|
1115
|
+
initialize: B
|
|
1116
|
+
});
|
|
1117
|
+
});
|
|
1118
|
+
function g(c) {
|
|
1119
|
+
m.value = c;
|
|
1120
|
+
}
|
|
1121
|
+
function A(c) {
|
|
1122
|
+
_.value = c.hoverApartment, I.value = c.closeHandler, a("hoverOverUnit", c.hoverApartment);
|
|
1123
|
+
}
|
|
1124
|
+
function R(c) {
|
|
1125
|
+
_.value = null, I.value = c.closeHandler, a("hoverOutUnit", c.hoverApartment);
|
|
1126
|
+
}
|
|
1127
|
+
return (c, f) => {
|
|
1128
|
+
const b = T("v-progress-linear");
|
|
1129
|
+
return p.value ? (h(), F("div", mo, [
|
|
1130
|
+
o("div", po, [
|
|
1131
|
+
o("div", ho, [
|
|
1132
|
+
y(Xe, {
|
|
1133
|
+
desktop: n.value.isReady && c.interactiveDesktop,
|
|
1134
|
+
mobile: n.value.isReady && c.interactiveMobile
|
|
1135
|
+
}, {
|
|
1136
|
+
default: M(() => [
|
|
1137
|
+
y(yt, {
|
|
1138
|
+
"cdn-file-resolver": c.cdnFileResolver,
|
|
1139
|
+
"view-model": p.value,
|
|
1140
|
+
"cardinal-frames": k.value,
|
|
1141
|
+
build: c.build,
|
|
1142
|
+
onProgress: f[0] || (f[0] = (B) => n.value.progress = B),
|
|
1143
|
+
onLoaded: f[1] || (f[1] = (B) => n.value.isReady = !0),
|
|
1144
|
+
onError: f[2] || (f[2] = (B) => n.value.isError = !0)
|
|
1145
|
+
}, null, 8, ["cdn-file-resolver", "view-model", "cardinal-frames", "build"]),
|
|
1146
|
+
n.value.isReady ? (h(), F("div", fo, [
|
|
1147
|
+
(h(), N(mt(D.value), {
|
|
1148
|
+
"cdn-file-resolver": c.cdnFileResolver,
|
|
1149
|
+
"view-model": p.value,
|
|
1150
|
+
"selected-unit-id": c.selectedUnitId,
|
|
1151
|
+
"scene-data": i.value,
|
|
1152
|
+
"color-callback": c.colorCallback,
|
|
1153
|
+
"unit-callback": c.unitCallback,
|
|
1154
|
+
"can-go-to-unit-callback": c.canGoToUnitCallback,
|
|
1155
|
+
"draw-observer": c.drawObserver,
|
|
1156
|
+
onSelectUnit: f[3] || (f[3] = (B) => a("selectUnit", B)),
|
|
1157
|
+
onGoToUnit: f[4] || (f[4] = (B) => a("goToUnit", B)),
|
|
1158
|
+
onHoverOver: A,
|
|
1159
|
+
onHoverOut: R,
|
|
1160
|
+
onPos: g
|
|
1161
|
+
}, {
|
|
1162
|
+
default: M((B) => [
|
|
1163
|
+
ie(c.$slots, "default", pt(ht(B)), void 0, !0)
|
|
1164
|
+
]),
|
|
1165
|
+
_: 3
|
|
1166
|
+
}, 40, ["cdn-file-resolver", "view-model", "selected-unit-id", "scene-data", "color-callback", "unit-callback", "can-go-to-unit-callback", "draw-observer"]))
|
|
1167
|
+
])) : H("", !0)
|
|
1168
|
+
]),
|
|
1169
|
+
_: 3
|
|
1170
|
+
}, 8, ["desktop", "mobile"]),
|
|
1171
|
+
_.value && c.showCards ? (h(), N(Ze, {
|
|
1172
|
+
key: 0,
|
|
1173
|
+
"is-hoverable": C.value,
|
|
1174
|
+
pos: m.value,
|
|
1175
|
+
onOutside: I.value
|
|
1176
|
+
}, {
|
|
1177
|
+
default: M(() => [
|
|
1178
|
+
ie(c.$slots, "default", {
|
|
1179
|
+
unit: _.value,
|
|
1180
|
+
canGoToUnit: c.canGoToUnitCallback(_.value),
|
|
1181
|
+
goToUnit: () => c.canGoToUnitCallback(_.value) && a("goToUnit", _.value),
|
|
1182
|
+
pos: m.value,
|
|
1183
|
+
isHoverable: C.value,
|
|
1184
|
+
close: I.value
|
|
1185
|
+
}, void 0, !0)
|
|
1186
|
+
]),
|
|
1187
|
+
_: 3
|
|
1188
|
+
}, 8, ["is-hoverable", "pos", "onOutside"])) : H("", !0),
|
|
1189
|
+
n.value.isReady ? (h(), F("div", go, [
|
|
1190
|
+
y(bt, {
|
|
1191
|
+
"can-go-to-unit-callback": c.canGoToUnitCallback,
|
|
1192
|
+
"selected-unit": E.value,
|
|
1193
|
+
"prev-unit": c.prevUnit,
|
|
1194
|
+
"next-unit": c.nextUnit,
|
|
1195
|
+
"view-model": p.value,
|
|
1196
|
+
onGoToUnit: f[5] || (f[5] = (B) => a("goToUnit", B)),
|
|
1197
|
+
onPrevUnit: f[6] || (f[6] = (B) => a("navUnit", c.prevUnit)),
|
|
1198
|
+
onNextUnit: f[7] || (f[7] = (B) => a("navUnit", c.nextUnit))
|
|
1199
|
+
}, null, 8, ["can-go-to-unit-callback", "selected-unit", "prev-unit", "next-unit", "view-model"])
|
|
1200
|
+
])) : n.value.isError ? H("", !0) : (h(), F("div", wo, [
|
|
1201
|
+
y(b, {
|
|
1202
|
+
indeterminate: !n.value.progress,
|
|
1203
|
+
value: n.value.progress
|
|
1204
|
+
}, null, 8, ["indeterminate", "value"])
|
|
1205
|
+
]))
|
|
1206
|
+
])
|
|
1207
|
+
]),
|
|
1208
|
+
y(He, {
|
|
1209
|
+
ref_key: "hoverProbe",
|
|
1210
|
+
ref: L
|
|
1211
|
+
}, null, 512)
|
|
1212
|
+
])) : H("", !0);
|
|
1213
|
+
};
|
|
1214
|
+
}
|
|
1215
|
+
}), yo = /* @__PURE__ */ te(bo, [["__scopeId", "data-v-52c91082"]]), _o = "data:image/png;base64,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", Ke = /* @__PURE__ */ Q({
|
|
1216
|
+
__name: "VNorthDirection",
|
|
1217
|
+
props: {
|
|
1218
|
+
longitude: {}
|
|
1219
|
+
},
|
|
1220
|
+
setup(u) {
|
|
1221
|
+
const t = u, e = V(() => ({
|
|
1222
|
+
transform: `rotate(${90 - (t.longitude || 0)}deg)`,
|
|
1223
|
+
transition: " transform 0.5s ease-in"
|
|
1224
|
+
}));
|
|
1225
|
+
return (l, a) => {
|
|
1226
|
+
const n = T("v-img");
|
|
1227
|
+
return h(), N(n, {
|
|
1228
|
+
src: oe(_o),
|
|
1229
|
+
style: re(e.value)
|
|
1230
|
+
}, null, 8, ["src", "style"]);
|
|
1231
|
+
};
|
|
1232
|
+
}
|
|
1233
|
+
}), Co = { class: "sunsim-bar-wrapper" }, Ao = { class: "sunsim-date d-flex align-center pl-5 pr-5" }, Lo = {
|
|
1234
|
+
key: 1,
|
|
1235
|
+
class: "text-center text-body-1"
|
|
1236
|
+
}, Io = { class: "sunsim-wrapper d-flex align-center px-3" }, Mo = { class: "sunsim-time-label text-body-1 font-weight-normal ml-2" }, So = /* @__PURE__ */ Q({
|
|
1237
|
+
__name: "VBuildingChooserSunSimControl",
|
|
1238
|
+
props: {
|
|
1239
|
+
modelValue: {},
|
|
1240
|
+
dateSelector: {},
|
|
1241
|
+
isLoading: { type: Boolean, default: !1 }
|
|
1242
|
+
},
|
|
1243
|
+
emits: ["update:modelValue"],
|
|
1244
|
+
setup(u, { emit: t }) {
|
|
1245
|
+
const e = u, l = t, a = r(e.modelValue), n = r(null);
|
|
1246
|
+
function s(v) {
|
|
1247
|
+
return v.toLocaleString("en-no", {
|
|
1248
|
+
month: "short",
|
|
1249
|
+
day: "numeric"
|
|
1250
|
+
});
|
|
1251
|
+
}
|
|
1252
|
+
const i = V(() => {
|
|
1253
|
+
const v = Math.floor(a.value / 2).toString().padStart(2, "0"), m = a.value % 2 === 0 ? "00" : "30";
|
|
1254
|
+
return `${v}:${m}`;
|
|
1255
|
+
}), k = V(() => e.dateSelector.dates.map(s)), p = V({
|
|
1256
|
+
get() {
|
|
1257
|
+
return s(e.dateSelector.selectedDate);
|
|
1258
|
+
},
|
|
1259
|
+
set(v) {
|
|
1260
|
+
e.dateSelector.selectIndex(k.value.indexOf(v));
|
|
1261
|
+
}
|
|
1262
|
+
});
|
|
1263
|
+
return Z(a, (v) => {
|
|
1264
|
+
l("update:modelValue", v);
|
|
1265
|
+
}), Z(n, (v) => {
|
|
1266
|
+
e.dateSelector.selectIndex(k.value.indexOf(v));
|
|
1267
|
+
}), Z(
|
|
1268
|
+
() => e.modelValue,
|
|
1269
|
+
(v) => {
|
|
1270
|
+
a.value = Math.floor(v);
|
|
1271
|
+
}
|
|
1272
|
+
), qe(() => {
|
|
1273
|
+
n.value = s(e.dateSelector.selectedDate);
|
|
1274
|
+
}), (v, m) => {
|
|
1275
|
+
const I = T("v-icon"), _ = T("v-select"), L = T("v-progress-linear"), C = T("v-slider");
|
|
1276
|
+
return h(), F("div", Co, [
|
|
1277
|
+
o("div", Ao, [
|
|
1278
|
+
y(I, {
|
|
1279
|
+
color: "black",
|
|
1280
|
+
class: "mr-2",
|
|
1281
|
+
icon: "mdi-calendar-blank-outline"
|
|
1282
|
+
}),
|
|
1283
|
+
v.dateSelector.hasMultipleDates ? (h(), N(_, {
|
|
1284
|
+
key: 0,
|
|
1285
|
+
modelValue: n.value,
|
|
1286
|
+
"onUpdate:modelValue": m[0] || (m[0] = (E) => n.value = E),
|
|
1287
|
+
items: k.value,
|
|
1288
|
+
density: "compact",
|
|
1289
|
+
variant: "underlined",
|
|
1290
|
+
"hide-details": "",
|
|
1291
|
+
class: "day-selector"
|
|
1292
|
+
}, null, 8, ["modelValue", "items"])) : (h(), F("span", Lo, z(p.value), 1))
|
|
1293
|
+
]),
|
|
1294
|
+
o("div", Io, [
|
|
1295
|
+
o("span", Mo, z(i.value), 1),
|
|
1296
|
+
y(I, {
|
|
1297
|
+
medium: "",
|
|
1298
|
+
class: "ml-2 mr-2 icon"
|
|
1299
|
+
}, {
|
|
1300
|
+
default: M(() => [
|
|
1301
|
+
se("mdi-white-balance-sunny")
|
|
1302
|
+
]),
|
|
1303
|
+
_: 1
|
|
1304
|
+
}),
|
|
1305
|
+
v.isLoading ? (h(), N(L, {
|
|
1306
|
+
key: 0,
|
|
1307
|
+
indeterminate: "",
|
|
1308
|
+
rounded: "",
|
|
1309
|
+
height: "6",
|
|
1310
|
+
color: "grey lighten-1",
|
|
1311
|
+
class: "mr-2"
|
|
1312
|
+
})) : (h(), N(C, {
|
|
1313
|
+
key: 1,
|
|
1314
|
+
modelValue: a.value,
|
|
1315
|
+
"onUpdate:modelValue": m[1] || (m[1] = (E) => a.value = E),
|
|
1316
|
+
min: 0,
|
|
1317
|
+
max: 47,
|
|
1318
|
+
step: 1,
|
|
1319
|
+
"thumb-label": !1,
|
|
1320
|
+
"hide-details": !0,
|
|
1321
|
+
"thumb-color": "white",
|
|
1322
|
+
"thumb-size": "25",
|
|
1323
|
+
"track-size": "7",
|
|
1324
|
+
"track-fill-color": "transparent",
|
|
1325
|
+
class: "sunsim-slider mr-1"
|
|
1326
|
+
}, null, 8, ["modelValue"]))
|
|
1327
|
+
])
|
|
1328
|
+
]);
|
|
1329
|
+
};
|
|
1330
|
+
}
|
|
1331
|
+
}), it = /* @__PURE__ */ te(So, [["__scopeId", "data-v-0d8001a3"]]), Eo = { key: 0 }, Fo = ["src"], xo = /* @__PURE__ */ Q({
|
|
1332
|
+
__name: "VBuildingChooserSceneImageStack",
|
|
1333
|
+
props: {
|
|
1334
|
+
imageUrls: {},
|
|
1335
|
+
activeIndex: {}
|
|
1336
|
+
},
|
|
1337
|
+
emits: ["resize", "ready", "preloaded", "reset"],
|
|
1338
|
+
setup(u, { emit: t }) {
|
|
1339
|
+
const e = u, l = t, a = r("init"), n = r(new tt(0)), s = r();
|
|
1340
|
+
Z(
|
|
1341
|
+
() => e.imageUrls,
|
|
1342
|
+
(p) => {
|
|
1343
|
+
l("reset"), k(p);
|
|
1344
|
+
}
|
|
1345
|
+
), ce(() => {
|
|
1346
|
+
k(e.imageUrls), new ResizeObserver((p) => {
|
|
1347
|
+
window.requestAnimationFrame(() => {
|
|
1348
|
+
const v = p[0].contentRect.width, m = p[0].contentRect.height;
|
|
1349
|
+
l("resize", { width: v, height: m });
|
|
1350
|
+
});
|
|
1351
|
+
}).observe(s.value);
|
|
1352
|
+
});
|
|
1353
|
+
function i() {
|
|
1354
|
+
a.value = "preloaded", l("preloaded");
|
|
1355
|
+
}
|
|
1356
|
+
function k(p) {
|
|
1357
|
+
a.value = "init", s.value.src = p[0], n.value = new tt(p.length).onLoadFinished(
|
|
1358
|
+
() => {
|
|
1359
|
+
a.value = "loaded", l("ready");
|
|
1360
|
+
}
|
|
1361
|
+
);
|
|
1362
|
+
}
|
|
1363
|
+
return (p, v) => (h(), F("div", null, [
|
|
1364
|
+
o("img", {
|
|
1365
|
+
ref_key: "baseImage",
|
|
1366
|
+
ref: s,
|
|
1367
|
+
class: "image-instance zero",
|
|
1368
|
+
style: { opacity: 1, borderRadius: 50 },
|
|
1369
|
+
onLoad: i
|
|
1370
|
+
}, null, 544),
|
|
1371
|
+
a.value === "preloaded" || a.value === "loaded" ? de((h(), F("div", Eo, [
|
|
1372
|
+
(h(!0), F(Ce, null, _e(p.imageUrls, (m, I) => (h(), F("img", {
|
|
1373
|
+
key: I,
|
|
1374
|
+
class: ye({ "image-instance": !0, active: I === p.activeIndex }),
|
|
1375
|
+
src: m,
|
|
1376
|
+
onLoad: v[0] || (v[0] = (_) => n.value.partLoaded())
|
|
1377
|
+
}, null, 42, Fo))), 128)),
|
|
1378
|
+
se(" Here ")
|
|
1379
|
+
], 512)), [
|
|
1380
|
+
[me, a.value === "loaded"]
|
|
1381
|
+
]) : H("", !0)
|
|
1382
|
+
]));
|
|
1383
|
+
}
|
|
1384
|
+
}), st = /* @__PURE__ */ te(xo, [["__scopeId", "data-v-1dc6128e"]]), Bo = "buildingChooser.json", Vo = 180;
|
|
1385
|
+
class Ct {
|
|
1386
|
+
constructor(t) {
|
|
1387
|
+
J(this, "_cdnFileResolver");
|
|
1388
|
+
J(this, "_resourceLoader");
|
|
1389
|
+
this._cdnFileResolver = t, this._resourceLoader = new $e();
|
|
1390
|
+
}
|
|
1391
|
+
constructFileUrl(t) {
|
|
1392
|
+
return this._cdnFileResolver ? this._cdnFileResolver(`/${t}`) : null;
|
|
1393
|
+
}
|
|
1394
|
+
loadConfigFile() {
|
|
1395
|
+
const t = this.constructFileUrl(Bo);
|
|
1396
|
+
return t ? this._resourceLoader.loadJson(t) : null;
|
|
1397
|
+
}
|
|
1398
|
+
loadBuildingMapImage(t) {
|
|
1399
|
+
const e = this.constructFileUrl(t.lookupFilename);
|
|
1400
|
+
return e ? this._resourceLoader.loadImage(e) : null;
|
|
1401
|
+
}
|
|
1402
|
+
getViewLongitude(t) {
|
|
1403
|
+
return t.cameraRotation && t.cameraRotation.y + 270;
|
|
1404
|
+
}
|
|
1405
|
+
getBuildingData(t) {
|
|
1406
|
+
const e = t ? t.buildings : [], l = e.map((n) => n.id), a = e.map((n) => ({
|
|
1407
|
+
id: n.id,
|
|
1408
|
+
url: this.constructFileUrl(n.overlayFilename)
|
|
1409
|
+
}));
|
|
1410
|
+
return { buildingIds: l, buildingOverlays: a };
|
|
1411
|
+
}
|
|
1412
|
+
getBackgroundImageData(t) {
|
|
1413
|
+
return "days" in t ? this.processMultipleDays(t.days) : [this.processTimeSamples(
|
|
1414
|
+
Vo,
|
|
1415
|
+
t.timeSamples
|
|
1416
|
+
)];
|
|
1417
|
+
}
|
|
1418
|
+
processMultipleDays(t) {
|
|
1419
|
+
return t.map(
|
|
1420
|
+
(e) => this.processTimeSamples(e.dayOfYear, e.timeSamples)
|
|
1421
|
+
);
|
|
1422
|
+
}
|
|
1423
|
+
processTimeSamples(t, e) {
|
|
1424
|
+
return {
|
|
1425
|
+
urls: e.map(
|
|
1426
|
+
(a) => this.constructFileUrl(a.filename)
|
|
1427
|
+
),
|
|
1428
|
+
referenceDate: this.makeReferenceDate(t)
|
|
1429
|
+
};
|
|
1430
|
+
}
|
|
1431
|
+
makeReferenceDate(t) {
|
|
1432
|
+
const e = /* @__PURE__ */ new Date(0);
|
|
1433
|
+
return e.setUTCDate(t), e;
|
|
1434
|
+
}
|
|
1435
|
+
async loadBuildingChooser() {
|
|
1436
|
+
try {
|
|
1437
|
+
const t = await this.loadConfigFile();
|
|
1438
|
+
if (t) {
|
|
1439
|
+
const e = await this.loadBuildingMapImage(t);
|
|
1440
|
+
if (e) {
|
|
1441
|
+
const l = this.getViewLongitude(t), { buildingIds: a, buildingOverlays: n } = this.getBuildingData(t), s = this.getBackgroundImageData(t);
|
|
1442
|
+
return {
|
|
1443
|
+
mapImage: e,
|
|
1444
|
+
viewLongitude: l,
|
|
1445
|
+
buildingIds: a,
|
|
1446
|
+
buildingOverlays: n,
|
|
1447
|
+
backgrounds: s
|
|
1448
|
+
};
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
return null;
|
|
1452
|
+
} catch {
|
|
1453
|
+
return null;
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
class Re {
|
|
1458
|
+
constructor(t) {
|
|
1459
|
+
J(this, "_buildingIds");
|
|
1460
|
+
this._buildingIds = t;
|
|
1461
|
+
}
|
|
1462
|
+
static empty() {
|
|
1463
|
+
return new Re([]);
|
|
1464
|
+
}
|
|
1465
|
+
getBuildingId(t, e, l) {
|
|
1466
|
+
const a = this._getBuildingIndex(t, e, l);
|
|
1467
|
+
if (a !== void 0)
|
|
1468
|
+
return this._buildingIds[a];
|
|
1469
|
+
}
|
|
1470
|
+
_getBuildingIndex(t, e, l) {
|
|
1471
|
+
const [a, n, s, i] = t.getPixel(e, l);
|
|
1472
|
+
if (i === 255 && a === n && n === s)
|
|
1473
|
+
return a;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
class Te {
|
|
1477
|
+
constructor(t) {
|
|
1478
|
+
J(this, "_mapImage");
|
|
1479
|
+
J(this, "_context");
|
|
1480
|
+
this._mapImage = t, this._context = null;
|
|
1481
|
+
}
|
|
1482
|
+
static empty() {
|
|
1483
|
+
return new Te(null);
|
|
1484
|
+
}
|
|
1485
|
+
update(t) {
|
|
1486
|
+
this._mapImage && (this._context = t.getContext("2d", { willReadFrequently: !0 }), this._context.drawImage(this._mapImage, 0, 0, t.width, t.height));
|
|
1487
|
+
}
|
|
1488
|
+
getPixel(t, e) {
|
|
1489
|
+
try {
|
|
1490
|
+
return this._context ? this._context.getImageData(t, e, 1, 1).data : [0, 0, 0, 0];
|
|
1491
|
+
} catch {
|
|
1492
|
+
return [0, 0, 0, 0];
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
const Uo = /* @__PURE__ */ new Date(0);
|
|
1497
|
+
class Je {
|
|
1498
|
+
constructor(t) {
|
|
1499
|
+
J(this, "_imagesByDay");
|
|
1500
|
+
J(this, "_state");
|
|
1501
|
+
this._imagesByDay = t, this._state = { selectedIndex: 0 };
|
|
1502
|
+
}
|
|
1503
|
+
static empty() {
|
|
1504
|
+
return new Je([{ referenceDate: Uo, urls: [] }]);
|
|
1505
|
+
}
|
|
1506
|
+
selectIndex(t) {
|
|
1507
|
+
t < this._imagesByDay.length && (this._state.selectedIndex = t);
|
|
1508
|
+
}
|
|
1509
|
+
get dates() {
|
|
1510
|
+
return this._imagesByDay.map((t) => t.referenceDate);
|
|
1511
|
+
}
|
|
1512
|
+
get hasMultipleDates() {
|
|
1513
|
+
return this._imagesByDay.length > 1;
|
|
1514
|
+
}
|
|
1515
|
+
get selectedIndex() {
|
|
1516
|
+
return this._state.selectedIndex;
|
|
1517
|
+
}
|
|
1518
|
+
get selectedDate() {
|
|
1519
|
+
return this._imagesByDay[this.selectedIndex].referenceDate;
|
|
1520
|
+
}
|
|
1521
|
+
get imageUrls() {
|
|
1522
|
+
return this._imagesByDay[this.selectedIndex].urls;
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
const Do = {
|
|
1526
|
+
key: 0,
|
|
1527
|
+
style: { height: "50vh" },
|
|
1528
|
+
class: "d-flex justify-center align-center blue-grey lighten-5"
|
|
1529
|
+
}, Ro = { class: "image-instances" }, To = { key: 0 }, Oo = { class: "svg-container" }, $o = ["viewBox"], Ho = ["innerHTML", "data-building-id", "onMouseover", "onMouseout", "onMousemove", "onClick"], jo = ["innerHTML"], Po = /* @__PURE__ */ Q({
|
|
1530
|
+
__name: "VBuildingChooserSvg",
|
|
1531
|
+
props: {
|
|
1532
|
+
showCards: { type: Boolean, default: !0 },
|
|
1533
|
+
colorCallback: { type: Function, default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) },
|
|
1534
|
+
buildingCallback: { type: Function, default: (u) => u },
|
|
1535
|
+
canGoToBuildingCallback: { type: Function, default: () => !0 },
|
|
1536
|
+
buildingChooserTimeOfDay: {},
|
|
1537
|
+
cdnFileResolver: {},
|
|
1538
|
+
i18n: {},
|
|
1539
|
+
interactiveDesktop: { type: Boolean, default: !0 },
|
|
1540
|
+
interactiveMobile: { type: Boolean, default: !0 },
|
|
1541
|
+
customOverlayContent: {}
|
|
1542
|
+
},
|
|
1543
|
+
emits: ["goToBuilding", "hoverOverBuilding", "hoverOutBuilding"],
|
|
1544
|
+
setup(u, { emit: t }) {
|
|
1545
|
+
const e = u, l = t;
|
|
1546
|
+
De(
|
|
1547
|
+
"i18n",
|
|
1548
|
+
e.i18n ? new Le(e.i18n.labels, e.i18n.language) : new Le()
|
|
1549
|
+
);
|
|
1550
|
+
const a = r({ preloaded: !1, ready: !1 }), n = r({ width: 0, height: 0 }), s = r({ x: 0, y: 0, width: 0, height: 0 }), i = r(), k = r(
|
|
1551
|
+
(/* @__PURE__ */ new Date()).getHours() * 2 + ((/* @__PURE__ */ new Date()).getMinutes() < 30 ? 0 : 1)
|
|
1552
|
+
), p = r(!1), v = r(new $e()), m = r(), I = r("0 0 0 0"), _ = r({}), L = r(), C = r(Re.empty()), E = r(Te.empty()), D = r(), g = V(() => {
|
|
1553
|
+
var w;
|
|
1554
|
+
return (w = D.value) == null ? void 0 : w.isHoverEnabled;
|
|
1555
|
+
}), A = V(() => f(i.value));
|
|
1556
|
+
Z(i, (w, x) => {
|
|
1557
|
+
w ? l("hoverOverBuilding", f(w)) : l("hoverOutBuilding", f(x));
|
|
1558
|
+
}), qe(() => {
|
|
1559
|
+
if (e.buildingChooserTimeOfDay) {
|
|
1560
|
+
const [w, x, W] = /^(\d\d):(\d\d)$/.exec(
|
|
1561
|
+
e.buildingChooserTimeOfDay
|
|
1562
|
+
), S = parseInt(W);
|
|
1563
|
+
k.value = parseInt(x) * 2 + (S < 15 ? 0 : S > 45 ? 2 : 1);
|
|
1564
|
+
}
|
|
1565
|
+
}), ce(async () => {
|
|
1566
|
+
const x = await new Ct(
|
|
1567
|
+
e.cdnFileResolver
|
|
1568
|
+
).loadBuildingChooser();
|
|
1569
|
+
if (x) {
|
|
1570
|
+
E.value = new Te(x.mapImage), C.value = new Re(x.buildingIds), _.value = new Je(x.backgrounds), L.value = {
|
|
1571
|
+
buildingOverlays: x.buildingOverlays,
|
|
1572
|
+
sceneLongitude: x.viewLongitude
|
|
1573
|
+
};
|
|
1574
|
+
const W = [];
|
|
1575
|
+
for (let { id: S, url: Y } of x.buildingOverlays)
|
|
1576
|
+
v.value.loadJson(Y.replace(".png", ".svg")).then((X) => {
|
|
1577
|
+
const ne = new DOMParser().parseFromString(X, "image/svg+xml").getElementsByTagName("svg")[0];
|
|
1578
|
+
I.value = ne.getAttribute("viewBox"), W.push({
|
|
1579
|
+
id: S,
|
|
1580
|
+
svg: ne.innerHTML
|
|
1581
|
+
});
|
|
1582
|
+
});
|
|
1583
|
+
m.value = W;
|
|
1584
|
+
} else
|
|
1585
|
+
p.value = !0;
|
|
1586
|
+
});
|
|
1587
|
+
function R({ width: w, height: x }) {
|
|
1588
|
+
n.value.width = w, n.value.height = x;
|
|
1589
|
+
}
|
|
1590
|
+
function c() {
|
|
1591
|
+
a.value = { preloaded: !1, ready: !1 };
|
|
1592
|
+
}
|
|
1593
|
+
function f(w) {
|
|
1594
|
+
return e.buildingCallback ? e.buildingCallback(w) : w;
|
|
1595
|
+
}
|
|
1596
|
+
function b(w) {
|
|
1597
|
+
const x = f(w), W = e.colorCallback(
|
|
1598
|
+
x,
|
|
1599
|
+
w === i.value ? "hover" : "idle"
|
|
1600
|
+
), S = [];
|
|
1601
|
+
return w === i.value ? S.push("hover") : S.push("idle"), W && e.canGoToBuildingCallback(x) ? S.push("clickable") : S.push("restricted"), S.join(" ");
|
|
1602
|
+
}
|
|
1603
|
+
function B(w) {
|
|
1604
|
+
const x = f(w), W = e.colorCallback(
|
|
1605
|
+
x,
|
|
1606
|
+
w === i.value ? "hover" : "idle"
|
|
1607
|
+
);
|
|
1608
|
+
if (W) {
|
|
1609
|
+
const { r: S, g: Y, b: X, a: K, s: ne } = W;
|
|
1610
|
+
return {
|
|
1611
|
+
strokeWidth: ne !== void 0 ? ne : 2,
|
|
1612
|
+
stroke: `rgb(${S}, ${Y}, ${X})`,
|
|
1613
|
+
strokeOpacity: 1,
|
|
1614
|
+
fill: `rgb(${S}, ${Y}, ${X})`,
|
|
1615
|
+
fillOpacity: K / 255,
|
|
1616
|
+
cursor: `${e.canGoToBuildingCallback(x) ? "cursor" : "default"} !important`
|
|
1617
|
+
};
|
|
1618
|
+
} else
|
|
1619
|
+
return {
|
|
1620
|
+
strokeWidth: 0,
|
|
1621
|
+
stroke: "white",
|
|
1622
|
+
strokeOpacity: 0,
|
|
1623
|
+
fill: "white",
|
|
1624
|
+
fillOpacity: 0,
|
|
1625
|
+
cursor: "default !important"
|
|
1626
|
+
};
|
|
1627
|
+
}
|
|
1628
|
+
function U(w, x) {
|
|
1629
|
+
g.value && (s.value = {
|
|
1630
|
+
x: w.layerX,
|
|
1631
|
+
y: w.layerY,
|
|
1632
|
+
width: n.value.width,
|
|
1633
|
+
height: n.value.height
|
|
1634
|
+
}, i.value = x, l("hoverOverBuilding", f(x)));
|
|
1635
|
+
}
|
|
1636
|
+
function $(w, x) {
|
|
1637
|
+
g.value && (s.value = {
|
|
1638
|
+
x: w.layerX,
|
|
1639
|
+
y: w.layerY,
|
|
1640
|
+
width: n.value.width,
|
|
1641
|
+
height: n.value.height
|
|
1642
|
+
}, i.value = void 0, l("hoverOutBuilding", f(x)));
|
|
1643
|
+
}
|
|
1644
|
+
function q(w, x) {
|
|
1645
|
+
g.value && (s.value = {
|
|
1646
|
+
x: w.layerX,
|
|
1647
|
+
y: w.layerY,
|
|
1648
|
+
width: n.value.width,
|
|
1649
|
+
height: n.value.height
|
|
1650
|
+
});
|
|
1651
|
+
}
|
|
1652
|
+
function ee(w) {
|
|
1653
|
+
i.value = w, g.value && A.value && e.canGoToBuildingCallback(A.value) && l("goToBuilding", A.value);
|
|
1654
|
+
}
|
|
1655
|
+
return (w, x) => {
|
|
1656
|
+
const W = T("v-icon");
|
|
1657
|
+
return p.value ? (h(), F("div", Do, [
|
|
1658
|
+
y(W, { "x-large": "" }, {
|
|
1659
|
+
default: M(() => [
|
|
1660
|
+
se("mdi-alert-circle-outline")
|
|
1661
|
+
]),
|
|
1662
|
+
_: 1
|
|
1663
|
+
})
|
|
1664
|
+
])) : L.value ? (h(), F("div", {
|
|
1665
|
+
key: 1,
|
|
1666
|
+
style: re(`height: ${n.value.height}px; position: relative`),
|
|
1667
|
+
class: "image-container"
|
|
1668
|
+
}, [
|
|
1669
|
+
y(Xe, {
|
|
1670
|
+
desktop: w.interactiveDesktop,
|
|
1671
|
+
mobile: w.interactiveMobile
|
|
1672
|
+
}, {
|
|
1673
|
+
default: M(() => [
|
|
1674
|
+
o("div", Ro, [
|
|
1675
|
+
y(st, {
|
|
1676
|
+
"image-urls": _.value.imageUrls,
|
|
1677
|
+
"active-index": k.value,
|
|
1678
|
+
onResize: R,
|
|
1679
|
+
onPreloaded: x[0] || (x[0] = (S) => a.value.preloaded = !0),
|
|
1680
|
+
onReady: x[1] || (x[1] = (S) => a.value.ready = !0),
|
|
1681
|
+
onReset: c
|
|
1682
|
+
}, null, 8, ["image-urls", "active-index"]),
|
|
1683
|
+
m.value ? de((h(), F("div", To, [
|
|
1684
|
+
o("div", Oo, [
|
|
1685
|
+
(h(), F("svg", { viewBox: I.value }, [
|
|
1686
|
+
(h(!0), F(Ce, null, _e(m.value, ({ id: S, svg: Y }, X) => (h(), F("g", {
|
|
1687
|
+
key: X,
|
|
1688
|
+
innerHTML: Y,
|
|
1689
|
+
"data-building-id": S,
|
|
1690
|
+
class: ye(b(S)),
|
|
1691
|
+
style: re(B(S)),
|
|
1692
|
+
onMouseover: (K) => U(K, S),
|
|
1693
|
+
onMouseout: (K) => $(K, S),
|
|
1694
|
+
onMousemove: (K) => q(K),
|
|
1695
|
+
onClick: (K) => ee(S)
|
|
1696
|
+
}, null, 46, Ho))), 128))
|
|
1697
|
+
], 8, $o))
|
|
1698
|
+
])
|
|
1699
|
+
], 512)), [
|
|
1700
|
+
[me, a.value.preloaded]
|
|
1701
|
+
]) : H("", !0),
|
|
1702
|
+
de(o("div", {
|
|
1703
|
+
class: "custom-overlay-layer",
|
|
1704
|
+
innerHTML: w.customOverlayContent
|
|
1705
|
+
}, null, 8, jo), [
|
|
1706
|
+
[me, a.value.preloaded]
|
|
1707
|
+
])
|
|
1708
|
+
])
|
|
1709
|
+
]),
|
|
1710
|
+
_: 1
|
|
1711
|
+
}, 8, ["desktop", "mobile"]),
|
|
1712
|
+
de(o("div", null, [
|
|
1713
|
+
L.value.sceneLongitude ? (h(), N(Ke, {
|
|
1714
|
+
key: 0,
|
|
1715
|
+
class: "north-indicator",
|
|
1716
|
+
longitude: L.value.sceneLongitude
|
|
1717
|
+
}, null, 8, ["longitude"])) : H("", !0),
|
|
1718
|
+
y(it, {
|
|
1719
|
+
modelValue: k.value,
|
|
1720
|
+
"onUpdate:modelValue": x[2] || (x[2] = (S) => k.value = S),
|
|
1721
|
+
"date-selector": _.value,
|
|
1722
|
+
"is-loading": !a.value.ready
|
|
1723
|
+
}, null, 8, ["modelValue", "date-selector", "is-loading"])
|
|
1724
|
+
], 512), [
|
|
1725
|
+
[me, a.value.preloaded]
|
|
1726
|
+
]),
|
|
1727
|
+
w.showCards && A.value ? (h(), N(Ze, {
|
|
1728
|
+
key: 0,
|
|
1729
|
+
"is-hoverable": g.value,
|
|
1730
|
+
pos: s.value,
|
|
1731
|
+
onOutside: x[3] || (x[3] = () => i.value = void 0)
|
|
1732
|
+
}, {
|
|
1733
|
+
default: M(() => [
|
|
1734
|
+
ie(w.$slots, "default", {
|
|
1735
|
+
building: A.value,
|
|
1736
|
+
canGoToBuilding: w.canGoToBuildingCallback(A.value),
|
|
1737
|
+
goToBuilding: () => w.canGoToBuildingCallback(A.value) && l("goToBuilding", A.value),
|
|
1738
|
+
pos: s.value,
|
|
1739
|
+
isHoverable: g.value,
|
|
1740
|
+
close: () => i.value = void 0
|
|
1741
|
+
}, void 0, !0)
|
|
1742
|
+
]),
|
|
1743
|
+
_: 3
|
|
1744
|
+
}, 8, ["is-hoverable", "pos"])) : H("", !0),
|
|
1745
|
+
y(He, {
|
|
1746
|
+
ref_key: "hoverProbe",
|
|
1747
|
+
ref: D
|
|
1748
|
+
}, null, 512)
|
|
1749
|
+
], 4)) : H("", !0);
|
|
1750
|
+
};
|
|
1751
|
+
}
|
|
1752
|
+
}), At = /* @__PURE__ */ te(Po, [["__scopeId", "data-v-6103fad2"]]), No = /* @__PURE__ */ Q({
|
|
1753
|
+
__name: "VBuildingChooserRasterOverlay",
|
|
1754
|
+
props: {
|
|
1755
|
+
imageUrl: {},
|
|
1756
|
+
dimensions: {},
|
|
1757
|
+
color: { default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) }
|
|
1758
|
+
},
|
|
1759
|
+
setup(u) {
|
|
1760
|
+
const t = u, e = r(!1), l = r(void 0), a = r(new $e()), n = r(void 0), s = r(void 0), i = r([]), k = r();
|
|
1761
|
+
Z(
|
|
1762
|
+
() => t.color,
|
|
1763
|
+
(I, _) => {
|
|
1764
|
+
(I.r !== _.r || I.g !== _.g || I.b !== _.b || I.a !== _.a) && v();
|
|
1765
|
+
}
|
|
1766
|
+
), ce(async () => {
|
|
1767
|
+
l.value = await a.value.loadImage(t.imageUrl), p();
|
|
1768
|
+
});
|
|
1769
|
+
function p() {
|
|
1770
|
+
if (!l.value || !k.value)
|
|
1771
|
+
return;
|
|
1772
|
+
const { width: I, height: _ } = t.dimensions;
|
|
1773
|
+
if (!(I === 0 || _ === 0)) {
|
|
1774
|
+
n.value = k.value.getContext("2d", {
|
|
1775
|
+
willReadFrequently: !0
|
|
1776
|
+
}), n.value.drawImage(l.value, 0, 0, I, _), s.value = n.value.getImageData(0, 0, I, _);
|
|
1777
|
+
for (let L = 3; L < s.value.data.length; L += 4)
|
|
1778
|
+
s.value.data[L] !== 0 && i.value.push(L);
|
|
1779
|
+
v(), e.value = !0;
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
function v() {
|
|
1783
|
+
n.value && s.value && (m(), n.value.putImageData(s.value, 0, 0));
|
|
1784
|
+
}
|
|
1785
|
+
function m() {
|
|
1786
|
+
if (t.color)
|
|
1787
|
+
for (let I = 0; I < i.value.length; I++)
|
|
1788
|
+
s.value.data[i.value[I] - 3] = t.color.r, s.value.data[i.value[I] - 2] = t.color.g, s.value.data[i.value[I] - 1] = t.color.b, s.value.data[i.value[I]] = t.color.a;
|
|
1789
|
+
}
|
|
1790
|
+
return (I, _) => (h(), F("canvas", be({
|
|
1791
|
+
ref_key: "canvas",
|
|
1792
|
+
ref: k,
|
|
1793
|
+
class: "overlay"
|
|
1794
|
+
}, I.dimensions), null, 16));
|
|
1795
|
+
}
|
|
1796
|
+
}), Lt = /* @__PURE__ */ te(No, [["__scopeId", "data-v-b6fc0f96"]]), Yo = {
|
|
1797
|
+
key: 0,
|
|
1798
|
+
style: { height: "50vh" },
|
|
1799
|
+
class: "d-flex justify-center align-center blue-grey lighten-5"
|
|
1800
|
+
}, Wo = { class: "image-instances" }, Go = ["innerHTML"], Qo = /* @__PURE__ */ Q({
|
|
1801
|
+
__name: "VBuildingChooserRaster",
|
|
1802
|
+
props: {
|
|
1803
|
+
showCards: { type: Boolean, default: !0 },
|
|
1804
|
+
colorCallback: { type: Function, default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) },
|
|
1805
|
+
buildingCallback: { type: Function, default: (u) => u },
|
|
1806
|
+
canGoToBuildingCallback: { type: Function, default: () => !0 },
|
|
1807
|
+
buildingChooserTimeOfDay: {},
|
|
1808
|
+
cdnFileResolver: {},
|
|
1809
|
+
i18n: {},
|
|
1810
|
+
interactiveDesktop: { type: Boolean, default: !0 },
|
|
1811
|
+
interactiveMobile: { type: Boolean, default: !0 },
|
|
1812
|
+
customOverlayContent: {}
|
|
1813
|
+
},
|
|
1814
|
+
emits: ["goToBuilding", "hoverOverBuilding", "hoverOutBuilding"],
|
|
1815
|
+
setup(u, { emit: t }) {
|
|
1816
|
+
const e = u, l = t;
|
|
1817
|
+
De(
|
|
1818
|
+
"i18n",
|
|
1819
|
+
e.i18n ? new Le(e.i18n.labels, e.i18n.language) : new Le()
|
|
1820
|
+
);
|
|
1821
|
+
const a = r({}), n = r({ preloaded: !1, ready: !1 }), s = r({ width: 0, height: 0 }), i = r({ x: 0, y: 0, width: 0, height: 0 }), k = r(void 0), p = r(Re.empty()), v = r(Te.empty()), m = r(void 0), I = r(
|
|
1822
|
+
(/* @__PURE__ */ new Date()).getHours() * 2 + ((/* @__PURE__ */ new Date()).getMinutes() < 30 ? 0 : 1)
|
|
1823
|
+
), _ = r((w, x) => ({ x: w, y: x })), L = r(!1), C = r(), E = r(), D = r(), g = V(() => {
|
|
1824
|
+
var w;
|
|
1825
|
+
return (w = C.value) == null ? void 0 : w.isHoverEnabled;
|
|
1826
|
+
}), A = V(
|
|
1827
|
+
() => f(m.value)
|
|
1828
|
+
);
|
|
1829
|
+
qe(() => {
|
|
1830
|
+
if (e.buildingChooserTimeOfDay) {
|
|
1831
|
+
const [w, x, W] = /^(\d\d):(\d\d)$/.exec(
|
|
1832
|
+
e.buildingChooserTimeOfDay
|
|
1833
|
+
), S = parseInt(W);
|
|
1834
|
+
I.value = parseInt(x) * 2 + (S < 15 ? 0 : S > 45 ? 2 : 1);
|
|
1835
|
+
}
|
|
1836
|
+
}), Z(m, (w, x) => {
|
|
1837
|
+
w ? l("hoverOverBuilding", f(w)) : l("hoverOutBuilding", f(x));
|
|
1838
|
+
}), ce(async () => {
|
|
1839
|
+
const x = await new Ct(
|
|
1840
|
+
e.cdnFileResolver
|
|
1841
|
+
).loadBuildingChooser();
|
|
1842
|
+
x ? (v.value = new Te(x.mapImage), p.value = new Re(x.buildingIds), a.value = new Je(x.backgrounds), k.value = {
|
|
1843
|
+
buildingOverlays: x.buildingOverlays,
|
|
1844
|
+
sceneLongitude: x.viewLongitude
|
|
1845
|
+
}, B()) : L.value = !0;
|
|
1846
|
+
});
|
|
1847
|
+
function R({ width: w, height: x }) {
|
|
1848
|
+
s.value.width = w, s.value.height = x, Tt(B);
|
|
1849
|
+
}
|
|
1850
|
+
function c() {
|
|
1851
|
+
n.value = { preloaded: !1, ready: !1 };
|
|
1852
|
+
}
|
|
1853
|
+
function f(w) {
|
|
1854
|
+
return e.buildingCallback ? e.buildingCallback(w) : w;
|
|
1855
|
+
}
|
|
1856
|
+
function b(w) {
|
|
1857
|
+
const { x, y: W } = _.value(w.layerX, w.layerY);
|
|
1858
|
+
return p.value.getBuildingId(v.value, x, W);
|
|
1859
|
+
}
|
|
1860
|
+
function B() {
|
|
1861
|
+
if (E.value && (v.value.update(E.value), D.value))
|
|
1862
|
+
for (const w of D.value)
|
|
1863
|
+
w.setupDraw();
|
|
1864
|
+
}
|
|
1865
|
+
function U(w) {
|
|
1866
|
+
g.value && (m.value = b(w), m.value !== void 0 && (i.value = {
|
|
1867
|
+
x: w.layerX,
|
|
1868
|
+
y: w.layerY,
|
|
1869
|
+
width: s.value.width,
|
|
1870
|
+
height: s.value.height
|
|
1871
|
+
}));
|
|
1872
|
+
}
|
|
1873
|
+
function $(w) {
|
|
1874
|
+
m.value = b(w), g.value && A.value && l("goToBuilding", A.value);
|
|
1875
|
+
}
|
|
1876
|
+
function q(w) {
|
|
1877
|
+
return e.colorCallback(
|
|
1878
|
+
f(w),
|
|
1879
|
+
w === m.value ? "hover" : "idle"
|
|
1880
|
+
);
|
|
1881
|
+
}
|
|
1882
|
+
function ee({ resolve: w }) {
|
|
1883
|
+
_.value = w;
|
|
1884
|
+
}
|
|
1885
|
+
return (w, x) => {
|
|
1886
|
+
const W = T("v-icon");
|
|
1887
|
+
return L.value ? (h(), F("div", Yo, [
|
|
1888
|
+
y(W, { "x-large": "" }, {
|
|
1889
|
+
default: M(() => [
|
|
1890
|
+
se("mdi-alert-circle-outline")
|
|
1891
|
+
]),
|
|
1892
|
+
_: 1
|
|
1893
|
+
})
|
|
1894
|
+
])) : k.value ? (h(), F("div", {
|
|
1895
|
+
key: 1,
|
|
1896
|
+
style: re(`cursor: ${m.value ? "pointer" : "auto"};height: ${s.value.height}px; position: relative`),
|
|
1897
|
+
class: "image-container"
|
|
1898
|
+
}, [
|
|
1899
|
+
y(Xe, {
|
|
1900
|
+
desktop: w.interactiveDesktop,
|
|
1901
|
+
mobile: w.interactiveMobile,
|
|
1902
|
+
onUpdate: ee
|
|
1903
|
+
}, {
|
|
1904
|
+
default: M(() => [
|
|
1905
|
+
o("div", Wo, [
|
|
1906
|
+
y(st, {
|
|
1907
|
+
"image-urls": a.value.imageUrls,
|
|
1908
|
+
"active-index": I.value,
|
|
1909
|
+
onResize: R,
|
|
1910
|
+
onPreloaded: x[0] || (x[0] = (S) => n.value.preloaded = !0),
|
|
1911
|
+
onReady: x[1] || (x[1] = (S) => n.value.ready = !0),
|
|
1912
|
+
onReset: c
|
|
1913
|
+
}, null, 8, ["image-urls", "active-index"]),
|
|
1914
|
+
de(o("div", null, [
|
|
1915
|
+
(h(!0), F(Ce, null, _e(k.value.buildingOverlays, (S) => (h(), N(Lt, {
|
|
1916
|
+
ref_for: !0,
|
|
1917
|
+
ref_key: "overlays",
|
|
1918
|
+
ref: D,
|
|
1919
|
+
key: S.id,
|
|
1920
|
+
"image-url": S.url,
|
|
1921
|
+
dimensions: s.value,
|
|
1922
|
+
color: q(S.id)
|
|
1923
|
+
}, null, 8, ["image-url", "dimensions", "color"]))), 128))
|
|
1924
|
+
], 512), [
|
|
1925
|
+
[me, n.value.preloaded]
|
|
1926
|
+
])
|
|
1927
|
+
]),
|
|
1928
|
+
o("canvas", be(s.value, {
|
|
1929
|
+
ref_key: "canvas",
|
|
1930
|
+
ref: E,
|
|
1931
|
+
class: { hover: !!m.value },
|
|
1932
|
+
onClick: $,
|
|
1933
|
+
onMousemove: U
|
|
1934
|
+
}), null, 16),
|
|
1935
|
+
de(o("div", {
|
|
1936
|
+
class: "custom-overlay-layer",
|
|
1937
|
+
innerHTML: w.customOverlayContent
|
|
1938
|
+
}, null, 8, Go), [
|
|
1939
|
+
[me, n.value.preloaded]
|
|
1940
|
+
])
|
|
1941
|
+
]),
|
|
1942
|
+
_: 1
|
|
1943
|
+
}, 8, ["desktop", "mobile"]),
|
|
1944
|
+
de(o("div", null, [
|
|
1945
|
+
k.value.sceneLongitude ? (h(), N(Ke, {
|
|
1946
|
+
key: 0,
|
|
1947
|
+
class: "north-indicator",
|
|
1948
|
+
longitude: k.value.sceneLongitude
|
|
1949
|
+
}, null, 8, ["longitude"])) : H("", !0),
|
|
1950
|
+
y(it, {
|
|
1951
|
+
modelValue: I.value,
|
|
1952
|
+
"onUpdate:modelValue": x[2] || (x[2] = (S) => I.value = S),
|
|
1953
|
+
"date-selector": a.value,
|
|
1954
|
+
"is-loading": !n.value.ready
|
|
1955
|
+
}, null, 8, ["modelValue", "date-selector", "is-loading"])
|
|
1956
|
+
], 512), [
|
|
1957
|
+
[me, n.value.preloaded]
|
|
1958
|
+
]),
|
|
1959
|
+
w.showCards && A.value ? (h(), N(Ze, {
|
|
1960
|
+
key: 0,
|
|
1961
|
+
"is-hoverable": g.value,
|
|
1962
|
+
pos: i.value,
|
|
1963
|
+
onOutside: x[3] || (x[3] = () => m.value = void 0)
|
|
1964
|
+
}, {
|
|
1965
|
+
default: M(() => [
|
|
1966
|
+
ie(w.$slots, "default", {
|
|
1967
|
+
building: A.value,
|
|
1968
|
+
canGoToBuilding: w.canGoToBuildingCallback(A.value),
|
|
1969
|
+
goToBuilding: () => w.canGoToBuildingCallback(A.value) && l("goToBuilding", A.value),
|
|
1970
|
+
pos: i.value,
|
|
1971
|
+
isHoverable: g.value,
|
|
1972
|
+
close: () => m.value = void 0
|
|
1973
|
+
}, void 0, !0)
|
|
1974
|
+
]),
|
|
1975
|
+
_: 3
|
|
1976
|
+
}, 8, ["is-hoverable", "pos"])) : H("", !0),
|
|
1977
|
+
y(He, {
|
|
1978
|
+
ref_key: "hoverProbe",
|
|
1979
|
+
ref: C
|
|
1980
|
+
}, null, 512)
|
|
1981
|
+
], 4)) : H("", !0);
|
|
1982
|
+
};
|
|
1983
|
+
}
|
|
1984
|
+
}), It = /* @__PURE__ */ te(Qo, [["__scopeId", "data-v-96bbdc16"]]), zo = /* @__PURE__ */ Q({
|
|
1985
|
+
__name: "VBuildingChooser",
|
|
1986
|
+
props: {
|
|
1987
|
+
showCards: { type: Boolean, default: !0 },
|
|
1988
|
+
colorCallback: { type: Function, default: () => ({ r: 108, g: 0, b: 108, a: 144, s: 2 }) },
|
|
1989
|
+
buildingCallback: { type: Function, default: (u) => u },
|
|
1990
|
+
cdnFileResolver: {},
|
|
1991
|
+
i18n: {},
|
|
1992
|
+
interactiveDesktop: { type: Boolean, default: !0 },
|
|
1993
|
+
interactiveMobile: { type: Boolean, default: !0 },
|
|
1994
|
+
useSvg: { type: Boolean, default: !1 },
|
|
1995
|
+
buildingChooserTimeOfDay: {},
|
|
1996
|
+
canGoToBuildingCallback: { type: Function, default: () => !0 },
|
|
1997
|
+
customOverlayContent: {}
|
|
1998
|
+
},
|
|
1999
|
+
emits: ["goToBuilding", "hoverOverBuilding", "hoverOutBuilding"],
|
|
2000
|
+
setup(u, { emit: t }) {
|
|
2001
|
+
const e = u, l = t, a = V(
|
|
2002
|
+
() => e.useSvg ? At : It
|
|
2003
|
+
);
|
|
2004
|
+
return (n, s) => (h(), N(mt(a.value), {
|
|
2005
|
+
"show-cards": n.showCards,
|
|
2006
|
+
"color-callback": n.colorCallback,
|
|
2007
|
+
"building-callback": n.buildingCallback,
|
|
2008
|
+
"cdn-file-resolver": n.cdnFileResolver,
|
|
2009
|
+
i18n: n.i18n,
|
|
2010
|
+
"interactive-desktop": n.interactiveDesktop,
|
|
2011
|
+
"interactive-mobile": n.interactiveMobile,
|
|
2012
|
+
"building-chooser-time-of-day": n.buildingChooserTimeOfDay,
|
|
2013
|
+
"can-go-to-building-callback": n.canGoToBuildingCallback,
|
|
2014
|
+
"custom-overlay-content": n.customOverlayContent,
|
|
2015
|
+
onGoToBuilding: s[0] || (s[0] = (i) => l("goToBuilding", i)),
|
|
2016
|
+
onHoverOverBuilding: s[1] || (s[1] = (i) => l("hoverOverBuilding", i)),
|
|
2017
|
+
onHoverOutBuilding: s[2] || (s[2] = (i) => l("hoverOutBuilding", i))
|
|
2018
|
+
}, Ot({ _: 2 }, [
|
|
2019
|
+
_e(Object.keys(n.$slots), (i) => ({
|
|
2020
|
+
name: i,
|
|
2021
|
+
fn: M((k) => [
|
|
2022
|
+
ie(n.$slots, i, pt(ht(k)))
|
|
2023
|
+
])
|
|
2024
|
+
}))
|
|
2025
|
+
]), 1064, ["show-cards", "color-callback", "building-callback", "cdn-file-resolver", "i18n", "interactive-desktop", "interactive-mobile", "building-chooser-time-of-day", "can-go-to-building-callback", "custom-overlay-content"]));
|
|
2026
|
+
}
|
|
2027
|
+
});
|
|
2028
|
+
var je = {};
|
|
2029
|
+
Object.defineProperty(je, "__esModule", {
|
|
2030
|
+
value: !0
|
|
2031
|
+
});
|
|
2032
|
+
var qo = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(u) {
|
|
2033
|
+
return typeof u;
|
|
2034
|
+
} : function(u) {
|
|
2035
|
+
return u && typeof Symbol == "function" && u.constructor === Symbol && u !== Symbol.prototype ? "symbol" : typeof u;
|
|
2036
|
+
}, Zo = typeof window < "u" && typeof window.document < "u", Xo = typeof process < "u" && process.versions != null && process.versions.node != null, Ko = (typeof self > "u" ? "undefined" : qo(self)) === "object" && self.constructor && self.constructor.name === "DedicatedWorkerGlobalScope", Jo = typeof window < "u" && window.name === "nodejs" || typeof navigator < "u" && (navigator.userAgent.includes("Node.js") || navigator.userAgent.includes("jsdom")), en = typeof Deno < "u" && typeof Deno.version < "u" && typeof Deno.version.deno < "u", tn = je.isBrowser = Zo;
|
|
2037
|
+
je.isWebWorker = Ko;
|
|
2038
|
+
je.isNode = Xo;
|
|
2039
|
+
je.isJsDom = Jo;
|
|
2040
|
+
je.isDeno = en;
|
|
2041
|
+
const on = { id: "player-wrapper" }, nn = { id: "player-sizer" }, an = {
|
|
2042
|
+
class: "player-control",
|
|
2043
|
+
id: "controls-top-left"
|
|
2044
|
+
}, ln = {
|
|
2045
|
+
class: "player-control",
|
|
2046
|
+
id: "controls-top-center"
|
|
2047
|
+
}, sn = {
|
|
2048
|
+
class: "player-control",
|
|
2049
|
+
id: "controls-top-right"
|
|
2050
|
+
}, rn = {
|
|
2051
|
+
class: "player-control",
|
|
2052
|
+
id: "controls-center-left"
|
|
2053
|
+
}, un = {
|
|
2054
|
+
class: "player-control",
|
|
2055
|
+
id: "controls-center-center"
|
|
2056
|
+
}, cn = {
|
|
2057
|
+
class: "player-control",
|
|
2058
|
+
id: "controls-center-right"
|
|
2059
|
+
}, dn = {
|
|
2060
|
+
class: "player-control",
|
|
2061
|
+
id: "controls-bottom-left"
|
|
2062
|
+
}, vn = {
|
|
2063
|
+
class: "player-control",
|
|
2064
|
+
id: "controls-bottom-center"
|
|
2065
|
+
}, mn = {
|
|
2066
|
+
class: "player-control",
|
|
2067
|
+
id: "controls-bottom-right"
|
|
2068
|
+
}, pn = { id: "main-canvas" }, hn = /* @__PURE__ */ Q({
|
|
2069
|
+
__name: "VPlayer",
|
|
2070
|
+
props: {
|
|
2071
|
+
fileLoader: {},
|
|
2072
|
+
rootUrl: {},
|
|
2073
|
+
currentCameraId: {},
|
|
2074
|
+
showStaticImage: { type: Boolean },
|
|
2075
|
+
isFullScreen: { type: Boolean },
|
|
2076
|
+
mouseSensitivity: { default: 1 },
|
|
2077
|
+
isInIframe: { type: Boolean, default: !1 }
|
|
2078
|
+
},
|
|
2079
|
+
emits: ["newCameraCallback", "newRotationCallback", "newFloorCallback", "newFovCallback", "playerApiCallback", "newSizeCallback"],
|
|
2080
|
+
setup(u, { emit: t }) {
|
|
2081
|
+
const e = jt.PlayerV2, l = u, a = t, n = r(void 0), s = r(void 0), i = r(0), k = r(0);
|
|
2082
|
+
Z(
|
|
2083
|
+
() => l.rootUrl,
|
|
2084
|
+
async (v) => {
|
|
2085
|
+
n.value && (await n.value.loadInterior(v, s.value, !1), p());
|
|
2086
|
+
}
|
|
2087
|
+
), Z(
|
|
2088
|
+
() => l.fileLoader,
|
|
2089
|
+
async () => {
|
|
2090
|
+
n.value && (await n.value.loadInterior(l.rootUrl, void 0, !1), p());
|
|
2091
|
+
},
|
|
2092
|
+
{ deep: !0 }
|
|
2093
|
+
), Z(
|
|
2094
|
+
() => l.currentCameraId,
|
|
2095
|
+
(v) => {
|
|
2096
|
+
n.value && (s.value = v, n.value.goToCamera(v, !0));
|
|
2097
|
+
}
|
|
2098
|
+
), Z(n, (v) => {
|
|
2099
|
+
a("playerApiCallback", v);
|
|
2100
|
+
const m = n.value.getCurrentCamera();
|
|
2101
|
+
m && (s.value = m.id);
|
|
2102
|
+
}), ce(async () => {
|
|
2103
|
+
window.addEventListener("resize", p), p();
|
|
2104
|
+
const _ = {
|
|
2105
|
+
initialized: () => {
|
|
2106
|
+
n.value = e.Main.getPlayerAPI();
|
|
2107
|
+
const C = n.value.getCurrentCamera();
|
|
2108
|
+
C && (s.value = C.id), a("newCameraCallback", s.value);
|
|
2109
|
+
},
|
|
2110
|
+
newCamera: (C) => {
|
|
2111
|
+
a("newCameraCallback", C.id), a("newFloorCallback", C.floorLevel), n.value && n.value.resetMarkerBehaviour(0), s.value = C.id;
|
|
2112
|
+
},
|
|
2113
|
+
newFOV: (C) => {
|
|
2114
|
+
a("newFovCallback", C), k.value = C;
|
|
2115
|
+
},
|
|
2116
|
+
newRotation: (C) => {
|
|
2117
|
+
const E = C + 0;
|
|
2118
|
+
a("newRotationCallback", E), i.value = E;
|
|
2119
|
+
}
|
|
2120
|
+
};
|
|
2121
|
+
if (!tn)
|
|
2122
|
+
return;
|
|
2123
|
+
const L = await new e.Main(
|
|
2124
|
+
l.rootUrl,
|
|
2125
|
+
"qpc",
|
|
2126
|
+
_,
|
|
2127
|
+
void 0,
|
|
2128
|
+
l.currentCameraId,
|
|
2129
|
+
l.fileLoader
|
|
2130
|
+
);
|
|
2131
|
+
L && (L.handleWindowResize(), window.addEventListener(
|
|
2132
|
+
"resize",
|
|
2133
|
+
L.handleWindowResize.bind(L)
|
|
2134
|
+
), L.animate(), n.value = e.Main.getPlayerAPI(), n.value && n.value.setLookSensitivity(l.mouseSensitivity));
|
|
2135
|
+
}), Oe(() => {
|
|
2136
|
+
n.value && n.value.destroy();
|
|
2137
|
+
});
|
|
2138
|
+
function p() {
|
|
2139
|
+
let v = 1.7777777777777777, m = document.querySelector("#player-sizer");
|
|
2140
|
+
if (!m)
|
|
2141
|
+
return;
|
|
2142
|
+
let I = m.offsetWidth, _ = I * (1 / v);
|
|
2143
|
+
(window.innerWidth <= 600 || I <= 600) && (_ = window.innerHeight * 0.75, l.isInIframe && (_ = screen.height * 0.65), I = _ * (1 / v)), m.style.height = _ + "px", m.style.width = I + "px", a("newSizeCallback", I, _);
|
|
2144
|
+
}
|
|
2145
|
+
return (v, m) => (h(), F("div", on, [
|
|
2146
|
+
o("div", nn, [
|
|
2147
|
+
ie(v.$slots, "slideshow-image", {}, void 0, !0),
|
|
2148
|
+
o("div", an, [
|
|
2149
|
+
ie(v.$slots, "top-left", {}, void 0, !0)
|
|
2150
|
+
]),
|
|
2151
|
+
o("div", ln, [
|
|
2152
|
+
ie(v.$slots, "top-center", {}, void 0, !0)
|
|
2153
|
+
]),
|
|
2154
|
+
o("div", sn, [
|
|
2155
|
+
ie(v.$slots, "top-right", {}, void 0, !0)
|
|
2156
|
+
]),
|
|
2157
|
+
o("div", rn, [
|
|
2158
|
+
ie(v.$slots, "center-left", {}, void 0, !0)
|
|
2159
|
+
]),
|
|
2160
|
+
o("div", un, [
|
|
2161
|
+
ie(v.$slots, "center-center", {}, void 0, !0)
|
|
2162
|
+
]),
|
|
2163
|
+
o("div", cn, [
|
|
2164
|
+
ie(v.$slots, "center-right", {}, void 0, !0)
|
|
2165
|
+
]),
|
|
2166
|
+
o("div", dn, [
|
|
2167
|
+
ie(v.$slots, "bottom-left", {}, void 0, !0)
|
|
2168
|
+
]),
|
|
2169
|
+
o("div", vn, [
|
|
2170
|
+
ie(v.$slots, "bottom-center", {}, void 0, !0)
|
|
2171
|
+
]),
|
|
2172
|
+
o("div", mn, [
|
|
2173
|
+
ie(v.$slots, "bottom-right", {}, void 0, !0)
|
|
2174
|
+
]),
|
|
2175
|
+
o("div", pn, [
|
|
2176
|
+
o("canvas", {
|
|
2177
|
+
id: "qpc",
|
|
2178
|
+
style: re(v.showStaticImage ? "visibility:hidden" : "visibility:visible")
|
|
2179
|
+
}, null, 4)
|
|
2180
|
+
])
|
|
2181
|
+
])
|
|
2182
|
+
]));
|
|
2183
|
+
}
|
|
2184
|
+
}), fn = /* @__PURE__ */ te(hn, [["__scopeId", "data-v-2374a426"]]), gn = { class: "waypoint-carousel" }, wn = 37, kn = 39, bn = /* @__PURE__ */ Q({
|
|
2185
|
+
__name: "VWaypointCarousel",
|
|
2186
|
+
props: {
|
|
2187
|
+
thumbnails: {},
|
|
2188
|
+
active: {}
|
|
2189
|
+
},
|
|
2190
|
+
emits: ["previous", "next", "goto"],
|
|
2191
|
+
setup(u, { emit: t }) {
|
|
2192
|
+
const e = u, l = t, a = r(0), n = V({
|
|
2193
|
+
get() {
|
|
2194
|
+
return e.active;
|
|
2195
|
+
},
|
|
2196
|
+
set(p) {
|
|
2197
|
+
a.value = p;
|
|
2198
|
+
}
|
|
2199
|
+
}), s = V(() => /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test(
|
|
2200
|
+
window.navigator.userAgent
|
|
2201
|
+
));
|
|
2202
|
+
ce(() => {
|
|
2203
|
+
window.addEventListener("keydown", i);
|
|
2204
|
+
}), Oe(() => {
|
|
2205
|
+
window.removeEventListener("keydown", i);
|
|
2206
|
+
});
|
|
2207
|
+
function i(p) {
|
|
2208
|
+
switch (p.keyCode) {
|
|
2209
|
+
case p.keyCode === wn:
|
|
2210
|
+
l("previous");
|
|
2211
|
+
break;
|
|
2212
|
+
case p.keyCode === kn:
|
|
2213
|
+
l("next");
|
|
2214
|
+
break;
|
|
2215
|
+
default:
|
|
2216
|
+
return;
|
|
2217
|
+
}
|
|
2218
|
+
}
|
|
2219
|
+
function k(p, v) {
|
|
2220
|
+
v(), l("goto", p);
|
|
2221
|
+
}
|
|
2222
|
+
return (p, v) => {
|
|
2223
|
+
const m = T("v-icon"), I = T("v-btn"), _ = T("v-hover"), L = T("v-img"), C = T("v-card"), E = T("v-slide-group-item"), D = T("v-slide-group");
|
|
2224
|
+
return h(), F("div", gn, [
|
|
2225
|
+
y(D, {
|
|
2226
|
+
modelValue: n.value,
|
|
2227
|
+
"onUpdate:modelValue": v[2] || (v[2] = (g) => n.value = g),
|
|
2228
|
+
"active-class": "active-apt",
|
|
2229
|
+
"selected-class": "active-apt",
|
|
2230
|
+
"show-arrows": "",
|
|
2231
|
+
"center-active": "",
|
|
2232
|
+
mandatory: ""
|
|
2233
|
+
}, {
|
|
2234
|
+
prev: M(() => [
|
|
2235
|
+
y(_, null, {
|
|
2236
|
+
default: M(({ isHovering: g }) => [
|
|
2237
|
+
y(I, {
|
|
2238
|
+
elevation: "0",
|
|
2239
|
+
class: ye(["carousel-button", { mobile: s.value }]),
|
|
2240
|
+
onClick: v[0] || (v[0] = (A) => l("previous"))
|
|
2241
|
+
}, {
|
|
2242
|
+
default: M(() => [
|
|
2243
|
+
y(m, {
|
|
2244
|
+
color: g ? "#999" : "#d2d2d2",
|
|
2245
|
+
"x-large": ""
|
|
2246
|
+
}, {
|
|
2247
|
+
default: M(() => [
|
|
2248
|
+
se(" mdi-chevron-left ")
|
|
2249
|
+
]),
|
|
2250
|
+
_: 2
|
|
2251
|
+
}, 1032, ["color"])
|
|
2252
|
+
]),
|
|
2253
|
+
_: 2
|
|
2254
|
+
}, 1032, ["class"])
|
|
2255
|
+
]),
|
|
2256
|
+
_: 1
|
|
2257
|
+
})
|
|
2258
|
+
]),
|
|
2259
|
+
next: M(() => [
|
|
2260
|
+
y(_, null, {
|
|
2261
|
+
default: M(({ isHovering: g }) => [
|
|
2262
|
+
y(I, {
|
|
2263
|
+
elevation: "0",
|
|
2264
|
+
class: ye(["carousel-button", { mobile: s.value }]),
|
|
2265
|
+
onClick: v[1] || (v[1] = (A) => l("next"))
|
|
2266
|
+
}, {
|
|
2267
|
+
default: M(() => [
|
|
2268
|
+
y(m, {
|
|
2269
|
+
color: g ? "#999" : "#d2d2d2",
|
|
2270
|
+
"x-large": ""
|
|
2271
|
+
}, {
|
|
2272
|
+
default: M(() => [
|
|
2273
|
+
se(" mdi-chevron-right ")
|
|
2274
|
+
]),
|
|
2275
|
+
_: 2
|
|
2276
|
+
}, 1032, ["color"])
|
|
2277
|
+
]),
|
|
2278
|
+
_: 2
|
|
2279
|
+
}, 1032, ["class"])
|
|
2280
|
+
]),
|
|
2281
|
+
_: 1
|
|
2282
|
+
})
|
|
2283
|
+
]),
|
|
2284
|
+
default: M(() => [
|
|
2285
|
+
(h(!0), F(Ce, null, _e(p.thumbnails, (g) => (h(), N(E, {
|
|
2286
|
+
key: g.id
|
|
2287
|
+
}, {
|
|
2288
|
+
default: M(({ toggle: A, selectedClass: R }) => [
|
|
2289
|
+
y(C, {
|
|
2290
|
+
class: ye(["ma-2", R]),
|
|
2291
|
+
align: "center",
|
|
2292
|
+
justify: "center",
|
|
2293
|
+
height: s.value ? 50 : 100,
|
|
2294
|
+
width: s.value ? 80 : 160,
|
|
2295
|
+
elevation: "0",
|
|
2296
|
+
style: { overflow: "hidden" },
|
|
2297
|
+
onClick: (c) => k(g.id, A)
|
|
2298
|
+
}, {
|
|
2299
|
+
default: M(() => [
|
|
2300
|
+
y(L, {
|
|
2301
|
+
"max-height": "100",
|
|
2302
|
+
"max-width": "160",
|
|
2303
|
+
src: g.thumbnailUrl
|
|
2304
|
+
}, null, 8, ["src"])
|
|
2305
|
+
]),
|
|
2306
|
+
_: 2
|
|
2307
|
+
}, 1032, ["class", "height", "width", "onClick"])
|
|
2308
|
+
]),
|
|
2309
|
+
_: 2
|
|
2310
|
+
}, 1024))), 128))
|
|
2311
|
+
]),
|
|
2312
|
+
_: 1
|
|
2313
|
+
}, 8, ["modelValue"])
|
|
2314
|
+
]);
|
|
2315
|
+
};
|
|
2316
|
+
}
|
|
2317
|
+
}), dt = /* @__PURE__ */ te(bn, [["__scopeId", "data-v-f8f5088a"]]), yn = {
|
|
2318
|
+
style: { width: "24px", height: "24px" },
|
|
2319
|
+
viewBox: "0 0 18 16",
|
|
2320
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
2321
|
+
}, _n = ["stroke"], Cn = ["stroke"], An = { class: "floor-level-label" }, Ln = /* @__PURE__ */ Q({
|
|
2322
|
+
__name: "VFloorLevel",
|
|
2323
|
+
props: {
|
|
2324
|
+
level: { default: 0 },
|
|
2325
|
+
floorLevels: { default: () => [] }
|
|
2326
|
+
},
|
|
2327
|
+
emits: ["level"],
|
|
2328
|
+
setup(u, { emit: t }) {
|
|
2329
|
+
const e = u, l = t, a = pe("i18n"), n = V(() => {
|
|
2330
|
+
const v = e.floorLevels;
|
|
2331
|
+
return v.sort(), v;
|
|
2332
|
+
}), s = V(() => n.value.indexOf(e.level) + 1 <= n.value.length / 2 ? "Lower" : "Upper"), i = V(() => s.value === "Lower"), k = V(() => s.value === "Upper");
|
|
2333
|
+
function p() {
|
|
2334
|
+
const v = e.level + 1;
|
|
2335
|
+
v >= n.value.length ? l("level", n.value[0]) : l("level", n.value[v]);
|
|
2336
|
+
}
|
|
2337
|
+
return (v, m) => {
|
|
2338
|
+
const I = T("v-btn"), _ = T("v-tooltip");
|
|
2339
|
+
return h(), N(_, {
|
|
2340
|
+
right: "",
|
|
2341
|
+
attach: ""
|
|
2342
|
+
}, {
|
|
2343
|
+
activator: M(({ props: L }) => [
|
|
2344
|
+
y(I, be({
|
|
2345
|
+
style: { cursor: "pointer" },
|
|
2346
|
+
density: "comfortable",
|
|
2347
|
+
elevation: "1",
|
|
2348
|
+
icon: ""
|
|
2349
|
+
}, L, { onClick: p }), {
|
|
2350
|
+
default: M(() => [
|
|
2351
|
+
(h(), F("svg", yn, [
|
|
2352
|
+
o("path", {
|
|
2353
|
+
d: "M8.98034 10.3472L1.54055 5.8855L8.98034 1.42384L16.4201 5.8855L8.98034 10.3472Z",
|
|
2354
|
+
fill: "white",
|
|
2355
|
+
stroke: k.value ? "black" : "#999999",
|
|
2356
|
+
"stroke-width": "1.5",
|
|
2357
|
+
"stroke-linejoin": "round"
|
|
2358
|
+
}, null, 8, _n),
|
|
2359
|
+
o("path", {
|
|
2360
|
+
d: "M8.98034 14.7993L1.54055 10.3376L8.98034 5.87599L16.4201 10.3376L8.98034 14.7993Z",
|
|
2361
|
+
fill: "white",
|
|
2362
|
+
stroke: i.value ? "black" : "#999999",
|
|
2363
|
+
"stroke-width": "1.5",
|
|
2364
|
+
"stroke-linejoin": "round"
|
|
2365
|
+
}, null, 8, Cn)
|
|
2366
|
+
]))
|
|
2367
|
+
]),
|
|
2368
|
+
_: 2
|
|
2369
|
+
}, 1040)
|
|
2370
|
+
]),
|
|
2371
|
+
default: M(() => [
|
|
2372
|
+
o("span", An, z(oe(a).getLabel(s.value)) + " " + z(oe(a).getLabel("floor")), 1)
|
|
2373
|
+
]),
|
|
2374
|
+
_: 1
|
|
2375
|
+
});
|
|
2376
|
+
};
|
|
2377
|
+
}
|
|
2378
|
+
}), In = /* @__PURE__ */ te(Ln, [["__scopeId", "data-v-82187b23"]]), Mn = {
|
|
2379
|
+
id: "share-btns-wrapper",
|
|
2380
|
+
class: "text-center"
|
|
2381
|
+
}, Sn = /* @__PURE__ */ Q({
|
|
2382
|
+
__name: "VSocialShare",
|
|
2383
|
+
setup(u) {
|
|
2384
|
+
const t = pe("i18n"), e = r(!1), l = r(location.href);
|
|
2385
|
+
function a() {
|
|
2386
|
+
return window.open(
|
|
2387
|
+
"https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(location.href),
|
|
2388
|
+
"facebook-share-dialog",
|
|
2389
|
+
"width=626,height=436"
|
|
2390
|
+
), !1;
|
|
2391
|
+
}
|
|
2392
|
+
function n() {
|
|
2393
|
+
return window.open(
|
|
2394
|
+
"https://twitter.com/intent/tweet?text=" + encodeURIComponent(location.href),
|
|
2395
|
+
"twitter-share-dialog",
|
|
2396
|
+
"width=626,height=436"
|
|
2397
|
+
), !1;
|
|
2398
|
+
}
|
|
2399
|
+
function s() {
|
|
2400
|
+
return window.open(
|
|
2401
|
+
"https://www.linkedin.com/sharing/share-offsite/?url=" + encodeURIComponent(location.href),
|
|
2402
|
+
"linkedin-share-dialog",
|
|
2403
|
+
"width=626,height=736"
|
|
2404
|
+
), !1;
|
|
2405
|
+
}
|
|
2406
|
+
function i() {
|
|
2407
|
+
navigator.clipboard.writeText(location.href);
|
|
2408
|
+
}
|
|
2409
|
+
return (k, p) => {
|
|
2410
|
+
const v = T("v-btn"), m = T("v-tooltip"), I = T("v-toolbar-title"), _ = T("v-spacer"), L = T("v-toolbar"), C = T("v-card-text"), E = T("v-card"), D = T("v-dialog");
|
|
2411
|
+
return h(), F("div", null, [
|
|
2412
|
+
y(m, {
|
|
2413
|
+
elevation: "2",
|
|
2414
|
+
top: "",
|
|
2415
|
+
attach: ""
|
|
2416
|
+
}, {
|
|
2417
|
+
activator: M(({ props: g }) => [
|
|
2418
|
+
y(v, be({
|
|
2419
|
+
density: "comfortable",
|
|
2420
|
+
elevation: "1",
|
|
2421
|
+
icon: "mdi-share-variant",
|
|
2422
|
+
onClick: p[0] || (p[0] = (A) => e.value = !e.value)
|
|
2423
|
+
}, g), null, 16)
|
|
2424
|
+
]),
|
|
2425
|
+
default: M(() => [
|
|
2426
|
+
o("span", null, z(oe(t).getLabel("share")), 1)
|
|
2427
|
+
]),
|
|
2428
|
+
_: 1
|
|
2429
|
+
}),
|
|
2430
|
+
y(D, {
|
|
2431
|
+
id: "share-box",
|
|
2432
|
+
width: "400",
|
|
2433
|
+
modelValue: e.value,
|
|
2434
|
+
"onUpdate:modelValue": p[2] || (p[2] = (g) => e.value = g)
|
|
2435
|
+
}, {
|
|
2436
|
+
default: M(() => [
|
|
2437
|
+
y(E, null, {
|
|
2438
|
+
default: M(() => [
|
|
2439
|
+
y(L, { elevation: "0" }, {
|
|
2440
|
+
default: M(() => [
|
|
2441
|
+
y(v, {
|
|
2442
|
+
size: "x-small",
|
|
2443
|
+
icon: "mdi-close",
|
|
2444
|
+
onClick: p[1] || (p[1] = (g) => e.value = !1)
|
|
2445
|
+
}),
|
|
2446
|
+
y(I, null, {
|
|
2447
|
+
default: M(() => [
|
|
2448
|
+
se(z(oe(t).getLabel("share")), 1)
|
|
2449
|
+
]),
|
|
2450
|
+
_: 1
|
|
2451
|
+
}),
|
|
2452
|
+
y(_)
|
|
2453
|
+
]),
|
|
2454
|
+
_: 1
|
|
2455
|
+
}),
|
|
2456
|
+
y(C, { class: "mt-5" }, {
|
|
2457
|
+
default: M(() => [
|
|
2458
|
+
o("p", Mn, [
|
|
2459
|
+
y(m, { location: "top" }, {
|
|
2460
|
+
activator: M(({ props: g }) => [
|
|
2461
|
+
y(v, be({
|
|
2462
|
+
depressed: "",
|
|
2463
|
+
fab: "",
|
|
2464
|
+
light: "",
|
|
2465
|
+
icon: "mdi-facebook"
|
|
2466
|
+
}, g, { onClick: a }), null, 16)
|
|
2467
|
+
]),
|
|
2468
|
+
default: M(() => [
|
|
2469
|
+
o("span", null, z(oe(t).getLabel("share-to-facebook")), 1)
|
|
2470
|
+
]),
|
|
2471
|
+
_: 1
|
|
2472
|
+
}),
|
|
2473
|
+
y(m, { location: "top" }, {
|
|
2474
|
+
activator: M(({ props: g }) => [
|
|
2475
|
+
y(v, be({
|
|
2476
|
+
depressed: "",
|
|
2477
|
+
fab: "",
|
|
2478
|
+
light: "",
|
|
2479
|
+
icon: "mdi-linkedin"
|
|
2480
|
+
}, g, { onClick: s }), null, 16)
|
|
2481
|
+
]),
|
|
2482
|
+
default: M(() => [
|
|
2483
|
+
o("span", null, z(oe(t).getLabel("share-to-linkedin")), 1)
|
|
2484
|
+
]),
|
|
2485
|
+
_: 1
|
|
2486
|
+
}),
|
|
2487
|
+
y(m, { location: "top" }, {
|
|
2488
|
+
activator: M(({ props: g }) => [
|
|
2489
|
+
y(v, be({
|
|
2490
|
+
depressed: "",
|
|
2491
|
+
fab: "",
|
|
2492
|
+
light: "",
|
|
2493
|
+
icon: "mdi-twitter"
|
|
2494
|
+
}, g, { onClick: n }), null, 16)
|
|
2495
|
+
]),
|
|
2496
|
+
default: M(() => [
|
|
2497
|
+
o("span", null, z(oe(t).getLabel("share-to-twitter")), 1)
|
|
2498
|
+
]),
|
|
2499
|
+
_: 1
|
|
2500
|
+
}),
|
|
2501
|
+
y(m, { location: "top" }, {
|
|
2502
|
+
activator: M(({ props: g }) => [
|
|
2503
|
+
y(v, be({
|
|
2504
|
+
depressed: "",
|
|
2505
|
+
fab: "",
|
|
2506
|
+
light: "",
|
|
2507
|
+
icon: "mdi-email",
|
|
2508
|
+
link: "",
|
|
2509
|
+
href: `mailto:?body=${l.value}`
|
|
2510
|
+
}, g), null, 16, ["href"])
|
|
2511
|
+
]),
|
|
2512
|
+
default: M(() => [
|
|
2513
|
+
o("span", null, z(oe(t).getLabel("share-via-email")), 1)
|
|
2514
|
+
]),
|
|
2515
|
+
_: 1
|
|
2516
|
+
}),
|
|
2517
|
+
y(m, { location: "top" }, {
|
|
2518
|
+
activator: M(({ props: g }) => [
|
|
2519
|
+
y(v, be({
|
|
2520
|
+
depressed: "",
|
|
2521
|
+
fab: "",
|
|
2522
|
+
light: "",
|
|
2523
|
+
icon: "mdi-content-copy",
|
|
2524
|
+
onClick: i
|
|
2525
|
+
}, g), null, 16)
|
|
2526
|
+
]),
|
|
2527
|
+
default: M(() => [
|
|
2528
|
+
o("span", null, z(oe(t).getLabel("copy-link")), 1)
|
|
2529
|
+
]),
|
|
2530
|
+
_: 1
|
|
2531
|
+
}),
|
|
2532
|
+
y(_)
|
|
2533
|
+
])
|
|
2534
|
+
]),
|
|
2535
|
+
_: 1
|
|
2536
|
+
})
|
|
2537
|
+
]),
|
|
2538
|
+
_: 1
|
|
2539
|
+
})
|
|
2540
|
+
]),
|
|
2541
|
+
_: 1
|
|
2542
|
+
}, 8, ["modelValue"])
|
|
2543
|
+
]);
|
|
2544
|
+
};
|
|
2545
|
+
}
|
|
2546
|
+
}), En = /* @__PURE__ */ te(Sn, [["__scopeId", "data-v-66122fea"]]), Fn = /* @__PURE__ */ Q({
|
|
2547
|
+
__name: "VInteriorSelector",
|
|
2548
|
+
props: {
|
|
2549
|
+
availableArchetypes: {},
|
|
2550
|
+
selectedIndex: {}
|
|
2551
|
+
},
|
|
2552
|
+
emits: ["selectInterior"],
|
|
2553
|
+
setup(u, { emit: t }) {
|
|
2554
|
+
const e = t, l = pe("i18n"), a = pe("localMode"), n = pe("fileLoader");
|
|
2555
|
+
function s(i) {
|
|
2556
|
+
let k = i;
|
|
2557
|
+
return a && (k = `${n.getURL(i)}`), k;
|
|
2558
|
+
}
|
|
2559
|
+
return (i, k) => {
|
|
2560
|
+
const p = T("v-btn"), v = T("v-img"), m = T("v-list-item-title"), I = T("v-list-item"), _ = T("v-list"), L = T("v-menu");
|
|
2561
|
+
return h(), F("div", null, [
|
|
2562
|
+
y(L, {
|
|
2563
|
+
transition: "slide-x-reverse-transition",
|
|
2564
|
+
location: "top end",
|
|
2565
|
+
origin: "end bottom",
|
|
2566
|
+
elevation: "0"
|
|
2567
|
+
}, {
|
|
2568
|
+
activator: M(({ props: C }) => [
|
|
2569
|
+
y(p, be({
|
|
2570
|
+
"prepend-icon": "mdi-palette-outline",
|
|
2571
|
+
rounded: ""
|
|
2572
|
+
}, C), {
|
|
2573
|
+
default: M(() => [
|
|
2574
|
+
se(z(oe(l).getLabel("interior")), 1)
|
|
2575
|
+
]),
|
|
2576
|
+
_: 2
|
|
2577
|
+
}, 1040)
|
|
2578
|
+
]),
|
|
2579
|
+
default: M(() => [
|
|
2580
|
+
y(_, { class: "interior-selector-list" }, {
|
|
2581
|
+
default: M(() => [
|
|
2582
|
+
(h(!0), F(Ce, null, _e(i.availableArchetypes, (C, E) => (h(), N(I, {
|
|
2583
|
+
density: "compact",
|
|
2584
|
+
key: `at-menuitem-${E}`,
|
|
2585
|
+
onClick: (D) => e("selectInterior", C.archetypeID),
|
|
2586
|
+
active: E === i.selectedIndex,
|
|
2587
|
+
class: "interior-selector-list-item"
|
|
2588
|
+
}, {
|
|
2589
|
+
prepend: M(() => [
|
|
2590
|
+
y(v, {
|
|
2591
|
+
width: "100",
|
|
2592
|
+
"max-width": "100",
|
|
2593
|
+
height: "66",
|
|
2594
|
+
src: s(C.url)
|
|
2595
|
+
}, null, 8, ["src"])
|
|
2596
|
+
]),
|
|
2597
|
+
default: M(() => [
|
|
2598
|
+
y(m, { class: "text-caption py-2 px-4" }, {
|
|
2599
|
+
default: M(() => [
|
|
2600
|
+
se(z(oe(l).get(C.title)), 1)
|
|
2601
|
+
]),
|
|
2602
|
+
_: 2
|
|
2603
|
+
}, 1024)
|
|
2604
|
+
]),
|
|
2605
|
+
_: 2
|
|
2606
|
+
}, 1032, ["onClick", "active"]))), 128))
|
|
2607
|
+
]),
|
|
2608
|
+
_: 1
|
|
2609
|
+
})
|
|
2610
|
+
]),
|
|
2611
|
+
_: 1
|
|
2612
|
+
})
|
|
2613
|
+
]);
|
|
2614
|
+
};
|
|
2615
|
+
}
|
|
2616
|
+
}), xn = /* @__PURE__ */ te(Fn, [["__scopeId", "data-v-cc96ef5c"]]), Bn = "data:image/png;base64,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", Vn = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGwAAABsCAYAAACPZlfNAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMdSURBVHgB7dxBTttQEMbxsU32idouujM7FhjlBqQnaG5AbkBvUPUEpTegN8gR6AlAgQU70lWlQkUUscR+fVZrRKlL7CTQN6P/T0IJwYkUDfNhvzdEBAAAAAAAAAAAAAAAAAAAAAD+i+t+v3+5vT0Qg2IxqHBuP47jXTHIZMHEuYETeScGmSvYZb9fFiv1d7sWY9FcwWLn9u7ux/FbMcZeJPo4vLsrMhJjTBXsXhxWzMWiqYLdj8NKlCR7YoipgjnnhjUPDv11WVeMMFOwqywb+Zu6wnQlz81ck5kp2GNnhLmha7JIDCgjLy+K60cOmSVxvNk7OZmJciY6LM/z4YJDukVRmDj5sBGJcbywGLUnJAqpj0Qfh6mPw4smx/pY7GmPRfUd5uNw0PRYC7GoPxIbxGHFQiyqjsQ2cVjRHouqO8xHXOvVeP+cfVFMeySOpCV3bzVfI7WRuEwcVlxRvHl1dnYkCqntsFWiTfO8h+ZIXPqMT/PGpsqC1WxUtpVq3dhUWbC6jcrWr6F03kNnJK7hTE9rLKor2BrisKJy3kNdwdYRh3evpTAW9UXiGi98y1jUNu+hqmBXWTZcUxxWure3t31RRFXBoieIMG1jcGqWphrMbSxL1byHmg5rMLexrPIXQc3Jh5qCPekZnXMjUUJFJK6yMt+Ulo1NFR3WZm5jWVrmPXREYou5jWVpmfcIPhKfIw4rGmIx+A57jjisaIjF4AsWRVG7nWXnjhK/fJWUEefcuN1Tw4/FoCOxaRz6N3Hi22M8v7n5tDmd/hFp37a20qTTGcRR9F4aLGslSZL2jo+/SqA2JGALxthmviMO/RsY905Pv/zroNfn51N/c1h+XWfZbl7ug0VR2Um1i75Fno/8zQcJVNAd9mNn5+KvxV4feT4mx/P5/PPDbmrje5aN/N+DPV+8wYMfTV9OJpsSqGALVn78kI/D49/fzqKiOKiLvFWVkbnR6exHv7ouLR8LeQwu2IL57vroIy9NRA4ei7x1qiLTF2/6YjIJNhbxwEWamvkndgAAAAAAAAAAAAAAAAAAAAAAAAAAAABYxU+ILzGcMmFd0QAAAABJRU5ErkJggg==", Un = /* @__PURE__ */ Q({
|
|
2617
|
+
__name: "VCompass",
|
|
2618
|
+
props: {
|
|
2619
|
+
rotation: {}
|
|
2620
|
+
},
|
|
2621
|
+
setup(u) {
|
|
2622
|
+
const t = u, e = r(Vn), l = r({
|
|
2623
|
+
backgroundImage: `url(${Bn})`,
|
|
2624
|
+
backgroundSize: "contain"
|
|
2625
|
+
}), a = V(() => ({
|
|
2626
|
+
transform: `rotate(${-t.rotation + 180}deg)`
|
|
2627
|
+
}));
|
|
2628
|
+
return (n, s) => {
|
|
2629
|
+
const i = T("v-img");
|
|
2630
|
+
return h(), F("div", {
|
|
2631
|
+
style: re(l.value)
|
|
2632
|
+
}, [
|
|
2633
|
+
y(i, {
|
|
2634
|
+
class: "compass-needle",
|
|
2635
|
+
src: e.value,
|
|
2636
|
+
style: re(a.value)
|
|
2637
|
+
}, null, 8, ["src", "style"])
|
|
2638
|
+
], 4);
|
|
2639
|
+
};
|
|
2640
|
+
}
|
|
2641
|
+
}), Dn = { class: "static-image-wrapper" }, Rn = /* @__PURE__ */ Q({
|
|
2642
|
+
__name: "VSingleImage",
|
|
2643
|
+
props: {
|
|
2644
|
+
image: {},
|
|
2645
|
+
aspectRatio: { default: "wide" }
|
|
2646
|
+
},
|
|
2647
|
+
setup(u) {
|
|
2648
|
+
const t = u, e = V(() => ({ "background-image": `url("${encodeURI(t.image)}")` }));
|
|
2649
|
+
return (l, a) => (h(), F("div", Dn, [
|
|
2650
|
+
o("div", {
|
|
2651
|
+
class: ye(["img-div", [l.aspectRatio]]),
|
|
2652
|
+
style: re(e.value)
|
|
2653
|
+
}, null, 6)
|
|
2654
|
+
]));
|
|
2655
|
+
}
|
|
2656
|
+
}), Tn = /* @__PURE__ */ te(Rn, [["__scopeId", "data-v-3e99d275"]]), On = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAllBMVEUAAAD/rwD/rwD/qgP/qwL/qAL/qwP/qwH/rAL/rAL/qwL/qQD/qwL/qwD/qQD/qwL/pQD/qgH/nwD/pwD/qQL/rAL/qwD/qwT/rAP/qwL/rAL/rAD/rAL/qgD/qwL/qQP/rAP/rAH/qgH/qwL/qwD/qgL/rwD/qgD/qwH/qgD/qgL/rAD/qgD/qgD/qwH/rAP/qgX/qwA+O5E+AAAAMnRSTlMAECBg/3C/v5Dff4+PT1/PMN8QII9vf0CfgO9vnzDvUF+vr3BA3zA/z2+fX59g71AwcDsf6p0AAAFGSURBVHicvdRtT8MgEABgaM9hu1aHXV/cpm6zWt829f//OYEK9qC3NDF6HxYCTw5GuWPsd8GjqTIGOJtIZwDi/ymnKPflOSTub6cAcwdnkHk5AQY2v3Dzl2phga1EFkl5hScLbZc+LbUs/FltK5OpLpsmrS0NpbLLSu3Er1dgIsn0cdabEdlHlICL5IZSRq5gELcn7DCnsfQL24AX5PeNfAlAHSEOaYrFXaNiqwa7kO7V9L1dt9u25kX58cBY7dbZYz/MKdr2o06nrZ6klNX4AYRdf8aHzkL6QtxAG9KculjhS0nJMO0rSVmF5ZyWnn2jFC+36vcgLTzq+3lPRx6XrjjTqQ7iqJxY6+KLydp0ZWhrVHWE0JoqHq1NSHBxF0h+1Mh6LUMM5LC/Kht8h+5nG9zeTtbt37Ti3XT6+d29pkTXTZVEfAEKARRF2iiwhQAAAB10RVh0U29mdHdhcmUAQGx1bmFwYWludC9wbmctY29kZWP1QxkeAAAAAElFTkSuQmCC", $n = { class: "d-flex flex-column align-center justify-center clock-face" }, Hn = { class: "clock-icon" }, jn = { class: "clock-value grey--text text--darken-3" }, Pn = /* @__PURE__ */ Q({
|
|
2657
|
+
__name: "VTimeOfDay",
|
|
2658
|
+
props: {
|
|
2659
|
+
hours: { default: 0 },
|
|
2660
|
+
minutes: { default: 0 }
|
|
2661
|
+
},
|
|
2662
|
+
setup(u) {
|
|
2663
|
+
const t = u, e = V(() => [l(t.hours), ":", l(t.minutes)].join(""));
|
|
2664
|
+
function l(a) {
|
|
2665
|
+
return ("0" + a).slice(-2);
|
|
2666
|
+
}
|
|
2667
|
+
return (a, n) => {
|
|
2668
|
+
const s = T("v-img");
|
|
2669
|
+
return h(), F("div", $n, [
|
|
2670
|
+
o("div", Hn, [
|
|
2671
|
+
y(s, {
|
|
2672
|
+
src: oe(On),
|
|
2673
|
+
"aspect-ratio": "1"
|
|
2674
|
+
}, null, 8, ["src"])
|
|
2675
|
+
]),
|
|
2676
|
+
o("div", jn, z(e.value), 1)
|
|
2677
|
+
]);
|
|
2678
|
+
};
|
|
2679
|
+
}
|
|
2680
|
+
}), Nn = /* @__PURE__ */ te(Pn, [["__scopeId", "data-v-9a5f102b"]]), Yn = {
|
|
2681
|
+
id: "btn-fullscreen",
|
|
2682
|
+
class: "btn-placeholder mr-2"
|
|
2683
|
+
}, Wn = /* @__PURE__ */ Q({
|
|
2684
|
+
__name: "VFullScreenButton",
|
|
2685
|
+
props: {
|
|
2686
|
+
isFullScreen: { type: Boolean }
|
|
2687
|
+
},
|
|
2688
|
+
emits: ["toggleFullscreen"],
|
|
2689
|
+
setup(u, { emit: t }) {
|
|
2690
|
+
const e = t;
|
|
2691
|
+
return (l, a) => {
|
|
2692
|
+
const n = T("v-btn");
|
|
2693
|
+
return h(), F("div", Yn, [
|
|
2694
|
+
y(n, {
|
|
2695
|
+
density: "comfortable",
|
|
2696
|
+
elevation: "3",
|
|
2697
|
+
icon: l.isFullScreen ? "mdi-fullscreen-exit" : "mdi-fullscreen",
|
|
2698
|
+
onClick: a[0] || (a[0] = (s) => e("toggleFullscreen"))
|
|
2699
|
+
}, null, 8, ["icon"])
|
|
2700
|
+
]);
|
|
2701
|
+
};
|
|
2702
|
+
}
|
|
2703
|
+
}), Gn = /* @__PURE__ */ Q({
|
|
2704
|
+
__name: "VViewModeToggle",
|
|
2705
|
+
props: {
|
|
2706
|
+
showStaticImage: { type: Boolean }
|
|
2707
|
+
},
|
|
2708
|
+
emits: ["toggle"],
|
|
2709
|
+
setup(u, { emit: t }) {
|
|
2710
|
+
const e = u, l = t, a = pe("i18n"), n = V(() => {
|
|
2711
|
+
let s = "virtual-tour";
|
|
2712
|
+
return e.showStaticImage || (s = "slide-show"), s;
|
|
2713
|
+
});
|
|
2714
|
+
return (s, i) => {
|
|
2715
|
+
const k = T("v-btn");
|
|
2716
|
+
return h(), N(k, {
|
|
2717
|
+
color: "darken-2",
|
|
2718
|
+
elevation: "1",
|
|
2719
|
+
rounded: "",
|
|
2720
|
+
plain: "",
|
|
2721
|
+
onClick: i[0] || (i[0] = (p) => l("toggle"))
|
|
2722
|
+
}, {
|
|
2723
|
+
default: M(() => [
|
|
2724
|
+
se(z(oe(a).getLabel(n.value)), 1)
|
|
2725
|
+
]),
|
|
2726
|
+
_: 1
|
|
2727
|
+
});
|
|
2728
|
+
};
|
|
2729
|
+
}
|
|
2730
|
+
}), Qn = {
|
|
2731
|
+
key: 0,
|
|
2732
|
+
class: "text-white disclaimer caption"
|
|
2733
|
+
}, zn = /* @__PURE__ */ Q({
|
|
2734
|
+
__name: "VDisclaimer",
|
|
2735
|
+
setup(u) {
|
|
2736
|
+
const t = pe("i18n"), e = r(!0);
|
|
2737
|
+
return (l, a) => (h(), N(ze, { name: "fade-transition" }, {
|
|
2738
|
+
default: M(() => [
|
|
2739
|
+
e.value ? (h(), F("div", Qn, [
|
|
2740
|
+
se(z(oe(t).getLabel("all-illustrations-are-indicative-deviations-may-occur")) + " ", 1),
|
|
2741
|
+
o("span", {
|
|
2742
|
+
onClick: a[0] || (a[0] = (n) => e.value = !1),
|
|
2743
|
+
class: "link-text text-decoration-underline"
|
|
2744
|
+
}, z(oe(t).getLabel("i-understand")), 1)
|
|
2745
|
+
])) : H("", !0)
|
|
2746
|
+
]),
|
|
2747
|
+
_: 1
|
|
2748
|
+
}));
|
|
2749
|
+
}
|
|
2750
|
+
}), qn = /* @__PURE__ */ te(zn, [["__scopeId", "data-v-28008b18"]]), Be = (u) => (ot("data-v-53c0bb27"), u = u(), nt(), u), Zn = {
|
|
2751
|
+
key: 0,
|
|
2752
|
+
class: "tutorial"
|
|
2753
|
+
}, Xn = {
|
|
2754
|
+
key: 0,
|
|
2755
|
+
class: "desktop-content"
|
|
2756
|
+
}, Kn = { class: "d-inline-flex" }, Jn = { class: "box col" }, ea = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
2757
|
+
/* @__PURE__ */ o("svg", {
|
|
2758
|
+
width: "100",
|
|
2759
|
+
height: "65",
|
|
2760
|
+
viewBox: "0 0 100 65",
|
|
2761
|
+
fill: "none",
|
|
2762
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
2763
|
+
}, [
|
|
2764
|
+
/* @__PURE__ */ o("path", {
|
|
2765
|
+
d: "M72 30H86.9736M86.9736 30L81 36M86.9736 30L81 24",
|
|
2766
|
+
stroke: "#FF3E3E",
|
|
2767
|
+
"stroke-width": "1.5",
|
|
2768
|
+
"stroke-linecap": "round",
|
|
2769
|
+
"stroke-linejoin": "round"
|
|
2770
|
+
}),
|
|
2771
|
+
/* @__PURE__ */ o("path", {
|
|
2772
|
+
d: "M27.9736 30H13M13 30L18.9736 36M13 30L18.9736 24",
|
|
2773
|
+
stroke: "#FF3E3E",
|
|
2774
|
+
"stroke-width": "1.5",
|
|
2775
|
+
"stroke-linecap": "round",
|
|
2776
|
+
"stroke-linejoin": "round"
|
|
2777
|
+
}),
|
|
2778
|
+
/* @__PURE__ */ o("path", {
|
|
2779
|
+
d: "M36 30H64V40C64 47.732 57.732 54 50 54V54C42.268 54 36 47.732 36 40V30Z",
|
|
2780
|
+
fill: "white",
|
|
2781
|
+
stroke: "black",
|
|
2782
|
+
"stroke-width": "1.5"
|
|
2783
|
+
}),
|
|
2784
|
+
/* @__PURE__ */ o("path", {
|
|
2785
|
+
d: "M36 25C36 17.268 42.268 11 50 11V11V30H36V25Z",
|
|
2786
|
+
fill: "#FF3E3E",
|
|
2787
|
+
stroke: "black",
|
|
2788
|
+
"stroke-width": "1.5"
|
|
2789
|
+
}),
|
|
2790
|
+
/* @__PURE__ */ o("path", {
|
|
2791
|
+
d: "M64 25C64 17.268 57.732 11 50 11V11V30H64V25Z",
|
|
2792
|
+
fill: "white",
|
|
2793
|
+
stroke: "black",
|
|
2794
|
+
"stroke-width": "1.5"
|
|
2795
|
+
}),
|
|
2796
|
+
/* @__PURE__ */ o("path", {
|
|
2797
|
+
d: "M53.25 23V30C53.25 31.7949 51.7949 33.25 50 33.25C48.2051 33.25 46.75 31.7949 46.75 30V23C46.75 21.2051 48.2051 19.75 50 19.75C51.7949 19.75 53.25 21.2051 53.25 23Z",
|
|
2798
|
+
fill: "white",
|
|
2799
|
+
stroke: "black",
|
|
2800
|
+
"stroke-width": "1.5"
|
|
2801
|
+
})
|
|
2802
|
+
])
|
|
2803
|
+
], -1)), ta = { class: "text mt-3" }, oa = { class: "box col" }, na = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
2804
|
+
/* @__PURE__ */ o("svg", {
|
|
2805
|
+
width: "100",
|
|
2806
|
+
height: "65",
|
|
2807
|
+
viewBox: "0 0 100 65",
|
|
2808
|
+
fill: "none",
|
|
2809
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
2810
|
+
}, [
|
|
2811
|
+
/* @__PURE__ */ o("path", {
|
|
2812
|
+
d: "M79.9936 27.0175C79.9881 19.276 66.3321 13.0323 49.492 13.0719C32.652 13.1116 19.0049 19.4194 19.0105 27.1609C19.016 34.9025 32.6721 41.1461 49.5121 41.1065C66.3521 41.0669 79.9992 34.759 79.9936 27.0175Z",
|
|
2813
|
+
fill: "white",
|
|
2814
|
+
stroke: "#B3B3B3",
|
|
2815
|
+
"stroke-width": "1.5"
|
|
2816
|
+
}),
|
|
2817
|
+
/* @__PURE__ */ o("path", {
|
|
2818
|
+
d: "M61.8032 45.179L56.543 50.3218V28.0361L72.543 43.4647H65.0909L67.9402 50.3218L64.6526 52.0361L61.8032 45.179Z",
|
|
2819
|
+
fill: "white",
|
|
2820
|
+
stroke: "black",
|
|
2821
|
+
"stroke-width": "1.5",
|
|
2822
|
+
"stroke-linejoin": "round"
|
|
2823
|
+
}),
|
|
2824
|
+
/* @__PURE__ */ o("path", {
|
|
2825
|
+
d: "M50.502 28.0361L46.502 28.0361",
|
|
2826
|
+
stroke: "#FF3E3E",
|
|
2827
|
+
"stroke-width": "1.5",
|
|
2828
|
+
"stroke-linecap": "round"
|
|
2829
|
+
}),
|
|
2830
|
+
/* @__PURE__ */ o("path", {
|
|
2831
|
+
d: "M50.502 28.0361L46.502 28.0361",
|
|
2832
|
+
stroke: "#FF3E3E",
|
|
2833
|
+
"stroke-width": "1.5",
|
|
2834
|
+
"stroke-linecap": "round"
|
|
2835
|
+
}),
|
|
2836
|
+
/* @__PURE__ */ o("path", {
|
|
2837
|
+
d: "M50.502 28.0361L46.502 28.0361",
|
|
2838
|
+
stroke: "#FF3E3E",
|
|
2839
|
+
"stroke-width": "1.5",
|
|
2840
|
+
"stroke-linecap": "round"
|
|
2841
|
+
}),
|
|
2842
|
+
/* @__PURE__ */ o("path", {
|
|
2843
|
+
d: "M66.502 28.0361L62.502 28.0361",
|
|
2844
|
+
stroke: "#FF3E3E",
|
|
2845
|
+
"stroke-width": "1.5",
|
|
2846
|
+
"stroke-linecap": "round"
|
|
2847
|
+
}),
|
|
2848
|
+
/* @__PURE__ */ o("path", {
|
|
2849
|
+
d: "M66.502 28.0361L62.502 28.0361",
|
|
2850
|
+
stroke: "#FF3E3E",
|
|
2851
|
+
"stroke-width": "1.5",
|
|
2852
|
+
"stroke-linecap": "round"
|
|
2853
|
+
}),
|
|
2854
|
+
/* @__PURE__ */ o("path", {
|
|
2855
|
+
d: "M66.502 28.0361L62.502 28.0361",
|
|
2856
|
+
stroke: "#FF3E3E",
|
|
2857
|
+
"stroke-width": "1.5",
|
|
2858
|
+
"stroke-linecap": "round"
|
|
2859
|
+
}),
|
|
2860
|
+
/* @__PURE__ */ o("path", {
|
|
2861
|
+
d: "M52.1582 24.0361L49.1582 21.0361",
|
|
2862
|
+
stroke: "#FF3E3E",
|
|
2863
|
+
"stroke-width": "1.5",
|
|
2864
|
+
"stroke-linecap": "round"
|
|
2865
|
+
}),
|
|
2866
|
+
/* @__PURE__ */ o("path", {
|
|
2867
|
+
d: "M52.1582 24.0361L49.1582 21.0361",
|
|
2868
|
+
stroke: "#FF3E3E",
|
|
2869
|
+
"stroke-width": "1.5",
|
|
2870
|
+
"stroke-linecap": "round"
|
|
2871
|
+
}),
|
|
2872
|
+
/* @__PURE__ */ o("path", {
|
|
2873
|
+
d: "M52.1582 24.0361L49.1582 21.0361",
|
|
2874
|
+
stroke: "#FF3E3E",
|
|
2875
|
+
"stroke-width": "1.5",
|
|
2876
|
+
"stroke-linecap": "round"
|
|
2877
|
+
}),
|
|
2878
|
+
/* @__PURE__ */ o("path", {
|
|
2879
|
+
d: "M60.502 24.0361L63.502 21.0361",
|
|
2880
|
+
stroke: "#FF3E3E",
|
|
2881
|
+
"stroke-width": "1.5",
|
|
2882
|
+
"stroke-linecap": "round"
|
|
2883
|
+
}),
|
|
2884
|
+
/* @__PURE__ */ o("path", {
|
|
2885
|
+
d: "M60.502 24.0361L63.502 21.0361",
|
|
2886
|
+
stroke: "#FF3E3E",
|
|
2887
|
+
"stroke-width": "1.5",
|
|
2888
|
+
"stroke-linecap": "round"
|
|
2889
|
+
}),
|
|
2890
|
+
/* @__PURE__ */ o("path", {
|
|
2891
|
+
d: "M60.502 24.0361L63.502 21.0361",
|
|
2892
|
+
stroke: "#FF3E3E",
|
|
2893
|
+
"stroke-width": "1.5",
|
|
2894
|
+
"stroke-linecap": "round"
|
|
2895
|
+
}),
|
|
2896
|
+
/* @__PURE__ */ o("path", {
|
|
2897
|
+
d: "M56.502 22.0361L56.502 18.0361",
|
|
2898
|
+
stroke: "#FF3E3E",
|
|
2899
|
+
"stroke-width": "1.5",
|
|
2900
|
+
"stroke-linecap": "round"
|
|
2901
|
+
}),
|
|
2902
|
+
/* @__PURE__ */ o("path", {
|
|
2903
|
+
d: "M56.502 22.0361L56.502 18.0361",
|
|
2904
|
+
stroke: "#FF3E3E",
|
|
2905
|
+
"stroke-width": "1.5",
|
|
2906
|
+
"stroke-linecap": "round"
|
|
2907
|
+
}),
|
|
2908
|
+
/* @__PURE__ */ o("path", {
|
|
2909
|
+
d: "M56.502 22.0361L56.502 18.0361",
|
|
2910
|
+
stroke: "#FF3E3E",
|
|
2911
|
+
"stroke-width": "1.5",
|
|
2912
|
+
"stroke-linecap": "round"
|
|
2913
|
+
}),
|
|
2914
|
+
/* @__PURE__ */ o("path", {
|
|
2915
|
+
d: "M52.1582 32.0361L49.1582 35.0361",
|
|
2916
|
+
stroke: "#FF3E3E",
|
|
2917
|
+
"stroke-width": "1.5",
|
|
2918
|
+
"stroke-linecap": "round"
|
|
2919
|
+
}),
|
|
2920
|
+
/* @__PURE__ */ o("path", {
|
|
2921
|
+
d: "M52.1582 32.0361L49.1582 35.0361",
|
|
2922
|
+
stroke: "#FF3E3E",
|
|
2923
|
+
"stroke-width": "1.5",
|
|
2924
|
+
"stroke-linecap": "round"
|
|
2925
|
+
}),
|
|
2926
|
+
/* @__PURE__ */ o("path", {
|
|
2927
|
+
d: "M52.1582 32.0361L49.1582 35.0361",
|
|
2928
|
+
stroke: "#FF3E3E",
|
|
2929
|
+
"stroke-width": "1.5",
|
|
2930
|
+
"stroke-linecap": "round"
|
|
2931
|
+
})
|
|
2932
|
+
])
|
|
2933
|
+
], -1)), aa = { class: "text mt-3" }, la = { class: "box col" }, ia = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
2934
|
+
/* @__PURE__ */ o("svg", {
|
|
2935
|
+
width: "100",
|
|
2936
|
+
height: "65",
|
|
2937
|
+
viewBox: "0 0 100 65",
|
|
2938
|
+
fill: "none",
|
|
2939
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
2940
|
+
}, [
|
|
2941
|
+
/* @__PURE__ */ o("path", {
|
|
2942
|
+
d: "M36 33H64V43C64 50.732 57.732 57 50 57V57C42.268 57 36 50.732 36 43V33Z",
|
|
2943
|
+
fill: "white",
|
|
2944
|
+
stroke: "black",
|
|
2945
|
+
"stroke-width": "1.5"
|
|
2946
|
+
}),
|
|
2947
|
+
/* @__PURE__ */ o("path", {
|
|
2948
|
+
d: "M36 28C36 20.268 42.268 14 50 14V14V33H36V28Z",
|
|
2949
|
+
fill: "white",
|
|
2950
|
+
stroke: "black",
|
|
2951
|
+
"stroke-width": "1.5"
|
|
2952
|
+
}),
|
|
2953
|
+
/* @__PURE__ */ o("path", {
|
|
2954
|
+
d: "M64 28C64 20.268 57.732 14 50 14V14V33H64V28Z",
|
|
2955
|
+
fill: "white",
|
|
2956
|
+
stroke: "black",
|
|
2957
|
+
"stroke-width": "1.5"
|
|
2958
|
+
}),
|
|
2959
|
+
/* @__PURE__ */ o("path", {
|
|
2960
|
+
d: "M53.25 26V33C53.25 34.7949 51.7949 36.25 50 36.25C48.2051 36.25 46.75 34.7949 46.75 33V26C46.75 24.2051 48.2051 22.75 50 22.75C51.7949 22.75 53.25 24.2051 53.25 26Z",
|
|
2961
|
+
fill: "#FF3E3E",
|
|
2962
|
+
stroke: "black",
|
|
2963
|
+
"stroke-width": "1.5"
|
|
2964
|
+
}),
|
|
2965
|
+
/* @__PURE__ */ o("path", {
|
|
2966
|
+
"fill-rule": "evenodd",
|
|
2967
|
+
"clip-rule": "evenodd",
|
|
2968
|
+
d: "M74.5352 20.7593L80.3458 26.5699C80.9316 27.1557 80.9316 28.1055 80.3458 28.6913C79.76 29.277 78.8103 29.277 78.2245 28.6913L72.4138 22.8806L74.5352 20.7593Z",
|
|
2969
|
+
fill: "black",
|
|
2970
|
+
stroke: "black",
|
|
2971
|
+
"stroke-width": "1.5",
|
|
2972
|
+
"stroke-linecap": "round"
|
|
2973
|
+
}),
|
|
2974
|
+
/* @__PURE__ */ o("circle", {
|
|
2975
|
+
cx: "66.5",
|
|
2976
|
+
cy: "15.5",
|
|
2977
|
+
r: "9.75",
|
|
2978
|
+
fill: "white",
|
|
2979
|
+
stroke: "black",
|
|
2980
|
+
"stroke-width": "1.5"
|
|
2981
|
+
}),
|
|
2982
|
+
/* @__PURE__ */ o("rect", {
|
|
2983
|
+
x: "66",
|
|
2984
|
+
y: "11",
|
|
2985
|
+
width: "1",
|
|
2986
|
+
height: "9",
|
|
2987
|
+
fill: "black",
|
|
2988
|
+
stroke: "black",
|
|
2989
|
+
"stroke-width": "0.75",
|
|
2990
|
+
"stroke-linejoin": "round"
|
|
2991
|
+
}),
|
|
2992
|
+
/* @__PURE__ */ o("rect", {
|
|
2993
|
+
x: "71",
|
|
2994
|
+
y: "15",
|
|
2995
|
+
width: "1",
|
|
2996
|
+
height: "9",
|
|
2997
|
+
transform: "rotate(90 71 15)",
|
|
2998
|
+
fill: "black",
|
|
2999
|
+
stroke: "black",
|
|
3000
|
+
"stroke-width": "0.75",
|
|
3001
|
+
"stroke-linejoin": "round"
|
|
3002
|
+
})
|
|
3003
|
+
])
|
|
3004
|
+
], -1)), sa = { class: "text mt-3" }, ra = { class: "d-inline-flex space-around" }, ua = { class: "box col" }, ca = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
3005
|
+
/* @__PURE__ */ o("svg", {
|
|
3006
|
+
width: "100",
|
|
3007
|
+
height: "65",
|
|
3008
|
+
viewBox: "0 0 100 65",
|
|
3009
|
+
fill: "none",
|
|
3010
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
3011
|
+
}, [
|
|
3012
|
+
/* @__PURE__ */ o("rect", {
|
|
3013
|
+
x: "65.0967",
|
|
3014
|
+
y: "34.3228",
|
|
3015
|
+
width: "20.9032",
|
|
3016
|
+
height: "20.9032",
|
|
3017
|
+
rx: "2",
|
|
3018
|
+
fill: "white",
|
|
3019
|
+
stroke: "black",
|
|
3020
|
+
"stroke-width": "1.5"
|
|
3021
|
+
}),
|
|
3022
|
+
/* @__PURE__ */ o("rect", {
|
|
3023
|
+
x: "39.5488",
|
|
3024
|
+
y: "29.6777",
|
|
3025
|
+
width: "20.9032",
|
|
3026
|
+
height: "20.9032",
|
|
3027
|
+
rx: "2",
|
|
3028
|
+
transform: "rotate(-90 39.5488 29.6777)",
|
|
3029
|
+
fill: "white",
|
|
3030
|
+
stroke: "black",
|
|
3031
|
+
"stroke-width": "1.5"
|
|
3032
|
+
}),
|
|
3033
|
+
/* @__PURE__ */ o("rect", {
|
|
3034
|
+
x: "60.4512",
|
|
3035
|
+
y: "34.3228",
|
|
3036
|
+
width: "20.9032",
|
|
3037
|
+
height: "20.9032",
|
|
3038
|
+
rx: "2",
|
|
3039
|
+
transform: "rotate(90 60.4512 34.3228)",
|
|
3040
|
+
fill: "white",
|
|
3041
|
+
stroke: "black",
|
|
3042
|
+
"stroke-width": "1.5"
|
|
3043
|
+
}),
|
|
3044
|
+
/* @__PURE__ */ o("rect", {
|
|
3045
|
+
x: "34.9033",
|
|
3046
|
+
y: "55.2261",
|
|
3047
|
+
width: "20.9032",
|
|
3048
|
+
height: "20.9032",
|
|
3049
|
+
rx: "2",
|
|
3050
|
+
transform: "rotate(-180 34.9033 55.2261)",
|
|
3051
|
+
fill: "white",
|
|
3052
|
+
stroke: "black",
|
|
3053
|
+
"stroke-width": "1.5"
|
|
3054
|
+
}),
|
|
3055
|
+
/* @__PURE__ */ o("path", {
|
|
3056
|
+
d: "M77.7025 44.3796C77.9599 44.5798 77.9599 44.9688 77.7025 45.169L74.6621 47.5338C74.3337 47.7892 73.8551 47.5552 73.8551 47.1391L73.8551 42.4095C73.8551 41.9935 74.3337 41.7594 74.6621 42.0149L77.7025 44.3796Z",
|
|
3057
|
+
fill: "#FF3E3E"
|
|
3058
|
+
}),
|
|
3059
|
+
/* @__PURE__ */ o("path", {
|
|
3060
|
+
d: "M49.6047 17.0724C49.8049 16.815 50.1939 16.815 50.3941 17.0724L52.7589 20.1128C53.0143 20.4412 52.7803 20.9198 52.3642 20.9198L47.6346 20.9198C47.2185 20.9198 46.9845 20.4412 47.2399 20.1128L49.6047 17.0724Z",
|
|
3061
|
+
fill: "#FF3E3E"
|
|
3062
|
+
}),
|
|
3063
|
+
/* @__PURE__ */ o("path", {
|
|
3064
|
+
d: "M50.3953 46.9281C50.1951 47.1855 49.8061 47.1855 49.6059 46.9281L47.2411 43.8877C46.9857 43.5592 47.2197 43.0807 47.6358 43.0807L52.3654 43.0807C52.7815 43.0807 53.0155 43.5592 52.7601 43.8877L50.3953 46.9281Z",
|
|
3065
|
+
fill: "#FF3E3E"
|
|
3066
|
+
}),
|
|
3067
|
+
/* @__PURE__ */ o("path", {
|
|
3068
|
+
d: "M22.2975 45.1692C22.0401 44.969 22.0401 44.58 22.2975 44.3798L25.3379 42.0151C25.6663 41.7596 26.1449 41.9937 26.1449 42.4097L26.1449 47.1393C26.1449 47.5554 25.6663 47.7894 25.3379 47.534L22.2975 45.1692Z",
|
|
3069
|
+
fill: "#FF3E3E"
|
|
3070
|
+
})
|
|
3071
|
+
])
|
|
3072
|
+
], -1)), da = { class: "text mt-3" }, va = {
|
|
3073
|
+
key: 1,
|
|
3074
|
+
class: "d-flex flex-column tablet-mobile-content"
|
|
3075
|
+
}, ma = { class: "box horizontal mt-3" }, pa = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
3076
|
+
/* @__PURE__ */ o("svg", {
|
|
3077
|
+
width: "101",
|
|
3078
|
+
height: "65",
|
|
3079
|
+
viewBox: "0 0 101 65",
|
|
3080
|
+
fill: "none",
|
|
3081
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
3082
|
+
}, [
|
|
3083
|
+
/* @__PURE__ */ o("path", {
|
|
3084
|
+
d: "M68 28H87.9736M87.9736 28L82 34M87.9736 28L82 22",
|
|
3085
|
+
stroke: "#FF3E3E",
|
|
3086
|
+
"stroke-width": "1.5",
|
|
3087
|
+
"stroke-linecap": "round",
|
|
3088
|
+
"stroke-linejoin": "round"
|
|
3089
|
+
}),
|
|
3090
|
+
/* @__PURE__ */ o("path", {
|
|
3091
|
+
d: "M33.9727 28H13.999M13.999 28L19.9727 34M13.999 28L19.9727 22",
|
|
3092
|
+
stroke: "#FF3E3E",
|
|
3093
|
+
"stroke-width": "1.5",
|
|
3094
|
+
"stroke-linecap": "round",
|
|
3095
|
+
"stroke-linejoin": "round"
|
|
3096
|
+
}),
|
|
3097
|
+
/* @__PURE__ */ o("path", {
|
|
3098
|
+
d: "M57.3126 51.1276L62.5533 49.7234C65.3195 48.9822 67.2473 46.4813 67.2601 43.6176C67.2626 43.0532 67.1898 42.4909 67.0438 41.9457L64.9992 34.3153C64.7491 33.3818 63.7895 32.8278 62.8559 33.0779C61.9223 33.328 61.3683 34.2876 61.6185 35.2212L61.0361 33.0479C60.7502 31.9809 59.6536 31.3478 58.5866 31.6337C57.5197 31.9195 56.8865 33.0162 57.1724 34.0831L56.7195 32.3928C56.3979 31.1925 55.1641 30.4802 53.9638 30.8018C52.7635 31.1234 52.0512 32.3572 52.3728 33.5575L50.6258 27.0375C50.3399 25.9705 49.2432 25.3374 48.1763 25.6233C47.1094 25.9091 46.4762 27.0058 46.7621 28.0727L50.3855 41.5957C49.2796 40.7276 47.5926 39.524 46.3279 38.6369C45.3814 37.9729 44.0801 38.2068 43.4137 39.1516C42.8107 40.0066 42.9238 41.1741 43.6798 41.8975L51.8691 49.7332C53.3154 51.1171 55.3791 51.6457 57.3126 51.1276Z",
|
|
3099
|
+
fill: "white"
|
|
3100
|
+
}),
|
|
3101
|
+
/* @__PURE__ */ o("path", {
|
|
3102
|
+
d: "M53.7316 38.6286L52.6963 34.7649M52.6963 34.7649L50.6258 27.0375C50.3399 25.9705 49.2432 25.3374 48.1763 25.6233V25.6233C47.1094 25.9091 46.4762 27.0058 46.7621 28.0727L50.3855 41.5957C49.2796 40.7276 47.5926 39.524 46.3279 38.6369C45.3814 37.9729 44.0801 38.2068 43.4137 39.1516V39.1516C42.8107 40.0066 42.9238 41.1741 43.6798 41.8975L51.8691 49.7332C53.3154 51.1171 55.3791 51.6457 57.3126 51.1276L62.5533 49.7234C65.3195 48.9822 67.2473 46.4813 67.2601 43.6176V43.6176C67.2626 43.0532 67.1898 42.4909 67.0438 41.9457L64.9992 34.3153C64.7491 33.3818 63.7895 32.8278 62.8559 33.0779V33.0779V33.0779C61.9223 33.328 61.3683 34.2876 61.6185 35.2212L61.942 36.4286M52.6963 34.7649L52.3728 33.5575C52.0512 32.3572 52.7635 31.1234 53.9638 30.8018V30.8018C55.1641 30.4802 56.3979 31.1925 56.7195 32.3928L57.3018 34.5661M58.2077 37.9469L57.3018 34.5661M57.3018 34.5661L57.1724 34.0831C56.8865 33.0162 57.5197 31.9195 58.5866 31.6337V31.6337C59.6536 31.3478 60.7502 31.9809 61.0361 33.0479L61.942 36.4286M62.3302 37.8775L61.942 36.4286",
|
|
3103
|
+
stroke: "black",
|
|
3104
|
+
"stroke-width": "1.5",
|
|
3105
|
+
"stroke-linecap": "round",
|
|
3106
|
+
"stroke-linejoin": "round"
|
|
3107
|
+
})
|
|
3108
|
+
])
|
|
3109
|
+
], -1)), ha = { class: "text ml-2" }, fa = { class: "box horizontal mt-3" }, ga = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
3110
|
+
/* @__PURE__ */ o("svg", {
|
|
3111
|
+
width: "99",
|
|
3112
|
+
height: "65",
|
|
3113
|
+
viewBox: "0 0 99 65",
|
|
3114
|
+
fill: "none",
|
|
3115
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
3116
|
+
}, [
|
|
3117
|
+
/* @__PURE__ */ o("path", {
|
|
3118
|
+
d: "M79.9927 29.9814C79.9871 22.2398 66.3311 15.9962 49.491 16.0358C32.651 16.0754 19.0039 22.3833 19.0095 30.1248C19.015 37.8663 32.6711 44.11 49.5111 44.0704C66.3512 44.0308 79.9982 37.7229 79.9927 29.9814Z",
|
|
3119
|
+
fill: "white",
|
|
3120
|
+
stroke: "#B3B3B3",
|
|
3121
|
+
"stroke-width": "1.5"
|
|
3122
|
+
}),
|
|
3123
|
+
/* @__PURE__ */ o("path", {
|
|
3124
|
+
d: "M50.5 31L46.5 31",
|
|
3125
|
+
stroke: "#FF3E3E",
|
|
3126
|
+
"stroke-width": "1.5",
|
|
3127
|
+
"stroke-linecap": "round"
|
|
3128
|
+
}),
|
|
3129
|
+
/* @__PURE__ */ o("path", {
|
|
3130
|
+
d: "M50.5 31L46.5 31",
|
|
3131
|
+
stroke: "#FF3E3E",
|
|
3132
|
+
"stroke-width": "1.5",
|
|
3133
|
+
"stroke-linecap": "round"
|
|
3134
|
+
}),
|
|
3135
|
+
/* @__PURE__ */ o("path", {
|
|
3136
|
+
d: "M50.5 31L46.5 31",
|
|
3137
|
+
stroke: "#FF3E3E",
|
|
3138
|
+
"stroke-width": "1.5",
|
|
3139
|
+
"stroke-linecap": "round"
|
|
3140
|
+
}),
|
|
3141
|
+
/* @__PURE__ */ o("path", {
|
|
3142
|
+
d: "M66.5 31L62.5 31",
|
|
3143
|
+
stroke: "#FF3E3E",
|
|
3144
|
+
"stroke-width": "1.5",
|
|
3145
|
+
"stroke-linecap": "round"
|
|
3146
|
+
}),
|
|
3147
|
+
/* @__PURE__ */ o("path", {
|
|
3148
|
+
d: "M66.5 31L62.5 31",
|
|
3149
|
+
stroke: "#FF3E3E",
|
|
3150
|
+
"stroke-width": "1.5",
|
|
3151
|
+
"stroke-linecap": "round"
|
|
3152
|
+
}),
|
|
3153
|
+
/* @__PURE__ */ o("path", {
|
|
3154
|
+
d: "M66.5 31L62.5 31",
|
|
3155
|
+
stroke: "#FF3E3E",
|
|
3156
|
+
"stroke-width": "1.5",
|
|
3157
|
+
"stroke-linecap": "round"
|
|
3158
|
+
}),
|
|
3159
|
+
/* @__PURE__ */ o("path", {
|
|
3160
|
+
d: "M52.1562 27L49.1562 24",
|
|
3161
|
+
stroke: "#FF3E3E",
|
|
3162
|
+
"stroke-width": "1.5",
|
|
3163
|
+
"stroke-linecap": "round"
|
|
3164
|
+
}),
|
|
3165
|
+
/* @__PURE__ */ o("path", {
|
|
3166
|
+
d: "M52.1562 27L49.1562 24",
|
|
3167
|
+
stroke: "#FF3E3E",
|
|
3168
|
+
"stroke-width": "1.5",
|
|
3169
|
+
"stroke-linecap": "round"
|
|
3170
|
+
}),
|
|
3171
|
+
/* @__PURE__ */ o("path", {
|
|
3172
|
+
d: "M52.1562 27L49.1562 24",
|
|
3173
|
+
stroke: "#FF3E3E",
|
|
3174
|
+
"stroke-width": "1.5",
|
|
3175
|
+
"stroke-linecap": "round"
|
|
3176
|
+
}),
|
|
3177
|
+
/* @__PURE__ */ o("path", {
|
|
3178
|
+
d: "M60.5 27L63.5 24",
|
|
3179
|
+
stroke: "#FF3E3E",
|
|
3180
|
+
"stroke-width": "1.5",
|
|
3181
|
+
"stroke-linecap": "round"
|
|
3182
|
+
}),
|
|
3183
|
+
/* @__PURE__ */ o("path", {
|
|
3184
|
+
d: "M60.5 27L63.5 24",
|
|
3185
|
+
stroke: "#FF3E3E",
|
|
3186
|
+
"stroke-width": "1.5",
|
|
3187
|
+
"stroke-linecap": "round"
|
|
3188
|
+
}),
|
|
3189
|
+
/* @__PURE__ */ o("path", {
|
|
3190
|
+
d: "M60.5 27L63.5 24",
|
|
3191
|
+
stroke: "#FF3E3E",
|
|
3192
|
+
"stroke-width": "1.5",
|
|
3193
|
+
"stroke-linecap": "round"
|
|
3194
|
+
}),
|
|
3195
|
+
/* @__PURE__ */ o("path", {
|
|
3196
|
+
d: "M56.5 25L56.5 21",
|
|
3197
|
+
stroke: "#FF3E3E",
|
|
3198
|
+
"stroke-width": "1.5",
|
|
3199
|
+
"stroke-linecap": "round"
|
|
3200
|
+
}),
|
|
3201
|
+
/* @__PURE__ */ o("path", {
|
|
3202
|
+
d: "M56.5 25L56.5 21",
|
|
3203
|
+
stroke: "#FF3E3E",
|
|
3204
|
+
"stroke-width": "1.5",
|
|
3205
|
+
"stroke-linecap": "round"
|
|
3206
|
+
}),
|
|
3207
|
+
/* @__PURE__ */ o("path", {
|
|
3208
|
+
d: "M56.5 25L56.5 21",
|
|
3209
|
+
stroke: "#FF3E3E",
|
|
3210
|
+
"stroke-width": "1.5",
|
|
3211
|
+
"stroke-linecap": "round"
|
|
3212
|
+
}),
|
|
3213
|
+
/* @__PURE__ */ o("path", {
|
|
3214
|
+
d: "M52.1562 35L49.1562 38",
|
|
3215
|
+
stroke: "#FF3E3E",
|
|
3216
|
+
"stroke-width": "1.5",
|
|
3217
|
+
"stroke-linecap": "round"
|
|
3218
|
+
}),
|
|
3219
|
+
/* @__PURE__ */ o("path", {
|
|
3220
|
+
d: "M52.1562 35L49.1562 38",
|
|
3221
|
+
stroke: "#FF3E3E",
|
|
3222
|
+
"stroke-width": "1.5",
|
|
3223
|
+
"stroke-linecap": "round"
|
|
3224
|
+
}),
|
|
3225
|
+
/* @__PURE__ */ o("path", {
|
|
3226
|
+
d: "M52.1562 35L49.1562 38",
|
|
3227
|
+
stroke: "#FF3E3E",
|
|
3228
|
+
"stroke-width": "1.5",
|
|
3229
|
+
"stroke-linecap": "round"
|
|
3230
|
+
}),
|
|
3231
|
+
/* @__PURE__ */ o("path", {
|
|
3232
|
+
d: "M64.8126 54.1276L70.0533 52.7234C72.8195 51.9822 74.7473 49.4813 74.7601 46.6176C74.7626 46.0532 74.6898 45.4909 74.5438 44.9457L72.4992 37.3153C72.2491 36.3818 71.2895 35.8278 70.3559 36.0779C69.4223 36.328 68.8683 37.2876 69.1185 38.2212L68.5361 36.0479C68.2502 34.9809 67.1536 34.3478 66.0866 34.6337C65.0197 34.9195 64.3865 36.0162 64.6724 37.0831L64.2195 35.3928C63.8979 34.1925 62.6641 33.4802 61.4638 33.8018C60.2635 34.1234 59.5512 35.3572 59.8728 36.5575L58.1258 30.0375C57.8399 28.9705 56.7432 28.3374 55.6763 28.6233C54.6094 28.9091 53.9762 30.0058 54.2621 31.0727L57.8855 44.5957C56.7796 43.7276 55.0926 42.524 53.8279 41.6369C52.8814 40.9729 51.5801 41.2068 50.9137 42.1516C50.3107 43.0066 50.4238 44.1741 51.1798 44.8975L59.3691 52.7332C60.8154 54.1171 62.8791 54.6457 64.8126 54.1276Z",
|
|
3233
|
+
fill: "white"
|
|
3234
|
+
}),
|
|
3235
|
+
/* @__PURE__ */ o("path", {
|
|
3236
|
+
d: "M61.2316 41.6286L60.1963 37.7649M60.1963 37.7649L58.1258 30.0375C57.8399 28.9705 56.7432 28.3374 55.6763 28.6233V28.6233C54.6094 28.9091 53.9762 30.0058 54.2621 31.0727L57.8855 44.5957C56.7796 43.7276 55.0926 42.524 53.8279 41.6369C52.8814 40.9729 51.5801 41.2068 50.9137 42.1516V42.1516C50.3107 43.0066 50.4238 44.1741 51.1798 44.8975L59.3691 52.7332C60.8154 54.1171 62.8791 54.6457 64.8126 54.1276L70.0533 52.7234C72.8195 51.9822 74.7473 49.4813 74.7601 46.6176V46.6176C74.7626 46.0532 74.6898 45.4909 74.5438 44.9457L72.4992 37.3153C72.2491 36.3818 71.2895 35.8278 70.3559 36.0779V36.0779V36.0779C69.4223 36.328 68.8683 37.2876 69.1185 38.2212L69.442 39.4286M60.1963 37.7649L59.8728 36.5575C59.5512 35.3572 60.2635 34.1234 61.4638 33.8018V33.8018C62.6641 33.4802 63.8979 34.1925 64.2195 35.3928L64.8018 37.5661M65.7077 40.9469L64.8018 37.5661M64.8018 37.5661L64.6724 37.0831C64.3865 36.0162 65.0197 34.9195 66.0866 34.6337V34.6337C67.1536 34.3478 68.2502 34.9809 68.5361 36.0479L69.442 39.4286M69.8302 40.8775L69.442 39.4286",
|
|
3237
|
+
stroke: "black",
|
|
3238
|
+
"stroke-width": "1.5",
|
|
3239
|
+
"stroke-linecap": "round",
|
|
3240
|
+
"stroke-linejoin": "round"
|
|
3241
|
+
})
|
|
3242
|
+
])
|
|
3243
|
+
], -1)), wa = { class: "text ml-2" }, ka = { class: "box horizontal mt-3" }, ba = /* @__PURE__ */ Be(() => /* @__PURE__ */ o("div", { class: "tutorial-icon d-flex align-items-center justify-center" }, [
|
|
3244
|
+
/* @__PURE__ */ o("svg", {
|
|
3245
|
+
width: "99",
|
|
3246
|
+
height: "65",
|
|
3247
|
+
viewBox: "0 0 99 65",
|
|
3248
|
+
fill: "none",
|
|
3249
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
3250
|
+
}, [
|
|
3251
|
+
/* @__PURE__ */ o("path", {
|
|
3252
|
+
d: "M31 24.9736L31 10M31 10L25 15.9736M31 10L37 15.9736",
|
|
3253
|
+
stroke: "#FF3E3E",
|
|
3254
|
+
"stroke-width": "1.5",
|
|
3255
|
+
"stroke-linecap": "round",
|
|
3256
|
+
"stroke-linejoin": "round"
|
|
3257
|
+
}),
|
|
3258
|
+
/* @__PURE__ */ o("path", {
|
|
3259
|
+
d: "M31 40L31 54.9736M31 54.9736L25 49M31 54.9736L37 49",
|
|
3260
|
+
stroke: "#FF3E3E",
|
|
3261
|
+
"stroke-width": "1.5",
|
|
3262
|
+
"stroke-linecap": "round",
|
|
3263
|
+
"stroke-linejoin": "round"
|
|
3264
|
+
}),
|
|
3265
|
+
/* @__PURE__ */ o("path", {
|
|
3266
|
+
d: "M58.6512 44.3852L61.8162 42.5579C64.2963 41.126 65.5112 38.2114 64.7823 35.442C64.6387 34.8961 64.4229 34.3719 64.1407 33.883L60.1909 27.0418C59.7076 26.2048 58.6374 25.918 57.8003 26.4013C56.9633 26.8845 56.6765 27.9548 57.1598 28.7918L56.0348 26.8433C55.4825 25.8867 54.2593 25.5589 53.3027 26.1112C52.3462 26.6635 52.0184 27.8867 52.5707 28.8433L51.6957 27.3277C51.0744 26.2516 49.6983 25.8828 48.6221 26.5042C47.546 27.1255 47.1773 28.5016 47.7986 29.5777L44.4236 23.7321C43.8713 22.7755 42.6481 22.4477 41.6915 23C40.7349 23.5523 40.4072 24.7755 40.9595 25.7321L48.4595 38.7224L41.0923 40.5062C40.3398 40.6884 39.7721 41.3073 39.6555 42.0728C39.4961 43.1196 40.2199 44.096 41.268 44.2476L49.7609 45.4766L51.251 45.7252C53.7985 46.1503 56.4146 45.6766 58.6512 44.3852Z",
|
|
3267
|
+
fill: "white"
|
|
3268
|
+
}),
|
|
3269
|
+
/* @__PURE__ */ o("path", {
|
|
3270
|
+
d: "M50.4236 34.1244L48.4236 30.6603M48.4236 30.6603L44.4236 23.7321C43.8713 22.7755 42.6481 22.4477 41.6915 23V23C40.7349 23.5523 40.4072 24.7755 40.9595 25.7321L48.4595 38.7224L41.0923 40.5062C40.3398 40.6884 39.7721 41.3073 39.6555 42.0728V42.0728C39.4961 43.1196 40.2199 44.096 41.268 44.2476L49.7609 45.4766L51.251 45.7252C53.7985 46.1503 56.4146 45.6766 58.6512 44.3852L61.8162 42.5579C64.2963 41.126 65.5112 38.2114 64.7823 35.442V35.442C64.6387 34.8961 64.4229 34.3719 64.1407 33.883L60.1909 27.0418C59.7076 26.2048 58.6374 25.918 57.8003 26.4013V26.4013V26.4013C56.9633 26.8845 56.6765 27.9548 57.1598 28.7918L57.7848 29.8744M48.4236 30.6603L47.7986 29.5777C47.1773 28.5016 47.546 27.1255 48.6221 26.5042V26.5042C49.6983 25.8828 51.0744 26.2516 51.6957 27.3277L52.8207 29.2763M54.5707 32.3074L52.8207 29.2763M52.8207 29.2763L52.5707 28.8433C52.0184 27.8867 52.3462 26.6635 53.3027 26.1112V26.1112C54.2593 25.5589 55.4825 25.8867 56.0348 26.8433L57.7848 29.8744M58.5348 31.1734L57.7848 29.8744",
|
|
3271
|
+
stroke: "black",
|
|
3272
|
+
"stroke-width": "1.5",
|
|
3273
|
+
"stroke-linecap": "round",
|
|
3274
|
+
"stroke-linejoin": "round"
|
|
3275
|
+
})
|
|
3276
|
+
])
|
|
3277
|
+
], -1)), ya = { class: "text ml-2" }, _a = { class: "d-flex justify-space-between mt-3 mx-3 mb-0 tutorial-buttons" }, Ca = /* @__PURE__ */ Q({
|
|
3278
|
+
__name: "VTutorial",
|
|
3279
|
+
props: {
|
|
3280
|
+
project: {}
|
|
3281
|
+
},
|
|
3282
|
+
emits: ["closeTutorial"],
|
|
3283
|
+
setup(u, { emit: t }) {
|
|
3284
|
+
const e = u, l = t, a = pe("i18n"), n = r(!0), s = r(!1), i = V(() => [
|
|
3285
|
+
/Android/i,
|
|
3286
|
+
/webOS/i,
|
|
3287
|
+
/iPhone/i,
|
|
3288
|
+
/iPad/i,
|
|
3289
|
+
/iPod/i,
|
|
3290
|
+
/BlackBerry/i,
|
|
3291
|
+
/Windows Phone/i
|
|
3292
|
+
].some((I) => navigator.userAgent.match(I))), k = V(() => {
|
|
3293
|
+
const m = localStorage.getItem(
|
|
3294
|
+
`${e.project}-dont-show-tutorial`
|
|
3295
|
+
);
|
|
3296
|
+
return m && l("closeTutorial"), m;
|
|
3297
|
+
});
|
|
3298
|
+
function p() {
|
|
3299
|
+
s.value && v(), n.value = !1, l("closeTutorial");
|
|
3300
|
+
}
|
|
3301
|
+
function v() {
|
|
3302
|
+
localStorage.setItem(`${e.project}-dont-show-tutorial`, "true");
|
|
3303
|
+
}
|
|
3304
|
+
return (m, I) => {
|
|
3305
|
+
const _ = T("v-checkbox"), L = T("v-btn");
|
|
3306
|
+
return h(), N(ze, { name: "fade-transition" }, {
|
|
3307
|
+
default: M(() => [
|
|
3308
|
+
n.value && !k.value ? (h(), F("div", Zn, [
|
|
3309
|
+
i.value ? H("", !0) : (h(), F("div", Xn, [
|
|
3310
|
+
o("div", Kn, [
|
|
3311
|
+
o("div", Jn, [
|
|
3312
|
+
ea,
|
|
3313
|
+
o("div", ta, z(oe(a).getLabel("click-and-drag-to-look-around")), 1)
|
|
3314
|
+
]),
|
|
3315
|
+
o("div", oa, [
|
|
3316
|
+
na,
|
|
3317
|
+
o("div", aa, z(oe(a).getLabel("click-on-the-circles-to-move-around")), 1)
|
|
3318
|
+
]),
|
|
3319
|
+
o("div", la, [
|
|
3320
|
+
ia,
|
|
3321
|
+
o("div", sa, z(oe(a).getLabel("use-the-mouse-wheel-to-zoom")), 1)
|
|
3322
|
+
])
|
|
3323
|
+
]),
|
|
3324
|
+
o("div", ra, [
|
|
3325
|
+
o("div", ua, [
|
|
3326
|
+
ca,
|
|
3327
|
+
o("div", da, z(oe(a).getLabel("you-can-also-use-the-arrow-keys-to-move-around")), 1)
|
|
3328
|
+
])
|
|
3329
|
+
])
|
|
3330
|
+
])),
|
|
3331
|
+
i.value ? (h(), F("div", va, [
|
|
3332
|
+
o("div", ma, [
|
|
3333
|
+
pa,
|
|
3334
|
+
o("div", ha, z(oe(a).getLabel("tap-and-drag-to-look-around")), 1)
|
|
3335
|
+
]),
|
|
3336
|
+
o("div", fa, [
|
|
3337
|
+
ga,
|
|
3338
|
+
o("div", wa, z(oe(a).getLabel("tap-on-the-circles-to-move-around")), 1)
|
|
3339
|
+
]),
|
|
3340
|
+
o("div", ka, [
|
|
3341
|
+
ba,
|
|
3342
|
+
o("div", ya, z(oe(a).getLabel("use-two-fingers-to-zoom")), 1)
|
|
3343
|
+
])
|
|
3344
|
+
])) : H("", !0),
|
|
3345
|
+
o("div", _a, [
|
|
3346
|
+
y(_, {
|
|
3347
|
+
modelValue: s.value,
|
|
3348
|
+
"onUpdate:modelValue": I[0] || (I[0] = (C) => s.value = C),
|
|
3349
|
+
label: oe(a).getLabel("dont-show-again")
|
|
3350
|
+
}, null, 8, ["modelValue", "label"]),
|
|
3351
|
+
y(L, {
|
|
3352
|
+
small: "",
|
|
3353
|
+
outlined: "",
|
|
3354
|
+
class: "mt-5",
|
|
3355
|
+
onClick: I[1] || (I[1] = (C) => p())
|
|
3356
|
+
}, {
|
|
3357
|
+
default: M(() => [
|
|
3358
|
+
se("Ok")
|
|
3359
|
+
]),
|
|
3360
|
+
_: 1
|
|
3361
|
+
})
|
|
3362
|
+
])
|
|
3363
|
+
])) : H("", !0)
|
|
3364
|
+
]),
|
|
3365
|
+
_: 1
|
|
3366
|
+
});
|
|
3367
|
+
};
|
|
3368
|
+
}
|
|
3369
|
+
}), Aa = /* @__PURE__ */ te(Ca, [["__scopeId", "data-v-53c0bb27"]]), La = (u) => (ot("data-v-a28b3f8d"), u = u(), nt(), u), Ia = { class: "player-settings-ui" }, Ma = { id: "settings-ui-form" }, Sa = { class: "form-inputs" }, Ea = { class: "setting-label" }, Fa = { class: "setting-label" }, xa = ["max", "min", "step"], Ba = { class: "setting-label" }, Va = { class: "flex-grow-1 flex-shrink-0" }, Ua = ["onUpdate:modelValue"], Da = {
|
|
3370
|
+
key: 3,
|
|
3371
|
+
"d-block": "",
|
|
3372
|
+
class: "mt-3"
|
|
3373
|
+
}, Ra = { class: "d-flex justify-space-between" }, Ta = { class: "setting-label" }, Oa = {
|
|
3374
|
+
class: "mt-5 d-block",
|
|
3375
|
+
style: { width: "300px" }
|
|
3376
|
+
}, $a = /* @__PURE__ */ La(() => /* @__PURE__ */ o("div", { class: "setting-label" }, "Enter Lut URL:", -1)), Ha = {
|
|
3377
|
+
class: "d-block",
|
|
3378
|
+
style: { width: "300px" }
|
|
3379
|
+
}, ja = { class: "form-buttons" }, Pa = /* @__PURE__ */ Q({
|
|
3380
|
+
__name: "VSettingsUI",
|
|
3381
|
+
props: {
|
|
3382
|
+
projectSlug: {},
|
|
3383
|
+
initialSettings: {}
|
|
3384
|
+
},
|
|
3385
|
+
emits: ["updateSettings", "saveSettings"],
|
|
3386
|
+
setup(u, { emit: t }) {
|
|
3387
|
+
const e = u, l = t, a = r(_(e.initialSettings));
|
|
3388
|
+
Z(
|
|
3389
|
+
a,
|
|
3390
|
+
() => {
|
|
3391
|
+
s();
|
|
3392
|
+
},
|
|
3393
|
+
{ deep: !0 }
|
|
3394
|
+
);
|
|
3395
|
+
const n = V(() => {
|
|
3396
|
+
let L = {};
|
|
3397
|
+
for (const [C, E] of Object.entries(a.value))
|
|
3398
|
+
C === "whitePoint" ? L[C] = v(E.value) : L[C] = E.value;
|
|
3399
|
+
return L;
|
|
3400
|
+
});
|
|
3401
|
+
function s() {
|
|
3402
|
+
l("updateSettings", n.value);
|
|
3403
|
+
}
|
|
3404
|
+
function i() {
|
|
3405
|
+
const L = document.createElement("a");
|
|
3406
|
+
L.href = URL.createObjectURL(
|
|
3407
|
+
new Blob([JSON.stringify(n.value, null, 2)])
|
|
3408
|
+
);
|
|
3409
|
+
const C = `player-settings-${e.projectSlug}-${Date.now()}.json`;
|
|
3410
|
+
L.download = C, L.style.display = "none", document.body.appendChild(L), L.click(), document.body.removeChild(L);
|
|
3411
|
+
}
|
|
3412
|
+
function k() {
|
|
3413
|
+
l("saveSettings", n.value);
|
|
3414
|
+
}
|
|
3415
|
+
function p() {
|
|
3416
|
+
a.value = _(), l("updateSettings", n.value);
|
|
3417
|
+
}
|
|
3418
|
+
function v(L) {
|
|
3419
|
+
const C = parseInt(L.substr(1, 2), 16) / 255, E = parseInt(L.substr(3, 2), 16) / 255, D = parseInt(L.substr(5, 2), 16) / 255;
|
|
3420
|
+
return [C, E, D];
|
|
3421
|
+
}
|
|
3422
|
+
function m(L) {
|
|
3423
|
+
var C = L.toString(16);
|
|
3424
|
+
return C.length == 1 ? "0" + C : C;
|
|
3425
|
+
}
|
|
3426
|
+
function I([L, C, E]) {
|
|
3427
|
+
return "#" + m(parseInt((L * 255).toString())) + m(parseInt((C * 255).toString())) + m(parseInt((E * 255).toString()));
|
|
3428
|
+
}
|
|
3429
|
+
function _(L = {}) {
|
|
3430
|
+
const C = [
|
|
3431
|
+
"Cool 5",
|
|
3432
|
+
"Cool 10",
|
|
3433
|
+
"Cool 15",
|
|
3434
|
+
"Cool 20",
|
|
3435
|
+
"Cool 25",
|
|
3436
|
+
"Warm 20",
|
|
3437
|
+
"Warm 25",
|
|
3438
|
+
"Warm 10",
|
|
3439
|
+
"Warm 15",
|
|
3440
|
+
"Warm 5",
|
|
3441
|
+
"bw"
|
|
3442
|
+
];
|
|
3443
|
+
let E = {
|
|
3444
|
+
temperature: 6500,
|
|
3445
|
+
targetLuminance: 1,
|
|
3446
|
+
exposureFovScale: 0.6,
|
|
3447
|
+
UNREAL_BLOOM_ENABLED: !0,
|
|
3448
|
+
sharpenFilter_amount: 0.6,
|
|
3449
|
+
UNREAL_BLOOM_STRENGTH: 0.3,
|
|
3450
|
+
TRANSITION_MOVEMENT_SCALE: 1.3,
|
|
3451
|
+
whitePoint: [1, 1, 1],
|
|
3452
|
+
lut: "",
|
|
3453
|
+
...L
|
|
3454
|
+
};
|
|
3455
|
+
return {
|
|
3456
|
+
exposureFovScale: {
|
|
3457
|
+
label: "Exposure Fov Scale",
|
|
3458
|
+
type: "slider",
|
|
3459
|
+
min: 0,
|
|
3460
|
+
max: 1,
|
|
3461
|
+
step: 0.01,
|
|
3462
|
+
value: E.exposureFovScale
|
|
3463
|
+
},
|
|
3464
|
+
targetLuminance: {
|
|
3465
|
+
label: "Target Luminance",
|
|
3466
|
+
type: "slider",
|
|
3467
|
+
min: 0,
|
|
3468
|
+
max: 15,
|
|
3469
|
+
step: 0.1,
|
|
3470
|
+
value: E.targetLuminance
|
|
3471
|
+
},
|
|
3472
|
+
sharpenFilter_amount: {
|
|
3473
|
+
label: "Sharpen Filter Amount",
|
|
3474
|
+
type: "slider",
|
|
3475
|
+
min: 0,
|
|
3476
|
+
max: 100,
|
|
3477
|
+
step: 0.1,
|
|
3478
|
+
value: E.sharpenFilter_amount
|
|
3479
|
+
},
|
|
3480
|
+
UNREAL_BLOOM_ENABLED: {
|
|
3481
|
+
label: "Enable Bloom?",
|
|
3482
|
+
type: "boolean",
|
|
3483
|
+
value: E.UNREAL_BLOOM_ENABLED
|
|
3484
|
+
},
|
|
3485
|
+
UNREAL_BLOOM_STRENGTH: {
|
|
3486
|
+
label: "Bloom Strength",
|
|
3487
|
+
type: "slider",
|
|
3488
|
+
min: 0,
|
|
3489
|
+
max: 1,
|
|
3490
|
+
step: 0.01,
|
|
3491
|
+
value: E.UNREAL_BLOOM_STRENGTH
|
|
3492
|
+
},
|
|
3493
|
+
TRANSITION_MOVEMENT_SCALE: {
|
|
3494
|
+
label: "Transition Movement Speed",
|
|
3495
|
+
type: "slider",
|
|
3496
|
+
min: 0.2,
|
|
3497
|
+
max: 25,
|
|
3498
|
+
step: 0.1,
|
|
3499
|
+
value: E.TRANSITION_MOVEMENT_SCALE
|
|
3500
|
+
},
|
|
3501
|
+
temperature: {
|
|
3502
|
+
label: "Temperature / White Balance",
|
|
3503
|
+
type: "slider",
|
|
3504
|
+
min: 1e3,
|
|
3505
|
+
max: 12e3,
|
|
3506
|
+
step: 1,
|
|
3507
|
+
value: E.temperature
|
|
3508
|
+
},
|
|
3509
|
+
whitePoint: {
|
|
3510
|
+
label: "White Point",
|
|
3511
|
+
type: "color",
|
|
3512
|
+
min: null,
|
|
3513
|
+
max: null,
|
|
3514
|
+
step: null,
|
|
3515
|
+
value: I(E.whitePoint)
|
|
3516
|
+
},
|
|
3517
|
+
lut: {
|
|
3518
|
+
label: "Lut",
|
|
3519
|
+
type: "lut",
|
|
3520
|
+
items: C.map((D) => ({
|
|
3521
|
+
text: D,
|
|
3522
|
+
value: `https://cdn.visuado.com/luts/${D}.png`
|
|
3523
|
+
})),
|
|
3524
|
+
value: E.lut
|
|
3525
|
+
}
|
|
3526
|
+
};
|
|
3527
|
+
}
|
|
3528
|
+
return (L, C) => {
|
|
3529
|
+
const E = T("v-text-field"), D = T("v-slider"), g = T("v-checkbox"), A = T("v-btn"), R = T("v-select"), c = T("v-icon");
|
|
3530
|
+
return h(), F("div", Ia, [
|
|
3531
|
+
o("form", Ma, [
|
|
3532
|
+
o("div", Sa, [
|
|
3533
|
+
(h(!0), F(Ce, null, _e(a.value, (f, b, B) => (h(), F("div", {
|
|
3534
|
+
key: B,
|
|
3535
|
+
"d-block": ""
|
|
3536
|
+
}, [
|
|
3537
|
+
f.type === "slider" ? (h(), N(D, {
|
|
3538
|
+
key: 0,
|
|
3539
|
+
modelValue: a.value[b].value,
|
|
3540
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3541
|
+
onChange: s,
|
|
3542
|
+
max: f.max,
|
|
3543
|
+
min: f.min,
|
|
3544
|
+
step: f.step
|
|
3545
|
+
}, {
|
|
3546
|
+
prepend: M(() => [
|
|
3547
|
+
o("div", Ea, z(f.label), 1)
|
|
3548
|
+
]),
|
|
3549
|
+
append: M(() => [
|
|
3550
|
+
o("div", null, [
|
|
3551
|
+
y(E, {
|
|
3552
|
+
modelValue: a.value[b].value,
|
|
3553
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3554
|
+
"hide-details": "",
|
|
3555
|
+
dense: "",
|
|
3556
|
+
outlined: "",
|
|
3557
|
+
type: "number",
|
|
3558
|
+
max: f.max,
|
|
3559
|
+
min: f.min,
|
|
3560
|
+
step: f.step,
|
|
3561
|
+
style: { width: "90px" },
|
|
3562
|
+
onChange: s
|
|
3563
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue", "max", "min", "step"])
|
|
3564
|
+
])
|
|
3565
|
+
]),
|
|
3566
|
+
_: 2
|
|
3567
|
+
}, 1032, ["modelValue", "onUpdate:modelValue", "max", "min", "step"])) : H("", !0),
|
|
3568
|
+
f.type === "boolean" ? (h(), N(g, {
|
|
3569
|
+
key: 1,
|
|
3570
|
+
modelValue: a.value[b].value,
|
|
3571
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3572
|
+
onChange: s
|
|
3573
|
+
}, {
|
|
3574
|
+
prepend: M(() => [
|
|
3575
|
+
o("div", Fa, z(f.label), 1)
|
|
3576
|
+
]),
|
|
3577
|
+
append: M(() => [
|
|
3578
|
+
o("div", null, z(f.value), 1)
|
|
3579
|
+
]),
|
|
3580
|
+
_: 2
|
|
3581
|
+
}, 1032, ["modelValue", "onUpdate:modelValue"])) : H("", !0),
|
|
3582
|
+
f.type === "color" ? (h(), F("div", {
|
|
3583
|
+
key: 2,
|
|
3584
|
+
class: "d-flex",
|
|
3585
|
+
max: f.max,
|
|
3586
|
+
min: f.min,
|
|
3587
|
+
step: f.step
|
|
3588
|
+
}, [
|
|
3589
|
+
o("div", Ba, z(f.label), 1),
|
|
3590
|
+
o("div", Va, [
|
|
3591
|
+
de(o("input", {
|
|
3592
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3593
|
+
type: "color",
|
|
3594
|
+
onChange: s
|
|
3595
|
+
}, null, 40, Ua), [
|
|
3596
|
+
[$t, a.value[b].value]
|
|
3597
|
+
])
|
|
3598
|
+
]),
|
|
3599
|
+
o("div", null, [
|
|
3600
|
+
y(E, {
|
|
3601
|
+
modelValue: a.value[b].value,
|
|
3602
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3603
|
+
"hide-details": "",
|
|
3604
|
+
dense: "",
|
|
3605
|
+
outlined: "",
|
|
3606
|
+
readonly: "",
|
|
3607
|
+
type: "text",
|
|
3608
|
+
style: { width: "90px" },
|
|
3609
|
+
onChange: s
|
|
3610
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue"])
|
|
3611
|
+
])
|
|
3612
|
+
], 8, xa)) : H("", !0),
|
|
3613
|
+
f.type === "lut" ? (h(), F("div", Da, [
|
|
3614
|
+
o("div", Ra, [
|
|
3615
|
+
o("div", Ta, z(f.label), 1),
|
|
3616
|
+
o("div", null, [
|
|
3617
|
+
y(A, {
|
|
3618
|
+
class: "ml-2",
|
|
3619
|
+
"x-small": "",
|
|
3620
|
+
onClick: (U) => a.value[b].value = null
|
|
3621
|
+
}, {
|
|
3622
|
+
default: M(() => [
|
|
3623
|
+
se(" Clear Lut ")
|
|
3624
|
+
]),
|
|
3625
|
+
_: 2
|
|
3626
|
+
}, 1032, ["onClick"])
|
|
3627
|
+
])
|
|
3628
|
+
]),
|
|
3629
|
+
o("div", null, [
|
|
3630
|
+
o("div", Oa, [
|
|
3631
|
+
o("div", null, [
|
|
3632
|
+
y(R, {
|
|
3633
|
+
modelValue: a.value[b].value,
|
|
3634
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3635
|
+
items: f.items,
|
|
3636
|
+
"item-title": "title",
|
|
3637
|
+
"item-value": "value",
|
|
3638
|
+
dense: "",
|
|
3639
|
+
label: "Select Lut",
|
|
3640
|
+
onChange: s
|
|
3641
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue", "items"])
|
|
3642
|
+
])
|
|
3643
|
+
]),
|
|
3644
|
+
o("div", null, [
|
|
3645
|
+
$a,
|
|
3646
|
+
o("div", Ha, [
|
|
3647
|
+
o("div", null, [
|
|
3648
|
+
y(E, {
|
|
3649
|
+
modelValue: a.value[b].value,
|
|
3650
|
+
"onUpdate:modelValue": (U) => a.value[b].value = U,
|
|
3651
|
+
"hide-details": "",
|
|
3652
|
+
dense: "",
|
|
3653
|
+
type: "url",
|
|
3654
|
+
onChange: s
|
|
3655
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue"])
|
|
3656
|
+
])
|
|
3657
|
+
])
|
|
3658
|
+
])
|
|
3659
|
+
])
|
|
3660
|
+
])) : H("", !0)
|
|
3661
|
+
]))), 128))
|
|
3662
|
+
]),
|
|
3663
|
+
o("div", ja, [
|
|
3664
|
+
y(A, {
|
|
3665
|
+
onClick: C[0] || (C[0] = (f) => p())
|
|
3666
|
+
}, {
|
|
3667
|
+
default: M(() => [
|
|
3668
|
+
se("Reset")
|
|
3669
|
+
]),
|
|
3670
|
+
_: 1
|
|
3671
|
+
}),
|
|
3672
|
+
y(A, {
|
|
3673
|
+
class: "ml-2",
|
|
3674
|
+
onClick: C[1] || (C[1] = (f) => i())
|
|
3675
|
+
}, {
|
|
3676
|
+
default: M(() => [
|
|
3677
|
+
se(" Download Json "),
|
|
3678
|
+
y(c, { color: "black darken-1" }, {
|
|
3679
|
+
default: M(() => [
|
|
3680
|
+
se("mdi-download")
|
|
3681
|
+
]),
|
|
3682
|
+
_: 1
|
|
3683
|
+
})
|
|
3684
|
+
]),
|
|
3685
|
+
_: 1
|
|
3686
|
+
}),
|
|
3687
|
+
y(A, {
|
|
3688
|
+
class: "ml-2",
|
|
3689
|
+
onClick: C[2] || (C[2] = (f) => k())
|
|
3690
|
+
}, {
|
|
3691
|
+
default: M(() => [
|
|
3692
|
+
se(" Save Settings "),
|
|
3693
|
+
y(c, { color: "black darken-1" }, {
|
|
3694
|
+
default: M(() => [
|
|
3695
|
+
se("mdi-save")
|
|
3696
|
+
]),
|
|
3697
|
+
_: 1
|
|
3698
|
+
})
|
|
3699
|
+
]),
|
|
3700
|
+
_: 1
|
|
3701
|
+
})
|
|
3702
|
+
])
|
|
3703
|
+
])
|
|
3704
|
+
]);
|
|
3705
|
+
};
|
|
3706
|
+
}
|
|
3707
|
+
}), Na = /* @__PURE__ */ te(Pa, [["__scopeId", "data-v-a28b3f8d"]]), Ya = {
|
|
3708
|
+
class: "rotation-marker-svg",
|
|
3709
|
+
viewBox: "0 0 40 40",
|
|
3710
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
3711
|
+
}, Wa = /* @__PURE__ */ ft('<defs><radialGradient id="Gradient" cx="0" cy="0" r="0.9" fx="0" fy="0"><stop offset="0%" class="stop1"></stop><stop offset="60%" class="stop2"></stop><stop offset="90%" class="stop3"></stop></radialGradient><linearGradient id="LineGradient" gradientTransform="rotate(90)"><stop offset="0%" class="stop1"></stop><stop offset="75%" class="stop2"></stop><stop offset="100%" class="stop3"></stop></linearGradient></defs>', 1), Ga = ["transform"], Qa = /* @__PURE__ */ ft('<rect id="field-of-view-gradient" x="20" y="20" width="38" height="38" transform="rotate(0)" transform-origin="20 20" fill="url(#Gradient)"></rect><rect class="field-of-view-border" x="20" y="20" width="1" height="25" fill="url(#LineGradient)" transform="rotate(0)" transform-origin="20 20"></rect><rect class="field-of-view-border" x="19" y="19" width="1" height="25" fill="url(#LineGradient)" transform="rotate(-90)" transform-origin="20 20"></rect><circle cx="20" cy="20" r="5" fill="white"></circle><circle cx="20" cy="20" r="3" fill="red"></circle>', 5), za = [
|
|
3712
|
+
Qa
|
|
3713
|
+
], qa = /* @__PURE__ */ Q({
|
|
3714
|
+
__name: "VRotationMarker",
|
|
3715
|
+
props: {
|
|
3716
|
+
rotation: {}
|
|
3717
|
+
},
|
|
3718
|
+
setup(u) {
|
|
3719
|
+
return (t, e) => (h(), F("svg", Ya, [
|
|
3720
|
+
Wa,
|
|
3721
|
+
o("g", {
|
|
3722
|
+
"transform-origin": "20 20",
|
|
3723
|
+
transform: `rotate(${45 + t.rotation})`
|
|
3724
|
+
}, za, 8, Ga)
|
|
3725
|
+
]));
|
|
3726
|
+
}
|
|
3727
|
+
}), Za = { class: "minimap-wrapper d-flex align-stretch justify-space-between" }, Xa = { class: "minimap-container" }, Ka = /* @__PURE__ */ Q({
|
|
3728
|
+
__name: "VMiniMapMap",
|
|
3729
|
+
props: {
|
|
3730
|
+
backgroundImage: {},
|
|
3731
|
+
allCameras: {},
|
|
3732
|
+
minimapCamera: {},
|
|
3733
|
+
currentCamera: {},
|
|
3734
|
+
rotation: {},
|
|
3735
|
+
transformAngle: {}
|
|
3736
|
+
},
|
|
3737
|
+
setup(u) {
|
|
3738
|
+
const t = u, e = r(512), l = r(384), a = r(new xe.Vector3()), n = r(new xe.Object3D()), s = r({}), i = r(1), k = r(), p = V(() => t.allCameras), v = V(() => t.allCameras.find((b) => b.id === t.currentCamera)), m = V(() => t.rotation), I = V(() => new xe.Vector3(
|
|
3739
|
+
t.minimapCamera.position.x,
|
|
3740
|
+
t.minimapCamera.position.y,
|
|
3741
|
+
t.minimapCamera.position.z
|
|
3742
|
+
)), _ = V(() => parseFloat(v.value.floor_vertical_position)), L = V(() => p.value.map((b) => {
|
|
3743
|
+
const B = b.uposition.split(","), U = new xe.Vector3(
|
|
3744
|
+
B[0] - I.value.x,
|
|
3745
|
+
0,
|
|
3746
|
+
B[2] - I.value.z
|
|
3747
|
+
);
|
|
3748
|
+
return {
|
|
3749
|
+
...b,
|
|
3750
|
+
...R(a.value, U)
|
|
3751
|
+
};
|
|
3752
|
+
})), C = V(() => `background-image: url(${t.backgroundImage});`), E = V(() => {
|
|
3753
|
+
let b = i.value > 1 ? 1 : i.value;
|
|
3754
|
+
return b < 0.8 && (b = 0.4), `scale: ${b > 1 ? 1 : b}; transform: rotate(${t.transformAngle}deg);`;
|
|
3755
|
+
});
|
|
3756
|
+
ce(() => {
|
|
3757
|
+
c(), g(), f();
|
|
3758
|
+
const b = document.getElementById("moveableDiv");
|
|
3759
|
+
b && (k.value = new ResizeObserver(f).observe(b));
|
|
3760
|
+
}), Ht(() => {
|
|
3761
|
+
c(), g();
|
|
3762
|
+
}), Oe(() => {
|
|
3763
|
+
k.value && k.value.unobserve(document.getElementById("moveableDiv"));
|
|
3764
|
+
});
|
|
3765
|
+
function D(b) {
|
|
3766
|
+
return xe.MathUtils.degToRad(b);
|
|
3767
|
+
}
|
|
3768
|
+
function g() {
|
|
3769
|
+
n.value.rotation.x = 180, n.value.rotation.y = t.minimapCamera.rotation.y * -1, s.value = {
|
|
3770
|
+
transform: `rotateZ(${n.value.rotation.y}deg) rotateX(${n.value.rotation.x}deg)`
|
|
3771
|
+
};
|
|
3772
|
+
}
|
|
3773
|
+
function A(b) {
|
|
3774
|
+
return {
|
|
3775
|
+
top: `${Math.abs(b.top)}%`,
|
|
3776
|
+
left: `${Math.abs(b.left)}%`
|
|
3777
|
+
};
|
|
3778
|
+
}
|
|
3779
|
+
function R(b, B) {
|
|
3780
|
+
var U = new xe.Vector3();
|
|
3781
|
+
const $ = U.subVectors(b, B);
|
|
3782
|
+
return {
|
|
3783
|
+
relativePosition: $,
|
|
3784
|
+
left: $.x / e.value * 100,
|
|
3785
|
+
top: $.z / l.value * 100
|
|
3786
|
+
};
|
|
3787
|
+
}
|
|
3788
|
+
function c() {
|
|
3789
|
+
const b = t.minimapCamera.position.y - _.value;
|
|
3790
|
+
l.value = 2 * (b * Math.tan(D(t.minimapCamera.fovY / 2))), e.value = 512 / 384 * l.value;
|
|
3791
|
+
const B = l.value / 2, U = e.value / 2, $ = new xe.Vector3(U * -1, 0, B * -1);
|
|
3792
|
+
a.value = $;
|
|
3793
|
+
}
|
|
3794
|
+
function f() {
|
|
3795
|
+
const b = document.getElementById("moveableDiv");
|
|
3796
|
+
if (!b)
|
|
3797
|
+
return;
|
|
3798
|
+
const B = b.offsetHeight / 384 * 0.8, U = b.offsetWidth / 512 * 0.8;
|
|
3799
|
+
b.offsetHeight > b.offsetWidth ? i.value = U * 0.5 : i.value = B * 0.9;
|
|
3800
|
+
}
|
|
3801
|
+
return (b, B) => (h(), F("div", Za, [
|
|
3802
|
+
o("div", Xa, [
|
|
3803
|
+
o("div", {
|
|
3804
|
+
class: "web-minimap",
|
|
3805
|
+
style: re(E.value)
|
|
3806
|
+
}, [
|
|
3807
|
+
o("div", {
|
|
3808
|
+
class: "minimap-background-image",
|
|
3809
|
+
style: re(C.value)
|
|
3810
|
+
}, null, 4),
|
|
3811
|
+
o("div", {
|
|
3812
|
+
class: "center-pivot",
|
|
3813
|
+
style: re(s.value)
|
|
3814
|
+
}, [
|
|
3815
|
+
(h(!0), F(Ce, null, _e(L.value, (U) => (h(), F("div", {
|
|
3816
|
+
key: U.id
|
|
3817
|
+
}, [
|
|
3818
|
+
v.value.floorLevel === U.floorLevel ? (h(), F("div", {
|
|
3819
|
+
key: 0,
|
|
3820
|
+
class: "single-camera-marker",
|
|
3821
|
+
style: re(A(U))
|
|
3822
|
+
}, null, 4)) : H("", !0),
|
|
3823
|
+
v.value.id === U.id ? (h(), N(qa, {
|
|
3824
|
+
key: 1,
|
|
3825
|
+
class: "rotation-marker-component",
|
|
3826
|
+
rotation: m.value,
|
|
3827
|
+
style: re({ ...A(U) })
|
|
3828
|
+
}, null, 8, ["rotation", "style"])) : H("", !0)
|
|
3829
|
+
]))), 128))
|
|
3830
|
+
], 4)
|
|
3831
|
+
], 4)
|
|
3832
|
+
])
|
|
3833
|
+
]));
|
|
3834
|
+
}
|
|
3835
|
+
}), Ja = /* @__PURE__ */ te(Ka, [["__scopeId", "data-v-503cace2"]]), el = (u) => (ot("data-v-06db6e63"), u = u(), nt(), u), tl = /* @__PURE__ */ el(() => /* @__PURE__ */ o("div", { id: "filler-div" }, null, -1)), ol = {
|
|
3836
|
+
class: "moveable-body",
|
|
3837
|
+
id: "moveableDivHeader"
|
|
3838
|
+
}, nl = { class: "moveable-footer" }, al = /* @__PURE__ */ Q({
|
|
3839
|
+
__name: "VMoveable",
|
|
3840
|
+
emits: ["close", "transform"],
|
|
3841
|
+
setup(u, { emit: t }) {
|
|
3842
|
+
const e = t, l = r("big");
|
|
3843
|
+
ce(() => {
|
|
3844
|
+
a(document.getElementById("moveableDiv"));
|
|
3845
|
+
});
|
|
3846
|
+
function a(s) {
|
|
3847
|
+
const i = document.getElementById(s.id + "Header");
|
|
3848
|
+
if (!i)
|
|
3849
|
+
return;
|
|
3850
|
+
let k = 0, p = 0, v = 0, m = 0;
|
|
3851
|
+
i.addEventListener("touchstart", I, { passive: !1 }), i.addEventListener("touchend", L, { passive: !1 }), i.addEventListener("mousedown", I, { passive: !1 }), i.addEventListener("mouseup", L, { passive: !1 });
|
|
3852
|
+
function I(C) {
|
|
3853
|
+
C = C || window.event, C.preventDefault();
|
|
3854
|
+
let E = C;
|
|
3855
|
+
C.type === "touchstart" && (E = C.touches[0]), v = E.clientX, m = E.clientY, document.addEventListener("mouseup", L, { passive: !1 }), document.addEventListener("touchend", L, { passive: !1 }), document.addEventListener("mousemove", _, { passive: !1 }), document.addEventListener("touchmove", _, { passive: !1 });
|
|
3856
|
+
}
|
|
3857
|
+
function _(C) {
|
|
3858
|
+
C = C || window.event, C.preventDefault();
|
|
3859
|
+
let E = C;
|
|
3860
|
+
C.type === "touchmove" && (E = C.touches[0]), k = v - E.clientX, p = m - E.clientY, v = E.clientX, m = E.clientY, s.style.top = s.offsetTop - p + "px", s.style.left = s.offsetLeft - k + "px";
|
|
3861
|
+
}
|
|
3862
|
+
function L() {
|
|
3863
|
+
document.removeEventListener("mouseup", L, !1), document.removeEventListener("mousemove", _, !1), document.removeEventListener("touchend", L, !1), document.removeEventListener("touchmove", _, !1);
|
|
3864
|
+
}
|
|
3865
|
+
}
|
|
3866
|
+
function n() {
|
|
3867
|
+
l.value === "big" ? l.value = "small" : l.value = "big";
|
|
3868
|
+
}
|
|
3869
|
+
return (s, i) => {
|
|
3870
|
+
const k = T("v-btn");
|
|
3871
|
+
return h(), F("div", {
|
|
3872
|
+
id: "moveableDiv",
|
|
3873
|
+
class: ye(["big d-flex justify-space-between flex-column align-center sizer", l.value])
|
|
3874
|
+
}, [
|
|
3875
|
+
y(k, {
|
|
3876
|
+
class: "close-icon",
|
|
3877
|
+
icon: "mdi-window-close",
|
|
3878
|
+
size: "x-small",
|
|
3879
|
+
onClick: i[0] || (i[0] = (p) => e("close"))
|
|
3880
|
+
}),
|
|
3881
|
+
y(k, {
|
|
3882
|
+
class: "resize-icon",
|
|
3883
|
+
icon: "mdi-image-size-select-small",
|
|
3884
|
+
size: "x-small",
|
|
3885
|
+
onClick: n,
|
|
3886
|
+
title: "Resize"
|
|
3887
|
+
}),
|
|
3888
|
+
y(k, {
|
|
3889
|
+
class: "rotate-icon",
|
|
3890
|
+
size: "x-small",
|
|
3891
|
+
icon: "mdi mdi-rotate-right",
|
|
3892
|
+
onClick: i[1] || (i[1] = (p) => e("transform")),
|
|
3893
|
+
title: "Rotate"
|
|
3894
|
+
}),
|
|
3895
|
+
tl,
|
|
3896
|
+
o("div", ol, [
|
|
3897
|
+
ie(s.$slots, "body", { class: "slot" }, void 0, !0)
|
|
3898
|
+
]),
|
|
3899
|
+
o("div", nl, [
|
|
3900
|
+
ie(s.$slots, "footer", {}, void 0, !0)
|
|
3901
|
+
])
|
|
3902
|
+
], 2);
|
|
3903
|
+
};
|
|
3904
|
+
}
|
|
3905
|
+
}), ll = /* @__PURE__ */ te(al, [["__scopeId", "data-v-06db6e63"]]), il = /* @__PURE__ */ Q({
|
|
3906
|
+
__name: "VMinimapCompass",
|
|
3907
|
+
props: {
|
|
3908
|
+
scale: {},
|
|
3909
|
+
minimapCamera: {},
|
|
3910
|
+
transformAngle: {}
|
|
3911
|
+
},
|
|
3912
|
+
setup(u) {
|
|
3913
|
+
const t = u, e = V(() => t.minimapCamera.rotation ? t.minimapCamera.rotation.y + t.transformAngle - 90 : 0);
|
|
3914
|
+
return (l, a) => (h(), F("div", {
|
|
3915
|
+
class: "minimap-compass",
|
|
3916
|
+
style: re({ scale: l.scale })
|
|
3917
|
+
}, [
|
|
3918
|
+
y(Ke, {
|
|
3919
|
+
class: "north-indicator",
|
|
3920
|
+
longitude: e.value
|
|
3921
|
+
}, null, 8, ["longitude"])
|
|
3922
|
+
], 4));
|
|
3923
|
+
}
|
|
3924
|
+
}), sl = /* @__PURE__ */ te(il, [["__scopeId", "data-v-cdeea259"]]), rl = { class: "ss-wrapper" }, ul = { class: "slider" }, cl = { class: "minimap-sun-slider" }, dl = {
|
|
3925
|
+
key: 0,
|
|
3926
|
+
class: "time-label"
|
|
3927
|
+
}, vl = /* @__PURE__ */ Q({
|
|
3928
|
+
__name: "VSunSimulationSlider",
|
|
3929
|
+
props: {
|
|
3930
|
+
minimapJSON: {},
|
|
3931
|
+
level: {},
|
|
3932
|
+
root: {}
|
|
3933
|
+
},
|
|
3934
|
+
emits: ["setBackgroundImage"],
|
|
3935
|
+
setup(u, { emit: t }) {
|
|
3936
|
+
const e = u, l = t, a = r((/* @__PURE__ */ new Date()).getHours()), n = r(!0), s = r(!0), i = r(""), k = r(/* @__PURE__ */ new Map()), p = pe("localMode"), v = pe("fileLoader"), m = V(() => e.minimapJSON[e.level]), I = V(() => `${Math.floor(a.value).toString().padStart(2, "0")}:00`), _ = V(() => {
|
|
3937
|
+
if (m.value.sunsimFilesTimeStamps[a.value]) {
|
|
3938
|
+
const A = m.value.sunsimFilesTimeStamps[a.value].split(" ");
|
|
3939
|
+
return `${A[0]} ${A[1]}`;
|
|
3940
|
+
}
|
|
3941
|
+
return "";
|
|
3942
|
+
});
|
|
3943
|
+
ce(async () => {
|
|
3944
|
+
i.value = await E(
|
|
3945
|
+
m.value.sunsimFiles[a.value]
|
|
3946
|
+
), s.value = !1;
|
|
3947
|
+
const A = await C(e.minimapJSON);
|
|
3948
|
+
k.value = A, n.value = !1, l("setBackgroundImage", L(e.level, a.value));
|
|
3949
|
+
}), Z(a, () => {
|
|
3950
|
+
const A = L(e.level, a.value);
|
|
3951
|
+
l("setBackgroundImage", A);
|
|
3952
|
+
}), Z(
|
|
3953
|
+
() => e.level,
|
|
3954
|
+
() => {
|
|
3955
|
+
l("setBackgroundImage", L(e.level, a.value));
|
|
3956
|
+
},
|
|
3957
|
+
{ immediate: !0 }
|
|
3958
|
+
);
|
|
3959
|
+
function L(A, R) {
|
|
3960
|
+
return k.value.get(`sunsim${A}_${R}`) ? k.value.get(`sunsim${A}_${R}`) : "";
|
|
3961
|
+
}
|
|
3962
|
+
async function C(A) {
|
|
3963
|
+
let R = /* @__PURE__ */ new Map();
|
|
3964
|
+
for (let c = 0; c < A.length; c++) {
|
|
3965
|
+
const f = A[c].sunsimFiles;
|
|
3966
|
+
for (let b = 0; b < f.length; b++) {
|
|
3967
|
+
const B = f[b];
|
|
3968
|
+
try {
|
|
3969
|
+
const U = B, $ = B.split("."), q = await E(e.root + U);
|
|
3970
|
+
R.set($[0], q);
|
|
3971
|
+
} catch {
|
|
3972
|
+
continue;
|
|
3973
|
+
}
|
|
3974
|
+
}
|
|
3975
|
+
}
|
|
3976
|
+
return R;
|
|
3977
|
+
}
|
|
3978
|
+
async function E(A) {
|
|
3979
|
+
let R = A;
|
|
3980
|
+
p && (R = `${v.getURL(A)}`);
|
|
3981
|
+
const f = await (await fetch(R)).blob(), b = await g(f);
|
|
3982
|
+
return D(b);
|
|
3983
|
+
}
|
|
3984
|
+
function D(A) {
|
|
3985
|
+
return "data:image/jpeg;base64," + A;
|
|
3986
|
+
}
|
|
3987
|
+
async function g(A) {
|
|
3988
|
+
return new Promise((R, c) => {
|
|
3989
|
+
const f = new FileReader();
|
|
3990
|
+
f.onload = () => {
|
|
3991
|
+
const b = f.result.split(",")[1];
|
|
3992
|
+
R(b);
|
|
3993
|
+
}, f.onerror = c, f.readAsDataURL(A);
|
|
3994
|
+
});
|
|
3995
|
+
}
|
|
3996
|
+
return (A, R) => {
|
|
3997
|
+
const c = T("v-progress-linear"), f = T("v-icon"), b = T("v-slider");
|
|
3998
|
+
return h(), F("div", rl, [
|
|
3999
|
+
o("div", ul, [
|
|
4000
|
+
o("div", cl, [
|
|
4001
|
+
n.value ? (h(), N(c, {
|
|
4002
|
+
key: 0,
|
|
4003
|
+
indeterminate: "",
|
|
4004
|
+
rounded: "",
|
|
4005
|
+
height: "6",
|
|
4006
|
+
color: "grey lighten-1",
|
|
4007
|
+
class: "mr-2"
|
|
4008
|
+
})) : (h(), N(b, {
|
|
4009
|
+
key: 1,
|
|
4010
|
+
modelValue: a.value,
|
|
4011
|
+
"onUpdate:modelValue": R[0] || (R[0] = (B) => a.value = B),
|
|
4012
|
+
min: 0,
|
|
4013
|
+
max: 23,
|
|
4014
|
+
step: 1,
|
|
4015
|
+
color: "#373737",
|
|
4016
|
+
"track-color": "#373737",
|
|
4017
|
+
"thumb-color": "#373737",
|
|
4018
|
+
"hide-details": !0
|
|
4019
|
+
}, {
|
|
4020
|
+
prepend: M(() => [
|
|
4021
|
+
y(f, { color: "#ffab02" }, {
|
|
4022
|
+
default: M(() => [
|
|
4023
|
+
se("mdi-white-balance-sunny")
|
|
4024
|
+
]),
|
|
4025
|
+
_: 1
|
|
4026
|
+
})
|
|
4027
|
+
]),
|
|
4028
|
+
_: 1
|
|
4029
|
+
}, 8, ["modelValue"]))
|
|
4030
|
+
]),
|
|
4031
|
+
n.value ? H("", !0) : (h(), F("div", dl, z(_.value) + " " + z(I.value), 1))
|
|
4032
|
+
])
|
|
4033
|
+
]);
|
|
4034
|
+
};
|
|
4035
|
+
}
|
|
4036
|
+
}), ml = /* @__PURE__ */ te(vl, [["__scopeId", "data-v-daf8e1d9"]]), pl = /* @__PURE__ */ Q({
|
|
4037
|
+
__name: "VMiniMap",
|
|
4038
|
+
props: {
|
|
4039
|
+
minimapJSON: {},
|
|
4040
|
+
rootUrl: {},
|
|
4041
|
+
backgroundImage: {},
|
|
4042
|
+
allCameras: {},
|
|
4043
|
+
minimapCamera: {},
|
|
4044
|
+
currentCamera: {},
|
|
4045
|
+
level: {},
|
|
4046
|
+
rotation: {}
|
|
4047
|
+
},
|
|
4048
|
+
emits: ["setBackgroundImage", "close"],
|
|
4049
|
+
setup(u, { emit: t }) {
|
|
4050
|
+
const e = t, l = r(0), a = V(() => {
|
|
4051
|
+
let i = 1;
|
|
4052
|
+
return l.value !== 0 && (Math.abs(l.value) % 180 === 0 ? i = 1 : i = -1), i;
|
|
4053
|
+
});
|
|
4054
|
+
function n(i) {
|
|
4055
|
+
e("setBackgroundImage", i);
|
|
4056
|
+
}
|
|
4057
|
+
function s() {
|
|
4058
|
+
l.value = l.value + 90;
|
|
4059
|
+
}
|
|
4060
|
+
return (i, k) => (h(), N(ll, {
|
|
4061
|
+
onClose: k[0] || (k[0] = (p) => e("close")),
|
|
4062
|
+
onTransform: s
|
|
4063
|
+
}, {
|
|
4064
|
+
body: M(() => [
|
|
4065
|
+
y(sl, {
|
|
4066
|
+
scale: a.value,
|
|
4067
|
+
minimapCamera: i.minimapCamera,
|
|
4068
|
+
transformAngle: l.value
|
|
4069
|
+
}, null, 8, ["scale", "minimapCamera", "transformAngle"]),
|
|
4070
|
+
o("div", null, [
|
|
4071
|
+
y(Ja, {
|
|
4072
|
+
transformAngle: l.value,
|
|
4073
|
+
allCameras: i.allCameras,
|
|
4074
|
+
backgroundImage: i.backgroundImage,
|
|
4075
|
+
rotation: i.rotation,
|
|
4076
|
+
currentCamera: i.currentCamera,
|
|
4077
|
+
minimapCamera: i.minimapCamera
|
|
4078
|
+
}, null, 8, ["transformAngle", "allCameras", "backgroundImage", "rotation", "currentCamera", "minimapCamera"])
|
|
4079
|
+
])
|
|
4080
|
+
]),
|
|
4081
|
+
footer: M(() => [
|
|
4082
|
+
y(ml, {
|
|
4083
|
+
minimapJSON: i.minimapJSON,
|
|
4084
|
+
root: `${i.rootUrl}/minimap/`,
|
|
4085
|
+
level: i.level,
|
|
4086
|
+
onSetBackgroundImage: n
|
|
4087
|
+
}, null, 8, ["minimapJSON", "root", "level"])
|
|
4088
|
+
]),
|
|
4089
|
+
_: 1
|
|
4090
|
+
}));
|
|
4091
|
+
}
|
|
4092
|
+
}), vt = /* @__PURE__ */ te(pl, [["__scopeId", "data-v-b903220b"]]);
|
|
4093
|
+
class hl {
|
|
4094
|
+
constructor(t, e) {
|
|
4095
|
+
J(this, "_doc");
|
|
4096
|
+
J(this, "_elemId");
|
|
4097
|
+
J(this, "_state");
|
|
4098
|
+
this._doc = t, this._elemId = e, this._state = { isActive: !1 };
|
|
4099
|
+
}
|
|
4100
|
+
get isActive() {
|
|
4101
|
+
return this._state.isActive;
|
|
4102
|
+
}
|
|
4103
|
+
setup() {
|
|
4104
|
+
const t = [
|
|
4105
|
+
"fullscreenchange",
|
|
4106
|
+
"webkitfullscreenchange",
|
|
4107
|
+
"mozfullscreenchange",
|
|
4108
|
+
"msfullscreenchange"
|
|
4109
|
+
], e = this._getElement();
|
|
4110
|
+
t.forEach((l) => {
|
|
4111
|
+
e.addEventListener(l, this._toggle.bind(this), !1);
|
|
4112
|
+
});
|
|
4113
|
+
}
|
|
4114
|
+
toggle() {
|
|
4115
|
+
this.isActive ? this._exit() : this._enter();
|
|
4116
|
+
}
|
|
4117
|
+
_enter() {
|
|
4118
|
+
const t = this._getElement(), e = t.requestFullscreen || t.webkitRequestFullscreen || t.mozRequestFullscreen || t.msRequestFullscreen;
|
|
4119
|
+
e && e.apply(t);
|
|
4120
|
+
}
|
|
4121
|
+
_exit() {
|
|
4122
|
+
const t = this._doc.exitFullscreen || this._doc.webkitExitFullscreen || this._doc.mozExitFullscreen || this._doc.document.msExitFullscreen;
|
|
4123
|
+
t && t.apply(document);
|
|
4124
|
+
}
|
|
4125
|
+
_getElement() {
|
|
4126
|
+
return this._doc.getElementById(this._elemId);
|
|
4127
|
+
}
|
|
4128
|
+
_toggle() {
|
|
4129
|
+
const t = !!(this._doc.fullscreenElement || this._doc.webkitFullscreenElement || this._doc.mozFullscreenElement || this._doc.msFullscreenElement);
|
|
4130
|
+
this._state.isActive = t;
|
|
4131
|
+
}
|
|
4132
|
+
}
|
|
4133
|
+
function We(u) {
|
|
4134
|
+
return ("0" + u).slice(-2);
|
|
4135
|
+
}
|
|
4136
|
+
function fl() {
|
|
4137
|
+
const u = /* @__PURE__ */ new Date();
|
|
4138
|
+
return [
|
|
4139
|
+
u.getFullYear().toString(),
|
|
4140
|
+
We(u.getMonth() + 1),
|
|
4141
|
+
We(u.getDate()),
|
|
4142
|
+
" ",
|
|
4143
|
+
We(u.getHours()),
|
|
4144
|
+
We(u.getMinutes()),
|
|
4145
|
+
We(u.getSeconds())
|
|
4146
|
+
].join("");
|
|
4147
|
+
}
|
|
4148
|
+
function gl() {
|
|
4149
|
+
return "Visuado-Snapshot-" + fl();
|
|
4150
|
+
}
|
|
4151
|
+
class wl {
|
|
4152
|
+
// private cameraParams: any
|
|
4153
|
+
constructor(t, e) {
|
|
4154
|
+
J(this, "data");
|
|
4155
|
+
this.data = t;
|
|
4156
|
+
}
|
|
4157
|
+
download(t = null) {
|
|
4158
|
+
t = t || gl();
|
|
4159
|
+
const e = document.createElement("a");
|
|
4160
|
+
typeof e.download == "string" ? (document.body.appendChild(e), e.download = t, e.href = this.data, e.click(), document.body.removeChild(e)) : location.replace(this.data);
|
|
4161
|
+
}
|
|
4162
|
+
}
|
|
4163
|
+
const kl = { class: "virtual-tour-wrapper" }, bl = {
|
|
4164
|
+
key: 0,
|
|
4165
|
+
class: "player-error"
|
|
4166
|
+
}, yl = { class: "player-and-components-wrapper" }, _l = { key: 1 }, Cl = {
|
|
4167
|
+
key: 3,
|
|
4168
|
+
class: "settings-panel"
|
|
4169
|
+
}, Al = {
|
|
4170
|
+
key: 0,
|
|
4171
|
+
class: "compass-wrapper"
|
|
4172
|
+
}, Ll = {
|
|
4173
|
+
key: 1,
|
|
4174
|
+
class: "btn-placeholder mr-2"
|
|
4175
|
+
}, Il = {
|
|
4176
|
+
key: 2,
|
|
4177
|
+
class: "btn-placeholder"
|
|
4178
|
+
}, Ml = { key: 0 }, Sl = /* @__PURE__ */ Q({
|
|
4179
|
+
__name: "VVirtualTour",
|
|
4180
|
+
props: {
|
|
4181
|
+
fileLoader: {},
|
|
4182
|
+
cdnRoot: {},
|
|
4183
|
+
projectSlug: {},
|
|
4184
|
+
apartmentId: {},
|
|
4185
|
+
defaultInteriorId: {},
|
|
4186
|
+
validInteriorIds: { default: () => [] },
|
|
4187
|
+
viewModes: { default: () => ["virtualTour", "slideShow"] },
|
|
4188
|
+
displayViewModeSwitch: { type: Boolean, default: !0 },
|
|
4189
|
+
websiteUrl: {},
|
|
4190
|
+
i18n: {},
|
|
4191
|
+
showCarousel: { type: Boolean, default: !0 },
|
|
4192
|
+
showTimeOfDay: { type: Boolean, default: !0 },
|
|
4193
|
+
showCompass: { type: Boolean, default: !0 },
|
|
4194
|
+
showFullScreen: { type: Boolean, default: !0 },
|
|
4195
|
+
showSnapshot: { type: Boolean, default: !0 },
|
|
4196
|
+
showShare: { type: Boolean, default: !0 },
|
|
4197
|
+
showInteriorOptions: { type: Boolean, default: !0 },
|
|
4198
|
+
showMiniMap: { type: Boolean, default: !0 },
|
|
4199
|
+
showFloorLevel: { type: Boolean, default: !0 },
|
|
4200
|
+
defaultWaypointIndex: { default: 0 },
|
|
4201
|
+
defaultViewMode: { default: "virtualTour" },
|
|
4202
|
+
mouseSensitivity: { default: 1 },
|
|
4203
|
+
isInIframe: { type: Boolean, default: !1 },
|
|
4204
|
+
adminMode: { type: Boolean, default: !1 },
|
|
4205
|
+
playerSettings: { default: () => ({
|
|
4206
|
+
temperature: 6500,
|
|
4207
|
+
targetLuminance: 1,
|
|
4208
|
+
exposureFovScale: 0.3,
|
|
4209
|
+
UNREAL_BLOOM_ENABLED: !0,
|
|
4210
|
+
sharpenFilter_amount: 0.6,
|
|
4211
|
+
UNREAL_BLOOM_STRENGTH: 0.3,
|
|
4212
|
+
TRANSITION_MOVEMENT_SCALE: 1.3,
|
|
4213
|
+
whitePoint: [1, 1, 1]
|
|
4214
|
+
}) }
|
|
4215
|
+
},
|
|
4216
|
+
emits: ["onSnapshot", "saveSettings", "onInteriorUpdate", "onCameraUpdate"],
|
|
4217
|
+
setup(u, { emit: t }) {
|
|
4218
|
+
const e = u, l = t, a = r(!1), n = r(!1), s = r(), i = r(), k = r(), p = r(), v = r(), m = r(0), I = r(), _ = r(), L = r(), C = r(0), E = r(0), D = r(0), g = r(!1), A = r(!1), R = r(), c = r(!1), f = r(new hl(document, "player-wrapper")), b = V(() => !!e.fileLoader), B = V(() => {
|
|
4219
|
+
let d = `${e.cdnRoot}/${e.projectSlug}`;
|
|
4220
|
+
return e.fileLoader && (d = ""), Vt(d);
|
|
4221
|
+
}), U = V(() => `${B.value}/${$.value}/${e.apartmentId}`), $ = V(() => I.value), q = V(() => i.value ? i.value.cameras : []), ee = V(() => {
|
|
4222
|
+
if (i.value) {
|
|
4223
|
+
const d = i.value.cameras.map(
|
|
4224
|
+
(G) => G.floorLevel
|
|
4225
|
+
);
|
|
4226
|
+
let O = [...new Set(d)];
|
|
4227
|
+
return O = O.sort(), O;
|
|
4228
|
+
} else
|
|
4229
|
+
return [];
|
|
4230
|
+
}), w = V(() => {
|
|
4231
|
+
let d = 0;
|
|
4232
|
+
if (i.value) {
|
|
4233
|
+
const O = i.value.cameras.map(
|
|
4234
|
+
(Ue) => Ue.floorLevel
|
|
4235
|
+
);
|
|
4236
|
+
let G = [...new Set(O)];
|
|
4237
|
+
G = G.sort();
|
|
4238
|
+
const ae = G.findIndex(
|
|
4239
|
+
(Ue) => Ue === E.value
|
|
4240
|
+
);
|
|
4241
|
+
ae !== -1 && (d = ae);
|
|
4242
|
+
}
|
|
4243
|
+
return d;
|
|
4244
|
+
}), x = V(() => Y.value.findIndex(
|
|
4245
|
+
(d) => d.archetypeID === I.value
|
|
4246
|
+
)), W = V(() => k.value ? k.value.cameras.map((d) => ({
|
|
4247
|
+
...d,
|
|
4248
|
+
thumbnailUrl: et(
|
|
4249
|
+
`${B.value}/${$.value}/${e.apartmentId}/thumbs/200/${d.id}.jpg`
|
|
4250
|
+
),
|
|
4251
|
+
imageUrl: et(
|
|
4252
|
+
`${B.value}/${$.value}/${e.apartmentId}/images/1600/${d.id}.jpg`
|
|
4253
|
+
)
|
|
4254
|
+
})) : []), S = V(() => !W.value || !W.value[m.value] ? "" : W.value[m.value].imageUrl), Y = V(() => {
|
|
4255
|
+
let d = [];
|
|
4256
|
+
return s.value && (d = s.value.archetypes), e.validInteriorIds.length ? d.filter(
|
|
4257
|
+
(O) => e.validInteriorIds.includes(O.archetypeID)
|
|
4258
|
+
) : d;
|
|
4259
|
+
}), X = V(() => k.value ? Y.value.map((d) => ({
|
|
4260
|
+
...d,
|
|
4261
|
+
url: `${B.value}/${d.archetypeID}/${e.apartmentId}/thumbs/200/${W.value[m.value].id}.jpg`
|
|
4262
|
+
})) : []), K = V(() => {
|
|
4263
|
+
if (p.value)
|
|
4264
|
+
return p.value.storeys[w.value];
|
|
4265
|
+
}), ne = V(() => i.value && i.value.timeInHours), ue = V(() => {
|
|
4266
|
+
if (i.value && i.value.timeInHours && e.showTimeOfDay)
|
|
4267
|
+
return Bt(i.value.timeInHours);
|
|
4268
|
+
}), ve = V(() => R.value ? R.value : `${B.value}/${$.value}/${e.apartmentId}/minimap/sunsim0_13.jpg`);
|
|
4269
|
+
De(
|
|
4270
|
+
"i18n",
|
|
4271
|
+
e.i18n ? new Le(e.i18n.labels, e.i18n.language) : new Le()
|
|
4272
|
+
), De("localMode", b.value), De("fileLoader", e.fileLoader), Z([() => e.projectSlug, () => e.cdnRoot], async () => {
|
|
4273
|
+
await he(), ge(), await fe();
|
|
4274
|
+
}), Z(
|
|
4275
|
+
() => e.defaultViewMode,
|
|
4276
|
+
(d) => {
|
|
4277
|
+
d === "virtualTour" && (g.value = !1), d === "slideShow" && (g.value = !0, c.value = !0);
|
|
4278
|
+
},
|
|
4279
|
+
{ immediate: !0 }
|
|
4280
|
+
), Z(p, (d) => {
|
|
4281
|
+
if (d.storeys[w.value]) {
|
|
4282
|
+
const O = d.storeys[w.value].defaultSunsimFile;
|
|
4283
|
+
R.value = `${B.value}/${$.value}/${e.apartmentId}/minimap/${O}`;
|
|
4284
|
+
}
|
|
4285
|
+
}), ce(async () => {
|
|
4286
|
+
try {
|
|
4287
|
+
await he(), ge(), await fe(), f.value.setup(), Ie();
|
|
4288
|
+
} catch {
|
|
4289
|
+
n.value = !0;
|
|
4290
|
+
}
|
|
4291
|
+
});
|
|
4292
|
+
async function he() {
|
|
4293
|
+
s.value = await Me(B.value);
|
|
4294
|
+
}
|
|
4295
|
+
async function fe() {
|
|
4296
|
+
if (i.value = await Pe(
|
|
4297
|
+
B.value,
|
|
4298
|
+
$.value,
|
|
4299
|
+
e.apartmentId
|
|
4300
|
+
), i.value && (_.value = i.value.cameras.find(() => !0).id), k.value = await Ve(
|
|
4301
|
+
B.value,
|
|
4302
|
+
$.value,
|
|
4303
|
+
e.apartmentId
|
|
4304
|
+
), k.value) {
|
|
4305
|
+
let d = e.defaultWaypointIndex !== null ? e.defaultWaypointIndex : 0;
|
|
4306
|
+
m.value = d, _.value = k.value.cameras[d].id, L.value = k.value.cameras[d].id;
|
|
4307
|
+
}
|
|
4308
|
+
e.showMiniMap && (p.value = await Ge(
|
|
4309
|
+
B.value,
|
|
4310
|
+
$.value,
|
|
4311
|
+
e.apartmentId
|
|
4312
|
+
));
|
|
4313
|
+
}
|
|
4314
|
+
function ge() {
|
|
4315
|
+
let d = e.defaultInteriorId;
|
|
4316
|
+
d || (d = s.value.defaultArchetypeID), e.validInteriorIds.length && !e.validInteriorIds.includes(d) && (d = e.validInteriorIds[0]), d || (d = s.value.archetypes[0].archetypeID), I.value = d;
|
|
4317
|
+
}
|
|
4318
|
+
function Ie() {
|
|
4319
|
+
const d = document.getElementById("main-canvas");
|
|
4320
|
+
d.addEventListener("touchmove", O, { passive: !1 });
|
|
4321
|
+
function O(ae) {
|
|
4322
|
+
ae.preventDefault(), window.scrollBy(0, 0);
|
|
4323
|
+
}
|
|
4324
|
+
d.addEventListener(
|
|
4325
|
+
"mouseenter",
|
|
4326
|
+
() => {
|
|
4327
|
+
document.addEventListener("wheel", G, {
|
|
4328
|
+
passive: !1
|
|
4329
|
+
});
|
|
4330
|
+
},
|
|
4331
|
+
{ passive: !1 }
|
|
4332
|
+
), d.addEventListener(
|
|
4333
|
+
"mouseleave",
|
|
4334
|
+
() => {
|
|
4335
|
+
document.removeEventListener("wheel", G);
|
|
4336
|
+
},
|
|
4337
|
+
{ passive: !1 }
|
|
4338
|
+
);
|
|
4339
|
+
function G(ae) {
|
|
4340
|
+
ae.preventDefault(), window.scrollBy(0, 0);
|
|
4341
|
+
}
|
|
4342
|
+
}
|
|
4343
|
+
async function Me(d) {
|
|
4344
|
+
try {
|
|
4345
|
+
return await Qe(`${d}/config.json`);
|
|
4346
|
+
} catch (O) {
|
|
4347
|
+
console.error(
|
|
4348
|
+
"Error loading config.json - ",
|
|
4349
|
+
`${d}/config.json`,
|
|
4350
|
+
O
|
|
4351
|
+
);
|
|
4352
|
+
return;
|
|
4353
|
+
}
|
|
4354
|
+
}
|
|
4355
|
+
async function Pe(d, O, G) {
|
|
4356
|
+
try {
|
|
4357
|
+
return await Qe(
|
|
4358
|
+
`${d}/${O}/${G}/apartment.json`
|
|
4359
|
+
);
|
|
4360
|
+
} catch (ae) {
|
|
4361
|
+
console.error(
|
|
4362
|
+
"Error loading apartment.json - ",
|
|
4363
|
+
`${d}/${O}/${G}/apartment.json`,
|
|
4364
|
+
ae
|
|
4365
|
+
);
|
|
4366
|
+
return;
|
|
4367
|
+
}
|
|
4368
|
+
}
|
|
4369
|
+
async function Ve(d, O, G) {
|
|
4370
|
+
try {
|
|
4371
|
+
return await Qe(
|
|
4372
|
+
`${d}/${O}/${G}/thumbs.json`
|
|
4373
|
+
);
|
|
4374
|
+
} catch {
|
|
4375
|
+
console.error(
|
|
4376
|
+
"Error loading thumbs.json - ",
|
|
4377
|
+
`${d}/${O}/${G}/thumbs.json`
|
|
4378
|
+
);
|
|
4379
|
+
return;
|
|
4380
|
+
}
|
|
4381
|
+
}
|
|
4382
|
+
async function Ge(d, O, G) {
|
|
4383
|
+
try {
|
|
4384
|
+
return await Qe(
|
|
4385
|
+
`${d}/${O}/${G}/minimap/minimap.json`
|
|
4386
|
+
);
|
|
4387
|
+
} catch {
|
|
4388
|
+
console.error(
|
|
4389
|
+
"Error loading minimap.json - ",
|
|
4390
|
+
`${d}/${O}/${G}/minimap/minimap.json`
|
|
4391
|
+
);
|
|
4392
|
+
return;
|
|
4393
|
+
}
|
|
4394
|
+
}
|
|
4395
|
+
function Ae() {
|
|
4396
|
+
let d = m.value + 1;
|
|
4397
|
+
d >= W.value.length && (d = 0), m.value = d, P(W.value[m.value].id);
|
|
4398
|
+
}
|
|
4399
|
+
function Ne() {
|
|
4400
|
+
let d = m.value - 1;
|
|
4401
|
+
d < 0 && (d = W.value.length - 1), m.value = d, P(W.value[m.value].id);
|
|
4402
|
+
}
|
|
4403
|
+
function j(d, O = !0) {
|
|
4404
|
+
let G = W.value.findIndex((ae) => ae.id === d);
|
|
4405
|
+
G != -1 && (m.value = G, O && P(d));
|
|
4406
|
+
}
|
|
4407
|
+
function P(d) {
|
|
4408
|
+
_.value = d;
|
|
4409
|
+
}
|
|
4410
|
+
function le(d) {
|
|
4411
|
+
I.value = d, l("onInteriorUpdate", d), l("onCameraUpdate", L.value, i.value);
|
|
4412
|
+
}
|
|
4413
|
+
function Se(d) {
|
|
4414
|
+
j(d, !1), L.value = d, l("onCameraUpdate", d, i.value);
|
|
4415
|
+
}
|
|
4416
|
+
function Ee(d) {
|
|
4417
|
+
C.value = d;
|
|
4418
|
+
}
|
|
4419
|
+
function Fe(d) {
|
|
4420
|
+
E.value = d;
|
|
4421
|
+
}
|
|
4422
|
+
function we(d) {
|
|
4423
|
+
D.value = d;
|
|
4424
|
+
}
|
|
4425
|
+
function ke(d, O) {
|
|
4426
|
+
}
|
|
4427
|
+
function rt(d) {
|
|
4428
|
+
v.value = d, e.playerSettings && v.value.updateSettings(e.playerSettings);
|
|
4429
|
+
}
|
|
4430
|
+
function Mt() {
|
|
4431
|
+
f.value.toggle(), window.scrollTo({ top: 150, behavior: "smooth" });
|
|
4432
|
+
}
|
|
4433
|
+
function St() {
|
|
4434
|
+
g.value = !g.value;
|
|
4435
|
+
}
|
|
4436
|
+
function ut(d) {
|
|
4437
|
+
R.value = d;
|
|
4438
|
+
}
|
|
4439
|
+
async function Et() {
|
|
4440
|
+
const d = 180 / Math.PI, O = await v.value.takePhoto(), G = v.value.getRotationEuler(), ae = v.value.getCurrentCamera(), Ue = new wl(O, ae), Ut = [
|
|
4441
|
+
G.x * d,
|
|
4442
|
+
G.y * d,
|
|
4443
|
+
G.z * d
|
|
4444
|
+
];
|
|
4445
|
+
return l("onSnapshot", Ue, Ut), Ue;
|
|
4446
|
+
}
|
|
4447
|
+
function et(d) {
|
|
4448
|
+
let O = d;
|
|
4449
|
+
return b.value ? O = `${e.fileLoader.getURL(d)}` : e.adminMode && (O = O + `?v=${Date.now()}`), O;
|
|
4450
|
+
}
|
|
4451
|
+
async function Qe(d) {
|
|
4452
|
+
const O = et(d);
|
|
4453
|
+
try {
|
|
4454
|
+
return (await gt.get(O)).data;
|
|
4455
|
+
} catch (G) {
|
|
4456
|
+
throw new Error(G);
|
|
4457
|
+
}
|
|
4458
|
+
}
|
|
4459
|
+
function Ft(d) {
|
|
4460
|
+
v.value.updateSettings(d);
|
|
4461
|
+
}
|
|
4462
|
+
function xt(d) {
|
|
4463
|
+
l("saveSettings", d);
|
|
4464
|
+
}
|
|
4465
|
+
function Bt(d) {
|
|
4466
|
+
if (d === void 0)
|
|
4467
|
+
return null;
|
|
4468
|
+
const O = Math.floor(d), G = Math.floor((O - d) * 60);
|
|
4469
|
+
return { hours: O, minutes: G };
|
|
4470
|
+
}
|
|
4471
|
+
function Vt(d) {
|
|
4472
|
+
return d.replace(/\/$/, "");
|
|
4473
|
+
}
|
|
4474
|
+
return (d, O) => {
|
|
4475
|
+
const G = T("v-btn");
|
|
4476
|
+
return h(), F("div", kl, [
|
|
4477
|
+
n.value ? (h(), F("div", bl, "Error loading the player!!")) : H("", !0),
|
|
4478
|
+
o("div", yl, [
|
|
4479
|
+
!f.value.isActive && p.value && L.value && K.value && A.value ? (h(), N(vt, {
|
|
4480
|
+
key: 0,
|
|
4481
|
+
allCameras: q.value,
|
|
4482
|
+
rootUrl: U.value,
|
|
4483
|
+
level: w.value,
|
|
4484
|
+
backgroundImage: ve.value,
|
|
4485
|
+
minimapJSON: p.value.storeys,
|
|
4486
|
+
rotation: C.value,
|
|
4487
|
+
currentCamera: L.value,
|
|
4488
|
+
minimapCamera: K.value,
|
|
4489
|
+
onClose: O[0] || (O[0] = (ae) => A.value = !1),
|
|
4490
|
+
onSetBackgroundImage: ut
|
|
4491
|
+
}, null, 8, ["allCameras", "rootUrl", "level", "backgroundImage", "minimapJSON", "rotation", "currentCamera", "minimapCamera"])) : H("", !0),
|
|
4492
|
+
$.value && _.value ? (h(), F("div", _l, [
|
|
4493
|
+
y(fn, {
|
|
4494
|
+
ref: "player",
|
|
4495
|
+
"file-loader": d.fileLoader,
|
|
4496
|
+
style: re({ zIndex: g.value ? 1 : 2 }),
|
|
4497
|
+
showStaticImage: g.value,
|
|
4498
|
+
isFullScreen: f.value.isActive,
|
|
4499
|
+
rootUrl: U.value,
|
|
4500
|
+
currentCameraId: _.value,
|
|
4501
|
+
"mouse-sensitivity": d.mouseSensitivity,
|
|
4502
|
+
"is-in-iframe": d.isInIframe,
|
|
4503
|
+
onNewCameraCallback: Se,
|
|
4504
|
+
onNewRotationCallback: Ee,
|
|
4505
|
+
onNewFloorCallback: Fe,
|
|
4506
|
+
onNewFovCallback: we,
|
|
4507
|
+
onNewSizeCallback: ke,
|
|
4508
|
+
onPlayerApiCallback: rt
|
|
4509
|
+
}, {
|
|
4510
|
+
"slideshow-image": M(() => [
|
|
4511
|
+
g.value ? (h(), N(Tn, {
|
|
4512
|
+
key: 0,
|
|
4513
|
+
image: S.value
|
|
4514
|
+
}, null, 8, ["image"])) : H("", !0)
|
|
4515
|
+
]),
|
|
4516
|
+
"top-left": M(() => [
|
|
4517
|
+
d.adminMode ? de((h(), N(G, {
|
|
4518
|
+
key: 0,
|
|
4519
|
+
density: "comfortable",
|
|
4520
|
+
icon: "mdi-cog-outline",
|
|
4521
|
+
elevation: "3",
|
|
4522
|
+
class: "mr-2",
|
|
4523
|
+
onClick: O[1] || (O[1] = (ae) => a.value = !a.value)
|
|
4524
|
+
}, null, 512)), [
|
|
4525
|
+
[me, c.value]
|
|
4526
|
+
]) : H("", !0),
|
|
4527
|
+
p.value && _.value && K.value ? de((h(), N(G, {
|
|
4528
|
+
key: 1,
|
|
4529
|
+
density: "comfortable",
|
|
4530
|
+
elevation: "3",
|
|
4531
|
+
icon: "mdi-floor-plan",
|
|
4532
|
+
class: "mr-2",
|
|
4533
|
+
onClick: O[2] || (O[2] = (ae) => A.value = !A.value)
|
|
4534
|
+
}, null, 512)), [
|
|
4535
|
+
[me, c.value]
|
|
4536
|
+
]) : H("", !0),
|
|
4537
|
+
c.value && d.showFloorLevel && ee.value.length > 1 ? (h(), N(In, {
|
|
4538
|
+
key: 2,
|
|
4539
|
+
level: E.value,
|
|
4540
|
+
"floor-levels": ee.value,
|
|
4541
|
+
onLevel: Fe
|
|
4542
|
+
}, null, 8, ["level", "floor-levels"])) : H("", !0),
|
|
4543
|
+
c.value && d.adminMode && a.value ? (h(), F("div", Cl, [
|
|
4544
|
+
y(Na, {
|
|
4545
|
+
"project-slug": d.projectSlug,
|
|
4546
|
+
initialSettings: d.playerSettings,
|
|
4547
|
+
onUpdateSettings: Ft,
|
|
4548
|
+
onSaveSettings: xt
|
|
4549
|
+
}, null, 8, ["project-slug", "initialSettings"])
|
|
4550
|
+
])) : H("", !0)
|
|
4551
|
+
]),
|
|
4552
|
+
"top-center": M(() => [
|
|
4553
|
+
c.value ? (h(), N(qn, {
|
|
4554
|
+
key: 0,
|
|
4555
|
+
"return-url": d.websiteUrl
|
|
4556
|
+
}, null, 8, ["return-url"])) : H("", !0)
|
|
4557
|
+
]),
|
|
4558
|
+
"top-right": M(() => [
|
|
4559
|
+
i.value && d.showCompass ? de((h(), F("div", Al, [
|
|
4560
|
+
y(Un, { rotation: C.value }, null, 8, ["rotation"])
|
|
4561
|
+
], 512)), [
|
|
4562
|
+
[me, c.value]
|
|
4563
|
+
]) : H("", !0),
|
|
4564
|
+
c.value && i.value && ne.value && d.showTimeOfDay ? (h(), N(Nn, {
|
|
4565
|
+
key: 1,
|
|
4566
|
+
hours: ue.value.hours,
|
|
4567
|
+
minutes: ue.value.minutes
|
|
4568
|
+
}, null, 8, ["hours", "minutes"])) : H("", !0)
|
|
4569
|
+
]),
|
|
4570
|
+
"center-left": M(() => [
|
|
4571
|
+
y(ze, { name: "slide-x-transition" }, {
|
|
4572
|
+
default: M(() => [
|
|
4573
|
+
g.value ? (h(), N(G, {
|
|
4574
|
+
key: 0,
|
|
4575
|
+
density: "comfortable",
|
|
4576
|
+
elevation: "3",
|
|
4577
|
+
icon: "mdi-chevron-left",
|
|
4578
|
+
onClick: Ne
|
|
4579
|
+
})) : H("", !0)
|
|
4580
|
+
]),
|
|
4581
|
+
_: 1
|
|
4582
|
+
})
|
|
4583
|
+
]),
|
|
4584
|
+
"center-center": M(() => [
|
|
4585
|
+
y(Aa, {
|
|
4586
|
+
project: B.value,
|
|
4587
|
+
onCloseTutorial: O[3] || (O[3] = (ae) => c.value = !0)
|
|
4588
|
+
}, null, 8, ["project"]),
|
|
4589
|
+
f.value.isActive && p.value && L.value && K.value && A.value ? (h(), N(vt, {
|
|
4590
|
+
key: 0,
|
|
4591
|
+
allCameras: q.value,
|
|
4592
|
+
rootUrl: U.value,
|
|
4593
|
+
minimapJSON: p.value.storeys,
|
|
4594
|
+
backgroundImage: ve.value,
|
|
4595
|
+
rotation: C.value,
|
|
4596
|
+
currentCamera: L.value,
|
|
4597
|
+
minimapCamera: K.value,
|
|
4598
|
+
level: w.value,
|
|
4599
|
+
onClose: O[4] || (O[4] = (ae) => A.value = !1),
|
|
4600
|
+
onSetBackgroundImage: ut
|
|
4601
|
+
}, null, 8, ["allCameras", "rootUrl", "minimapJSON", "backgroundImage", "rotation", "currentCamera", "minimapCamera", "level"])) : H("", !0)
|
|
4602
|
+
]),
|
|
4603
|
+
"center-right": M(() => [
|
|
4604
|
+
y(ze, { name: "slide-x-reverse-transition" }, {
|
|
4605
|
+
default: M(() => [
|
|
4606
|
+
g.value ? (h(), N(G, {
|
|
4607
|
+
key: 0,
|
|
4608
|
+
density: "comfortable",
|
|
4609
|
+
elevation: "3",
|
|
4610
|
+
icon: "mdi-chevron-right",
|
|
4611
|
+
onClick: Ae
|
|
4612
|
+
})) : H("", !0)
|
|
4613
|
+
]),
|
|
4614
|
+
_: 1
|
|
4615
|
+
})
|
|
4616
|
+
]),
|
|
4617
|
+
"bottom-left": M(() => [
|
|
4618
|
+
c.value && d.showFullScreen ? (h(), N(Wn, {
|
|
4619
|
+
key: 0,
|
|
4620
|
+
isFullScreen: f.value.isActive,
|
|
4621
|
+
class: "btn-fullscreen",
|
|
4622
|
+
onToggleFullscreen: Mt
|
|
4623
|
+
}, null, 8, ["isFullScreen"])) : H("", !0),
|
|
4624
|
+
c.value && d.showSnapshot ? (h(), F("div", Ll, [
|
|
4625
|
+
y(G, {
|
|
4626
|
+
density: "comfortable",
|
|
4627
|
+
elevation: "3",
|
|
4628
|
+
icon: "mdi-camera",
|
|
4629
|
+
onClick: Et
|
|
4630
|
+
})
|
|
4631
|
+
])) : H("", !0),
|
|
4632
|
+
c.value && d.showShare && !f.value.isActive ? (h(), F("div", Il, [
|
|
4633
|
+
y(En)
|
|
4634
|
+
])) : H("", !0)
|
|
4635
|
+
]),
|
|
4636
|
+
"bottom-center": M(() => [
|
|
4637
|
+
c.value && d.showCarousel ? (h(), F("div", Ml, [
|
|
4638
|
+
d.displayViewModeSwitch ? (h(), N(Gn, {
|
|
4639
|
+
key: 0,
|
|
4640
|
+
"show-static-image": g.value,
|
|
4641
|
+
onToggle: St
|
|
4642
|
+
}, null, 8, ["show-static-image"])) : H("", !0),
|
|
4643
|
+
c.value && f.value.isActive ? (h(), N(dt, {
|
|
4644
|
+
key: 1,
|
|
4645
|
+
class: ye([f.value.isActive ? "full-screen" : ""]),
|
|
4646
|
+
thumbnails: W.value,
|
|
4647
|
+
active: m.value,
|
|
4648
|
+
onNext: Ae,
|
|
4649
|
+
onPrevious: Ne,
|
|
4650
|
+
onGoto: j
|
|
4651
|
+
}, null, 8, ["class", "thumbnails", "active"])) : H("", !0)
|
|
4652
|
+
])) : H("", !0)
|
|
4653
|
+
]),
|
|
4654
|
+
"bottom-right": M(() => [
|
|
4655
|
+
c.value && d.showInteriorOptions && X.value ? (h(), N(xn, {
|
|
4656
|
+
key: 0,
|
|
4657
|
+
availableArchetypes: X.value,
|
|
4658
|
+
selectedIndex: x.value,
|
|
4659
|
+
onSelectInterior: le
|
|
4660
|
+
}, null, 8, ["availableArchetypes", "selectedIndex"])) : H("", !0)
|
|
4661
|
+
]),
|
|
4662
|
+
_: 1
|
|
4663
|
+
}, 8, ["file-loader", "style", "showStaticImage", "isFullScreen", "rootUrl", "currentCameraId", "mouse-sensitivity", "is-in-iframe"]),
|
|
4664
|
+
d.showCarousel && k.value ? (h(), N(dt, {
|
|
4665
|
+
key: 0,
|
|
4666
|
+
thumbnails: W.value,
|
|
4667
|
+
active: m.value,
|
|
4668
|
+
onNext: Ae,
|
|
4669
|
+
onPrevious: Ne,
|
|
4670
|
+
onGoto: j
|
|
4671
|
+
}, null, 8, ["thumbnails", "active"])) : H("", !0)
|
|
4672
|
+
])) : H("", !0)
|
|
4673
|
+
])
|
|
4674
|
+
]);
|
|
4675
|
+
};
|
|
4676
|
+
}
|
|
4677
|
+
}), El = /* @__PURE__ */ te(Sl, [["__scopeId", "data-v-8e6a405e"]]), Fl = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4678
|
+
__proto__: null,
|
|
4679
|
+
VApartmentChooser: yo,
|
|
4680
|
+
VApartmentChooserNavigation: bt,
|
|
4681
|
+
VApartmentChooserRaster: wt,
|
|
4682
|
+
VApartmentChooserRotator: yt,
|
|
4683
|
+
VApartmentChooserSvg: kt,
|
|
4684
|
+
VBuildingChooser: zo,
|
|
4685
|
+
VBuildingChooserRaster: It,
|
|
4686
|
+
VBuildingChooserRasterOverlay: Lt,
|
|
4687
|
+
VBuildingChooserSceneImageStack: st,
|
|
4688
|
+
VBuildingChooserSunSimControl: it,
|
|
4689
|
+
VBuildingChooserSvg: At,
|
|
4690
|
+
VFloatingCard: Ze,
|
|
4691
|
+
VHoverProbe: He,
|
|
4692
|
+
VNorthDirection: Ke,
|
|
4693
|
+
VVirtualTour: El,
|
|
4694
|
+
VZoomBox: Xe
|
|
4695
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
4696
|
+
class Ul {
|
|
4697
|
+
constructor(t) {
|
|
4698
|
+
J(this, "_data");
|
|
4699
|
+
this._data = t;
|
|
4700
|
+
}
|
|
4701
|
+
getPixel(t, e) {
|
|
4702
|
+
const l = this._data[t][e];
|
|
4703
|
+
if (l !== " ") {
|
|
4704
|
+
const a = Number.parseInt(l);
|
|
4705
|
+
return [a, a, a, 255];
|
|
4706
|
+
} else
|
|
4707
|
+
return [0, 0, 0, 0];
|
|
4708
|
+
}
|
|
4709
|
+
}
|
|
4710
|
+
const Dl = function(t) {
|
|
4711
|
+
Object.entries(Fl).forEach(([e, l]) => {
|
|
4712
|
+
t.component(e, l);
|
|
4713
|
+
});
|
|
4714
|
+
};
|
|
4715
|
+
export {
|
|
4716
|
+
tt as BatchLoadTracker,
|
|
4717
|
+
Re as BuildingMap,
|
|
4718
|
+
Ct as BuildingPickerResourceProvider,
|
|
4719
|
+
co as BuildingViewerModel,
|
|
4720
|
+
Te as CanvasRaster,
|
|
4721
|
+
Je as DayOfYearSelector,
|
|
4722
|
+
Le as I18N,
|
|
4723
|
+
$e as ResourceLoader,
|
|
4724
|
+
at as RotationStep,
|
|
4725
|
+
Ul as SampleRaster,
|
|
4726
|
+
qt as SceneRotator,
|
|
4727
|
+
yo as VApartmentChooser,
|
|
4728
|
+
bt as VApartmentChooserNavigation,
|
|
4729
|
+
wt as VApartmentChooserRaster,
|
|
4730
|
+
yt as VApartmentChooserRotator,
|
|
4731
|
+
kt as VApartmentChooserSvg,
|
|
4732
|
+
zo as VBuildingChooser,
|
|
4733
|
+
It as VBuildingChooserRaster,
|
|
4734
|
+
Lt as VBuildingChooserRasterOverlay,
|
|
4735
|
+
st as VBuildingChooserSceneImageStack,
|
|
4736
|
+
it as VBuildingChooserSunSimControl,
|
|
4737
|
+
At as VBuildingChooserSvg,
|
|
4738
|
+
Ze as VFloatingCard,
|
|
4739
|
+
He as VHoverProbe,
|
|
4740
|
+
Ke as VNorthDirection,
|
|
4741
|
+
El as VVirtualTour,
|
|
4742
|
+
Xe as VZoomBox,
|
|
4743
|
+
Dl as default
|
|
4744
|
+
};
|