From e51d6f32396003c614ba5c8f97943cd37a0883b4 Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Sat, 10 Oct 2026 05:55:05 +0500 Subject: [PATCH] refactor: group props in view models --- docs/architecture-audit-2026-10.md | 14 +- .../components/schema/SchemaPreview.svelte | 143 +++++------------- .../components/schema/SchemaToolView.svelte | 76 +++++----- .../components/schema/schema-preview-model.ts | 60 +++++++- 4 files changed, 143 insertions(+), 150 deletions(-) diff --git a/docs/architecture-audit-2026-10.md b/docs/architecture-audit-2026-10.md index d5d6ba8..0ef9b46 100644 --- a/docs/architecture-audit-2026-10.md +++ b/docs/architecture-audit-2026-10.md @@ -67,13 +67,15 @@ handleFiles, эффекты, workspace-разметка). Декомпозици Переработка самого паттерна `$effect(() => init())` — часть H1, отдельно не делалась. -### M3. `SchemaPreview.svelte` — интерфейс из ~40 пропсов +### M3. `SchemaPreview.svelte` — интерфейс из ~40 пропсов — СДЕЛАНО (2026-10) -`web/src/lib/components/schema/SchemaPreview.svelte:22-103`: весь стейт -оркестратора проброшен вниз по одному (`stepResults`, `stepMaskable`, -`stepMaskOn`, `stepMasks`, `format`, `quality`, `limitKb`, `alphaLoss` + 11 -колбэков `on*`). Нужен группирующий view-model-объект или разбиение на -подкомпоненты. +Пропсы сгруппированы в 4 view-model объекта по внутреннему потребителю: `head` +(SchemaActions), `source` (SchemaSourceTile), `steps` (промежуточные тайлы), +`result` (SchemaResultTile). Интерфейсы — в `schema-preview-model.ts` +(`PreviewHeadModel` и др.); имена полей зеркалят пропсы потребителей, поэтому +внутри работает спред (``). Плоскими остались 7 +идентифицирующих пропсов (inputMode, resultKind, toolId, running, error, +aligned, ontogglealign). ### M4. `runMask` обходил санитизацию параметров — СДЕЛАНО (2026-10) diff --git a/web/src/lib/components/schema/SchemaPreview.svelte b/web/src/lib/components/schema/SchemaPreview.svelte index f94be22..978ab79 100644 --- a/web/src/lib/components/schema/SchemaPreview.svelte +++ b/web/src/lib/components/schema/SchemaPreview.svelte @@ -1,5 +1,11 @@ @@ -124,15 +79,7 @@ {resultKind} canDownload={hasResult} {running} - {format} - {quality} - {limitKb} - {alphaLoss} - {onupload} - {ondownload} - {onformat} - {onquality} - {onlimit} + {...head} /> @@ -143,15 +90,9 @@
{#each stepResults.slice(0, -1) as img, i (i)} {@const set = stepFileSets[i] ?? []} @@ -167,7 +108,7 @@ ontogglestepmask?.(i)} + onclick={() => steps.ontogglestepmask?.(i)} /> {/if} {/snippet} @@ -184,7 +125,7 @@ ontogglestepmask?.(i)} + onclick={() => steps.ontogglestepmask?.(i)} /> {/if} {/snippet} @@ -197,21 +138,7 @@ {/if} {/each} - +