@dodona/papyros 1.0.1 → 2.0.0-beta.0

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 (109) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/App.d.ts +1 -1
  4. package/dist/App.js +73 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/Backend.d.ts +0 -48
  7. package/dist/Backend.js +76 -0
  8. package/dist/Backend.js.map +1 -0
  9. package/dist/BackendEvent.d.ts +0 -0
  10. package/dist/BackendEvent.js +24 -0
  11. package/dist/BackendEvent.js.map +1 -0
  12. package/dist/BackendEventQueue.d.ts +0 -0
  13. package/dist/BackendEventQueue.js +135 -0
  14. package/dist/BackendEventQueue.js.map +1 -0
  15. package/dist/BackendManager.d.ts +1 -1
  16. package/dist/BackendManager.js +94 -0
  17. package/dist/BackendManager.js.map +1 -0
  18. package/dist/CodeRunner.d.ts +0 -0
  19. package/dist/CodeRunner.js +372 -0
  20. package/dist/CodeRunner.js.map +1 -0
  21. package/dist/Constants.d.ts +0 -0
  22. package/dist/Constants.js +36 -0
  23. package/dist/Constants.js.map +1 -0
  24. package/dist/InputManager.d.ts +0 -0
  25. package/dist/InputManager.js +102 -0
  26. package/dist/InputManager.js.map +1 -0
  27. package/dist/InputServiceWorker.d.ts +0 -0
  28. package/dist/InputServiceWorker.js +37 -0
  29. package/dist/InputServiceWorker.js.map +1 -0
  30. package/dist/Library.d.ts +2 -2
  31. package/dist/Library.js +9 -1
  32. package/dist/Library.js.map +1 -0
  33. package/dist/OutputManager.d.ts +0 -0
  34. package/dist/OutputManager.js +161 -0
  35. package/dist/OutputManager.js.map +1 -0
  36. package/dist/Papyros.css +563 -0
  37. package/dist/Papyros.d.ts +0 -1
  38. package/dist/Papyros.js +268 -0
  39. package/dist/Papyros.js.map +1 -0
  40. package/dist/ProgrammingLanguage.d.ts +0 -0
  41. package/dist/ProgrammingLanguage.js +9 -0
  42. package/dist/ProgrammingLanguage.js.map +1 -0
  43. package/dist/Translations.d.ts +74 -74
  44. package/dist/Translations.js +164 -0
  45. package/dist/Translations.js.map +1 -0
  46. package/dist/editor/BatchInputEditor.d.ts +0 -0
  47. package/dist/editor/BatchInputEditor.js +71 -0
  48. package/dist/editor/BatchInputEditor.js.map +1 -0
  49. package/dist/editor/CodeEditor.d.ts +0 -5
  50. package/dist/editor/CodeEditor.js +180 -0
  51. package/dist/editor/CodeEditor.js.map +1 -0
  52. package/dist/editor/CodeMirrorEditor.d.ts +0 -0
  53. package/dist/editor/CodeMirrorEditor.js +168 -0
  54. package/dist/editor/CodeMirrorEditor.js.map +1 -0
  55. package/dist/editor/DarkTheme.d.ts +0 -0
  56. package/dist/editor/DarkTheme.js +73 -0
  57. package/dist/editor/DarkTheme.js.map +1 -0
  58. package/dist/editor/Gutters.d.ts +0 -0
  59. package/dist/editor/Gutters.js +162 -0
  60. package/dist/editor/Gutters.js.map +1 -0
  61. package/dist/examples/Examples.d.ts +0 -0
  62. package/dist/examples/Examples.js +23 -0
  63. package/dist/examples/Examples.js.map +1 -0
  64. package/dist/examples/JavaScriptExamples.d.ts +0 -0
  65. package/dist/examples/JavaScriptExamples.js +16 -0
  66. package/dist/examples/JavaScriptExamples.js.map +1 -0
  67. package/dist/examples/PythonExamples.d.ts +0 -0
  68. package/dist/examples/PythonExamples.js +163 -0
  69. package/dist/examples/PythonExamples.js.map +1 -0
  70. package/dist/input/BatchInputHandler.d.ts +0 -0
  71. package/dist/input/BatchInputHandler.js +112 -0
  72. package/dist/input/BatchInputHandler.js.map +1 -0
  73. package/dist/input/InteractiveInputHandler.d.ts +0 -0
  74. package/dist/input/InteractiveInputHandler.js +90 -0
  75. package/dist/input/InteractiveInputHandler.js.map +1 -0
  76. package/dist/input/UserInputHandler.d.ts +0 -0
  77. package/dist/input/UserInputHandler.js +40 -0
  78. package/dist/input/UserInputHandler.js.map +1 -0
  79. package/dist/util/HTMLShapes.d.ts +0 -0
  80. package/dist/util/HTMLShapes.js +25 -0
  81. package/dist/util/HTMLShapes.js.map +1 -0
  82. package/dist/util/Logging.d.ts +0 -0
  83. package/dist/util/Logging.js +30 -0
  84. package/dist/util/Logging.js.map +1 -0
  85. package/dist/util/Rendering.d.ts +0 -0
  86. package/dist/util/Rendering.js +139 -0
  87. package/dist/util/Rendering.js.map +1 -0
  88. package/dist/util/Util.d.ts +1 -1
  89. package/dist/util/Util.js +148 -0
  90. package/dist/util/Util.js.map +1 -0
  91. package/dist/workers/input/InputWorker.d.ts +0 -0
  92. package/dist/workers/input/InputWorker.js +63 -1
  93. package/dist/workers/input/InputWorker.js.map +1 -0
  94. package/dist/workers/javascript/JavaScriptWorker.d.ts +39 -0
  95. package/dist/workers/javascript/JavaScriptWorker.js +148 -0
  96. package/dist/workers/javascript/JavaScriptWorker.js.map +1 -0
  97. package/dist/workers/javascript/worker.d.ts +1 -0
  98. package/dist/workers/javascript/worker.js +5 -0
  99. package/dist/workers/javascript/worker.js.map +1 -0
  100. package/dist/workers/python/PythonWorker.d.ts +31 -0
  101. package/dist/workers/python/PythonWorker.js +106 -0
  102. package/dist/workers/python/PythonWorker.js.map +1 -0
  103. package/dist/workers/python/python_package.tar.gz +0 -0
  104. package/dist/workers/python/worker.d.ts +1 -0
  105. package/dist/workers/python/worker.js +5 -0
  106. package/dist/workers/python/worker.js.map +1 -0
  107. package/package.json +45 -42
  108. package/dist/workers/javascript/JavaScriptWorker.worker.d.ts +0 -2
  109. package/dist/workers/python/PythonWorker.worker.d.ts +0 -2
