livstream-player
Version:
A lightweight livestream player SDK for React apps
28 lines (27 loc) • 1.03 kB
JavaScript
import useEventListener from "./useEventListener";
import { useCallback, useEffect, useRef, useState } from 'react';
const useElementDimensions = (dependency = []) => {
const ref = useRef(null);
const [dimensions, setDimensions] = useState(null);
const refresh = useCallback(() => {
var _a;
const domRect = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
if (domRect) {
setDimensions(domRect);
}
}, []);
useEffect(() => {
const timeout = setTimeout(() => {
var _a;
const domRect = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
if (domRect) {
setDimensions(domRect);
}
}, 300);
return () => clearTimeout(timeout);
}, [dependency]);
useEventListener('resize', refresh);
useEventListener('scroll', refresh, true);
return { dimensions, ref, refresh };
};
export default useElementDimensions;