@qispace/vue3-player 0.0.10 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/components/apartmentChooser/QiApartmentChooser.vue.d.ts +1 -471
  2. package/dist/components/apartmentChooser/QiApartmentChooserNavigation.vue.d.ts +6 -6
  3. package/dist/components/apartmentChooser/QiApartmentChooserRaster.vue.d.ts +1 -151
  4. package/dist/components/apartmentChooser/QiApartmentChooserRotator.vue.d.ts +5 -7
  5. package/dist/components/apartmentChooser/QiApartmentChooserSvg.vue.d.ts +1 -124
  6. package/dist/components/buildingPicker/QiBuildingChooser.vue.d.ts +8 -313
  7. package/dist/components/buildingPicker/QiBuildingChooserRaster.vue.d.ts +1 -154
  8. package/dist/components/buildingPicker/QiBuildingChooserRasterOverlay.vue.d.ts +5 -6
  9. package/dist/components/buildingPicker/QiBuildingChooserSceneImageStack.vue.d.ts +5 -6
  10. package/dist/components/buildingPicker/QiBuildingChooserSunSimControl.vue.d.ts +2 -2
  11. package/dist/components/buildingPicker/QiBuildingChooserSvg.vue.d.ts +1 -156
  12. package/dist/components/shared/QiZoomBox.vue.d.ts +2 -2
  13. package/dist/components/virtualTourV2/Compass.vue.d.ts +22 -0
  14. package/dist/components/virtualTourV2/FloorLevel.vue.d.ts +27 -0
  15. package/dist/components/virtualTourV2/FullScreenButton.vue.d.ts +1 -1
  16. package/dist/components/virtualTourV2/InteriorSelector.vue.d.ts +24 -0
  17. package/dist/components/virtualTourV2/Player.vue.d.ts +82 -0
  18. package/dist/components/virtualTourV2/SettingsUI.vue.d.ts +105 -0
  19. package/dist/components/virtualTourV2/TimeOfDay.vue.d.ts +27 -0
  20. package/dist/components/virtualTourV2/Tutorial.vue.d.ts +23 -0
  21. package/dist/components/virtualTourV2/ViewModeToggle.vue.d.ts +16 -0
  22. package/dist/components/virtualTourV2/VirtualTourV2.vue.d.ts +322 -0
  23. package/dist/components/virtualTourV2/index.d.ts +1 -0
  24. package/dist/components/virtualTourV2/minimapv2/MiniMapMap.vue.d.ts +82 -0
  25. package/dist/components/virtualTourV2/minimapv2/MiniMapV2.vue.d.ts +78 -0
  26. package/dist/components/virtualTourV2/minimapv2/MinimapCompass.vue.d.ts +30 -0
  27. package/dist/components/virtualTourV2/minimapv2/Moveable.vue.d.ts +8 -0
  28. package/dist/components/virtualTourV2/minimapv2/RotationMarkerV2.vue.d.ts +12 -0
  29. package/dist/components/virtualTourV2/minimapv2/SunsimulationSlider.vue.d.ts +48 -0
  30. package/dist/components/virtualTourV2/minimapv2/index.d.ts +1 -0
  31. package/dist/index.d.ts +448 -0
  32. package/dist/lib/index.d.ts +3 -0
  33. package/dist/style.css +1 -0
  34. package/dist/vue3-player.js +5362 -0
  35. package/dist/vue3-player.umd.cjs +1 -0
  36. package/package.json +32 -14
  37. package/src/components/buildingPicker/QiBuildingChooser.vue +7 -7
  38. package/src/components/virtualTourV2/{PlayerV2.vue → Player.vue} +64 -64
  39. package/src/components/virtualTourV2/VirtualTourV2.vue +6 -7
  40. package/src/components/virtualTourV2/index.ts +20 -0
  41. package/src/components/virtualTourV2/minimapv2/MiniMapV2.vue +14 -14
  42. package/src/components/virtualTourV2/minimapv2/index.ts +1 -0
  43. package/dist/components/virtualTourV2/ManualSlideShow.vue.d.ts +0 -73
  44. package/dist/components/virtualTourV2/ManualSlideShowPlayer.vue.d.ts +0 -15
  45. package/dist/entry.css +0 -1
  46. package/dist/vue3-player.mjs +0 -3058
  47. package/dist/vue3-player.umd.js +0 -2
  48. package/src/components/virtualTourV2/index.js +0 -2
  49. package/src/components/virtualTourV2/minimapv2/index.js +0 -1
  50. package/src/lib/apartmentChooser/BuildingViewerModel.js +0 -60
  51. package/src/lib/apartmentChooser/CircularSlideshow.js +0 -66
  52. package/src/lib/apartmentChooser/RotationStep.js +0 -31
  53. package/src/lib/apartmentChooser/SceneRotator.js +0 -25
  54. package/src/lib/apartmentChooser/index.js +0 -3
  55. package/src/lib/apartmentChooser/throttle.js +0 -15
  56. package/src/lib/buildingPicker/BuildingMap.js +0 -24
  57. package/src/lib/buildingPicker/BuildingPickerResourceProvider.js +0 -97
  58. package/src/lib/buildingPicker/CanvasRaster.js +0 -29
  59. package/src/lib/buildingPicker/DayOfYearSelector.js +0 -36
  60. package/src/lib/buildingPicker/SampleRaster.js +0 -14
  61. package/src/lib/buildingPicker/index.js +0 -5
  62. package/src/lib/index.js +0 -3
  63. package/src/lib/shared/BatchLoadTracker.js +0 -52
  64. package/src/lib/shared/I18N.js +0 -65
  65. package/src/lib/shared/ResourceLoader.js +0 -33
  66. package/src/lib/shared/index.js +0 -3
  67. package/src/lib/virtualTour/CameraSnapshot.js +0 -42
  68. package/src/lib/virtualTour/FullscreenModel.js +0 -69
  69. package/src/lib/virtualTour/textures/arrow.png +0 -0
  70. package/src/lib/virtualTour/textures/compass-bg.png +0 -0
  71. package/src/lib/virtualTour/textures/compass-needle.png +0 -0
  72. package/src/lib/virtualTour/textures/compass-north.png +0 -0
  73. package/src/lib/virtualTour/textures/floor-1.svg +0 -4
  74. package/src/lib/virtualTour/textures/floor-2.svg +0 -4
  75. package/src/lib/virtualTour/textures/marker.png +0 -0
  76. package/src/lib/virtualTour/textures/tod-sun.png +0 -0
