UNPKG

use-debounce

Version:
3 lines (2 loc) 2.71 kB
import{useRef as r,useMemo as n,useEffect as t,useState as e,useCallback as u}from"react";function c(e,u,c,i){var l=this,a=r(null),o=r(0),f=r(0),v=r(null),d=r([]),m=r(),s=r(),g=r(e),h=r(!0),x=r(),E=r();g.current=e;var b="undefined"!=typeof window,p=!u&&0!==u&&b;if("function"!=typeof e)throw new TypeError("Expected a function");u=+u||0;var y=!!(c=c||{}).leading,w=!("trailing"in c)||!!c.trailing,O=!!c.flushOnExit&&w,F="maxWait"in c,L="debounceOnServer"in c&&!!c.debounceOnServer,A=F?Math.max(+c.maxWait||0,u):null,D=n(function(){var r=function(r){var n=d.current,t=m.current;return d.current=m.current=null,o.current=r,f.current=f.current||r,s.current=g.current.apply(t,n)},n=function(r,n){p&&cancelAnimationFrame(v.current),v.current=p?requestAnimationFrame(r):setTimeout(r,n)},t=function(r){if(!h.current)return!1;var n=r-a.current;return!a.current||n>=u||n<0||F&&r-o.current>=A},e=function(n){return v.current=null,w&&d.current?r(n):(d.current=m.current=null,s.current)},c=function r(){var c=Date.now();if(y&&f.current===o.current&&D(),t(c))return e(c);if(h.current){var i=u-(c-a.current),l=F?Math.min(i,A-(c-o.current)):i;n(r,l)}},D=function(){i&&i({})},S=function(){if(b||L){var e,i=Date.now(),f=t(i);if(d.current=[].slice.call(arguments),m.current=l,a.current=i,O&&!x.current&&(x.current=function(){var r;"hidden"===(null==(r=global.document)?void 0:r.visibilityState)&&E.current.flush()},null==(e=global.document)||null==e.addEventListener||e.addEventListener("visibilitychange",x.current)),f){if(!v.current&&h.current)return o.current=a.current,n(c,u),y?r(a.current):s.current;if(F)return n(c,u),r(a.current)}return v.current||n(c,u),s.current}};return S.cancel=function(){var r=v.current;r&&(p?cancelAnimationFrame(v.current):clearTimeout(v.current)),o.current=0,d.current=a.current=m.current=v.current=null,r&&i&&i({})},S.isPending=function(){return!!v.current},S.flush=function(){return v.current?e(Date.now()):s.current},S},[y,F,u,A,w,O,p,b,L,i]);return E.current=D,t(function(){return h.current=!0,function(){var r;O&&E.current.flush(),x.current&&(null==(r=global.document)||null==r.removeEventListener||r.removeEventListener("visibilitychange",x.current),x.current=null),h.current=!1}},[O]),D}function i(r,n){return r===n}function l(n,t,l){var a=l&&l.equalityFn||i,o=r(n),f=e({})[1],v=c(u(function(r){o.current=r,f({})},[f]),t,l,f),d=r(n);return a(d.current,n)||(v(n),d.current=n),[o.current,v]}function a(r,n,t){var e=void 0===t?{}:t,u=e.leading,i=e.trailing,l=e.flushOnExit;return c(r,n,{maxWait:n,leading:void 0===u||u,trailing:void 0===i||i,flushOnExit:void 0!==l&&l})}export{l as useDebounce,c as useDebouncedCallback,a as useThrottledCallback}; //# sourceMappingURL=index.module.js.map