const states = new Set(["saved", "saving", "retrying", "failed"]); export function mount(element) { const texts = new Map([...states].map(state => [state, element.getAttribute(`data-text-${state}`) || ""])); function setState(requested) { const state = states.has(requested) ? requested : "idle"; const text = texts.get(state) || ""; if (element.getAttribute("data-state") !== state) element.setAttribute("data-state", state); if (element.textContent !== text) element.textContent = text; } setState(element.getAttribute("data-state")); return setState; }