1class e extends HTMLElement{connectedCallback(){this.initializeAnimationWithIntersectionObserver(),this.classList.add("animate-fade-in")}initializeAnimationWithIntersectionObserver(){new IntersectionObserver((e,t)=>{e.forEach(e=>{e.isIntersecting&&(this.animateElement(),t.unobserve(this))})},{root:null,rootMargin:"0px",threshold:.2}).observe(this)}waitForElementsToLoad(){return new Promise(e=>{const t=[...this.querySelectorAll("img, video, iframe")];let n=0;0!==t.length?(t.forEach(a=>{if(this.isElementLoaded(a))n++;else{this.getLoadEventsForElement(a).forEach(i=>{a.addEventListener(i,()=>{++n===t.length&&e()})})}}),n===t.length&&e()):e()})}isElementLoaded(e){var t;switch(e.tagName){case"IMG":return e.complete;case"VIDEO":return e.readyState>=HTMLMediaElement.HAVE_METADATA;case"IFRAME":return"complete"===(null==(t=e.contentDocument)?void 0:t.readyState);default:return!1}}getLoadEventsForElement(e){switch(e.tagName){case"IMG":case"IFRAME":return["load","error"];case"VIDEO":return["loadeddata","error"];default:return[]}}animateElement(){this.waitForElementsToLoad().then(()=>{this.classList.add("animated")})}}customElements.define("animate-fade-in",e);
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.