@@ -39,18 +39,18 @@
39
39
  </div>
40
40
  </template>
41
41
  <script>
42
- import { PlayerV2 } from "@qispace/player-core";
43
- import { isBrowser } from "browser-or-node";
42
+ import { PlayerV2 } from '@qispace/player-core'
43
+ import { isBrowser } from 'browser-or-node'
44
44
 
45
45
  export default {
46
- name: "PlayerV2",
46
+ name: 'Player',
47
47
  emits: [
48
- "new-camera-callback",
49
- "new-rotation-callback",
50
- "new-floor-callback",
51
- "new-fov-callback",
52
- "playerApi-callback",
53
- "new-size-callback",
48
+ 'new-camera-callback',
49
+ 'new-rotation-callback',
50
+ 'new-floor-callback',
51
+ 'new-fov-callback',
52
+ 'playerApi-callback',
53
+ 'new-size-callback',
54
54
  ],
55
55
  props: {
56
56
  fileLoader: {
@@ -72,141 +72,141 @@ export default {
72
72
  playerFoV: 0,
73
73
  playerWidth: 0,
74
74
  playerHeight: 0,
75
- };
75
+ }
76
76
  },
77
77
  watch: {
78
78
  async rootUrl(newValue) {
79
79
  if (this.playerAPI) {
80
- await this.playerAPI.loadInterior(newValue, this.playerCamera, false);
81
- this.setPlayerSize();
80
+ await this.playerAPI.loadInterior(newValue, this.playerCamera, false)
81
+ this.setPlayerSize()
82
82
  }
83
83
  },
84
84
  fileLoader: {
85
85
  async handler(newValue) {
86
86
  if (this.playerAPI) {
87
- await this.playerAPI.loadInterior(this.rootUrl, undefined, false);
88
- this.setPlayerSize();
87
+ await this.playerAPI.loadInterior(this.rootUrl, undefined, false)
88
+ this.setPlayerSize()
89
89
  }
90
90
  },
91
91
  deep: true,
92
92
  },
93
93
  currentCameraId(newCameraId) {
94
94
  if (this.playerAPI) {
95
- this.playerCamera = newCameraId;
96
- this.playerAPI.goToCamera(newCameraId, true);
95
+ this.playerCamera = newCameraId
96
+ this.playerAPI.goToCamera(newCameraId, true)
97
97
  }
98
98
  },
99
99
  playerAPI(playerAPI) {
100
- this.$emit("playerApi-callback", playerAPI);
101
- const firstCamera = playerAPI.getCurrentCamera();
100
+ this.$emit('playerApi-callback', playerAPI)
101
+ const firstCamera = playerAPI.getCurrentCamera()
102
102
  if (firstCamera) {
103
- this.playerCamera = firstCamera.id;
103
+ this.playerCamera = firstCamera.id
104
104
  }
105
105
  },
106
106
  },
107
107
  async mounted() {
108
- window.addEventListener("resize", this.setPlayerSize);
109
- this.setPlayerSize();
108
+ window.addEventListener('resize', this.setPlayerSize)
109
+ this.setPlayerSize()
110
110
 
111
111
  const newRotation = (newRotation) => {
112
- const rot = newRotation + 0;
112
+ const rot = newRotation + 0
113
113
 
114
- this.$emit("new-rotation-callback", rot);
115
- this.playerRotation = rot;
116
- };
114
+ this.$emit('new-rotation-callback', rot)
115
+ this.playerRotation = rot
116
+ }
117
117
 
118
118
  const newFOV = (newFov) => {
119
- this.$emit("new-fov-callback", newFov);
120
- this.playerFoV = newFov;
121
- };
119
+ this.$emit('new-fov-callback', newFov)
120
+ this.playerFoV = newFov
121
+ }
122
122
 
