diff --git a/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts b/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts index 3e16d5a8..12d51b77 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts @@ -170,6 +170,25 @@ export function mountDrawingTemplate( showToast(error instanceof Error ? error.message : "자리표 목록을 받지 못했습니다.", "error"), ); + // CAD 안 💾 · Ctrl+S — 양식 파일은 페이지 [저장] 만 쓴다. 저장 중 또 눌러도 한 번만 부른다. + let saving = false; + const hostSave = (): void => { + if (readOnly) return void showToast("이 양식은 볼 수만 있습니다.", "info"); + if (saving || !options.onSave) return; + saving = true; + getDoc() + .then((next) => options.onSave?.(next)) + .catch((error) => + showToast(error instanceof Error ? error.message : "양식을 저장하지 못했습니다.", "error"), + ) + .finally(() => (saving = false)); + }; + + const cad = createCadHost({ + title: "도면 양식", + onChanged: (dirty) => options.onChanged?.(dirty), + onHostSave: hostSave, + }); const load = (drawing: DrawingTemplateDoc): void => { cad.beginLoading(); cad.load(