1;(function () { 2 let isPageReady = false 3 let isRunning = false 4 5 const startTime = Date.now() 6 const timeout = 2000 7 8 const event = new Event('isPageReady') 9 10 function getIsVisible(el) { 11 const {top, height} = el.getBoundingClientRect() 12 const {innerHeight} = window 13 const throttle = window.innerHeight * 0.05 14 15 const isVisible = innerHeight - top > throttle && top + height > throttle 16 17 return isVisible 18 } 19 20 function setIsReady() { 21 clearInterval(interval) 22 isPageReady = true 23 window.isPageReady = isPageReady 24 const splashScreen = document.querySelector('#splash-screen') 25 const mainScreen = document.querySelector('#main-screen') 26 if (splashScreen) { 27 const transitionDelay = 400 28 const transitionDuration = 1000 29 splashScreen.style.pointerEvents = 'none' 30 splashScreen.style.transition = `all ${transitionDuration}ms cubic-bezier(0.5, 1, 0.89, 1) ${transitionDelay}ms` 31 splashScreen.style.transform = 'translateY(-100%)' 32 33 mainScreen.style.pointerEvents = 'none' 34 mainScreen.style.transition = `all ${transitionDuration}ms ease-out ${transitionDelay}ms` 35 mainScreen.style.transform = 'translateY(-200%)' 36 37 setTimeout(() => { 38 window.dispatchEvent(event) 39 splashScreen.remove() 40 mainScreen.remove() 41 }, transitionDuration + transitionDelay) 42 } else { 43 window.dispatchEvent(event) 44 } 45 } 46 47 const interval = setInterval(async () => { 48 if (!isPageReady && !isRunning) { 49 isRunning = true 50 51 const areFontsLoaded = (await document.fonts.ready).status === 'loaded' 52 const isDocumentReady = document.readyState === 'complete' 53 54 if (areFontsLoaded && isDocumentReady) { 55 let allVisibleAssetsLoaded = true 56 57 const images = Array.from(document.images) 58 images.forEach((image) => { 59 const isVisible = getIsVisible(image) 60 const isLoading = !image.complete 61 if (isVisible && isLoading) { 62 allVisibleAssetsLoaded = false 63 } 64 }) 65 66 const videos = Array.from(document.getElementsByTagName('video')) 67 videos.forEach((video) => { 68 const isVisible = getIsVisible(video) 69 const isLoading = video.readyState !== 4 70 if (isVisible && isLoading) { 71 allVisibleAssetsLoaded = false 72 } 73 }) 74 75 if (!isPageReady && allVisibleAssetsLoaded) { 76 setIsReady() 77 } 78 } 79 80 isRunning = false 81 } 82 83 if (!isPageReady && Date.now() - startTime >= timeout) { 84 setIsReady() 85 } 86 }, 100) 87})()
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.