Refactoring: cleaning up main.ts file
This commit is contained in:
160
src/KeyActions.ts
Normal file
160
src/KeyActions.ts
Normal file
@ -0,0 +1,160 @@
|
||||
import { type Editor } from "./main";
|
||||
import { vim } from "@replit/codemirror-vim";
|
||||
import { tryEvaluate } from "./Evaluator";
|
||||
import { hideDocumentation, showDocumentation } from "./Documentation";
|
||||
import { openSettingsModal, openUniverseModal } from "./FileManagement";
|
||||
|
||||
export const registerFillKeys = (app: Editor) => {
|
||||
document.addEventListener("keydown", (event) => {
|
||||
if (event.altKey) {
|
||||
app.fill = true;
|
||||
app.interface.fill_viewer.classList.remove("invisible");
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener("keyup", (event) => {
|
||||
if (event.key === "Alt") {
|
||||
app.fill = false;
|
||||
app.interface.fill_viewer.classList.add("invisible");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const registerOnKeyDown = (app: Editor) => {
|
||||
window.addEventListener("keydown", (event) => {
|
||||
if (event.key === "Tab") {
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "s") {
|
||||
event.preventDefault();
|
||||
app.setButtonHighlighting("stop", true);
|
||||
app.clock.stop();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "p") {
|
||||
event.preventDefault();
|
||||
if (app.isPlaying) {
|
||||
app.isPlaying = false;
|
||||
app.setButtonHighlighting("pause", true);
|
||||
app.clock.pause();
|
||||
} else {
|
||||
app.isPlaying = true;
|
||||
app.setButtonHighlighting("play", true);
|
||||
app.clock.start();
|
||||
}
|
||||
}
|
||||
|
||||
// Ctrl + Shift + V: Vim Mode
|
||||
if (
|
||||
(event.key === "v" || event.key === "V") &&
|
||||
event.ctrlKey &&
|
||||
event.shiftKey
|
||||
) {
|
||||
app.settings.vimMode = !app.settings.vimMode;
|
||||
event.preventDefault();
|
||||
app.userPlugins = app.settings.vimMode ? [] : [vim()];
|
||||
app.view.dispatch({
|
||||
effects: app.dynamicPlugins.reconfigure(app.userPlugins),
|
||||
});
|
||||
}
|
||||
|
||||
// Ctrl + Enter or Return: Evaluate
|
||||
if ((event.key === "Enter" || event.key === "Return") && event.ctrlKey) {
|
||||
event.preventDefault();
|
||||
app.currentFile().candidate = app.view.state.doc.toString();
|
||||
app.flashBackground("#404040", 200);
|
||||
}
|
||||
|
||||
// Evaluate (bis)
|
||||
if (
|
||||
(event.key === "Enter" && event.shiftKey) ||
|
||||
(event.key === "e" && event.ctrlKey)
|
||||
) {
|
||||
event.preventDefault(); // Prevents the addition of a new line
|
||||
app.currentFile().candidate = app.view.state.doc.toString();
|
||||
app.flashBackground("#404040", 200);
|
||||
}
|
||||
|
||||
// Force evaluation
|
||||
if (event.key === "Enter" && event.shiftKey && event.ctrlKey) {
|
||||
event.preventDefault();
|
||||
app.currentFile().candidate = app.view.state.doc.toString();
|
||||
tryEvaluate(app, app.currentFile());
|
||||
app.flashBackground("#404040", 200);
|
||||
}
|
||||
|
||||
// app is the modal to switch between universes
|
||||
if (event.ctrlKey && event.key === "b") {
|
||||
event.preventDefault();
|
||||
hideDocumentation();
|
||||
app.updateKnownUniversesView();
|
||||
openUniverseModal();
|
||||
}
|
||||
|
||||
// app is the modal that opens up the settings
|
||||
if (event.shiftKey && event.key === "Escape") {
|
||||
openSettingsModal();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "l") {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("local");
|
||||
hideDocumentation();
|
||||
app.view.focus();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "n") {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("notes");
|
||||
hideDocumentation();
|
||||
app.view.focus();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "g") {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("global");
|
||||
hideDocumentation();
|
||||
app.view.focus();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "i") {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("init");
|
||||
hideDocumentation();
|
||||
app.changeToLocalBuffer(0);
|
||||
app.view.focus();
|
||||
}
|
||||
|
||||
if (event.ctrlKey && event.key === "d") {
|
||||
event.preventDefault();
|
||||
showDocumentation(app);
|
||||
}
|
||||
|
||||
[112, 113, 114, 115, 116, 117, 118, 119, 120].forEach((keycode, index) => {
|
||||
if (event.keyCode === keycode) {
|
||||
event.preventDefault();
|
||||
if (event.ctrlKey) {
|
||||
event.preventDefault();
|
||||
app.api.script(keycode - 111);
|
||||
} else {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("local");
|
||||
app.changeToLocalBuffer(index);
|
||||
hideDocumentation();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (event.keyCode == 121) {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("global");
|
||||
hideDocumentation();
|
||||
}
|
||||
if (event.keyCode == 122) {
|
||||
event.preventDefault();
|
||||
app.changeModeFromInterface("init");
|
||||
hideDocumentation();
|
||||
}
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user