@dodona/papyros 4.1.3 → 4.2.1

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 (68) hide show
  1. package/dist/InputServiceWorker.js +1 -1
  2. package/dist/Library.d.ts +2 -1
  3. package/dist/Library.js +2 -1
  4. package/dist/Library.js.map +1 -1
  5. package/dist/backend/Backend.d.ts +21 -0
  6. package/dist/backend/Backend.js +30 -0
  7. package/dist/backend/Backend.js.map +1 -1
  8. package/dist/backend/workers/javascript/JavaScriptWorker.js +1 -1
  9. package/dist/backend/workers/javascript/JavaScriptWorker.js.map +1 -1
  10. package/dist/backend/workers/python/PythonWorker.d.ts +3 -0
  11. package/dist/backend/workers/python/PythonWorker.js +18 -0
  12. package/dist/backend/workers/python/PythonWorker.js.map +1 -1
  13. package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
  14. package/dist/communication/BackendEvent.d.ts +2 -1
  15. package/dist/communication/BackendEvent.js +1 -0
  16. package/dist/communication/BackendEvent.js.map +1 -1
  17. package/dist/communication/BackendManager.js +2 -1
  18. package/dist/communication/BackendManager.js.map +1 -1
  19. package/dist/frontend/components/AddFileButton.d.ts +16 -0
  20. package/dist/frontend/components/AddFileButton.js +124 -0
  21. package/dist/frontend/components/AddFileButton.js.map +1 -0
  22. package/dist/frontend/components/CodeRunner.d.ts +11 -0
  23. package/dist/frontend/components/CodeRunner.js +129 -8
  24. package/dist/frontend/components/CodeRunner.js.map +1 -1
  25. package/dist/frontend/components/Debugger.js +3 -0
  26. package/dist/frontend/components/Debugger.js.map +1 -1
  27. package/dist/frontend/components/EditorTab.d.ts +24 -0
  28. package/dist/frontend/components/EditorTab.js +215 -0
  29. package/dist/frontend/components/EditorTab.js.map +1 -0
  30. package/dist/frontend/components/EditorTabs.d.ts +10 -0
  31. package/dist/frontend/components/EditorTabs.js +58 -0
  32. package/dist/frontend/components/EditorTabs.js.map +1 -0
  33. package/dist/frontend/components/FileViewer.d.ts +14 -0
  34. package/dist/frontend/components/FileViewer.js +119 -0
  35. package/dist/frontend/components/FileViewer.js.map +1 -0
  36. package/dist/frontend/components/code_mirror/CodeMirrorEditor.d.ts +1 -0
  37. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js +4 -0
  38. package/dist/frontend/components/code_mirror/CodeMirrorEditor.js.map +1 -1
  39. package/dist/frontend/components/code_mirror/FileEditor.d.ts +6 -0
  40. package/dist/frontend/components/code_mirror/FileEditor.js +48 -0
  41. package/dist/frontend/components/code_mirror/FileEditor.js.map +1 -0
  42. package/dist/frontend/components/shared-styles.d.ts +3 -0
  43. package/dist/frontend/components/shared-styles.js +45 -0
  44. package/dist/frontend/components/shared-styles.js.map +1 -0
  45. package/dist/frontend/state/Constants.d.ts +1 -0
  46. package/dist/frontend/state/Constants.js +7 -0
  47. package/dist/frontend/state/Constants.js.map +1 -1
  48. package/dist/frontend/state/Debugger.d.ts +8 -1
  49. package/dist/frontend/state/Debugger.js +39 -3
  50. package/dist/frontend/state/Debugger.js.map +1 -1
  51. package/dist/frontend/state/InputOutput.d.ts +14 -0
  52. package/dist/frontend/state/InputOutput.js +56 -3
  53. package/dist/frontend/state/InputOutput.js.map +1 -1
  54. package/dist/frontend/state/Papyros.js +3 -2
  55. package/dist/frontend/state/Papyros.js.map +1 -1
  56. package/dist/frontend/state/PapyrosErrors.d.ts +9 -0
  57. package/dist/frontend/state/PapyrosErrors.js +13 -0
  58. package/dist/frontend/state/PapyrosErrors.js.map +1 -0
  59. package/dist/frontend/state/Runner.d.ts +3 -0
  60. package/dist/frontend/state/Runner.js +18 -0
  61. package/dist/frontend/state/Runner.js.map +1 -1
  62. package/dist/frontend/state/Translations.d.ts +18 -0
  63. package/dist/frontend/state/Translations.js +18 -0
  64. package/dist/frontend/state/Translations.js.map +1 -1
  65. package/dist/util/Util.d.ts +2 -0
  66. package/dist/util/Util.js +15 -0
  67. package/dist/util/Util.js.map +1 -1
  68. package/package.json +4 -4
