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
>
)
}
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;