1window.createIntersectionObserver = function (elementRef, className, thresholdValue) { 2 const options = { 3 threshold: thresholdValue 4 } 5 const observer = new IntersectionObserver(entries => { 6 entries 7 .forEach(entry => { 8 if (entry.isIntersecting) { 9 entry.target.classList.add(className); 10 observer.unobserve(entry.target); 11 } 12 13 }); 14 }, options); 15 observer.observe(elementRef); 16} 17 18window.createParallaxObserver = function (elementRef, thresholdValue) { 19 const options = { 20 threshold: thresholdValue 21 } 22 23 function handleScroll() { 24 const currentVW = window.innerWidth; 25 const maxOffset = currentVW > 500 ? -elementRef.offsetParent.offsetTop * 0.4 : -elementRef.offsetParent.offsetTop * 0.2; 26 const minOffset = 0; 27 const scrollOffset = currentVW > 500 ? -window.scrollY * 0.9 : -window.scrollY * 1.2; 28 let offset = Math.max(scrollOffset + 200, maxOffset); 29 offset = Math.min(offset, minOffset); 30 elementRef.style.transform = `translateY(${offset}px)`; 31 } 32 33 const observer = new IntersectionObserver(entries => { 34 entries 35 .forEach(entry => { 36 if (entry.isIntersecting) { 37 document.addEventListener("scroll", handleScroll); 38 } else { 39 document.removeEventListener("scroll", handleScroll); 40 } 41 42 }); 43 }, options); 44 observer.observe(elementRef); 45}
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.