PageSourceSearch

https://spyreels.ai/marketing/chrome.js

js spyreels.ai collected 2026-10-05 13:59:31 UTC 2,662 bytes, 20 lines download raw bytes

1
2    const menuToggle=document.querySelector('#menu-toggle');
3    const navInner=document.querySelector('#nav-inner');
4    menuToggle.addEventListener('click',()=>{const open=navInner.classList.toggle('menu-open');menuToggle.classList.toggle('open',open);menuToggle.setAttribute('aria-expanded',String(open));menuToggle.setAttribute('aria-label',open?'Close navigation':'Open navigation')});
5    const navMenus=[...document.querySelectorAll('.nav-menu')];
6    document.addEventListener('pointerdown',event=>{if(event.pointerType==='mouse'||event.pointerType==='pen')document.body.dataset.navInput='pointer'},true);
7    document.addEventListener('keydown',event=>{if(['Tab','Enter',' ','ArrowDown','ArrowUp','ArrowLeft','ArrowRight'].includes(event.key))document.body.dataset.navInput='keyboard'},true);
8    navMenus.forEach(menu=>menu.querySelector('summary').addEventListener('pointerup',event=>{if(event.pointerType==='mouse'){const summary=event.currentTarget;requestAnimationFrame(()=>summary.blur())}}));
9    const closeNav=()=>{navMenus.forEach(menu=>menu.open=false);navInner.classList.remove('menu-open');menuToggle.classList.remove('open');menuToggle.setAttribute('aria-expanded','false');menuToggle.setAttribute('aria-label','Open navigation')};
10    navMenus.forEach(menu=>menu.addEventListener('toggle',()=>{if(menu.open)navMenus.forEach(other=>{if(other!==menu)other.open=false})}));
11    const navHoverTimers=new WeakMap();
12    const clearNavHover=(menu)=>{const timers=navHoverTimers.get(menu);if(timers){clearTimeout(timers.open);clearTimeout(timers.close)}};
13    navMenus.forEach(menu=>{
14      menu.addEventListener('pointerenter',event=>{if(event.pointerType!=='mouse'||window.matchMedia('(max-width: 1040px)').matches)return;clearNavHover(menu);navHoverTimers.set(menu,{open:setTimeout(()=>{menu.open=true},100)})});
15      menu.addEventListener('pointerleave',event=>{if(event.pointerType!=='mouse'||window.matchMedia('(max-width: 1040px)').matches)return;clearNavHover(menu);navHoverTimers.set(menu,{close:setTimeout(()=>{menu.open=false},250)})});
16    });
17    document.addEventListener('pointerdown',event=>{if(!navInner.contains(event.target))closeNav()});
18    document.addEventListener('keydown',event=>{if(event.key==='Escape'){const opener=navMenus.find(menu=>menu.open)?.querySelector('summary');const inside=navInner.contains(document.activeElement);closeNav();if(inside)(window.matchMedia('(max-width: 1040px)').matches?menuToggle:opener)?.focus()}});
19    navInner.querySelectorAll('.nav-links a').forEach(link=>link.addEventListener('click',closeNav));
20    window.matchMedia('(min-width: 1041px)').addEventListener('change',closeNav);

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.