import logo from './logo.svg'; import './App.scss'; import { useState, useEffect, useRef } from "react"; const Spoiler = ({ header = "+", open, children }) => { const [openMode, setOpenMode] = useState(open) return (
setOpenMode(!openMode)}> {header} {openMode && children}
) } const RangeInput = ({ min, max }) => { const [state, setState] = useState('') const colorBorder = state.length <= min || state.length >= max ? 'red' : '' return { setState(e.target.value) }} /> } const PasswordConfirm = ({ min }) => { const [checked, setChecked] = useState(false) const [stateInputOne, setStateInputOne] = useState('') const [stateInputTwo, setStateInputTwo] = useState('') const reg = /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/ const disabledBtn = stateInputOne === stateInputTwo && reg.test(stateInputOne) ? false : true return (
{ setStateInputOne(e.target.value) }} /> { setStateInputTwo(e.target.value) }} /> setChecked(e.target.checked)} />
) } const Timer = ({ ms = 5 }) => { const [counter, setCounter] = useState(ms) let [pause, setPause] = useState(false) let timeCounter useEffect(() => { if (counter <= 0) setPause(true) if (!pause) { timeCounter = setInterval(() => { setCounter(counter => counter - 1) }, 1000); } return () => { clearInterval(timeCounter) } }, [pause, counter]) let hours = Math.floor(counter / 3600) let minuts = Math.floor(counter % 3600 / 60) let second = counter % 60 return (
{hours} : {minuts} : {second}
) } const TimerControl = () => { const [hourse, setHours] = useState(0) const [minuts, setMinuts] = useState(0) const [seconds, setSeconds] = useState(0) const [open, setOpen] = useState(false) let ms = hourse * 3600 + minuts * 60 + seconds return (


{open && }
) } const TimerContainer = ({ seconds, refresh, render: T }) => { const t0 = performance.now() const [time, setTime] = useState(seconds) useEffect(() => { const timerID = setInterval(() => { let t1 = performance.now() if (seconds >= (t1 - t0) / 1000) { setTime(seconds - (t1 - t0) / 1000) } else { setTime(0) clearInterval(timerID) } }, refresh); return () => { setTime(seconds) clearInterval(timerID) } }, []) return ( ) } const SecondsTimer = ({ seconds }) =>

{seconds.toFixed(1)}

const TimerLCD = ({ time = 5 }) => { let hours = Math.floor(time / 3600) let minuts = Math.floor(time % 3600 / 60) let seconds = time % 60 return (
{hours < 10 ? `0${hours}` : hours} : {minuts < 10 ? `0${minuts}` : minuts} : {seconds < 10 ? `0${seconds.toFixed(0)}` : seconds.toFixed(0)}
) } const TimerControlLCD = ({ ms, render: T }) => { const [open, setOpen] = useState(true) const t0 = performance.now() const [time, setTime] = useState(ms) useEffect(() => { if (open) { const timerID = setInterval(() => { let t1 = performance.now() if (ms >= (t1 - t0) / 1000) { setTime(ms - (t1 - t0) / 1000) } else { setTime(0) clearInterval(timerID) } }, 1000); return () => { setTime(ms) clearInterval(timerID) } } }, [open]) return (
{open && }
) } const Watch = ({ time }) => { let hours = (time / 3600 * 30) let seconds = (time * 6).toFixed(0) let minuts = (time % 3600 / 60) * 6 return ( <>
) } /////////////////////////////////////////////////////////////////////////// const TimerC = () => { const [hourse, setHours] = useState(0) const [minuts, setMinuts] = useState(0) const [seconds, setSeconds] = useState(0) const [open, setOpen] = useState(false) let ms = hourse * 3600 + minuts * 60 + seconds return (


{open && }
) } const SecondsTimer = ({ seconds }) =>

{seconds.toFixed(1)}

const TimerCont = ({ seconds, refresh }) => { const t0 = performance.now() const [time, setTime] = useState(seconds) useEffect(() => { const timerID = setInterval(() => { let t1 = performance.now() if (seconds >= (t1 - t0) / 1000) { setTime(seconds - (t1 - t0) / 1000) } else { setTime(0) clearInterval(timerID) } }, refresh); return () => { setTime(seconds) clearInterval(timerID) } }, []) return ( ) } function App() { return (
Заголовок} open> Контент 1

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

Контент 2

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



Timer :
TimerControl :
TimerContainer :
LCD :
Watch :
TimerControl + TimerContainer:
); } export default App;