export class SearchEngineManager { constructor() { this.engines = JSON.parse(localStorage.getItem('searchEngines')) || [ { name: 'SearXNG', url: 'https://search.ploszukiwacz.pl/search?q=%s', default: true } ]; this.searchForm = document.getElementById('search-form'); this.enginesContainer = document.getElementById('search-engines'); this.init(); } init() { this.renderEngines(); this.attachEventListeners(); this.setDefaultEngine(); } renderEngines() { this.enginesContainer.innerHTML = this.engines.map((engine, index) => `
`).join(''); } attachEventListeners() { document.getElementById('addSearchEngine').addEventListener('click', () => { this.addEngine({ name: 'New Engine', url: 'https://', default: false }); }); } addEngine(engine) { this.engines.push(engine); this.save(); this.renderEngines(); } updateEngine(index, field, value) { if (this.engines[index]) { this.engines[index][field] = value; this.save(); this.renderEngines(); } } removeEngine(index) { if (this.engines[index].default && this.engines.length > 1) { this.engines[0].default = true; } this.engines.splice(index, 1); this.save(); this.renderEngines(); } setDefault(index) { this.engines.forEach((engine, i) => { engine.default = i === index; }); this.save(); this.setDefaultEngine(); } setDefaultEngine() { const defaultEngine = this.engines.find(e => e.default) || this.engines[0]; if (defaultEngine) { this.searchForm.action = defaultEngine.url.replace('%s', ''); this.searchForm.querySelector('input').placeholder = `Search with ${defaultEngine.name}...`; } } save() { localStorage.setItem('searchEngines', JSON.stringify(this.engines)); } }