@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.
Files changed (233) hide show
  1. package/README.md +132 -72
  2. package/dist/Library.d.ts +10 -11
  3. package/dist/Library.js +9 -7
  4. package/dist/Library.js.map +1 -1
  5. package/dist/{Backend.d.ts → backend/Backend.d.ts} +3 -12
  6. package/dist/{Backend.js → backend/Backend.js} +4 -17
  7. package/dist/backend/Backend.js.map +1 -0
  8. package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.js +1 -1
  9. package/dist/backend/workers/javascript/JavaScriptWorker.js.map +1 -0
  10. package/dist/backend/workers/javascript/worker.js.map +1 -0
  11. package/dist/{workers → backend/workers}/python/PythonWorker.d.ts +2 -2
  12. package/dist/{workers → backend/workers}/python/PythonWorker.js +2 -2
  13. package/dist/backend/workers/python/PythonWorker.js.map +1 -0
  14. package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
  15. package/dist/backend/workers/python/worker.js.map +1 -0
  16. package/dist/communication/BackendEvent.js.map +1 -0
  17. package/dist/{BackendEventQueue.d.ts → communication/BackendEventQueue.d.ts} +1 -36
  18. package/dist/{BackendEventQueue.js → communication/BackendEventQueue.js} +2 -45
  19. package/dist/communication/BackendEventQueue.js.map +1 -0
  20. package/dist/{BackendManager.d.ts → communication/BackendManager.d.ts} +2 -2
  21. package/dist/{BackendManager.js → communication/BackendManager.js} +4 -4
  22. package/dist/communication/BackendManager.js.map +1 -0
  23. package/dist/communication/InputServiceWorker.js +37 -0
  24. package/dist/communication/InputServiceWorker.js.map +1 -0
  25. package/dist/communication/InputWorker.js.map +1 -0
  26. package/dist/frontend/components/CodeRunner.d.ts +9 -0
  27. package/dist/frontend/components/CodeRunner.js +60 -0
  28. package/dist/frontend/components/CodeRunner.js.map +1 -0
  29. package/dist/frontend/components/Debugger.d.ts +7 -0
  30. package/dist/frontend/components/Debugger.js +61 -0
  31. package/dist/frontend/components/Debugger.js.map +1 -0
  32. package/dist/frontend/components/Input.d.ts +13 -0
  33. package/dist/frontend/components/Input.js +65 -0
  34. package/dist/frontend/components/Input.js.map +1 -0
  35. package/dist/frontend/components/Output.d.ts +14 -0
  36. package/dist/frontend/components/Output.js +154 -0
  37. package/dist/frontend/components/Output.js.map +1 -0
  38. package/dist/frontend/components/PapyrosElement.d.ts +8 -0
  39. package/dist/frontend/components/PapyrosElement.js +24 -0
  40. package/dist/frontend/components/PapyrosElement.js.map +1 -0
  41. package/dist/frontend/components/app/App.d.ts +24 -0
  42. package/dist/frontend/components/app/App.js +204 -0
  43. package/dist/frontend/components/app/App.js.map +1 -0
  44. package/dist/frontend/components/app/ExamplePicker.d.ts +7 -0
  45. package/dist/frontend/components/app/ExamplePicker.js +35 -0
  46. package/dist/frontend/components/app/ExamplePicker.js.map +1 -0
  47. package/dist/frontend/components/app/LanguagePicker.d.ts +7 -0
  48. package/dist/frontend/components/app/LanguagePicker.js +35 -0
  49. package/dist/frontend/components/app/LanguagePicker.js.map +1 -0
  50. package/dist/frontend/components/app/ProgrammingLanguagePicker.d.ts +7 -0
  51. package/dist/frontend/components/app/ProgrammingLanguagePicker.js +39 -0
  52. package/dist/frontend/components/app/ProgrammingLanguagePicker.js.map +1 -0
  53. package/dist/frontend/components/app/examples/JavaScriptExamples.js.map +1 -0
  54. package/dist/frontend/components/app/examples/PythonExamples.js.map +1 -0
  55. package/dist/frontend/components/app/themes/ThemePicker.d.ts +11 -0
  56. package/dist/frontend/components/app/themes/ThemePicker.js +47 -0
  57. package/dist/frontend/components/app/themes/ThemePicker.js.map +1 -0
  58. package/dist/frontend/components/app/themes/ThemedButton.d.ts +9 -0
  59. package/dist/frontend/components/app/themes/ThemedButton.js +43 -0
  60. package/dist/frontend/components/app/themes/ThemedButton.js.map +1 -0
  61. package/dist/frontend/components/code_mirror/BatchInputEditor.d.ts +8 -0
  62. package/dist/frontend/components/code_mirror/BatchInputEditor.js +54 -0
  63. package/dist/frontend/components/code_mirror/BatchInputEditor.js.map +1 -0
  64. package/dist/frontend/components/code_mirror/CodeEditor.d.ts +24 -0
  65. package/dist/frontend/components/code_mirror/CodeEditor.js +205 -0
  66. package/dist/frontend/components/code_mirror/CodeEditor.js.map +1 -0
  67. package/dist/frontend/components/code_mirror/CodeMirrorEditor.d.ts +20 -0
  68. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js +99 -0
  69. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js.map +1 -0
  70. package/dist/frontend/components/code_mirror/Extensions.d.ts +15 -0
  71. package/dist/frontend/components/code_mirror/Extensions.js +169 -0
  72. package/dist/frontend/components/code_mirror/Extensions.js.map +1 -0
  73. package/dist/frontend/components/code_mirror/MaterialTheme.d.ts +5 -0
  74. package/dist/frontend/components/code_mirror/MaterialTheme.js +109 -0
  75. package/dist/frontend/components/code_mirror/MaterialTheme.js.map +1 -0
  76. package/dist/frontend/components/code_runner/ButtonLint.d.ts +9 -0
  77. package/dist/frontend/components/code_runner/ButtonLint.js +76 -0
  78. package/dist/frontend/components/code_runner/ButtonLint.js.map +1 -0
  79. package/dist/frontend/components/code_runner/Code.d.ts +7 -0
  80. package/dist/frontend/components/code_runner/Code.js +46 -0
  81. package/dist/frontend/components/code_runner/Code.js.map +1 -0
  82. package/dist/frontend/components/code_runner/RunState.d.ts +7 -0
  83. package/dist/frontend/components/code_runner/RunState.js +41 -0
  84. package/dist/frontend/components/code_runner/RunState.js.map +1 -0
  85. package/dist/frontend/components/input/BatchInput.d.ts +9 -0
  86. package/dist/frontend/components/input/BatchInput.js +53 -0
  87. package/dist/frontend/components/input/BatchInput.js.map +1 -0
  88. package/dist/frontend/components/input/InteractiveInput.d.ts +13 -0
  89. package/dist/frontend/components/input/InteractiveInput.js +73 -0
  90. package/dist/frontend/components/input/InteractiveInput.js.map +1 -0
  91. package/dist/frontend/state/Constants.d.ts +38 -0
  92. package/dist/frontend/state/Constants.js +108 -0
  93. package/dist/frontend/state/Constants.js.map +1 -0
  94. package/dist/frontend/state/Debugger.d.ts +23 -0
  95. package/dist/frontend/state/Debugger.js +84 -0
  96. package/dist/frontend/state/Debugger.js.map +1 -0
  97. package/dist/frontend/state/Examples.d.ts +11 -0
  98. package/dist/frontend/state/Examples.js +36 -0
  99. package/dist/frontend/state/Examples.js.map +1 -0
  100. package/dist/frontend/state/I18n.d.ts +16 -0
  101. package/dist/frontend/state/I18n.js +75 -0
  102. package/dist/frontend/state/I18n.js.map +1 -0
  103. package/dist/frontend/state/InputOutput.d.ts +64 -0
  104. package/dist/frontend/state/InputOutput.js +133 -0
  105. package/dist/frontend/state/InputOutput.js.map +1 -0
  106. package/dist/frontend/state/Papyros.d.ts +32 -0
  107. package/dist/frontend/state/Papyros.js +93 -0
  108. package/dist/frontend/state/Papyros.js.map +1 -0
  109. package/dist/frontend/state/Runner.d.ts +118 -0
  110. package/dist/frontend/state/Runner.js +334 -0
  111. package/dist/frontend/state/Runner.js.map +1 -0
  112. package/dist/frontend/state/Test.d.ts +11 -0
  113. package/dist/frontend/state/Test.js +59 -0
  114. package/dist/frontend/state/Test.js.map +1 -0
  115. package/dist/frontend/state/Translations.d.ts +178 -0
  116. package/dist/frontend/state/Translations.js +188 -0
  117. package/dist/frontend/state/Translations.js.map +1 -0
  118. package/dist/frontend/state/themes/blue-dark.d.ts +2 -0
  119. package/dist/frontend/state/themes/blue-dark.js +55 -0
  120. package/dist/frontend/state/themes/blue-dark.js.map +1 -0
  121. package/dist/frontend/state/themes/blue-light.d.ts +2 -0
  122. package/dist/frontend/state/themes/blue-light.js +55 -0
  123. package/dist/frontend/state/themes/blue-light.js.map +1 -0
  124. package/dist/frontend/state/themes/green-dark.d.ts +2 -0
  125. package/dist/frontend/state/themes/green-dark.js +55 -0
  126. package/dist/frontend/state/themes/green-dark.js.map +1 -0
  127. package/dist/frontend/state/themes/green-light.d.ts +2 -0
  128. package/dist/frontend/state/themes/green-light.js +55 -0
  129. package/dist/frontend/state/themes/green-light.js.map +1 -0
  130. package/dist/frontend/state/themes/red-dark.d.ts +2 -0
  131. package/dist/frontend/state/themes/red-dark.js +55 -0
  132. package/dist/frontend/state/themes/red-dark.js.map +1 -0
  133. package/dist/frontend/state/themes/red-light.d.ts +2 -0
  134. package/dist/frontend/state/themes/red-light.js +55 -0
  135. package/dist/frontend/state/themes/red-light.js.map +1 -0
  136. package/dist/util/Util.d.ts +0 -43
  137. package/dist/util/Util.js +0 -91
  138. package/dist/util/Util.js.map +1 -1
  139. package/package.json +13 -21
  140. package/dist/App.d.ts +0 -1
  141. package/dist/App.js +0 -76
  142. package/dist/App.js.map +0 -1
  143. package/dist/Backend.js.map +0 -1
  144. package/dist/BackendEvent.js.map +0 -1
  145. package/dist/BackendEventQueue.js.map +0 -1
  146. package/dist/BackendManager.js.map +0 -1
  147. package/dist/CodeRunner.d.ts +0 -188
  148. package/dist/CodeRunner.js +0 -548
  149. package/dist/CodeRunner.js.map +0 -1
  150. package/dist/Constants.d.ts +0 -31
  151. package/dist/Constants.js +0 -36
  152. package/dist/Constants.js.map +0 -1
  153. package/dist/Debugger.d.ts +0 -18
  154. package/dist/Debugger.js +0 -86
  155. package/dist/Debugger.js.map +0 -1
  156. package/dist/InputManager.d.ts +0 -38
  157. package/dist/InputManager.js +0 -101
  158. package/dist/InputManager.js.map +0 -1
  159. package/dist/InputServiceWorker.js.map +0 -1
  160. package/dist/OutputManager.d.ts +0 -90
  161. package/dist/OutputManager.js +0 -172
  162. package/dist/OutputManager.js.map +0 -1
  163. package/dist/Papyros.css +0 -657
  164. package/dist/Papyros.d.ts +0 -141
  165. package/dist/Papyros.js +0 -268
  166. package/dist/Papyros.js.map +0 -1
  167. package/dist/Translations.d.ts +0 -180
  168. package/dist/Translations.js +0 -191
  169. package/dist/Translations.js.map +0 -1
  170. package/dist/editor/BatchInputEditor.d.ts +0 -41
  171. package/dist/editor/BatchInputEditor.js +0 -80
  172. package/dist/editor/BatchInputEditor.js.map +0 -1
  173. package/dist/editor/CodeEditor.d.ts +0 -81
  174. package/dist/editor/CodeEditor.js +0 -213
  175. package/dist/editor/CodeEditor.js.map +0 -1
  176. package/dist/editor/CodeMirrorEditor.d.ts +0 -133
  177. package/dist/editor/CodeMirrorEditor.js +0 -169
  178. package/dist/editor/CodeMirrorEditor.js.map +0 -1
  179. package/dist/editor/DarkTheme.d.ts +0 -1
  180. package/dist/editor/DarkTheme.js +0 -72
  181. package/dist/editor/DarkTheme.js.map +0 -1
  182. package/dist/editor/DebugExtension.d.ts +0 -11
  183. package/dist/editor/DebugExtension.js +0 -70
  184. package/dist/editor/DebugExtension.js.map +0 -1
  185. package/dist/editor/Gutters.d.ts +0 -109
  186. package/dist/editor/Gutters.js +0 -201
  187. package/dist/editor/Gutters.js.map +0 -1
  188. package/dist/editor/LineEffectExtension.d.ts +0 -13
  189. package/dist/editor/LineEffectExtension.js +0 -48
  190. package/dist/editor/LineEffectExtension.js.map +0 -1
  191. package/dist/editor/TestCodeExtension.d.ts +0 -21
  192. package/dist/editor/TestCodeExtension.js +0 -134
  193. package/dist/editor/TestCodeExtension.js.map +0 -1
  194. package/dist/examples/Examples.d.ts +0 -6
  195. package/dist/examples/Examples.js +0 -23
  196. package/dist/examples/Examples.js.map +0 -1
  197. package/dist/examples/JavaScriptExamples.js.map +0 -1
  198. package/dist/examples/PythonExamples.js.map +0 -1
  199. package/dist/input/BatchInputHandler.d.ts +0 -55
  200. package/dist/input/BatchInputHandler.js +0 -131
  201. package/dist/input/BatchInputHandler.js.map +0 -1
  202. package/dist/input/InteractiveInputHandler.d.ts +0 -27
  203. package/dist/input/InteractiveInputHandler.js +0 -89
  204. package/dist/input/InteractiveInputHandler.js.map +0 -1
  205. package/dist/input/UserInputHandler.d.ts +0 -68
  206. package/dist/input/UserInputHandler.js +0 -39
  207. package/dist/input/UserInputHandler.js.map +0 -1
  208. package/dist/util/HTMLShapes.d.ts +0 -15
  209. package/dist/util/HTMLShapes.js +0 -25
  210. package/dist/util/HTMLShapes.js.map +0 -1
  211. package/dist/util/Rendering.d.ts +0 -120
  212. package/dist/util/Rendering.js +0 -142
  213. package/dist/util/Rendering.js.map +0 -1
  214. package/dist/workers/input/InputWorker.js.map +0 -1
  215. package/dist/workers/javascript/JavaScriptWorker.js.map +0 -1
  216. package/dist/workers/javascript/worker.js.map +0 -1
  217. package/dist/workers/python/PythonWorker.js.map +0 -1
  218. package/dist/workers/python/python_package.tar.gz.load_by_url +0 -0
  219. package/dist/workers/python/worker.js.map +0 -1
  220. /package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.d.ts +0 -0
  221. /package/dist/{workers → backend/workers}/javascript/worker.d.ts +0 -0
  222. /package/dist/{workers → backend/workers}/javascript/worker.js +0 -0
  223. /package/dist/{workers → backend/workers}/python/worker.d.ts +0 -0
  224. /package/dist/{workers → backend/workers}/python/worker.js +0 -0
  225. /package/dist/{BackendEvent.d.ts → communication/BackendEvent.d.ts} +0 -0
  226. /package/dist/{BackendEvent.js → communication/BackendEvent.js} +0 -0
  227. /package/dist/{InputServiceWorker.d.ts → communication/InputServiceWorker.d.ts} +0 -0
  228. /package/dist/{workers/input → communication}/InputWorker.d.ts +0 -0
  229. /package/dist/{workers/input → communication}/InputWorker.js +0 -0
  230. /package/dist/{examples → frontend/components/app/examples}/JavaScriptExamples.d.ts +0 -0
  231. /package/dist/{examples → frontend/components/app/examples}/JavaScriptExamples.js +0 -0
  232. /package/dist/{examples → frontend/components/app/examples}/PythonExamples.d.ts +0 -0
  233. /package/dist/{examples → frontend/components/app/examples}/PythonExamples.js +0 -0
