diff --git a/webapp/src/lib/layouts/edit/preview/AdaptivePreviewCanvas.svelte b/webapp/src/lib/layouts/edit/preview/AdaptivePreviewCanvas.svelte
new file mode 100644
index 0000000..8842183
--- /dev/null
+++ b/webapp/src/lib/layouts/edit/preview/AdaptivePreviewCanvas.svelte
@@ -0,0 +1,49 @@
+
+
+
+
+ {#if hasRendered}
+
+ {:else}
+
+
+
+ {/if}
+
+
diff --git a/webapp/src/lib/layouts/edit/preview/PreviewCanvas1x.svelte b/webapp/src/lib/layouts/edit/preview/PreviewCanvas.svelte
similarity index 55%
rename from webapp/src/lib/layouts/edit/preview/PreviewCanvas1x.svelte
rename to webapp/src/lib/layouts/edit/preview/PreviewCanvas.svelte
index 790cb7f..c9e0987 100644
--- a/webapp/src/lib/layouts/edit/preview/PreviewCanvas1x.svelte
+++ b/webapp/src/lib/layouts/edit/preview/PreviewCanvas.svelte
@@ -16,6 +16,12 @@
const renderedCtx = getRenderedContext()
const hasRendered = $derived(renderedCtx.rendered !== null)
+ interface Props {
+ scale: number
+ }
+
+ const { scale }: Props = $props()
+
let canvasEl: HTMLCanvasElement = $state(undefined!)
const ctx = $derived(freshContext(canvasEl))
@@ -27,25 +33,25 @@
-
-
- {#if hasRendered}
-
- {:else}
-
-
-
- {/if}
+
+
+
+ {#if hasRendered}
+
+ {:else}
+
+
+
+ {/if}
+
-
+
diff --git a/webapp/src/lib/layouts/edit/preview/PreviewCanvas2x.svelte b/webapp/src/lib/layouts/edit/preview/PreviewCanvas2x.svelte
deleted file mode 100644
index b4f47ad..0000000
--- a/webapp/src/lib/layouts/edit/preview/PreviewCanvas2x.svelte
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
- {#if hasRendered}
-
- {:else}
-
-
-
- {/if}
-
-
-
-
diff --git a/webapp/src/lib/layouts/edit/preview/PreviewSection.svelte b/webapp/src/lib/layouts/edit/preview/PreviewSection.svelte
index dcea5e8..c344d11 100644
--- a/webapp/src/lib/layouts/edit/preview/PreviewSection.svelte
+++ b/webapp/src/lib/layouts/edit/preview/PreviewSection.svelte
@@ -1,7 +1,10 @@
@@ -9,8 +12,12 @@
-
-
-
+
+ {#if mediaSm.current}
+
+
+ {:else}
+
+ {/if}
diff --git a/webapp/src/lib/layouts/edit/preview/common.svelte.ts b/webapp/src/lib/layouts/edit/preview/common.svelte.ts
index 019a36e..4dc37c2 100644
--- a/webapp/src/lib/layouts/edit/preview/common.svelte.ts
+++ b/webapp/src/lib/layouts/edit/preview/common.svelte.ts
@@ -18,7 +18,7 @@ export function makeAltText(
const file = filesCtx.files[0]
- const output = [`${DEVICE_WIDTH}-by-${DEVICE_HEIGHT}-pixels e-paper preview of "${file.name}"`]
+ const output = [`${DEVICE_WIDTH}-by-${DEVICE_HEIGHT}-pixel e-paper preview of "${file.name}"`]
if (!imageIsCorrectRatio(imageCtx.image)) {
if (config.scaleMode === 'fit') output.push('letterboxed')
diff --git a/webapp/src/lib/layouts/write/WriteButton.svelte b/webapp/src/lib/layouts/write/WriteButton.svelte
index f0d2e86..e348912 100644
--- a/webapp/src/lib/layouts/write/WriteButton.svelte
+++ b/webapp/src/lib/layouts/write/WriteButton.svelte
@@ -59,11 +59,11 @@ async function connectAndWrite() {
return
} finally {
setTimeout(() => {
+ toast.success('Wrote pattern to device')
inProgress = false
}, WRITE_TIME)
}
- toast.success('Wrote pattern to device')
}
$effect(() => {
diff --git a/webapp/src/lib/layouts/write/WriteSection.svelte b/webapp/src/lib/layouts/write/WriteSection.svelte
index 14d0a65..025935c 100644
--- a/webapp/src/lib/layouts/write/WriteSection.svelte
+++ b/webapp/src/lib/layouts/write/WriteSection.svelte
@@ -1,17 +1,17 @@
-
+
Write pattern to device
@@ -19,7 +19,8 @@
{#if imageCtx.image === null}
Select an image file in order to write it onto your device.
{:else if !inProgress}
- Write the pattern onto your device if you have finished editing the image.
+ Write the pattern onto your device if you have finished
+ editing the image.
{:else}
Refresh in progress. Do not disconnect device.
{/if}
diff --git a/webapp/src/lib/utils/media.svelte.ts b/webapp/src/lib/utils/media.svelte.ts
deleted file mode 100644
index 26b92a1..0000000
--- a/webapp/src/lib/utils/media.svelte.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { onDestroy } from 'svelte'
-
-export interface ReactiveMediaQuery {
- readonly matches: boolean
-}
-
-export function createMediaQuery(query: string): ReactiveMediaQuery {
- const queryList = matchMedia(query)
-
- const queryState = $state({ matches: queryList.matches })
-
- const updateQueryState = (e: MediaQueryListEvent) => (queryState.matches = e.matches)
-
- queryList.addEventListener('change', updateQueryState)
- onDestroy(() => queryList.removeEventListener('change', updateQueryState))
-
- return queryState
-}