123
123
  const newCamera = (newCamera) => {
124
- this.$emit("new-camera-callback", newCamera.id);
125
- this.$emit("new-floor-callback", newCamera.floorLevel);
124
+ this.$emit('new-camera-callback', newCamera.id)
125
+ this.$emit('new-floor-callback', newCamera.floorLevel)
126
126
 
127
127
  if (this.playerAPI) {
128
- this.playerAPI.resetMarkerBehaviour(0);
128
+ this.playerAPI.resetMarkerBehaviour(0)
129
129
  }
130
130
 
131
- this.playerCamera = newCamera.id;
132
- };
131
+ this.playerCamera = newCamera.id
132
+ }
133
133
 
134
134
  const callbacks = {
135
135
  initialized: () => {
136
- this.playerAPI = PlayerV2.Main.getPlayerAPI();
137
- const firstCamera = this.playerAPI.getCurrentCamera();
138
- if (firstCamera) this.playerCamera = firstCamera.id;
139
- this.$emit("new-camera-callback", this.playerCamera);
136
+ this.playerAPI = PlayerV2.Main.getPlayerAPI()
137
+ const firstCamera = this.playerAPI.getCurrentCamera()
138
+ if (firstCamera) this.playerCamera = firstCamera.id
139
+ this.$emit('new-camera-callback', this.playerCamera)
140
140
  },
141
141
  newCamera,
142
142
  newFOV,
143
143
  newRotation,
144
- };
144
+ }
145
145
 
146
146
  // constructor(public rootUrl: string, public target:string = 'qiplayerCanvas', events:EventManager, apartmentJson: string = undefined, startCameraId:string=undefined, fileLoader: LocalFileLoader | undefined) {
147
- if (!isBrowser) return;
147
+ if (!isBrowser) return
148
148
 
149
149
  const mainScene = await new PlayerV2.Main(
150
150
  this.rootUrl,
151
- "qpc",
151
+ 'qpc',
152
152
  callbacks,
153
153
  undefined,
154
154
  this.currentCameraId,
155
155
  this.fileLoader
156
- );
156
+ )
157
157
 
158
158
  if (mainScene) {
159
- mainScene.handleWindowResize();
159
+ mainScene.handleWindowResize()
160
160
  window.addEventListener(
161
- "resize",
161
+ 'resize',
162
162
  mainScene.handleWindowResize.bind(mainScene)
163
- );
164
- mainScene.animate();
163
+ )
164
+ mainScene.animate()
165
165
 
166
- this.playerAPI = PlayerV2.Main.getPlayerAPI();
166
+ this.playerAPI = PlayerV2.Main.getPlayerAPI()
167
167
 
168
168
  if (this.playerAPI)
169
- this.playerAPI.setLookSensitivity(this.mouseSensitivity);
169
+ this.playerAPI.setLookSensitivity(this.mouseSensitivity)
170
170
  }
171
171
  },
172
172
  beforeUnmount() {
173
173
  if (this.playerAPI) {
174
- this.playerAPI.destroy();
174
+ this.playerAPI.destroy()
175
175
  }
176
176
  },
