@geneui/components
Version:
The Gene UI components library designed for BI tools
35 lines (32 loc) • 1.54 kB
JavaScript
import { useState, useEffect } from 'react';
import useDebounce from './hooks/useDebounce.js';
const EQUAL_HEIGHT_DIFF = 3;
const useEllipsisDetection = (ref, externalDependencies = []) => {
var _a, _b, _c, _d;
const [isTruncated, setIsTruncated] = useState(false);
const { debounceCallback, clearDebounce } = useDebounce();
const handleResize = () => {
if (!ref.current)
return;
const { scrollWidth, clientWidth, scrollHeight, clientHeight } = ref.current;
setIsTruncated(scrollWidth > clientWidth || scrollHeight > clientHeight + EQUAL_HEIGHT_DIFF);
};
useEffect(() => handleResize(), []);
useEffect(() => {
const debounce = () => debounceCallback(handleResize, 100);
window.addEventListener('resize', debounce);
return () => {
clearDebounce();
window.removeEventListener('resize', debounce);
};
}, [
ref,
(_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.scrollWidth,
(_b = ref === null || ref === void 0 ? void 0 : ref.current) === null || _b === void 0 ? void 0 : _b.clientWidth,
(_c = ref === null || ref === void 0 ? void 0 : ref.current) === null || _c === void 0 ? void 0 : _c.scrollHeight,
(_d = ref === null || ref === void 0 ? void 0 : ref.current) === null || _d === void 0 ? void 0 : _d.clientHeight,
...externalDependencies
]);
return isTruncated;
};
export { useEllipsisDetection as u };