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}
+
+
+
{/if}