@better-hooks/performance
Version:
3 lines (2 loc) • 4.01 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@better-hooks/lifecycle"),r=function(r){var n=(r||{}).delay,u=void 0===n?400:n,c=e.useRef(!1),o=e.useRef(null),i=t.useForceUpdate(),f=e.useCallback((function(){c.current&&i()}),[i]),l=function(){null!==o.current&&clearTimeout(o.current),o.current=null},s=e.useCallback((function(e,t){var r=null!=t?t:u;l(),o.current=setTimeout((function(){o.current=null,e(),f()}),r),f()}),[u,f]);return e.useEffect((function(){return l}),[]),{get active(){return c.current=!0,!!o.current},debounce:s,reset:l}};function n(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,u,c=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=c.next()).done;)o.push(n.value)}catch(e){u={error:e}}finally{try{n&&!n.done&&(r=c.return)&&r.call(c)}finally{if(u)throw u.error}}return o}var u=function(e){var t=Object.prototype.toString.call(e);return Array.isArray(e)?!e.length:"object"==typeof e&&null!==e&&"[object Object]"===t&&!Object.keys(e).length},c=function(e,t){var r,o=Object.prototype.toString.call(e),i=Object.prototype.toString.call(t),f=typeof e,l=typeof t,s=function(e){return f===e&&l===e};return o===i&&(null===e&&null===t||(!!(s("number")&&Number.isNaN(e)&&Number.isNaN(t))||(!(!u(e)||!u(t))||(Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&!e.some((function(e,r){return!c(e,t[r])})):s("object")&&(o===(r="[object Object]")&&i===r)?Object.keys(e).length===Object.keys(t).length&&!Object.entries(e).some((function(e){var r=n(e,2),u=r[0],o=r[1];return!c(o,t[u])})):e instanceof Date&&t instanceof Date?+e==+t:e===t))))},o=function(r){var n=r||{},u=n.interval,c=void 0===u?200:u,o=n.timeout,i=void 0===o?200:o,f=e.useRef(0),l=e.useRef(!0),s=e.useRef(!1),a=e.useRef(null),v=t.useForceUpdate(),d=function(){l.current&&(l.current=!1),s.current&&v()},p=function(){null!==a.current&&clearTimeout(a.current),a.current=null};return e.useEffect((function(){return p}),[]),{get active(){return s.current=!0,!!a.current},throttle:function(e,t){var r,n,u=function(){f.current=Date.now(),e(),d()},o=null!==(r=null==t?void 0:t.interval)&&void 0!==r?r:c,s=null!==(n=null==t?void 0:t.timeout)&&void 0!==n?n:i,v=Date.now()>=f.current+o;l.current&&d(),a.current&&p(),v?u():s&&(a.current=setTimeout((function(){a.current=null,l.current=!0,u()}),s))},reset:p}},i=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)?e.useLayoutEffect:e.useEffect;exports.useDebounce=r,exports.useDebounceEffect=function(t,n,u){var c=r(n).debounce;e.useEffect((function(){c(t)}),u)},exports.useDebounceState=function(t,u){var c=r(u).debounce,o=n(e.useState(t),2),i=o[0],f=o[1];return[i,function(e){return c((function(){return f(e)}))}]},exports.useDeepEffect=function(t,r){return e.useEffect(t,(n=r,u=e.useRef(n),o=e.useRef(0),c(n,u.current)||(u.current=n,o.current+=1),e.useMemo((function(){return u.current}),[o.current])));var n,u,o},exports.useInterval=function(r,u,c){var o=c||{},i=o.immediate,f=void 0===i||i,l=o.disabled,s=void 0!==l&&l,a=n(e.useState(null),2),v=a[0],d=a[1],p=e.useRef(r),b=function(){v&&clearInterval(v),d(null)},y=function(){b(),!u&&0!==u||s||d(setInterval((function(){return p.current()}),u))};return t.useDidUpdate((function(){p.current=r}),[r]),t.useDidMount((function(){if(p.current=r,f)return y(),b})),t.useDidUpdate((function(){return p.current=r,y(),b}),[u]),{active:null!==v,start:y,stop:b}},exports.useIsomorphicEffect=i,exports.useThrottle=o,exports.useThrottleEffect=function(t,r,n){var u=o(r).throttle;e.useEffect((function(){u(t)}),n)},exports.useThrottleState=function(t,r){var u=o(r).throttle,c=n(e.useState(t),2),i=c[0],f=c[1];return[i,function(e){return u((function(){return f(e)}))}]},exports.useTimeout=function(t,r){var n=e.useRef(t);i((function(){n.current=t}),[t]),e.useEffect((function(){if(r||0===r){var e=setTimeout((function(){return n.current()}),r);return function(){return clearTimeout(e)}}}),[r])};
//# sourceMappingURL=index.cjs.js.map