function renderSnippetsPanel(container, { getSnippets, saveSnippet, deleteSnippet, onInsert }) { container.innerHTML = `
`; let snippets = []; async function loadSnippets() { snippets = (await getSnippets()) || []; renderList(document.getElementById('snippets-search')?.value || ''); } function renderList(query) { const list = document.getElementById('snippets-list'); if (!list) return; const filtered = query ? snippets.filter( (s) => s.name.toLowerCase().includes(query.toLowerCase()) || (s.language || '').toLowerCase().includes(query.toLowerCase()) ) : snippets; list.innerHTML = filtered.length ? filtered .map( (s) => `
${s.name} ${s.language || 'text'}
${(s.code || '').substring(0, 100)}${(s.code || '').length > 100 ? '...' : ''}
` ) .join('') : '

No snippets yet. Click + to add one.

'; list.querySelectorAll('.snippet-insert').forEach((btn) => { btn.addEventListener('click', () => { const s = snippets.find((sn) => sn.id === btn.dataset.id); if (s) onInsert(s.code); }); }); list.querySelectorAll('.snippet-delete').forEach((btn) => { btn.addEventListener('click', async () => { await deleteSnippet(btn.dataset.id); loadSnippets(); }); }); } document .getElementById('snippets-search') ?.addEventListener('input', (e) => renderList(e.target.value)); document.getElementById('snippets-add')?.addEventListener('click', () => { const name = prompt('Snippet name:'); if (!name) return; const language = prompt('Language (e.g., javascript, python, html):') || 'text'; const code = prompt('Paste your code snippet:'); if (!code) return; saveSnippet({ id: Date.now().toString(), name, language, code }).then(() => loadSnippets()); }); loadSnippets(); } module.exports = { renderSnippetsPanel };