/* ============================================================================= * spreadsheet_clipboard.ts (주인 E) * 복사 · 잘라내기 · 붙여넣기 — `copy` · `cut` · `paste` 사건만(허락 창 없음 · navigator.clipboard 안 씀). * 형 · 수식 살리기 규칙은 `spreadsheet_types.ts` `ClipBlock` 머리. 잘라 붙이기(안쪽) = `옮기기` 명령 · * 나머지 = `칸` 명령(식은 A `moveFormula` · 구글 R1C1 은 `r1c1ToA1`) + 병합 명령 묶음. * 편집 중(`ctx.editor.editing()`)이면 사건을 편집기에 맡김. 0 계약 머리 — 몸은 E 가 채움. * ========================================================================== */ import type { CellAddress, CellRange, ClipBlock, Workbook } from "./spreadsheet_types"; import type { PartHandle, SpreadsheetContext } from "./spreadsheet_view_types"; const todo = (): never => { throw new Error("spreadsheet_clipboard: 아직 없음(E)"); }; /** `ctx.root` 의 copy · cut · paste 를 받음(root null) */ export function attachClipboard(_ctx: SpreadsheetContext): PartHandle { return todo(); } /** 클립보드 글 → 뭉치(HTML 먼저 · 없으면 TSV) · 읽을 것 없으면 null · `at` = 붙일 왼위(구글 R1C1 풀이) */ export function parseClipboard(_html: string, _text: string, _at: CellAddress): ClipBlock | null { return todo(); } /** 범위 → 클립보드 글 둘(TSV = 보이는 값 · HTML = 인라인 서식 표 + 안쪽 뭉치 JSON) */ export function blockToClipboard( _book: Workbook, _sheet: string, _range: CellRange, ): { html: string; text: string } { return todo(); }