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;