177
177
  methods: {
178
178
  findClosestAncestor(element, className) {
179
- let el = element;
180
- let returnElement = element;
179
+ let el = element
180
+ let returnElement = element
181
181
  while ((el = el.parentNode) && el.className.indexOf(className) < 0);
182
- returnElement = el;
182
+ returnElement = el
183
183
 
184
- return returnElement;
184
+ return returnElement
185
185
  },
186
186
  setPlayerSize() {
187
- let AR = 16 / 9;
188
- let element = document.querySelector("#player-sizer");
189
- if (!element) return;
187
+ let AR = 16 / 9
188
+ let element = document.querySelector('#player-sizer')
189
+ if (!element) return
190
190
 
191
- let width = element.offsetWidth;
192
- let height = width * (1 / AR);
191
+ let width = element.offsetWidth
192
+ let height = width * (1 / AR)
193
193
 
194
194
  if (window.innerWidth <= 600 || width <= 600) {
195
- height = window.innerHeight * 0.75;
195
+ height = window.innerHeight * 0.75
196
196
 
197
197
  if (this.isInIframe) {
198
- height = screen.height * 0.65;
198
+ height = screen.height * 0.65
199
199
  }
200
200
 
201
- width = height * (1 / AR);
201
+ width = height * (1 / AR)
202
202
  }
203
203
 
204
- element.style.height = height + "px";
205
- element.style.width = width + "px";
206
- this.$emit("new-size-callback", width, height);
204
+ element.style.height = height + 'px'
205
+ element.style.width = width + 'px'
206
+ this.$emit('new-size-callback', width, height)
207
207
  },
208
208
  },
209
- };
209
+ }
210
210
  </script>
211
211
  <style scoped>
212
212
  #player-wrapper {
@@ -22,7 +22,7 @@
22
22
  @set-background-image="setMinimapBackgroundImage"
23
23
  />
24
24
  <div v-if="interiorId && currentCameraId">
25
- <player-v-2
25
+ <player
26
26
  ref="player"
27
27
  :file-loader="fileLoader"
28
28
  :style="{ zIndex: showStaticImage ? 1 : 2 }"
@@ -195,7 +195,7 @@
195
195
  @select-interior="updateSelectedInterior"
196
196
  />
197
197
  </template>
198
- </player-v-2>
198
+ </player>
199
199
 
200
200
  <waypoint-carousel
201
201
  v-if="showCarousel && thumbsJSON"
@@ -210,9 +210,8 @@
210
210
  </div>
211
211
  </template>
212
212
  <script>
213
- import { defineComponent, ref } from "vue";
214
213
  import axios from "axios";
215
- import PlayerV2 from "./PlayerV2.vue";
214
+ import Player from "./Player.vue";
216
215
  import WaypointCarousel from "./WaypointCarousel.vue";
217
216
  import FloorLevel from "./FloorLevel.vue";
218
217
  import SocialShare from "./SocialShare.vue";
@@ -241,7 +240,7 @@ const DEFAULT_PLAYER_SETTINGS = {
241
240
  whitePoint: [1, 1, 1],
242
241
  };
243
242
 
