@dodona/papyros
Version:
Scratchpad for multiple programming languages in the browser.
76 lines • 3.29 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import "./Papyros.css";
import { addPapyrosPrefix, DEFAULT_LOCALE, DEFAULT_PROGRAMMING_LANGUAGE, DEFAULT_SERVICE_WORKER } from "./Constants";
import { Papyros } from "./Papyros";
import { InputMode } from "./InputManager";
import { BatchInputHandler } from "./input/BatchInputHandler";
const LOCAL_STORAGE_KEYS = {
code: addPapyrosPrefix("previous-code"),
input: addPapyrosPrefix("previous-batch-input")
};
function setUpEditor(editor, storageKey) {
const previousValue = window.localStorage.getItem(storageKey);
if (previousValue) {
editor.setText(previousValue);
}
editor.onChange({
onChange: (text) => {
window.localStorage.setItem(storageKey, text);
},
delay: 0
});
}
function startPapyros() {
return __awaiter(this, void 0, void 0, function* () {
// Retrieve initial locale and programming language from URL
// This allows easier sharing of Papyros-related links with others
// While preventing loading an unwanted backend
const urlParams = new URLSearchParams(window.location.search);
const language = Papyros.toProgrammingLanguage(urlParams.get("language") ||
DEFAULT_PROGRAMMING_LANGUAGE);
const locale = urlParams.get("locale") || DEFAULT_LOCALE;
const config = {
standAlone: true,
programmingLanguage: language,
locale: locale,
inputMode: InputMode.Batch,
channelOptions: {
serviceWorkerName: DEFAULT_SERVICE_WORKER
}
};
const papyros = new Papyros(config);
let darkMode = false;
if (window.matchMedia) {
darkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", e => {
papyros.setDarkMode(e.matches);
});
}
papyros.render({
standAloneOptions: {
parentElementId: "root"
},
darkMode: darkMode,
traceOptions: {
parentElementId: "trace-root"
}
});
setUpEditor(papyros.codeRunner.editor, LOCAL_STORAGE_KEYS.code);
papyros.codeRunner.editor.focus();
const handler = papyros.codeRunner.inputManager.getInputHandler(InputMode.Batch);
if (handler instanceof BatchInputHandler) {
setUpEditor(handler.batchEditor, LOCAL_STORAGE_KEYS.input);
}
yield papyros.launch();
});
}
startPapyros();
//# sourceMappingURL=App.js.map