UNPKG

@dodona/papyros

Version:

Scratchpad for multiple programming languages in the browser.

76 lines 3.29 kB
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