@@ -1,6 +1,6 @@
1
- import { ProgrammingLanguage } from "./ProgrammingLanguage";
1
+ import { ProgrammingLanguage } from "../ProgrammingLanguage";
2
2
  import { BackendEventType } from "./BackendEvent";
3
- import { LogType, papyrosLog } from "./util/Logging";
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("./workers/python/worker", import.meta.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("./workers/javascript/worker", import.meta.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,61 @@
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
+ :host {
15
+ /* Base / surface */
16
+ --tc-surface-color: var(--md-sys-color-surface-container);
17
+ --tc-on-surface-color: var(--md-sys-color-on-surface);
18
+ --tc-surface-container-color: var(--md-sys-color-surface-container-highest);
19
+ --tc-outline-color: var(--md-sys-color-outline);
20
+ --tc-outline-variant-color: var(--md-sys-color-outline-variant);
21
+ --tc-primary-color: var(--md-sys-color-primary);
22
+
23
+ /* Secondary */
24
+ --tc-secondary-surface-color: var(--md-sys-color-secondary-surface, var(--md-sys-color-secondary-container));
25
+ --tc-secondary-on-surface-color: var(--md-sys-color-on-secondary-surface, var(--md-sys-color-on-secondary-container));
26
+ --tc-secondary-surface-container-color: var(--md-sys-color-secondary-container);
27
+ --tc-secondary-outline-color: var(--md-sys-color-secondary-outline, var(--md-sys-color-outline));
28
+ --tc-secondary-color: var(--md-sys-color-secondary);
29
+
30
+ /* Tertiary */
31
+ --tc-tertiary-surface-color: var(--md-sys-color-tertiary-surface, var(--md-sys-color-tertiary-container));
32
+ --tc-tertiary-on-surface-color: var(--md-sys-color-on-tertiary-surface, var(--md-sys-color-on-tertiary-container));
33
+ --tc-tertiary-surface-container-color: var(--md-sys-color-tertiary-container);
34
+ --tc-tertiary-outline-color: var(--md-sys-color-tertiary-outline, var(--md-sys-color-outline));
35
+ --tc-tertiary-color: var(--md-sys-color-tertiary);
36
+ }
37
+
38
+ .place-holder {
39
+ color: var(--md-sys-color-on-surface);
40
+ opacity: 0.5;
41
+ }
42
+ `;
43
+ }
44
+ render() {
45
+ if (!this.papyros.debugger.active) {
46
+ return html `<div class="place-holder">${this.t("Papyros.debug_placeholder")}</div>`;
47
+ }
48
+ return html `<tc-trace
49
+ .trace=${this.papyros.debugger.trace}
50
+ .translations=${this.papyros.i18n.getTranslations("Papyros.debugger")}
51
+ @frame-change=${(e) => {
52
+ this.papyros.debugger.activeFrame = e.detail.frame;
53
+ }}
54
+ ></tc-trace>`;
55
+ }
56
+ };
57
+ Debugger = __decorate([
58
+ customElement("p-debugger")
59
+ ], Debugger);
60
+ export { Debugger };
61
+ //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6BT,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;AAhDY,QAAQ;IADpB,aAAa,CAAC,YAAY,CAAC;GACf,QAAQ,CAgDpB"}
@@ -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,65 @@
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
+ if (this.papyros.debugger.active) {
46
+ this.papyros.io.inputMode = InputMode.batch;
47
+ }
48
+ return html `
49
+ ${this.mode === InputMode.batch ?
50
+ html `<p-batch-input .papyros=${this.papyros}></p-batch-input>` :
51
+ html `<p-interactive-input .papyros=${this.papyros}></p-interactive-input>`}
52
+ <label>
53
+ <md-switch .selected=${this.mode === InputMode.batch}
54
+ ?disabled=${this.papyros.debugger.active}
55
+ @change=${() => this.toggleMode()}></md-switch>
56
+ ${this.t(`Papyros.switch_input_mode_to.${this.otherMode}`)}
57
+ </label>
58
+ `;
59
+ }
60
+ };
61
+ Input = __decorate([
62
+ customElement("p-input")
63
+ ], Input);
64
+ export { Input };
65
+ //# 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,CAAA;IACL,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,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;QAChD,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;AAnDY,KAAK;IADjB,aAAa,CAAC,SAAS,CAAC;GACZ,KAAK,CAmDjB"}
@@ -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 "../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;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"}
@@ -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
+ }