@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,201 +0,0 @@
1
- import { StateField } from "@codemirror/state";
2
- import { StateEffect } from "@codemirror/state";
3
- import { gutter, GutterMarker } from "@codemirror/view";
4
- import { EditorView } from "@codemirror/view";
5
- import { appendClasses } from "../util/Rendering";
6
- /**
7
- * Helper class to create markers in the gutter
8
- */
9
- class SimpleMarker extends GutterMarker {
10
- constructor(
11
- // Function to create the DOM element
12
- createMarker) {
13
- super();
14
- this.createMarker = createMarker;
15
- }
16
- toDOM() {
17
- return this.createMarker();
18
- }
19
- }
20
- export class Gutters {
21
- constructor(config) {
22
- this.config = config;
23
- this.effect = StateEffect.define();
24
- this.state = StateField.define({
25
- create: () => {
26
- return new Map();
27
- },
28
- update: (current, transaction) => {
29
- const updatedMap = new Map(current);
30
- for (const e of transaction.effects) {
31
- if (e.is(this.effect)) {
32
- updatedMap.set(e.value.lineNr, e.value);
33
- }
34
- }
35
- return updatedMap;
36
- }
37
- });
38
- }
39
- applyClasses(marker) {
40
- const classes = { classNames: this.config.markerClasses };
41
- appendClasses(classes, "_tw-px-1 papyros-gutter-marker");
42
- marker.elementClass += classes.classNames;
43
- return marker;
44
- }
45
- hasMarker(view, lineNr) {
46
- const guttersInfo = view.state.field(this.state);
47
- return guttersInfo.has(lineNr) && guttersInfo.get(lineNr).on;
48
- }
49
- /**
50
- * Set a marker with the given info
51
- * @param {EditorView} view View in which the Gutters live
52
- * @param {Info} info Info used to render the marker
53
- */
54
- setMarker(view, info) {
55
- if (this.hasMarker(view, info.lineNr) !== info.on) {
56
- view.dispatch({
57
- effects: this.effect.of(info)
58
- });
59
- }
60
- }
61
- /**
62
- * @param {EditorView} view The view in which the Gutters live
63
- * @return {Set<number>} The 1-based line numbers with a breakpoint
64
- */
65
- getMarkedLines(view) {
66
- const markedLines = new Set();
67
- const guttersInfo = view.state.field(this.state);
68
- guttersInfo.forEach((info, lineNr) => {
69
- if (info.on) {
70
- markedLines.add(lineNr);
71
- }
72
- });
73
- return markedLines;
74
- }
75
- /**
76
- * @return {Extension} The Gutters as a CodeMirror Extension
77
- */
78
- toExtension() {
79
- // TODO correct type: https://github.com/codemirror/codemirror.next/issues/839
80
- const handlers = {};
81
- if (this.config.onClick) {
82
- handlers["mousedown"] = (view, line) => {
83
- const markings = view.state.field(this.state);
84
- const lineNr = view.state.doc.lineAt(line.from).number;
85
- const markerInfo = markings.get(lineNr);
86
- // Line numbers start at 1
87
- this.config.onClick(view, markerInfo);
88
- };
89
- }
90
- return [
91
- this.state,
92
- gutter({
93
- class: `cm-${this.config.name}-gutter`,
94
- lineMarker: (view, line) => {
95
- // Lookup whether the element should be drawn
96
- const guttersInfo = view.state.field(this.state);
97
- const lineNr = view.state.doc.lineAt(line.from).number;
98
- if (guttersInfo.has(lineNr) && guttersInfo.get(lineNr).on) {
99
- return this.applyClasses(this.marker(guttersInfo.get(lineNr)));
100
- }
101
- else {
102
- return null;
103
- }
104
- },
105
- lineMarkerChange: update => {
106
- return update.startState.field(this.state) !== update.state.field(this.state);
107
- },
108
- initialSpacer: () => {
109
- return this.applyClasses(this.marker({ lineNr: -1, on: true }));
110
- },
111
- domEventHandlers: handlers
112
- }),
113
- this.config.extraExtensions || []
114
- ];
115
- }
116
- }
117
- /**
118
- * Gutters to show and allow toggling of breakpoints
119
- */
120
- export class BreakpointsGutter extends Gutters {
121
- constructor() {
122
- super({
123
- name: "breakpoint",
124
- onClick: (view, info) => {
125
- info.on = !info.on;
126
- this.setMarker(view, info);
127
- },
128
- extraExtensions: [
129
- EditorView.baseTheme({
130
- ".cm-breakpoint-gutter .cm-gutterElement": {
131
- color: "red",
132
- paddingLeft: "5px",
133
- cursor: "default"
134
- }
135
- })
136
- ]
137
- });
138
- }
139
- marker() {
140
- return new SimpleMarker(() => document.createTextNode("🔴"));
141
- }
142
- }
143
- /**
144
- * Gutters to show a checkmark for used input
145
- */
146
- export class UsedInputGutters extends Gutters {
147
- constructor() {
148
- super({
149
- name: "input"
150
- });
151
- }
152
- marker(info) {
153
- return new SimpleMarker(() => {
154
- const node = document.createElement("div");
155
- node.replaceChildren(document.createTextNode("✔"));
156
- node.setAttribute("title", info.title);
157
- // Text interface tells us that more complex node will be processed into Text nodes
158
- return node;
159
- });
160
- }
161
- }
162
- class DebugMarker extends GutterMarker {
163
- toDOM() {
164
- const icon = document.createElement("i");
165
- icon.classList.add("mdi", "mdi-arrow-right-bold", "mdi-18");
166
- return icon;
167
- }
168
- }
169
- /**
170
- * shows the debugged line
171
- */
172
- export class DebugLineGutter extends Gutters {
173
- constructor() {
174
- super({
175
- name: "debugline",
176
- extraExtensions: [
177
- EditorView.baseTheme({
178
- ".cm-debugline-gutter .cm-gutterElement": {
179
- lineHeight: "20px",
180
- marginRight: "-5px",
181
- fontSize: "18px"
182
- }
183
- })
184
- ]
185
- });
186
- this.activeLine = 1;
187
- }
188
- marker() {
189
- return new DebugMarker();
190
- }
191
- markLine(view, lineNr) {
192
- if (this.activeLine !== undefined) {
193
- this.setMarker(view, { lineNr: this.activeLine, on: false });
194
- }
195
- if (lineNr !== undefined) {
196
- this.setMarker(view, { lineNr, on: true });
197
- }
198
- this.activeLine = lineNr;
199
- }
200
- }
201
- //# sourceMappingURL=Gutters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Gutters.js","sourceRoot":"","sources":["../../src/editor/Gutters.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Extension, Range } from "@codemirror/state";
2
- import { Decoration, EditorView } from "@codemirror/view";
3
- export declare class LineEffectExtension {
4
- private readonly addEffect;
5
- private readonly clearEffect;
6
- private readonly setEffect;
7
- private editorView;
8
- constructor(view: EditorView);
9
- add(range: Range<Decoration>[]): void;
10
- clear(): void;
11
- set(range: Range<Decoration>[]): void;
12
- toExtension(): Extension;
13
- }
@@ -1,48 +0,0 @@
1
- import { StateEffect, StateField } from "@codemirror/state";
2
- import { Decoration, EditorView } from "@codemirror/view";
3
- export class LineEffectExtension {
4
- constructor(view) {
5
- this.addEffect = StateEffect.define();
6
- this.clearEffect = StateEffect.define();
7
- this.setEffect = StateEffect.define();
8
- this.editorView = view;
9
- }
10
- add(range) {
11
- this.editorView.dispatch({
12
- effects: this.addEffect.of(range)
13
- });
14
- }
15
- clear() {
16
- this.editorView.dispatch({
17
- effects: this.clearEffect.of(null)
18
- });
19
- }
20
- set(range) {
21
- this.editorView.dispatch({
22
- effects: this.setEffect.of(range)
23
- });
24
- }
25
- toExtension() {
26
- // eslint-disable-next-line @typescript-eslint/no-this-alias
27
- const self = this;
28
- return StateField.define({
29
- create() {
30
- return Decoration.none;
31
- },
32
- update(value, transaction) {
33
- let v = value.map(transaction.changes);
34
- for (const effect of transaction.effects) {
35
- if (effect.is(self.clearEffect) || effect.is(self.setEffect)) {
36
- v = Decoration.none;
37
- }
38
- if (effect.is(self.addEffect) || effect.is(self.setEffect)) {
39
- v = v.update({ add: effect.value });
40
- }
41
- }
42
- return v;
43
- },
44
- provide: f => EditorView.decorations.from(f)
45
- });
46
- }
47
- }
48
- //# sourceMappingURL=LineEffectExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LineEffectExtension.js","sourceRoot":"","sources":["../../src/editor/LineEffectExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1D,MAAM,OAAO,mBAAmB;IAM5B,YAAY,IAAgB;QALX,cAAS,GAAG,WAAW,CAAC,MAAM,EAAuB,CAAC;QACtD,gBAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACnC,cAAS,GAAG,WAAW,CAAC,MAAM,EAAuB,CAAC;QAInE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,KAA0B;QACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC;SACrC,CAAC,CAAC;IACP,CAAC;IAEM,GAAG,CAAC,KAA0B;QACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC;IACP,CAAC;IAEM,WAAW;QACd,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,UAAU,CAAC,MAAM,CAAC;YACrB,MAAM;gBACF,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,WAAW;gBACrB,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAEvC,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBACvC,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC3D,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;oBACxB,CAAC;oBACD,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBACzD,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACxC,CAAC;gBACL,CAAC;gBAED,OAAO,CAAC,CAAC;YACb,CAAC;YACD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/C,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,21 +0,0 @@
1
- import { Extension } from "@codemirror/state";
2
- import { EditorView } from "@codemirror/view";
3
- export declare class TestCodeExtension {
4
- private readonly view;
5
- private readonly widget;
6
- private readonly lineEffect;
7
- private lines;
8
- private allowEdit;
9
- constructor(view: EditorView);
10
- private get numberOfTestLines();
11
- private lineFromEnd;
12
- private highlightLines;
13
- private addWidget;
14
- private clearAllLineEffects;
15
- private getReadOnlyRanges;
16
- private insertTestCode;
17
- reset(keepCode?: boolean): void;
18
- set testCode(code: string);
19
- getNonTestCode(): string;
20
- toExtension(): Extension;
21
- }
@@ -1,134 +0,0 @@
1
- import { Decoration, WidgetType } from "@codemirror/view";
2
- import readOnlyRangesExtension from "codemirror-readonly-ranges";
3
- import { t } from "../util/Util";
4
- import { LineEffectExtension } from "./LineEffectExtension";
5
- const highlightDecoration = Decoration.line({ class: "papyros-test-code" });
6
- // Widget to manage the test code
7
- class TestCodeWidget extends WidgetType {
8
- constructor(testCodeExtension) {
9
- super();
10
- this.testCodeExtension = testCodeExtension;
11
- }
12
- toDOM() {
13
- const element = document.createElement("div");
14
- element.classList.add("papyros-test-code-widget");
15
- const span = document.createElement("span");
16
- span.innerText = t("Papyros.editor.test_code.description");
17
- element.appendChild(span);
18
- const buttons = document.createElement("div");
19
- buttons.classList.add("papyros-test-code-buttons");
20
- const editButton = document.createElement("a");
21
- editButton.classList.add("papyros-icon-link");
22
- editButton.innerHTML = "<i class=\"mdi mdi-pencil\"></i>";
23
- editButton.addEventListener("click", () => {
24
- console.log("edit test code");
25
- this.testCodeExtension.reset(true);
26
- });
27
- editButton.title = t("Papyros.editor.test_code.edit");
28
- buttons.appendChild(editButton);
29
- const deleteButton = document.createElement("a");
30
- deleteButton.classList.add("papyros-icon-link");
31
- deleteButton.innerHTML = "<i class=\"mdi mdi-close\"></i>";
32
- deleteButton.addEventListener("click", () => {
33
- console.log("remove test code");
34
- this.testCodeExtension.reset();
35
- });
36
- deleteButton.title = t("Papyros.editor.test_code.remove");
37
- buttons.appendChild(deleteButton);
38
- element.appendChild(buttons);
39
- return element;
40
- }
41
- ignoreEvent() {
42
- return false;
43
- }
44
- }
45
- class BottomPaddingWidget extends WidgetType {
46
- toDOM() {
47
- const element = document.createElement("div");
48
- element.classList.add("papyros-bottom-padding-widget");
49
- element.appendChild(document.createElement("div"));
50
- return element;
51
- }
52
- }
53
- const bottomPaddingDecoration = Decoration.widget({ widget: new BottomPaddingWidget(), side: 1, block: true });
54
- export class TestCodeExtension {
55
- constructor(view) {
56
- this.lines = "";
57
- this.allowEdit = true;
58
- this.view = view;
59
- this.widget = Decoration.widget({ widget: new TestCodeWidget(this), block: true, side: 1 });
60
- this.lineEffect = new LineEffectExtension(view);
61
- }
62
- get numberOfTestLines() {
63
- return this.lines.split("\n").length;
64
- }
65
- lineFromEnd(line, state = undefined) {
66
- const currentState = state || this.view.state;
67
- const lineFromEnd = currentState.doc.lines - line;
68
- return currentState.doc.line(lineFromEnd);
69
- }
70
- highlightLines() {
71
- for (let i = 0; i < this.numberOfTestLines; i++) {
72
- this.lineEffect.add([highlightDecoration.range(this.lineFromEnd(i).from)]);
73
- }
74
- }
75
- addWidget() {
76
- this.lineEffect.add([
77
- this.widget.range(this.lineFromEnd(this.numberOfTestLines).to),
78
- bottomPaddingDecoration.range(this.lineFromEnd(0).to)
79
- ]);
80
- }
81
- clearAllLineEffects() {
82
- this.lineEffect.clear();
83
- }
84
- getReadOnlyRanges(state) {
85
- if (this.allowEdit) {
86
- return [];
87
- }
88
- return [{
89
- from: this.lineFromEnd(this.numberOfTestLines - 1, state).from,
90
- to: undefined // until last line
91
- }];
92
- }
93
- insertTestCode(code) {
94
- var _a;
95
- // insert up to two new lines to separate the test code from the user code
96
- // but only if they are not already there
97
- const finalNewLineCount = ((_a = this.view.state.doc.toString().match(/\n*$/)) === null || _a === void 0 ? void 0 : _a[0].length) || 0;
98
- const newLinesToInsert = Math.max(0, 2 - finalNewLineCount);
99
- this.view.dispatch({ changes: { from: this.lineFromEnd(0).to, insert: "\n".repeat(newLinesToInsert) } });
100
- this.view.dispatch({ changes: { from: this.lineFromEnd(0).to, insert: code } });
101
- this.lines = code;
102
- }
103
- reset(keepCode = false) {
104
- this.allowEdit = true;
105
- this.clearAllLineEffects();
106
- if (this.lines === "") {
107
- return;
108
- }
109
- if (!keepCode) {
110
- this.view.dispatch({ changes: { from: this.lineFromEnd(this.numberOfTestLines).to, to: this.lineFromEnd(0).to, insert: "" } });
111
- }
112
- this.lines = "";
113
- }
114
- set testCode(code) {
115
- this.reset();
116
- if (code === "") {
117
- return;
118
- }
119
- this.insertTestCode(code);
120
- this.allowEdit = false;
121
- this.highlightLines();
122
- this.addWidget();
123
- }
124
- getNonTestCode() {
125
- if (this.allowEdit) {
126
- return this.view.state.doc.toString();
127
- }
128
- return this.view.state.doc.sliceString(0, this.lineFromEnd(this.numberOfTestLines).to);
129
- }
130
- toExtension() {
131
- return [this.lineEffect.toExtension(), readOnlyRangesExtension(this.getReadOnlyRanges.bind(this))];
132
- }
133
- }
134
- //# sourceMappingURL=TestCodeExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestCodeExtension.js","sourceRoot":"","sources":["../../src/editor/TestCodeExtension.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { ProgrammingLanguage } from "../ProgrammingLanguage";
2
- export declare function getExamples(language: ProgrammingLanguage): {
3
- [key: string]: string;
4
- };
5
- export declare function getExampleNames(language: ProgrammingLanguage): Array<string>;
6
- export declare function getCodeForExample(language: ProgrammingLanguage, name: string): string;
@@ -1,23 +0,0 @@
1
- import { ProgrammingLanguage } from "../ProgrammingLanguage";
2
- import { JAVASCRIPT_EXAMPLES } from "./JavaScriptExamples";
3
- import { PYTHON_EXAMPLES } from "./PythonExamples";
4
- const EXAMPLES_MAP = new Map([
5
- [ProgrammingLanguage.JavaScript, JAVASCRIPT_EXAMPLES],
6
- // Hello, World! as key seems to cause issues for TypeScript
7
- [ProgrammingLanguage.Python, PYTHON_EXAMPLES]
8
- ]);
9
- export function getExamples(language) {
10
- if (EXAMPLES_MAP.has(language)) {
11
- return EXAMPLES_MAP.get(language);
12
- }
13
- else {
14
- return {};
15
- }
16
- }
17
- export function getExampleNames(language) {
18
- return Object.keys(getExamples(language));
19
- }
20
- export function getCodeForExample(language, name) {
21
- return getExamples(language)[name];
22
- }
23
- //# sourceMappingURL=Examples.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Examples.js","sourceRoot":"","sources":["../../src/examples/Examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,MAAM,YAAY,GAAuC,IAAI,GAAG,CAAC;IAC7D,CAAC,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACrD,4DAA4D;IAC5D,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAA2B,CAAC;CAC5D,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,QAA6B;IACrD,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACJ,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA6B;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA6B,EAAE,IAAY;IACzE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JavaScriptExamples.js","sourceRoot":"","sources":["../../src/examples/JavaScriptExamples.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,cAAc,EAAE,iCAAiC;IACjD,OAAO,EACH;kCAC0B;IAC9B,WAAW,EACP;;;;;;;;;CASP;CACA,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PythonExamples.js","sourceRoot":"","sources":["../../src/examples/PythonExamples.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,eAAe,EAAE,wBAAwB;IACzC,OAAO,EACH;yBACiB;IACrB,WAAW,EACP;;;yCAGiC;IACrC,UAAU,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDP;IACG,OAAO,EACH;;;;;;;;;;;;;;;CAeP;IACG,WAAW,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BP;IACG,SAAS,EACL;;;;CAIP;IACG,OAAO,EACH;;;;;;;CAOP;IACG,YAAY,EACR;;;;;;;;;;;;;;;;;;CAkBP;IACG,OAAO,EAAE;;;;;;;;CAQZ;IACG,UAAU,EAAE;;;;;;;;CAQf;IACG,WAAW,EAAE;;;;CAIhB;CACA,CAAC"}
@@ -1,55 +0,0 @@
1
- import { InputManagerRenderOptions, InputMode } from "../InputManager";
2
- import { UserInputHandler } from "./UserInputHandler";
3
- import { BatchInputEditor } from "../editor/BatchInputEditor";
4
- export declare class BatchInputHandler extends UserInputHandler {
5
- /**
6
- * The index of the next line in lines to send
7
- */
8
- private lineNr;
9
- /**
10
- * Messages used when asking for user input
11
- */
12
- private prompts;
13
- /**
14
- * Whether a run is occurring
15
- */
16
- private running;
17
- /**
18
- * Editor containing the input of the user
19
- */
20
- readonly batchEditor: BatchInputEditor;
21
- /**
22
- * The previous input of the user
23
- * Is restored upon switching back to InputMode.Batch
24
- */
25
- private previousInput;
26
- debugMode: boolean;
27
- private debugLine;
28
- /**
29
- * Construct a new BatchInputHandler
30
- * @param {function()} inputCallback Callback for when the user has entered a value
31
- */
32
- constructor(inputCallback: (line: string) => void);
33
- /**
34
- * Handle new input, potentially sending it to the awaiting receiver
35
- * @param {string} newInput The new user input
36
- */
37
- private handleInputChanged;
38
- toggle(active: boolean): void;
39
- getInputMode(): InputMode;
40
- /**
41
- * Retrieve the lines of input that the user has given so far
42
- * @return {Array<string>} The entered lines
43
- */
44
- protected get lines(): Array<string>;
45
- hasNext(): boolean;
46
- private highlight;
47
- next(): string;
48
- reset(): void;
49
- onRunStart(): void;
50
- onRunEnd(): void;
51
- waitWithPrompt(waiting: boolean, prompt?: string): void;
52
- protected setPlaceholder(placeholderValue: string): void;
53
- focus(): void;
54
- protected _render(options: InputManagerRenderOptions): void;
55
- }