import { type MouseEvent, useState } from 'react'; import Button, { type ButtonProps } from '@mui/material/Button'; import Tooltip from '@mui/material/Tooltip'; import { type MRT_Cell, type MRT_RowData, type MRT_TableInstance, } from '../../types'; import { getCommonTooltipProps } from '../../utils/style.utils'; import { parseFromValuesOrFunc } from '../../utils/utils'; export interface MRT_CopyButtonProps extends ButtonProps { cell: MRT_Cell; table: MRT_TableInstance; } export const MRT_CopyButton = ({ cell, table, ...rest }: MRT_CopyButtonProps) => { const { options: { localization, muiCopyButtonProps }, } = table; const { column, row } = cell; const { columnDef } = column; const [copied, setCopied] = useState(false); const handleCopy = (event: MouseEvent, text: unknown) => { event.stopPropagation(); navigator.clipboard.writeText(text as string); setCopied(true); setTimeout(() => setCopied(false), 4000); }; const buttonProps = { ...parseFromValuesOrFunc(muiCopyButtonProps, { cell, column, row, table, }), ...parseFromValuesOrFunc(columnDef.muiCopyButtonProps, { cell, column, row, table, }), ...rest, }; return (