(function () {
  // Nombre del archivo raíz — ajusta si tu jobname es distinto
  const TOC_FILE = 'Aprincipal.html';

  const sidebar = document.getElementById('toc-content');
  if (!sidebar) return;

  // Detectar página actual para marcarla activa
  const currentPage = location.pathname.split('/').pop() || 'Aprincipal.html';

  fetch(TOC_FILE)
    .then(r => {
      if (!r.ok) throw new Error('No se encontró ' + TOC_FILE);
      return r.text();
    })
    .then(html => {
      const parser = new DOMParser();
      const doc = parser.parseFromString(html, 'text/html');

      // tex4ht marca el TOC con esta clase
      const toc =
        doc.querySelector('.tableofcontents') ||
        doc.querySelector('nav.TOC') ||
        doc.querySelector('#TOC');

      if (!toc) {
        sidebar.innerHTML = '<em>Índice no encontrado</em>';
        return;
      }

      // Clonar y marcar enlace activo
      const clone = toc.cloneNode(true);
      clone.querySelectorAll('a').forEach(a => {
        const href = a.getAttribute('href') || '';
        const file = href.split('#')[0].split('/').pop();
        if (file === currentPage) {
          a.classList.add('toc-active');
          // Expandir si está en lista colapsada
          let parent = a.closest('li');
          while (parent) {
            parent.style.display = '';
            parent = parent.parentElement?.closest('li');
          }
        }
      });

      sidebar.innerHTML = '';
      sidebar.appendChild(clone);
    })
    .catch(() => {
      sidebar.innerHTML = '<em>Índice no disponible</em>';
    });
})();

// Toggle colapsar/expandir
function tocToggle() {
  const nav = document.getElementById('sidebar-toc');
  nav.classList.toggle('collapsed');
  // Guardar estado
  localStorage.setItem('tocCollapsed', nav.classList.contains('collapsed'));
}

// Restaurar estado al cargar
document.addEventListener('DOMContentLoaded', () => {
  if (localStorage.getItem('tocCollapsed') === 'true') {
    document.getElementById('sidebar-toc')?.classList.add('collapsed');
  }
});
