UNPKG

@geneui/components

Version:

The Gene UI components library designed for BI tools

35 lines (32 loc) 1.54 kB
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 };