diff --git a/.prettierignore b/.prettierignore index a1ca8a6..dbee2b2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,5 @@ *.md *.yml coverage +Makefile +.prettierignore diff --git a/Makefile b/Makefile index 8d7bb56..30562ef 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ test: node_modules npx vitest run --coverage watch-test: node_modules - npx vitest --coverage + npx vitest --coverage --bail 1 pre-commit-check: pre-commit-lint test diff --git a/src/App.svelte b/src/App.svelte index 5ad6bd2..4b20057 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -127,9 +127,12 @@ } from "./lib/helpers.js"; let { urlData } = $props(); - let globals = $state( - load(urlData) ?? new State([new Sheet("Sheet 1", 10, 10)]), - ); + let globals; + globals = load(urlData); + if (globals == null) { + globals = new State([]); + globals.addSheet("Sheet 1", 10, 10); + } let table = $state(); let startHeight = $state(0); let scrollArea = $state(); @@ -162,7 +165,7 @@ return undefined; } } - return State.load(data); + return State.loadNew(data); } let dontSave = $state(false); @@ -191,26 +194,7 @@ // Allow cell changes with get or update to trigger save. Those updates // change forceSave globals.forceSave; - save({ - sheets: [ - // Spreads necessary for reactivity - ...globals.sheets.map((sheet) => ({ - name: sheet.name, - widths: [...sheet.widths], - heights: [...sheet.heights], - // TODO: Transpose for better compression - cells: [ - ...sheet.cells.map((row) => - row.map((cell) => ({ - formula: cell.formula, - value: cell.get(), - })), - ), - ], - })), - ], - formulaCode: globals.formulaCode, - }); + save(createSaveData(globals.sheets, globals.formulaCode)); }); $effect(() => { globals.currentSheetIndex; @@ -309,15 +293,7 @@ return; } dontSave = true; - globals = Object.assign(State.load(e.state), { - currentSheetIndex: globals.currentSheetIndex, - mode: globals.mode, - helpOpen: globals.helpOpen, - editorOpen: globals.editorOpen, - imageOpen: globals.imageOpen, - elements: globals.elements, - pasteBuffer: globals.pasteBuffer, - }); + globals.load(e.state); }} bind:innerHeight /> @@ -326,12 +302,12 @@ {#if navigator.maxTouchPoints <= 1}