native-fn
Version:
2 lines (1 loc) • 1.75 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).Dimension=n()}(this,(function(){"use strict";var e=[],n={innerWidth:-1,innerHeight:-1,outerWidth:-1,outerHeight:-1,scale:1},t=null;function i(){return void 0!==globalThis.innerWidth?{innerWidth:globalThis.innerWidth,innerHeight:globalThis.innerHeight,outerWidth:globalThis.outerWidth,outerHeight:globalThis.outerHeight,scale:globalThis.devicePixelRatio||1}:n}function o(){var n=i();null!==t&&n.innerWidth===t.innerWidth&&n.innerHeight===t.innerHeight&&n.outerWidth===t.outerWidth&&n.outerHeight===t.outerHeight&&n.scale===t.scale||(t=n,function(n){for(var t=0;t<e.length;t++){var i=e[t];i.fn(n),i.once&&r(i)}}(n))}function r(n){var i,r=a(n);-1!==r&&e.splice(r,1),0===e.length&&(i=n.capture,t=null,"function"==typeof globalThis.removeEventListener&&globalThis.removeEventListener("resize",o,i))}function a(n){for(var t=0;t<e.length;t++)if(e[t].fn===n.fn&&e[t].capture===n.capture)return t;return-1}return{get value(){return i()},onchange:function(n,l){void 0===l&&(l=!1);var u={fn:n,capture:!1,once:!1};"boolean"==typeof l&&(l={capture:l});void 0!==l.capture&&(u.capture=l.capture);void 0!==l.once&&(u.once=l.once);void 0!==l.signal&&(u.signal=l.signal);var s=a(u);-1===s?(e.push(u),1===e.length&&(h=u.capture,t=i(),"function"==typeof globalThis.addEventListener&&globalThis.addEventListener("resize",o,h))):e[s].once&&!u.once&&(e[s].once=!1);var h;var c=function(){void 0!==u.signal&&u.signal.removeEventListener("abort",c),r(u)};void 0!==u.signal&&(u.signal.aborted?r(u):u.signal.addEventListener("abort",c));return function(){r(u)}},Constants:{},Errors:{}}}));