// A draft is what the user has entered but not yet saved. // It is kept in this browser only, so a recoverable close or navigation never loses it. export function createDraft() { return { bristolType: 4, typeChosen: false, color: 'brown', urgency: 0, discomfort: 0, note: '', symptoms: {}, photoDataUrl: '', }; } export function isDraftDirty(draft = {}) { return Boolean( draft.typeChosen || draft.photoDataUrl || String(draft.note || '').trim() || Number(draft.urgency) > 0 || Number(draft.discomfort) > 0 || (draft.color && draft.color !== 'brown') || Object.values(draft.symptoms || {}).some(Boolean), ); } export function draftNotice(draft = {}) { if (!isDraftDirty(draft)) return ''; const parts = []; if (draft.typeChosen) parts.push(`Type ${draft.bristolType}`); if (draft.color && draft.color !== 'brown') parts.push(`${draft.color} color`); if (Number(draft.urgency) > 0) parts.push('urgency'); if (Number(draft.discomfort) > 0) parts.push('discomfort'); if (String(draft.note || '').trim()) parts.push('note'); if (Object.values(draft.symptoms || {}).some(Boolean)) parts.push('symptoms'); if (draft.photoDataUrl) parts.push('photo'); return parts.join(' ยท '); }