@@ -0,0 +1,268 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ /* eslint-disable max-len */
11
+ import I18n from "i18n-js";
12
+ import { EDITOR_WRAPPER_ID, PROGRAMMING_LANGUAGE_SELECT_ID, LOCALE_SELECT_ID, INPUT_AREA_WRAPPER_ID, EXAMPLE_SELECT_ID, PANEL_WRAPPER_ID, DARK_MODE_TOGGLE_ID, MAIN_APP_ID, OUTPUT_AREA_WRAPPER_ID } from "./Constants";
13
+ import { ProgrammingLanguage } from "./ProgrammingLanguage";
14
+ import { t, loadTranslations, getLocales, removeSelection, addListener, getElement, cleanCurrentUrl } from "./util/Util";
15
+ import { CodeRunner } from "./CodeRunner";
16
+ import { getCodeForExample, getExampleNames } from "./examples/Examples";
17
+ import { makeChannel } from "sync-message";
18
+ import { BackendManager } from "./BackendManager";
19
+ import { renderWithOptions, renderSelect, renderSelectOptions, Renderable, renderLabel, appendClasses } from "./util/Rendering";
20
+ const LANGUAGE_MAP = new Map([
21
+ ["python", ProgrammingLanguage.Python],
22
+ ["javascript", ProgrammingLanguage.JavaScript]
23
+ ]);
24
+ /**
25
+ * Class that manages multiple components to form a coding scratchpad
26
+ */
27
+ export class Papyros extends Renderable {
28
+ /**
29
+ * Construct a new Papyros instance
30
+ * @param {PapyrosConfig} config Properties to configure this instance
31
+ */
32
+ constructor(config) {
33
+ super();
34
+ this.config = config;
35
+ // Load translations as other components depend on them
36
+ loadTranslations();
37
+ I18n.locale = config.locale;
38
+ this.codeRunner = new CodeRunner(config.programmingLanguage, config.inputMode);
39
+ }
40
+ /**
41
+ * @return {RunState} The current state of the user's code
42
+ */
43
+ getState() {
44
+ return this.codeRunner.getState();
45
+ }
46
+ /**
47
+ * Launch this instance of Papyros, making it ready to run code
48
+ * @return {Promise<Papyros>} Promise of launching, chainable
49
+ */
50
+ launch() {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ if (!(yield this.configureInput())) {
53
+ alert(t("Papyros.service_worker_error"));
54
+ }
55
+ else {
56
+ try {
57
+ yield this.codeRunner.start();
58
+ }
59
+ catch (error) {
60
+ if (confirm(t("Papyros.launch_error"))) {
61
+ return this.launch();
62
+ }
63
+ }
64
+ }
65
+ return this;
66
+ });
67
+ }
68
+ /**
69
+ * Set the used programming language to the given one to allow editing and running code
70
+ * @param {ProgrammingLanguage} programmingLanguage The language to use
71
+ */
72
+ setProgrammingLanguage(programmingLanguage) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ this.config.programmingLanguage = programmingLanguage;
75
+ yield this.codeRunner.setProgrammingLanguage(programmingLanguage);
76
+ });
77
+ }
78
+ /**
79
+ * @param {string} locale The locale to use
80
+ */
81
+ setLocale(locale) {
82
+ if (locale !== this.config.locale) {
83
+ this.config.locale = locale;
84
+ I18n.locale = locale;
85
+ this.render();
86
+ }
87
+ }
88
+ /**
89
+ * @param {boolean} darkMode Whether to use dark mode
90
+ */
91
+ setDarkMode(darkMode) {
92
+ if (darkMode !== this.renderOptions.darkMode) {
93
+ this.renderOptions.darkMode = darkMode;
94
+ this.render();
95
+ }
96
+ }
97
+ /**
98
+ * @param {string} code The code to use in the editor
99
+ */
100
+ setCode(code) {
101
+ this.codeRunner.editor.setText(code);
102
+ }
103
+ /**
104
+ * @return {string} The currently written code
105
+ */
106
+ getCode() {
107
+ return this.codeRunner.editor.getText();
108
+ }
109
+ /**
110
+ * Configure how user input is handled within Papyros
111
+ * By default, we will try to use SharedArrayBuffers
112
+ * If this option is not available, the optional arguments in the channelOptions config are used
113
+ * They are needed to register a service worker to handle communication between threads
114
+ * @return {Promise<boolean>} Promise of configuring input
115
+ */
116
+ configureInput() {
117
+ var _a;
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ if (typeof SharedArrayBuffer === "undefined") {
120
+ if (!((_a = this.config.channelOptions) === null || _a === void 0 ? void 0 : _a.serviceWorkerName) || !("serviceWorker" in navigator)) {
121
+ return false;
122
+ }
123
+ const serviceWorkerRoot = cleanCurrentUrl(true);
124
+ const { serviceWorkerName } = this.config.channelOptions;
125
+ this.config.channelOptions.scope = serviceWorkerRoot;
126
+ const serviceWorkerUrl = serviceWorkerRoot + serviceWorkerName;
127
+ try {
128
+ yield navigator.serviceWorker.register(serviceWorkerUrl, { scope: "/" });
129
+ BackendManager.channel = makeChannel({ serviceWorker: this.config.channelOptions });
130
+ }
131
+ catch (error) {
132
+ return false;
133
+ }
134
+ }
135
+ else {
136
+ BackendManager.channel = makeChannel({
137
+ atomics: Object.assign({}, this.config.channelOptions)
138
+ });
139
+ }
140
+ return true;
141
+ });
142
+ }
143
+ _render(renderOptions) {
144
+ // Set default values for each option
145
+ for (const [option, defaultParentId] of [
146
+ ["inputOptions", INPUT_AREA_WRAPPER_ID], ["statusPanelOptions", PANEL_WRAPPER_ID],
147
+ ["codeEditorOptions", EDITOR_WRAPPER_ID], ["outputOptions", OUTPUT_AREA_WRAPPER_ID],
148
+ ["standAloneOptions", MAIN_APP_ID]
149
+ ]) {
150
+ const elementOptions = renderOptions[option] || {};
151
+ elementOptions.darkMode = renderOptions.darkMode;
152
+ appendClasses(elementOptions, "tailwind");
153
+ renderOptions[option] = Object.assign({ parentElementId: defaultParentId }, elementOptions);
154
+ }
155
+ if (this.config.standAlone) {
156
+ const { locale, programmingLanguage } = this.config;
157
+ const programmingLanguageSelect = renderSelect(PROGRAMMING_LANGUAGE_SELECT_ID, new Array(...LANGUAGE_MAP.values()), l => t(`Papyros.programming_languages.${l}`), programmingLanguage, t("Papyros.programming_language"));
158
+ const exampleSelect = renderSelect(EXAMPLE_SELECT_ID, getExampleNames(programmingLanguage), name => name, this.config.example, t("Papyros.examples"));
159
+ const locales = [locale, ...getLocales().filter(l => l != locale)];
160
+ const toggleIconClasses = renderOptions.darkMode ? "mdi-toggle-switch _tw-text-[#FF8F00]" : "mdi-toggle-switch-off _tw-text-white";
161
+ const navOptions = `
162
+ <div class="_tw-flex _tw-flex-row-reverse dark:_tw-text-white _tw-items-center">
163
+ <!-- row-reverse to start at the right, so put elements in order of display -->
164
+ <i id=${DARK_MODE_TOGGLE_ID} class="mdi ${toggleIconClasses} hover:_tw-cursor-pointer _tw-text-4xl"></i>
165
+ <p class="_tw-text-white">${t("Papyros.dark_mode")}</p>
166
+ ${renderSelect(LOCALE_SELECT_ID, locales, l => t(`Papyros.locales.${l}`), locale)}
167
+ <i class="mdi mdi-web _tw-text-4xl _tw-text-white"></i>
168
+ </div>
169
+ `;
170
+ const navBar = `
171
+ <div class="_tw-bg-blue-500 _tw-text-white _tw-text-lg _tw-p-4 _tw-grid _tw-grid-cols-8
172
+ _tw-items-center _tw-max-h-1/5 dark:_tw-bg-dark-mode-blue">
173
+ <div class="_tw-col-span-6 _tw-text-4xl _tw-font-medium">
174
+ ${t("Papyros.Papyros")}
175
+ </div>
176
+ <div class="_tw-col-span-2 _tw-text-black">
177
+ ${navOptions}
178
+ </div>
179
+ </div>
180
+ `;
181
+ const header = `
182
+ <!-- Header -->
183
+ <div class="_tw-flex _tw-flex-row _tw-items-center">
184
+ ${programmingLanguageSelect}
185
+ ${exampleSelect}
186
+ </div>`;
187
+ renderWithOptions(renderOptions.standAloneOptions, `
188
+ <div id="${MAIN_APP_ID}" class="_tw-min-h-screen _tw-max-h-screen _tw-h-full
189
+ _tw-overflow-y-hidden dark:_tw-text-white dark:_tw-bg-dark-mode-bg">
190
+ ${navBar}
191
+ <div class="_tw-m-10">
192
+ ${header}
193
+ <!--Body of the application-->
194
+ <div class="_tw-grid _tw-grid-cols-2 _tw-gap-4 _tw-box-border _tw-max-h-full">
195
+ <!-- Code section-->
196
+ <div>
197
+ ${renderLabel(t("Papyros.code"), renderOptions.codeEditorOptions.parentElementId)}
198
+ <div id="${renderOptions.codeEditorOptions.parentElementId}"></div>
199
+ <div id="${renderOptions.statusPanelOptions.parentElementId}"></div>
200
+ </div>
201
+ <!-- User input and output section-->
202
+ <div>
203
+ ${renderLabel(t("Papyros.output"), renderOptions.outputOptions.parentElementId)}
204
+ <div id="${renderOptions.outputOptions.parentElementId}"></div>
205
+ ${renderLabel(t("Papyros.input"), renderOptions.inputOptions.parentElementId)}
206
+ <div id="${renderOptions.inputOptions.parentElementId}"></div>
207
+ </div>
208
+ </div>
209
+ </div>
210
+ </div>
211
+ `);
212
+ addListener(PROGRAMMING_LANGUAGE_SELECT_ID, pl => {
213
+ this.setProgrammingLanguage(pl);
214
+ getElement(EXAMPLE_SELECT_ID).innerHTML =
215
+ renderSelectOptions(getExampleNames(pl), name => name);
216
+ removeSelection(EXAMPLE_SELECT_ID);
217
+ this.config.example = undefined;
218
+ // Modify search query params without reloading page
219
+ history.pushState(null, "", `?locale=${I18n.locale}&language=${pl}`);
220
+ }, "change", "value");
221
+ addListener(LOCALE_SELECT_ID, locale => {
222
+ // Modify search query params without reloading page
223
+ history.pushState(null, "", `?locale=${locale}&language=${this.codeRunner.getProgrammingLanguage()}`);
224
+ this.setLocale(locale);
225
+ }, "change", "value");
226
+ addListener(EXAMPLE_SELECT_ID, name => {
227
+ this.config.example = name;
228
+ const code = getCodeForExample(this.codeRunner.getProgrammingLanguage(), name);
229
+ this.setCode(code);
230
+ }, "change", "value");
231
+ // If example is null, it removes the selection
232
+ getElement(EXAMPLE_SELECT_ID).value = this.config.example;
233
+ addListener(DARK_MODE_TOGGLE_ID, () => {
234
+ this.setDarkMode(!renderOptions.darkMode);
235
+ }, "click");
236
+ }
237
+ this.codeRunner.render({
238
+ statusPanelOptions: renderOptions.statusPanelOptions,
239
+ inputOptions: renderOptions.inputOptions,
240
+ codeEditorOptions: renderOptions.codeEditorOptions,
241
+ outputOptions: renderOptions.outputOptions
242
+ });
243
+ }
244
+ /**
245
+ * Add a button to the status panel within Papyros
246
+ * @param {ButtonOptions} options Options to render the button with
247
+ * @param {function} onClick Listener for click events on the button
248
+ */
249
+ addButton(options, onClick) {
250
+ this.codeRunner.addButton(options, onClick);
251
+ }
252
+ /**
253
+ * @param {ProgrammingLanguage} language The language to check
254
+ * @return {boolean} Whether Papyros supports this language by default
255
+ */
256
+ static supportsProgrammingLanguage(language) {
257
+ return Papyros.toProgrammingLanguage(language) !== undefined;
258
+ }
259
+ /**
260
+ * Convert a string to a ProgrammingLanguage
261
+ * @param {string} language The language to convert
262
+ * @return {ProgrammingLanguage | undefined} The ProgrammingLanguage, or undefined if not supported
263
+ */
264
+ static toProgrammingLanguage(language) {
265
+ return LANGUAGE_MAP.get(language.toLowerCase());
266
+ }
267
+ }
268
+ //# sourceMappingURL=Papyros.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Papyros.js","sourceRoot":"","sources":["../src/Papyros.ts"],"names":[],"mappings":"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"}
File without changes
@@ -0,0 +1,9 @@
1
+ /**
2
+ * String enum representing programming languages supported by Papyros
3
+ */
4
+ export var ProgrammingLanguage;
5
+ (function (ProgrammingLanguage) {
6
+ ProgrammingLanguage["Python"] = "Python";
7
+ ProgrammingLanguage["JavaScript"] = "JavaScript";
8
+ })(ProgrammingLanguage || (ProgrammingLanguage = {}));
9
+ //# sourceMappingURL=ProgrammingLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgrammingLanguage.js","sourceRoot":"","sources":["../src/ProgrammingLanguage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC3B,wCAAiB,CAAA;IACjB,gDAAyB,CAAA;AAC7B,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B"}
@@ -11,153 +11,153 @@ export namespace CODE_MIRROR_TRANSLATIONS {
11
11
  export { DUTCH_PHRASES as nl };
12
12
  }
