@dodona/papyros 4.1.1 → 4.1.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.
Files changed (168) hide show
  1. package/dist/Library.d.ts +11 -0
  2. package/dist/Library.js +11 -0
  3. package/dist/Library.js.map +1 -0
  4. package/dist/ProgrammingLanguage.d.ts +7 -0
  5. package/dist/ProgrammingLanguage.js +9 -0
  6. package/dist/ProgrammingLanguage.js.map +1 -0
  7. package/dist/backend/Backend.d.ts +92 -0
  8. package/dist/backend/Backend.js +79 -0
  9. package/dist/backend/Backend.js.map +1 -0
  10. package/dist/backend/workers/javascript/JavaScriptWorker.d.ts +39 -0
  11. package/dist/backend/workers/javascript/JavaScriptWorker.js +158 -0
  12. package/dist/backend/workers/javascript/JavaScriptWorker.js.map +1 -0
  13. package/dist/backend/workers/javascript/worker.d.ts +1 -0
  14. package/dist/backend/workers/javascript/worker.js +5 -0
  15. package/dist/backend/workers/javascript/worker.js.map +1 -0
  16. package/dist/backend/workers/python/PythonWorker.d.ts +32 -0
  17. package/dist/backend/workers/python/PythonWorker.js +117 -0
  18. package/dist/backend/workers/python/PythonWorker.js.map +1 -0
  19. package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
  20. package/dist/backend/workers/python/worker.d.ts +1 -0
  21. package/dist/backend/workers/python/worker.js +5 -0
  22. package/dist/backend/workers/python/worker.js.map +1 -0
  23. package/dist/communication/BackendEvent.d.ts +33 -0
  24. package/dist/communication/BackendEvent.js +18 -0
  25. package/dist/communication/BackendEvent.js.map +1 -0
  26. package/dist/communication/BackendEventQueue.d.ts +59 -0
  27. package/dist/communication/BackendEventQueue.js +96 -0
  28. package/dist/communication/BackendEventQueue.js.map +1 -0
  29. package/dist/communication/BackendManager.d.ts +68 -0
  30. package/dist/communication/BackendManager.js +99 -0
  31. package/dist/communication/BackendManager.js.map +1 -0
  32. package/dist/communication/InputServiceWorker.d.ts +1 -0
  33. package/dist/communication/InputServiceWorker.js +37 -0
  34. package/dist/communication/InputServiceWorker.js.map +1 -0
  35. package/dist/communication/InputWorker.d.ts +22 -0
  36. package/dist/communication/InputWorker.js +63 -0
  37. package/dist/communication/InputWorker.js.map +1 -0
  38. package/dist/frontend/components/CodeRunner.d.ts +9 -0
  39. package/dist/frontend/components/CodeRunner.js +60 -0
  40. package/dist/frontend/components/CodeRunner.js.map +1 -0
  41. package/dist/frontend/components/Debugger.d.ts +7 -0
  42. package/dist/frontend/components/Debugger.js +75 -0
  43. package/dist/frontend/components/Debugger.js.map +1 -0
  44. package/dist/frontend/components/Input.d.ts +13 -0
  45. package/dist/frontend/components/Input.js +60 -0
  46. package/dist/frontend/components/Input.js.map +1 -0
  47. package/dist/frontend/components/Output.d.ts +14 -0
  48. package/dist/frontend/components/Output.js +157 -0
  49. package/dist/frontend/components/Output.js.map +1 -0
  50. package/dist/frontend/components/PapyrosElement.d.ts +8 -0
  51. package/dist/frontend/components/PapyrosElement.js +24 -0
  52. package/dist/frontend/components/PapyrosElement.js.map +1 -0
  53. package/dist/frontend/components/app/App.d.ts +24 -0
  54. package/dist/frontend/components/app/App.js +207 -0
  55. package/dist/frontend/components/app/App.js.map +1 -0
  56. package/dist/frontend/components/app/ExamplePicker.d.ts +7 -0
  57. package/dist/frontend/components/app/ExamplePicker.js +36 -0
  58. package/dist/frontend/components/app/ExamplePicker.js.map +1 -0
  59. package/dist/frontend/components/app/LanguagePicker.d.ts +7 -0
  60. package/dist/frontend/components/app/LanguagePicker.js +33 -0
  61. package/dist/frontend/components/app/LanguagePicker.js.map +1 -0
  62. package/dist/frontend/components/app/ProgrammingLanguagePicker.d.ts +7 -0
  63. package/dist/frontend/components/app/ProgrammingLanguagePicker.js +38 -0
  64. package/dist/frontend/components/app/ProgrammingLanguagePicker.js.map +1 -0
  65. package/dist/frontend/components/app/examples/JavaScriptExamples.d.ts +5 -0
  66. package/dist/frontend/components/app/examples/JavaScriptExamples.js +16 -0
  67. package/dist/frontend/components/app/examples/JavaScriptExamples.js.map +1 -0
  68. package/dist/frontend/components/app/examples/PythonExamples.d.ts +14 -0
  69. package/dist/frontend/components/app/examples/PythonExamples.js +163 -0
  70. package/dist/frontend/components/app/examples/PythonExamples.js.map +1 -0
  71. package/dist/frontend/components/app/themes/ThemePicker.d.ts +11 -0
  72. package/dist/frontend/components/app/themes/ThemePicker.js +48 -0
  73. package/dist/frontend/components/app/themes/ThemePicker.js.map +1 -0
  74. package/dist/frontend/components/app/themes/ThemedButton.d.ts +9 -0
  75. package/dist/frontend/components/app/themes/ThemedButton.js +53 -0
  76. package/dist/frontend/components/app/themes/ThemedButton.js.map +1 -0
  77. package/dist/frontend/components/code_mirror/BatchInputEditor.d.ts +8 -0
  78. package/dist/frontend/components/code_mirror/BatchInputEditor.js +51 -0
  79. package/dist/frontend/components/code_mirror/BatchInputEditor.js.map +1 -0
  80. package/dist/frontend/components/code_mirror/CodeEditor.d.ts +24 -0
  81. package/dist/frontend/components/code_mirror/CodeEditor.js +204 -0
  82. package/dist/frontend/components/code_mirror/CodeEditor.js.map +1 -0
  83. package/dist/frontend/components/code_mirror/CodeMirrorEditor.d.ts +22 -0
  84. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js +111 -0
  85. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js.map +1 -0
  86. package/dist/frontend/components/code_mirror/Extensions.d.ts +15 -0
  87. package/dist/frontend/components/code_mirror/Extensions.js +164 -0
  88. package/dist/frontend/components/code_mirror/Extensions.js.map +1 -0
  89. package/dist/frontend/components/code_mirror/MaterialTheme.d.ts +5 -0
  90. package/dist/frontend/components/code_mirror/MaterialTheme.js +115 -0
  91. package/dist/frontend/components/code_mirror/MaterialTheme.js.map +1 -0
  92. package/dist/frontend/components/code_runner/ButtonLint.d.ts +9 -0
  93. package/dist/frontend/components/code_runner/ButtonLint.js +72 -0
  94. package/dist/frontend/components/code_runner/ButtonLint.js.map +1 -0
  95. package/dist/frontend/components/code_runner/Code.d.ts +7 -0
  96. package/dist/frontend/components/code_runner/Code.js +48 -0
  97. package/dist/frontend/components/code_runner/Code.js.map +1 -0
  98. package/dist/frontend/components/code_runner/RunState.d.ts +7 -0
  99. package/dist/frontend/components/code_runner/RunState.js +41 -0
  100. package/dist/frontend/components/code_runner/RunState.js.map +1 -0
  101. package/dist/frontend/components/input/BatchInput.d.ts +9 -0
  102. package/dist/frontend/components/input/BatchInput.js +53 -0
  103. package/dist/frontend/components/input/BatchInput.js.map +1 -0
  104. package/dist/frontend/components/input/InteractiveInput.d.ts +13 -0
  105. package/dist/frontend/components/input/InteractiveInput.js +71 -0
  106. package/dist/frontend/components/input/InteractiveInput.js.map +1 -0
  107. package/dist/frontend/state/Constants.d.ts +38 -0
  108. package/dist/frontend/state/Constants.js +111 -0
  109. package/dist/frontend/state/Constants.js.map +1 -0
  110. package/dist/frontend/state/Debugger.d.ts +23 -0
  111. package/dist/frontend/state/Debugger.js +86 -0
  112. package/dist/frontend/state/Debugger.js.map +1 -0
  113. package/dist/frontend/state/Examples.d.ts +11 -0
  114. package/dist/frontend/state/Examples.js +36 -0
  115. package/dist/frontend/state/Examples.js.map +1 -0
  116. package/dist/frontend/state/I18n.d.ts +16 -0
  117. package/dist/frontend/state/I18n.js +75 -0
  118. package/dist/frontend/state/I18n.js.map +1 -0
  119. package/dist/frontend/state/InputOutput.d.ts +64 -0
  120. package/dist/frontend/state/InputOutput.js +146 -0
  121. package/dist/frontend/state/InputOutput.js.map +1 -0
  122. package/dist/frontend/state/Papyros.d.ts +40 -0
  123. package/dist/frontend/state/Papyros.js +115 -0
  124. package/dist/frontend/state/Papyros.js.map +1 -0
  125. package/dist/frontend/state/Runner.d.ts +123 -0
  126. package/dist/frontend/state/Runner.js +372 -0
  127. package/dist/frontend/state/Runner.js.map +1 -0
  128. package/dist/frontend/state/Test.d.ts +10 -0
  129. package/dist/frontend/state/Test.js +43 -0
  130. package/dist/frontend/state/Test.js.map +1 -0
  131. package/dist/frontend/state/Translations.d.ts +178 -0
  132. package/dist/frontend/state/Translations.js +187 -0
  133. package/dist/frontend/state/Translations.js.map +1 -0
  134. package/dist/frontend/state/themes/blue-dark.d.ts +2 -0
  135. package/dist/frontend/state/themes/blue-dark.js +56 -0
  136. package/dist/frontend/state/themes/blue-dark.js.map +1 -0
  137. package/dist/frontend/state/themes/blue-light.d.ts +2 -0
  138. package/dist/frontend/state/themes/blue-light.js +56 -0
  139. package/dist/frontend/state/themes/blue-light.js.map +1 -0
  140. package/dist/frontend/state/themes/green-dark.d.ts +2 -0
  141. package/dist/frontend/state/themes/green-dark.js +56 -0
  142. package/dist/frontend/state/themes/green-dark.js.map +1 -0
  143. package/dist/frontend/state/themes/green-light.d.ts +2 -0
  144. package/dist/frontend/state/themes/green-light.js +56 -0
  145. package/dist/frontend/state/themes/green-light.js.map +1 -0
  146. package/dist/frontend/state/themes/red-dark.d.ts +2 -0
  147. package/dist/frontend/state/themes/red-dark.js +56 -0
  148. package/dist/frontend/state/themes/red-dark.js.map +1 -0
  149. package/dist/frontend/state/themes/red-light.d.ts +2 -0
  150. package/dist/frontend/state/themes/red-light.js +56 -0
  151. package/dist/frontend/state/themes/red-light.js.map +1 -0
  152. package/dist/util/Logging.d.ts +15 -0
  153. package/dist/util/Logging.js +30 -0
  154. package/dist/util/Logging.js.map +1 -0
  155. package/dist/util/Util.d.ts +8 -0
  156. package/dist/util/Util.js +48 -0
  157. package/dist/util/Util.js.map +1 -0
  158. package/package.json +1 -1
  159. package/dist/assets/__vite-browser-external-9wXp6ZBx.js +0 -1
  160. package/dist/assets/__vite-browser-external-BIHI7g3E.js +0 -1
  161. package/dist/assets/index-C1AWjGcU.js +0 -2202
  162. package/dist/assets/manifest-BaVmi6rC.json +0 -15
  163. package/dist/assets/python_package.tar.gz-B8aMWvGt.load_by_url +0 -0
  164. package/dist/assets/worker-BhABRh01.js +0 -5
  165. package/dist/assets/worker-C2Ju1j5g.js +0 -110
  166. package/dist/index.html +0 -26
  167. package/dist/manifest.json +0 -15
  168. package/dist/robots.txt +0 -3
