UNPKG

@tempots/std

Version:

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

76 lines (75 loc) 1.7 kB
const I = (n, e) => { let t = () => { }; const i = setTimeout(() => { const l = n(); l != null && (t = l); }, e); return () => { clearTimeout(i), t(); }; }, T = (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: a } = t; let o, f = !1, c = 0; function m() { o && clearTimeout(o); } function p(u) { const { upcomingOnly: s = !1 } = u || {}; m(), f = !s; } function d(...u) { if (f) return; const s = this, F = Date.now() - c; function r() { c = Date.now(), e.apply(s, u); } function v() { o = void 0; } !l && a && !o && r(), m(), a === void 0 && F > n ? l ? (c = Date.now(), i || (o = setTimeout(a ? v : r, n))) : r() : i || (o = setTimeout( a ? v : r, a === void 0 ? Math.max(0, n - F) : n )); } return d.cancel = p, d; } function x(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); }; }, w = (n) => { let e = null; const t = (l) => { e = requestAnimationFrame(t), n(l); }; return e == null && (e = requestAnimationFrame(t)), () => { e != null && (cancelAnimationFrame(e), e = null); }; }; export { x as debounce, I as delayed, g as delayedAnimationFrame, T as interval, w as intervalAnimationFrame, A as throttle };