(function () { 'use strict'; const { Store, esc, chips } = App; const nameInput = document.getElementById('name'); const nameError = document.getElementById('name-error'); const listEl = document.getElementById('list'); const countEl = document.getElementById('count'); nameInput.value = Store.name; nameInput.addEventListener('input', () => { Store.name = nameInput.value.trim(); nameInput.classList.remove('invalid'); nameError.textContent = ''; }); function requireName() { if (Store.name) return true; nameInput.classList.add('invalid'); nameError.textContent = '先に名前を入力してください。'; nameInput.focus(); return false; } document.getElementById('create').addEventListener('click', () => { if (requireName()) location.href = '/create'; }); listEl.addEventListener('click', (e) => { const btn = e.target.closest('[data-join]'); if (btn && requireName()) location.href = '/table/' + encodeURIComponent(btn.dataset.join); }); function phaseBadge(t) { if (t.paused) return 'PAUSED'; if (t.phase === 'WAITING') return 'WAITING'; return 'PLAYING'; } function render(tables) { countEl.textContent = tables.length ? `${tables.length} テーブル` : ''; if (!tables.length) { listEl.innerHTML = '