raf-handler
Version:
Use for centralize request animation frame
3 lines (2 loc) • 858 B
JavaScript
window&&window.requestAnimationFrame||(window.requestAnimationFrame=()=>null,window.cancelAnimationFrame=()=>null);const n={rAF:[],fps:60,then:Date.now()},e=t=>{const{rAF:r}=n;if(n.interval=1e3/n.fps,n.now=Date.now(),n.delta=n.now-n.then,n.delta>n.interval){n.then=n.now-n.delta%n.interval;for(let n=0,{length:e}=r;n<e;n+=1)r[n](t)}return requestAnimationFrame(e)},t=()=>{n.id&&window.cancelAnimationFrame(n.id),n.id=null,n.rAF=null},r=e=>{n.rAF||(n.rAF=[]),n.rAF.push(e)},i=e=>{const{rAF:t}=n;for(let r=0,{length:i}=t;r<i;r+=1)t[r]===e&&(n.rAF.splice(r,1),r--)},a=a=>{var l;return null!=a&&a.fps&&(n.fps=a.fps),n.id=null==(l=window)?void 0:l.requestAnimationFrame(e),{reset:t,add:r,remove:i,update:e,store:n}};export{a as default,t as resetUpdate,n as store,r as subscribeUpdate,i as unsubscribeUpdate,e as update};
//# sourceMappingURL=index.modern.js.map