33 lines
848 B
JavaScript
33 lines
848 B
JavaScript
import { globalThis } from "./server-safe-globals.js";
|
|
const callbacksMap = /* @__PURE__ */ new WeakMap();
|
|
const getCallbacks = (element) => {
|
|
let callbacks = callbacksMap.get(element);
|
|
if (!callbacks)
|
|
callbacksMap.set(element, callbacks = /* @__PURE__ */ new Set());
|
|
return callbacks;
|
|
};
|
|
const observer = new globalThis.ResizeObserver(
|
|
(entries) => {
|
|
for (const entry of entries) {
|
|
for (const callback of getCallbacks(entry.target)) {
|
|
callback(entry);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
function observeResize(element, callback) {
|
|
getCallbacks(element).add(callback);
|
|
observer.observe(element);
|
|
}
|
|
function unobserveResize(element, callback) {
|
|
const callbacks = getCallbacks(element);
|
|
callbacks.delete(callback);
|
|
if (!callbacks.size) {
|
|
observer.unobserve(element);
|
|
}
|
|
}
|
|
export {
|
|
observeResize,
|
|
unobserveResize
|
|
};
|