mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 10:00:17 +05:30
- Normalize pandoc command parsing with path.basename() to support bundled binary paths - Use bundled pandoc binary in convertWithPandoc instead of relying on PATH - Forward includeSubfolders checkbox state from renderer to main process - Add pandoc availability check before batch conversion - Re-enable Start button when batch conversion completes - Clean up obsolete dist build artifact causing test snapshot warning - Bump version to 4.4.4
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
class SidebarManager {
|
|
constructor() {
|
|
this.sidebar = document.getElementById('sidebar');
|
|
this.panelContent = document.getElementById('sidebar-panel-content');
|
|
this.panelTitle = document.querySelector('.sidebar-panel-title');
|
|
this.activePanel = null;
|
|
this.panels = new Map();
|
|
this.setupEventListeners();
|
|
}
|
|
|
|
setupEventListeners() {
|
|
document.querySelectorAll('.sidebar-icon').forEach((btn) => {
|
|
btn.addEventListener('click', () => this.togglePanel(btn.dataset.panel));
|
|
});
|
|
document
|
|
.querySelector('.sidebar-panel-close')
|
|
?.addEventListener('click', () => this.collapse());
|
|
}
|
|
|
|
registerPanel(name, { title, render }) {
|
|
this.panels.set(name, { title, render });
|
|
}
|
|
|
|
togglePanel(name) {
|
|
if (this.activePanel === name) {
|
|
this.collapse();
|
|
} else {
|
|
this.expand(name);
|
|
}
|
|
}
|
|
|
|
expand(name) {
|
|
const panel = this.panels.get(name);
|
|
if (!panel) return;
|
|
this.sidebar.classList.remove('collapsed');
|
|
this.panelTitle.textContent = panel.title;
|
|
this.panelContent.innerHTML = '';
|
|
panel.render(this.panelContent);
|
|
this.activePanel = name;
|
|
document.querySelectorAll('.sidebar-icon').forEach((btn) => {
|
|
btn.classList.toggle('active', btn.dataset.panel === name);
|
|
});
|
|
}
|
|
|
|
collapse() {
|
|
this.sidebar.classList.add('collapsed');
|
|
this.activePanel = null;
|
|
document.querySelectorAll('.sidebar-icon').forEach((btn) => btn.classList.remove('active'));
|
|
}
|
|
}
|
|
|
|
module.exports = { SidebarManager };
|