@@ -1 +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,CAAC;IACN,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,CAAC,CAAC,CAAC,EAAE;;sCAE9E,IAAI,CAAC,OAAO;;;SAGzC,CAAC;IACN,CAAC;CACJ,CAAA;AA3CY,UAAU;IADtB,aAAa,CAAC,eAAe,CAAC;GAClB,UAAU,CA2CtB"}
1
+ {"version":3,"file":"CodeRunner.js","sourceRoot":"","sources":["../../../src/frontend/components/CodeRunner.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@ let Debugger = class Debugger extends PapyrosElement {
12
12
  static get styles() {
13
13
  return css `
14
14
  :host {
15
+ display: block;
16
+ height: 100%;
17
+
15
18
  /* Base / surface */
16
19
  --tc-surface-color: var(--md-sys-color-surface-container);
17
20
  --tc-on-surface-color: var(--md-sys-color-on-surface);
@@ -1 +1 @@
1
- {"version":3,"file":"Debugger.js","sourceRoot":"","sources":["../../../src/frontend/components/Debugger.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,cAAc;IACxC,MAAM,KAAc,MAAM;QACtB,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAyCT,CAAC;IACN,CAAC;IAEkB,MAAM;;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAA,6BAA6B,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC;QACxF,CAAC;QAED,OAAO,IAAI,CAAA;qBACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;4BACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;6BACpD,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,mCAAI,CAAC;4BACvC,CAAC,CAAc,EAAE,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACvD,CAAC;qBACQ,CAAC;IAClB,CAAC;CACJ,CAAA;AA5DY,QAAQ;IADpB,aAAa,CAAC,YAAY,CAAC;GACf,QAAQ,CA4DpB"}
1
+ {"version":3,"file":"Debugger.js","sourceRoot":"","sources":["../../../src/frontend/components/Debugger.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,cAAc;IACxC,MAAM,KAAc,MAAM;QACtB,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA4CT,CAAC;IACN,CAAC;IAEkB,MAAM;;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAA,6BAA6B,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC;QACxF,CAAC;QAED,OAAO,IAAI,CAAA;qBACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;4BACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;6BACpD,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,mCAAI,CAAC;4BACvC,CAAC,CAAc,EAAE,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACvD,CAAC;qBACQ,CAAC;IAClB,CAAC;CACJ,CAAA;AA/DY,QAAQ;IADpB,aAAa,CAAC,YAAY,CAAC;GACf,QAAQ,CA+DpB"}
@@ -0,0 +1,24 @@
1
+ import { PapyrosElement } from "./PapyrosElement";
2
+ import { CSSResult, TemplateResult } from "lit";
3
+ import { FileEntry } from "../state/InputOutput";
4
+ export declare class EditorTab extends PapyrosElement {
5
+ file: FileEntry;
6
+ private renaming;
7
+ private invalid;
8
+ private renameInputRef;
9
+ static get styles(): CSSResult;
10
+ private setTab;
11
+ private closeFile;
12
+ private startRenaming;
13
+ private confirmRename;
14
+ private cancelRename;
15
+ private onRenameInput;
16
+ private onRenameKeydown;
17
+ private onDblClick;
18
+ private onAuxClick;
19
+ private onRenameClick;
20
+ private onRenameBtnKeydown;
21
+ private onCloseBtnKeydown;
22
+ protected updated(): void;
23
+ protected render(): TemplateResult;
24
+ }
@@ -0,0 +1,215 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, property, state } from "lit/decorators.js";
8
+ import { PapyrosElement } from "./PapyrosElement";
9
+ import { css, html } from "lit";
10
+ import { createRef, ref } from "lit/directives/ref.js";
11
+ import { inlineInputStyles, tabButtonStyles } from "./shared-styles";
12
+ import { isValidFileName } from "../../util/Util";
13
+ let EditorTab = class EditorTab extends PapyrosElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.renaming = false;
17
+ this.invalid = false;
18
+ this.renameInputRef = createRef();
19
+ }
20
+ static get styles() {
21
+ return css `
22
+ :host {
23
+ display: flex;
24
+ }
25
+
26
+ ${tabButtonStyles}
27
+
28
+ .close-btn,
29
+ .rename-btn {
30
+ display: none;
31
+ align-items: center;
32
+ justify-content: center;
33
+ width: 1rem;
34
+ height: 1rem;
35
+ border-radius: 50%;
36
+ font-size: 0.75rem;
37
+ line-height: 1;
38
+ padding: 0;
39
+ background: transparent;
40
+ border: none;
41
+ cursor: pointer;
42
+ color: inherit;
43
+ opacity: 0.6;
44
+ }
45
+
46
+ .rename-btn svg {
47
+ width: 0.75rem;
48
+ height: 0.75rem;
49
+ }
50
+
51
+ button.active .rename-btn,
52
+ button.active .close-btn {
53
+ display: inline-flex;
54
+ }
55
+
56
+ .close-btn:hover {
57
+ opacity: 1;
58
+ background-color: var(--md-sys-color-error);
59
+ color: var(--md-sys-color-on-error);
60
+ }
61
+
62
+ .rename-btn:hover {
63
+ opacity: 1;
64
+ background-color: var(--md-sys-color-primary);
65
+ color: var(--md-sys-color-on-primary);
66
+ }
67
+
68
+ ${inlineInputStyles}
69
+ `;
70
+ }
71
+ setTab() {
72
+ this.papyros.io.activeEditorTab = this.file.name;
73
+ }
74
+ closeFile(e) {
75
+ e.stopPropagation();
76
+ if (!confirm(this.t("Papyros.close_file_confirm")))
77
+ return;
78
+ this.papyros.io.removeFile(this.file.name);
79
+ void this.papyros.runner.deleteFile(this.file.name);
80
+ }
81
+ startRenaming() {
82
+ this.renaming = true;
83
+ this.invalid = false;
84
+ }
85
+ confirmRename() {
86
+ var _a, _b;
87
+ if (!this.renaming)
88
+ return;
89
+ const oldName = this.file.name;
90
+ const newName = (_b = (_a = this.renameInputRef.value) === null || _a === void 0 ? void 0 : _a.value.trim()) !== null && _b !== void 0 ? _b : "";
91
+ if (newName === oldName) {
92
+ this.renaming = false;
93
+ return;
94
+ }
95
+ if (!this.papyros.io.renameFile(oldName, newName)) {
96
+ return;
97
+ }
98
+ this.renaming = false;
99
+ void this.papyros.runner.renameFile(oldName, newName);
100
+ }
101
+ cancelRename() {
102
+ this.renaming = false;
103
+ }
104
+ onRenameInput() {
105
+ var _a, _b;
106
+ const value = (_b = (_a = this.renameInputRef.value) === null || _a === void 0 ? void 0 : _a.value.trim()) !== null && _b !== void 0 ? _b : "";
107
+ this.invalid =
108
+ !isValidFileName(value) ||
109
+ (value !== this.file.name && this.papyros.io.files.some((f) => f.name === value));
110
+ }
111
+ onRenameKeydown(e) {
112
+ if (e.key === "Enter") {
113
+ e.preventDefault();
114
+ this.confirmRename();
115
+ }
116
+ else if (e.key === "Escape") {
117
+ this.cancelRename();
118
+ }
119
+ }
120
+ onDblClick() {
121
+ if (!this.papyros.debugger.active)
122
+ this.startRenaming();
123
+ }
124
+ onAuxClick(e) {
125
+ if (!this.papyros.debugger.active && e.button === 1)
126
+ this.closeFile(e);
127
+ }
128
+ onRenameClick(e) {
129
+ e.stopPropagation();
130
+ this.startRenaming();
131
+ }
132
+ onRenameBtnKeydown(e) {
133
+ if (e.key === "Enter" || e.key === " ") {
134
+ e.preventDefault();
135
+ e.stopPropagation();
136
+ this.startRenaming();
137
+ }
138
+ }
139
+ onCloseBtnKeydown(e) {
140
+ if (e.key === "Enter" || e.key === " ") {
141
+ e.preventDefault();
142
+ this.closeFile(e);
143
+ }
144
+ }
145
+ updated() {
146
+ if (this.renaming) {
147
+ const input = this.renameInputRef.value;
148
+ if (input) {
149
+ input.focus();
150
+ input.select();
151
+ }
152
+ }
153
+ }
154
+ render() {
155
+ const active = this.papyros.io.activeEditorTab === this.file.name;
156
+ const debugActive = this.papyros.debugger.active;
157
+ if (!debugActive && this.renaming) {
158
+ return html `<input
159
+ ${ref(this.renameInputRef)}
160
+ class=${this.invalid ? "inline-input invalid" : "inline-input"}
161
+ .value=${this.file.name}
162
+ @input=${this.onRenameInput}
163
+ @keydown=${this.onRenameKeydown}
164
+ @blur=${this.confirmRename}
165
+ />`;
166
+ }
167
+ return html `
168
+ <button
169
+ class=${active ? "active" : ""}
170
+ @click=${this.setTab}
171
+ @dblclick=${this.onDblClick}
172
+ @auxclick=${this.onAuxClick}
173
+ >
174
+ ${this.file.name}
175
+ ${debugActive
176
+ ? ""
177
+ : html `<span
178
+ class="rename-btn"
179
+ role="button"
180
+ tabindex="0"
181
+ title=${this.t("Papyros.rename_file_tab")}
182
+ aria-label=${this.t("Papyros.rename_file_tab")}
183
+ @click=${this.onRenameClick}
184
+ @keydown=${this.onRenameBtnKeydown}
185
+ >
186
+ ${this.papyros.constants.icons.edit}
187
+ </span>
188
+ <span
189
+ class="close-btn"
190
+ role="button"
191
+ tabindex="0"
192
+ title=${this.t("Papyros.close_file_tab")}
193
+ aria-label=${this.t("Papyros.close_file_tab")}
194
+ @click=${this.closeFile}
195
+ @keydown=${this.onCloseBtnKeydown}
196
+ >×</span
197
+ >`}
198
+ </button>
199
+ `;
200
+ }
201
+ };
202
+ __decorate([
203
+ property({ attribute: false })
204
+ ], EditorTab.prototype, "file", void 0);
205
+ __decorate([
206
+ state()
207
+ ], EditorTab.prototype, "renaming", void 0);
208
+ __decorate([
209
+ state()
210
+ ], EditorTab.prototype, "invalid", void 0);
211
+ EditorTab = __decorate([
212
+ customElement("p-editor-tab")
213
+ ], EditorTab);
214
+ export { EditorTab };
215
+ //# sourceMappingURL=EditorTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorTab.js","sourceRoot":"","sources":["../../../src/frontend/components/EditorTab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { PapyrosElement } from "./PapyrosElement";
2
+ import { CSSResult, TemplateResult } from "lit";
3
+ import { FileEntry } from "../state/InputOutput";
4
+ import "./EditorTab";
5
+ import "./AddFileButton";
6
+ export declare class EditorTabs extends PapyrosElement {
7
+ files: FileEntry[];
8
+ static get styles(): CSSResult;
9
+ protected render(): TemplateResult;
10
+ }
@@ -0,0 +1,58 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, property } from "lit/decorators.js";
8
+ import { PapyrosElement } from "./PapyrosElement";
9
+ import { css, html } from "lit";
10
+ import { CODE_TAB } from "../state/InputOutput";
11
+ import "./EditorTab";
12
+ import "./AddFileButton";
13
+ import { tabButtonStyles } from "./shared-styles";
14
+ let EditorTabs = class EditorTabs extends PapyrosElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.files = [];
18
+ }
19
+ static get styles() {
20
+ return css `
21
+ :host {
22
+ display: flex;
23
+ flex-direction: row;
24
+ gap: 0.25rem;
25
+ padding: 0.25rem 0.25rem 0;
26
+ background-color: var(--md-sys-color-surface-container);
27
+ border-radius: 0.5rem 0.5rem 0 0;
28
+ max-height: 2.5rem;
29
+ flex-shrink: 0;
30
+ overflow-x: auto;
31
+ }
32
+
33
+ ${tabButtonStyles}
34
+ `;
35
+ }
36
+ render() {
37
+ const activeTab = this.papyros.io.activeEditorTab;
38
+ const debugActive = this.papyros.debugger.active;
39
+ return html `
40
+ <button
41
+ class=${activeTab === CODE_TAB ? "active" : ""}
42
+ @click=${() => (this.papyros.io.activeEditorTab = CODE_TAB)}
43
+ >
44
+ ${this.t("Papyros.editor_tab_code")}
45
+ </button>
46
+ ${this.files.map((f) => html `<p-editor-tab .papyros=${this.papyros} .file=${f}></p-editor-tab>`)}
47
+ ${debugActive ? "" : html `<p-add-file-button .papyros=${this.papyros}></p-add-file-button>`}
48
+ `;
49
+ }
50
+ };
51
+ __decorate([
52
+ property({ attribute: false })
53
+ ], EditorTabs.prototype, "files", void 0);
54
+ EditorTabs = __decorate([
55
+ customElement("p-editor-tabs")
56
+ ], EditorTabs);
57
+ export { EditorTabs };
58
+ //# sourceMappingURL=EditorTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorTabs.js","sourceRoot":"","sources":["../../../src/frontend/components/EditorTabs.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAa,MAAM,sBAAsB,CAAC;AAC3D,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAG3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,cAAc;IAAvC;;QAEH,UAAK,GAAgB,EAAE,CAAC;IAkC5B,CAAC;IAhCG,MAAM,KAAK,MAAM;QACb,OAAO,GAAG,CAAA;;;;;;;;;;;;;cAaJ,eAAe;SACpB,CAAC;IACN,CAAC;IAEkB,MAAM;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjD,OAAO,IAAI,CAAA;;wBAEK,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;yBACrC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,GAAG,QAAQ,CAAC;;kBAEzD,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC;;cAErC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,0BAA0B,IAAI,CAAC,OAAO,UAAU,CAAC,kBAAkB,CAAC;cAC9F,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,+BAA+B,IAAI,CAAC,OAAO,uBAAuB;SAC9F,CAAC;IACN,CAAC;CACJ,CAAA;AAlCG;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yCACP;AAFf,UAAU;IADtB,aAAa,CAAC,eAAe,CAAC;GAClB,UAAU,CAoCtB"}
@@ -0,0 +1,14 @@
1
+ import { PapyrosElement } from "./PapyrosElement";
2
+ import { CSSResult, TemplateResult } from "lit";
3
+ import { FileEntry } from "../state/InputOutput";
4
+ import "./code_mirror/FileEditor";
5
+ export declare class FileViewer extends PapyrosElement {
6
+ file: FileEntry | undefined;
7
+ private editorRef;
8
+ private debouncedUpdateFile;
9
+ static get styles(): CSSResult;
10
+ private downloadBinary;
11
+ protected updated(changedProperties: Map<PropertyKey, unknown>): void;
12
+ private onEditorChange;
13
+ protected render(): TemplateResult;
14
+ }
@@ -0,0 +1,119 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, property } from "lit/decorators.js";
8
+ import { PapyrosElement } from "./PapyrosElement";
9
+ import { css, html } from "lit";
10
+ import { createRef, ref } from "lit/directives/ref.js";
11
+ import { debounce } from "../../util/Util";
12
+ import "./code_mirror/FileEditor";
13
+ let FileViewer = class FileViewer extends PapyrosElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.file = undefined;
17
+ this.editorRef = createRef();
18
+ this.debouncedUpdateFile = debounce((name, content) => {
19
+ void this.papyros.runner.updateFile(name, content, false);
20
+ }, 300);
21
+ }
22
+ static get styles() {
23
+ return css `
24
+ :host {
25
+ display: block;
26
+ width: 100%;
27
+ height: 100%;
28
+ overflow: auto;
29
+ }
30
+
31
+ p-file-editor {
32
+ display: block;
33
+ width: 100%;
34
+ height: 100%;
35
+ }
36
+
37
+ .placeholder-container {
38
+ display: flex;
39
+ flex-direction: column;
40
+ align-items: center;
41
+ justify-content: center;
42
+ gap: 1rem;
43
+ padding: 2rem;
44
+ color: var(--md-sys-color-on-surface-variant);
45
+ }
46
+
47
+ button {
48
+ background-color: var(--md-sys-color-primary);
49
+ color: var(--md-sys-color-on-primary);
50
+ border: none;
51
+ border-radius: 1rem;
52
+ padding: 0.5rem 1.5rem;
53
+ cursor: pointer;
54
+ font-size: 0.875rem;
55
+ }
56
+
57
+ button:hover {
58
+ opacity: 0.9;
59
+ }
60
+ `;
61
+ }
62
+ downloadBinary() {
63
+ if (!this.file)
64
+ return;
65
+ const bytes = Uint8Array.from(atob(this.file.content), (c) => c.charCodeAt(0));
66
+ const blob = new Blob([bytes]);
67
+ const url = URL.createObjectURL(blob);
68
+ const a = document.createElement("a");
69
+ a.href = url;
70
+ a.download = this.file.name;
71
+ a.click();
72
+ setTimeout(() => URL.revokeObjectURL(url), 1000);
73
+ }
74
+ updated(changedProperties) {
75
+ var _a;
76
+ if (changedProperties.has("file") && this.file && !this.file.binary) {
77
+ (_a = this.editorRef.value) === null || _a === void 0 ? void 0 : _a.focus();
78
+ }
79
+ }
80
+ onEditorChange(e) {
81
+ if (!this.file || this.papyros.debugger.active)
82
+ return;
83
+ const name = this.file.name;
84
+ const content = e.detail;
85
+ this.papyros.io.updateFileContent(name, content, this.file.binary);
86
+ this.debouncedUpdateFile(name, content);
87
+ }
88
+ render() {
89
+ if (!this.file) {
90
+ return html ``;
91
+ }
92
+ if (this.file.binary) {
93
+ return html `
94
+ <div class="placeholder-container">
95
+ <span>${this.t("Papyros.files_binary")}</span>
96
+ <button @click=${this.downloadBinary}>${this.t("Papyros.files_download")}</button>
97
+ </div>
98
+ `;
99
+ }
100
+ const readonly = this.papyros.debugger.active;
101
+ return html `
102
+ <p-file-editor
103
+ ${ref(this.editorRef)}
104
+ .value=${this.file.content}
105
+ .readonly=${readonly}
106
+ .theme=${this.papyros.constants.CodeMirrorTheme}
107
+ @change=${this.onEditorChange}
108
+ ></p-file-editor>
109
+ `;
110
+ }
111
+ };
112
+ __decorate([
113
+ property({ type: Object })
114
+ ], FileViewer.prototype, "file", void 0);
115
+ FileViewer = __decorate([
116
+ customElement("p-file-viewer")
117
+ ], FileViewer);
118
+ export { FileViewer };
119
+ //# sourceMappingURL=FileViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileViewer.js","sourceRoot":"","sources":["../../../src/frontend/components/FileViewer.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare class CodeMirrorEditor extends LitElement {
17
17
  private initView;
18
18
  private onViewUpdate;
19
19
  connectedCallback(): void;
20
+ focus(): void;
20
21
  disconnectedCallback(): void;
21
22
  protected configure(extensions: Record<string, Extension>): void;
22
23
  }
@@ -80,6 +80,10 @@ let CodeMirrorEditor = class CodeMirrorEditor extends LitElement {
80
80
  super.connectedCallback();
81
81
  this.initView();
82
82
  }
83
+ focus() {
84
+ var _a;
85
+ (_a = this.view) === null || _a === void 0 ? void 0 : _a.focus();
86
+ }
83
87
  disconnectedCallback() {
84
88
  var _a;
85
89
  super.disconnectedCallback();
@@ -1 +1 @@
1
- {"version":3,"file":"CodeMirrorEditor.js","sourceRoot":"","sources":["../../../../src/frontend/components/code_mirror/CodeMirrorEditor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeMirrorEditor.js","sourceRoot":"","sources":["../../../../src/frontend/components/code_mirror/CodeMirrorEditor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { CodeMirrorEditor } from "./CodeMirrorEditor";
2
+ import { CSSResult } from "lit";
3
+ export declare class FileEditor extends CodeMirrorEditor {
4
+ static get styles(): CSSResult;
5
+ constructor();
6
+ }
@@ -0,0 +1,48 @@
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 { CodeMirrorEditor } from "./CodeMirrorEditor";
9
+ import { drawSelection, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, keymap, lineNumbers, } from "@codemirror/view";
10
+ import { defaultKeymap, history, historyKeymap } from "@codemirror/commands";
11
+ import { bracketMatching, foldGutter, indentOnInput } from "@codemirror/language";
12
+ import { EditorState } from "@codemirror/state";
13
+ import { highlightSelectionMatches } from "@codemirror/search";
14
+ import { css } from "lit";
15
+ let FileEditor = class FileEditor extends CodeMirrorEditor {
16
+ static get styles() {
17
+ return css `
18
+ :host {
19
+ width: 100%;
20
+ height: 100%;
21
+ }
22
+ `;
23
+ }
24
+ constructor() {
25
+ super();
26
+ this.configure({
27
+ fileExtensions: [
28
+ lineNumbers(),
29
+ highlightSpecialChars(),
30
+ history(),
31
+ foldGutter(),
32
+ drawSelection(),
33
+ EditorState.allowMultipleSelections.of(true),
34
+ indentOnInput(),
35
+ bracketMatching(),
36
+ highlightSelectionMatches(),
37
+ highlightActiveLineGutter(),
38
+ highlightActiveLine(),
39
+ keymap.of([...defaultKeymap, ...historyKeymap]),
40
+ ],
41
+ });
42
+ }
43
+ };
44
+ FileEditor = __decorate([
45
+ customElement("p-file-editor")
46
+ ], FileEditor);
47
+ export { FileEditor };
48
+ //# sourceMappingURL=FileEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileEditor.js","sourceRoot":"","sources":["../../../../src/frontend/components/code_mirror/FileEditor.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACH,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,MAAM,EACN,WAAW,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAa,MAAM,KAAK,CAAC;AAG9B,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,gBAAgB;IAC5C,MAAM,KAAK,MAAM;QACb,OAAO,GAAG,CAAA;;;;;SAKT,CAAC;IACN,CAAC;IAED;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,CAAC;YACX,cAAc,EAAE;gBACZ,WAAW,EAAE;gBACb,qBAAqB,EAAE;gBACvB,OAAO,EAAE;gBACT,UAAU,EAAE;gBACZ,aAAa,EAAE;gBACf,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,CAAC;gBAC5C,aAAa,EAAE;gBACf,eAAe,EAAE;gBACjB,yBAAyB,EAAE;gBAC3B,yBAAyB,EAAE;gBAC3B,mBAAmB,EAAE;gBACrB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,CAAC;aAClD;SACJ,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA7BY,UAAU;IADtB,aAAa,CAAC,eAAe,CAAC;GAClB,UAAU,CA6BtB"}
@@ -0,0 +1,3 @@
1
+ import { CSSResult } from "lit";
2
+ export declare const tabButtonStyles: CSSResult;
3
+ export declare const inlineInputStyles: CSSResult;
@@ -0,0 +1,45 @@
1
+ import { css } from "lit";
2
+ export const tabButtonStyles = css `
3
+ button {
4
+ padding: 0.375rem 0.75rem;
5
+ border: none;
6
+ border-bottom: 2px solid var(--md-sys-color-outline-variant);
7
+ border-radius: 0.375rem 0.375rem 0 0;
8
+ cursor: pointer;
9
+ font-size: 0.875rem;
10
+ background-color: var(--md-sys-color-surface-variant);
11
+ color: var(--md-sys-color-on-surface-variant);
12
+ white-space: nowrap;
13
+ display: flex;
14
+ align-items: center;
15
+ gap: 0.375rem;
16
+ }
17
+
18
+ button.active {
19
+ background-color: var(--md-sys-color-surface);
20
+ color: var(--md-sys-color-on-surface);
21
+ font-weight: 600;
22
+ border-bottom: 2px solid var(--md-sys-color-primary);
23
+ }
24
+
25
+ button:hover:not(.active) {
26
+ opacity: 0.8;
27
+ }
28
+ `;
29
+ export const inlineInputStyles = css `
30
+ .inline-input {
31
+ font-size: 0.875rem;
32
+ padding: 0.25rem 0.5rem;
33
+ border: 1px solid var(--md-sys-color-outline);
34
+ border-radius: 0.375rem 0.375rem 0 0;
35
+ background-color: var(--md-sys-color-surface);
36
+ color: var(--md-sys-color-on-surface);
37
+ width: 8rem;
38
+ outline: none;
39
+ }
40
+
41
+ .inline-input.invalid {
42
+ border-color: var(--md-sys-color-error);
43
+ }
44
+ `;
45
+ //# sourceMappingURL=shared-styles.js.map