1(() => { 2 const selectors = [ 3 "header.site-header", 4 "header.wp-block-template-part", 5 ".site-header", 6 ]; 7 const header = selectors 8 .map((selector) => document.querySelector(selector)) 9 .find(Boolean); 10 11 if (!header) { 12 return; 13 } 14 15 const body = document.body; 16 const siteBlocks = document.querySelector(".wp-site-blocks"); 17 const paddingTarget = siteBlocks || body; 18 19 header.classList.add("brg-scroll-header"); 20 paddingTarget.classList.add("brg-has-scroll-header"); 21 22 let lastScroll = window.pageYOffset || 0; 23 let ticking = false; 24 25 const SCROLL_DELTA = 6; 26 27 const updateMeasurements = () => { 28 const adminBar = document.getElementById("wpadminbar"); 29 const adminBarHeight = adminBar ? adminBar.offsetHeight : 0; 30 const headerHeight = header.offsetHeight; 31 const totalOffset = headerHeight + adminBarHeight; 32 33 document.documentElement.style.setProperty( 34 "--brg-header-height", 35 `${headerHeight}px` 36 ); 37 document.documentElement.style.setProperty( 38 "--brg-header-offset", 39 `${adminBarHeight}px` 40 ); 41 document.documentElement.style.setProperty( 42 "--brg-header-total-offset", 43 `${totalOffset}px` 44 ); 45 }; 46 47 const showHeader = () => { 48 header.classList.add("brg-header--visible"); 49 header.classList.remove("brg-header--hidden"); 50 }; 51 52 const hideHeader = () => { 53 header.classList.add("brg-header--hidden"); 54 header.classList.remove("brg-header--visible"); 55 }; 56 57 const onScroll = () => { 58 const currentScroll = window.pageYOffset || 0; 59 const delta = currentScroll - lastScroll; 60 const revealOffset = header.offsetHeight + 10; 61 62 if (currentScroll <= revealOffset) { 63 header.classList.add("brg-header--at-top"); 64 showHeader(); 65 } else { 66 header.classList.remove("brg-header--at-top"); 67 if (delta > 0) { 68 hideHeader(); 69 } else { 70 showHeader(); 71 } 72 } 73 74 if (Math.abs(delta) <= SCROLL_DELTA) { 75 lastScroll = currentScroll; 76 return; 77 } 78 79 lastScroll = currentScroll; 80 }; 81 82 const requestTick = () => { 83 if (!ticking) { 84 window.requestAnimationFrame(() => { 85 onScroll(); 86 ticking = false; 87 }); 88 ticking = true; 89 } 90 }; 91 92 updateMeasurements(); 93 onScroll(); 94 95 window.addEventListener("scroll", requestTick, { passive: true }); 96 window.addEventListener("resize", () => { 97 updateMeasurements(); 98 onScroll(); 99 }); 100})();
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.