react-typing-test
Version:
A react component typing test, user input and wpm calculations.
49 lines (41 loc) • 999 B
text/typescript
import wordList from "./words.json";
export type SupportedLanguage =
| "english"
| "english1000"
| "spanish"
| "dots"
| "italian"
| "german"
| "chinese"
| "korean"
| "polish"
| "punjabi"
| "swedish"
| "french"
| "arabic"
| "portuguese"
| "russian"
| "finnish";
type GetRandomWordListType = {
language: SupportedLanguage;
wordLimit: number;
customList?: string[];
};
type WordList = {
[key in SupportedLanguage]: string[];
};
export const getRandomWordList = ({
language,
wordLimit,
customList,
}: GetRandomWordListType): string[] => {
const formatted = wordList as WordList;
let wordCount = formatted[language].length;
const randomWords = Array.from(Array(wordLimit)).map(() =>
customList?.length
? customList[Math.floor(Math.random() * customList.length)]
: formatted[language][Math.floor(Math.random() * wordCount)]
);
console.log(randomWords);
return randomWords;
};