/** * Floating window setup */ document.querySelectorAll(".floating-window").forEach( /** * Runs for each floating window * * @param {HTMLDivElement} w */ (w) => { makeDraggable(w); w.addEventListener( "wheel", (e) => { e.stopPropagation(); }, {passive: false} ); w.addEventListener( "click", (e) => { e.stopPropagation(); }, {passive: false} ); } ); /** * Collapsible element setup */ var coll = document.getElementsByClassName("collapsible"); for (var i = 0; i < coll.length; i++) { let active = false; coll[i].addEventListener("click", function () { var content = this.nextElementSibling; if (!active) { this.classList.add("active"); content.classList.add("active"); } else { this.classList.remove("active"); content.classList.remove("active"); } const observer = new ResizeObserver(() => { if (active) content.style.maxHeight = content.scrollHeight + "px"; }); Array.from(content.querySelectorAll("*")).forEach((child) => { observer.observe(child); }); if (active) { content.style.maxHeight = null; active = false; } else { content.style.maxHeight = content.scrollHeight + "px"; active = true; } }); } /** * Prompt history setup */ const _promptHistoryEl = document.getElementById("prompt-history"); const _promptHistoryBtn = document.getElementById("prompt-history-btn"); _promptHistoryEl.addEventListener("mouseleave", () => { _promptHistoryEl.classList.remove("expanded"); }); _promptHistoryBtn.addEventListener("click", () => _promptHistoryEl.classList.toggle("expanded") ); /** * Settings overlay setup */ document.getElementById("settings-btn").addEventListener("click", () => { document.getElementById("page-overlay-wrapper").classList.toggle("invisible"); }); document.getElementById("settings-btn-close").addEventListener("click", () => { document.getElementById("page-overlay-wrapper").classList.toggle("invisible"); });