2023-12-05 18:35:18 +01:00
|
|
|
<script lang="ts">
|
2023-12-19 22:08:00 +01:00
|
|
|
/**
|
|
|
|
* The image preview allows to drag and zoom in to the image
|
|
|
|
*/
|
|
|
|
import panzoom from "panzoom"
|
|
|
|
import type { ProvidedImage } from "../../Logic/ImageProviders/ImageProvider"
|
2023-12-26 12:26:26 +01:00
|
|
|
import { UIEventSource } from "../../Logic/UIEventSource"
|
2023-12-05 18:35:18 +01:00
|
|
|
|
2023-12-19 22:08:00 +01:00
|
|
|
export let image: ProvidedImage
|
|
|
|
let panzoomInstance = undefined
|
|
|
|
let panzoomEl: HTMLElement
|
2023-12-26 12:26:26 +01:00
|
|
|
export let isLoaded: UIEventSource<boolean> = undefined
|
2023-12-05 18:35:18 +01:00
|
|
|
|
2023-12-19 22:08:00 +01:00
|
|
|
$: {
|
|
|
|
if (panzoomEl) {
|
|
|
|
panzoomInstance = panzoom(panzoomEl, {
|
|
|
|
bounds: true,
|
|
|
|
boundsPadding: 0.49,
|
|
|
|
minZoom: 1,
|
|
|
|
maxZoom: 25,
|
2023-12-26 12:26:26 +01:00
|
|
|
initialZoom: 1.0,
|
2023-12-19 22:08:00 +01:00
|
|
|
})
|
|
|
|
} else {
|
|
|
|
panzoomInstance?.dispose()
|
2023-12-05 18:35:18 +01:00
|
|
|
}
|
2023-12-19 22:08:00 +01:00
|
|
|
}
|
2023-12-05 18:35:18 +01:00
|
|
|
</script>
|
|
|
|
|
2023-12-26 12:26:26 +01:00
|
|
|
<img bind:this={panzoomEl} class="panzoom-image h-fit w-fit" on:load={() => {isLoaded?.setData(true)}}
|
|
|
|
src={image.url_hd ?? image.url} />
|