UNPKG

@wordpress/compose

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