import { useRef, useState } from 'react' import { cn } from '@/lib/utils' import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip' type LongTextProps = { children: React.ReactNode className?: string contentClassName?: string } export function LongText({ children, className = '', contentClassName = '', }: LongTextProps) { const ref = useRef(null) const [isOverflown, setIsOverflown] = useState(false) // Use ref callback to check overflow when element is mounted const refCallback = (node: HTMLDivElement | null) => { ref.current = node if (node && checkOverflow(node)) { queueMicrotask(() => setIsOverflown(true)) } } if (!isOverflown) return (
{children}
) return ( <>
{children}

{children}

{children}

{children}

) } const checkOverflow = (textContainer: HTMLDivElement | null) => { if (textContainer) { return ( textContainer.offsetHeight < textContainer.scrollHeight || textContainer.offsetWidth < textContainer.scrollWidth ) } return false }