import './App.css'; import { useEffect, useState } from 'react' const Timer = ({ timeInSeconds }) => { const [time, setTime] = useState(timeInSeconds) const [isPaused, setPaused] = useState(false) const hours = Math.floor(time / (60 * 60)) const minutes = Math.floor((time % (60 * 60)) / 60) const seconds = Math.ceil((time % (60 * 60)) % 60) useEffect(() => { let interval = setInterval(() => {setTime(time => time - 1)}, 1000) if (time === 0 || isPaused) { clearInterval(interval) } return () => {clearInterval(interval)} }, [time, isPaused]) useEffect(() => { setTime(timeInSeconds) }, [timeInSeconds]) return ( <>
{hours}:{minutes}:{seconds}
) } const TimerControl = ({setTimeCB}) => { const [hours, setHours] = useState('') const [minutes, setMinutes] = useState('') const [seconds, setSeconds] = useState('') const timeToSeconds = (hours, minutes, seconds) => { let time = (+hours * 60 * 60) + (+minutes * 60) + +seconds return time } const valuesDisappear = () => { setHours('') setMinutes('') setSeconds('') } return (
setHours(e.target.value)}> setMinutes(e.target.value)}> setSeconds(e.target.value)}>
) } const TimerContainer = ({seconds, refresh, render: Render}) => { const [time, setTime] = useState(seconds) const [initialTime] = useState(performance.now()) useEffect(() => { let interval = setInterval(() => { setTime(seconds - Math.floor((performance.now() - initialTime) / 1000)) }, refresh) if (time <= 0) { setTime(0) clearInterval(interval) } return () => clearInterval(interval) }, [time, initialTime, refresh, seconds]) useEffect(() => { setTime(seconds) }, [seconds]) return ( ) } const SecondsTimer = ({seconds}) =>

{seconds}

const LCD = ({seconds: timeInSeconds}) => { const hours = Math.floor(timeInSeconds / (60 * 60)) const minutes = Math.floor((timeInSeconds % (60 * 60)) / 60) const seconds = Math.ceil((timeInSeconds % (60 * 60)) % 60) return (
{hours}:{minutes}:{seconds}
) } const Watch = ({seconds: timeInSeconds}) => { const hours = Math.floor(timeInSeconds / (60 * 60)) const minutes = Math.floor((timeInSeconds % (60 * 60)) / 60) const seconds = Math.ceil((timeInSeconds % (60 * 60)) % 60) const ratioH = 360 / 12 / 60 / 60 const ratioM = 360 / 60 / 60 const ratioS = 360 / 60 const getAngle = (ratio, value) => (ratio * value) return ( <>
{hours}:{minutes}:{seconds}
) } function App() { const [time, setTime] = useState(0) return (
setTime(seconds)}/>
); } export default App;