// Shared teaching-layer collapse memory for every page that uses `.why-panel` (`
` // with a `data-why` id): the planner and the cupping session view. One localStorage key across // both so a user's choices carry over between pages. // // Panels are collapsed by default (see index.html/cupping.html) so the form isn't wall-to-wall // explanatory text on first load; this tracks which ones a user has explicitly opened, rather // than which they've closed, so it stays meaningful against a closed-by-default baseline. const WHY_EXPANDED_KEY = "roastPlannerWhyExpanded.v1"; export function wireWhyPanels() { let expanded; try { expanded = new Set(JSON.parse(localStorage.getItem(WHY_EXPANDED_KEY)) || []); } catch { expanded = new Set(); } const persist = () => { try { localStorage.setItem(WHY_EXPANDED_KEY, JSON.stringify([...expanded])); } catch { /* unavailable storage */ } }; const panels = [...document.querySelectorAll(".why-panel")]; for (const panel of panels) { if (expanded.has(panel.dataset.why)) panel.open = true; panel.addEventListener("toggle", () => { if (panel.open) expanded.add(panel.dataset.why); else expanded.delete(panel.dataset.why); persist(); }); } document.getElementById("btn-expand-why")?.addEventListener("click", () => { for (const panel of panels) { panel.open = true; expanded.add(panel.dataset.why); } persist(); }); }