spacedrive/interface/hooks/useIsTextTruncated.ts
2023-10-11 14:29:26 +00:00

24 lines
588 B
TypeScript

import { RefObject, useState } from 'react';
import { useMutationObserver } from 'rooks';
import useResizeObserver from 'use-resize-observer';
export const useIsTextTruncated = (element: RefObject<HTMLElement>) => {
const [truncated, setTruncated] = useState(false);
const handleIsTruncated = () => {
if (!element.current) return;
setTruncated(element.current.scrollWidth > element.current.clientWidth);
};
useMutationObserver(element, handleIsTruncated, {
attributes: true
});
useResizeObserver({
ref: element,
onResize: handleIsTruncated
});
return truncated;
};