summaryrefslogtreecommitdiffstatshomepage
path: root/frontend/src/lib/Reader.ts
diff options
context:
space:
mode:
authorWolfgang Müller2025-02-13 17:52:16 +0100
committerWolfgang Müller2025-02-13 17:52:16 +0100
commitdc4db405d2991d3ec6a114f3b08d3fccd057d3ee (patch)
tree2c620c9af2062ba09fa591f8b3ed961664adab58 /frontend/src/lib/Reader.ts
parent4df870d793123be95c8af031a340a39b5b8402ac (diff)
downloadhircine-dc4db405d2991d3ec6a114f3b08d3fccd057d3ee.tar.gz
frontend: Migrate to Svelte 5
Diffstat (limited to 'frontend/src/lib/Reader.ts')
-rw-r--r--frontend/src/lib/Reader.ts62
1 files changed, 0 insertions, 62 deletions
diff --git a/frontend/src/lib/Reader.ts b/frontend/src/lib/Reader.ts
deleted file mode 100644
index 8777b9b..0000000
--- a/frontend/src/lib/Reader.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { Layout, type PageFragment } from '$gql/graphql';
-import { getContext, setContext } from 'svelte';
-import { writable, type Writable } from 'svelte/store';
-
-export interface Chunk {
- main: PageFragment;
- secondary?: PageFragment;
- index: number;
-}
-
-class ReaderContext {
- visible = false;
- sidebar = false;
- pages: PageFragment[] = [];
- page = 0;
-
- open(page: number) {
- this.page = page;
- this.visible = true;
-
- return this;
- }
-}
-
-export function initReaderContext() {
- return setContext<Writable<ReaderContext>>('reader', writable(new ReaderContext()));
-}
-
-export function getReaderContext() {
- return getContext<Writable<ReaderContext>>('reader');
-}
-
-export function partition(pages: PageFragment[], layout: Layout): [Chunk[], number[]] {
- const single = layout === Layout.Single;
- const offset = layout === Layout.DoubleOffset;
-
- const chunks: Chunk[] = [];
- const lookup: number[] = Array<number>(pages.length);
-
- for (let chunkIndex = 0, pageIndex = 0; pageIndex < pages.length; chunkIndex++) {
- const wide = () => pages[pageIndex].image.aspectRatio > 1;
-
- const nextPage = () => {
- lookup[pageIndex] = chunkIndex;
- return pages[pageIndex++];
- };
-
- const offsetFirst = pageIndex === 0 && offset;
- const full = single || wide() || offsetFirst;
-
- const chunk: Chunk = { index: pageIndex, main: nextPage() };
-
- if (!full && pageIndex < pages.length) {
- if (!wide()) {
- chunk.secondary = nextPage();
- }
- }
-
- chunks.push(chunk);
- }
- return [chunks, lookup];
-}