@dodona/papyros 3.0.2 → 4.0.0-beta.2
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 +133 -72
- package/dist/Components.d.ts +4 -0
- package/dist/Components.js +5 -0
- package/dist/Components.js.map +1 -0
- package/dist/Papyros.d.ts +18 -127
- package/dist/Papyros.js +39 -211
- package/dist/Papyros.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 +62 -0
- package/dist/frontend/components/Debugger.js.map +1 -0
- package/dist/frontend/components/Input.d.ts +17 -0
- package/dist/frontend/components/Input.js +73 -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 +206 -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 +19 -0
- package/dist/frontend/components/input/BatchInput.js +92 -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 +80 -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 +55 -0
- package/dist/frontend/state/InputOutput.js +93 -0
- package/dist/frontend/state/InputOutput.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 +1 -4
- package/dist/util/Util.js +7 -8
- 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/Library.d.ts +0 -12
- package/dist/Library.js +0 -9
- package/dist/Library.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/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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BackendEventType } from "./BackendEvent";
|
|
2
1
|
/**
|
|
3
2
|
* Queue to limit the amount of messages sent between threads
|
|
4
3
|
* This prevents communication issues which arise either in Comlink
|
|
@@ -7,20 +6,13 @@ import { BackendEventType } from "./BackendEvent";
|
|
|
7
6
|
export class BackendEventQueue {
|
|
8
7
|
/**
|
|
9
8
|
* @param {function(BackendEvent):void} callback Function to process events in the queue
|
|
10
|
-
* @param {function():void} onOverflow Callback for when overflow occurs
|
|
11
|
-
* @param {number} limit The maximal amount of output lines to send before overflowing
|
|
12
9
|
* @param {number} flushTime The time in milliseconds before sending events through
|
|
13
10
|
*/
|
|
14
|
-
constructor(callback,
|
|
11
|
+
constructor(callback, flushTime = 100) {
|
|
15
12
|
this.callback = callback;
|
|
16
|
-
this.limit = limit;
|
|
17
13
|
this.flushTime = flushTime;
|
|
18
14
|
this.queue = [];
|
|
19
|
-
this.overflow = [];
|
|
20
|
-
this.onOverflow = onOverflow;
|
|
21
|
-
this.overflown = false;
|
|
22
15
|
this.lastFlushTime = new Date().getTime();
|
|
23
|
-
this.sendCount = 0;
|
|
24
16
|
this.decoder = new TextDecoder();
|
|
25
17
|
}
|
|
26
18
|
/**
|
|
@@ -81,53 +73,18 @@ export class BackendEventQueue {
|
|
|
81
73
|
*/
|
|
82
74
|
reset() {
|
|
83
75
|
this.queue = [];
|
|
84
|
-
this.overflow = [];
|
|
85
|
-
this.overflown = false;
|
|
86
76
|
this.lastFlushTime = new Date().getTime();
|
|
87
|
-
this.sendCount = 0;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* @param {BackendEvent} e The event put in the queue
|
|
91
|
-
* @return {number} The amount of lines of data in the event
|
|
92
|
-
*/
|
|
93
|
-
static lines(e) {
|
|
94
|
-
return (e.data.match(/\n/g) || []).length + 1;
|
|
95
77
|
}
|
|
96
78
|
/**
|
|
97
79
|
* Flush the queue contents using the callback
|
|
98
80
|
*/
|
|
99
81
|
flush() {
|
|
100
82
|
this.queue.forEach(e => {
|
|
101
|
-
|
|
102
|
-
this.overflow.push(e);
|
|
103
|
-
if (this.sendCount < this.limit) {
|
|
104
|
-
this.sendCount += BackendEventQueue.lines(e);
|
|
105
|
-
this.callback(e);
|
|
106
|
-
}
|
|
107
|
-
else if (!this.overflown) {
|
|
108
|
-
this.overflown = true;
|
|
109
|
-
this.onOverflow();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
this.callback(e);
|
|
114
|
-
}
|
|
83
|
+
this.callback(e);
|
|
115
84
|
});
|
|
116
85
|
this.queue = [];
|
|
117
86
|
this.lastFlushTime = new Date().getTime();
|
|
118
87
|
}
|
|
119
|
-
/**
|
|
120
|
-
* @return {boolean} Whether too many output events were generated
|
|
121
|
-
*/
|
|
122
|
-
hasOverflow() {
|
|
123
|
-
return this.overflown;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* @return {Array<BackendEvent>} The events that happened after overflow
|
|
127
|
-
*/
|
|
128
|
-
getOverflow() {
|
|
129
|
-
return this.overflow;
|
|
130
|
-
}
|
|
131
88
|
/**
|
|
132
89
|
* @param {Function} callback The event-consuming callback
|
|
133
90
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendEventQueue.js","sourceRoot":"","sources":["../../src/communication/BackendEventQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Backend } from "
|
|
2
|
-
import { ProgrammingLanguage } from "
|
|
1
|
+
import { Backend } from "../backend/Backend";
|
|
2
|
+
import { ProgrammingLanguage } from "../ProgrammingLanguage";
|
|
3
3
|
import { BackendEvent, BackendEventType } from "./BackendEvent";
|
|
4
4
|
import { Channel } from "sync-message";
|
|
5
5
|
import { SyncClient } from "comsync";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ProgrammingLanguage } from "
|
|
1
|
+
import { ProgrammingLanguage } from "../ProgrammingLanguage";
|
|
2
2
|
import { BackendEventType } from "./BackendEvent";
|
|
3
|
-
import { LogType, papyrosLog } from "
|
|
3
|
+
import { LogType, papyrosLog } from "../util/Logging";
|
|
4
4
|
import { makeChannel } from "sync-message";
|
|
5
5
|
import { SyncClient } from "comsync";
|
|
6
6
|
import { PyodideClient } from "pyodide-worker-runner";
|
|
@@ -85,10 +85,10 @@ export class BackendManager {
|
|
|
85
85
|
BackendManager.createBackendMap = new Map();
|
|
86
86
|
BackendManager.backendMap = new Map();
|
|
87
87
|
BackendManager.subscriberMap = new Map();
|
|
88
|
-
BackendManager.registerBackend(ProgrammingLanguage.Python, () => new PyodideClient(() => new Worker(new URL("
|
|
88
|
+
BackendManager.registerBackend(ProgrammingLanguage.Python, () => new PyodideClient(() => new Worker(new URL("../backend/workers/python/worker", import.meta.url), {
|
|
89
89
|
type: "module",
|
|
90
90
|
}), BackendManager.channel));
|
|
91
|
-
BackendManager.registerBackend(ProgrammingLanguage.JavaScript, () => new SyncClient(() => new Worker(new URL("
|
|
91
|
+
BackendManager.registerBackend(ProgrammingLanguage.JavaScript, () => new SyncClient(() => new Worker(new URL("../backend/workers/javascript/worker", import.meta.url), {
|
|
92
92
|
type: "module",
|
|
93
93
|
}), BackendManager.channel));
|
|
94
94
|
BackendManager.halted = false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendManager.js","sourceRoot":"","sources":["../../src/communication/BackendManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
/**
|
|
11
|
+
* Default service worker to process user input using HTTP requests
|
|
12
|
+
*/
|
|
13
|
+
// Import service worker provided by the Papyros-package
|
|
14
|
+
import { InputWorker } from "./InputWorker";
|
|
15
|
+
// Strip away the filename of the script to obtain the scope
|
|
16
|
+
// let domain = location.href;
|
|
17
|
+
// domain = domain.slice(0, domain.lastIndexOf("/") + 1);
|
|
18
|
+
const domain = ""; // Disable SharedArrayBuffers to use same environment as Dodona
|
|
19
|
+
const inputHandler = new InputWorker(domain);
|
|
20
|
+
addEventListener("fetch", function (event) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
if (!(yield inputHandler.handleInputRequest(event))) {
|
|
23
|
+
// Not a Papyros-specific request
|
|
24
|
+
// Fetch as we would handle a normal request
|
|
25
|
+
// Default action is to let browser handle it by not responding here
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
// Prevent needing to reload page to have working input
|
|
31
|
+
addEventListener("install", function (event) {
|
|
32
|
+
event.waitUntil(skipWaiting());
|
|
33
|
+
});
|
|
34
|
+
addEventListener("activate", function (event) {
|
|
35
|
+
event.waitUntil(clients.claim());
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=InputServiceWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputServiceWorker.js","sourceRoot":"","sources":["../../src/communication/InputServiceWorker.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;GAEG;AACH,wDAAwD;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,4DAA4D;AAC5D,8BAA8B;AAC9B,yDAAyD;AACzD,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,+DAA+D;AAClF,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAE7C,gBAAgB,CAAC,OAAO,EAAE,UAAgB,KAAiB;;QACvD,IAAI,CAAC,CAAA,MAAM,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA,EAAE,CAAC;YAChD,iCAAiC;YACjC,4CAA4C;YAC5C,oEAAoE;YACpE,OAAO;QACX,CAAC;IACL,CAAC;CAAA,CAAC,CAAC;AACH,uDAAuD;AACvD,gBAAgB,CAAC,SAAS,EAAE,UAAU,KAAsB;IACxD,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AACH,gBAAgB,CAAC,UAAU,EAAE,UAAU,KAAsB;IACzD,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputWorker.js","sourceRoot":"","sources":["../../src/communication/InputWorker.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IAMpB;;;OAGG;IACH,YAAY,QAAQ,GAAG,EAAE;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,0BAA0B,EAAE,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACU,kBAAkB,CAAC,KAAiB;;YAC7C,2DAA2D;YAC3D,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,6BAA6B;gBAC7E,KAAK,CAAC,WAAW,CACb,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACb,uDAAuD;oBACvD,+BAA+B;oBAC/B,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACjD,UAAU,CAAC,GAAG,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;oBAC/D,UAAU,CAAC,GAAG,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC;oBAC5D,UAAU,CAAC,GAAG,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;oBAE/D,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;wBAC/C,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;wBAC9B,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,OAAO,EAAE,UAAU;qBACtB,CAAC,CAAC;oBACH,OAAO,cAAc,CAAC;gBAC1B,CAAC,CAAC,CAAC,CAAC;gBACZ,OAAO,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;KAAA;CACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
2
|
+
import { CSSResult, TemplateResult } from "lit";
|
|
3
|
+
import "./code_runner/Code";
|
|
4
|
+
import "./code_runner/RunState";
|
|
5
|
+
import "./code_runner/ButtonLint";
|
|
6
|
+
export declare class CodeRunner extends PapyrosElement {
|
|
7
|
+
static get styles(): CSSResult;
|
|
8
|
+
protected render(): TemplateResult;
|
|
9
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement } from "lit/decorators.js";
|
|
8
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
9
|
+
import { css, html } from "lit";
|
|
10
|
+
import "./code_runner/Code";
|
|
11
|
+
import "./code_runner/RunState";
|
|
12
|
+
import "./code_runner/ButtonLint";
|
|
13
|
+
let CodeRunner = class CodeRunner extends PapyrosElement {
|
|
14
|
+
static get styles() {
|
|
15
|
+
return css `
|
|
16
|
+
:host {
|
|
17
|
+
width: 100%;
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
border-radius: 0.5rem;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
div {
|
|
24
|
+
flex-grow: 1;
|
|
25
|
+
min-height: 0;
|
|
26
|
+
position: relative;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
p-run-state {
|
|
30
|
+
position: absolute;
|
|
31
|
+
bottom: 0;
|
|
32
|
+
right: 6px;
|
|
33
|
+
background-color: var(--md-sys-color-surface-container);
|
|
34
|
+
padding: 0.25rem 1rem;
|
|
35
|
+
border-top-right-radius: 1rem;
|
|
36
|
+
border-top-left-radius: 1rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
p-button-lint {
|
|
40
|
+
background-color: var(--md-sys-color-surface-container);
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
}
|
|
44
|
+
render() {
|
|
45
|
+
return html `
|
|
46
|
+
<div>
|
|
47
|
+
<p-code .papyros=${this.papyros}></p-code>
|
|
48
|
+
${this.papyros.runner.stateMessage ? html `<p-run-state .papyros=${this.papyros}></p-run-state>` : ""}
|
|
49
|
+
</div>
|
|
50
|
+
<p-button-lint .papyros=${this.papyros}>
|
|
51
|
+
<slot name="buttons"></slot>
|
|
52
|
+
</p-button-lint>
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
CodeRunner = __decorate([
|
|
57
|
+
customElement("p-code-runner")
|
|
58
|
+
], CodeRunner);
|
|
59
|
+
export { CodeRunner };
|
|
60
|
+
//# sourceMappingURL=CodeRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeRunner.js","sourceRoot":"","sources":["../../../src/frontend/components/CodeRunner.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;AAG3B,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,cAAc;IAC1C,MAAM,KAAK,MAAM;QACb,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;SA2BT,CAAA;IACL,CAAC;IAEkB,MAAM;QACrB,OAAO,IAAI,CAAA;;mCAEgB,IAAI,CAAC,OAAO;kBAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA,yBAAyB,IAAI,CAAC,OAAO,iBAAiB,CAAA,CAAC,CAAA,EAAE;;sCAE5E,IAAI,CAAC,OAAO;;;SAGzC,CAAA;IACL,CAAC;CAEJ,CAAA;AA5CY,UAAU;IADtB,aAAa,CAAC,eAAe,CAAC;GAClB,UAAU,CA4CtB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CSSResult, TemplateResult } from "lit";
|
|
2
|
+
import "@dodona/trace-component";
|
|
3
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
4
|
+
export declare class Debugger extends PapyrosElement {
|
|
5
|
+
static get styles(): CSSResult;
|
|
6
|
+
protected render(): TemplateResult;
|
|
7
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { css, html } from "lit";
|
|
8
|
+
import "@dodona/trace-component";
|
|
9
|
+
import { customElement } from "lit/decorators.js";
|
|
10
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
11
|
+
let Debugger = class Debugger extends PapyrosElement {
|
|
12
|
+
static get styles() {
|
|
13
|
+
return css `
|
|
14
|
+
tc-trace,
|
|
15
|
+
tc-trace * {
|
|
16
|
+
/* Base / surface */
|
|
17
|
+
--tc-surface-color: var(--md-sys-color-surface-container);
|
|
18
|
+
--tc-on-surface-color: var(--md-sys-color-on-surface);
|
|
19
|
+
--tc-surface-container-color: var(--md-sys-color-surface-container-highest);
|
|
20
|
+
--tc-outline-color: var(--md-sys-color-outline);
|
|
21
|
+
--tc-outline-variant-color: var(--md-sys-color-outline-variant);
|
|
22
|
+
--tc-primary-color: var(--md-sys-color-primary);
|
|
23
|
+
|
|
24
|
+
/* Secondary */
|
|
25
|
+
--tc-secondary-surface-color: var(--md-sys-color-secondary-container);
|
|
26
|
+
--tc-secondary-on-surface-color: var(--md-sys-color-on-secondary-container);
|
|
27
|
+
--tc-secondary-surface-container-color: var(--md-sys-color-secondary-container);
|
|
28
|
+
--tc-secondary-outline-color: var(--md-sys-color-outline);
|
|
29
|
+
--tc-secondary-color: var(--md-sys-color-secondary);
|
|
30
|
+
|
|
31
|
+
/* Tertiary */
|
|
32
|
+
--tc-tertiary-surface-color: var(--md-sys-color-tertiary-container);
|
|
33
|
+
--tc-tertiary-on-surface-color: var(--md-sys-color-on-tertiary-container);
|
|
34
|
+
--tc-tertiary-surface-container-color: var(--md-sys-color-tertiary-container);
|
|
35
|
+
--tc-tertiary-outline-color: var(--md-sys-color-outline);
|
|
36
|
+
--tc-tertiary-color: var(--md-sys-color-tertiary);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.place-holder {
|
|
40
|
+
color: var(--md-sys-color-on-surface);
|
|
41
|
+
opacity: 0.5;
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
render() {
|
|
46
|
+
if (!this.papyros.debugger.active) {
|
|
47
|
+
return html `<div class="place-holder">${this.t("Papyros.debug_placeholder")}</div>`;
|
|
48
|
+
}
|
|
49
|
+
return html `<tc-trace
|
|
50
|
+
.trace=${this.papyros.debugger.trace}
|
|
51
|
+
.translations=${this.papyros.i18n.getTranslations("Papyros.debugger")}
|
|
52
|
+
@frame-change=${(e) => {
|
|
53
|
+
this.papyros.debugger.activeFrame = e.detail.frame;
|
|
54
|
+
}}
|
|
55
|
+
></tc-trace>`;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
Debugger = __decorate([
|
|
59
|
+
customElement("p-debugger")
|
|
60
|
+
], Debugger);
|
|
61
|
+
export { Debugger };
|
|
62
|
+
//# sourceMappingURL=Debugger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Debugger.js","sourceRoot":"","sources":["../../../src/frontend/components/Debugger.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,cAAc;IACxC,MAAM,KAAc,MAAM;QACtB,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA8BT,CAAC;IACN,CAAC;IAEkB,MAAM;QACrB,IAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAA,6BAA6B,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC;QACxF,CAAC;QAED,OAAO,IAAI,CAAA;yBACM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;gCACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gCACrD,CAAC,CAAc,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACvD,CACJ;qBACqB,CAAC;IAClB,CAAC;CACJ,CAAA;AAjDY,QAAQ;IADpB,aAAa,CAAC,YAAY,CAAC;GACf,QAAQ,CAiDpB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CSSResult, TemplateResult } from "lit";
|
|
2
|
+
import "./input/BatchInput";
|
|
3
|
+
import "./input/InteractiveInput";
|
|
4
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
5
|
+
import "@material/web/switch/switch";
|
|
6
|
+
declare enum InputMode {
|
|
7
|
+
batch = "batch",
|
|
8
|
+
interactive = "interactive"
|
|
9
|
+
}
|
|
10
|
+
export declare class Input extends PapyrosElement {
|
|
11
|
+
mode: InputMode;
|
|
12
|
+
static get styles(): CSSResult;
|
|
13
|
+
get otherMode(): InputMode;
|
|
14
|
+
toggleMode(): void;
|
|
15
|
+
protected render(): TemplateResult;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement, property } from "lit/decorators.js";
|
|
8
|
+
import { css, html } from "lit";
|
|
9
|
+
import "./input/BatchInput";
|
|
10
|
+
import "./input/InteractiveInput";
|
|
11
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
12
|
+
import "@material/web/switch/switch";
|
|
13
|
+
var InputMode;
|
|
14
|
+
(function (InputMode) {
|
|
15
|
+
InputMode["batch"] = "batch";
|
|
16
|
+
InputMode["interactive"] = "interactive";
|
|
17
|
+
})(InputMode || (InputMode = {}));
|
|
18
|
+
let Input = class Input extends PapyrosElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.mode = InputMode.interactive;
|
|
22
|
+
}
|
|
23
|
+
static get styles() {
|
|
24
|
+
return css `
|
|
25
|
+
label {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: 0.5rem;
|
|
29
|
+
margin-top: 0.5rem;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:host {
|
|
33
|
+
width: 100%;
|
|
34
|
+
height: fit-content;
|
|
35
|
+
display: block;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
p-batch-input {
|
|
39
|
+
height: 200px;
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
get otherMode() {
|
|
44
|
+
return this.mode === InputMode.batch ? InputMode.interactive : InputMode.batch;
|
|
45
|
+
}
|
|
46
|
+
toggleMode() {
|
|
47
|
+
this.mode = this.otherMode;
|
|
48
|
+
}
|
|
49
|
+
render() {
|
|
50
|
+
if (this.papyros.debugger.active) {
|
|
51
|
+
this.mode = InputMode.batch;
|
|
52
|
+
}
|
|
53
|
+
return html `
|
|
54
|
+
${this.mode === InputMode.batch ?
|
|
55
|
+
html `<p-batch-input .papyros=${this.papyros}></p-batch-input>` :
|
|
56
|
+
html `<p-interactive-input .papyros=${this.papyros}></p-interactive-input>`}
|
|
57
|
+
<label>
|
|
58
|
+
<md-switch .selected=${this.mode === InputMode.batch}
|
|
59
|
+
?disabled=${this.papyros.debugger.active}
|
|
60
|
+
@change=${() => this.toggleMode()}></md-switch>
|
|
61
|
+
${this.t(`Papyros.switch_input_mode_to.${this.otherMode}`)}
|
|
62
|
+
</label>
|
|
63
|
+
`;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
__decorate([
|
|
67
|
+
property({ state: true })
|
|
68
|
+
], Input.prototype, "mode", void 0);
|
|
69
|
+
Input = __decorate([
|
|
70
|
+
customElement("p-input")
|
|
71
|
+
], Input);
|
|
72
|
+
export { Input };
|
|
73
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/frontend/components/Input.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,6BAA6B,CAAC;AAErC,IAAK,SAGJ;AAHD,WAAK,SAAS;IACV,4BAAe,CAAA;IACf,wCAA2B,CAAA;AAC/B,CAAC,EAHI,SAAS,KAAT,SAAS,QAGb;AAGM,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,cAAc;IAAlC;;QAEC,SAAI,GAAc,SAAS,CAAC,WAAW,CAAC;IA+ChD,CAAC;IA9CG,MAAM,KAAK,MAAM;QACb,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;SAiBT,CAAA;IACL,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;IACnF,CAAC;IAED,UAAU;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,CAAC;IAEkB,MAAM;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAA;cACL,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAA,2BAA2B,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC;YAChE,IAAI,CAAA,iCAAiC,IAAI,CAAC,OAAO,yBAAyB;;uCAE3C,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;uCAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;qCAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;kBAC1C,IAAI,CAAC,CAAC,CAAC,gCAAgC,IAAI,CAAC,SAAS,EAAE,CAAC;;SAEjE,CAAC;IACN,CAAC;CACJ,CAAA;AA/CO;IADH,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;mCACkB;AAFnC,KAAK;IADjB,aAAa,CAAC,SAAS,CAAC;GACZ,KAAK,CAiDjB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CSSResult, TemplateResult } from "lit";
|
|
2
|
+
import { OutputEntry } from "../state/InputOutput";
|
|
3
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
4
|
+
import "@material/web/icon/icon";
|
|
5
|
+
export declare class Output extends PapyrosElement {
|
|
6
|
+
static get styles(): CSSResult;
|
|
7
|
+
private get maxOutputLength();
|
|
8
|
+
get outputs(): OutputEntry[];
|
|
9
|
+
get overflow(): OutputEntry[];
|
|
10
|
+
get showOverflowWarning(): boolean;
|
|
11
|
+
get downloadOverflowUrl(): string;
|
|
12
|
+
get renderedOutputs(): TemplateResult[];
|
|
13
|
+
protected render(): TemplateResult;
|
|
14
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement } from "lit/decorators.js";
|
|
8
|
+
import { css, html } from "lit";
|
|
9
|
+
import { OutputType } from "../state/InputOutput";
|
|
10
|
+
import { PapyrosElement } from "./PapyrosElement";
|
|
11
|
+
import "@material/web/icon/icon";
|
|
12
|
+
let Output = class Output extends PapyrosElement {
|
|
13
|
+
static get styles() {
|
|
14
|
+
return css `
|
|
15
|
+
:host {
|
|
16
|
+
width: 100%;
|
|
17
|
+
height: 100%;
|
|
18
|
+
overflow: auto;
|
|
19
|
+
display: block;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
img {
|
|
23
|
+
max-width: 100%;
|
|
24
|
+
max-height: 300px;
|
|
25
|
+
display: block;
|
|
26
|
+
margin: 0.5rem 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
pre {
|
|
30
|
+
font-family: monospace;
|
|
31
|
+
margin: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.error {
|
|
35
|
+
color: var(--md-sys-color-error);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.place-holder {
|
|
39
|
+
color: var(--md-sys-color-on-surface);
|
|
40
|
+
opacity: 0.5;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
md-icon {
|
|
44
|
+
vertical-align: bottom;
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
}
|
|
48
|
+
get maxOutputLength() {
|
|
49
|
+
if (this.papyros.debugger.active && this.papyros.debugger.debugOutputs !== undefined) {
|
|
50
|
+
return this.papyros.debugger.debugOutputs;
|
|
51
|
+
}
|
|
52
|
+
return this.papyros.constants.maxOutputLength;
|
|
53
|
+
}
|
|
54
|
+
get outputs() {
|
|
55
|
+
return this.papyros.io.output.slice(0, this.maxOutputLength);
|
|
56
|
+
}
|
|
57
|
+
get overflow() {
|
|
58
|
+
return this.papyros.io.output.slice(this.maxOutputLength);
|
|
59
|
+
}
|
|
60
|
+
get showOverflowWarning() {
|
|
61
|
+
return !this.papyros.debugger.active && this.papyros.io.output.length > this.maxOutputLength;
|
|
62
|
+
}
|
|
63
|
+
get downloadOverflowUrl() {
|
|
64
|
+
const blob = new Blob(this.overflow.map(o => {
|
|
65
|
+
if (o.type === OutputType.img) {
|
|
66
|
+
return `[Image output of type ${o.contentType} omitted]\n`;
|
|
67
|
+
}
|
|
68
|
+
else if (o.type === OutputType.stdout) {
|
|
69
|
+
return o.content;
|
|
70
|
+
}
|
|
71
|
+
else if (o.type === OutputType.stderr) {
|
|
72
|
+
if (typeof o.content === "string") {
|
|
73
|
+
return `Error: ${o.content}\n`;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const errorObject = o.content;
|
|
77
|
+
let errorString = `Error: ${errorObject.name}\nInfo: ${errorObject.info}\nTraceback: ${errorObject.traceback}\n`;
|
|
78
|
+
if (errorObject.where) {
|
|
79
|
+
errorString += `Where: ${errorObject.where.trim()}\n`;
|
|
80
|
+
}
|
|
81
|
+
if (errorObject.what) {
|
|
82
|
+
errorString += `What: ${errorObject.what.trim()}\n`;
|
|
83
|
+
}
|
|
84
|
+
if (errorObject.why) {
|
|
85
|
+
errorString += `Why: ${errorObject.why.trim()}\n`;
|
|
86
|
+
}
|
|
87
|
+
return errorString;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return "[Unsupported output type omitted]\n";
|
|
92
|
+
}
|
|
93
|
+
}), { type: "text/plain" });
|
|
94
|
+
return URL.createObjectURL(blob);
|
|
95
|
+
}
|
|
96
|
+
get renderedOutputs() {
|
|
97
|
+
return this.outputs.map(o => {
|
|
98
|
+
var _a;
|
|
99
|
+
if (o.type === OutputType.stdout) {
|
|
100
|
+
return html `${o.content}`;
|
|
101
|
+
}
|
|
102
|
+
else if (o.type === OutputType.img) {
|
|
103
|
+
return html `<img src="data:${o.contentType}, ${o.content}"></img>`;
|
|
104
|
+
}
|
|
105
|
+
else if (o.type === OutputType.stderr) {
|
|
106
|
+
if (typeof o.content === "string") {
|
|
107
|
+
return html `<span class="error">${o.content}</span>`;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const errorObject = o.content;
|
|
111
|
+
const errorHTML = [
|
|
112
|
+
html `<md-icon title="${errorObject.info}">
|
|
113
|
+
${this.papyros.constants.icons.help}
|
|
114
|
+
</md-icon> ${errorObject.name} traceback: <md-icon title="${errorObject.traceback}">
|
|
115
|
+
${this.papyros.constants.icons.info}
|
|
116
|
+
</md-icon>\n`,
|
|
117
|
+
html `<span class="where">${(_a = errorObject.where) === null || _a === void 0 ? void 0 : _a.trim()}</span>\n`,
|
|
118
|
+
];
|
|
119
|
+
if (errorObject.what) {
|
|
120
|
+
errorHTML.push(html `<span class="what">${errorObject.what.trim()}</span>\n`);
|
|
121
|
+
}
|
|
122
|
+
if (errorObject.why) {
|
|
123
|
+
errorHTML.push(html `<span class="why">${errorObject.why.trim()}</span>\n`);
|
|
124
|
+
}
|
|
125
|
+
return html `<span class="error">${errorHTML}</span>`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return html ``; // unsupported output type
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
render() {
|
|
134
|
+
if (this.outputs.length === 0) {
|
|
135
|
+
return html `<pre class="place-holder">${this.t("Papyros.output_placeholder")}</pre>`;
|
|
136
|
+
}
|
|
137
|
+
return html `
|
|
138
|
+
<pre>${this.renderedOutputs}</pre>
|
|
139
|
+
${this.showOverflowWarning ? html `
|
|
140
|
+
<p>
|
|
141
|
+
${this.t("Papyros.output_overflow")}
|
|
142
|
+
<a href="${this.downloadOverflowUrl}" download="papyros_output.txt">
|
|
143
|
+
${this.t("Papyros.output_overflow_download")}
|
|
144
|
+
</a>
|
|
145
|
+
</p>
|
|
146
|
+
` : html ``}
|
|
147
|
+
`;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
Output = __decorate([
|
|
151
|
+
customElement("p-output")
|
|
152
|
+
], Output);
|
|
153
|
+
export { Output };
|
|
154
|
+
//# sourceMappingURL=Output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Output.js","sourceRoot":"","sources":["../../../src/frontend/components/Output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import { StateController } from "@dodona/lit-state";
|
|
3
|
+
import { Papyros } from "../../Papyros";
|
|
4
|
+
export declare abstract class PapyrosElement extends LitElement {
|
|
5
|
+
controller: StateController;
|
|
6
|
+
papyros: Papyros;
|
|
7
|
+
protected t(phrase: string, options?: Record<string, any>): string;
|
|
8
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement } from "lit";
|
|
8
|
+
import { StateController } from "@dodona/lit-state";
|
|
9
|
+
import { property } from "lit/decorators.js";
|
|
10
|
+
import { papyros } from "../../Papyros";
|
|
11
|
+
export class PapyrosElement extends LitElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.controller = new StateController(this);
|
|
15
|
+
this.papyros = papyros;
|
|
16
|
+
}
|
|
17
|
+
t(phrase, options) {
|
|
18
|
+
return this.papyros.i18n.t(phrase, options);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
__decorate([
|
|
22
|
+
property()
|
|
23
|
+
], PapyrosElement.prototype, "papyros", void 0);
|
|
24
|
+
//# sourceMappingURL=PapyrosElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PapyrosElement.js","sourceRoot":"","sources":["../../../src/frontend/components/PapyrosElement.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAW,OAAO,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,OAAgB,cAAe,SAAQ,UAAU;IAAvD;;QACI,eAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAEnC,YAAO,GAAY,OAAO,CAAC;IAKnC,CAAC;IAHa,CAAC,CAAC,MAAc,EAAE,OAA6B;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;CACJ;AALO;IADH,QAAQ,EAAE;+CACoB"}
|