13
13
  declare namespace ENGLISH_TRANSLATION {
14
- export const Papyros: string;
15
- export const code: string;
16
- export const code_placeholder: string;
17
- export const input: string;
14
+ export let Papyros: string;
15
+ export let code: string;
16
+ export let code_placeholder: string;
17
+ export let input: string;
18
18
  export namespace input_placeholder {
19
- const interactive: string;
20
- const batch: string;
19
+ let interactive: string;
20
+ let batch: string;
21
21
  }
22
- export const input_disabled: string;
23
- export const output: string;
24
- export const output_placeholder: string;
25
- export const run: string;
26
- export const stop: string;
27
- export const finished: string;
28
- export const interrupted: string;
22
+ export let input_disabled: string;
23
+ export let output: string;
24
+ export let output_placeholder: string;
25
+ export let run: string;
26
+ export let stop: string;
27
+ export let finished: string;
28
+ export let interrupted: string;
29
29
  export namespace states {
30
- const running: string;
31
- const stopping: string;
32
- const loading: string;
33
- const awaiting_input: string;
34
- const ready: string;
30
+ let running: string;
31
+ let stopping: string;
32
+ let loading: string;
33
+ let awaiting_input: string;
34
+ let ready: string;
35
35
  }
36
- export const programming_language: string;
36
+ export let programming_language: string;
37
37
  export namespace programming_languages {
38
- const Python: string;
39
- const JavaScript: string;
38
+ let Python: string;
39
+ let JavaScript: string;
40
40
  }
41
41
  export namespace locales {
42
- const en_1: string;
42
+ let en_1: string;
43
43
  export { en_1 as en };
44
- const nl_1: string;
44
+ let nl_1: string;
45
45
  export { nl_1 as nl };
46
46
  }
47
47
  export namespace switch_input_mode_to {
48
- const interactive_1: string;
48
+ let interactive_1: string;
49
49
  export { interactive_1 as interactive };
50
- const batch_1: string;
50
+ let batch_1: string;
51
51
  export { batch_1 as batch };
52
52
  }
53
- export const enter: string;
54
- export const examples: string;
55
- export const dark_mode: string;
56
- export const output_overflow: string;
57
- export const output_overflow_download: string;
58
- export const no_output: string;
59
- export const service_worker_error: string;
60
- export const launch_error: string;
61
- const loading_1: string;
53
+ export let enter: string;
54
+ export let examples: string;
55
+ export let dark_mode: string;
56
+ export let output_overflow: string;
57
+ export let output_overflow_download: string;
58
+ export let no_output: string;
59
+ export let service_worker_error: string;
60
+ export let launch_error: string;
61
+ let loading_1: string;
62
62
  export { loading_1 as loading };
63
63
  export namespace run_modes {
64
- const doctest: string;
64
+ let doctest: string;
65
65
  }
66
- export const used_input: string;
67
- export const used_input_with_prompt: string;
66
+ export let used_input: string;
67
+ export let used_input_with_prompt: string;
68
68
  }
