daedalOS/hooks/useResizeObserver.ts
2024-02-24 12:55:02 -08:00

29 lines
652 B
TypeScript

import { useEffect, useState } from "react";
const useResizeObserver = (
element?: HTMLElement | null,
callback?: ResizeObserverCallback
): void => {
const [resizeObserver, setResizeObserver] = useState<ResizeObserver>();
useEffect(() => {
if (callback) {
setResizeObserver(new ResizeObserver(callback));
}
}, [callback]);
useEffect(() => {
if (element instanceof HTMLElement) {
resizeObserver?.observe(element);
}
return () => {
if (element instanceof HTMLElement) {
resizeObserver?.unobserve(element);
}
};
}, [element, resizeObserver]);
};
export default useResizeObserver;