From 417ec134c1b605b36e777f491dba6d0f5f736a0c Mon Sep 17 00:00:00 2001 From: wires Date: Sat, 7 Mar 2026 19:00:15 -0500 Subject: [PATCH] Change how we detect touch events --- .../components/BeforeAfter/BeforeAfter.svelte | 35 +++++++---- pages/Stories/One/+page.svelte | 42 +++++++++++++ pages/Stories/One/One.svelte | 59 +++++++++++++++++++ 3 files changed, 123 insertions(+), 13 deletions(-) create mode 100644 pages/Stories/One/+page.svelte create mode 100644 pages/Stories/One/One.svelte diff --git a/packages/graphics-components/src/components/BeforeAfter/BeforeAfter.svelte b/packages/graphics-components/src/components/BeforeAfter/BeforeAfter.svelte index 3a79ef3..c41d138 100644 --- a/packages/graphics-components/src/components/BeforeAfter/BeforeAfter.svelte +++ b/packages/graphics-components/src/components/BeforeAfter/BeforeAfter.svelte @@ -145,20 +145,29 @@ /** Move the slider */ const move = (e: MouseEvent | TouchEvent) => { - if (sliding && imgOffset) { - const el = - e instanceof TouchEvent && e.touches ? e.touches[0] : (e as MouseEvent); - const figureOffset = - figure ? - parseInt(window.getComputedStyle(figure).marginLeft.slice(0, -2)) - : 0; - let x = el.pageX - figureOffset - imgOffset.left; - x = - x < handleMargin ? handleMargin - : x > w - handleMargin ? w - handleMargin - : x; - offset = x / w; + if (!sliding || !imgOffset) return; + + let pointer: MouseEvent | Touch | undefined; + + if ('touches' in e) { + pointer = e.touches[0] ?? e.changedTouches[0]; + } else { + pointer = e; } + + if (!pointer) return; + + const figureOffset = + figure ? + parseInt(window.getComputedStyle(figure).marginLeft.slice(0, -2)) + : 0; + + let x = pointer.pageX - figureOffset - imgOffset.left; + x = + x < handleMargin ? handleMargin + : x > w - handleMargin ? w - handleMargin + : x; + offset = x / w; }; /** Starts the slider */ diff --git a/pages/Stories/One/+page.svelte b/pages/Stories/One/+page.svelte new file mode 100644 index 0000000..0e91784 --- /dev/null +++ b/pages/Stories/One/+page.svelte @@ -0,0 +1,42 @@ + + + + + + + diff --git a/pages/Stories/One/One.svelte b/pages/Stories/One/One.svelte new file mode 100644 index 0000000..fdd2035 --- /dev/null +++ b/pages/Stories/One/One.svelte @@ -0,0 +1,59 @@ + + + + {#snippet backgroundSnippet()} + +

+ Current step: {index + 1}/{count} +

+ + +

Offset in current step

+ + +

Total progress

+ + {/snippet} + {#snippet foregroundSnippet()} + +
Step 1
+
Step 2
+
Step 3
+
Step 4
+
Step 5
+ {/snippet} +
+ +