import React, { useEffect, useState } from 'react'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import duplicateImg from "./assets/duplicate.svg"; import './style/FancyTextDisplay.sass'; interface Props { text: string | number, className?: string, isPossibleToCopy?: boolean, applyTextEllipsis?: boolean, flipped?: boolean, useTooltip?: boolean, displayIconOnMouseOver?: boolean, buttonOnly?: boolean, } const FancyTextDisplay: React.FC = ({text, className, isPossibleToCopy = true, applyTextEllipsis = true, flipped = false, useTooltip= false, displayIconOnMouseOver = false, buttonOnly = false}) => { const [showCopiedNotification, setCopied] = useState(false); const [showTooltip, setShowTooltip] = useState(false); const displayText = text || ''; const onCopy = () => { setCopied(true) }; useEffect(() => { let timer; if (showCopiedNotification) { timer = setTimeout(() => { setCopied(false); }, 1000); } return () => clearTimeout(timer); }, [showCopiedNotification]); const textElement = {displayText}; const copyButton = isPossibleToCopy && displayText ? Duplicate full value {showCopiedNotification && Copied} : null; return (

setShowTooltip(true)} onMouseLeave={ e => setShowTooltip(false)} > {!buttonOnly && flipped && textElement} {copyButton} {!buttonOnly && !flipped && textElement} {useTooltip && showTooltip && {displayText}}

); }; export default FancyTextDisplay;