244
- export default defineComponent({
243
+ export default {
245
244
  name: "VirtualTourV2",
246
245
  emits: [
247
246
  "on-snapshot",
@@ -250,7 +249,7 @@ export default defineComponent({
250
249
  "on-camera-update",
251
250
  ],
252
251
  components: {
253
- PlayerV2,
252
+ Player,
254
253
  WaypointCarousel,
255
254
  InteriorSelector,
256
255
  Compass,
@@ -791,7 +790,7 @@ export default defineComponent({
791
790
  this.$emit("save-settings", settings);
792
791
  },
793
792
  },
794
- });
793
+ };
795
794
 
796
795
  function parseTimeOfDay(floatValue) {
797
796
  if (floatValue === undefined) return null;
@@ -0,0 +1,20 @@
1
+ // // export {default as Compass } from './Compass.vue'
2
+ // export {default as Disclaimer } from './Disclaimer.vue'
3
+ // export {default as FloorLevel } from './FloorLevel.vue'
4
+ // export {default as FullScreenButton } from './FullScreenButton.vue'
5
+ // export {default as InteriorSelector } from './InteriorSelector.vue'
6
+ // export {default as ManualSlideShow } from './ManualSlideShow.vue'
7
+ // export {default as ManualSlideShowPlayer } from './ManualSlideShowPlayer.vue'
8
+ // export {default as Player } from './Player.vue'
9
+ // export {default as ScrollHelper } from './ScrollHelper.vue'
10
+ // export {default as SettingsUI } from './SettingsUI.vue'
11
+ // export {default as SingleImage } from './SingleImage.vue'
12
+ // export {default as SocialShare } from './SocialShare.vue'
13
+ // export {default as TimeOfDay } from './TimeOfDay.vue'
14
+ // export {default as Tutorial } from './Tutorial.vue'
15
+ // export {default as ViewModeToggle } from './ViewModeToggle.vue'
16
+
17
+ // export {default as WaypointCarousel } from './WaypointCarousel.vue'
18
+
19
+ export { default as VirtualTourV2 } from './VirtualTourV2.vue'
20
+ // export {default as ManualSlideShow } from './ManualSlideShow.vue'
@@ -28,15 +28,15 @@
28
28
  </moveable>
29
29
  </template>
30
30
  <script>
31
- import MiniMapMap from './MiniMapMap.vue'
32
- import Moveable from './Moveable.vue'
33
- import MinimapCompass from './MinimapCompass.vue'
34
- import SunsimulationSlider from './SunsimulationSlider.vue'
31
+ import MiniMapMap from "./MiniMapMap.vue";
32
+ import Moveable from "./Moveable.vue";
33
+ import MinimapCompass from "./MinimapCompass.vue";
34
+ import SunsimulationSlider from "./SunsimulationSlider.vue";
35
35
 
36
36
  export default {
37
37
  components: { MiniMapMap, Moveable, MinimapCompass, SunsimulationSlider },
38
- name: 'MiniMapV2',
39
- emits: ['close', 'set-background-image'],
38
+ name: "MiniMapV2",
39
+ emits: ["close", "set-background-image"],
40
40
  props: {
41
41
  minimapJSON: {
42
42
  type: Array,
@@ -74,31 +74,31 @@ export default {
74
74
  data() {
75
75
  return {
76
76
  transformAngle: 0,
77
- }
77
+ };
78
78
  },
79
79
  computed: {
80
80
  scale() {
81
- let scale = 1
81
+ let scale = 1;
82
82
  if (this.transformAngle !== 0) {
83
83
  if (Math.abs(this.transformAngle) % 180 === 0) {
84
- scale = 1
84
+ scale = 1;
85
85
  } else {
86
- scale = -1
86
+ scale = -1;
87
87
  }
88
88
  }
89
89
 
90
- return scale
90
+ return scale;
91
91
  },
92
92
  },
93
93
  methods: {
94
94
  setBackgroundImage(image) {
95
- this.$emit('set-background-image', image)
95
+ this.$emit("set-background-image", image);
96
96
  },
97
97
  transform() {
98
- this.transformAngle = this.transformAngle + 90
98
+ this.transformAngle = this.transformAngle + 90;
99
99
  },
100
100
  },
101
- }
101
+ };
102
102
  </script>
103
103
  <style scoped>
104
104
  .minimap-compass {
@@ -0,0 +1 @@
1
+ export { default as MiniMapV2 } from './MiniMapV2.vue'
@@ -1,73 +0,0 @@
1
- declare const _default: import("vue").DefineComponent<{
2
- images: {
3
- type: ArrayConstructor;
4
- required: true;
5
- };
6
- websiteUrl: {
7
- type: StringConstructor;
8
- default: () => undefined;
9
- };
10
- i18n: {
11
- type: ObjectConstructor;
12
- default: undefined;
13
- };
14
- showFullScreen: {
15
- type: BooleanConstructor;
16
- default: () => boolean;
17
- };
18
- showShare: {
19
- type: BooleanConstructor;
20
- default: () => boolean;
21
- };
22
- defaultWaypointIndex: {
23
- type: NumberConstructor;
24
- default: () => number;
25
- };
26
- }, any, {
27
- loading: boolean;
28
- error: boolean;
29
- currentIndex: number;
30
- currentImageId: undefined;
31
- fullScreen: FullscreenModel;
32
- }, {
33
- imagesWithThumbnails(): any;
34
- currentImage(): any;
35
- }, {
36
- toggleFullscreen(): void;
37
- nextImage(): void;
38
- previousImage(): void;
39
- goToImage(imageId: any, updatePlayerImage?: boolean): void;
40
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
41
- images: {
42
- type: ArrayConstructor;
43
- required: true;
44
- };
45
- websiteUrl: {
46
- type: StringConstructor;
47
- default: () => undefined;
48
- };
49
- i18n: {
50
- type: ObjectConstructor;
51
- default: undefined;
52
- };
53
- showFullScreen: {
54
- type: BooleanConstructor;
55
- default: () => boolean;
56
- };
57
- showShare: {
58
- type: BooleanConstructor;
59
- default: () => boolean;
60
- };
61
- defaultWaypointIndex: {
62
- type: NumberConstructor;
63
- default: () => number;
64
- };
65
- }>>, {
66
- i18n: Record<string, any>;
67
- websiteUrl: string;
68
- showFullScreen: boolean;
69
- showShare: boolean;
70
- defaultWaypointIndex: number;
71
- }, {}>;
72
- export default _default;
73
- import { FullscreenModel } from '../../lib/virtualTour/FullscreenModel';
@@ -1,15 +0,0 @@
1
- declare const _default: import("vue").DefineComponent<{
2
- isFullScreen: {
3
- type: BooleanConstructor;
4
- required: true;
5
- };
6
- }, any, {}, {}, {
7
- findClosestAncestor(element: any, className: any): any;
8
- setPlayerSize(): void;
9
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
10
- isFullScreen: {
11
- type: BooleanConstructor;
12
- required: true;
13
- };
14
- }>>, {}, {}>;
15
- export default _default;
package/dist/entry.css DELETED
@@ -1 +0,0 @@
1
- @media (hover: hover){.hover-check[data-v-e4729353]{display:none}}#canvas[data-v-3bbbc77b]{position:absolute;top:0;width:100%;-webkit-user-select:none;user-select:none;touch-action:none;padding-top:56.25%}#canvas-mask[data-v-3bbbc77b]{position:absolute;top:0;max-width:100%;z-index:4;-webkit-user-select:none;user-select:none}@media only screen and (min-width: 1280px){#canvas[data-v-3bbbc77b]{border-radius:10px}}#container[data-v-82a61864]{position:absolute;top:0;width:100%;-webkit-user-select:none;user-select:none;touch-action:none;padding-top:56.25%}.svg-container[data-v-82a61864]{transition-property:opacity;transition-duration:.25s;transition-timing-function:ease-in-out}.svg-container[data-v-82a61864],svg[data-v-82a61864]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:10000}svg g[data-v-82a61864] path{cursor:pointer;stroke-width:inherit!important;stroke-opacity:inherit!important;stroke:inherit!important;fill:inherit!important;fill-opacity:inherit!important;transition-property:fill-opacity,fill;transition-duration:.25s;transition-timing-function:ease-in-out}@media only screen and (min-width: 1280px){#canvas[data-v-82a61864]{border-radius:10px}}.v-btn[data-v-129ef905]{background-color:#fff}.frame-container[data-v-e6481f8e]{position:relative;max-width:100%;top:0;left:0;bottom:185px;padding-top:56%;z-index:1;overflow:hidden}.frame-image[data-v-e6481f8e]{position:absolute;top:0;width:100%;height:100%}.frame-image img[data-v-e6481f8e]{min-width:100%;max-width:100%;z-index:0}#image-stack picture[data-v-e6481f8e]{visibility:hidden}#image-stack picture.show[data-v-e6481f8e]{visibility:visible}.fill-parent[data-v-e6481f8e]{position:absolute;top:0;bottom:0;left:0;right:0}.floating-card[data-v-b74de171]{position:absolute;left:0;top:0;z-index:10;display:flex}.is-not-hoverable[data-v-b74de171]{position:relative;width:100%}.top-left[data-v-b74de171]{transform-origin:top left;transform:translate(8px) translateY(8px) scale(.9)}.top-right[data-v-b74de171]{transform-origin:top right;transform:translate(-100%) translate(-8px) translateY(8px) scale(.9)}.bottom-left[data-v-b74de171]{transform-origin:bottom left;transform:translateY(-100%) translate(8px) translateY(-8px) scale(.9)}.bottom-right[data-v-b74de171]{transform-origin:bottom right;transform:translateY(-100%) translate(-100%) translate(-8px) translateY(-8px) scale(.9)}.v-dialog__content[data-v-b74de171]{align-items:flex-start}.zoom-box-container[data-v-83bfd28a]{position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.zoom-box[data-v-83bfd28a]{width:100%;height:100%;-webkit-user-select:none;user-select:none;touch-action:none}.interactive-viewer[data-v-3a1121f3]{padding-top:56.65%;position:relative}.fill-parent[data-v-3a1121f3]{position:absolute;top:0;bottom:0;left:0;right:0}.navigation[data-v-3a1121f3]{position:absolute;width:100%;bottom:32px;z-index:99;padding:0 20px;display:flex;justify-content:center}@media only screen and (max-width: 600px){.navigation[data-v-3a1121f3]{bottom:12px}}.sunsim-time-label[data-v-1fba3edd]{color:#000;vertical-align:top}.sunsim-date[data-v-1fba3edd]{background:#fff;border-radius:30px;min-height:36px;min-width:170px;display:flex;align-content:center;white-space:nowrap}.day-selector[data-v-1fba3edd]{margin-top:0}.day-selector[data-v-1fba3edd] .v-field__outline{display:none}.day-selector[data-v-1fba3edd] .v-field__input{padding-top:2px}.day-selector[data-v-1fba3edd] .v-field__append-inner{padding-top:5px!important}.day-selector.v-text-field[data-v-1fba3edd] .v-input__control>.v-input__slot:before{border-style:none}.day-selector.v-text-field[data-v-1fba3edd] .v-input__control>.v-input__slot:after{border-style:none}.sunsim-slider[data-v-1fba3edd] .v-slider-track__background{background:linear-gradient(270deg,#8183c2,#ffb9b9 20.01%,#b2dfff 40.1%,#b2dfff 59.85%,#ffba96 79.96%,#8183c2)!important}.sunsim-bar-wrapper{display:flex;position:absolute;width:60%;min-width:400px;top:12px;left:0;z-index:3;touch-action:none;pointer-events:none}.sunsim-wrapper{width:100%;background:#fff;border-radius:30px;padding:5px;min-height:16px;z-index:3}.sunsim-bar-wrapper .sunsim-date{margin-right:12px;margin-left:12px}.sunsim-wrapper,.sunsim-date{touch-action:auto;pointer-events:all}.sunsim-wrapper .mdi-white-balance-sunny{color:#ffab02;vertical-align:baseline;font-size:20px}@media only screen and (max-width: 980px) and (min-width: 500px){.sunsim-bar-wrapper{top:101%;width:100%}.sunsim-bar-wrapper .sunsim-date{margin-left:0}}@media only screen and (max-width: 980px) and (min-width: 500px) and (orientation: landscape){.sunsim-bar-wrapper{top:calc(100% + 8px);width:100%}.sunsim-bar-wrapper .sunsim-date{margin-left:0}.sunsim-bar-wrapper .sunsim-date,.sunsim-bar-wrapper .sunsim-wrapper{box-shadow:0 0 7px 1px #aaa}}@media only screen and (max-width: 500px){.sunsim-bar-wrapper{height:calc(100% + 84px);top:0;width:100%;flex-direction:column;justify-content:space-between;margin:-42px 0 0;padding:0;left:0;z-index:0;min-width:100%}.sunsim-bar-wrapper .sunsim-date{margin-right:0;margin-left:0}.sunsim-bar-wrapper .sunsim-date,.sunsim-bar-wrapper .sunsim-wrapper{width:100%;border-radius:0;left:0;margin-left:0!important;box-shadow:0 0 7px 1px #aaa}}.image-instance[data-v-fad48118]{position:absolute;width:100%;opacity:0}.image-instance.active[data-v-fad48118]{opacity:1}.north-indicator[data-v-0a2cec1f]{position:absolute;right:0;top:0;height:42px;width:42px;margin-top:12px;margin-right:8px}.image-container[data-v-0a2cec1f]{position:relative}.image-instances[data-v-0a2cec1f]{position:relative;width:100%;height:100%}canvas[data-v-0a2cec1f]{position:absolute;left:0;top:0;z-index:2;opacity:0}.fill-parent[data-v-0a2cec1f]{position:absolute;top:0;bottom:0;left:0;right:0}.svg-container[data-v-0a2cec1f]{transition-property:opacity;transition-duration:.25s;transition-timing-function:ease-in-out}.svg-container[data-v-0a2cec1f],svg[data-v-0a2cec1f]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:10000}svg g[data-v-0a2cec1f] path{cursor:pointer;stroke-width:inherit!important;stroke-opacity:inherit!important;stroke:inherit!important;fill:inherit!important;fill-opacity:inherit!important;transition-property:fill-opacity,fill;transition-duration:.25s;transition-timing-function:ease-in-out}svg g.restricted[data-v-0a2cec1f] path{cursor:default!important}@media only screen and (max-width: 980px) and (min-width: 500px) and (orientation: landscape){div.image-container[data-v-0a2cec1f]{margin-top:44px}}@media only screen and (max-width: 500px){div.image-container[data-v-0a2cec1f]{margin-top:44px;margin-bottom:44px}}.overlay[data-v-9a90fa2f]{z-index:1!important;opacity:1;transition-property:opacity;transition-duration:.25s;transition-timing-function:ease-in-out}.north-indicator[data-v-08f2ea1e]{position:absolute;right:0;top:0;height:42px;width:42px;margin-top:12px;margin-right:8px}.image-container[data-v-08f2ea1e]{position:relative}.image-instances[data-v-08f2ea1e]{position:relative;width:100%;height:100%}canvas[data-v-08f2ea1e]{position:absolute;left:0;top:0;z-index:2;opacity:0}.fill-parent[data-v-08f2ea1e]{position:absolute;top:0;bottom:0;left:0;right:0}@media only screen and (max-width: 980px) and (min-width: 500px) and (orientation: landscape){div.image-container[data-v-08f2ea1e]{margin-top:44px}}@media only screen and (max-width: 500px){div.image-container[data-v-08f2ea1e]{margin-top:44px;margin-bottom:44px}}.v-card[data-v-f4e6ce2e]{transition:box-shadow .3s ease-in-out;border:2px solid transparent}[data-v-f4e6ce2e] .v-slide-group__content{justify-content:center}[data-v-f4e6ce2e] .v-slide-group__next--disabled,[data-v-f4e6ce2e] .v-slide-group__prev--disabled{pointer-events:all!important}.carousel-button[data-v-f4e6ce2e]{height:108px!important;min-width:54px!important;padding:0!important;z-index:2;background-color:#fff!important;border:2px solid #d2d2d2;color:#d2d2d2!important}.carousel-button.mobile[data-v-f4e6ce2e]{height:58px!important;min-width:38px!important}.carousel-button[data-v-f4e6ce2e]:hover{border:2px solid #999!important;color:#999!important}.carousel-button[data-v-f4e6ce2e]:hover:before,.carousel-button[data-v-f4e6ce2e]:hover:after{background-color:#fff!important}.align-baseline[data-v-f4e6ce2e]{align-items:baseline}.active-apt[data-v-f4e6ce2e]{border:4px solid #4caf50!important}.v-image[data-v-f4e6ce2e]{border-radius:0!important}#share-btns-wrapper button[data-v-3560cd03]{margin:0 8px}.v-btn[data-v-3560cd03]{background-color:#fff;pointer-events:all}.disclaimer[data-v-6e4f02d6]{padding:4px 10px;text-align:center;background-color:#00000040;border-radius:5px;line-height:20px}.disclaimer span[data-v-6e4f02d6]{cursor:pointer;color:#fff;text-decoration:underline;pointer-events:all}#player-wrapper[data-v-1dab1ac3]{position:relative;overflow:hidden}#player-sizer[data-v-1dab1ac3]{display:flex;justify-content:center;align-items:center;overflow:hidden}.player-control[data-v-1dab1ac3]{display:flex;position:absolute;z-index:3}#controls-top-left[data-v-1dab1ac3]{top:10px;left:10px}#controls-top-center[data-v-1dab1ac3]{top:10px;left:50%;transform:translate(-50%);z-index:4}#controls-top-right[data-v-1dab1ac3]{top:10px;right:10px;justify-content:flex-end;align-content:flex-end}#controls-center-left[data-v-1dab1ac3]{left:10px;top:50%;transform:translateY(-50%)}#controls-center-center[data-v-1dab1ac3]{top:50%;left:50%;transform:translate(-50%,-50%);align-items:center;justify-content:space-around;z-index:20}#controls-center-right[data-v-1dab1ac3]{top:50%;right:10px;transform:translateY(-50%);justify-content:flex-end;align-items:center}#controls-bottom-left[data-v-1dab1ac3]{bottom:10px;left:10px;z-index:5}#controls-bottom-center[data-v-1dab1ac3]{bottom:10px;left:50%;transform:translate(-50%);align-items:flex-end;justify-content:space-around;z-index:4}#controls-bottom-right[data-v-1dab1ac3]{bottom:10px;right:10px;justify-content:flex-end;align-content:flex-end;align-items:flex-end;z-index:5}.img-div[data-v-b418cf51]{position:absolute;display:block;height:100%;width:100%;background-size:cover;background-position:center center;z-index:2;left:0;top:0}.static-image-wrapper[data-v-b418cf51]{background:#fff}.compass-wrapper[data-v-e2117d1e]{width:50px}.player-and-components-wrapper[data-v-e2117d1e]{position:relative}.static-image[data-v-e2117d1e]{position:absolute;top:0;left:0;width:100%;height:auto}button.v-btn[data-v-e2117d1e]{background:#fff}.waypoint-carousel.full-screen[data-v-e2117d1e]{scale:.5}div#controls-bottom-center>div[data-v-e2117d1e]{display:flex;flex-direction:column;align-items:center}.player-error[data-v-e2117d1e]{min-height:400px;display:flex;align-items:center;justify-content:space-around;background:#ededed}@media only screen and (max-width: 600px){#btn-fullscreen[data-v-e2117d1e]{display:none}}@media all and (orientation: landscape) and (max-height: 499px){#btn-fullscreen[data-v-e2117d1e]{display:none}}