From 3c2199b06a427e803244cf6b40980a3207e298c0 Mon Sep 17 00:00:00 2001 From: ZXY101 Date: Tue, 1 Aug 2023 13:47:06 +0200 Subject: [PATCH] Cleanup panzoom implementation --- src/lib/panzoom/Panzoom.svelte | 7 +++++++ src/lib/panzoom/index.ts | 2 ++ src/lib/panzoom/util.ts | 23 +++++++++++++++++++++++ src/routes/+page.svelte | 28 +++------------------------- 4 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 src/lib/panzoom/Panzoom.svelte create mode 100644 src/lib/panzoom/index.ts create mode 100644 src/lib/panzoom/util.ts diff --git a/src/lib/panzoom/Panzoom.svelte b/src/lib/panzoom/Panzoom.svelte new file mode 100644 index 0000000..6f70812 --- /dev/null +++ b/src/lib/panzoom/Panzoom.svelte @@ -0,0 +1,7 @@ + + +
+ +
diff --git a/src/lib/panzoom/index.ts b/src/lib/panzoom/index.ts new file mode 100644 index 0000000..4ee7eab --- /dev/null +++ b/src/lib/panzoom/index.ts @@ -0,0 +1,2 @@ +export * from './util' +export {default as Panzoom} from './Panzoom.svelte' \ No newline at end of file diff --git a/src/lib/panzoom/util.ts b/src/lib/panzoom/util.ts new file mode 100644 index 0000000..3a30776 --- /dev/null +++ b/src/lib/panzoom/util.ts @@ -0,0 +1,23 @@ +import panzoom from 'panzoom'; +import type { PanZoom } from 'panzoom'; +import { writable } from 'svelte/store'; + +export const pz = 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 + }) + ); +} \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 91ea0d5..5872de0 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,29 +1,7 @@