From 61400d1eedfdd5adbf876f60842be57dc274a941 Mon Sep 17 00:00:00 2001 From: Steffen Becker Date: Thu, 4 Jun 2026 14:05:14 +0200 Subject: [PATCH] feat: page orientation --- CHANGELOG.md | 1 + src/App.svelte | 12 +++-- src/lib/editor/Editor.svelte | 32 ++++++++---- src/lib/editor/ToolbarExpanded.svelte | 65 ++++++++++++++++++++++++- src/lib/editor/pageBreaks.ts | 70 ++++++++++++++++----------- src/lib/export/odt.ts | 6 ++- src/lib/storage/pageOrientation.ts | 28 +++++++++++ src/styles/editor.css | 8 +-- 8 files changed, 176 insertions(+), 46 deletions(-) create mode 100644 src/lib/storage/pageOrientation.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 27a7e5d..5f09ed7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ - text alignment - show formatting marks - margins +- page orientation (odt-kit bug still open => export not working) ### Not yet implemented - ODT import / open existing file diff --git a/src/App.svelte b/src/App.svelte index 17a1066..cac89a9 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -8,6 +8,7 @@ import { getColorDebug } from './lib/editor/colorDebug'; import { loadTheme, saveTheme, applyTheme, loadToolbarExpanded, saveToolbarExpanded, loadFormattingMarks, saveFormattingMarks, type ThemeMode } from './lib/storage/theme'; import { loadPageMargins, savePageMargins, type PageMargins } from './lib/storage/pageMargins'; + import { loadOrientation, saveOrientation, type Orientation } from './lib/storage/pageOrientation'; let editor: Editor | null = $state(null); let tick: number = $state(0); @@ -20,6 +21,7 @@ let showFormattingMarks = $state(loadFormattingMarks()); let zoom = $state(Math.max(20, Math.min(300, parseInt(localStorage.getItem('odf-editor-zoom') ?? '100', 10)))); let pageMargins: PageMargins = $state(loadPageMargins()); + let pageOrientation: Orientation = $state(loadOrientation()); $effect(() => { saveFormattingMarks(showFormattingMarks); @@ -29,6 +31,10 @@ savePageMargins(pageMargins); }); + $effect(() => { + saveOrientation(pageOrientation); + }); + function setZoom(value: number) { zoom = Math.max(20, Math.min(300, value)); localStorage.setItem('odf-editor-zoom', String(zoom)); @@ -55,7 +61,7 @@ } async function handleExport() { - if (editor) await exportToOdt(editor, pageMargins); + if (editor) await exportToOdt(editor, pageMargins, pageOrientation); } function handleDebugDump() { @@ -167,9 +173,9 @@ {#if toolbarExpanded} - + {/if} - +