diff --git a/src/sidebar/snippets-panel.js b/src/sidebar/snippets-panel.js new file mode 100644 index 0000000..8232527 --- /dev/null +++ b/src/sidebar/snippets-panel.js @@ -0,0 +1,71 @@ +function renderSnippetsPanel(container, { getSnippets, saveSnippet, deleteSnippet, onInsert }) { + container.innerHTML = ` +
${(s.code || '').substring(0, 100)}${(s.code || '').length > 100 ? '...' : ''}
+ 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 };