UNPKG

@tempots/std

Version:

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

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