Files
cinny/src/app/hooks/useElementSizeObserver.ts
T

24 lines
689 B
TypeScript
Raw Normal View History

import { useCallback } from 'react';
import { getResizeObserverEntry, useResizeObserver } from './useResizeObserver';
export const useElementSizeObserver = <T extends Element>(
element: () => T | null,
onResize: (width: number, height: number, element: T) => void
) => {
useResizeObserver(
useCallback(
(entries) => {
const target = element();
if (!target) return;
const targetEntry = getResizeObserverEntry(target, entries);
if (targetEntry) {
const { clientWidth, clientHeight } = targetEntry.target;
onResize(clientWidth, clientHeight, target);
}
},
[element, onResize]
),
element
);
};