document.addEventListener('DOMContentLoaded', () => { const navLinks = document.querySelectorAll('.docs-nav-list .doc-link'); const contentArea = document.getElementById('docs-content'); // Configure Marked.js (Optional but good practice) marked.setOptions({ gfm: true, breaks: true, highlight: function (code, lang) { const language = hljs.getLanguage(lang) ? lang : 'plaintext'; return hljs.highlight(code, { language }).value; } }); async function fetchDocMarkdown(filename) { const candidateUrls = [ `../docs/${filename}`, `./docs/${filename}`, `/docs/${filename}`, `https://raw.githubusercontent.com/PR0M3TH3AN/SeedPass/main/docs/${filename}` ]; let lastError = null; for (const url of candidateUrls) { try { const response = await fetch(url); if (!response.ok) { throw new Error(`[${response.status}] Failed ${url}`); } const text = await response.text(); const isLikelyHtmlDocument = /|]/i.test(text); if (isLikelyHtmlDocument) { throw new Error(`Received HTML instead of Markdown from ${url}`); } return text; } catch (error) { lastError = error; } } throw lastError || new Error(`Unable to load ${filename}`); } async function fetchAndRenderModule(filename) { // Show loading state contentArea.innerHTML = `
Loading module ${filename}...
`; try { const markdownText = await fetchDocMarkdown(filename); // Parse Markdown to HTML const htmlContent = marked.parse(markdownText); // Render it in the content area with a wrapper for scoping styles contentArea.innerHTML = `
${htmlContent}
`; // Additional styling logic if needed, like adding classes to elements } catch (error) { console.error(error); contentArea.innerHTML = `

SYSTEM ERROR

${error.message || 'Unknown load error.'}

Failed to load module. Verify module path and server configuration.

`; } } // Event listener for navigation links navLinks.forEach(link => { link.addEventListener('click', (e) => { e.preventDefault(); // Update active state navLinks.forEach(l => l.classList.remove('active')); link.classList.add('active'); const filename = link.getAttribute('data-file'); fetchAndRenderModule(filename); // Update URL hash for simple state management (optional) window.location.hash = filename; }); }); // Handle initial load based on URL hash or default function initialLoad() { let initialFile = 'README.md'; // Default module if (window.location.hash) { // Get filename from hash (removing the # symbol) const hashFile = window.location.hash.substring(1); // Find corresponding link to make active const targetLink = document.querySelector(`.doc-link[data-file="${hashFile}"]`); if (targetLink) { navLinks.forEach(l => l.classList.remove('active')); targetLink.classList.add('active'); initialFile = hashFile; } } fetchAndRenderModule(initialFile); } initialLoad(); });