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));
}
}