diff --git a/src/lib/components/Catalog.svelte b/src/lib/components/Catalog.svelte index 45291a9..39508bd 100644 --- a/src/lib/components/Catalog.svelte +++ b/src/lib/components/Catalog.svelte @@ -32,78 +32,6 @@ currentPage: 9, totalPages: 59 }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, - { - title: 'sdhfjksdh', - cover: image5, - currentPage: 19, - totalPages: 200 - }, { title: 'sdhfjksdh', cover: image5, diff --git a/src/lib/panzoom/Panzoom.svelte b/src/lib/panzoom/Panzoom.svelte index 24d1ab3..9eeef91 100644 --- a/src/lib/panzoom/Panzoom.svelte +++ b/src/lib/panzoom/Panzoom.svelte @@ -3,7 +3,14 @@
-
+
+ + diff --git a/src/lib/panzoom/util.ts b/src/lib/panzoom/util.ts index 3a30776..1821cfb 100644 --- a/src/lib/panzoom/util.ts +++ b/src/lib/panzoom/util.ts @@ -2,22 +2,76 @@ import panzoom from 'panzoom'; import type { PanZoom } from 'panzoom'; import { writable } from 'svelte/store'; -export const pz = writable(undefined); +let pz: PanZoom | undefined; +let container: HTMLElement | undefined; + +export const panzoomStore = writable(undefined); export function initPanzoom(node: HTMLElement) { - pz.set( - panzoom(node, { - bounds: false, - maxZoom: 10, - minZoom: 0.1, - zoomDoubleClickSpeed: 1, - enableTextSelection: true, - beforeMouseDown: (e) => { - const nodeName = (e.target as HTMLElement).nodeName; - return nodeName === 'P'; - }, - beforeWheel: (e) => e.altKey, - onTouch: (e) => e.touches.length > 1 - }) - ); + container = node; + pz = panzoom(node, { + bounds: false, + maxZoom: 10, + minZoom: 0.1, + zoomDoubleClickSpeed: 1, + enableTextSelection: true, + beforeMouseDown: (e) => { + const nodeName = (e.target as HTMLElement).nodeName; + return nodeName === 'P'; + }, + beforeWheel: (e) => e.altKey, + onTouch: (e) => e.touches.length > 1 + }); + + panzoomStore.set(pz) +} + +type PanX = 'left' | 'center' | 'right' +type PanY = 'top' | 'center' | 'bottom' + +export function panAlign(alignX: PanX, alignY: PanY) { + if (!pz || !container) { + return + } + + const { scale } = pz.getTransform(); + const { innerWidth, innerHeight } = window + const { offsetWidth, offsetHeight } = container + + let x = 0; + let y = 0; + + switch (alignX) { + case 'left': + x = 0; + break; + case 'center': + x = (innerWidth - offsetWidth * scale) / 2; + break; + case 'right': + x = (innerWidth - offsetWidth * scale); + break; + } + + switch (alignY) { + case 'top': + y = 0; + break; + case 'center': + y = (innerHeight - offsetHeight * scale) / 2; + break; + case 'bottom': + y = (innerHeight - offsetHeight * scale); + break; + } + + console.log(x, y); + + pz?.moveTo(x, y) +} + +export function zoomOriginal() { + pz?.moveTo(0, 0); + pz?.zoomTo(0, 0, 1 / pz.getTransform().scale); + panAlign('center', 'center'); } \ No newline at end of file diff --git a/src/routes/[manga]/+page.svelte b/src/routes/[manga]/+page.svelte index a074913..af1e4f5 100644 --- a/src/routes/[manga]/+page.svelte +++ b/src/routes/[manga]/+page.svelte @@ -1,22 +1,27 @@ {#if manga} +
+ +
{manga.title} {/if}