Files
Webklar.com/node_modules/motion-dom/dist/es/resize/handle-window.mjs
Basilosaurusrex f027651f9b main repo
2025-11-24 18:09:40 +01:00

32 lines
919 B
JavaScript

const windowCallbacks = new Set();
let windowResizeHandler;
function createWindowResizeHandler() {
windowResizeHandler = () => {
const info = {
get width() {
return window.innerWidth;
},
get height() {
return window.innerHeight;
},
};
windowCallbacks.forEach((callback) => callback(info));
};
window.addEventListener("resize", windowResizeHandler);
}
function resizeWindow(callback) {
windowCallbacks.add(callback);
if (!windowResizeHandler)
createWindowResizeHandler();
return () => {
windowCallbacks.delete(callback);
if (!windowCallbacks.size &&
typeof windowResizeHandler === "function") {
window.removeEventListener("resize", windowResizeHandler);
windowResizeHandler = undefined;
}
};
}
export { resizeWindow };