UNPKG

react-window-size-listener

Version:

Minimalistic React hook for listening to window resize events with built-in debouncing.

3 lines (2 loc) 1.61 kB
!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],i):i((e||self).reactWindowSizeListener={},e.react)}(this,function(e,i){var n="undefined"!=typeof window;function t(){return n?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0}}function o(){return n?window.visualViewport?{width:window.visualViewport.width,height:window.visualViewport.height}:{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0}}e.useViewportSize=function(e){void 0===e&&(e={});var t=e.debounceTime,w=void 0===t?100:t,r=i.useState(o),d=r[0],u=r[1],s=i.useCallback(function(){u(o())},[]);return i.useEffect(function(){if(n){s();var e=null,i=function(){e&&window.clearTimeout(e),e=window.setTimeout(s,w)},t=window.visualViewport||window;return t.addEventListener("resize",i,{passive:!0}),window.visualViewport&&window.visualViewport.addEventListener("scroll",i,{passive:!0}),function(){t.removeEventListener("resize",i),window.visualViewport&&window.visualViewport.removeEventListener("scroll",i),e&&window.clearTimeout(e)}}},[w,s]),d},e.useWindowSize=function(e){void 0===e&&(e={});var o=e.debounceTime,w=void 0===o?100:o,r=i.useState(t),d=r[0],u=r[1],s=i.useCallback(function(){u(t())},[]);return i.useEffect(function(){if(n){s();var e=null,i=function(){e&&window.clearTimeout(e),e=window.setTimeout(s,w)};return window.addEventListener("resize",i,{passive:!0}),function(){window.removeEventListener("resize",i),e&&window.clearTimeout(e)}}},[w,s]),d}}); //# sourceMappingURL=index.umd.js.map