import { useEffect, useState, useCallback } from 'react';
import { Button, Paper, Typography, Stack, Box } from '@mui/material';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
import CheckIcon from '@mui/icons-material/Check';
import { useCopy } from './useCopy';
/**
* 时间戳显示和执行组件
*
* @component
* @example
* ```jsx
*
* ```
*
* @returns {JSX.Element} 时间戳组件
*/
export function TimestampExecution() {
const [currentTimestamp, setCurrentTimestamp] = useState(() => Math.floor(Date.now()));
const [showMilliseconds, setShowMilliseconds] = useState(true);
const [isRunningTimestamp, setIsRunningTimestamp] = useState(true);
const displayTimestamp = showMilliseconds
? currentTimestamp
: Math.floor(currentTimestamp / 1000);
const unitText = showMilliseconds ? '毫秒' : '秒';
useEffect(() => {
let timer: number;
if (isRunningTimestamp) {
const interval = showMilliseconds ? 100 : 1000;
timer = window.setInterval(() => {
setCurrentTimestamp(Math.floor(Date.now()));
}, interval);
}
return () => clearInterval(timer);
}, [isRunningTimestamp, showMilliseconds]);
const toggleUnit = useCallback(() => {
setShowMilliseconds((prev) => !prev);
}, []);
const toggleTimestamp = useCallback(() => {
setIsRunningTimestamp((prev) => !prev);
}, []);
const unitButtonLabel = showMilliseconds ? '切换为秒显示' : '切换为毫秒显示';
const toggleButtonLabel = isRunningTimestamp ? '停止时间戳自动更新' : '开始时间戳自动更新';
const toggleButtonText = isRunningTimestamp ? '停止' : '开始';
const { isCopied, copy } = useCopy();
return (
{displayTimestamp}
{unitText}
{/* */}
);
}