import React, { useState, useEffect } from "react"; // import logo from "./logo.svg"; import "./App.css"; const Spoiler = ({ header = "+", open, children }) => { const [state, setState] = useState(open); return ( <>
setState(!state)}>{header}
{/*
*/} {state && children} //
); }; const RangeInput = (props) => { const [text, setText] = useState("RangeInput"); return (
props.max ? "#FAA" : "", }} onChange={(e) => setText(e.target.value)} />
); }; const PasswordConfirm = (props) => { const [password, setPassword] = useState("Password"); const [confirmPassword, setConfirnPassword] = useState("PasswordConfirm"); return (
setPassword(e.target.value)} /> setConfirnPassword(e.target.value)} />
); }; const LifeCycle = ({ onDelete }) => { const [counter, setCounter] = useState(0); useEffect(() => { let intervalID = setInterval(() => { setCounter((c) => c + 1); }, 1000); return () => clearInterval(intervalID); // console.log(intervalID + "intervalID bye-bye") }, []); return (
{counter}
); }; const LifeStyles = () => { const [count, setCount] = useState(1); return ( <> {[..." ".repeat(count)].map(() => ( setCount(count - 1)} /> ))} ); }; const Timer = (props) => { const [time, setTime] = useState(props.sec); // console.log("props.sec: ", props.sec); const [pause, setPause] = useState(true); let seconds = time % 60; let minutes = Math.floor((time / 60) % 60); let hours = Math.floor(time / 3600); let interval; useEffect(() => { interval = setInterval(() => { if (!pause) { setTime((time) => time - 1); // console.log("interval: " + interval); } }, props.refresh); return () => clearInterval(interval); }, [pause]); return (
Timer: {hours}:{minutes}:{Math.trunc(seconds)}
); }; // const MyComponents = { // Timer: (props) => { // const [time, setTime] = useState(props.sec); // const [pause, setPause] = useState(false); // const [minute, setMinute] = useState(props.min); // const [hour, setHour] = useState(props.hours); // { // if (!pause) { // return ( //
// // Timer: {hour}:{minute}:{time} // // //
// ); // } // } // { // setTimeout(function () { // if (minute < 0) { // setMinute(59); // setHour(hour - 1); // } // if (time === 0 || time === "00") { // setTime(60); // setMinute(minute - 1); // } else { // setTime(time - 1); // } // }, 1000); // } // return ( //
// // Timer: {hour}:{minute}:{time} // // //
// ); // }, // }; const TimerControl = (props) => { const [state, setState] = useState(false); const [hours, setHours] = useState(0); const [minutes, setMinutes] = useState(0); const [seconds, setSeconds] = useState(0); let sum = +hours * 3600 + +minutes * 60 + +seconds; { if (state) { return (
{/* */} {}
); } } return (
setHours(e.target.value)} /> setMinutes(e.target.value)} /> setSeconds(e.target.value)} />
); }; const LCD = (props) => { for (let key in props) { console.log("props.key in LCD: " + key); } return ( <>

LCD

{} {/* 22:19 :17 */}
); }; const TimerContainer = ({ seconds, refresh, render: Render }) => { const [text, setText] = useState(); const [t0, setT0] = useState(performance.now()); // const [forget, setForget] = useState(); // let interval; // useEffect(() => { // interval = setInterval(() => { // // if (!pause) { // setForget((forget) => !forget); // // } // }, refresh); // return () => clearInterval(interval); // }, [forget]); console.log(text); return ( <>

TimerContainer

{ let value = e; if (e && e.target && "value" in e.target) { value = e.target.value; } setText(value); }} /> ); }; const SecondsTimer = ({ sec: seconds }) =>

{seconds}

; const App = () => (
Заголовок} open> Контент 1

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nihil ducimus suscipit incidunt officia deleniti, aspernatur unde eius facilis tempora. Eligendi voluptatem deleniti quas dolore rerum! Explicabo obcaecati minus est? Cumque!

Контент 2

Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus debitis possimus officiis necessitatibus. Illo quibusdam aliquid temporibus impedit, aliquam dolor harum eius consequuntur laboriosam quam excepturi voluptatibus dolores consequatur sed.

Timer

} /> {/* */} {/* */} {/* */} {/* */}
); export default App;