// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. (() => { const darkThemes = ['ayu', 'navy', 'coal']; const lightThemes = ['light', 'rust']; const classList = document.getElementsByTagName('html')[0].classList; let lastThemeWasLight = true; for (const cssClass of classList) { if (darkThemes.includes(cssClass)) { lastThemeWasLight = false; break; } } const theme = lastThemeWasLight ? 'default' : 'dark'; mermaid.initialize({ startOnLoad: false, theme }); // Simplest way to make mermaid re-render the diagrams in the new theme is via refreshing the page function initThemeButtons() { for (const darkTheme of darkThemes) { const darkBtn = document.getElementById(darkTheme); if (darkBtn) { darkBtn.addEventListener('click', () => { if (lastThemeWasLight) { window.location.reload(); } }); } } for (const lightTheme of lightThemes) { const lightBtn = document.getElementById(lightTheme); if (lightBtn) { lightBtn.addEventListener('click', () => { if (!lastThemeWasLight) { window.location.reload(); } }); } } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initThemeButtons); } else { initThemeButtons(); } })();