import SequenceRunner from './sequence-runner.js';
import UI from './ui.js';
function getGlobalMode() {
const m1 = document.getElementById('mode-select');
if (m1) return m1.value;
const m2 = document.getElementById('seq-mode-select');
if (m2) return m2.value;
const m3 = document.getElementById('text-mode-select');
if (m3) return m3.value;
return 'direct';
}
export function buildQuickSequencesHTML() {
return `
`;
}
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 => `
`).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, getGlobalMode(), 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.
`;
}
}