UNPKG

@tempots/std

Version:

Std library for TypeScript. Natural complement to the Tempo libraries.

2 lines (1 loc) 1.27 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=(n,e)=>{let t=()=>{};const i=setTimeout(()=>{const l=n();l!=null&&(t=l)},e);return()=>{clearTimeout(i),t()}},I=(n,e)=>{let t=()=>{};const i=setInterval(()=>{const l=n();l!=null&&(t=l)},e);return()=>{clearInterval(i),t()}};function A(n,e,t={}){const{noTrailing:i=!1,noLeading:l=!1,debounceMode:o}=t;let a,f=!1,c=0;function m(){a&&clearTimeout(a)}function T(u){const{upcomingOnly:s=!1}=u||{};m(),f=!s}function d(...u){if(f)return;const s=this,v=Date.now()-c;function r(){c=Date.now(),e.apply(s,u)}function F(){a=void 0}!l&&o&&!a&&r(),m(),o===void 0&&v>n?l?(c=Date.now(),i||(a=setTimeout(o?F:r,n))):r():i||(a=setTimeout(o?F:r,o===void 0?Math.max(0,n-v):n))}return d.cancel=T,d}function b(n,e,{atBegin:t=!1}={}){return A(n,e,{debounceMode:t!==!1})}const g=n=>{let e=null;const t=l=>{e=null,n(l)};return e==null&&(e=requestAnimationFrame(t)),()=>{e!=null&&(cancelAnimationFrame(e),e=null)}},y=n=>{let e=null;const t=l=>{e=requestAnimationFrame(t),n(l)};return e==null&&(e=requestAnimationFrame(t)),()=>{e!=null&&(cancelAnimationFrame(e),e=null)}};exports.debounce=b;exports.delayed=p;exports.delayedAnimationFrame=g;exports.interval=I;exports.intervalAnimationFrame=y;exports.throttle=A;