@zohodesk/components
Version:
In this Package, we Provide Some Basic Components to Build Web App
51 lines (44 loc) • 1.15 kB
JavaScript
import { defaultMatcher } from "./utils/";
export const windowResizeObserver = (() => {
let listeners = [];
let size = {
height: 0,
width: 0
};
let breackPoint = null;
function handleResize() {
const newSize = {
height: window.innerHeight,
width: window.innerWidth
};
size = newSize;
const newBreackPoint = defaultMatcher(size);
if (newBreackPoint !== breackPoint) {
breackPoint = newBreackPoint;
listeners.forEach(listener => listener(newBreackPoint));
}
}
function addResizeListener() {
window.addEventListener('resize', handleResize);
handleResize();
}
function removeResizeListener() {
window.removeEventListener('resize', handleResize);
}
return {
observe: function (listener) {
listeners.push(listener);
listener.length === 1 && addResizeListener();
},
getBreackPoint() {
return breackPoint;
},
getSize: function () {
return size;
},
unobserve: function (listener) {
listeners = listeners.filter(l => l !== listener);
listener.length === 0 && removeResizeListener();
}
};
})();