import './App.css'; import { clear } from '@testing-library/user-event/dist/clear'; import React, {useState, useEffect} from 'react'; import watch from "./img/ClockFace.png"; import hourArrow from "./img/ClockFace_H.png"; import minuteArrow from "./img/ClockFace_M.png"; import secondArrow from "./img/ClockFace_S.png"; // Spoiler const Spoiler = ({header="+", open=true, children}) => { const [isOpen, setOpen] = useState(open) return <> {!isOpen && children} } // RangeInput const RangeInput = ({min, max}) => { const [text, setText] = useState("") return <> max) ? 'red' : 'black'}} value={text} onChange={(e) => setText(e.target.value)}> } // PasswordConfirm const PasswordConfirm = ({min}) => { const [pswd, setPswd] = useState("") const [pswd2, setPswd2] = useState("") return <>

password:

setPswd(e.target.value)} />

repeat password:

setPswd2(e.target.value)} /> } //Timer const Timer = ({seconds}) => { const [sec, setSec] = useState(seconds) let [pause, setPause] = useState(false) let hours = Math.floor(sec / (60 * 60)) let minuts = Math.floor(sec % (60 * 60) / 60) let second = sec % 60 let interval useEffect(() => { if (sec <= 0) { setPause(true) } if (!pause) { interval = setInterval(() => { setSec(sec => sec - 1) }, 1000); } return () => { clearInterval(interval) } }, [pause, sec]) return (

Timer

{hours} : {minuts} : {second}
) } //TimerControl const TimerControl = () => { const [hours, setHours] = useState(0) const [minutes, setMinutes] = useState(0) const [seconds, setSeconds] = useState(0) const [arr, setArr] = useState([]) let sec = hours * 3600 + minutes * 60 + seconds; return ( <>

Timer Control

setHours(+e.target.value)} /> setMinutes(+e.target.value)} /> setSeconds(+e.target.value)} /> {arr.map(item=> ())} ) } //TimerContainer const SecondsTimer = ({seconds}) =>

{seconds}

const TimerContainer = ({seconds = 1000, refresh, render:Render}) => { const [time, setTime] = useState(seconds) const [pause, setPause] = useState(false) let interval useEffect(() => { let timeBefore = Math.floor(performance.now()) interval = setInterval(() => { let timeAfter = Math.floor(performance.now()) !pause && time > 0 ? setTime((seconds - (timeAfter - timeBefore) / 1000)) : setTime(time) }, refresh) return() => { clearInterval(interval) } }, [pause, refresh, seconds]) return ( <>

Timer Container

) } //LCD const LCD = ({seconds}) => { let hours = Math.floor(seconds / 60 / 60) let minutes = Math.floor((seconds % 3600) / 60) let sec = seconds % 60 return ( <>
{hours} : {minutes} : {sec.toFixed(2)}
) } //Watch const Watch = ({seconds}) => { let hours = Math.floor(seconds / 60 / 60) let minutes = Math.floor((seconds % 3600) / 60) let second = seconds % 60 return ( <>

Watch

Watch Hours Minutes Seconds
) } const TimerContainerWatch = ({seconds = 1000, refresh, render:Render}) => { const [time, setTime] = useState(seconds) const [pause, setPause] = useState(false) let interval useEffect(() => { let timeBefore = Math.floor(performance.now()) interval = setInterval(() => { let timeAfter = Math.floor(performance.now()) !pause && time > 0 ? setTime((seconds - (timeAfter - timeBefore) / 1000)) : setTime(time) }, refresh) return() => { clearInterval(interval) } }, [pause, refresh, seconds]) return ( <>
) } function App() { return (
Spoiler:
Заголовок} open> Контент 1

лорем ипсум траливали и тп.

Spoiler 2:

Контент 2

лорем ипсум траливали и тп.

Check input length:
{/* */}
); } export default App;