@dodona/papyros 3.0.2 → 4.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/README.md +133 -72
  2. package/dist/Components.d.ts +4 -0
  3. package/dist/Components.js +5 -0
  4. package/dist/Components.js.map +1 -0
  5. package/dist/Papyros.d.ts +18 -127
  6. package/dist/Papyros.js +39 -211
  7. package/dist/Papyros.js.map +1 -1
  8. package/dist/{Backend.d.ts → backend/Backend.d.ts} +3 -12
  9. package/dist/{Backend.js → backend/Backend.js} +4 -17
  10. package/dist/backend/Backend.js.map +1 -0
  11. package/dist/{workers → backend/workers}/javascript/JavaScriptWorker.js +1 -1
  12. package/dist/backend/workers/javascript/JavaScriptWorker.js.map +1 -0
  13. package/dist/backend/workers/javascript/worker.js.map +1 -0
  14. package/dist/{workers → backend/workers}/python/PythonWorker.d.ts +2 -2
  15. package/dist/{workers → backend/workers}/python/PythonWorker.js +2 -2
  16. package/dist/backend/workers/python/PythonWorker.js.map +1 -0
  17. package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
  18. package/dist/backend/workers/python/worker.js.map +1 -0
  19. package/dist/communication/BackendEvent.js.map +1 -0
  20. package/dist/{BackendEventQueue.d.ts → communication/BackendEventQueue.d.ts} +1 -36
  21. package/dist/{BackendEventQueue.js → communication/BackendEventQueue.js} +2 -45
  22. package/dist/communication/BackendEventQueue.js.map +1 -0
  23. package/dist/{BackendManager.d.ts → communication/BackendManager.d.ts} +2 -2
  24. package/dist/{BackendManager.js → communication/BackendManager.js} +4 -4
  25. package/dist/communication/BackendManager.js.map +1 -0
  26. package/dist/communication/InputServiceWorker.js +37 -0
  27. package/dist/communication/InputServiceWorker.js.map +1 -0
  28. package/dist/communication/InputWorker.js.map +1 -0
  29. package/dist/frontend/components/CodeRunner.d.ts +9 -0
  30. package/dist/frontend/components/CodeRunner.js +60 -0
  31. package/dist/frontend/components/CodeRunner.js.map +1 -0
  32. package/dist/frontend/components/Debugger.d.ts +7 -0
  33. package/dist/frontend/components/Debugger.js +62 -0
  34. package/dist/frontend/components/Debugger.js.map +1 -0
  35. package/dist/frontend/components/Input.d.ts +17 -0
  36. package/dist/frontend/components/Input.js +73 -0
  37. package/dist/frontend/components/Input.js.map +1 -0
  38. package/dist/frontend/components/Output.d.ts +14 -0
  39. package/dist/frontend/components/Output.js +154 -0
  40. package/dist/frontend/components/Output.js.map +1 -0
  41. package/dist/frontend/components/PapyrosElement.d.ts +8 -0
  42. package/dist/frontend/components/PapyrosElement.js +24 -0
  43. package/dist/frontend/components/PapyrosElement.js.map +1 -0
  44. package/dist/frontend/components/app/App.d.ts +24 -0
  45. package/dist/frontend/components/app/App.js +204 -0
  46. package/dist/frontend/components/app/App.js.map +1 -0
  47. package/dist/frontend/components/app/ExamplePicker.d.ts +7 -0
  48. package/dist/frontend/components/app/ExamplePicker.js +35 -0
  49. package/dist/frontend/components/app/ExamplePicker.js.map +1 -0
  50. package/dist/frontend/components/app/LanguagePicker.d.ts +7 -0
  51. package/dist/frontend/components/app/LanguagePicker.js +35 -0
  52. package/dist/frontend/components/app/LanguagePicker.js.map +1 -0
  53. package/dist/frontend/components/app/ProgrammingLanguagePicker.d.ts +7 -0
  54. package/dist/frontend/components/app/ProgrammingLanguagePicker.js +39 -0
  55. package/dist/frontend/components/app/ProgrammingLanguagePicker.js.map +1 -0
  56. package/dist/frontend/components/app/examples/JavaScriptExamples.js.map +1 -0
  57. package/dist/frontend/components/app/examples/PythonExamples.js.map +1 -0
  58. package/dist/frontend/components/app/themes/ThemePicker.d.ts +11 -0
  59. package/dist/frontend/components/app/themes/ThemePicker.js +47 -0
  60. package/dist/frontend/components/app/themes/ThemePicker.js.map +1 -0
  61. package/dist/frontend/components/app/themes/ThemedButton.d.ts +9 -0
  62. package/dist/frontend/components/app/themes/ThemedButton.js +43 -0
  63. package/dist/frontend/components/app/themes/ThemedButton.js.map +1 -0
  64. package/dist/frontend/components/code_mirror/BatchInputEditor.d.ts +8 -0
  65. package/dist/frontend/components/code_mirror/BatchInputEditor.js +54 -0
  66. package/dist/frontend/components/code_mirror/BatchInputEditor.js.map +1 -0
  67. package/dist/frontend/components/code_mirror/CodeEditor.d.ts +24 -0
  68. package/dist/frontend/components/code_mirror/CodeEditor.js +206 -0
  69. package/dist/frontend/components/code_mirror/CodeEditor.js.map +1 -0
  70. package/dist/frontend/components/code_mirror/CodeMirrorEditor.d.ts +20 -0
  71. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js +99 -0
  72. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js.map +1 -0
  73. package/dist/frontend/components/code_mirror/Extensions.d.ts +15 -0
  74. package/dist/frontend/components/code_mirror/Extensions.js +169 -0
  75. package/dist/frontend/components/code_mirror/Extensions.js.map +1 -0
  76. package/dist/frontend/components/code_mirror/MaterialTheme.d.ts +5 -0
  77. package/dist/frontend/components/code_mirror/MaterialTheme.js +109 -0
  78. package/dist/frontend/components/code_mirror/MaterialTheme.js.map +1 -0
  79. package/dist/frontend/components/code_runner/ButtonLint.d.ts +9 -0
  80. package/dist/frontend/components/code_runner/ButtonLint.js +76 -0
  81. package/dist/frontend/components/code_runner/ButtonLint.js.map +1 -0
  82. package/dist/frontend/components/code_runner/Code.d.ts +7 -0
  83. package/dist/frontend/components/code_runner/Code.js +46 -0
  84. package/dist/frontend/components/code_runner/Code.js.map +1 -0
  85. package/dist/frontend/components/code_runner/RunState.d.ts +7 -0
  86. package/dist/frontend/components/code_runner/RunState.js +41 -0
  87. package/dist/frontend/components/code_runner/RunState.js.map +1 -0
  88. package/dist/frontend/components/input/BatchInput.d.ts +19 -0
  89. package/dist/frontend/components/input/BatchInput.js +92 -0
  90. package/dist/frontend/components/input/BatchInput.js.map +1 -0
  91. package/dist/frontend/components/input/InteractiveInput.d.ts +13 -0
  92. package/dist/frontend/components/input/InteractiveInput.js +73 -0
  93. package/dist/frontend/components/input/InteractiveInput.js.map +1 -0
  94. package/dist/frontend/state/Constants.d.ts +38 -0
  95. package/dist/frontend/state/Constants.js +108 -0
  96. package/dist/frontend/state/Constants.js.map +1 -0
  97. package/dist/frontend/state/Debugger.d.ts +23 -0
  98. package/dist/frontend/state/Debugger.js +80 -0
  99. package/dist/frontend/state/Debugger.js.map +1 -0
  100. package/dist/frontend/state/Examples.d.ts +11 -0
  101. package/dist/frontend/state/Examples.js +36 -0
  102. package/dist/frontend/state/Examples.js.map +1 -0
  103. package/dist/frontend/state/I18n.d.ts +16 -0
  104. package/dist/frontend/state/I18n.js +75 -0
  105. package/dist/frontend/state/I18n.js.map +1 -0
  106. package/dist/frontend/state/InputOutput.d.ts +55 -0
  107. package/dist/frontend/state/InputOutput.js +93 -0
  108. package/dist/frontend/state/InputOutput.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 +1 -4
  137. package/dist/util/Util.js +7 -8
  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/Library.d.ts +0 -12
  161. package/dist/Library.js +0 -9
  162. package/dist/Library.js.map +0 -1
  163. package/dist/OutputManager.d.ts +0 -90
  164. package/dist/OutputManager.js +0 -172
  165. package/dist/OutputManager.js.map +0 -1
  166. package/dist/Papyros.css +0 -657
  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,70 +0,0 @@
