1(function(){class HelloBar{constructor(){this.STORAGE_KEY='hello-bar-dismissed';this.init()} 2init(){const helloBar=document.querySelector('[data-hello-bar]');if(!this.shouldShowHelloBar(helloBar)){return} 3helloBar.classList.remove('hello-bar--hidden');helloBar.classList.remove('hello-bar--dismissed');this.setupClose(helloBar)} 4shouldShowHelloBar(helloBar){return helloBar&&sessionStorage.getItem(this.STORAGE_KEY)!=='true'} 5setupClose(helloBar){const closeButton=document.querySelector('[data-hello-bar-close]');if(!closeButton){return} 6closeButton.addEventListener('click',(e)=>{e.preventDefault();e.stopPropagation();helloBar.classList.add('hello-bar--hidden');helloBar.classList.add('hello-bar--dismissed');sessionStorage.setItem(this.STORAGE_KEY,'true')})} 7setupScroll(helloBar){let lastScrollY=window.scrollY;let scrollTimeout;const scrollThreshold=0;const handleScroll=()=>{const currentScrollY=window.scrollY;if(!this.shouldShowHelloBar(helloBar)){return} 8helloBar.classList.toggle('hello-bar--hidden',window.scrollY!==0);lastScrollY=currentScrollY};window.addEventListener('scroll',()=>{if(scrollTimeout){cancelAnimationFrame(scrollTimeout)} 9scrollTimeout=requestAnimationFrame(handleScroll)})}} 10if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',()=>{new HelloBar()})}else{new HelloBar()}})()
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.