2020-01-22 07:58:35 +01:00
|
|
|
import React, {useContext} from 'react';
|
2019-12-27 09:41:53 +01:00
|
|
|
import './css/App.css';
|
2020-01-22 07:58:35 +01:00
|
|
|
|
|
|
|
|
import { GameModeContext } from "./contexts/gameModeContext"
|
|
|
|
|
import { MorseBufferContextProvider } from "./contexts/morseBufferContext"
|
|
|
|
|
import { WordFeederContextProvider } from './contexts/wordFeederContext';
|
|
|
|
|
import { WordListPickerContextProvider } from './contexts/wordListPickerContext';
|
|
|
|
|
|
2019-12-27 09:41:53 +01:00
|
|
|
import ModePicker from './components/ModePicker'
|
2020-01-16 10:18:40 +01:00
|
|
|
import KeyTypePicker from './components/KeyTypePicker'
|
2020-01-22 07:58:35 +01:00
|
|
|
import WordListPicker from './components/WordListPicker';
|
|
|
|
|
|
2020-01-09 10:06:38 +01:00
|
|
|
import PracticeMode from './app-modes/PracticeMode';
|
2020-01-25 08:32:08 +01:00
|
|
|
import TrainingMode from './app-modes/TrainingMode'
|
2020-01-09 10:06:38 +01:00
|
|
|
import ChallengeMode from './app-modes/ChallengeMode'
|
2019-12-21 23:40:54 +01:00
|
|
|
|
2020-01-22 09:39:05 +01:00
|
|
|
import Header from './components/Header';
|
|
|
|
|
import Legend from './components/Legend';
|
|
|
|
|
// import GameClock from "./components/GameClock"
|
2020-01-25 08:32:08 +01:00
|
|
|
import WordsPerMinute from "./components/WordsPerMinute"
|
2020-01-22 09:39:05 +01:00
|
|
|
import MorseButtons from './components/MorseButtons'
|
|
|
|
|
import Footer from './components/Footer';
|
2020-01-31 10:45:12 +01:00
|
|
|
import Info from './components/Info';
|
2020-02-04 04:12:50 +01:00
|
|
|
import { GameClockContextProvider } from './contexts/gameClockContext';
|
|
|
|
|
import ChallengeOverlay from './components/ChallengeOverlay';
|
2020-02-04 22:38:22 +01:00
|
|
|
import { KeyTypeContextProvider } from './contexts/keyTypeContext';
|
|
|
|
|
import { WPMContextProvider } from './contexts/wpmContext';
|
2020-01-17 21:23:17 +01:00
|
|
|
|
2020-01-22 07:58:35 +01:00
|
|
|
export default React.memo(function App() {
|
2019-12-21 23:48:36 +01:00
|
|
|
|
2020-01-03 08:53:56 +01:00
|
|
|
console.log('App.js rendered')
|
2020-01-27 12:21:41 +01:00
|
|
|
|
|
|
|
|
const {gameMode} = useContext(GameModeContext)
|
2020-01-19 04:35:11 +01:00
|
|
|
|
2020-02-06 04:15:55 +01:00
|
|
|
function toggleRight() {
|
2020-02-06 11:43:21 +01:00
|
|
|
document.querySelector('.sidebar#left').classList.toggle('hide')
|
2020-02-05 11:29:45 +01:00
|
|
|
}
|
2020-02-06 04:15:55 +01:00
|
|
|
function toggleLeft() {
|
2020-02-06 11:43:21 +01:00
|
|
|
document.querySelector('.sidebar#right').classList.toggle('hide')
|
2020-02-06 04:15:55 +01:00
|
|
|
}
|
2020-02-05 11:29:45 +01:00
|
|
|
|
2019-12-21 23:48:36 +01:00
|
|
|
return (
|
2020-01-22 09:39:05 +01:00
|
|
|
<>
|
|
|
|
|
<Header />
|
|
|
|
|
<div id='main-content'>
|
2020-02-04 22:38:22 +01:00
|
|
|
<KeyTypeContextProvider>
|
|
|
|
|
<WPMContextProvider>
|
2020-01-25 21:23:47 +01:00
|
|
|
<MorseBufferContextProvider>
|
2020-01-29 08:46:23 +01:00
|
|
|
<WordListPickerContextProvider>
|
|
|
|
|
<WordFeederContextProvider>
|
2020-02-04 22:38:22 +01:00
|
|
|
<GameClockContextProvider>
|
2020-02-06 11:43:21 +01:00
|
|
|
<div className="sidebar" id="left">
|
|
|
|
|
<div id="settings-icon" onClick={toggleRight}><i class="ri-settings-3-fill"></i></div>
|
|
|
|
|
<div id="mainOptions">
|
|
|
|
|
<h1>Options</h1>
|
|
|
|
|
<ModePicker />
|
|
|
|
|
<KeyTypePicker />
|
|
|
|
|
<WordsPerMinute />
|
|
|
|
|
{/* {gameMode === 'challenge' &&
|
|
|
|
|
<WordListPicker />
|
|
|
|
|
} */}
|
|
|
|
|
</div>
|
|
|
|
|
<Legend />
|
2020-01-29 08:46:23 +01:00
|
|
|
</div>
|
2020-01-30 10:23:56 +01:00
|
|
|
<div id="main-interface">
|
2020-01-27 12:21:41 +01:00
|
|
|
|
2020-01-30 10:23:56 +01:00
|
|
|
{gameMode === 'practice' &&
|
|
|
|
|
<PracticeMode />
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{/* {gameMode === 'timed' &&
|
|
|
|
|
<>
|
|
|
|
|
{keyType === "straight" ?
|
|
|
|
|
<StraightKey gameMode='training' /> : <ElectronicKey gameMode='training' />}
|
|
|
|
|
<TrainingMode /><br/>
|
|
|
|
|
<MorseBufferDisplay /><br/>
|
|
|
|
|
<MorseHistory /><br/>
|
|
|
|
|
</>
|
|
|
|
|
} */}
|
2020-01-27 12:21:41 +01:00
|
|
|
|
2020-01-30 10:23:56 +01:00
|
|
|
{gameMode === 'challenge' &&
|
2020-02-04 22:38:22 +01:00
|
|
|
<>
|
2020-02-04 04:12:50 +01:00
|
|
|
<ChallengeOverlay />
|
|
|
|
|
<ChallengeMode />
|
2020-02-04 22:38:22 +01:00
|
|
|
</>
|
2020-01-30 10:23:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<MorseButtons />
|
|
|
|
|
</div>
|
2020-02-06 04:15:55 +01:00
|
|
|
<div className="sidebar" id="right">
|
2020-02-06 11:43:21 +01:00
|
|
|
<div id="info-icon" onClick={toggleLeft}><i class="ri-information-line"></i></div>
|
|
|
|
|
<Info />
|
2020-02-01 10:49:21 +01:00
|
|
|
</div>
|
2020-02-04 22:38:22 +01:00
|
|
|
</GameClockContextProvider>
|
2020-01-29 08:46:23 +01:00
|
|
|
</WordFeederContextProvider>
|
|
|
|
|
</WordListPickerContextProvider>
|
2020-02-04 22:38:22 +01:00
|
|
|
</MorseBufferContextProvider>
|
|
|
|
|
</WPMContextProvider>
|
|
|
|
|
</KeyTypeContextProvider>
|
2020-01-22 09:39:05 +01:00
|
|
|
</div>
|
|
|
|
|
<Footer />
|
|
|
|
|
</>
|
2019-12-21 23:48:36 +01:00
|
|
|
);
|
2020-01-09 10:06:38 +01:00
|
|
|
|
2020-01-22 07:58:35 +01:00
|
|
|
})
|