import React, {useState, useEffect, useCallback} from 'react'; import Shader from './Shader'; import WhoAmI from './WhoAmI'; import Git from './Git'; import DownloadCV from './DownloadCV'; import ClickMe from './ClickMe'; import Player from './Player'; /** * @return {jsx} The root component */ export default function Root() { const [windowSize, setWindowSize] = useState(0); const [trigger, setTrigger] = useState(0); const [content, setContent]: any = useState([]); const [busy, setBusy]: any = useState(true); const loader: Array = []; for (let i = 0; i < 5; i++) { loader.push(
); } loader.push(
); loader.push(
); for (let i = 0; i < 2; i++) { loader.push(
); } loader.push(
); loader.push(
); for (let i = 0; i < 5; i++) { loader.push(
); } const Shaders = [ 'BaseRaymarching', 'Collapse', 'Droplets', 'Inception', 'Menstom', 'Torus', 'Triangle', 'BaseLattice', ]; const Sounds = [ 'Collapse.mp3', 'Droplets.mp3', 'Heavy Ropes.mp3', 'Inception.mp3', 'Menstom.mp3', 'Speechless.mp3', 'Triangle.mp3', ]; const handleWindowResize = useCallback((_event) => { setWindowSize(window.innerWidth); }, []); useEffect(() => { window.addEventListener('resize', handleWindowResize); return () => { window.removeEventListener('resize', handleWindowResize); }; }, [handleWindowResize]); useEffect(() => { const newContent = []; const randomContent = []; const shadersRandom: Array = []; const imagesRandom: Array = []; const soundsRandom: Array = []; for (let i = 0; i < 3; i++) { shadersRandom.push(Math.floor(Math.random() * 8)); while (shadersRandom.indexOf( shadersRandom[shadersRandom.length - 1]) != shadersRandom.length - 1) { shadersRandom[shadersRandom.length - 1] += 1; if (shadersRandom[shadersRandom.length - 1] == 8) { shadersRandom[shadersRandom.length - 1] = 1; } } } for (let i = 0; i < 3; i++) { shadersRandom[i] =
; } for (let i = 0; i < 7; i++) { imagesRandom.push(Math.floor(Math.random() * 12) + 1); while (imagesRandom.indexOf( imagesRandom[imagesRandom.length - 1]) != imagesRandom.length - 1) { imagesRandom[imagesRandom.length - 1] += 1; if (imagesRandom[imagesRandom.length - 1] == 13) { imagesRandom[imagesRandom.length - 1] = 1; } } } for (let i = 0; i < 7; i++) { imagesRandom[i] =
; } for (let i = 0; i < 2; i++) { soundsRandom.push(Math.floor(Math.random() * 7)); } if (soundsRandom[0] == soundsRandom[1]) { soundsRandom[1] += 1; if (soundsRandom[1] == 7) { soundsRandom[1] = 0; } } soundsRandom[0] = Sounds[soundsRandom[0]]; soundsRandom[1] = Sounds[soundsRandom[1]]; for (let i = 0; i < soundsRandom.length; i++) { soundsRandom[i] =
; } while (shadersRandom.length || imagesRandom.length || soundsRandom.length) { const random = Math.floor(Math.random() * 4); if (random == 0) { if (shadersRandom.length > 0) { randomContent.push(shadersRandom[0]); shadersRandom.shift(); } } else if (random == 1) { if (soundsRandom.length > 0) { randomContent.push(soundsRandom[0]); soundsRandom.shift(); } } else { if (imagesRandom.length > 0) { randomContent.push(imagesRandom[0]); imagesRandom.shift(); } } } newContent.push(randomContent[0]); newContent.push(randomContent[1]); newContent.push(randomContent[2]); newContent.push(randomContent[3]); newContent.push(randomContent[4]); newContent.push(
); newContent.push(
); newContent.push(randomContent[5]); newContent.push(randomContent[6]); newContent.push(
); newContent.push(
); newContent.push(randomContent[7]); newContent.push(randomContent[8]); newContent.push(randomContent[9]); newContent.push(randomContent[10]); newContent.push(randomContent[11]); setContent(newContent); setBusy(false); }, [trigger]); return (
{busy ? loader : content}
); }