mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-10-08 22:50:00 +08:00
Merge branch 'master' of https://github.com/Miodec/monkeytype
This commit is contained in:
commit
f558853b37
16 changed files with 1977 additions and 80 deletions
5
.firebaserc_example
Normal file
5
.firebaserc_example
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"projects": {
|
||||
"default": "your-firebase-project-id"
|
||||
}
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
1. [Install the Firebase CLI](https://firebase.google.com/docs/cli)
|
||||
1. Run `firebase login` on your terminal to log in to the same google account as you just used to create the project.
|
||||
1. Git clone this project.
|
||||
1. Rename `.firebaserc_example` to `.firebaserc` and change the project name of default to the firebase project id you just created.
|
||||
1. Duplicate `.firebaserc_example`, rename the new file to `.firebaserc` and change the project name of default to the firebase project id you just created.
|
||||
|
||||
- If `.firebaserc_example` does not exist after cloning, create your own with:
|
||||
|
||||
|
@ -48,7 +48,6 @@
|
|||
- Start in test mode
|
||||
- Select default location and enable
|
||||
|
||||
|
||||
## Building and Running
|
||||
|
||||
1. Run `npm install` in the project root directory to install dependencies.
|
||||
|
|
|
@ -22,14 +22,14 @@ function canBailOut() {
|
|||
return (
|
||||
(Config.mode === "custom" &&
|
||||
CustomText.isWordRandom &&
|
||||
CustomText.word >= 5000) ||
|
||||
(CustomText.word >= 5000 || CustomText.word == 0)) ||
|
||||
(Config.mode === "custom" &&
|
||||
!CustomText.isWordRandom &&
|
||||
!CustomText.isTimeRandom &&
|
||||
CustomText.text.length >= 5000) ||
|
||||
(Config.mode === "custom" &&
|
||||
CustomText.isTimeRandom &&
|
||||
CustomText.time >= 3600) ||
|
||||
(CustomText.time >= 3600 || CustomText.time == 0)) ||
|
||||
(Config.mode === "words" && Config.words >= 5000) ||
|
||||
Config.words === 0 ||
|
||||
(Config.mode === "time" && (Config.time >= 3600 || Config.time === 0)) ||
|
||||
|
@ -54,7 +54,8 @@ if (Object.keys(layouts).length > 0) {
|
|||
id: "changeLayout" + Misc.capitalizeFirstLetter(layout),
|
||||
display: layout.replace(/_/g, " "),
|
||||
exec: () => {
|
||||
UpdateConfig.setSavedLayout(layout);
|
||||
// UpdateConfig.setSavedLayout(layout);
|
||||
UpdateConfig.setLayout(layout);
|
||||
TestLogic.restart();
|
||||
},
|
||||
});
|
||||
|
@ -647,6 +648,33 @@ let commandsKeymapStyle = {
|
|||
],
|
||||
};
|
||||
|
||||
let commandsKeymapLegendStyle = {
|
||||
title: "Change keymap legend style...",
|
||||
list: [
|
||||
{
|
||||
id: "setKeymapLegendStyleLowercase",
|
||||
display: "lowercase",
|
||||
exec: () => {
|
||||
UpdateConfig.setKeymapLegendStyle("lowercase");
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "setKeymapLegendStyleUppercase",
|
||||
display: "uppercase",
|
||||
exec: () => {
|
||||
UpdateConfig.setKeymapLegendStyle("uppercase");
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "setKeymapLegendStyleBlank",
|
||||
display: "blank",
|
||||
exec: () => {
|
||||
UpdateConfig.setKeymapLegendStyle("blank");
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
let commandsHighlightMode = {
|
||||
title: "Change highlight mode...",
|
||||
list: [
|
||||
|
@ -1678,6 +1706,16 @@ export let defaultCommands = {
|
|||
Commandline.show();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "changeKeymapLegendStyle",
|
||||
display: "Change keymap legend style...",
|
||||
alias: "keyboard",
|
||||
subgroup: true,
|
||||
exec: () => {
|
||||
current.push(commandsKeymapLegendStyle);
|
||||
Commandline.show();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "changeKeymapLayout",
|
||||
display: "Change keymap layout...",
|
||||
|
|
|
@ -86,6 +86,7 @@ let defaultConfig = {
|
|||
showAllLines: false,
|
||||
keymapMode: "off",
|
||||
keymapStyle: "staggered",
|
||||
keymapLegendStyle: "lowercase",
|
||||
keymapLayout: "qwerty",
|
||||
fontFamily: "Roboto_Mono",
|
||||
smoothLineScroll: false,
|
||||
|
@ -477,10 +478,12 @@ export function setPaceCaret(val, nosave) {
|
|||
if (val == undefined) {
|
||||
val = "off";
|
||||
}
|
||||
// if (val == "pb" && firebase.auth().currentUser === null) {
|
||||
// Notifications.add("PB pace caret is unavailable without an account", 0);
|
||||
// return;
|
||||
// }
|
||||
if (document.readyState === "complete") {
|
||||
if (val == "pb" && firebase.auth().currentUser === null) {
|
||||
Notifications.add("PB pace caret is unavailable without an account", 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// if (config.mode === "zen" && val != "off") {
|
||||
// Notifications.add(`Can't use pace caret with zen mode.`, 0);
|
||||
// val = "off";
|
||||
|
@ -1264,22 +1267,41 @@ export function setKeymapMode(mode, nosave) {
|
|||
if (!nosave) saveToCookie();
|
||||
}
|
||||
|
||||
export function setKeymapLegendStyle(style, nosave) {
|
||||
// Remove existing styles
|
||||
const keymapLegendStyles = ["lowercase", "uppercase", "blank"];
|
||||
keymapLegendStyles.forEach((name) => {
|
||||
$(".keymapLegendStyle").removeClass(name);
|
||||
});
|
||||
|
||||
style = style || "lowercase";
|
||||
|
||||
// Mutate the keymap in the DOM, if it exists.
|
||||
// 1. Remove everything
|
||||
$(".keymap-key > .letter").css("display", "");
|
||||
$(".keymap-key > .letter").css("text-transform", "");
|
||||
|
||||
// 2. Append special styles onto the DOM elements
|
||||
if (style === "uppercase") {
|
||||
$(".keymap-key > .letter").css("text-transform", "capitalize");
|
||||
}
|
||||
if (style === "blank") {
|
||||
$(".keymap-key > .letter").css("display", "none");
|
||||
}
|
||||
|
||||
// Update and save to cookie for persistence
|
||||
$(".keymapLegendStyle").addClass(style);
|
||||
config.keymapLegendStyle = style;
|
||||
if (!nosave) saveToCookie();
|
||||
}
|
||||
|
||||
export function setKeymapStyle(style, nosave) {
|
||||
$(".keymap").removeClass("matrix");
|
||||
$(".keymap").removeClass("split");
|
||||
$(".keymap").removeClass("split_matrix");
|
||||
style = style || "staggered";
|
||||
|
||||
if (style == null || style == undefined) {
|
||||
style = "staggered";
|
||||
}
|
||||
|
||||
if (style === "matrix") {
|
||||
$(".keymap").addClass("matrix");
|
||||
} else if (style === "split") {
|
||||
$(".keymap").addClass("split");
|
||||
} else if (style === "split_matrix") {
|
||||
$(".keymap").addClass("split_matrix");
|
||||
}
|
||||
$(".keymap").addClass(style);
|
||||
config.keymapStyle = style;
|
||||
if (!nosave) saveToCookie();
|
||||
}
|
||||
|
@ -1305,13 +1327,13 @@ export function setLayout(layout, nosave) {
|
|||
if (!nosave) saveToCookie();
|
||||
}
|
||||
|
||||
export function setSavedLayout(layout, nosave) {
|
||||
if (layout == null || layout == undefined) {
|
||||
layout = "qwerty";
|
||||
}
|
||||
config.savedLayout = layout;
|
||||
setLayout(layout, nosave);
|
||||
}
|
||||
// export function setSavedLayout(layout, nosave) {
|
||||
// if (layout == null || layout == undefined) {
|
||||
// layout = "qwerty";
|
||||
// }
|
||||
// config.savedLayout = layout;
|
||||
// setLayout(layout, nosave);
|
||||
// }
|
||||
|
||||
export function setFontSize(fontSize, nosave) {
|
||||
if (fontSize == null || fontSize == undefined) {
|
||||
|
@ -1414,7 +1436,8 @@ export function apply(configObj) {
|
|||
setWordCount(configObj.words, true);
|
||||
setLanguage(configObj.language, true);
|
||||
setCapsLockBackspace(configObj.capsLockBackspace, true);
|
||||
setSavedLayout(configObj.savedLayout, true);
|
||||
// setSavedLayout(configObj.savedLayout, true);
|
||||
setLayout(configObj.layout, true);
|
||||
setFontSize(configObj.fontSize, true);
|
||||
setFreedomMode(configObj.freedomMode, true);
|
||||
setCaretStyle(configObj.caretStyle, true);
|
||||
|
@ -1431,6 +1454,7 @@ export function apply(configObj) {
|
|||
setTimerOpacity(configObj.timerOpacity, true);
|
||||
setKeymapMode(configObj.keymapMode, true);
|
||||
setKeymapStyle(configObj.keymapStyle, true);
|
||||
setKeymapLegendStyle(configObj.keymapLegendStyle, true);
|
||||
setKeymapLayout(configObj.keymapLayout, true);
|
||||
setFontFamily(configObj.fontFamily, true);
|
||||
setSmoothCaret(configObj.smoothCaret, true);
|
||||
|
|
|
@ -52,6 +52,30 @@ function syncSliders() {
|
|||
);
|
||||
}
|
||||
|
||||
function updateNumbers() {
|
||||
$(".section.customBackgroundFilter .blur .value").html(
|
||||
parseFloat(filters.blur.value).toFixed(1)
|
||||
);
|
||||
$(".section.customBackgroundFilter .brightness .value").html(
|
||||
parseFloat(filters.brightness.value).toFixed(1)
|
||||
);
|
||||
$(".section.customBackgroundFilter .saturate .value").html(
|
||||
parseFloat(filters.saturate.value).toFixed(1)
|
||||
);
|
||||
$(".section.customBackgroundFilter .opacity .value").html(
|
||||
parseFloat(filters.opacity.value).toFixed(1)
|
||||
);
|
||||
}
|
||||
|
||||
export function loadConfig(config) {
|
||||
filters.blur.value = config[0];
|
||||
filters.brightness.value = config[1];
|
||||
filters.saturate.value = config[2];
|
||||
filters.opacity.value = config[3];
|
||||
updateNumbers();
|
||||
syncSliders();
|
||||
}
|
||||
|
||||
$(".section.customBackgroundFilter .blur input").on("input", (e) => {
|
||||
filters["blur"].value = $(
|
||||
".section.customBackgroundFilter .blur input"
|
||||
|
@ -92,27 +116,3 @@ $(".section.customBackgroundFilter .save.button").click((e) => {
|
|||
UpdateConfig.setCustomBackgroundFilter(arr, false);
|
||||
Notifications.add("Custom background filters saved", 1);
|
||||
});
|
||||
|
||||
export function loadConfig(config) {
|
||||
filters.blur.value = config[0];
|
||||
filters.brightness.value = config[1];
|
||||
filters.saturate.value = config[2];
|
||||
filters.opacity.value = config[3];
|
||||
updateNumbers();
|
||||
syncSliders();
|
||||
}
|
||||
|
||||
function updateNumbers() {
|
||||
$(".section.customBackgroundFilter .blur .value").html(
|
||||
parseFloat(filters.blur.value).toFixed(1)
|
||||
);
|
||||
$(".section.customBackgroundFilter .brightness .value").html(
|
||||
parseFloat(filters.brightness.value).toFixed(1)
|
||||
);
|
||||
$(".section.customBackgroundFilter .saturate .value").html(
|
||||
parseFloat(filters.saturate.value).toFixed(1)
|
||||
);
|
||||
$(".section.customBackgroundFilter .opacity .value").html(
|
||||
parseFloat(filters.opacity.value).toFixed(1)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -51,9 +51,11 @@ async function initGroups() {
|
|||
if (Config.keymapMode === "off") {
|
||||
$(".pageSettings .section.keymapStyle").addClass("hidden");
|
||||
$(".pageSettings .section.keymapLayout").addClass("hidden");
|
||||
$(".pageSettings .section.keymapLegendStyle").addClass("hidden");
|
||||
} else {
|
||||
$(".pageSettings .section.keymapStyle").removeClass("hidden");
|
||||
$(".pageSettings .section.keymapLayout").removeClass("hidden");
|
||||
$(".pageSettings .section.keymapLegendStyle").removeClass("hidden");
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@ -65,6 +67,10 @@ async function initGroups() {
|
|||
"keymapLayout",
|
||||
UpdateConfig.setKeymapLayout
|
||||
);
|
||||
groups.keymapLegendStyle = new SettingsGroup(
|
||||
"keymapLegendStyle",
|
||||
UpdateConfig.setKeymapLegendStyle
|
||||
);
|
||||
groups.showKeyTips = new SettingsGroup(
|
||||
"showKeyTips",
|
||||
UpdateConfig.setKeyTips,
|
||||
|
@ -213,7 +219,7 @@ async function initGroups() {
|
|||
"capsLockBackspace",
|
||||
UpdateConfig.setCapsLockBackspace
|
||||
);
|
||||
groups.layout = new SettingsGroup("layout", UpdateConfig.setSavedLayout);
|
||||
groups.layout = new SettingsGroup("layout", UpdateConfig.layout);
|
||||
groups.language = new SettingsGroup("language", UpdateConfig.setLanguage);
|
||||
groups.fontSize = new SettingsGroup("fontSize", UpdateConfig.setFontSize);
|
||||
groups.pageWidth = new SettingsGroup("pageWidth", UpdateConfig.setPageWidth);
|
||||
|
@ -578,7 +584,9 @@ $(
|
|||
".pageSettings .section.discordIntegration .buttons .generateCodeButton"
|
||||
).click((e) => {
|
||||
Loader.show();
|
||||
CloudFunctions.generatePairingCode({ uid: firebase.auth().currentUser.uid })
|
||||
CloudFunctions.generatePairingCode({
|
||||
uid: firebase.auth().currentUser.uid,
|
||||
})
|
||||
.then((ret) => {
|
||||
Loader.hide();
|
||||
if (ret.data.status === 1 || ret.data.status === 2) {
|
||||
|
@ -715,7 +723,9 @@ $(".pageSettings .sectionGroupTitle").click((e) => {
|
|||
{
|
||||
duration: 250,
|
||||
step: function (now) {
|
||||
$(this).css({ transform: "rotate(" + now + "deg)" });
|
||||
$(this).css({
|
||||
transform: "rotate(" + now + "deg)",
|
||||
});
|
||||
},
|
||||
}
|
||||
);
|
||||
|
@ -729,7 +739,9 @@ $(".pageSettings .sectionGroupTitle").click((e) => {
|
|||
{
|
||||
duration: 250,
|
||||
step: function (now) {
|
||||
$(this).css({ transform: "rotate(" + now + "deg)" });
|
||||
$(this).css({
|
||||
transform: "rotate(" + now + "deg)",
|
||||
});
|
||||
},
|
||||
}
|
||||
);
|
||||
|
|
|
@ -9,11 +9,7 @@ export default class SettingsGroup {
|
|||
) {
|
||||
this.configName = configName;
|
||||
this.configValue = Config[configName];
|
||||
if (this.configValue === true || this.configValue === false) {
|
||||
this.onOff = true;
|
||||
} else {
|
||||
this.onOff = false;
|
||||
}
|
||||
this.onOff = typeof this.configValue === "boolean";
|
||||
this.toggleFunction = toggleFunction;
|
||||
this.setCallback = setCallback;
|
||||
this.updateCallback = updateCallback;
|
||||
|
@ -36,8 +32,8 @@ export default class SettingsGroup {
|
|||
this.updateButton();
|
||||
if (this.setCallback !== null) this.setCallback();
|
||||
} else {
|
||||
let value = target.attr(configName);
|
||||
let params = target.attr("params");
|
||||
const value = target.attr(configName);
|
||||
const params = target.attr("params");
|
||||
this.setValue(value, params);
|
||||
}
|
||||
}
|
||||
|
@ -60,14 +56,9 @@ export default class SettingsGroup {
|
|||
"active"
|
||||
);
|
||||
if (this.onOff) {
|
||||
let onoffstring;
|
||||
if (this.configValue) {
|
||||
onoffstring = "on";
|
||||
} else {
|
||||
onoffstring = "off";
|
||||
}
|
||||
const onOffString = this.configValue ? "on" : "off";
|
||||
$(
|
||||
`.pageSettings .section.${this.configName} .buttons .button.${onoffstring}`
|
||||
`.pageSettings .section.${this.configName} .buttons .button.${onOffString}`
|
||||
).addClass("active");
|
||||
} else {
|
||||
$(
|
||||
|
|
|
@ -217,7 +217,7 @@ $(".pageSettings .saveCustomThemeButton").click((e) => {
|
|||
);
|
||||
UpdateConfig.setCustomThemeColors(save);
|
||||
ThemeController.set("custom");
|
||||
Notifications.add("Custom theme colors saved", 0);
|
||||
Notifications.add("Custom theme colors saved", 1);
|
||||
});
|
||||
|
||||
$(".pageSettings #loadCustomColorsFromPreset").click((e) => {
|
||||
|
|
|
@ -12,6 +12,24 @@ export let modeSaved = null;
|
|||
let memoryTimer = null;
|
||||
let memoryInterval = null;
|
||||
|
||||
let settingsMemory = {};
|
||||
|
||||
function rememberSetting(settingName, value, setFunction) {
|
||||
settingsMemory[settingName] ??= {
|
||||
value,
|
||||
setFunction,
|
||||
};
|
||||
}
|
||||
|
||||
function loadMemory() {
|
||||
Notifications.add("Reverting funbox settings", 0);
|
||||
Object.keys(settingsMemory).forEach((setting) => {
|
||||
setting = settingsMemory[setting];
|
||||
setting.setFunction(setting.value, true);
|
||||
});
|
||||
settingsMemory = {};
|
||||
}
|
||||
|
||||
function showMemoryTimer() {
|
||||
$("#typingTest #memoryTimer").stop(true, true).animate(
|
||||
{
|
||||
|
@ -112,6 +130,11 @@ export async function activate(funbox, mode) {
|
|||
}
|
||||
|
||||
if (funbox === "simon_says") {
|
||||
rememberSetting(
|
||||
"keymapMode",
|
||||
Config.keymapMode,
|
||||
UpdateConfig.setKeymapMode
|
||||
);
|
||||
UpdateConfig.setKeymapMode("next");
|
||||
Settings.groups.keymapMode.updateButton();
|
||||
TestLogic.restart();
|
||||
|
@ -122,45 +145,82 @@ export async function activate(funbox, mode) {
|
|||
funbox === "read_ahead_easy" ||
|
||||
funbox === "read_ahead_hard"
|
||||
) {
|
||||
rememberSetting(
|
||||
"highlightMode",
|
||||
Config.highlightMode,
|
||||
UpdateConfig.setHighlightMode
|
||||
);
|
||||
UpdateConfig.setHighlightMode("letter", true);
|
||||
TestLogic.restart();
|
||||
}
|
||||
} else if (mode === "script") {
|
||||
if (funbox === "tts") {
|
||||
$("#funBoxTheme").attr("href", `funbox/simon_says.css`);
|
||||
rememberSetting(
|
||||
"keymapMode",
|
||||
Config.keymapMode,
|
||||
UpdateConfig.setKeymapMode
|
||||
);
|
||||
UpdateConfig.setKeymapMode("off");
|
||||
Settings.groups.keymapMode.updateButton();
|
||||
TestLogic.restart();
|
||||
} else if (funbox === "layoutfluid") {
|
||||
rememberSetting(
|
||||
"keymapMode",
|
||||
Config.keymapMode,
|
||||
UpdateConfig.setKeymapMode
|
||||
);
|
||||
UpdateConfig.setKeymapMode("next");
|
||||
Settings.groups.keymapMode.updateButton();
|
||||
UpdateConfig.setSavedLayout(Config.layout);
|
||||
// UpdateConfig.setSavedLayout(Config.layout);
|
||||
rememberSetting("layout", Config.layout, UpdateConfig.setLayout);
|
||||
UpdateConfig.setLayout("qwerty");
|
||||
Settings.groups.layout.updateButton();
|
||||
rememberSetting(
|
||||
"keymapLayout",
|
||||
Config.keymapLayout,
|
||||
UpdateConfig.setKeymapLayout
|
||||
);
|
||||
UpdateConfig.setKeymapLayout("qwerty");
|
||||
Settings.groups.keymapLayout.updateButton();
|
||||
TestLogic.restart();
|
||||
} else if (funbox === "memory") {
|
||||
rememberSetting("mode", Config.mode, UpdateConfig.setMode);
|
||||
UpdateConfig.setMode("words");
|
||||
rememberSetting(
|
||||
"showAllLines",
|
||||
Config.showAllLines,
|
||||
UpdateConfig.setShowAllLines
|
||||
);
|
||||
UpdateConfig.setShowAllLines(true, true);
|
||||
TestLogic.restart(false, true);
|
||||
if (Config.keymapMode === "next") {
|
||||
rememberSetting(
|
||||
"keymapMode",
|
||||
Config.keymapMode,
|
||||
UpdateConfig.setKeymapMode
|
||||
);
|
||||
UpdateConfig.setKeymapMode("react");
|
||||
}
|
||||
} else if (funbox === "nospace") {
|
||||
$("#words").addClass("nospace");
|
||||
rememberSetting(
|
||||
"highlightMode",
|
||||
Config.highlightMode,
|
||||
UpdateConfig.setHighlightMode
|
||||
);
|
||||
UpdateConfig.setHighlightMode("letter", true);
|
||||
TestLogic.restart(false, true);
|
||||
}
|
||||
active = funbox;
|
||||
}
|
||||
|
||||
if (funbox !== "layoutfluid" || mode !== "script") {
|
||||
if (Config.layout !== Config.savedLayout) {
|
||||
UpdateConfig.setLayout(Config.savedLayout);
|
||||
Settings.groups.layout.updateButton();
|
||||
}
|
||||
}
|
||||
// if (funbox !== "layoutfluid" || mode !== "script") {
|
||||
// if (Config.layout !== Config.savedLayout) {
|
||||
// UpdateConfig.setLayout(Config.savedLayout);
|
||||
// Settings.groups.layout.updateButton();
|
||||
// }
|
||||
// }
|
||||
TestUI.updateModesNotice();
|
||||
return true;
|
||||
}
|
||||
|
@ -172,6 +232,7 @@ export function setFunbox(funbox, mode) {
|
|||
);
|
||||
return false;
|
||||
}
|
||||
if (funbox === "none") loadMemory();
|
||||
funboxSaved = funbox;
|
||||
modeSaved = mode;
|
||||
active = funbox;
|
||||
|
|
|
@ -1652,7 +1652,7 @@ a:hover {
|
|||
justify-self: right;
|
||||
display: grid;
|
||||
// grid-auto-flow: row;
|
||||
grid-template-rows: 1fr 1fr 1fr;
|
||||
grid-template-rows: 0.7rem 0.7rem 0.7rem;
|
||||
grid-gap: 0.2rem;
|
||||
// width: min-content;
|
||||
// width: -moz-min-content;
|
||||
|
@ -3041,6 +3041,7 @@ key {
|
|||
&.languageGroups,
|
||||
&.layout,
|
||||
&.keymapLayout,
|
||||
&.keymapLegendStyle,
|
||||
&.fontFamily,
|
||||
&.funbox,
|
||||
&.keymapStyle,
|
||||
|
@ -3553,6 +3554,7 @@ key {
|
|||
.pageSettings .section.language .buttons,
|
||||
.pageSettings .section.layout .buttons,
|
||||
.pageSettings .section.keymapLayout .buttons,
|
||||
.pageSettings .section.keymapLegendStyle .buttons,
|
||||
.pageSettings .section.fontFamily .buttons,
|
||||
.pageSettings .section.funbox .buttons,
|
||||
.pageSettings .section.keymapStyle .buttons {
|
||||
|
@ -3663,6 +3665,7 @@ key {
|
|||
.pageSettings .section.language .buttons,
|
||||
.pageSettings .section.layout .buttons,
|
||||
.pageSettings .section.keymapLayout .buttons,
|
||||
.pageSettings .section.keymapLegendStyle .buttons,
|
||||
.pageSettings .section.fontFamily .buttons,
|
||||
.pageSettings .section.funbox .buttons,
|
||||
.pageSettings .section.keymapStyle .buttons {
|
||||
|
|
|
@ -1660,6 +1660,20 @@
|
|||
<div>Robin</div>
|
||||
<div>Sonicv6</div>
|
||||
<div>Taran</div>
|
||||
<div>Roux</div>
|
||||
<div>Artem</div>
|
||||
<div>DarkBlu</div>
|
||||
<div>John</div>
|
||||
<div>Gregory</div>
|
||||
<div>Hopeless Love</div>
|
||||
<div>Kalen</div>
|
||||
<div>Ben</div>
|
||||
<div>Jakub</div>
|
||||
<div>Vincent</div>
|
||||
<div>Connor</div>
|
||||
<div>Zunaed</div>
|
||||
<div>Emilio</div>
|
||||
<div>Michael</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -2769,6 +2783,35 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section keymapLegendStyle">
|
||||
<h1>keymap legend style</h1>
|
||||
<div class="buttons">
|
||||
<div
|
||||
class="button"
|
||||
keymapLegendStyle="lowercase"
|
||||
tabindex="0"
|
||||
onclick="this.blur();"
|
||||
>
|
||||
lowercase
|
||||
</div>
|
||||
<div
|
||||
class="button"
|
||||
keymapLegendStyle="uppercase"
|
||||
tabindex="0"
|
||||
onclick="this.blur();"
|
||||
>
|
||||
uppercase
|
||||
</div>
|
||||
<div
|
||||
class="button"
|
||||
keymapLegendStyle="blank"
|
||||
tabindex="0"
|
||||
onclick="this.blur();"
|
||||
>
|
||||
blank
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section keymapLayout">
|
||||
<h1>keymap layout</h1>
|
||||
<div class="buttons"></div>
|
||||
|
|
|
@ -31,6 +31,10 @@
|
|||
"name": "portuguese",
|
||||
"languages": ["portuguese"]
|
||||
},
|
||||
{
|
||||
"name": "lithuanian",
|
||||
"languages": ["lithuanian", "lithuanian_1k"]
|
||||
},
|
||||
{
|
||||
"name": "indonesian",
|
||||
"languages": ["indonesian", "indonesian_1k"]
|
||||
|
@ -65,7 +69,7 @@
|
|||
},
|
||||
{
|
||||
"name": "slovak",
|
||||
"languages": ["slovak"]
|
||||
"languages": ["slovak", "slovak_1k"]
|
||||
},
|
||||
{
|
||||
"name": "slovenian",
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
,"czech_1k"
|
||||
,"czech_10k"
|
||||
,"slovak"
|
||||
,"slovak_1k"
|
||||
,"slovenian"
|
||||
,"croatian"
|
||||
,"dutch"
|
||||
|
@ -69,6 +70,8 @@
|
|||
,"maori_1k"
|
||||
,"lojban_gismu"
|
||||
,"lojban_cmavo"
|
||||
,"lithuanian"
|
||||
,"lithuanian_1k"
|
||||
,"toki_pona"
|
||||
,"twitch_emotes"
|
||||
,"pig_latin"
|
||||
|
|
210
static/languages/lithuanian.json
Normal file
210
static/languages/lithuanian.json
Normal file
|
@ -0,0 +1,210 @@
|
|||
{
|
||||
"name": "lithuanian",
|
||||
"leftToRight": true,
|
||||
"words": [
|
||||
"ir",
|
||||
"jis",
|
||||
"būti",
|
||||
"tas",
|
||||
"į",
|
||||
"kad",
|
||||
"aš",
|
||||
"kuris",
|
||||
"su",
|
||||
"šis",
|
||||
"galėti",
|
||||
"o",
|
||||
"iš",
|
||||
"kaip",
|
||||
"darbas",
|
||||
"ar",
|
||||
"kitas",
|
||||
"turėti",
|
||||
"visas",
|
||||
"žmogus",
|
||||
"Lietuva",
|
||||
"kad",
|
||||
"vienas",
|
||||
"tik",
|
||||
"savo",
|
||||
"nuo",
|
||||
"toks",
|
||||
"bet",
|
||||
"ne",
|
||||
"apie",
|
||||
"jau",
|
||||
"labai",
|
||||
"metai",
|
||||
"dar",
|
||||
"daug",
|
||||
"tu",
|
||||
"už",
|
||||
"bei",
|
||||
"arba",
|
||||
"laikas",
|
||||
"kai",
|
||||
"taip",
|
||||
"pats",
|
||||
"reikėti",
|
||||
"per",
|
||||
"po",
|
||||
"nebūti",
|
||||
"čia",
|
||||
"dėl",
|
||||
"prie",
|
||||
"tačiau",
|
||||
"didelis",
|
||||
"sistema",
|
||||
"gamyba",
|
||||
"įmonė",
|
||||
"pirmas",
|
||||
"nes",
|
||||
"vieta",
|
||||
"žemė",
|
||||
"norėti",
|
||||
"naujas",
|
||||
"dabar",
|
||||
"jei",
|
||||
"koks",
|
||||
"žinoti",
|
||||
"pagal",
|
||||
"įstatymas",
|
||||
"vaikas",
|
||||
"todėl",
|
||||
"net",
|
||||
"iki",
|
||||
"gyvenimas",
|
||||
"narys",
|
||||
"du",
|
||||
"pirmininkas",
|
||||
"svarbus",
|
||||
"ant",
|
||||
"grupė",
|
||||
"kiekvienas",
|
||||
"dalis",
|
||||
"atlikti",
|
||||
"seimas",
|
||||
"diena",
|
||||
"tai",
|
||||
"sakyti",
|
||||
"valstybė",
|
||||
"duomuo",
|
||||
"gerai",
|
||||
"prieš",
|
||||
"kur",
|
||||
"negalėti",
|
||||
"dažnai",
|
||||
"jeigu",
|
||||
"pasaulis",
|
||||
"niekas",
|
||||
"sudaryti",
|
||||
"šalis",
|
||||
"klausimas",
|
||||
"geras",
|
||||
"nei",
|
||||
"nustatyti",
|
||||
"be",
|
||||
"metas",
|
||||
"savęs",
|
||||
"viskas",
|
||||
"pradėti",
|
||||
"procesas",
|
||||
"tada",
|
||||
"kartas",
|
||||
"kiek",
|
||||
"priimti",
|
||||
"gauti",
|
||||
"veikla",
|
||||
"ūkis",
|
||||
"vanduo",
|
||||
"įvairus",
|
||||
"dirbti",
|
||||
"gal",
|
||||
"Vilnius",
|
||||
"pagrindinis",
|
||||
"pateikti",
|
||||
"pavyzdys",
|
||||
"imti",
|
||||
"skirti",
|
||||
"informacija",
|
||||
"lietuvis",
|
||||
"ligonis",
|
||||
"tarp",
|
||||
"ranka",
|
||||
"tapti",
|
||||
"dievas",
|
||||
"bendras",
|
||||
"vyriausybė",
|
||||
"priemonė",
|
||||
"kalbėti",
|
||||
"miestas",
|
||||
"žodis",
|
||||
"projektas",
|
||||
"respublika",
|
||||
"kalba",
|
||||
"daryti",
|
||||
"kultūra",
|
||||
"sąlyga",
|
||||
"padėti",
|
||||
"mažas",
|
||||
"pasakyti",
|
||||
"antras",
|
||||
"aukštas",
|
||||
"visai",
|
||||
"naudoti",
|
||||
"Europa",
|
||||
"gyventi",
|
||||
"nors",
|
||||
"mano",
|
||||
"atrodyti",
|
||||
"vėl",
|
||||
"matyti",
|
||||
"jog",
|
||||
"medžiaga",
|
||||
"gerbti",
|
||||
"būdas",
|
||||
"senas",
|
||||
"Kaunas",
|
||||
"manyti",
|
||||
"valdymas",
|
||||
"ten",
|
||||
"tyrimas",
|
||||
"neturėti",
|
||||
"mokslas",
|
||||
"sprendimas",
|
||||
"šiltas",
|
||||
"keli",
|
||||
"darbuotojas",
|
||||
"operacija",
|
||||
"priklausyti",
|
||||
"knyga",
|
||||
"vadinti",
|
||||
"laikyti",
|
||||
"ypač",
|
||||
"suprasti",
|
||||
"problema",
|
||||
"tikslas",
|
||||
"asmuo",
|
||||
"forma",
|
||||
"galva",
|
||||
"sunkus",
|
||||
"atvejis",
|
||||
"metodas",
|
||||
"skyrius",
|
||||
"daugelis",
|
||||
"eiti",
|
||||
"leisti",
|
||||
"moteris",
|
||||
"straipsnis",
|
||||
"padaryti",
|
||||
"likti",
|
||||
"toli",
|
||||
"akis",
|
||||
"tikrai",
|
||||
"vyras",
|
||||
"istorija",
|
||||
"liga",
|
||||
"organizacija",
|
||||
"trys"
|
||||
]
|
||||
}
|
497
static/languages/lithuanian_1k.json
Normal file
497
static/languages/lithuanian_1k.json
Normal file
|
@ -0,0 +1,497 @@
|
|||
{
|
||||
"name": "lithuanian_1k",
|
||||
"leftToRight": true,
|
||||
"words": [
|
||||
"ir",
|
||||
"jis",
|
||||
"būti",
|
||||
"tas",
|
||||
"į",
|
||||
"kad",
|
||||
"aš",
|
||||
"kuris",
|
||||
"su",
|
||||
"šis",
|
||||
"galėti",
|
||||
"o",
|
||||
"iš",
|
||||
"kaip",
|
||||
"darbas",
|
||||
"ar",
|
||||
"kitas",
|
||||
"turėti",
|
||||
"visas",
|
||||
"žmogus",
|
||||
"Lietuva",
|
||||
"kad",
|
||||
"vienas",
|
||||
"tik",
|
||||
"savo",
|
||||
"nuo",
|
||||
"toks",
|
||||
"bet",
|
||||
"ne",
|
||||
"apie",
|
||||
"jau",
|
||||
"labai",
|
||||
"metai",
|
||||
"dar",
|
||||
"daug",
|
||||
"tu",
|
||||
"už",
|
||||
"bei",
|
||||
"arba",
|
||||
"laikas",
|
||||
"kai",
|
||||
"taip",
|
||||
"pats",
|
||||
"reikėti",
|
||||
"per",
|
||||
"po",
|
||||
"nebūti",
|
||||
"čia",
|
||||
"dėl",
|
||||
"prie",
|
||||
"tačiau",
|
||||
"didelis",
|
||||
"sistema",
|
||||
"gamyba",
|
||||
"įmonė",
|
||||
"pirmas",
|
||||
"nes",
|
||||
"vieta",
|
||||
"žemė",
|
||||
"norėti",
|
||||
"naujas",
|
||||
"dabar",
|
||||
"jei",
|
||||
"koks",
|
||||
"žinoti",
|
||||
"pagal",
|
||||
"įstatymas",
|
||||
"vaikas",
|
||||
"todėl",
|
||||
"net",
|
||||
"iki",
|
||||
"gyvenimas",
|
||||
"narys",
|
||||
"du",
|
||||
"pirmininkas",
|
||||
"svarbus",
|
||||
"ant",
|
||||
"grupė",
|
||||
"kiekvienas",
|
||||
"dalis",
|
||||
"atlikti",
|
||||
"seimas",
|
||||
"diena",
|
||||
"tai",
|
||||
"sakyti",
|
||||
"valstybė",
|
||||
"duomuo",
|
||||
"gerai",
|
||||
"prieš",
|
||||
"kur",
|
||||
"negalėti",
|
||||
"dažnai",
|
||||
"jeigu",
|
||||
"pasaulis",
|
||||
"niekas",
|
||||
"sudaryti",
|
||||
"šalis",
|
||||
"klausimas",
|
||||
"geras",
|
||||
"nei",
|
||||
"nustatyti",
|
||||
"be",
|
||||
"metas",
|
||||
"savęs",
|
||||
"viskas",
|
||||
"pradėti",
|
||||
"procesas",
|
||||
"tada",
|
||||
"kartas",
|
||||
"kiek",
|
||||
"priimti",
|
||||
"gauti",
|
||||
"veikla",
|
||||
"ūkis",
|
||||
"vanduo",
|
||||
"įvairus",
|
||||
"dirbti",
|
||||
"gal",
|
||||
"Vilnius",
|
||||
"pagrindinis",
|
||||
"pateikti",
|
||||
"pavyzdys",
|
||||
"imti",
|
||||
"skirti",
|
||||
"informacija",
|
||||
"lietuvis",
|
||||
"ligonis",
|
||||
"tarp",
|
||||
"ranka",
|
||||
"tapti",
|
||||
"dievas",
|
||||
"bendras",
|
||||
"vyriausybė",
|
||||
"priemonė",
|
||||
"kalbėti",
|
||||
"miestas",
|
||||
"žodis",
|
||||
"projektas",
|
||||
"respublika",
|
||||
"kalba",
|
||||
"daryti",
|
||||
"kultūra",
|
||||
"sąlyga",
|
||||
"padėti",
|
||||
"mažas",
|
||||
"pasakyti",
|
||||
"antras",
|
||||
"aukštas",
|
||||
"visai",
|
||||
"naudoti",
|
||||
"Europa",
|
||||
"gyventi",
|
||||
"nors",
|
||||
"mano",
|
||||
"atrodyti",
|
||||
"vėl",
|
||||
"matyti",
|
||||
"jog",
|
||||
"medžiaga",
|
||||
"gerbti",
|
||||
"būdas",
|
||||
"senas",
|
||||
"Kaunas",
|
||||
"manyti",
|
||||
"valdymas",
|
||||
"ten",
|
||||
"tyrimas",
|
||||
"neturėti",
|
||||
"mokslas",
|
||||
"sprendimas",
|
||||
"šiltas",
|
||||
"keli",
|
||||
"darbuotojas",
|
||||
"operacija",
|
||||
"priklausyti",
|
||||
"knyga",
|
||||
"vadinti",
|
||||
"laikyti",
|
||||
"ypač",
|
||||
"suprasti",
|
||||
"problema",
|
||||
"tikslas",
|
||||
"asmuo",
|
||||
"forma",
|
||||
"galva",
|
||||
"sunkus",
|
||||
"atvejis",
|
||||
"metodas",
|
||||
"skyrius",
|
||||
"daugelis",
|
||||
"eiti",
|
||||
"leisti",
|
||||
"moteris",
|
||||
"straipsnis",
|
||||
"padaryti",
|
||||
"likti",
|
||||
"toli",
|
||||
"akis",
|
||||
"tikrai",
|
||||
"vyras",
|
||||
"istorija",
|
||||
"liga",
|
||||
"organizacija",
|
||||
"trys",
|
||||
"tam",
|
||||
"tikras",
|
||||
"dalykas",
|
||||
"vėlai",
|
||||
"pusė",
|
||||
"mėnuo",
|
||||
"kartu",
|
||||
"struktūra",
|
||||
"centras",
|
||||
"veikti",
|
||||
"gaminys",
|
||||
"teisė",
|
||||
"juk",
|
||||
"numatyti",
|
||||
"taiki",
|
||||
"vadovas",
|
||||
"lygis",
|
||||
"joks",
|
||||
"turtas",
|
||||
"galimybė",
|
||||
"objektas",
|
||||
"rinka",
|
||||
"beveik",
|
||||
"siekti",
|
||||
"rezultatas",
|
||||
"visiškai",
|
||||
"tauta",
|
||||
"technologija",
|
||||
"pagrindas",
|
||||
"ministerija",
|
||||
"sritis",
|
||||
"šlaitas",
|
||||
"greitai",
|
||||
"šeima",
|
||||
"dokumentas",
|
||||
"mažai",
|
||||
"tvarka",
|
||||
"siūlyti",
|
||||
"atsirasti",
|
||||
"tiek",
|
||||
"ryšys",
|
||||
"mokykla",
|
||||
"teikti",
|
||||
"socialinis",
|
||||
"atskiras",
|
||||
"kokybė",
|
||||
"komitetas",
|
||||
"pradžia",
|
||||
"santykis",
|
||||
"norma",
|
||||
"rašyti",
|
||||
"programa",
|
||||
"mokestis",
|
||||
"ekonominis",
|
||||
"skaičius",
|
||||
"vykti",
|
||||
"mintis",
|
||||
"vis",
|
||||
"jėga",
|
||||
"reikalas",
|
||||
"vardas",
|
||||
"bankas",
|
||||
"širdis",
|
||||
"lyg",
|
||||
"poreikis",
|
||||
"kontrolė",
|
||||
"kartais",
|
||||
"techninis",
|
||||
"kelias",
|
||||
"pasiekti",
|
||||
"rasti",
|
||||
"vakarai",
|
||||
"sukurti",
|
||||
"fondas",
|
||||
"kraštas",
|
||||
"organizavimas",
|
||||
"nurodyti",
|
||||
"pritarti",
|
||||
"abu",
|
||||
"reikalingas",
|
||||
"palikti",
|
||||
"priežastis",
|
||||
"amžius",
|
||||
"prašom",
|
||||
"kūnas",
|
||||
"paprastai",
|
||||
"funkcija",
|
||||
"uoliena",
|
||||
"paskutinis",
|
||||
"įrengimas",
|
||||
"namai",
|
||||
"principas",
|
||||
"kolega",
|
||||
"balsas",
|
||||
"baigti",
|
||||
"grįžti",
|
||||
"kurti",
|
||||
"užsienis",
|
||||
"ateiti",
|
||||
"šiandien",
|
||||
"latvis",
|
||||
"gamta",
|
||||
"rajonas",
|
||||
"pinigas",
|
||||
"ponas",
|
||||
"baltas",
|
||||
"kodėl",
|
||||
"teikti",
|
||||
"nuomonė",
|
||||
"panašus",
|
||||
"tikras",
|
||||
"ilgas",
|
||||
"atitikti",
|
||||
"prašyti",
|
||||
"taikyti",
|
||||
"didis",
|
||||
"dėmesys",
|
||||
"praeiti",
|
||||
"elementas",
|
||||
"vaidmuo",
|
||||
"pas",
|
||||
"teigti",
|
||||
"aiškus",
|
||||
"pro",
|
||||
"linija",
|
||||
"registras",
|
||||
"tiesa",
|
||||
"duoti",
|
||||
"ministras",
|
||||
"štai",
|
||||
"reikalavimas",
|
||||
"koja",
|
||||
"negu",
|
||||
"spręsti",
|
||||
"pasirodyti",
|
||||
"tėvas",
|
||||
"bažnyčia",
|
||||
"situacija",
|
||||
"vokietis",
|
||||
"darbininkas",
|
||||
"tikti",
|
||||
"anksti",
|
||||
"laukti",
|
||||
"kaimas",
|
||||
"prekė",
|
||||
"informacinis",
|
||||
"produkcija",
|
||||
"nutarimas",
|
||||
"tarnyba",
|
||||
"valstybinis",
|
||||
"jūra",
|
||||
"minėti",
|
||||
"tarsi",
|
||||
"laisvė",
|
||||
"pakeisti",
|
||||
"planas",
|
||||
"veiksmas",
|
||||
"dalyvauti",
|
||||
"gyventojas",
|
||||
"visuomenė",
|
||||
"pardavimas",
|
||||
"durys",
|
||||
"pataisa",
|
||||
"nežinoti",
|
||||
"paskui",
|
||||
"veidas",
|
||||
"kol",
|
||||
"savas",
|
||||
"prasmė",
|
||||
"sutikti",
|
||||
"pabaiga",
|
||||
"ieškoti",
|
||||
"bendrovė",
|
||||
"prasmė",
|
||||
"sutikti",
|
||||
"pabaiga",
|
||||
"ieškoti",
|
||||
"bendrovė",
|
||||
"organizuoti",
|
||||
"detalė",
|
||||
"kadangi",
|
||||
"siena",
|
||||
"valanda",
|
||||
"žiūrėti",
|
||||
"susyti",
|
||||
"rytai",
|
||||
"įvertinti",
|
||||
"pramonė",
|
||||
"suteikti",
|
||||
"vos",
|
||||
"mokėti",
|
||||
"vartotojas",
|
||||
"kilti",
|
||||
"rodyti",
|
||||
"tavo",
|
||||
"konkretus",
|
||||
"vykdyti",
|
||||
"parengti",
|
||||
"karas",
|
||||
"teritorija",
|
||||
"na",
|
||||
"rytas",
|
||||
"specialus",
|
||||
"tipas",
|
||||
"šaltinis",
|
||||
"jausmas",
|
||||
"autorius",
|
||||
"jaunas",
|
||||
"medicina",
|
||||
"firma",
|
||||
"ilgai",
|
||||
"gana",
|
||||
"pastaras",
|
||||
"pavadinimas",
|
||||
"įrankis",
|
||||
"lėšos",
|
||||
"atsakyti",
|
||||
"ačiū",
|
||||
"remontas",
|
||||
"privalėti",
|
||||
"savaitė",
|
||||
"išeiti",
|
||||
"kaina",
|
||||
"tad",
|
||||
"dydis",
|
||||
"keletas",
|
||||
"papildyti",
|
||||
"universitetas",
|
||||
"gydytojas",
|
||||
"parodyti",
|
||||
"prasidėti",
|
||||
"prezidentas",
|
||||
"miškas",
|
||||
"analizė",
|
||||
"estas",
|
||||
"punktas",
|
||||
"visada",
|
||||
"galas",
|
||||
"kitoks",
|
||||
"mirtis",
|
||||
"ligoninė",
|
||||
"tėvai",
|
||||
"daiktas",
|
||||
"nereikėti",
|
||||
"laisvas",
|
||||
"stengtis",
|
||||
"išskirti",
|
||||
"sąjunga",
|
||||
"trečias",
|
||||
"kada",
|
||||
"kažkas",
|
||||
"kelti",
|
||||
"oras",
|
||||
"meilė",
|
||||
"politinis",
|
||||
"požiūris",
|
||||
"bazė",
|
||||
"savivaldybė",
|
||||
"teismas",
|
||||
"vakaras",
|
||||
"balsuoti",
|
||||
"reikšti",
|
||||
"šiaurė",
|
||||
"būdingas",
|
||||
"sveikata",
|
||||
"taryba",
|
||||
"veiksnys",
|
||||
"šviesa",
|
||||
"gaminti",
|
||||
"patvirtinti",
|
||||
"išlaidos",
|
||||
"vadovauti",
|
||||
"įstaiga",
|
||||
"įtaka",
|
||||
"užduotis",
|
||||
"vadintis",
|
||||
"valdžia",
|
||||
"asmenybė",
|
||||
"medis",
|
||||
"institucija",
|
||||
"kraujas",
|
||||
"uždavinys",
|
||||
"vertinti",
|
||||
"apskaičiuoti",
|
||||
"vidus",
|
||||
"mokslinis",
|
||||
"statyba"
|
||||
]
|
||||
}
|
1007
static/languages/slovak_1k.json
Normal file
1007
static/languages/slovak_1k.json
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue