Merge branch 'master' into misc

This commit is contained in:
Jack 2020-12-02 18:03:25 +00:00 committed by GitHub
commit 7342a01137
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 22349 additions and 10405 deletions

View file

@ -1783,8 +1783,11 @@ $("#commandInput input").keydown((e) => {
$("#commandLineWrapper #commandLine .suggestions").on("mouseover", (e) => {
$("#commandLineWrapper #commandLine .suggestions .entry").removeClass(
"active"
"activeKeyboard"
);
if (isPreviewingTheme) {
previewTheme(config.theme, false);
}
let hoverId = $(e.target).attr("command");
try {
let list = currentCommands[currentCommands.length - 1];
@ -2037,14 +2040,15 @@ function updateSuggestedCommands() {
function displayFoundCommands() {
$("#commandLine .suggestions").empty();
let commandsHTML = "";
let list = currentCommands[currentCommands.length - 1];
$.each(list.list, (index, obj) => {
if (obj.found && (obj.available !== undefined ? obj.available() : true)) {
$("#commandLine .suggestions").append(
'<div class="entry" command="' + obj.id + '">' + obj.display + "</div>"
);
commandsHTML +=
'<div class="entry" command="' + obj.id + '">' + obj.display + "</div>";
}
});
$("#commandLine .suggestions").html(commandsHTML);
if ($("#commandLine .suggestions .entry").length == 0) {
$("#commandLine .separator").css({ height: 0, margin: 0 });
} else {

View file

@ -176,7 +176,7 @@ const layouts = {
prog_dvorak: {
keymapShowTopRow: true,
keys: [
"$~", "[%", "[7", "{5", "}3", "(1", "=9", "*0", ")2", "+4", "]6", "!8", "#`",
"$~", "&%", "[7", "{5", "}3", "(1", "=9", "*0", ")2", "+4", "]6", "!8", "#`",
";:", ",<", ".>", "pP", "yY", "fF", "gG", "cC", "rR", "lL", "/?", "@^", "\\|",
"aA", "oO", "eE", "uU", "iI", "dD", "hH", "tT", "nN", "sS", "-_",
"\\|", "'\"", "qQ", "jJ", "kK", "xX", "bB", "mM", "wW", "vV", "zZ",
@ -220,7 +220,7 @@ const layouts = {
keys: [
"$#", "\"1", "«2", "»3", "(4", ")5", "@6", "+7", "-8", "/9", "*0", "=°", "%`",
"bB", "éÉ", "pP", "oO", "èÈ", "^!", "vV", "dD", "lL", "jJ", "zZ", "wW", "mM",
"aA", "uU", "iI", "eE", ",;", "cC", "tT", "sS", "rR", "sS", "nN",
"aA", "uU", "iI", "eE", ",;", "cC", "tT", "sS", "rR", "nN", "mM",
"êÊ", "àÀ", "yY", "xX", ".:", "kK", "?", "qQ", "gG", "hH", "fF",
" "
]

View file

@ -310,6 +310,7 @@ function activateFunbox(funbox, mode) {
memoryFunboxInterval = clearInterval(memoryFunboxInterval);
memoryFunboxTimer = null;
$("#wordsWrapper").removeClass("hidden");
$("#words").removeClass("nospace");
}
if (mode === "style") {
@ -346,6 +347,9 @@ function activateFunbox(funbox, mode) {
if (config.keymapMode === "next") {
setKeymapMode("react");
}
} else if (funbox === "no_space") {
$("#words").addClass("nospace");
restartTest(false, true);
}
activeFunBox = funbox;
}
@ -607,82 +611,89 @@ function emulateLayout(event) {
event.key = newKey;
event.code = "Key" + newKey.toUpperCase();
}
if (config.layout === "default") {
let newEvent = event;
try {
if (config.layout === "default") {
//override the caps lock modifier for the default layout if needed
if (config.capsLockBackspace && Misc.isASCIILetter(event.key)) {
replaceEventKey(
event,
event.shiftKey
? event.key.toUpperCase().charCodeAt(0)
: event.key.toLowerCase().charCodeAt(0)
);
if (config.capsLockBackspace && Misc.isASCIILetter(newEvent.key)) {
replaceEventKey(
newEvent,
newEvent.shiftKey
? newEvent.key.toUpperCase().charCodeAt(0)
: newEvent.key.toLowerCase().charCodeAt(0)
);
}
return newEvent;
}
const keyEventCodes = [
"Backquote",
"Digit1",
"Digit2",
"Digit3",
"Digit4",
"Digit5",
"Digit6",
"Digit7",
"Digit8",
"Digit9",
"Digit0",
"Minus",
"Equal",
"KeyQ",
"KeyW",
"KeyE",
"KeyR",
"KeyT",
"KeyY",
"KeyU",
"KeyI",
"KeyO",
"KeyP",
"BracketLeft",
"BracketRight",
"Backslash",
"KeyA",
"KeyS",
"KeyD",
"KeyF",
"KeyG",
"KeyH",
"KeyJ",
"KeyK",
"KeyL",
"Semicolon",
"Quote",
"IntlBackslash",
"KeyZ",
"KeyX",
"KeyC",
"KeyV",
"KeyB",
"KeyN",
"KeyM",
"Comma",
"Period",
"Slash",
"Space",
];
const layoutMap = layouts[config.layout].keys;
let mapIndex;
for (let i = 0; i < keyEventCodes.length; i++) {
if (newEvent.code == keyEventCodes[i]) {
mapIndex = i;
}
}
const newKeyPreview = layoutMap[mapIndex][0];
const shift = emulatedLayoutShouldShiftKey(newEvent, newKeyPreview) ? 1 : 0;
const newKey = layoutMap[mapIndex][shift];
replaceEventKey(newEvent, newKey.charCodeAt(0));
} catch (e) {
return event;
}
const keyEventCodes = [
"Backquote",
"Digit1",
"Digit2",
"Digit3",
"Digit4",
"Digit5",
"Digit6",
"Digit7",
"Digit8",
"Digit9",
"Digit0",
"Minus",
"Equal",
"KeyQ",
"KeyW",
"KeyE",
"KeyR",
"KeyT",
"KeyY",
"KeyU",
"KeyI",
"KeyO",
"KeyP",
"BracketLeft",
"BracketRight",
"Backslash",
"KeyA",
"KeyS",
"KeyD",
"KeyF",
"KeyG",
"KeyH",
"KeyJ",
"KeyK",
"KeyL",
"Semicolon",
"Quote",
"IntlBackslash",
"KeyZ",
"KeyX",
"KeyC",
"KeyV",
"KeyB",
"KeyN",
"KeyM",
"Comma",
"Period",
"Slash",
"Space",
];
const layoutMap = layouts[config.layout].keys;
let mapIndex;
for (let i = 0; i < keyEventCodes.length; i++) {
if (event.code == keyEventCodes[i]) {
mapIndex = i;
}
}
const newKeyPreview = layoutMap[mapIndex][0];
const shift = emulatedLayoutShouldShiftKey(event, newKeyPreview) ? 1 : 0;
const newKey = layoutMap[mapIndex][shift];
replaceEventKey(event, newKey.charCodeAt(0));
return event;
return newEvent;
}
function punctuateWord(previousWord, currentWord, index, maxindex) {
@ -718,6 +729,20 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
) {
//1% chance to add quotes
word = `"${word}"`;
} else if (
Math.random() < 0.01 &&
getLastChar(previousWord) != "," &&
getLastChar(previousWord) != "."
) {
//1% chance to add single quotes
word = `'${word}'`;
} else if (
Math.random() < 0.01 &&
getLastChar(previousWord) != "," &&
getLastChar(previousWord) != "."
) {
//1% chance to add parentheses
word = `(${word})`;
} else if (Math.random() < 0.01) {
//1% chance to add a colon
word = word + ":";
@ -835,14 +860,15 @@ function addWord() {
function showWords() {
$("#words").empty();
let wordsHTML = "";
for (let i = 0; i < wordsList.length; i++) {
let w = "<div class='word'>";
wordsHTML += "<div class='word'>";
for (let c = 0; c < wordsList[i].length; c++) {
w += "<letter>" + wordsList[i].charAt(c) + "</letter>";
wordsHTML += "<letter>" + wordsList[i].charAt(c) + "</letter>";
}
w += "</div>";
$("#words").append(w);
wordsHTML += "</div>";
}
$("#words").html(wordsHTML);
$("#wordsWrapper").removeClass("hidden");
const wordHeight = $(document.querySelector(".word")).outerHeight(true);
@ -969,6 +995,12 @@ function compareInput(showError) {
for (let i = 0; i < currentWord.length; i++) {
ret += `<letter class="${classString}">` + currentWord[i] + `</letter>`;
}
if (currentInput.length > currentWord.length && !config.hideExtraLetters) {
for (let i = currentWord.length; i < currentInput.length; i++) {
ret +=
`<letter class="${classString}">` + currentInput[i] + `</letter>`;
}
}
} else {
for (let i = 0; i < input.length; i++) {
let charCorrect;
@ -1714,7 +1746,7 @@ function showResult(difficultyFailed = false) {
$("#result .stats .wpm .top .text").text("cpm");
$("#result .stats .wpm .bottom").attr(
"aria-label",
stats.wpm * 5 + ` (${Misc.roundTo2(stats.wpm)} wpm)`
Misc.roundTo2(stats.wpm * 5) + ` (${Misc.roundTo2(stats.wpm)} wpm)`
);
$("#result .stats .wpm .bottom").text(Math.round(stats.wpm * 5));
$("#result .stats .raw .bottom").text(Math.round(stats.wpmRaw * 5));
@ -3103,6 +3135,7 @@ function toggleResultWordsDisplay() {
async function loadWordsHistory() {
$("#resultWordsHistory .words").empty();
let wordsHTML = "";
for (let i = 0; i < inputHistory.length + 2; i++) {
let input = inputHistory[i];
let wordEl = "";
@ -3213,8 +3246,9 @@ async function loadWordsHistory() {
wordEl += "</div>";
} catch (e) {}
}
$("#resultWordsHistory .words").append(wordEl);
wordsHTML += wordEl;
}
$("#resultWordsHistory .words").html(wordsHTML);
$("#showWordHistoryButton").addClass("loaded");
return true;
}
@ -4235,6 +4269,18 @@ $(document).keydown((event) => {
}
}
//blocking firefox from going back in history with backspace
if (event.key === "Backspace") {
let t = /INPUT|SELECT|TEXTAREA/i;
if (
!t.test(event.target.tagName) ||
event.target.disabled ||
event.target.readOnly
) {
event.preventDefault();
}
}
//only for the typing test
if ($("#wordsInput").is(":focus")) {
const isBackspace =
@ -4265,6 +4311,9 @@ $(document).keydown((event) => {
} else {
currentInput = inputHistory.pop();
currentCorrected = correctedHistory.pop();
if (activeFunBox === "no_space") {
currentInput = currentInput.substring(0, currentInput.length - 1);
}
}
currentWordIndex--;
currentWordElementIndex--;
@ -4294,91 +4343,6 @@ $(document).keydown((event) => {
if (currentInput === "") return;
event.preventDefault();
let currentWord = wordsList[currentWordIndex];
if (!config.showAllLines || config.mode == "time") {
let currentTop = Math.floor(
document.querySelectorAll("#words .word")[currentWordElementIndex]
.offsetTop
);
let nextTop;
try {
nextTop = Math.floor(
document.querySelectorAll("#words .word")[
currentWordElementIndex + 1
].offsetTop
);
} catch (e) {
nextTop = 0;
}
if ((nextTop > currentTop || activeWordJumped) && !lineTransition) {
//last word of the line
if (currentTestLine > 0) {
let hideBound = currentTop;
if (activeWordJumped) {
hideBound = activeWordTopBeforeJump;
}
activeWordJumped = false;
let toHide = [];
let wordElements = $("#words .word");
for (let i = 0; i < currentWordElementIndex + 1; i++) {
if ($(wordElements[i]).hasClass("hidden")) continue;
let forWordTop = Math.floor(wordElements[i].offsetTop);
if (forWordTop < hideBound - 10) {
toHide.push($($("#words .word")[i]));
}
}
const wordHeight = $(document.querySelector(".word")).outerHeight(
true
);
if (config.smoothLineScroll && toHide.length > 0) {
lineTransition = true;
$("#words").prepend(
`<div class="smoothScroller" style="position: fixed;height:${wordHeight}px;width:100%"></div>`
);
$("#words .smoothScroller").animate(
{
height: 0,
},
125,
() => {
$("#words .smoothScroller").remove();
}
);
$("#paceCaret").animate(
{
top:
document.querySelector("#paceCaret").offsetTop - wordHeight,
},
125
);
$("#words").animate(
{
marginTop: `-${wordHeight}px`,
},
125,
() => {
activeWordTop = document.querySelector("#words .active")
.offsetTop;
currentWordElementIndex -= toHide.length;
lineTransition = false;
toHide.forEach((el) => el.remove());
$("#words").css("marginTop", "0");
}
);
} else {
toHide.forEach((el) => el.remove());
currentWordElementIndex -= toHide.length;
$("#paceCaret").css({
top:
document.querySelector("#paceCaret").offsetTop - wordHeight,
});
}
}
currentTestLine++;
}
} //end of line wrap
if (activeFunBox === "layoutfluid" && config.mode !== "time") {
const layouts = ["qwerty", "dvorak", "colemak"];
let index = 0;
@ -4483,8 +4447,97 @@ $(document).keydown((event) => {
currentKeypress.count++;
currentKeypress.words.push(currentWordIndex);
}
correctedHistory.push(currentCorrected);
currentCorrected = "";
if (!config.showAllLines || config.mode == "time") {
let currentTop = Math.floor(
document.querySelectorAll("#words .word")[currentWordElementIndex - 1]
.offsetTop
);
let nextTop;
try {
nextTop = Math.floor(
document.querySelectorAll("#words .word")[currentWordElementIndex]
.offsetTop
);
} catch (e) {
nextTop = 0;
}
if ((nextTop > currentTop || activeWordJumped) && !lineTransition) {
//last word of the line
if (currentTestLine > 0) {
let hideBound = currentTop;
if (activeWordJumped) {
hideBound = activeWordTopBeforeJump;
}
activeWordJumped = false;
let toHide = [];
let wordElements = $("#words .word");
for (let i = 0; i < currentWordElementIndex; i++) {
if ($(wordElements[i]).hasClass("hidden")) continue;
let forWordTop = Math.floor(wordElements[i].offsetTop);
if (forWordTop < hideBound - 10) {
toHide.push($($("#words .word")[i]));
}
}
const wordHeight = $(document.querySelector(".word")).outerHeight(
true
);
if (config.smoothLineScroll && toHide.length > 0) {
lineTransition = true;
$("#words").prepend(
`<div class="smoothScroller" style="position: fixed;height:${wordHeight}px;width:100%"></div>`
);
$("#words .smoothScroller").animate(
{
height: 0,
},
125,
() => {
$("#words .smoothScroller").remove();
}
);
$("#paceCaret").animate(
{
top:
document.querySelector("#paceCaret").offsetTop - wordHeight,
},
125
);
$("#words").animate(
{
marginTop: `-${wordHeight}px`,
},
125,
() => {
activeWordTop = document.querySelector("#words .active")
.offsetTop;
currentWordElementIndex -= toHide.length;
lineTransition = false;
toHide.forEach((el) => el.remove());
$("#words").css("marginTop", "0");
}
);
} else {
toHide.forEach((el) => el.remove());
currentWordElementIndex -= toHide.length;
$("#paceCaret").css({
top:
document.querySelector("#paceCaret").offsetTop - wordHeight,
});
}
}
currentTestLine++;
}
} //end of line wrap
updateCaretPosition();
if (config.keymapMode === "react") {
flashPressedKeymapKey(event.code, true);
} else if (config.keymapMode === "next") {
@ -4679,6 +4732,17 @@ $(document).keydown(function (event) {
activeWordTopBeforeJump = activeWordTop;
compareInput(!config.blindMode);
if (
activeFunBox === "no_space" &&
currentInput.length === wordsList[currentWordIndex].length
) {
jQuery.event.trigger({
type: "keydown",
which: " ".charCodeAt(0),
key: " ",
});
}
let newActiveTop = document.querySelector("#words .word.active").offsetTop;
if (activeWordTopBeforeJump < newActiveTop && !lineTransition) {
activeWordJumped = true;

View file

@ -1867,6 +1867,12 @@ key {
margin: 0.75rem;
}
#words.nospace {
.word {
margin: 0.5rem 0;
}
}
.word.error {
/* margin-bottom: 1px; */
border-bottom: 2px solid var(--error-color);

View file

@ -83,5 +83,10 @@
"name": "memory",
"type": "script",
"info": "Test your memory. Remember the words and type them blind."
},
{
"name": "no_space",
"type": "script",
"info": "Whoneedsspacesanyway?"
}
]

View file

@ -3491,8 +3491,6 @@
<script src="js/jquery.color.min.js"></script>
<script src="js/easing.js"></script>
<script src="js/jquery.cookie-1.4.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/jquery.gsap.min.js"></script>
<script src="js/moment.min.js"></script>
<script src="js/html2canvas.min.js"></script>
<script src="js/monkeytype.js"></script>

View file

@ -0,0 +1,335 @@
{
"name": "code_html",
"leftToRight": true,
"words": [
"action",
"alt",
"class",
"fill",
"for",
"height",
"href",
"href",
"href",
"href",
"id",
"kind",
"max",
"media",
"method",
"min",
"name",
"src",
"src",
"src",
"srclang",
"srcset",
"stroke",
"stroke-width",
"style",
"stylesheet",
"stylesheet",
"title",
"type",
"type",
"value",
"width",
"<!DOCTYPE",
"<!--",
"-->",
"<a",
"</a>",
"<a",
"</a>",
"<a",
"</a>",
"<a",
"</a>",
"<abbr",
"</abbr>",
"<address>",
"</address>",
"<area",
"<article>",
"</article>",
"<aside>",
"</aside>",
"<audio",
"</audio>",
"<b>",
"</b>",
"<b>",
"</b>",
"<b>",
"</b>",
"<b>",
"</b>",
"<base",
"<bdi>",
"</bdi>",
"<bdo",
"</bdo>",
"<blockquote",
"</blockquote>",
"<body>",
"</body>",
"<body>",
"</body>",
"<body>",
"</body>",
"<body>",
"</body>",
"<br>",
"<br>",
"<br>",
"<br>",
"<button",
"</button>",
"<canvas",
"</canvas>",
"<caption>",
"</caption>",
"<cite>",
"</cite>",
"<code>",
"</code>",
"<colgroup>",
"<col",
"</colgroup>",
"<data",
"</data>",
"<datalist",
"</datalist>",
"<dd>",
"</dd>",
"<dl>",
"</dl>",
"<del>",
"</del>",
"<details>",
"</details>",
"<dfn",
"</dfn>",
"<dialog",
"</dialog>",
"<div",
"</div>",
"<div",
"</div>",
"<div",
"</div>",
"<div",
"</div>",
"<dt>",
"</dt>",
"<em>",
"</em>",
"<embed",
"<fieldset>",
"</fieldset>",
"<figcaption>",
"</figcaption>",
"<figure>",
"</figure>",
"<form",
"</form>",
"<footer>",
"</footer>",
"<label",
"</label>",
"<header>",
"</header>",
"<head>",
"</head>",
"<head>",
"</head>",
"<head>",
"</head>",
"<head>",
"</head>",
"<html",
"</html>",
"<html",
"</html>",
"<html",
"</html>",
"<html",
"</html>",
"<hr>",
"<h1>",
"</h1>",
"<h2>",
"</h2>",
"<h3>",
"</h3>",
"<h4>",
"</h4>",
"<h5>",
"</h5>",
"<h6>",
"</h6>",
"<i>",
"</i>",
"<i>",
"</i>",
"<i>",
"</i>",
"<iframe",
"</iframe>",
"<img",
"<img",
"<img",
"<img",
"<input",
"<ins>",
"</ins>",
"<kbd>",
"</kbd>",
"<legend>",
"</legend>",
"<li>",
"</li>",
"<li>",
"</li>",
"<li>",
"</li>",
"<li>",
"</li>",
"<link",
"<link",
"<main>",
"</main>",
"<map",
"</map>",
"<mark>",
"</mark>",
"<meta",
"<meter",
"</meter>",
"<nav>",
"</nav>",
"<noscript>",
"</noscript>",
"<object",
"</object>",
"<ol>",
"</ol>",
"<ol>",
"</ol>",
"<ol>",
"</ol>",
"<ol>",
"</ol>",
"<optgroup",
"</optgroup>",
"<option",
"</option>",
"<output",
"</output>",
"<p>",
"</p>",
"<p>",
"</p>",
"<p>",
"</p>",
"<p>",
"</p>",
"<p>",
"</p>",
"<p>",
"</p>",
"<param",
"<picture>",
"</picture>",
"<pre>",
"</pre>",
"<progress",
"</progress>",
"<q>",
"</q>",
"<rp>",
"</rp>",
"<ruby>",
"</ruby>",
"<rt>",
"</rt>",
"<s>",
"</s>",
"<samp>",
"</samp>",
"<script>",
"</script>",
"<script>",
"</script>",
"<section>",
"</section>",
"<select",
"</select>",
"<source",
"<span",
"</span>",
"<span",
"</span>",
"<span",
"</span>",
"<span",
"</span>",
"<strong>",
"<strong>",
"<strong>",
"<strong>",
"</strong>",
"<style",
"<style>",
"<style",
"<style>",
"<sub>",
"</sub>",
"<summary>",
"</summary>",
"<sup>",
"</sup>",
"<svg",
"</svg>",
"<table>",
"</table>",
"<tbody>",
"</tbody>",
"<td>",
"</td>",
"<template>",
"</template>",
"<textarea",
"</textarea>",
"<tfoot>",
"</tfoot>",
"<thead>",
"</thead>",
"<th>",
"</th>",
"<time",
"<time>",
"</time>",
"<title>",
"</title>",
"<title>",
"</title>",
"<track",
"<u>",
"</u>",
"<ul>",
"</ul>",
"<ul>",
"</ul>",
"<ul>",
"</ul>",
"<ul>",
"</ul>",
"<var>",
"</var>",
"<video",
"</video>",
"<wbr>",
"</wbr>"
]
}

View file

@ -0,0 +1,206 @@
{
"name": "filipino",
"leftToRight": true,
"words": [
"sa",
"na",
"ang",
"ng",
"mga",
"ko",
"ay",
"ako",
"lang",
"hindi",
"pa",
"mo",
"may",
"kung",
"ni",
"naman",
"si",
"ka",
"ito",
"ung",
"para",
"isa",
"nga",
"ba",
"pero",
"siya",
"niya",
"din",
"kaya",
"o",
"kasi",
"dahil",
"wala",
"nang",
"lahat",
"nila",
"sila",
"kami",
"talaga",
"ngayon",
"ano",
"alam",
"po",
"eh",
"iyon",
"kahit",
"dito",
"namin",
"kaniya",
"tao",
"kay",
"kayo",
"daw",
"pag",
"akin",
"sana",
"natin",
"buhay",
"nung",
"iyan",
"tayo",
"bakit",
"sabi",
"gusto",
"dapat",
"pala",
"tapos",
"mas",
"lamang",
"iba",
"kanila",
"upang",
"araw",
"atin",
"nasa",
"nito",
"mula",
"anak",
"nyo",
"noong",
"maging",
"doon",
"diyos",
"kapag",
"hanggang",
"baka",
"bagay",
"ikaw",
"kasama",
"taon",
"mahal",
"kita",
"ninyo",
"ha",
"ngunit",
"marami",
"bahay",
"nyan",
"bilang",
"siguro",
"kailangan",
"sarili",
"bago",
"sino",
"saan",
"habang",
"minsan",
"pinoy",
"inyo",
"loob",
"basta",
"muna",
"ilan",
"bansa",
"panahon",
"meron",
"ayaw",
"babae",
"ano",
"dating",
"buong",
"iyo",
"lalo",
"bayan",
"ulit",
"sobra",
"oo",
"mag",
"wag",
"tungkol",
"tama",
"galing",
"pwede",
"noon",
"tulad",
"medyo",
"kaibigan",
"bata",
"dalawa",
"kundi",
"ayon",
"paano",
"oras",
"nag",
"puso",
"maganda",
"bawat",
"masaya",
"una",
"salamat",
"kapatid",
"ama",
"pati",
"pamamagitan",
"totoo",
"tunay",
"amin",
"sapagkat",
"lagi",
"lalaki",
"gawa",
"kanina",
"ganun",
"pagkatapos",
"irap",
"problema",
"pangalan",
"ewan",
"mundo",
"grabe",
"dati",
"tuloy",
"mahirap",
"pangyayari",
"panginoon",
"trabaho",
"gabi",
"kaso",
"eto",
"buti",
"pag-ibig",
"tanong",
"halos",
"dami",
"kuya",
"sina",
"daan",
"ganito",
"sige",
"lugar",
"syempre",
"lang",
"asawa",
"laban",
"bukas",
"kahapon",
"yata",
"akala",
"gaya",
"hirap"
]
}

215
static/languages/greek.json Normal file
View file

@ -0,0 +1,215 @@
{
"name": "greek",
"leftToRight": true,
"words": [
"άρθρο",
"στέψη",
"βασικό",
"εγώ",
"εβδομάδα",
"αστείο",
"διάφορα",
"πηγαίνω",
"άσχημος",
"εταιρεία",
"νύχτα",
"λουλούδι",
"εφεύρεση",
"κρεβάτι",
"γελάω",
"ζωή",
"νόστιμο",
"μπορώ",
"έχει",
"βουνό",
"διαγωνισμός",
"ειδικό",
"μηχανικός",
"τηλεόραση",
"κάθε",
"πλύση",
"μαύρο",
"όχι",
"υπάρχω",
"γιορτή",
"άγριο",
"εικόνα",
"μητέρα",
"πρόβατο",
"κόκκινο",
"στέγη",
"μυστήριο",
"ψάρι",
"μπορεί",
"ποδήλατο",
"έργο",
"ελπίδα",
"πρέπει",
"αδερφός",
"κακός",
"όμορφος",
"πατέρας",
"αρχαίο",
"τρία",
"λάμπα",
"ιστορία",
"χθές",
"θα",
"πτήση",
"ώρα",
"βλέπω",
"τον",
"ψηφιακός",
"φως",
"πρώτο",
"χειμώνας",
"πρωί",
"αυτή",
"κεφάλι",
"άρωμα",
"πιάτο",
"τραγούδι",
"κάνω",
"αστυνόμος",
"πριν",
"γρήγορα",
"κλήση",
"ύπαρξη",
"πράξη",
"άνοιξη",
"κόρη",
"ομιλία",
"ομάδα",
"ένα",
"δευτερόλεπτο",
"φθινόπωρο",
"εκείνη",
"υπάρχεις",
"την",
"χτίσιμο",
"η",
"λαιμός",
"καληνύχτα",
"καλός",
"ζυμαρικά",
"οργανισμός",
"φώκια",
"κύριο",
"στήθος",
"νερό",
"βαρετό",
"χοιρινό",
"χώρα",
"ταξίδι",
"έχω",
"πολυθρόνα",
"θάλασσα",
"φτιάχνω",
"σήμερα",
"κοτόπουλο",
"δίσκος",
"μακριά",
"εμπειρία",
"σώμα",
"επιτυχία",
"γεύση",
"σπουδές",
"θέλεις",
"υγεία",
"γιος",
"ήταν",
"στομάχι",
"όταν",
"καλημέρα",
"επιστήμη",
"δύο",
"τελευταίο",
"κοινότητα",
"χέρι",
"καπέλο",
"εκείνο",
"φρούτο",
"αγρότης",
"ναι",
"τυρί",
"εκείνος",
"βέλος",
"μήνας",
"πάγος",
"θέλω",
"δάκτυλο",
"κλειστό",
"αργά",
"αυτός",
"ορειβασία",
"γεια",
"αέρας",
"είσαι",
"φορητό",
"διεθνής",
"μάγειρας",
"φτάνω",
"αύριο",
"κάνει",
"καταγραφικό",
"όξινο",
"ψυχή",
"φιλικό",
"μονοπάτι",
"μαχαίρι",
"σκοτώνω",
"βράδυ",
"χρήσιμο",
"καρέκλα",
"άστρο",
"έτος",
"εποχή",
"έπιπλο",
"μεσημέρι",
"κινητό",
"διδάσκω",
"χημικό",
"πόλη",
"πέψη",
"του",
"αγάπη",
"ευχαριστώ",
"καλησπέρα",
"πωλητής",
"οδηγός",
"αρνί",
"πλοίο",
"ευτυχία",
"εγγραφή",
"ξενώνας",
"νησί",
"κωμωδία",
"βρίσκομαι",
"πλάτη",
"υπάλληλος",
"θάνατος",
"τραγωδία",
"αιώνια",
"αυτό",
"πρωταθλητής",
"χρησιμοποιώ",
"λίγο",
"διάστημα",
"κάνουμε",
"φόρεμα",
"ζωγραφιά",
"πίνω",
"ξεκούραση",
"ανακάλυψη",
"πόδι",
"παιδί",
"λεπτό",
"είμαι",
"ποιότητα",
"επιπλέον",
"καλοκαίρι",
"ποδόσφαιρο",
"φριχτό",
"ήλιος"
]
}

File diff suppressed because it is too large Load diff

View file

@ -7,18 +7,23 @@
,"french"
,"arabic"
,"mongolian"
,"mongolian_10k"
,"russian"
,"russian_1k"
,"russian_10k"
,"portuguese"
,"indonesian"
,"german"
,"greek"
,"turkish"
,"italian"
,"italian_1k"
,"thai"
,"polish"
,"czech"
,"slovak"
,"dutch"
,"filipino"
,"danish"
,"danish_1k"
,"danish_10k"
@ -39,4 +44,5 @@
,"code_python"
,"code_c"
,"code_javascript"
]
,"code_html"
]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -77,7 +77,7 @@
"yeni",
"önce",
"başka",
"hâl",
"hal",
"orta",
"su",
"girmek",

View file

@ -136,7 +136,7 @@
<ul>
<li>
The right to access You have the right to request Monkeytype for
copies of your personal data. We may limit the amount of times this
copies of your personal data. We may limit the number of times this
request can be made to depending on the size of the request.
</li>
<li>

View file

@ -2,7 +2,7 @@
--bg-color: #000000;
--main-color: #15ff00;
--caret-color: #15ff00;
--sub-color: #032700;
--sub-color: #003B00;
--text-color: #adffa7;
--error-color: #da3333;
--error-extra-color: #791717;