/** * A line said once and gone, in the playlists' note (style.css * `.playlist-note`): "Link copied", "2 groups unreachable". Not a dialog — * nothing here is anyone's to dismiss. * * Appended to the body rather than rendered by a view, because the views that * speak include modals and a context menu that has already closed. One note * at a time: a second replaces the first and restarts the clock. */ let _note = null; let _timer = null; export function say(text, ms = 2500) { if (!_note) { _note = document.createElement('div'); _note.className = 'playlist-note page-note'; _note.setAttribute('role', 'status'); } _note.textContent = text; document.body.appendChild(_note); clearTimeout(_timer); _timer = setTimeout(() => { if (_note) _note.remove(); }, ms); }