@wordpress/compose
Version:
WordPress higher-order components (HOCs).
27 lines (26 loc) • 895 B
JavaScript
// packages/compose/src/hooks/use-resize-observer/use-resize-observer.ts
import { useRef } from "@wordpress/element";
import useEvent from "../use-event";
function useResizeObserver(callback, resizeObserverOptions = {}) {
const callbackEvent = useEvent(callback);
const observedElementRef = useRef();
const resizeObserverRef = useRef();
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;
if (element) {
resizeObserver.observe(element, resizeObserverOptions);
}
});
}
export {
useResizeObserver
};
//# sourceMappingURL=use-resize-observer.js.map