class ThePreloader {
constructor(options={}){
this.options={
preloaderElement: typeof options.preloaderElement==='string'&&options.preloaderElement.trim()
? options.preloaderElement.toLowerCase().trim()
: 'the-preloader-element'
};
this.preloader=document.getElementById(this.options.preloaderElement);
this.init=this.init.bind(this);
this.hidePreloader=this.hidePreloader.bind(this);
}
fadeOut(element, duration){
return new Promise(resolve=> {
element.style.transition=`opacity ${duration}s ease-in-out`;
element.style.opacity='0';
setTimeout(()=> {
element.style.display='none';
resolve();
}, duration * 1000 + 50);
});
}
async hidePreloader(){
await new Promise(resolve=>
setTimeout(resolve, 500)
);
await this.fadeOut(this.preloader, 0.5);
setTimeout(()=> {
this.preloader.remove();
}, 50);
}
init(){
if(!this.preloader){
console.log('ThePreloader.js: Preloader element does not exist.');
return;
}
this.hidePreloader();
}}
document.addEventListener('DOMContentLoaded', function(){
window.addEventListener('load', ()=> {
const the_Preloader=new ThePreloader({
preloaderElement: 'the-preloader-element'
});
the_Preloader.init();
});
});