@dodona/papyros 3.0.2 → 4.0.0-beta-9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -72
- package/dist/Library.d.ts +10 -11
- package/dist/Library.js +9 -7
- package/dist/Library.js.map +1 -1
- package/dist/{Backend.d.ts → backend/Backend.d.ts} +3 -12
- package/dist/{Backend.js → backend/Backend.js} +4 -17
- package/dist/backend/Backend.js.map +1 -0
- package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.js +1 -1
- package/dist/backend/workers/javascript/JavaScriptWorker.js.map +1 -0
- package/dist/backend/workers/javascript/worker.js.map +1 -0
- package/dist/{workers → backend/workers}/python/PythonWorker.d.ts +2 -2
- package/dist/{workers → backend/workers}/python/PythonWorker.js +2 -2
- package/dist/backend/workers/python/PythonWorker.js.map +1 -0
- package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
- package/dist/backend/workers/python/worker.js.map +1 -0
- package/dist/communication/BackendEvent.js.map +1 -0
- package/dist/{BackendEventQueue.d.ts → communication/BackendEventQueue.d.ts} +1 -36
- package/dist/{BackendEventQueue.js → communication/BackendEventQueue.js} +2 -45
- package/dist/communication/BackendEventQueue.js.map +1 -0
- package/dist/{BackendManager.d.ts → communication/BackendManager.d.ts} +2 -2
- package/dist/{BackendManager.js → communication/BackendManager.js} +4 -4
- package/dist/communication/BackendManager.js.map +1 -0
- package/dist/communication/InputServiceWorker.js +37 -0
- package/dist/communication/InputServiceWorker.js.map +1 -0
- package/dist/communication/InputWorker.js.map +1 -0
- package/dist/frontend/components/CodeRunner.d.ts +9 -0
- package/dist/frontend/components/CodeRunner.js +60 -0
- package/dist/frontend/components/CodeRunner.js.map +1 -0
- package/dist/frontend/components/Debugger.d.ts +7 -0
- package/dist/frontend/components/Debugger.js +61 -0
- package/dist/frontend/components/Debugger.js.map +1 -0
- package/dist/frontend/components/Input.d.ts +13 -0
- package/dist/frontend/components/Input.js +65 -0
- package/dist/frontend/components/Input.js.map +1 -0
- package/dist/frontend/components/Output.d.ts +14 -0
- package/dist/frontend/components/Output.js +154 -0
- package/dist/frontend/components/Output.js.map +1 -0
- package/dist/frontend/components/PapyrosElement.d.ts +8 -0
- package/dist/frontend/components/PapyrosElement.js +24 -0
- package/dist/frontend/components/PapyrosElement.js.map +1 -0
- package/dist/frontend/components/app/App.d.ts +24 -0
- package/dist/frontend/components/app/App.js +204 -0
- package/dist/frontend/components/app/App.js.map +1 -0
- package/dist/frontend/components/app/ExamplePicker.d.ts +7 -0
- package/dist/frontend/components/app/ExamplePicker.js +35 -0
- package/dist/frontend/components/app/ExamplePicker.js.map +1 -0
- package/dist/frontend/components/app/LanguagePicker.d.ts +7 -0
- package/dist/frontend/components/app/LanguagePicker.js +35 -0
- package/dist/frontend/components/app/LanguagePicker.js.map +1 -0
- package/dist/frontend/components/app/ProgrammingLanguagePicker.d.ts +7 -0
- package/dist/frontend/components/app/ProgrammingLanguagePicker.js +39 -0
- package/dist/frontend/components/app/ProgrammingLanguagePicker.js.map +1 -0
- package/dist/frontend/components/app/examples/JavaScriptExamples.js.map +1 -0
- package/dist/frontend/components/app/examples/PythonExamples.js.map +1 -0
- package/dist/frontend/components/app/themes/ThemePicker.d.ts +11 -0
- package/dist/frontend/components/app/themes/ThemePicker.js +47 -0
- package/dist/frontend/components/app/themes/ThemePicker.js.map +1 -0
- package/dist/frontend/components/app/themes/ThemedButton.d.ts +9 -0
- package/dist/frontend/components/app/themes/ThemedButton.js +43 -0
- package/dist/frontend/components/app/themes/ThemedButton.js.map +1 -0
- package/dist/frontend/components/code_mirror/BatchInputEditor.d.ts +8 -0
- package/dist/frontend/components/code_mirror/BatchInputEditor.js +54 -0
- package/dist/frontend/components/code_mirror/BatchInputEditor.js.map +1 -0
- package/dist/frontend/components/code_mirror/CodeEditor.d.ts +24 -0
- package/dist/frontend/components/code_mirror/CodeEditor.js +205 -0
- package/dist/frontend/components/code_mirror/CodeEditor.js.map +1 -0
- package/dist/frontend/components/code_mirror/CodeMirrorEditor.d.ts +20 -0
- package/dist/frontend/components/code_mirror/CodeMirrorEditor.js +99 -0
- package/dist/frontend/components/code_mirror/CodeMirrorEditor.js.map +1 -0
- package/dist/frontend/components/code_mirror/Extensions.d.ts +15 -0
- package/dist/frontend/components/code_mirror/Extensions.js +169 -0
- package/dist/frontend/components/code_mirror/Extensions.js.map +1 -0
- package/dist/frontend/components/code_mirror/MaterialTheme.d.ts +5 -0
- package/dist/frontend/components/code_mirror/MaterialTheme.js +109 -0
- package/dist/frontend/components/code_mirror/MaterialTheme.js.map +1 -0
- package/dist/frontend/components/code_runner/ButtonLint.d.ts +9 -0
- package/dist/frontend/components/code_runner/ButtonLint.js +76 -0
- package/dist/frontend/components/code_runner/ButtonLint.js.map +1 -0
- package/dist/frontend/components/code_runner/Code.d.ts +7 -0
- package/dist/frontend/components/code_runner/Code.js +46 -0
- package/dist/frontend/components/code_runner/Code.js.map +1 -0
- package/dist/frontend/components/code_runner/RunState.d.ts +7 -0
- package/dist/frontend/components/code_runner/RunState.js +41 -0
- package/dist/frontend/components/code_runner/RunState.js.map +1 -0
- package/dist/frontend/components/input/BatchInput.d.ts +9 -0
- package/dist/frontend/components/input/BatchInput.js +53 -0
- package/dist/frontend/components/input/BatchInput.js.map +1 -0
- package/dist/frontend/components/input/InteractiveInput.d.ts +13 -0
- package/dist/frontend/components/input/InteractiveInput.js +73 -0
- package/dist/frontend/components/input/InteractiveInput.js.map +1 -0
- package/dist/frontend/state/Constants.d.ts +38 -0
- package/dist/frontend/state/Constants.js +108 -0
- package/dist/frontend/state/Constants.js.map +1 -0
- package/dist/frontend/state/Debugger.d.ts +23 -0
- package/dist/frontend/state/Debugger.js +84 -0
- package/dist/frontend/state/Debugger.js.map +1 -0
- package/dist/frontend/state/Examples.d.ts +11 -0
- package/dist/frontend/state/Examples.js +36 -0
- package/dist/frontend/state/Examples.js.map +1 -0
- package/dist/frontend/state/I18n.d.ts +16 -0
- package/dist/frontend/state/I18n.js +75 -0
- package/dist/frontend/state/I18n.js.map +1 -0
- package/dist/frontend/state/InputOutput.d.ts +64 -0
- package/dist/frontend/state/InputOutput.js +133 -0
- package/dist/frontend/state/InputOutput.js.map +1 -0
- package/dist/frontend/state/Papyros.d.ts +32 -0
- package/dist/frontend/state/Papyros.js +93 -0
- package/dist/frontend/state/Papyros.js.map +1 -0
- package/dist/frontend/state/Runner.d.ts +118 -0
- package/dist/frontend/state/Runner.js +334 -0
- package/dist/frontend/state/Runner.js.map +1 -0
- package/dist/frontend/state/Test.d.ts +11 -0
- package/dist/frontend/state/Test.js +59 -0
- package/dist/frontend/state/Test.js.map +1 -0
- package/dist/frontend/state/Translations.d.ts +178 -0
- package/dist/frontend/state/Translations.js +188 -0
- package/dist/frontend/state/Translations.js.map +1 -0
- package/dist/frontend/state/themes/blue-dark.d.ts +2 -0
- package/dist/frontend/state/themes/blue-dark.js +55 -0
- package/dist/frontend/state/themes/blue-dark.js.map +1 -0
- package/dist/frontend/state/themes/blue-light.d.ts +2 -0
- package/dist/frontend/state/themes/blue-light.js +55 -0
- package/dist/frontend/state/themes/blue-light.js.map +1 -0
- package/dist/frontend/state/themes/green-dark.d.ts +2 -0
- package/dist/frontend/state/themes/green-dark.js +55 -0
- package/dist/frontend/state/themes/green-dark.js.map +1 -0
- package/dist/frontend/state/themes/green-light.d.ts +2 -0
- package/dist/frontend/state/themes/green-light.js +55 -0
- package/dist/frontend/state/themes/green-light.js.map +1 -0
- package/dist/frontend/state/themes/red-dark.d.ts +2 -0
- package/dist/frontend/state/themes/red-dark.js +55 -0
- package/dist/frontend/state/themes/red-dark.js.map +1 -0
- package/dist/frontend/state/themes/red-light.d.ts +2 -0
- package/dist/frontend/state/themes/red-light.js +55 -0
- package/dist/frontend/state/themes/red-light.js.map +1 -0
- package/dist/util/Util.d.ts +0 -43
- package/dist/util/Util.js +0 -91
- package/dist/util/Util.js.map +1 -1
- package/package.json +13 -21
- package/dist/App.d.ts +0 -1
- package/dist/App.js +0 -76
- package/dist/App.js.map +0 -1
- package/dist/Backend.js.map +0 -1
- package/dist/BackendEvent.js.map +0 -1
- package/dist/BackendEventQueue.js.map +0 -1
- package/dist/BackendManager.js.map +0 -1
- package/dist/CodeRunner.d.ts +0 -188
- package/dist/CodeRunner.js +0 -548
- package/dist/CodeRunner.js.map +0 -1
- package/dist/Constants.d.ts +0 -31
- package/dist/Constants.js +0 -36
- package/dist/Constants.js.map +0 -1
- package/dist/Debugger.d.ts +0 -18
- package/dist/Debugger.js +0 -86
- package/dist/Debugger.js.map +0 -1
- package/dist/InputManager.d.ts +0 -38
- package/dist/InputManager.js +0 -101
- package/dist/InputManager.js.map +0 -1
- package/dist/InputServiceWorker.js.map +0 -1
- package/dist/OutputManager.d.ts +0 -90
- package/dist/OutputManager.js +0 -172
- package/dist/OutputManager.js.map +0 -1
- package/dist/Papyros.css +0 -657
- package/dist/Papyros.d.ts +0 -141
- package/dist/Papyros.js +0 -268
- package/dist/Papyros.js.map +0 -1
- package/dist/Translations.d.ts +0 -180
- package/dist/Translations.js +0 -191
- package/dist/Translations.js.map +0 -1
- package/dist/editor/BatchInputEditor.d.ts +0 -41
- package/dist/editor/BatchInputEditor.js +0 -80
- package/dist/editor/BatchInputEditor.js.map +0 -1
- package/dist/editor/CodeEditor.d.ts +0 -81
- package/dist/editor/CodeEditor.js +0 -213
- package/dist/editor/CodeEditor.js.map +0 -1
- package/dist/editor/CodeMirrorEditor.d.ts +0 -133
- package/dist/editor/CodeMirrorEditor.js +0 -169
- package/dist/editor/CodeMirrorEditor.js.map +0 -1
- package/dist/editor/DarkTheme.d.ts +0 -1
- package/dist/editor/DarkTheme.js +0 -72
- package/dist/editor/DarkTheme.js.map +0 -1
- package/dist/editor/DebugExtension.d.ts +0 -11
- package/dist/editor/DebugExtension.js +0 -70
- package/dist/editor/DebugExtension.js.map +0 -1
- package/dist/editor/Gutters.d.ts +0 -109
- package/dist/editor/Gutters.js +0 -201
- package/dist/editor/Gutters.js.map +0 -1
- package/dist/editor/LineEffectExtension.d.ts +0 -13
- package/dist/editor/LineEffectExtension.js +0 -48
- package/dist/editor/LineEffectExtension.js.map +0 -1
- package/dist/editor/TestCodeExtension.d.ts +0 -21
- package/dist/editor/TestCodeExtension.js +0 -134
- package/dist/editor/TestCodeExtension.js.map +0 -1
- package/dist/examples/Examples.d.ts +0 -6
- package/dist/examples/Examples.js +0 -23
- package/dist/examples/Examples.js.map +0 -1
- package/dist/examples/JavaScriptExamples.js.map +0 -1
- package/dist/examples/PythonExamples.js.map +0 -1
- package/dist/input/BatchInputHandler.d.ts +0 -55
- package/dist/input/BatchInputHandler.js +0 -131
- package/dist/input/BatchInputHandler.js.map +0 -1
- package/dist/input/InteractiveInputHandler.d.ts +0 -27
- package/dist/input/InteractiveInputHandler.js +0 -89
- package/dist/input/InteractiveInputHandler.js.map +0 -1
- package/dist/input/UserInputHandler.d.ts +0 -68
- package/dist/input/UserInputHandler.js +0 -39
- package/dist/input/UserInputHandler.js.map +0 -1
- package/dist/util/HTMLShapes.d.ts +0 -15
- package/dist/util/HTMLShapes.js +0 -25
- package/dist/util/HTMLShapes.js.map +0 -1
- package/dist/util/Rendering.d.ts +0 -120
- package/dist/util/Rendering.js +0 -142
- package/dist/util/Rendering.js.map +0 -1
- package/dist/workers/input/InputWorker.js.map +0 -1
- package/dist/workers/javascript/JavaScriptWorker.js.map +0 -1
- package/dist/workers/javascript/worker.js.map +0 -1
- package/dist/workers/python/PythonWorker.js.map +0 -1
- package/dist/workers/python/python_package.tar.gz.load_by_url +0 -0
- package/dist/workers/python/worker.js.map +0 -1
- /package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.d.ts +0 -0
- /package/dist/{workers → backend/workers}/javascript/worker.d.ts +0 -0
- /package/dist/{workers → backend/workers}/javascript/worker.js +0 -0
- /package/dist/{workers → backend/workers}/python/worker.d.ts +0 -0
- /package/dist/{workers → backend/workers}/python/worker.js +0 -0
- /package/dist/{BackendEvent.d.ts → communication/BackendEvent.d.ts} +0 -0
- /package/dist/{BackendEvent.js → communication/BackendEvent.js} +0 -0
- /package/dist/{InputServiceWorker.d.ts → communication/InputServiceWorker.d.ts} +0 -0
- /package/dist/{workers/input → communication}/InputWorker.d.ts +0 -0
- /package/dist/{workers/input → communication}/InputWorker.js +0 -0
- /package/dist/{examples → frontend/components/app/examples}/JavaScriptExamples.d.ts +0 -0
- /package/dist/{examples → frontend/components/app/examples}/JavaScriptExamples.js +0 -0
- /package/dist/{examples → frontend/components/app/examples}/PythonExamples.d.ts +0 -0
- /package/dist/{examples → frontend/components/app/examples}/PythonExamples.js +0 -0
package/dist/util/Util.js
CHANGED
|
@@ -1,47 +1,4 @@
|
|
|
1
|
-
import { I18n } from "i18n-js";
|
|
2
|
-
import { TRANSLATIONS } from "../Translations";
|
|
3
1
|
import { LogType, papyrosLog } from "./Logging";
|
|
4
|
-
export const i18n = new I18n(TRANSLATIONS);
|
|
5
|
-
// Shorthand for ease of use
|
|
6
|
-
export const t = i18n.t.bind(i18n);
|
|
7
|
-
export function getLocales() {
|
|
8
|
-
return Object.keys(TRANSLATIONS);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Resolve an ElementIdentifier to the corresponding HTLMElement
|
|
12
|
-
* @param {ElementIdentifier} elementId The identifier for the element
|
|
13
|
-
* @return {T} The corresponding element
|
|
14
|
-
*/
|
|
15
|
-
export function getElement(elementId) {
|
|
16
|
-
if (typeof elementId === "string") {
|
|
17
|
-
return document.getElementById(elementId);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return elementId;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Add a listener to an HTML element for an event on an attribute
|
|
25
|
-
* Element attributes tend to be strings, but string Enums can also be used
|
|
26
|
-
* by using the type-parameter T
|
|
27
|
-
* @param {ElementIdentifier} elementId Identifier for the element
|
|
28
|
-
* @param {function(T)} onEvent The listener for the event
|
|
29
|
-
* @param {string} eventType The type of the event
|
|
30
|
-
* @param {string} attribute The attribute affected by the event
|
|
31
|
-
*/
|
|
32
|
-
export function addListener(elementId, onEvent, eventType = "change", attribute = "value") {
|
|
33
|
-
const element = getElement(elementId);
|
|
34
|
-
element.addEventListener(eventType, () => {
|
|
35
|
-
onEvent(element[attribute] || element.getAttribute(attribute));
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Unset the selected item of a select element to prevent a default selection
|
|
40
|
-
* @param {ElementIdentifier} selectId Identifier for the select element
|
|
41
|
-
*/
|
|
42
|
-
export function removeSelection(selectId) {
|
|
43
|
-
getElement(selectId).selectedIndex = -1;
|
|
44
|
-
}
|
|
45
2
|
/**
|
|
46
3
|
* Parse the data contained within a PapyrosEvent using its contentType
|
|
47
4
|
* Supported content types are: text/plain, text/json, img/png;base64
|
|
@@ -88,52 +45,4 @@ export function parseData(data, contentType) {
|
|
|
88
45
|
papyrosLog(LogType.Important, `Unhandled content type: ${contentType}`);
|
|
89
46
|
return data;
|
|
90
47
|
}
|
|
91
|
-
export function downloadResults(data, filename) {
|
|
92
|
-
const blob = new Blob([data], { type: "text/plain" });
|
|
93
|
-
const elem = window.document.createElement("a");
|
|
94
|
-
// Cast URL to any as TypeScript doesn't recognize it properly
|
|
95
|
-
// error TS2339: Property 'revokeObjectURL' does not exist on type
|
|
96
|
-
const windowUrl = URL;
|
|
97
|
-
elem.href = windowUrl.createObjectURL(blob);
|
|
98
|
-
elem.download = filename;
|
|
99
|
-
document.body.appendChild(elem);
|
|
100
|
-
elem.click();
|
|
101
|
-
document.body.removeChild(elem);
|
|
102
|
-
windowUrl.revokeObjectURL(elem.href);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Obtain the url of the current page without hashes, identifiers, query params, ...
|
|
106
|
-
* @param {boolean} endingSlash Whether the url should end in a slash
|
|
107
|
-
* @return {string} The current url
|
|
108
|
-
*/
|
|
109
|
-
export function cleanCurrentUrl(endingSlash = false) {
|
|
110
|
-
let url = location.origin + location.pathname;
|
|
111
|
-
if (endingSlash && !url.endsWith("/")) {
|
|
112
|
-
url += "/";
|
|
113
|
-
}
|
|
114
|
-
else if (!endingSlash && url.endsWith("/")) {
|
|
115
|
-
url = url.slice(0, url.length - 1);
|
|
116
|
-
}
|
|
117
|
-
return url;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Focus an element, setting the user's caret at the end of the contents
|
|
121
|
-
* Needed to ensure focusing a contenteditable element works as expected
|
|
122
|
-
* @param {HTMLElement} el The element to focus
|
|
123
|
-
*/
|
|
124
|
-
export function placeCaretAtEnd(el) {
|
|
125
|
-
// Source: https://stackoverflow.com/questions/4233265/contenteditable-set-caret-at-the-end-of-the-text-cross-browser
|
|
126
|
-
el.focus();
|
|
127
|
-
if (typeof window.getSelection !== "undefined" &&
|
|
128
|
-
typeof document.createRange !== "undefined") {
|
|
129
|
-
const range = document.createRange();
|
|
130
|
-
range.selectNodeContents(el);
|
|
131
|
-
range.collapse(false);
|
|
132
|
-
const sel = window.getSelection();
|
|
133
|
-
if (sel) {
|
|
134
|
-
sel.removeAllRanges();
|
|
135
|
-
sel.addRange(range);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
48
|
//# sourceMappingURL=Util.js.map
|
package/dist/util/Util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/util/Util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/util/Util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,WAAoB;IACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,YAAY,CAAC,CAAC,CAAC;oBAChB,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,uFAAuF;YACvF,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,2BAA2B,WAAW,EAAE,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,31 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dodona/papyros",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-beta-9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"homepage": ".",
|
|
6
6
|
"devDependencies": {
|
|
7
7
|
"@eslint/eslintrc": "^3.2.0",
|
|
8
8
|
"@eslint/js": "^9.18.0",
|
|
9
|
-
"@types/escape-html": "^1.0.3",
|
|
10
9
|
"@types/i18n-js": "^4.0.1",
|
|
11
|
-
"@types/
|
|
10
|
+
"@types/node": "^24.5.2",
|
|
11
|
+
"@types/node-polyglot": "^2.5.0",
|
|
12
12
|
"@types/serviceworker": "^0.0.152",
|
|
13
|
-
"
|
|
14
|
-
"css-loader": "^7.1.2",
|
|
13
|
+
"@vitest/browser": "^3.2.4",
|
|
15
14
|
"eslint": "^9.17.0",
|
|
16
15
|
"globals": "^16.0.0",
|
|
17
|
-
"
|
|
18
|
-
"jest": "^29.7.0",
|
|
19
|
-
"jest-environment-jsdom": "^30.1.2",
|
|
20
|
-
"postcss": "^8.4.31",
|
|
21
|
-
"postcss-import": "^16.0.0",
|
|
22
|
-
"postcss-loader": "^8.0.0",
|
|
23
|
-
"tailwindcss": "^3.3.5",
|
|
24
|
-
"ts-jest": "^29.1.1",
|
|
25
|
-
"ts-jest-mock-import-meta": "^1.1.0",
|
|
16
|
+
"playwright": "^1.55.1",
|
|
26
17
|
"typescript": "^5.2.2",
|
|
27
18
|
"typescript-eslint": "^8.21.0",
|
|
28
|
-
"vite": "^7.1.5"
|
|
19
|
+
"vite": "^7.1.5",
|
|
20
|
+
"vitest": "^3.2.4"
|
|
29
21
|
},
|
|
30
22
|
"dependencies": {
|
|
31
23
|
"@codemirror/autocomplete": "^6.11.1",
|
|
@@ -36,15 +28,15 @@
|
|
|
36
28
|
"@codemirror/lint": "^6.4.2",
|
|
37
29
|
"@codemirror/search": "^6.5.4",
|
|
38
30
|
"@codemirror/state": "^6.3.2",
|
|
39
|
-
"@codemirror/theme-one-dark": "^6.1.2",
|
|
40
31
|
"@codemirror/view": "^6.28.0",
|
|
32
|
+
"@dodona/lit-state": "^1.1.1",
|
|
41
33
|
"@dodona/trace-component": "1.3.1",
|
|
42
|
-
"@
|
|
34
|
+
"@material/web": "^2.4.0",
|
|
43
35
|
"codemirror-readonly-ranges": "^0.1.0-alpha.2",
|
|
44
36
|
"comlink": "^4.4.1",
|
|
45
37
|
"comsync": "^0.0.9",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
38
|
+
"lit": "^3.3.1",
|
|
39
|
+
"node-polyglot": "^2.6.0",
|
|
48
40
|
"pyodide": "^0.28.2",
|
|
49
41
|
"pyodide-worker-runner": "1.4.0",
|
|
50
42
|
"sync-message": "^0.0.12"
|
|
@@ -55,9 +47,9 @@
|
|
|
55
47
|
"build:app": "yarn build:sw && vite build",
|
|
56
48
|
"build:sw": "vite build --config vite.sw.config.ts",
|
|
57
49
|
"build:lib": "bash scripts/build_library.sh",
|
|
58
|
-
"test": "
|
|
50
|
+
"test": "vitest",
|
|
59
51
|
"lint": "eslint src",
|
|
60
|
-
"
|
|
52
|
+
"typecheck": "tsc --noEmit"
|
|
61
53
|
},
|
|
62
54
|
"description": "Scratchpad for multiple programming languages in the browser.",
|
|
63
55
|
"repository": {
|
package/dist/App.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "./Papyros.css";
|
package/dist/App.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import "./Papyros.css";
|
|
11
|
-
import { addPapyrosPrefix, DEFAULT_LOCALE, DEFAULT_PROGRAMMING_LANGUAGE, DEFAULT_SERVICE_WORKER } from "./Constants";
|
|
12
|
-
import { Papyros } from "./Papyros";
|
|
13
|
-
import { InputMode } from "./InputManager";
|
|
14
|
-
import { BatchInputHandler } from "./input/BatchInputHandler";
|
|
15
|
-
const LOCAL_STORAGE_KEYS = {
|
|
16
|
-
code: addPapyrosPrefix("previous-code"),
|
|
17
|
-
input: addPapyrosPrefix("previous-batch-input")
|
|
18
|
-
};
|
|
19
|
-
function setUpEditor(editor, storageKey) {
|
|
20
|
-
const previousValue = window.localStorage.getItem(storageKey);
|
|
21
|
-
if (previousValue) {
|
|
22
|
-
editor.setText(previousValue);
|
|
23
|
-
}
|
|
24
|
-
editor.onChange({
|
|
25
|
-
onChange: (text) => {
|
|
26
|
-
window.localStorage.setItem(storageKey, text);
|
|
27
|
-
},
|
|
28
|
-
delay: 0
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
function startPapyros() {
|
|
32
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
// Retrieve initial locale and programming language from URL
|
|
34
|
-
// This allows easier sharing of Papyros-related links with others
|
|
35
|
-
// While preventing loading an unwanted backend
|
|
36
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
37
|
-
const language = Papyros.toProgrammingLanguage(urlParams.get("language") ||
|
|
38
|
-
DEFAULT_PROGRAMMING_LANGUAGE);
|
|
39
|
-
const locale = urlParams.get("locale") || DEFAULT_LOCALE;
|
|
40
|
-
const config = {
|
|
41
|
-
standAlone: true,
|
|
42
|
-
programmingLanguage: language,
|
|
43
|
-
locale: locale,
|
|
44
|
-
inputMode: InputMode.Batch,
|
|
45
|
-
channelOptions: {
|
|
46
|
-
serviceWorkerName: DEFAULT_SERVICE_WORKER
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
const papyros = new Papyros(config);
|
|
50
|
-
let darkMode = false;
|
|
51
|
-
if (window.matchMedia) {
|
|
52
|
-
darkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
53
|
-
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", e => {
|
|
54
|
-
papyros.setDarkMode(e.matches);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
papyros.render({
|
|
58
|
-
standAloneOptions: {
|
|
59
|
-
parentElementId: "root"
|
|
60
|
-
},
|
|
61
|
-
darkMode: darkMode,
|
|
62
|
-
traceOptions: {
|
|
63
|
-
parentElementId: "trace-root"
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
setUpEditor(papyros.codeRunner.editor, LOCAL_STORAGE_KEYS.code);
|
|
67
|
-
papyros.codeRunner.editor.focus();
|
|
68
|
-
const handler = papyros.codeRunner.inputManager.getInputHandler(InputMode.Batch);
|
|
69
|
-
if (handler instanceof BatchInputHandler) {
|
|
70
|
-
setUpEditor(handler.batchEditor, LOCAL_STORAGE_KEYS.input);
|
|
71
|
-
}
|
|
72
|
-
yield papyros.launch();
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
startPapyros();
|
|
76
|
-
//# sourceMappingURL=App.js.map
|
package/dist/App.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
|
package/dist/Backend.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Backend.js","sourceRoot":"","sources":["../src/Backend.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA8BxD,MAAM,CAAN,IAAY,OAIX;AAJD,WAAY,OAAO;IACf,sBAAW,CAAA;IACX,0BAAe,CAAA;IACf,8BAAmB,CAAA;AACvB,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB;AAED,MAAM,OAAgB,OAAO;IAczB;;;;OAIG;IACH;QACI,IAAI,CAAC,MAAM,GAAG,EAAY,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;YAChB,+BAA+B;QACnC,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,EAAuB,CAAC;IACzC,CAAC;IAED;;OAEG;IACO,UAAU;QAChB,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACU,MAAM,CACf,OAAkC,EAClC,UAAsB;;YAEtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAe,EAAE,EAAE;gBAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBACpC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrC,CAAC;YACL,CAAC,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YACxE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;KAAA;IAED;;;;OAIG;IACH,6DAA6D;IACtD,QAAQ,CAAC,IAAY;QACxB,OAAO,EAAE,CAAC;IACd,CAAC;IAiBD;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,6DAA6D;IACtD,YAAY,CAAC,WAAmC,EAAE,SAAiC;QACtF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ"}
|
package/dist/BackendEvent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackendEvent.js","sourceRoot":"","sources":["../src/BackendEvent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,gBAYX;AAZD,WAAY,gBAAgB;IACxB,mCAAe,CAAA;IACf,+BAAW,CAAA;IACX,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,mCAAe,CAAA;IACf,mCAAe,CAAA;IACf,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,gDAA4B,CAAA;IAC5B,iCAAa,CAAA;AACjB,CAAC,EAZW,gBAAgB,KAAhB,gBAAgB,QAY3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackendEventQueue.js","sourceRoot":"","sources":["../src/BackendEventQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackendManager.js","sourceRoot":"","sources":["../src/BackendManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAgB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAW,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAOtD;;;GAGG;AACH,MAAM,OAAgB,cAAc;IAuBhC;;;OAGG;IACI,MAAM,CAAC,eAAe,CAAC,QAA6B,EACvD,cAAyC;QACzC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,UAAU,CAAC,QAA6B;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS;YAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,wBAAwB;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC1C,OAAO,UAAU,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,wBAAwB,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,aAAa,CAAC,QAA6B;QACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,SAAS,CAAC,IAAsB,EAAE,UAAgC;QAC5E,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,OAAO,CAAC,CAAe;QACjC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACpC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACxG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,IAAI;QACf,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IACjC,CAAC;CA8BJ;AA5BG;;GAEG;AACH;IACI,cAAc,CAAC,OAAO,GAAG,WAAW,EAAG,CAAC;IACxC,cAAc,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5C,cAAc,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IACtC,cAAc,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;IACzC,cAAc,CAAC,eAAe,CAAC,mBAAmB,CAAC,MAAM,EACrD,GAAG,EAAE,CAAC,IAAI,aAAa,CACnB,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAClE,IAAI,EAAE,QAAQ;KACjB,CAAC,EACF,cAAc,CAAC,OAAO,CACzB,CACJ,CAAC;IACF,cAAc,CAAC,eAAe,CAAC,mBAAmB,CAAC,UAAU,EACzD,GAAG,EAAE,CAAC,IAAI,UAAU,CAChB,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtE,IAAI,EAAE,QAAQ;KACjB,CAAC,EACF,cAAc,CAAC,OAAO,CACzB,CACJ,CAAC;IACF,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;IAC9B,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACtF,CAAC,GAAA,CAAA"}
|
package/dist/CodeRunner.d.ts
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { RunMode } from "./Backend";
|
|
2
|
-
import { CodeEditor } from "./editor/CodeEditor";
|
|
3
|
-
import { InputManager, InputManagerRenderOptions, InputMode } from "./InputManager";
|
|
4
|
-
import { ProgrammingLanguage } from "./ProgrammingLanguage";
|
|
5
|
-
import { ButtonOptions, Renderable, RenderOptions } from "./util/Rendering";
|
|
6
|
-
import { OutputManager } from "./OutputManager";
|
|
7
|
-
import { Debugger } from "./Debugger";
|
|
8
|
-
interface CodeRunnerRenderOptions {
|
|
9
|
-
/**
|
|
10
|
-
* Options for rendering the panel
|
|
11
|
-
*/
|
|
12
|
-
statusPanelOptions: RenderOptions;
|
|
13
|
-
/**
|
|
14
|
-
* Options for rendering the InputManager
|
|
15
|
-
*/
|
|
16
|
-
inputOptions: InputManagerRenderOptions;
|
|
17
|
-
/**
|
|
18
|
-
* Options for rendering the editor
|
|
19
|
-
*/
|
|
20
|
-
codeEditorOptions: RenderOptions;
|
|
21
|
-
/**
|
|
22
|
-
* RenderOptions for the output field
|
|
23
|
-
*/
|
|
24
|
-
outputOptions: RenderOptions;
|
|
25
|
-
traceOptions: RenderOptions;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Enum representing the possible states while processing code
|
|
29
|
-
*/
|
|
30
|
-
export declare enum RunState {
|
|
31
|
-
Loading = "loading",
|
|
32
|
-
Running = "running",
|
|
33
|
-
AwaitingInput = "awaiting_input",
|
|
34
|
-
Stopping = "stopping",
|
|
35
|
-
Ready = "ready"
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Interface to represent information required when handling loading events
|
|
39
|
-
*/
|
|
40
|
-
export interface LoadingData {
|
|
41
|
-
/**
|
|
42
|
-
* List of module names that are being loaded
|
|
43
|
-
*/
|
|
44
|
-
modules: Array<string>;
|
|
45
|
-
/**
|
|
46
|
-
* The status of the import
|
|
47
|
-
*/
|
|
48
|
-
status: "loading" | "loaded" | "failed";
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Helper component to manage and visualize the current RunState
|
|
52
|
-
*/
|
|
53
|
-
export declare class CodeRunner extends Renderable<CodeRunnerRenderOptions> {
|
|
54
|
-
/**
|
|
55
|
-
* The currently used programming language
|
|
56
|
-
*/
|
|
57
|
-
private programmingLanguage;
|
|
58
|
-
/**
|
|
59
|
-
* The editor in which the code is written
|
|
60
|
-
*/
|
|
61
|
-
readonly editor: CodeEditor;
|
|
62
|
-
/**
|
|
63
|
-
* Component to request and handle input from the user
|
|
64
|
-
*/
|
|
65
|
-
readonly inputManager: InputManager;
|
|
66
|
-
/**
|
|
67
|
-
* Component to handle output generated by the user's code
|
|
68
|
-
*/
|
|
69
|
-
readonly outputManager: OutputManager;
|
|
70
|
-
readonly traceViewer: Debugger;
|
|
71
|
-
/**
|
|
72
|
-
* The backend that executes the code asynchronously
|
|
73
|
-
*/
|
|
74
|
-
private backend;
|
|
75
|
-
/**
|
|
76
|
-
* Current state of the program
|
|
77
|
-
*/
|
|
78
|
-
private state;
|
|
79
|
-
/**
|
|
80
|
-
* Foreign buttons inserted into this component
|
|
81
|
-
*/
|
|
82
|
-
private userButtons;
|
|
83
|
-
/**
|
|
84
|
-
* Internal buttons for different run modes
|
|
85
|
-
*/
|
|
86
|
-
private runButtons;
|
|
87
|
-
/**
|
|
88
|
-
* Array of packages that are being installed
|
|
89
|
-
*/
|
|
90
|
-
private loadingPackages;
|
|
91
|
-
/**
|
|
92
|
-
* Previous state to restore when loading is done
|
|
93
|
-
*/
|
|
94
|
-
private previousState;
|
|
95
|
-
/**
|
|
96
|
-
* Time at which the setState call occurred
|
|
97
|
-
*/
|
|
98
|
-
private runStartTime;
|
|
99
|
-
private _debugMode;
|
|
100
|
-
/**
|
|
101
|
-
* Construct a new RunStateManager with the given listeners
|
|
102
|
-
* @param {ProgrammingLanguage} programmingLanguage The language to use
|
|
103
|
-
* @param {InputMode} inputMode The input mode to use
|
|
104
|
-
*/
|
|
105
|
-
constructor(programmingLanguage: ProgrammingLanguage, inputMode: InputMode);
|
|
106
|
-
private set debugMode(value);
|
|
107
|
-
private get debugMode();
|
|
108
|
-
/**
|
|
109
|
-
* Stops the current run and resets the state of the program
|
|
110
|
-
* Regular and debug output is cleared
|
|
111
|
-
* @return {Promise<void>} Returns when the program has been reset
|
|
112
|
-
*/
|
|
113
|
-
reset(): Promise<void>;
|
|
114
|
-
private updateRunButtons;
|
|
115
|
-
private addRunButton;
|
|
116
|
-
/**
|
|
117
|
-
* Start the backend to enable running code
|
|
118
|
-
*/
|
|
119
|
-
start(): Promise<void>;
|
|
120
|
-
/**
|
|
121
|
-
* Interrupt the currently running code
|
|
122
|
-
* @return {Promise<void>} Returns when the code has been interrupted
|
|
123
|
-
*/
|
|
124
|
-
stop(): Promise<void>;
|
|
125
|
-
/**
|
|
126
|
-
* Set the used programming language to the given one to allow editing and running code
|
|
127
|
-
* @param {ProgrammingLanguage} programmingLanguage The language to use
|
|
128
|
-
*/
|
|
129
|
-
setProgrammingLanguage(programmingLanguage: ProgrammingLanguage): Promise<void>;
|
|
130
|
-
provideFiles(inlinedFiles: Record<string, string>, hrefFiles: Record<string, string>): Promise<void>;
|
|
131
|
-
/**
|
|
132
|
-
* @return {ProgrammingLanguage} The current programming language
|
|
133
|
-
*/
|
|
134
|
-
getProgrammingLanguage(): ProgrammingLanguage;
|
|
135
|
-
/**
|
|
136
|
-
* Show or hide the spinning circle, representing a running animation
|
|
137
|
-
* @param {boolean} show Whether to show the spinner
|
|
138
|
-
*/
|
|
139
|
-
private showSpinner;
|
|
140
|
-
/**
|
|
141
|
-
* Show the current state of the program to the user
|
|
142
|
-
* @param {RunState} state The current state of the run
|
|
143
|
-
* @param {string} message Optional message to indicate the state
|
|
144
|
-
*/
|
|
145
|
-
setState(state: RunState, message?: string): void;
|
|
146
|
-
/**
|
|
147
|
-
* @return {RunState} The state of the current run
|
|
148
|
-
*/
|
|
149
|
-
getState(): RunState;
|
|
150
|
-
/**
|
|
151
|
-
* Remove a button from the internal button list. Requires a re-render to update
|
|
152
|
-
* @param {string} id Identifier of the button to remove
|
|
153
|
-
*/
|
|
154
|
-
private removeButton;
|
|
155
|
-
/**
|
|
156
|
-
* Add a button to display to the user
|
|
157
|
-
* @param {ButtonOptions} options Options for rendering the button
|
|
158
|
-
* @param {function} onClick Listener for click events on the button
|
|
159
|
-
*/
|
|
160
|
-
addButton(options: ButtonOptions, onClick: () => void): void;
|
|
161
|
-
/**
|
|
162
|
-
* Generate a button that the user can click to process code
|
|
163
|
-
* Can either run the code or interrupt it if already running
|
|
164
|
-
* @return {DynamicButton} A list of buttons to interact with the code according to the current state
|
|
165
|
-
*/
|
|
166
|
-
private getCodeActionButtons;
|
|
167
|
-
/**
|
|
168
|
-
* @param {DynamicButton[]} buttons The buttons to render
|
|
169
|
-
* @param {string} id The id of the element to render the buttons in
|
|
170
|
-
*/
|
|
171
|
-
private renderButtons;
|
|
172
|
-
private renderCodeActionButtons;
|
|
173
|
-
private renderUserButtons;
|
|
174
|
-
protected _render(options: CodeRunnerRenderOptions): HTMLElement;
|
|
175
|
-
/**
|
|
176
|
-
* Execute the code in the editor
|
|
177
|
-
* @param {RunMode} mode The mode to run with
|
|
178
|
-
* @return {Promise<void>} Promise of running the code
|
|
179
|
-
*/
|
|
180
|
-
runCode(mode?: RunMode): Promise<void>;
|
|
181
|
-
/**
|
|
182
|
-
* Callback to handle loading events
|
|
183
|
-
* @param {BackendEvent} e The loading event
|
|
184
|
-
*/
|
|
185
|
-
private onLoad;
|
|
186
|
-
private onStart;
|
|
187
|
-
}
|
|
188
|
-
export {};
|