Dedsecaibagley/codehack-academy-learn-pwn-in-style
0
1document.addEventListener('DOMContentLoaded', () => {2 // Initialize tooltips3 const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));4 tooltipTriggerList.map(function (tooltipTriggerEl) {5 return new bootstrap.Tooltip(tooltipTriggerEl);6 });7 8 // Theme toggle functionality9 const themeToggle = document.getElementById('theme-toggle');10 if (themeToggle) {11 themeToggle.addEventListener('click', () => {12 document.documentElement.classList.toggle('dark');13 localStorage.setItem('theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light');14 });15 }16 17 // Check for saved theme preference18 if (localStorage.getItem('theme') === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {19 document.documentElement.classList.add('dark');20 } else {21 document.documentElement.classList.remove('dark');22 }23});24 25// Dynamic import of code editor for interactive lessons26function loadCodeEditor() {27 return import('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/codemirror.min.js')28 .then(() => {29 return import('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/mode/python/python.min.js');30 })31 .then(() => {32 return import('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/mode/clike/clike.min.js');33 })34 .then(() => {35 return import('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.2/mode/javascript/javascript.min.js');36 })37 .then(() => {38 console.log('CodeMirror and all language modes loaded');39 });40}