import SequenceRunner from './sequence-runner.js'; import UI from './ui.js'; export function buildQuickSequencesHTML() { return `
Quick Sequences
Loading sequences...
`; } export async function initQuickSequences(bgName, getSpots, getSteps, onStepComplete) { const listEl = document.getElementById('quick-sequences-list'); const stopBtn = document.getElementById('btn-stop-sequence'); if (!listEl) return; try { const res = await fetch(`web/assets/backgrounds/${bgName}/sequences.json?v=${Date.now()}`); if (!res.ok) throw new Error('Not found'); const sequences = await res.json(); const favorites = sequences.filter(s => s.favorite); if (favorites.length === 0) { listEl.innerHTML = `
No favorite sequences found.
`; return; } listEl.innerHTML = favorites.map(seq => `
${seq.name}
`).join(''); // Attach listeners listEl.querySelectorAll('.btn-play-seq').forEach(btn => { btn.addEventListener('click', async () => { const seq = favorites.find(s => s.id === btn.dataset.seqId); if (seq) { stopBtn.style.display = 'block'; const { steps1, steps2 } = getSteps(); await SequenceRunner.run(seq, getSpots(), steps1, steps2, onStepComplete); stopBtn.style.display = 'none'; } }); }); stopBtn.addEventListener('click', () => { SequenceRunner.stop(); stopBtn.style.display = 'none'; }); } catch (e) { listEl.innerHTML = `
No sequences.json found for this background.
`; } }