From 7b294adca24efe00d8614515ddee50b4a3b743d0 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 27 Sep 2026 22:35:54 +0900 Subject: [PATCH] =?UTF-8?q?feat(spreadsheet):=20C=20=EA=B2=A9=EC=9E=90=20?= =?UTF-8?q?=E2=80=94=20=ED=99=95=EB=8C=80=20=EC=9D=B4=EC=9D=8C(zoom()=20?= =?UTF-8?q?=C2=B7=20aislo-grid-zoom=20=EC=9D=B4=EB=B2=A4=ED=8A=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 계약 더함 — GridHandle.zoom(): number(1 = 100%). 확대가 바뀔 때마다 격자 root 에서 CustomEvent("aislo-grid-zoom", { detail: { zoom }, bubbles: true }) 를 쏨(sub4 상태줄이 들음). ORCA 시험 — WheelEvent(ctrlKey · deltaY -300) 로 확대 흉내 → zoom() 1→1.568 · 이벤트 detail.zoom 도 같은 값으로 확인. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01VVM3xZ1aUPcUTuW2WZSnwg --- A00_Common/spreadsheet/spreadsheet_grid.ts | 6 ++++++ A00_Common/spreadsheet/spreadsheet_view_types.ts | 2 ++ 2 files changed, 8 insertions(+) diff --git a/A00_Common/spreadsheet/spreadsheet_grid.ts b/A00_Common/spreadsheet/spreadsheet_grid.ts index 7118a752..23dc5c68 100644 --- a/A00_Common/spreadsheet/spreadsheet_grid.ts +++ b/A00_Common/spreadsheet/spreadsheet_grid.ts @@ -399,6 +399,7 @@ export function createGrid(ctx: SpreadsheetContext): GridHandle { paneBR.scrollLeft *= zoom / before; paneBR.scrollTop *= zoom / before; layoutPanes(); + root.dispatchEvent(new CustomEvent("aislo-grid-zoom", { detail: { zoom }, bubbles: true })); } root.addEventListener("wheel", onWheel, { passive: false }); @@ -935,6 +936,10 @@ export function createGrid(ctx: SpreadsheetContext): GridHandle { return { layer: paneLayerOf(r, c), box: screenBoxOf(r, c) }; } + function getZoom(): number { + return zoom; + } + function destroy(): void { resize.disconnect(); paneBR.removeEventListener("scroll", onScroll); @@ -954,6 +959,7 @@ export function createGrid(ctx: SpreadsheetContext): GridHandle { reveal, visibleRange, editorSlot, + zoom: getZoom, destroy, }; } diff --git a/A00_Common/spreadsheet/spreadsheet_view_types.ts b/A00_Common/spreadsheet/spreadsheet_view_types.ts index 4c9a97e6..3695a4b4 100644 --- a/A00_Common/spreadsheet/spreadsheet_view_types.ts +++ b/A00_Common/spreadsheet/spreadsheet_view_types.ts @@ -69,6 +69,8 @@ export interface GridHandle { visibleRange(): CellRange; /** 편집기를 얹을 층과 칸 자리(화면 좌표 · 병합이면 전체) — D 편집기가 씀 */ editorSlot(r: number, c: number): { layer: HTMLElement; box: CellBox }; + /** 지금 확대(1 = 100%) — 바뀌면 `root` 에서 CustomEvent("aislo-grid-zoom", { detail: { zoom } }) 를 쏨(E 상태줄이 들음) */ + zoom(): number; destroy(): void; }