@wordpress/compose
Version:
WordPress higher-order components (HOCs).
27 lines (26 loc) • 924 B
JavaScript
// packages/compose/src/hooks/use-resize-observer/use-resize-observer.ts
import { useRef } from "@wordpress/element";
import useEvent from "../use-event/index.mjs";
function useResizeObserver(callback, resizeObserverOptions = {}) {
const callbackEvent = useEvent(callback);
const observedElementRef = useRef(null);
const resizeObserverRef = useRef(void 0);
return useEvent((element) => {
if (element === observedElementRef.current) {
return;
}
resizeObserverRef.current ??= new ResizeObserver(callbackEvent);
const { current: resizeObserver } = resizeObserverRef;
if (observedElementRef.current) {
resizeObserver.unobserve(observedElementRef.current);
}
observedElementRef.current = element ?? null;
if (element) {
resizeObserver.observe(element, resizeObserverOptions);
}
});
}
export {
useResizeObserver
};
//# sourceMappingURL=use-resize-observer.mjs.map