UNPKG

@wordpress/compose

Version:
43 lines (39 loc) 1.4 kB
/** * WordPress dependencies */ import { useRef } from '@wordpress/element'; /** * Internal dependencies */ import useEvent from '../use-event'; // This is the current implementation of `useResizeObserver`. // // The legacy implementation is still supported for backwards compatibility. // This is achieved by overloading the exported function with both signatures, // and detecting which API is being used at runtime. export function useResizeObserver(callback, resizeObserverOptions = {}) { const callbackEvent = useEvent(callback); const observedElementRef = useRef(); const resizeObserverRef = useRef(); return useEvent(element => { var _resizeObserverRef$cu; if (element === observedElementRef.current) { return; } // Set up `ResizeObserver`. (_resizeObserverRef$cu = resizeObserverRef.current) !== null && _resizeObserverRef$cu !== void 0 ? _resizeObserverRef$cu : resizeObserverRef.current = new ResizeObserver(callbackEvent); const { current: resizeObserver } = resizeObserverRef; // Unobserve previous element. if (observedElementRef.current) { resizeObserver.unobserve(observedElementRef.current); } // Observe new element. observedElementRef.current = element; if (element) { resizeObserver.observe(element, resizeObserverOptions); } }); } //# sourceMappingURL=use-resize-observer.js.map