feat(spreadsheet): C 격자 — 확대 이음(zoom() · aislo-grid-zoom 이벤트)
계약 더함 — 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VVM3xZ1aUPcUTuW2WZSnwg
This commit is contained in:
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user