@react-hook/window-size
Version:
React hooks for updating components when the size of the `window` changes.
3 lines (2 loc) • 2.34 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).UseWindowSize={},e.React)}(this,(function(e,n){"use strict";function t(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:1,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}function r(e,n,t){function r(){a.current=0,l()}void 0===n&&(n=30),void 0===t&&(t=0);var u,o,f=(u=e,o=i.useRef(u),i.useEffect((function(){o.current=u})),o),d=1e3/n,a=i.useRef(0),s=i.useRef(),l=function(){return s.current&&clearTimeout(s.current)},v=[n,t,f];return i.useEffect((function(){return r}),v),i.useCallback((function(){var e=arguments,n=c(),r=function(){a.current=n,l(),f.current.apply(null,e)},u=a.current;if(t&&0===u)return r();if(n-u>d){if(u>0)return r();a.current=n}l(),s.current=setTimeout((function(){r(),a.current=0}),d)}),v)}function u(e,n,t,r){var u=i.useRef(t),o=i.useRef(r);i.useEffect((function(){u.current=t,o.current=r})),i.useEffect((function(){function t(){if(!i){for(var e=arguments.length,n=new Array(e),t=0;e>t;t++)n[t]=arguments[t];u.current.apply(this,n)}}var r=e&&"current"in e?e.current:e;if(r){var i=0;r.addEventListener(n,t);var c=o.current;return function(){i=1,r.removeEventListener(n,t),c&&c()}}}),[e,n])}var i=t(n),o="undefined"!=typeof performance?performance:Date,c=function(){return o.now()},f={},d="undefined"==typeof window?null:window,a=d&&void 0!==d.visualViewport?d.visualViewport:null,s=function(){return[document.documentElement.clientWidth,document.documentElement.clientHeight]},l=function(e){void 0===e&&(e=f);var n=e,t=n.fps,o=n.leading,c=n.initialWidth,l=void 0===c?0:c,v=n.initialHeight,p=function(e,n,t){var u=i.useState(e);return[u[0],r(u[1],n,t)]}("undefined"==typeof document?[l,void 0===v?0:v]:s,t,o),m=p[0],y=p[1],h=function(){return y(s)};return u(d,"resize",h),u(a,"resize",h),u(d,"orientationchange",h),m};e.useWindowHeight=function(e){return l(e)[1]},e.useWindowSize=l,e.useWindowWidth=function(e){return l(e)[0]},Object.defineProperty(e,"__esModule",{value:1})}));
//# sourceMappingURL=use-window-size.js.map