69
69
  declare namespace DUTCH_TRANSLATION {
70
- const Papyros_1: string;
70
+ let Papyros_1: string;
71
71
  export { Papyros_1 as Papyros };
72
- const code_1: string;
72
+ let code_1: string;
73
73
  export { code_1 as code };
74
- const code_placeholder_1: string;
74
+ let code_placeholder_1: string;
75
75
  export { code_placeholder_1 as code_placeholder };
76
- const input_1: string;
76
+ let input_1: string;
77
77
  export { input_1 as input };
78
78
  export namespace input_placeholder_1 {
79
- const interactive_2: string;
79
+ let interactive_2: string;
80
80
  export { interactive_2 as interactive };
81
- const batch_2: string;
81
+ let batch_2: string;
82
82
  export { batch_2 as batch };
83
83
  }
84
84
  export { input_placeholder_1 as input_placeholder };
85
- const input_disabled_1: string;
85
+ let input_disabled_1: string;
86
86
  export { input_disabled_1 as input_disabled };
87
- const output_1: string;
87
+ let output_1: string;
88
88
  export { output_1 as output };
89
- const output_placeholder_1: string;
89
+ let output_placeholder_1: string;
90
90
  export { output_placeholder_1 as output_placeholder };
91
- const run_1: string;
91
+ let run_1: string;
92
92
  export { run_1 as run };
93
- const stop_1: string;
93
+ let stop_1: string;
94
94
  export { stop_1 as stop };
95
95
  export namespace states_1 {
96
- const running_1: string;
96
+ let running_1: string;
97
97
  export { running_1 as running };
98
- const stopping_1: string;
98
+ let stopping_1: string;
99
99
  export { stopping_1 as stopping };
100
- const loading_2: string;
100
+ let loading_2: string;
101
101
  export { loading_2 as loading };
102
- const awaiting_input_1: string;
102
+ let awaiting_input_1: string;
103
103
  export { awaiting_input_1 as awaiting_input };
104
- const ready_1: string;
104
+ let ready_1: string;
105
105
  export { ready_1 as ready };
106
106
  }
107
107
  export { states_1 as states };
108
- const finished_1: string;
108
+ let finished_1: string;
109
109
  export { finished_1 as finished };
110
- const interrupted_1: string;
110
+ let interrupted_1: string;
111
111
  export { interrupted_1 as interrupted };
112
- const programming_language_1: string;
112
+ let programming_language_1: string;
113
113
  export { programming_language_1 as programming_language };
114
114
  export namespace programming_languages_1 {
115
- const Python_1: string;
115
+ let Python_1: string;
116
116
  export { Python_1 as Python };
117
- const JavaScript_1: string;
117
+ let JavaScript_1: string;
118
118
  export { JavaScript_1 as JavaScript };
119
119
  }
120
120
  export { programming_languages_1 as programming_languages };
121
121
  export namespace locales_1 {
122
- const en_2: string;
122
+ let en_2: string;
123
123
  export { en_2 as en };
124
- const nl_2: string;
124
+ let nl_2: string;
125
125
  export { nl_2 as nl };
126
126
  }
127
127
  export { locales_1 as locales };
128
128
  export namespace switch_input_mode_to_1 {
129
- const interactive_3: string;
129
+ let interactive_3: string;
130
130
  export { interactive_3 as interactive };
131
- const batch_3: string;
131
+ let batch_3: string;
132
132
  export { batch_3 as batch };
133
133
  }
134
134
  export { switch_input_mode_to_1 as switch_input_mode_to };
135
- const enter_1: string;
135
+ let enter_1: string;
136
136
  export { enter_1 as enter };
137
- const examples_1: string;
137
+ let examples_1: string;
138
138
  export { examples_1 as examples };
139
- const dark_mode_1: string;
139
+ let dark_mode_1: string;
140
140
  export { dark_mode_1 as dark_mode };
141
- const output_overflow_1: string;
141
+ let output_overflow_1: string;
142
142
  export { output_overflow_1 as output_overflow };
143
- const output_overflow_download_1: string;
143
+ let output_overflow_download_1: string;
144
144
  export { output_overflow_download_1 as output_overflow_download };
145
- const no_output_1: string;
145
+ let no_output_1: string;
146
146
  export { no_output_1 as no_output };
147
- const service_worker_error_1: string;
147
+ let service_worker_error_1: string;
148
148
  export { service_worker_error_1 as service_worker_error };
149
- const launch_error_1: string;
149
+ let launch_error_1: string;
150
150
  export { launch_error_1 as launch_error };
151
- const loading_3: string;
151
+ let loading_3: string;
152
152
  export { loading_3 as loading };
153
153
  export namespace run_modes_1 {
154
- const doctest_1: string;
154
+ let doctest_1: string;
155
155
  export { doctest_1 as doctest };
156
156
  }
157
157
  export { run_modes_1 as run_modes };
158
- const used_input_1: string;
158
+ let used_input_1: string;
159
159
  export { used_input_1 as used_input };
160
- const used_input_with_prompt_1: string;
160
+ let used_input_with_prompt_1: string;
161
161
  export { used_input_with_prompt_1 as used_input_with_prompt };
162
162
  }
163
163
  declare const ENGLISH_PHRASES: {