1
- import { Decoration, EditorView, gutterLineClass, GutterMarker } from "@codemirror/view";
2
- import { LineEffectExtension } from "./LineEffectExtension";
3
- import { DebugLineGutter } from "./Gutters";
4
- import { RangeSet, StateEffect, StateField } from "@codemirror/state";
5
- import { BackendManager } from "../BackendManager";
6
- import { BackendEventType } from "../BackendEvent";
7
- const activeLineDecoration = Decoration.line({ class: "cm-activeLine" });
8
- const activeLineGutterMarker = new class extends GutterMarker {
9
- constructor() {
10
- super(...arguments);
11
- this.elementClass = "cm-activeLineGutter";
12
- }
13
- };
14
- const markLine = StateEffect.define();
15
- const markedLine = StateField.define({
16
- create: () => undefined,
17
- update(value, tr) {
18
- for (const effect of tr.effects) {
19
- if (effect.is(markLine)) {
20
- return effect.value;
21
- }
22
- }
23
- return value;
24
- }
25
- });
26
- const markedLineGutterHighlighter = gutterLineClass.compute([markedLine], state => {
27
- if (state.field(markedLine) === undefined) {
28
- return RangeSet.empty;
29
- }
30
- const linePos = state.doc.line(state.field(markedLine)).from;
31
- return RangeSet.of([activeLineGutterMarker.range(linePos)]);
32
- });
33
- export class DebugExtension {
34
- constructor(view) {
35
- this.view = view;
36
- this.gutter = new DebugLineGutter();
37
- this.lineEffect = new LineEffectExtension(view);
38
- BackendManager.subscribe(BackendEventType.FrameChange, e => {
39
- const line = e.data.line;
40
- this.markLine(line);
41
- });
42
- }
43
- reset() {
44
- this.markLine(1);
45
- }
46
- markLine(lineNr) {
47
- if (lineNr === undefined) {
48
- this.gutter.markLine(this.view, lineNr);
49
- this.lineEffect.set([]);
50
- this.view.dispatch({ effects: [markLine.of(undefined)] });
51
- return;
52
- }
53
- this.gutter.markLine(this.view, lineNr);
54
- this.lineEffect.set([activeLineDecoration.range(this.view.state.doc.line(lineNr).from)]);
55
- this.view.dispatch({ effects: [
56
- markLine.of(lineNr),
57
- EditorView.scrollIntoView(this.view.state.doc.line(lineNr).from)
58
- ] });
59
- }
60
- toExtension() {
61
- return [
62
- this.lineEffect.toExtension(),
63
- this.gutter.toExtension(),
64
- markedLine,
65
- markedLineGutterHighlighter,
66
- EditorView.editable.of(false)
67
- ];
68
- }
69
- }
70
- //# sourceMappingURL=DebugExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DebugExtension.js","sourceRoot":"","sources":["../../src/editor/DebugExtension.ts"],"names":[],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- import { StateEffectType, StateField } from "@codemirror/state";
2
- import { Extension } from "@codemirror/state";
3
- import { GutterMarker } from "@codemirror/view";
4
- import { EditorView } from "@codemirror/view";
5
- /**
6
- * Data used in Gutter elements
7
- */
8
- export interface GutterInfo {
9
- /**
10
- * The number of the line (1-based)
11
- */
12
- lineNr: number;
13
- /**
14
- * Whether the Gutter element should be shown
15
- */
16
- on: boolean;
17
- }
18
- /**
19
- * Configuration for Gutters
20
- */
21
- export interface IGutterConfig<Info extends GutterInfo> {
22
- /**
23
- * Name of this Gutter
24
- */
25
- name: string;
26
- /**
27
- * HTML class names for the marker icons
28
- */
29
- markerClasses?: string;
30
- /**
31
- * Handler for when a Gutter element is clicked
32
- */
33
- onClick?: (view: EditorView, info: Info) => void;
34
- /**
35
- * Extra extensions to use for the Gutters
36
- */
37
- extraExtensions?: Extension;
38
- }
39
- export declare abstract class Gutters<Info extends GutterInfo = GutterInfo, Config extends IGutterConfig<Info> = IGutterConfig<Info>> {
40
- /**
41
- * Config used to initialize the Gutters
42
- */
43
- protected config: Config;
44
- /**
45
- * Effect to signal changes in the Gutters
46
- */
47
- protected effect: StateEffectType<Info>;
48
- /**
49
- * Current state of the Gutters
50
- * Consists of a mapping for line numbers to Info objects
51
- */
52
- protected state: StateField<Map<number, Info>>;
53
- constructor(config: Config);
54
- /**
55
- * Render a marker with the given info
56
- * @param {Info} info Info used to render the marker
57
- * Will only be called when info.on is True
58
- */
59
- protected abstract marker(info: Info): GutterMarker;
60
- private applyClasses;
61
- hasMarker(view: EditorView, lineNr: number): boolean;
62
- /**
63
- * Set a marker with the given info
64
- * @param {EditorView} view View in which the Gutters live
65
- * @param {Info} info Info used to render the marker
66
- */
67
- setMarker(view: EditorView, info: Info): void;
68
- /**
69
- * @param {EditorView} view The view in which the Gutters live
70
- * @return {Set<number>} The 1-based line numbers with a breakpoint
71
- */
72
- getMarkedLines(view: EditorView): Set<number>;
73
- /**
74
- * @return {Extension} The Gutters as a CodeMirror Extension
75
- */
76
- toExtension(): Extension;
77
- }
78
- /**
79
- * Gutters to show and allow toggling of breakpoints
80
- */
81
- export declare class BreakpointsGutter extends Gutters {
82
- constructor();
83
- protected marker(): GutterMarker;
84
- }
85
- /**
86
- * Extra data used to represent input gutters
87
- */
88
- export interface UsedInputGutterInfo extends GutterInfo {
89
- /**
90
- * Text value to display when hovering over the Gutter element
91
- */
92
- title: string;
93
- }
94
- /**
95
- * Gutters to show a checkmark for used input
96
- */
97
- export declare class UsedInputGutters extends Gutters<UsedInputGutterInfo> {
98
- constructor();
99
- protected marker(info: UsedInputGutterInfo): GutterMarker;
100
- }
101
- /**
102
- * shows the debugged line
103
- */
104
- export declare class DebugLineGutter extends Gutters<GutterInfo> {
105
- private activeLine;
106
- constructor();
107
- protected marker(): GutterMarker;
108
- markLine(view: EditorView, lineNr: number | undefined): void;
109
- }
@@ -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"}