/* ============================================================================= * M02_MasterTemplete_ItemSource.ts * 항목 카드 · 편집기가 문서를 읽는 **자료 자리**(계획서 25-2d) — 층 고정(`getActiveLayer`)이던 자리를 * 인자로 뺌. M02 화면은 지금 층(`layerSource`) · 항목 고르기 모달은 프로젝트 복사본 또는 원본 층. * 카드(`M02_MasterTemplete_ItemCards.ts`)는 어디서 읽는지 모르고 이 창구만 부름. * ========================================================================== */ import { getActiveLayer, readTemplate, saveTemplate, type Layer, } from "./M02_MasterTemplete_Api_Fetch"; /** 집계표 열 하나에 딸린 문서 셋 — 구조물 도면 · 면적산출 · 재료산출 */ export type ItemPart = "structure" | "area" | "material"; export interface ItemSource { /** CAD 자동백업 칸을 가르는 층 — 프로젝트 복사본이면 `project` */ layer: Layer; projectId: string | null; /** 열 id 의 문서 하나 — 못 읽으면 던짐(카드가 「없음」 · 알림으로 갈라 보임) */ read: (part: ItemPart, column: string) => Promise<{ 문서: unknown; 판?: string | null }>; /** 카드 안 [저장](PLAN 31-4) — 전체 편집기와 같은 저장 길 · 없으면 카드는 보기만 */ write?: (part: ItemPart, column: string, 판: string, 문서: unknown) => Promise<{ 판: string }>; } /** M02 화면의 자료 자리 — 부를 때의 지금 층(`getActiveLayer`) 그대로 */ export const layerSource = (): ItemSource => { const layer = getActiveLayer(); return { layer, projectId: null, read: (part, column) => readTemplate(layer, part, column, null), write: (part, column, 판, 문서) => saveTemplate(layer, part, column, null, 판, 문서), }; };