////////////////////////////////////////////////////////////////////// // CDelay function CDelay(px){ // Lib const Lib=px.Lib; const $=Lib.$; const $ce=Lib.$ce; const onTransitionEnd=Lib.onTransitionEnd; const isObject=Lib.isObject; // variables let el_container=null; let el_progbar=null; let timeout_id=null; function setContainer(el){ el_container=el; }; function start(rec,callback){ if(!rec){ callback(); return; } let seconds; let progbar; if(isObject(rec)){ seconds=("seconds" in rec)?rec.seconds:0; progbar=("progbar" in rec)?rec.progbar:false; }else{ seconds=rec; progbar=false; } clear(); if(progbar){ // progbar el_progbar=$ce("div"); el_progbar.className="sbpuzzle-progbar"; el_container.appendChild(el_progbar); // progbar-inner const el_inner=$ce("div"); el_inner.className="sbpuzzle-progbar-inner"; el_progbar.appendChild(el_inner); // animate el_inner.offsetHeight;// for reflow onTransitionEnd(el_inner,function(){ clear(); if(callback){callback();} }); el_inner.style.transition="width "+seconds+"s linear"; el_inner.style.width="100%"; }else{ timeout_id=setTimeout(function(){ clear(); if(callback){callback();} },parseInt(seconds*1000)); } }; function clear(){ if(timeout_id){ clearTimeout(timeout_id); timeout_id=null; } if(el_progbar){ el_progbar.remove(); el_progbar=null; } }; return{ setContainer, start, clear, }; };