UNPKG

@wordpress/compose

Version:
27 lines (26 loc) 895 B
// 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