let observer; function createObserver(elements) { let options = { threshold: [.3, .9], }; observer = new IntersectionObserver(handleIntersect, options); elements.forEach((el) => { observer.observe(el); }); } function handleIntersect(entries, _observer) { entries.forEach((entry) => { const threshold = entry.target.dataset.threshold || 0; if (entry.intersectionRatio >= Number(threshold)) { entry.target.classList.add("show"); } else { entry.target.classList.remove("show"); } }); } window.addEventListener( "load", () => { const elements = document.querySelectorAll(".animate-in"); if ("IntersectionObserver" in window) { createObserver(elements); } else { elements.forEach((el) => { el.classList.add("show"); }); } const faqLinks = document.querySelectorAll(".faq-link"); faqLinks.forEach((link) => link.addEventListener("click", (e) => { e.preventDefault(); const container = link.nextElementSibling; const icon = link.querySelector(".faq-icon"); if (container.classList.contains("open")) { container.classList.remove("open"); icon.classList.remove("open"); } else { container.classList.add("open"); icon.classList.add("open"); } }) ); const wrappernav = document.querySelector(".wrappernav"); if (document.documentElement.scrollTop > 68) { wrappernav.classList.add("scrolled"); } window.addEventListener( "scroll", () => { if (document.documentElement.scrollTop > 68) { wrappernav.classList.add("scrolled"); } else { wrappernav.classList.remove("scrolled"); } }, { passive: true } ); }, false ); const buyDialog = document.getElementById("buy-dialog"); const buyFabs = document.querySelectorAll(".buy"); buyFabs.forEach(btn => btn.addEventListener("click", (e) => { e.preventDefault(); showBuyDialog(); })); function showBuyDialog() { buyDialog.style.display = "flex"; } function closeDialog() { buyDialog.style.display = "none"; } window.onclick = function (event) { if (event.target === buyDialog) { closeDialog(); } }; if (document.location.search === "?order") { showBuyDialog(); } const menuMobileBtn = document.getElementById("open-mobile-menu"); const mobileMenu = document.querySelector(".w-nav-overlay"); const mobileMenuLinks = document.querySelectorAll(".w-nav-overlay a"); menuMobileBtn.addEventListener("click", (e) => { e.preventDefault(); if (mobileMenu.classList.contains("open")) { mobileMenu.classList.remove("open"); menuMobileBtn.classList.remove("open"); } else { mobileMenu.classList.add("open"); menuMobileBtn.classList.add("open"); } }); mobileMenuLinks.forEach((link) => link.addEventListener("click", () => { mobileMenu.classList.remove("open"); menuMobileBtn.classList.remove("open"); }) ); const rendering = document.querySelector(".exploded-view-rendered"); rendering.addEventListener("animationend", () => { rendering.style.opacity = 1; observer.unobserve(rendering.parentElement); rendering.parentElement.classList.add("show"); document.querySelectorAll(".exploded-part").forEach((part) => { part.remove(); }); }, {once: true});