UNPKG

remeda

Version:

A utility library for JavaScript and Typescript.

2 lines (1 loc) 996 B
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var R=Symbol("funnel/voidReducer"),T=()=>R;function A(l,{triggerAt:f="end",minQuietPeriodMs:i,maxBurstDurationMs:r,minGapMs:o,reducer:p=T}){let e,n,d,u,s=()=>{let t=d;t!==void 0&&(d=void 0,t===R?l():l(t),o!==void 0&&(n=setTimeout(m,o)))},m=()=>{clearTimeout(n),n=void 0,e===void 0&&s()},y=()=>{clearTimeout(e),e=void 0,u=void 0,n===void 0&&s()};return{call:(...t)=>{let a=e===void 0&&n===void 0;if((f!=="start"||a)&&(d=p(d,...t)),!(e===void 0&&!a)){if(i!==void 0||r!==void 0||o===void 0){clearTimeout(e);let c=Date.now();u??=c;let g=r===void 0?_nullishCoalesce(i, () => (0)):Math.min(_nullishCoalesce(i, () => (r)),r-(c-u));e=setTimeout(y,g)}f!=="end"&&a&&s()}},cancel:()=>{clearTimeout(e),e=void 0,u=void 0,clearTimeout(n),n=void 0,d=void 0},flush:()=>{y(),m()},get isIdle(){return e===void 0&&n===void 0}}}exports.a = A;