From b1444582a36af66bcfbc24399dc212e92ecae4fe Mon Sep 17 00:00:00 2001 From: Zerebos Date: Sat, 16 May 2026 01:01:12 -0400 Subject: [PATCH] Add circular loaders to pages --- .../reader/components/PageView.svelte | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/src/features/reader/components/PageView.svelte b/src/features/reader/components/PageView.svelte index 97c574f..da9b64c 100644 --- a/src/features/reader/components/PageView.svelte +++ b/src/features/reader/components/PageView.svelte @@ -376,7 +376,7 @@ {#key chapterEpoch} {#if style === "longstrip"} - {#each flatPages as page, gi} + {#each flatPages as page, gi (page.chapterId + ":" + page.localIndex)} {@const src = resolvedSrc[gi]} {@const isLoaded = loadedSet.has(gi)}
- {#if isLoaded} + {#if isLoaded && src} {page.chapterName} – Page {page.localIndex + 1} {:else} -
+ {/if}
{/each} @@ -413,7 +415,9 @@ {:else if style === "fade" && pageReady}
{#await resolveUrl(store.pageUrls[store.pageNumber - 1], 999)} - Page {store.pageNumber} + {:then src} Page {store.pageNumber} {/await} @@ -423,9 +427,11 @@
{#if pageGroups.length}
- {#each currentGroup as pg, i} + {#each currentGroup as pg, i (pg)} {#await resolveUrl(store.pageUrls[pg - 1], 999)} - Page {pg} + {:then src} Page {pg} {/await} @@ -439,7 +445,9 @@ {:else if pageReady}
{#await resolveUrl(store.pageUrls[store.pageNumber - 1], 999)} - Page {store.pageNumber} + {:then src} Page {store.pageNumber} {/await} @@ -471,7 +479,23 @@ width: var(--effective-width, 100%); max-width: var(--effective-width, 100%); aspect-ratio: var(--aspect, 0.667); - background: transparent; + border-radius: var(--radius-sm); + background: color-mix(in srgb, var(--bg-raised) 90%, transparent); + } + + .page-loader { + display: flex; + align-items: center; + justify-content: center; + background: color-mix(in srgb, var(--bg-raised) 90%, transparent); + border-radius: var(--radius-sm); + } + + .page-loader-single { + width: min(100%, var(--effective-width, 100%)); + max-width: var(--effective-width, 100%); + max-height: calc(100vh - 80px); + aspect-ratio: 2 / 3; } .img { display: block; user-select: none; image-rendering: auto; }