UNPKG

@better-typed/react-performance-hooks

Version:
3 lines (2 loc) 1.15 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@better-typed/react-lifecycle-hooks");exports.useDebounce=function(t){void 0===t&&(t=400);var u=e.useRef(!1),n=e.useRef(null),c=r.useForceUpdate(),o=function(){u.current&&c()},l=function(){null!==n.current&&clearTimeout(n.current),n.current=null};return r.useWillUnmount(l),{get active(){return u.current=!0,!!n.current},debounce:function(e,r){var u=null!=r?r:t;l(),n.current=setTimeout((function(){n.current=null,e(),o()}),u),o()},reset:l}},exports.useThrottle=function(t){void 0===t&&(t=200);var u=e.useRef(0),n=e.useRef(!0),c=e.useRef(!1),o=e.useRef(null),l=r.useForceUpdate(),i=function(){n.current&&(n.current=!1),c.current&&l()},s=function(){null!==o.current&&clearTimeout(o.current),o.current=null};return r.useWillUnmount(s),{get active(){return c.current=!0,!!o.current},throttle:function(e,r){var c=function(){u.current=Date.now(),e(),i()},l=null!=r?r:t,f=Date.now()>=u.current+l;n.current&&i(),o.current&&s(),f?c():o.current=setTimeout((function(){o.current=null,n.current=!0,c()}),l)},reset:s}}; //# sourceMappingURL=index.cjs.js.map