UNPKG

app-base-react

Version:
1 lines 1.84 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _react=require("react");function useDebouncedCallback(r,o,e){var l=this,s=(0,_react.useRef)(null),m=(0,_react.useRef)(0),_=(0,_react.useRef)(null),d=(0,_react.useRef)([]),v=(0,_react.useRef)(),p=(0,_react.useRef)(),u=(0,_react.useRef)(r),R=(0,_react.useRef)(!0),n=(u.current=r,!o&&0!==o&&"undefined"!=typeof window);if("function"!=typeof r)throw new TypeError("Expected a function");o=+o||0;var w=!!(e=e||{}).leading,h=!("trailing"in e&&!e.trailing),x="maxWait"in e,y=x?Math.max(+e.maxWait||0,o):null;return(0,_react.useEffect)(function(){return R.current=!0,function(){R.current=!1}},[]),(0,_react.useMemo)(function(){function t(r){return _.current=null,h&&d.current?c(r):(d.current=v.current=null,p.current)}function r(){for(var r=arguments.length,e=Array(r),n=0;n<r;n++)e[n]=arguments[n];var t=Date.now(),u=i(t);if(d.current=e,v.current=l,s.current=t,u){if(!_.current&&R.current)return m.current=s.current,a(f,o),w?c(s.current):p.current;if(x)return a(f,o),c(s.current)}return _.current||a(f,o),p.current}var c=function(r){var e=d.current,n=v.current;return d.current=v.current=null,m.current=r,p.current=u.current.apply(n,e)},a=function(r,e){n&&cancelAnimationFrame(_.current),_.current=n?requestAnimationFrame(r):setTimeout(r,e)},i=function(r){var e;return!!R.current&&(e=r-s.current,r=r-m.current,!s.current||o<=e||e<0||x&&y<=r)},f=function r(){var e,n=Date.now();if(i(n))return t(n);R.current&&(e=n-s.current,n=n-m.current,e=o-e,n=x?Math.min(e,y-n):e,a(r,n))};return r.cancel=function(){_.current&&(n?cancelAnimationFrame:clearTimeout)(_.current),m.current=0,d.current=s.current=v.current=_.current=null},r.isPending=function(){return!!_.current},r.flush=function(){return _.current?t(Date.now()):p.current},r},[w,x,o,y,h,n])}exports.default=useDebouncedCallback;