Files
Aislo/M02_MasterTemplete/M02_MasterTemplete_ItemSource.ts
eomsangdonandClaude Sonnet 5.5 470d00a18c refactor(M02): 항목 카드를 공용 한 벌로 — 자료 자리 창구 · 카드 셋 옮김 · 선택 입력 카드 뼈대 (PLAN 25-2d)
- ItemSource: 문서를 읽는 자리를 인자로(M02 = 지금 층 · 고르기 모달 = 프로젝트 복사본)
- ItemCards: Structure.ts 의 도면 · 면적산출 · 재료산출 카드 그리기를 옮김(DOM · 동작 그대로) + 덧붙는 카드 자리
- InputsCard: 선택 입력 카드 뼈대(로직마다 묶음 · view · value 모드 · link 는 25-2c)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EauA2ATmqNRbeV48s9CcBr
2026-09-29 23:18:47 +09:00

30 lines
1.4 KiB
TypeScript

/* =============================================================================
* M02_MasterTemplete_ItemSource.ts
* 항목 카드 · 편집기가 문서를 읽는 **자료 자리**(계획서 25-2d) — 층 고정(`getActiveLayer`)이던 자리를
* 인자로 뺌. M02 화면은 지금 층(`layerSource`) · 항목 고르기 모달은 프로젝트 복사본 또는 원본 층.
* 카드(`M02_MasterTemplete_ItemCards.ts`)는 어디서 읽는지 모르고 이 창구만 부름.
* ========================================================================== */
import { getActiveLayer, readTemplate, 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 }>;
}
/** M02 화면의 자료 자리 — 부를 때의 지금 층(`getActiveLayer`) 그대로 */
export const layerSource = (): ItemSource => {
const layer = getActiveLayer();
return {
layer,
projectId: null,
read: (part, column) => readTemplate(layer, part, column, null),
};
};