21
common/resources/client/utils/dom/observe-size.ts
Executable file
21
common/resources/client/utils/dom/observe-size.ts
Executable file
@@ -0,0 +1,21 @@
|
||||
import {RefObject} from 'react';
|
||||
|
||||
type Callback = (e: {width: number; height: number}) => void;
|
||||
|
||||
export function observeSize(
|
||||
ref: RefObject<HTMLElement>,
|
||||
callback: Callback
|
||||
): () => void {
|
||||
const observer = new ResizeObserver(entries => {
|
||||
const rect = entries[0].contentRect;
|
||||
callback({width: rect.width, height: rect.height});
|
||||
});
|
||||
if (ref.current) {
|
||||
observer.observe(ref.current);
|
||||
}
|
||||
return () => {
|
||||
if (ref.current) {
|
||||
observer.unobserve(ref.current);
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user