'use-strict'; let activeModal = null; let bottomHeightThreshold, sections; let hamburgerToggle; let mobileSearch; let sidebar; let toTop; class Modal { constructor(element) { this.element = element; } close() { activeModal = null; this.element.style.display = 'none' } open() { if (activeModal) { activeModal.close(); } activeModal = this; this.element.style.display = 'flex' } } class SearchBar { constructor() { this.box = document.querySelector('nav.mobile-only'); this.bar = document.querySelector('nav.mobile-only input[type="search"]'); this.openButton = document.getElementById('open-search'); this.closeButton = document.getElementById('close-search'); } open() { this.openButton.hidden = true; this.closeButton.hidden = false; this.box.style.top = "100%"; this.bar.focus(); } close() { this.openButton.hidden = false; this.closeButton.hidden = true; this.box.style.top = "0"; } } function scrollToTop() { window.scrollTo({ top: 0, behavior: 'smooth' }); } document.addEventListener('DOMContentLoaded', () => { mobileSearch = new SearchBar(); bottomHeightThreshold = document.documentElement.scrollHeight - 30; sections = document.querySelectorAll('section'); hamburgerToggle = document.getElementById('hamburger-toggle'); toTop = document.getElementById('to-top'); toTop.hidden = !(window.scrollY > 0); if (hamburgerToggle) { hamburgerToggle.addEventListener('click', (e) => { sidebar.element.classList.toggle('sidebar-toggle'); let button = hamburgerToggle.firstElementChild; if (button.textContent == 'menu') { button.textContent = 'close'; } else { button.textContent = 'menu'; } }); } const tables = document.querySelectorAll('.py-attribute-table[data-move-to-id]'); tables.forEach(table => { let element = document.getElementById(table.getAttribute('data-move-to-id')); let parent = element.parentNode; // insert ourselves after the element parent.insertBefore(table, element.nextSibling); }); window.addEventListener('scroll', () => { toTop.hidden = !(window.scrollY > 0); }); }); document.addEventListener('keydown', (event) => { if (event.code == "Escape" && activeModal) { activeModal.close(); } }); function searchBarClick(event, which) { event.preventDefault(); if (event.button === 1 || event.buttons === 4) { which.target = "_blank"; // Middle mouse button was clicked. Set our target to a new tab. } else if (event.button === 2) { return // Right button was clicked... Don't do anything here. } else { which.target = "_self"; // Revert to same window. } which.submit(); }