UNPKG

@naverpay/hidash

Version:

improved lodash

2 lines (1 loc) 856 B
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function h(k,f=0,{leading:I=!1,trailing:S=!0,maxWait:r}={}){let n=null,u=null,i,o,l=null,s=0;const v=e=>(s=e,o=k.apply(i,u),i=u=null,o),a=(e,t)=>setTimeout(e,t),g=e=>{const t=e-l,c=e-s,T=f-t;return r===void 0?T:Math.min(T,r-c)},m=e=>{if(l===null)return!0;const t=e-l,c=e-s;return l===null||t>=f||t<0||r!==void 0&&c>=r},b=e=>(n=null,S&&u?v(e):(u=i=null,o)),d=()=>{const e=Date.now();if(m(e))return b(e);n=a(d,g(e))},p=e=>(s=e,n=a(d,f),I?v(e):o);return{debounce:function(...e){const t=Date.now(),c=m(t);if(u=e,i=this,l=t,c){if(n===null)return p(l);if(r!==void 0)return n=a(d,g(t)),v(l)}return n===null&&(n=a(d,g(t))),o},cancel:()=>{n!==null&&clearTimeout(n),s=0,u=l=i=n=null},flush:()=>n===null?o:b(Date.now())}}exports.debounce=h;exports.default=h;