export interface ChatDraftImage { data: string; mimeType: string; } export interface ChatDraft { value: string; images: ChatDraftImage[]; } const drafts = new Map(); function cloneDraft(draft: ChatDraft): ChatDraft { return { value: draft.value, images: draft.images.map((image) => ({ ...image })), }; } function isEmptyDraft(draft: ChatDraft): boolean { return !draft.value && draft.images.length === 0; } export function getDraft(key: string): ChatDraft | null { const draft = drafts.get(key); return draft ? cloneDraft(draft) : null; } export function setDraft(key: string, draft: ChatDraft): void { if (isEmptyDraft(draft)) { drafts.delete(key); return; } drafts.set(key, cloneDraft(draft)); } export function clearDraft(key: string): void { drafts.delete(key); }