2024-02-09 17:17:51 +01:00
|
|
|
<script lang="ts">
|
2024-04-21 12:14:54 -07:00
|
|
|
import {
|
|
|
|
|
Viewer,
|
|
|
|
|
EquirectangularAdapter,
|
|
|
|
|
type PluginConstructor,
|
|
|
|
|
type AdapterConstructor,
|
|
|
|
|
} from '@photo-sphere-viewer/core';
|
2024-02-09 17:17:51 +01:00
|
|
|
import '@photo-sphere-viewer/core/index.css';
|
|
|
|
|
import { onDestroy, onMount } from 'svelte';
|
|
|
|
|
|
2024-04-21 12:14:54 -07:00
|
|
|
export let panorama: string | { source: string };
|
|
|
|
|
export let adapter: AdapterConstructor | [AdapterConstructor, unknown] = EquirectangularAdapter;
|
|
|
|
|
export let plugins: (PluginConstructor | [PluginConstructor, unknown])[] = [];
|
|
|
|
|
export let navbar = false;
|
|
|
|
|
|
2024-02-09 17:17:51 +01:00
|
|
|
let container: HTMLDivElement;
|
|
|
|
|
let viewer: Viewer;
|
|
|
|
|
|
|
|
|
|
onMount(() => {
|
|
|
|
|
viewer = new Viewer({
|
2024-04-21 12:14:54 -07:00
|
|
|
adapter,
|
|
|
|
|
plugins,
|
2024-02-09 17:17:51 +01:00
|
|
|
container,
|
|
|
|
|
panorama,
|
2024-04-21 12:14:54 -07:00
|
|
|
touchmoveTwoFingers: true,
|
|
|
|
|
mousewheelCtrlKey: false,
|
|
|
|
|
navbar,
|
|
|
|
|
maxFov: 180,
|
|
|
|
|
fisheye: true,
|
2024-02-09 17:17:51 +01:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
onDestroy(() => {
|
|
|
|
|
if (viewer) {
|
|
|
|
|
viewer.destroy();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<div class="h-full w-full mb-0" bind:this={container} />
|