@@ -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,CAAC;AACjC,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAyCT,CAAC;IACN,CAAC;IAEkB,MAAM;;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAA,6BAA6B,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC;QACxF,CAAC;QAED,OAAO,IAAI,CAAA;qBACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;4BACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;6BACpD,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,mCAAI,CAAC;4BACvC,CAAC,CAAc,EAAE,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACvD,CAAC;qBACQ,CAAC;IAClB,CAAC;CACJ,CAAA;AA5DY,QAAQ;IADpB,aAAa,CAAC,YAAY,CAAC;GACf,QAAQ,CA4DpB"}
@@ -0,0 +1,13 @@
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
+ import { InputMode } from "../state/InputOutput";
7
+ export declare class Input extends PapyrosElement {
8
+ static get styles(): CSSResult;
9
+ get mode(): InputMode;
10
+ get otherMode(): InputMode;
11
+ toggleMode(): void;
12
+ protected render(): TemplateResult;
13
+ }
@@ -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 { css, html } from "lit";
9
+ import "./input/BatchInput";
10
+ import "./input/InteractiveInput";
11
+ import { PapyrosElement } from "./PapyrosElement";
12
+ import "@material/web/switch/switch";
13
+ import { InputMode } from "../state/InputOutput";
14
+ let Input = class Input extends PapyrosElement {
15
+ static get styles() {
16
+ return css `
17
+ label {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 0.5rem;
21
+ margin-top: 0.5rem;
22
+ }
23
+
24
+ :host {
25
+ width: 100%;
26
+ height: fit-content;
27
+ display: block;
28
+ }
29
+
30
+ p-batch-input {
31
+ height: 200px;
32
+ }
33
+ `;
34
+ }
35
+ get mode() {
36
+ return this.papyros.io.inputMode;
37
+ }
38
+ get otherMode() {
39
+ return this.mode === InputMode.batch ? InputMode.interactive : InputMode.batch;
40
+ }
41
+ toggleMode() {
42
+ this.papyros.io.inputMode = this.otherMode;
43
+ }
44
+ render() {
45
+ return html `
46
+ ${this.mode === InputMode.batch
47
+ ? html `<p-batch-input .papyros=${this.papyros}></p-batch-input>`
48
+ : html `<p-interactive-input .papyros=${this.papyros}></p-interactive-input>`}
49
+ <label>
50
+ <md-switch .selected=${this.mode === InputMode.batch} @change=${() => this.toggleMode()}></md-switch>
51
+ ${this.t(`Papyros.switch_input_mode_to.${this.otherMode}`)}
52
+ </label>
53
+ `;
54
+ }
55
+ };
56
+ Input = __decorate([
57
+ customElement("p-input")
58
+ ], Input);
59
+ export { Input };
60
+ //# 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,MAAM,mBAAmB,CAAC;AAClD,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;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG1C,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,cAAc;IACrC,MAAM,KAAK,MAAM;QACb,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;SAiBT,CAAC;IACN,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;IACrC,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,OAAO,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/C,CAAC;IAEkB,MAAM;QACrB,OAAO,IAAI,CAAA;cACL,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;YAC3B,CAAC,CAAC,IAAI,CAAA,2BAA2B,IAAI,CAAC,OAAO,mBAAmB;YAChE,CAAC,CAAC,IAAI,CAAA,iCAAiC,IAAI,CAAC,OAAO,yBAAyB;;uCAErD,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;kBACrF,IAAI,CAAC,CAAC,CAAC,gCAAgC,IAAI,CAAC,SAAS,EAAE,CAAC;;SAEjE,CAAC;IACN,CAAC;CACJ,CAAA;AA7CY,KAAK;IADjB,aAAa,CAAC,SAAS,CAAC;GACZ,KAAK,CA6CjB"}
@@ -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,157 @@
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
+ // an array to avoid unintentional spaces/newlines
113
+ html `<md-icon title="${errorObject.info}"> ${this.papyros.constants.icons.help} </md-icon>
114
+ ${errorObject.name} traceback:
115
+ <md-icon title="${errorObject.traceback}">
116
+ ${this.papyros.constants.icons.info}
117
+ </md-icon> `,
118
+ html `<span class="where">${(_a = errorObject.where) === null || _a === void 0 ? void 0 : _a.trim()}</span> `,
119
+ ];
120
+ if (errorObject.what) {
121
+ errorHTML.push(html `<span class="what">${errorObject.what.trim()}</span> `);
122
+ }
123
+ if (errorObject.why) {
124
+ errorHTML.push(html `<span class="why">${errorObject.why.trim()}</span> `);
125
+ }
126
+ return html `<span class="error">${errorHTML}</span>`;
127
+ }
128
+ }
129
+ else {
130
+ return html ``; // unsupported output type
131
+ }
132
+ });
133
+ }
134
+ render() {
135
+ if (this.outputs.length === 0) {
136
+ return html `<pre class="place-holder">${this.t("Papyros.output_placeholder")}</pre>`;
137
+ }
138
+ return html `
139
+ <pre>${this.renderedOutputs}</pre>
140
+ ${this.showOverflowWarning
141
+ ? html `
142
+ <p>
143
+ ${this.t("Papyros.output_overflow")}
144
+ <a href="${this.downloadOverflowUrl}" download="papyros_output.txt">
145
+ ${this.t("Papyros.output_overflow_download")}
146
+ </a>
147
+ </p>
148
+ `
149
+ : html ``}
150
+ `;
151
+ }
152
+ };
153
+ Output = __decorate([
154
+ customElement("p-output")
155
+ ], Output);
156
+ export { Output };
157
+ //# 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 "../state/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 "../state/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,kBAAkB,CAAC;AAEpD,MAAM,OAAgB,cAAe,SAAQ,UAAU;IAAvD;;QACI,eAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvC,YAAO,GAAY,OAAO,CAAC;IAK/B,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;AALG;IADC,QAAQ,EAAE;+CACgB"}
@@ -0,0 +1,24 @@
1
+ import { CSSResult, TemplateResult } from "lit";
2
+ import { PapyrosElement } from "../PapyrosElement";
3
+ import "../CodeRunner";
4
+ import "../Debugger";
5
+ import "../Output";
6
+ import "../Input";
7
+ import "./ProgrammingLanguagePicker";
8
+ import "./ExamplePicker";
9
+ import "./LanguagePicker";
10
+ import "./themes/ThemePicker";
11
+ import { State } from "@dodona/lit-state";
12
+ import "@material/web/iconbutton/icon-button";
13
+ import "@material/web/icon/icon";
14
+ import { ThemeOption } from "../../state/Constants";
15
+ export declare class App extends PapyrosElement {
16
+ subscriptions: (() => void)[];
17
+ static get styles(): CSSResult;
18
+ constructor();
19
+ connectedCallback(): void;
20
+ disconnectedCallback(): void;
21
+ initializeLocalStorageProperty(state: State, property: string): void;
22
+ setTheme(theme: ThemeOption): void;
23
+ protected render(): TemplateResult;
24
+ }
@@ -0,0 +1,207 @@
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
+ var App_1;
8
+ import { customElement } from "lit/decorators.js";
9
+ import { adoptStyles, css, html } from "lit";
10
+ import { PapyrosElement } from "../PapyrosElement";
11
+ import "../CodeRunner";
12
+ import "../Debugger";
13
+ import "../Output";
14
+ import "../Input";
15
+ import "./ProgrammingLanguagePicker";
16
+ import "./ExamplePicker";
17
+ import "./LanguagePicker";
18
+ import "./themes/ThemePicker";
19
+ import "@material/web/iconbutton/icon-button";
20
+ import "@material/web/icon/icon";
21
+ let App = App_1 = class App extends PapyrosElement {
22
+ static get styles() {
23
+ return css `
24
+ :host {
25
+ width: 100%;
26
+ height: 100%;
27
+ display: block;
28
+ background-color: var(--md-sys-color-background);
29
+ color: var(--md-sys-color-on-background);
30
+ --md-ref-typeface-brand: Roboto, "Helvetica Neue", sans-serif;
31
+ --md-ref-typeface-plain: var(--md-ref-typeface-brand);
32
+ font-family: var(--md-ref-typeface-brand);
33
+ font-size: 16px;
34
+ --md-outlined-field-bottom-space: 8px;
35
+ --md-outlined-field-top-space: 8px;
36
+ --md-outlined-text-field-bottom-space: 8px;
37
+ --md-outlined-text-field-top-space: 8px;
38
+ }
39
+
40
+ .rows {
41
+ display: flex;
42
+ flex-direction: column;
43
+ width: 100%;
44
+ height: 100%;
45
+ }
46
+
47
+ .top {
48
+ flex: 2;
49
+ display: flex;
50
+ min-height: 0;
51
+ }
52
+
53
+ .bottom {
54
+ flex: 1;
55
+ min-height: 0;
56
+ }
57
+
58
+ .left {
59
+ flex: 1;
60
+ min-width: 0;
61
+ display: flex;
62
+ }
63
+
64
+ .right {
65
+ flex: 1;
66
+ display: flex;
67
+ flex-direction: column;
68
+ min-width: 0;
69
+ min-height: 0;
70
+ }
71
+
72
+ .grow {
73
+ flex-grow: 1;
74
+ }
75
+
76
+ .container {
77
+ padding: 1.5rem;
78
+ margin: 0.5rem;
79
+ border-radius: 1rem;
80
+ background-color: var(--md-sys-color-surface-container);
81
+ color: var(--md-sys-color-on-surface);
82
+ }
83
+
84
+ .overflow {
85
+ overflow: auto;
86
+ }
87
+
88
+ .header {
89
+ align-items: center;
90
+ padding: 1rem 2rem;
91
+ display: flex;
92
+ justify-content: space-between;
93
+ background-color: var(--md-sys-color-surface-container);
94
+ color: var(--md-sys-color-on-surface);
95
+ }
96
+
97
+ .title {
98
+ font-size: 1.5rem;
99
+ font-weight: bold;
100
+ color: var(--md-sys-color-primary);
101
+ }
102
+
103
+ .header-options {
104
+ display: flex;
105
+ gap: 0.5rem;
106
+ align-items: center;
107
+ }
108
+
109
+ .content {
110
+ max-width: 1500px;
111
+ width: 100%;
112
+ height: 100%;
113
+ margin: 1rem auto;
114
+ display: flex;
115
+ flex-direction: column;
116
+ flex: 1;
117
+ }
118
+ `;
119
+ }
120
+ constructor() {
121
+ super();
122
+ this.subscriptions = [];
123
+ this.papyros.launch();
124
+ }
125
+ connectedCallback() {
126
+ super.connectedCallback();
127
+ this.initializeLocalStorageProperty(this.papyros.i18n, "locale");
128
+ this.initializeLocalStorageProperty(this.papyros.runner, "code");
129
+ this.initializeLocalStorageProperty(this.papyros.runner, "programmingLanguage");
130
+ this.initializeLocalStorageProperty(this.papyros.constants, "activeTheme");
131
+ }
132
+ disconnectedCallback() {
133
+ super.disconnectedCallback();
134
+ this.subscriptions.forEach((s) => s());
135
+ this.subscriptions = [];
136
+ }
137
+ initializeLocalStorageProperty(state, property) {
138
+ const storedValue = localStorage.getItem(property);
139
+ if (storedValue !== null) {
140
+ try {
141
+ state[property] = JSON.parse(storedValue);
142
+ }
143
+ catch (_a) {
144
+ // ignore invalid JSON
145
+ }
146
+ }
147
+ const unsubscribe = state.subscribe(() => {
148
+ localStorage.setItem(property, JSON.stringify(state[property]));
149
+ }, property);
150
+ this.subscriptions.push(unsubscribe);
151
+ }
152
+ setTheme(theme) {
153
+ document.documentElement.style.setProperty("color-scheme", theme.dark ? "dark" : "light");
154
+ adoptStyles(this.renderRoot, [App_1.styles, theme.theme]);
155
+ }
156
+ render() {
157
+ this.setTheme(this.papyros.constants.activeTheme);
158
+ return html `
159
+ <div class="rows">
160
+ <div class="header">
161
+ <div class="header-options">
162
+ <span class="title">${this.t("Papyros.Papyros")}</span>
163
+ <md-icon-button href="https://github.com/dodona-edu/papyros" target="_blank" rel="noopener">
164
+ <md-icon>
165
+ <svg viewBox="0 0 24 24" fill="currentColor">
166
+ <path
167
+ d="M12 1.27a11 11 0 00-3.48 21.46c.55.09.73-.28.73-.55v-1.84c-3.03.64-3.67-1.46-3.67-1.46-.55-1.29-1.28-1.65-1.28-1.65-.92-.65.1-.65.1-.65 1.1 0 1.73 1.1 1.73 1.1.92 1.65 2.57 1.2 3.21.92a2 2 0 01.64-1.47c-2.47-.27-5.04-1.19-5.04-5.5 0-1.1.46-2.1 1.2-2.84a3.76 3.76 0 010-2.93s.91-.28 3.11 1.1c1.8-.49 3.7-.49 5.5 0 2.1-1.38 3.02-1.1 3.02-1.1a3.76 3.76 0 010 2.93c.83.74 1.2 1.74 1.2 2.94 0 4.21-2.57 5.13-5.04 5.4.45.37.82.92.82 2.02v3.03c0 .27.1.64.73.55A11 11 0 0012 1.27"
168
+ ></path>
169
+ </svg>
170
+ </md-icon>
171
+ </md-icon-button>
172
+ </div>
173
+ <div class="header-options">
174
+ <p-theme-picker .papyros=${this.papyros}></p-theme-picker>
175
+ <p-language-picker .papyros=${this.papyros}></p-language-picker>
176
+ <p-programming-language-picker .papyros=${this.papyros}></p-programming-language-picker>
177
+ </div>
178
+ </div>
179
+ <div class="content">
180
+ <div class="top">
181
+ <div class="left container">
182
+ <p-code-runner .papyros=${this.papyros} class="overflow">
183
+ <p-example-picker .papyros=${this.papyros} slot="buttons"></p-example-picker>
184
+ </p-code-runner>
185
+ </div>
186
+ <div class="right">
187
+ <div class="container grow overflow">
188
+ <p-output .papyros=${this.papyros}></p-output>
189
+ </div>
190
+ <div class="container">
191
+ <p-input .papyros=${this.papyros}></p-input>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ <div class="bottom container overflow">
196
+ <p-debugger .papyros=${this.papyros}></p-debugger>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ `;
201
+ }
202
+ };
203
+ App = App_1 = __decorate([
204
+ customElement("p-app")
205
+ ], App);
206
+ export { App };
207
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../../src/frontend/components/app/App.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { PapyrosElement } from "../PapyrosElement";
2
+ import { TemplateResult } from "lit";
3
+ import "@material/web/select/outlined-select";
4
+ import "@material/web/select/select-option";
5
+ export declare class ExamplePicker extends PapyrosElement {
6
+ protected render(): TemplateResult;
7
+ }
@@ -0,0 +1,36 @@
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 { html } from "lit";
10
+ import "@material/web/select/outlined-select";
11
+ import "@material/web/select/select-option";
12
+ import { RunState } from "../../state/Runner";
13
+ let ExamplePicker = class ExamplePicker extends PapyrosElement {
14
+ render() {
15
+ return html `
16
+ <md-outlined-select
17
+ ?disabled=${this.papyros.runner.state !== RunState.Ready || this.papyros.debugger.active}
18
+ label=${this.t("Papyros.examples")}
19
+ @input=${(e) => {
20
+ this.papyros.runner.code = this.papyros.examples.getExampleCode(e.target.value);
21
+ }}
22
+ >
23
+ ${this.papyros.examples.names.map((name) => html `
24
+ <md-select-option value=${name}>
25
+ <div slot="headline">${name}</div>
26
+ </md-select-option>
27
+ `)}
28
+ </md-outlined-select>
29
+ `;
30
+ }
31
+ };
32
+ ExamplePicker = __decorate([
33
+ customElement("p-example-picker")
34
+ ], ExamplePicker);
35
+ export { ExamplePicker };
36
+ //# sourceMappingURL=ExamplePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExamplePicker.js","sourceRoot":"","sources":["../../../../src/frontend/components/app/ExamplePicker.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,cAAc;IAC1B,MAAM;QACrB,OAAO,IAAI,CAAA;;4BAES,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;wBAChF,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;yBACzB,CAAC,CAAa,EAAE,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAC1D,CAAC,CAAC,MAA2B,CAAC,KAAK,CACvC,CAAC;QACN,CAAC;;kBAEC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;kDACgB,IAAI;mDACH,IAAI;;qBAElC,CACJ;;SAER,CAAC;IACN,CAAC;CACJ,CAAA;AAtBY,aAAa;IADzB,aAAa,CAAC,kBAAkB,CAAC;GACrB,aAAa,CAsBzB"}
@@ -0,0 +1,7 @@
1
+ import { PapyrosElement } from "../PapyrosElement";
2
+ import { TemplateResult } from "lit";
3
+ import "@material/web/select/outlined-select";
4
+ import "@material/web/select/select-option";
5
+ export declare class LanguagePicker extends PapyrosElement {
6
+ protected render(): TemplateResult;
7
+ }
@@ -0,0 +1,33 @@
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 { html } from "lit";
10
+ import "@material/web/select/outlined-select";
11
+ import "@material/web/select/select-option";
12
+ let LanguagePicker = class LanguagePicker extends PapyrosElement {
13
+ render() {
14
+ return html `
15
+ <md-outlined-select
16
+ @input=${(e) => {
17
+ this.papyros.i18n.locale = e.target.value;
18
+ }}
19
+ >
20
+ ${this.papyros.i18n.availableLocales.map((lang) => html `
21
+ <md-select-option value=${lang} ?selected=${this.papyros.i18n.locale === lang}>
22
+ <div slot="headline">${this.t(`Papyros.locales.${lang}`)}</div>
23
+ </md-select-option>
24
+ `)}
25
+ </md-outlined-select>
26
+ `;
27
+ }
28
+ };
29
+ LanguagePicker = __decorate([
30
+ customElement("p-language-picker")
31
+ ], LanguagePicker);
32
+ export { LanguagePicker };
33
+ //# sourceMappingURL=LanguagePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguagePicker.js","sourceRoot":"","sources":["../../../../src/frontend/components/app/LanguagePicker.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,oCAAoC,CAAC;AAGrC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,cAAc;IAC3B,MAAM;QACrB,OAAO,IAAI,CAAA;;yBAEM,CAAC,CAAa,EAAE,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;QACpE,CAAC;;kBAEC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;kDACgB,IAAI,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI;mDAClD,IAAI,CAAC,CAAC,CAAC,mBAAmB,IAAI,EAAE,CAAC;;qBAE/D,CACJ;;SAER,CAAC;IACN,CAAC;CACJ,CAAA;AAlBY,cAAc;IAD1B,aAAa,CAAC,mBAAmB,CAAC;GACtB,cAAc,CAkB1B"}
@@ -0,0 +1,7 @@
1
+ import { PapyrosElement } from "../PapyrosElement";
2
+ import { TemplateResult } from "lit";
3
+ import "@material/web/select/outlined-select";
4
+ import "@material/web/select/select-option";
5
+ export declare class ProgrammingLanguagePicker extends PapyrosElement {
6
+ protected render(): TemplateResult;
7
+ }