function loadImages(){if("IntersectionObserver"in window){observer=new IntersectionObserver(onIntersection,config);for(let n=0;n<images.length;n++){let t=images[n];t.classList.contains("js-lazy-image--handled")||observer.observe(t)}}else loadImagesImmediately(images)}function fetchImage(n){return new Promise((t,i)=>{const r=new Image;r.src=n;r.onload=t;r.onerror=i})}function preloadImage(n){const t=n.dataset.src;if(t)return fetchImage(t).then(()=>{applyImage(n,t)},()=>{applyImage(n,"#")})}function loadImagesImmediately(n){for(let t=0;t<n.length;t++){let i=n[t];preloadImage(i)}}function disconnect(){observer&&observer.disconnect()}function onIntersection(n){if(imageCount===0){disconnect();return}for(let t=0;t<n.length;t++){let i=n[t];i.intersectionRatio>0&&(imageCount--,observer.unobserve(i.target),preloadImage(i.target))}}function applyImage(n,t){t!="#"?(n.classList.add("js-lazy-image--handled"),n.src=t,n.classList.add("fade-in")):(n.src=t,n.classList.add("js-lazy-image--error"))}const images=document.querySelectorAll("img.lazy-load"),config={rootMargin:"50px 0px",threshold:.01};let imageCount=images.length,observer;loadImages()