app.js (1233B)
1 import { initExperience } from "./modules/experience.js"; 2 import { initHeader, updateAppTitle } from "./modules/header.js"; 3 import { initHelp } from "./modules/help.js"; 4 import { initLayout } from "./modules/layout.js"; 5 import { initLightbox } from "./modules/lightbox.js"; 6 import { initPortrait } from "./modules/portrait.js"; 7 import { initProjects } from "./modules/projects.js"; 8 import { revealLines } from "./modules/reveal.js"; 9 import { initShell } from "./modules/shell.js"; 10 11 function initApp() { 12 initHeader(); 13 initHelp(); 14 initLightbox(); 15 initLayout(); 16 17 const initDynamicContent = () => { 18 initShell(); 19 initPortrait(); 20 initProjects(); 21 initExperience(); 22 updateAppTitle(); 23 }; 24 initDynamicContent(); 25 26 document.addEventListener("htmx:afterSwap", (e) => { 27 if (!e.target) return; 28 29 switch (e.target.id) { 30 case "content": 31 initDynamicContent(); 32 revealLines(e.target); 33 break; 34 case "project-detail": 35 initDynamicContent(); 36 revealLines(e.target); 37 break; 38 default: 39 break; 40 } 41 }); 42 } 43 44 if (document.readyState === "loading") { 45 document.addEventListener("DOMContentLoaded", initApp, { once: true }); 46 } else { 47 initApp(); 48 }