PageSourceSearch

https://hadestown.com/_js/footer-menu.js?v=1790201153

js hadestown.com collected 2026-10-02 11:30:01 UTC 1,454 bytes, 44 lines download raw bytes

1(() => {
2  const nav = document.querySelector('#footer .footer-explore');
3  if (!nav) return;
4
5  const toggle = nav.querySelector('.footer-menu-toggle');
6  const links = nav.querySelector('.footer-explore-links');
7  const mobile = window.matchMedia('(max-width: 991px)');
8  const hover = window.matchMedia('(hover: hover)');
9
10  function setOpen(open) {
11    toggle.setAttribute('aria-expanded', String(open));
12    nav.dataset.menuOpen = String(open);
13    links.inert = !open;
14    links.setAttribute('aria-hidden', String(!open));
15  }
16
17  function syncLayout() {
18    toggle.hidden = !mobile.matches;
19    setOpen(!mobile.matches);
20  }
21
22  toggle.addEventListener('click', () => {
23    setOpen(toggle.getAttribute('aria-expanded') !== 'true');
24  });
25  toggle.addEventListener('pointerenter', (event) => {
26    if (mobile.matches && hover.matches && event.pointerType === 'mouse') setOpen(true);
27  });
28  nav.addEventListener('pointerleave', (event) => {
29    if (mobile.matches && hover.matches && event.pointerType === 'mouse' && !nav.contains(document.activeElement)) {
30      setOpen(false);
31    }
32  });
33  nav.addEventListener('focusout', (event) => {
34    if (mobile.matches && !nav.contains(event.relatedTarget)) setOpen(false);
35  });
36  nav.addEventListener('keydown', (event) => {
37    if (mobile.matches && event.key === 'Escape') {
38      setOpen(false);
39      toggle.focus();
40    }
41  });
42  mobile.addEventListener('change', syncLayout);
43  syncLayout();
44})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.