@dodona/papyros 4.2.2 → 4.3.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.
- package/dist/InputServiceWorker.js +1 -1
- package/dist/backend/workers/python/python_package.tar.gz.load_by_url +0 -0
- package/dist/communication/BackendEvent.d.ts +2 -1
- package/dist/communication/BackendEvent.js +1 -0
- package/dist/communication/BackendEvent.js.map +1 -1
- package/dist/frontend/components/Output.d.ts +2 -0
- package/dist/frontend/components/Output.js +108 -19
- package/dist/frontend/components/Output.js.map +1 -1
- package/dist/frontend/components/app/examples/PythonExamples.d.ts +1 -0
- package/dist/frontend/components/app/examples/PythonExamples.js +8 -0
- package/dist/frontend/components/app/examples/PythonExamples.js.map +1 -1
- package/dist/frontend/state/InputOutput.d.ts +10 -1
- package/dist/frontend/state/InputOutput.js +42 -2
- package/dist/frontend/state/InputOutput.js.map +1 -1
- package/dist/frontend/state/Translations.d.ts +4 -0
- package/dist/frontend/state/Translations.js +4 -0
- package/dist/frontend/state/Translations.js.map +1 -1
- package/dist/util/Util.d.ts +1 -1
- package/dist/util/Util.js +4 -3
- package/dist/util/Util.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=((e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports))(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.syncMessage=r():n.syncMessage=r()})(self,(function(){return(()=>{var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})}},t={};e.r(t),e.d(t,{isServiceWorkerRequest:()=>a,serviceWorkerFetchListener:()=>o,asyncSleep:()=>s,ServiceWorkerError:()=>c,writeMessageAtomics:()=>l,writeMessageServiceWorker:()=>u,writeMessage:()=>d,makeChannel:()=>f,makeAtomicsChannel:()=>p,makeServiceWorkerChannel:()=>m,readMessage:()=>g,syncSleep:()=>_,uuidv4:()=>v});var n=function(e,t,n,r){return new(n||=Promise)((function(i,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((r=r.apply(e,t||[])).next())}))};let r=`__SyncMessageServiceWorkerInput__`,i=`__sync-message-v2__`;function a(e){return typeof e!=`string`&&(e=e.request.url),e.includes(r)}function o(){let e={},t={};return r=>{let{url:o}=r.request;return!!a(o)&&(r.respondWith(function(){return n(this,void 0,void 0,(function*(){function n(e){return new Response(JSON.stringify({message:e,version:i}),{status:200})}if(o.endsWith(`/read`)){let{messageId:i,timeout:a}=yield r.request.json();if(i in e){let t=e[i];return delete e[i],n(t)}return yield new Promise((e=>{t[i]=e,setTimeout((function(){delete t[i],e(new Response(``,{status:408}))}),a)}))}if(o.endsWith(`/write`)){let{message:i,messageId:a}=yield r.request.json(),o=t[a];return o?(o(n(i)),delete t[a]):e[a]=i,n({early:!o})}if(o.endsWith(`/version`))return new Response(i,{status:200})}))}()),!0)}}function s(e){return new Promise((t=>setTimeout(t,e)))}class c extends Error{constructor(e,t){super(`Received status ${t} from ${e}. Ensure the service worker is registered and active.`),this.url=e,this.status=t,this.type=`ServiceWorkerError`,Object.setPrototypeOf(this,c.prototype)}}function l(e,t){let n=new TextEncoder().encode(JSON.stringify(t)),{data:r,meta:i}=e;if(n.length>r.length)throw Error(`Message is too big, increase bufferSize when making channel.`);r.set(n,0),Atomics.store(i,0,n.length),Atomics.store(i,1,1),Atomics.notify(i,1)}function u(e,t,r){return n(this,void 0,void 0,(function*(){yield navigator.serviceWorker.ready;let n=e.baseUrl+`/write`,a=Date.now();for(;;){let o=yield fetch(n,{method:`POST`,body:JSON.stringify({message:t,messageId:r})});if(o.status===200&&(yield o.json()).version===i)return;if(!(Date.now()-a<e.timeout))throw new c(n,o.status);yield s(100)}}))}function d(e,t,r){return n(this,void 0,void 0,(function*(){e.type===`atomics`?l(e,t):yield u(e,t,r)}))}function f(e={}){return typeof SharedArrayBuffer<`u`?p(e.atomics):`serviceWorker`in navigator?m(e.serviceWorker):null}function p({bufferSize:e}={}){return{type:`atomics`,data:new Uint8Array(new SharedArrayBuffer(e||131072)),meta:new Int32Array(new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT))}}function m(e={}){return{type:`serviceWorker`,baseUrl:(e.scope||`/`)+r,timeout:e.timeout||5e3}}function h(e,t){return e>0?+e:t}function g(e,t,{checkInterrupt:n,checkTimeout:r,timeout:a}={}){let o=performance.now();r=h(r,n?100:5e3);let s=h(a,1/0),l;if(e.type===`atomics`){let{data:t,meta:n}=e;l=()=>{if(Atomics.wait(n,1,0,r)===`timed-out`)return null;{let e=Atomics.exchange(n,0,0),r=t.slice(0,e);Atomics.store(n,1,0);let i=new TextDecoder().decode(r);return JSON.parse(i)}}}else l=()=>{let n=new XMLHttpRequest,a=e.baseUrl+`/read`;n.open(`POST`,a,!1);let s={messageId:t,timeout:r};n.send(JSON.stringify(s));let{status:l}=n;if(l===408)return null;if(l===200){let e=JSON.parse(n.responseText);return e.version===i?e.message:null}if(performance.now()-o<e.timeout)return null;throw new c(a,l)};for(;;){let e=s-(performance.now()-o);if(e<=0)return null;r=Math.min(r,e);let t=l();if(t!==null)return t;if(n?.())return null}}function _(e,t){if(e=h(e,0))if(typeof SharedArrayBuffer<`u`){let t=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));t[0]=0,Atomics.wait(t,0,0,e)}else g(t,`sleep ${e} ${v()}`,{timeout:e})}let v;return v=`randomUUID`in crypto?function(){return crypto.randomUUID()}:function(){return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,(e=>{let t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))},t})()}))}))(),t=new class{constructor(t=``){this.hostName=t,this.syncMessageListener=(0,e.serviceWorkerFetchListener)()}async handleInputRequest(e){if(this.syncMessageListener(e))return!0;let t=e.request.url;return this.hostName&&t.includes(this.hostName)?(e.respondWith(fetch(e.request).then(e=>{let t=new Headers(e.headers);return t.set(`Cross-Origin-Embedder-Policy`,`require-corp`),t.set(`Cross-Origin-Opener-Policy`,`same-origin`),t.set(`Cross-Origin-Resource-Policy`,`cross-origin`),new Response(e.body,{status:e.status||200,statusText:e.statusText,headers:t})})),!0):!1}}(``);addEventListener(`fetch`,async function(e){await t.handleInputRequest(e)}),addEventListener(`install`,function(e){e.waitUntil(skipWaiting())}),addEventListener(`activate`,function(e){e.waitUntil(clients.claim())});
|
|
1
|
+
var e=((e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports))(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.syncMessage=r():n.syncMessage=r()})(self,(function(){return(()=>{var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})}},t={};e.r(t),e.d(t,{isServiceWorkerRequest:()=>a,serviceWorkerFetchListener:()=>o,asyncSleep:()=>s,ServiceWorkerError:()=>c,writeMessageAtomics:()=>l,writeMessageServiceWorker:()=>u,writeMessage:()=>d,makeChannel:()=>f,makeAtomicsChannel:()=>p,makeServiceWorkerChannel:()=>m,readMessage:()=>g,syncSleep:()=>_,uuidv4:()=>v});var n=function(e,t,n,r){return new(n||=Promise)((function(i,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((r=r.apply(e,t||[])).next())}))};let r=`__SyncMessageServiceWorkerInput__`,i=`__sync-message-v2__`;function a(e){return typeof e!=`string`&&(e=e.request.url),e.includes(r)}function o(){let e={},t={};return r=>{let{url:o}=r.request;return!!a(o)&&(r.respondWith(function(){return n(this,void 0,void 0,(function*(){function n(e){return new Response(JSON.stringify({message:e,version:i}),{status:200})}if(o.endsWith(`/read`)){let{messageId:i,timeout:a}=yield r.request.json();if(i in e){let t=e[i];return delete e[i],n(t)}return yield new Promise((e=>{t[i]=e,setTimeout((function(){delete t[i],e(new Response(``,{status:408}))}),a)}))}if(o.endsWith(`/write`)){let{message:i,messageId:a}=yield r.request.json(),o=t[a];return o?(o(n(i)),delete t[a]):e[a]=i,n({early:!o})}if(o.endsWith(`/version`))return new Response(i,{status:200})}))}()),!0)}}function s(e){return new Promise((t=>setTimeout(t,e)))}class c extends Error{constructor(e,t){super(`Received status ${t} from ${e}. Ensure the service worker is registered and active.`),this.url=e,this.status=t,this.type=`ServiceWorkerError`,Object.setPrototypeOf(this,c.prototype)}}function l(e,t){let n=new TextEncoder().encode(JSON.stringify(t)),{data:r,meta:i}=e;if(n.length>r.length)throw Error(`Message is too big, increase bufferSize when making channel.`);r.set(n,0),Atomics.store(i,0,n.length),Atomics.store(i,1,1),Atomics.notify(i,1)}function u(e,t,r){return n(this,void 0,void 0,(function*(){yield navigator.serviceWorker.ready;let n=e.baseUrl+`/write`,a=Date.now();for(;;){let o=yield fetch(n,{method:`POST`,body:JSON.stringify({message:t,messageId:r})});if(o.status===200&&(yield o.json()).version===i)return;if(!(Date.now()-a<e.timeout))throw new c(n,o.status);yield s(100)}}))}function d(e,t,r){return n(this,void 0,void 0,(function*(){e.type===`atomics`?l(e,t):yield u(e,t,r)}))}function f(e={}){return typeof SharedArrayBuffer<`u`?p(e.atomics):`serviceWorker`in navigator?m(e.serviceWorker):null}function p({bufferSize:e}={}){return{type:`atomics`,data:new Uint8Array(new SharedArrayBuffer(e||131072)),meta:new Int32Array(new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT))}}function m(e={}){return{type:`serviceWorker`,baseUrl:(e.scope||`/`)+r,timeout:e.timeout||5e3}}function h(e,t){return e>0?+e:t}function g(e,t,{checkInterrupt:n,checkTimeout:r,timeout:a}={}){let o=performance.now();r=h(r,n?100:5e3);let s=h(a,1/0),l;if(e.type===`atomics`){let{data:t,meta:n}=e;l=()=>{if(Atomics.wait(n,1,0,r)===`timed-out`)return null;{let e=Atomics.exchange(n,0,0),r=t.slice(0,e);Atomics.store(n,1,0);let i=new TextDecoder().decode(r);return JSON.parse(i)}}}else l=()=>{let n=new XMLHttpRequest,a=e.baseUrl+`/read`;n.open(`POST`,a,!1);let s={messageId:t,timeout:r};n.send(JSON.stringify(s));let{status:l}=n;if(l===408)return null;if(l===200){let e=JSON.parse(n.responseText);return e.version===i?e.message:null}if(performance.now()-o<e.timeout)return null;throw new c(a,l)};for(;;){let e=s-(performance.now()-o);if(e<=0)return null;r=Math.min(r,e);let t=l();if(t!==null)return t;if(n?.())return null}}function _(e,t){if(e=h(e,0))if(typeof SharedArrayBuffer<`u`){let t=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));t[0]=0,Atomics.wait(t,0,0,e)}else g(t,`sleep ${e} ${v()}`,{timeout:e})}let v;return v=`randomUUID`in crypto?function(){return crypto.randomUUID()}:function(){return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,(e=>{let t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))},t})()}))}))(),t=new class{constructor(t=``){this.hostName=t,this.syncMessageListener=(0,e.serviceWorkerFetchListener)()}async handleInputRequest(e){if(this.syncMessageListener(e))return!0;let t=e.request.url;return this.hostName&&t.includes(this.hostName)?(e.respondWith(fetch(e.request).then(e=>{let t=new Headers(e.headers);return t.set(`Cross-Origin-Embedder-Policy`,`require-corp`),t.set(`Cross-Origin-Opener-Policy`,`same-origin`),t.set(`Cross-Origin-Resource-Policy`,`cross-origin`),new Response(e.body,{status:e.status||200,statusText:e.statusText,headers:t})})),!0):!1}}(``);addEventListener(`fetch`,async function(e){await t.handleInputRequest(e)}),addEventListener(`install`,function(e){e.waitUntil(skipWaiting())}),addEventListener(`activate`,function(e){e.waitUntil(clients.claim())});
|
|
Binary file
|
|
@@ -15,5 +15,6 @@ export var BackendEventType;
|
|
|
15
15
|
BackendEventType["FrameChange"] = "frame-change";
|
|
16
16
|
BackendEventType["Stop"] = "stop";
|
|
17
17
|
BackendEventType["Files"] = "files";
|
|
18
|
+
BackendEventType["Turtle"] = "turtle";
|
|
18
19
|
})(BackendEventType || (BackendEventType = {}));
|
|
19
20
|
//# sourceMappingURL=BackendEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackendEvent.js","sourceRoot":"","sources":["../../src/communication/BackendEvent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"BackendEvent.js","sourceRoot":"","sources":["../../src/communication/BackendEvent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,gBAcX;AAdD,WAAY,gBAAgB;IACxB,mCAAe,CAAA;IACf,+BAAW,CAAA;IACX,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,mCAAe,CAAA;IACf,mCAAe,CAAA;IACf,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,gDAA4B,CAAA;IAC5B,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,qCAAiB,CAAA;AACrB,CAAC,EAdW,gBAAgB,KAAhB,gBAAgB,QAc3B"}
|
|
@@ -10,5 +10,7 @@ export declare class Output extends PapyrosElement {
|
|
|
10
10
|
get showOverflowWarning(): boolean;
|
|
11
11
|
get downloadOverflowUrl(): string;
|
|
12
12
|
get renderedOutputs(): TemplateResult[];
|
|
13
|
+
private get showTurtleTab();
|
|
14
|
+
private renderTabs;
|
|
13
15
|
protected render(): TemplateResult;
|
|
14
16
|
}
|
|
@@ -6,8 +6,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from "lit/decorators.js";
|
|
8
8
|
import { css, html } from "lit";
|
|
9
|
-
import { OutputType } from "../state/InputOutput";
|
|
9
|
+
import { OutputType, OUTPUT_TAB, TURTLE_TAB } from "../state/InputOutput";
|
|
10
10
|
import { PapyrosElement } from "./PapyrosElement";
|
|
11
|
+
import { tabButtonStyles } from "./shared-styles";
|
|
11
12
|
import "@material/web/icon/icon";
|
|
12
13
|
let Output = class Output extends PapyrosElement {
|
|
13
14
|
static get styles() {
|
|
@@ -15,8 +16,32 @@ let Output = class Output extends PapyrosElement {
|
|
|
15
16
|
:host {
|
|
16
17
|
width: 100%;
|
|
17
18
|
height: 100%;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.tabs {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: row;
|
|
26
|
+
gap: 0.25rem;
|
|
27
|
+
padding-top: 0.25rem;
|
|
28
|
+
flex-shrink: 0;
|
|
29
|
+
position: relative;
|
|
30
|
+
z-index: 1;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.content {
|
|
34
|
+
flex: 1;
|
|
18
35
|
overflow: auto;
|
|
19
|
-
|
|
36
|
+
container-type: size;
|
|
37
|
+
padding: 0.75rem;
|
|
38
|
+
background-color: var(--md-sys-color-surface-container-highest);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.content.turtle {
|
|
42
|
+
margin-top: -1px;
|
|
43
|
+
padding: 0;
|
|
44
|
+
background-color: transparent;
|
|
20
45
|
}
|
|
21
46
|
|
|
22
47
|
img {
|
|
@@ -26,6 +51,18 @@ let Output = class Output extends PapyrosElement {
|
|
|
26
51
|
margin: 0.5rem 0;
|
|
27
52
|
}
|
|
28
53
|
|
|
54
|
+
img.turtle,
|
|
55
|
+
.turtle-placeholder {
|
|
56
|
+
width: min(100cqw, 100cqh);
|
|
57
|
+
height: min(100cqw, 100cqh);
|
|
58
|
+
max-width: 100%;
|
|
59
|
+
max-height: 100%;
|
|
60
|
+
margin: 0;
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
background-color: var(--md-sys-color-surface-container-highest);
|
|
63
|
+
border: 1px solid var(--md-sys-color-outline-variant);
|
|
64
|
+
}
|
|
65
|
+
|
|
29
66
|
pre {
|
|
30
67
|
font-family: monospace;
|
|
31
68
|
margin: 0;
|
|
@@ -43,6 +80,8 @@ let Output = class Output extends PapyrosElement {
|
|
|
43
80
|
md-icon {
|
|
44
81
|
vertical-align: bottom;
|
|
45
82
|
}
|
|
83
|
+
|
|
84
|
+
${tabButtonStyles}
|
|
46
85
|
`;
|
|
47
86
|
}
|
|
48
87
|
get maxOutputLength() {
|
|
@@ -62,7 +101,7 @@ let Output = class Output extends PapyrosElement {
|
|
|
62
101
|
}
|
|
63
102
|
get downloadOverflowUrl() {
|
|
64
103
|
const blob = new Blob(this.overflow.map((o) => {
|
|
65
|
-
if (o.type === OutputType.img) {
|
|
104
|
+
if (o.type === OutputType.img || o.type === OutputType.turtle) {
|
|
66
105
|
return `[Image output of type ${o.contentType} omitted]\n`;
|
|
67
106
|
}
|
|
68
107
|
else if (o.type === OutputType.stdout) {
|
|
@@ -94,13 +133,28 @@ let Output = class Output extends PapyrosElement {
|
|
|
94
133
|
return URL.createObjectURL(blob);
|
|
95
134
|
}
|
|
96
135
|
get renderedOutputs() {
|
|
97
|
-
|
|
98
|
-
|
|
136
|
+
let outputsToRender;
|
|
137
|
+
if (this.papyros.io.activeOutputTab === TURTLE_TAB) {
|
|
138
|
+
// Latest snapshot within this.outputs (which is sliced by the debugger's current
|
|
139
|
+
// step via maxOutputLength) — so stepping the debugger shows the drawing build up.
|
|
140
|
+
const lastIdx = this.outputs.findLastIndex((o) => o.type === OutputType.turtle);
|
|
141
|
+
outputsToRender = lastIdx >= 0 ? [this.outputs[lastIdx]] : [];
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
outputsToRender = this.outputs.filter((o) => o.type !== OutputType.turtle);
|
|
145
|
+
}
|
|
146
|
+
return outputsToRender.map((o) => {
|
|
147
|
+
var _a, _b, _c;
|
|
99
148
|
if (o.type === OutputType.stdout) {
|
|
100
149
|
return html `${o.content}`;
|
|
101
150
|
}
|
|
102
151
|
else if (o.type === OutputType.img) {
|
|
103
|
-
|
|
152
|
+
const mimeType = (_a = o.contentType) !== null && _a !== void 0 ? _a : "image/png";
|
|
153
|
+
return html `<img src="data:${mimeType},${o.content}"></img>`;
|
|
154
|
+
}
|
|
155
|
+
else if (o.type === OutputType.turtle) {
|
|
156
|
+
const mimeType = (_b = o.contentType) !== null && _b !== void 0 ? _b : "image/svg+xml;base64";
|
|
157
|
+
return html `<img class="turtle" src="data:${mimeType},${o.content}"></img>`;
|
|
104
158
|
}
|
|
105
159
|
else if (o.type === OutputType.stderr) {
|
|
106
160
|
if (typeof o.content === "string") {
|
|
@@ -115,7 +169,7 @@ let Output = class Output extends PapyrosElement {
|
|
|
115
169
|
<md-icon title="${errorObject.traceback}">
|
|
116
170
|
${this.papyros.constants.icons.info}
|
|
117
171
|
</md-icon> `,
|
|
118
|
-
html `<span class="where">${(
|
|
172
|
+
html `<span class="where">${(_c = errorObject.where) === null || _c === void 0 ? void 0 : _c.trim()}</span> `,
|
|
119
173
|
];
|
|
120
174
|
if (errorObject.what) {
|
|
121
175
|
errorHTML.push(html `<span class="what">${errorObject.what.trim()}</span> `);
|
|
@@ -131,22 +185,57 @@ let Output = class Output extends PapyrosElement {
|
|
|
131
185
|
}
|
|
132
186
|
});
|
|
133
187
|
}
|
|
188
|
+
get showTurtleTab() {
|
|
189
|
+
return this.papyros.io.hasTurtleOutput || this.papyros.io.activeOutputTab === TURTLE_TAB;
|
|
190
|
+
}
|
|
191
|
+
renderTabs() {
|
|
192
|
+
const activeTab = this.papyros.io.activeOutputTab;
|
|
193
|
+
return html `
|
|
194
|
+
<div class="tabs">
|
|
195
|
+
<button
|
|
196
|
+
class=${activeTab === OUTPUT_TAB ? "active" : ""}
|
|
197
|
+
@click=${() => this.papyros.io.selectOutputTab(OUTPUT_TAB)}
|
|
198
|
+
>
|
|
199
|
+
${this.t("Papyros.output_tab_output")}
|
|
200
|
+
</button>
|
|
201
|
+
${this.showTurtleTab
|
|
202
|
+
? html `
|
|
203
|
+
<button
|
|
204
|
+
class=${activeTab === TURTLE_TAB ? "active" : ""}
|
|
205
|
+
@click=${() => this.papyros.io.selectOutputTab(TURTLE_TAB)}
|
|
206
|
+
>
|
|
207
|
+
${this.t("Papyros.output_tab_turtle")}
|
|
208
|
+
</button>
|
|
209
|
+
`
|
|
210
|
+
: html ``}
|
|
211
|
+
</div>
|
|
212
|
+
`;
|
|
213
|
+
}
|
|
134
214
|
render() {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
215
|
+
const activeTab = this.papyros.io.activeOutputTab;
|
|
216
|
+
const rendered = this.renderedOutputs;
|
|
217
|
+
const showPlaceholder = activeTab === OUTPUT_TAB && rendered.length === 0;
|
|
218
|
+
const showTurtlePlaceholder = activeTab === TURTLE_TAB && rendered.length === 0;
|
|
219
|
+
const showOverflow = activeTab === OUTPUT_TAB && this.showOverflowWarning;
|
|
138
220
|
return html `
|
|
139
|
-
|
|
140
|
-
${
|
|
221
|
+
${this.renderTabs()}
|
|
222
|
+
<div class="content ${activeTab === TURTLE_TAB ? "turtle" : ""}">
|
|
223
|
+
${showPlaceholder
|
|
224
|
+
? html `<pre class="place-holder">${this.t("Papyros.output_placeholder")}</pre>`
|
|
225
|
+
: showTurtlePlaceholder
|
|
226
|
+
? html `<div class="turtle-placeholder"></div>`
|
|
227
|
+
: html `<pre>${rendered}</pre>`}
|
|
228
|
+
${showOverflow
|
|
141
229
|
? html `
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
230
|
+
<p>
|
|
231
|
+
${this.t("Papyros.output_overflow")}
|
|
232
|
+
<a href="${this.downloadOverflowUrl}" download="papyros_output.txt">
|
|
233
|
+
${this.t("Papyros.output_overflow_download")}
|
|
234
|
+
</a>
|
|
235
|
+
</p>
|
|
236
|
+
`
|
|
149
237
|
: html ``}
|
|
238
|
+
</div>
|
|
150
239
|
`;
|
|
151
240
|
}
|
|
152
241
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Output.js","sourceRoot":"","sources":["../../../src/frontend/components/Output.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,EAA8B,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Output.js","sourceRoot":"","sources":["../../../src/frontend/components/Output.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3D,OAAO,EAA8B,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,yBAAyB,CAAC;AAG1B,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,cAAc;IACtC,MAAM,KAAK,MAAM;QACb,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqEJ,eAAe;SACpB,CAAC;IACN,CAAC;IAED,IAAY,eAAe;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnF,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;IAClD,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IACjG,CAAC;IAED,IAAI,mBAAmB;QACnB,MAAM,IAAI,GAAG,IAAI,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC5D,OAAO,yBAAyB,CAAC,CAAC,WAAW,aAAa,CAAC;YAC/D,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,OAAO,CAAC,CAAC,OAAiB,CAAC;YAC/B,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACJ,MAAM,WAAW,GAAG,CAAC,CAAC,OAAwB,CAAC;oBAC/C,IAAI,WAAW,GAAG,UAAU,WAAW,CAAC,IAAI,WAAW,WAAW,CAAC,IAAI,gBAAgB,WAAW,CAAC,SAAS,IAAI,CAAC;oBACjH,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;wBACpB,WAAW,IAAI,UAAU,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC1D,CAAC;oBACD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;wBACnB,WAAW,IAAI,SAAS,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;oBACxD,CAAC;oBACD,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;wBAClB,WAAW,IAAI,QAAQ,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;oBACtD,CAAC;oBACD,OAAO,WAAW,CAAC;gBACvB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,qCAAqC,CAAC;YACjD,CAAC;QACL,CAAC,CAAC,EACF,EAAE,IAAI,EAAE,YAAY,EAAE,CACzB,CAAC;QAEF,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,eAAe;QACf,IAAI,eAA8B,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YACjD,iFAAiF;YACjF,mFAAmF;YACnF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;YAChF,eAAe,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,CAAC;aAAM,CAAC;YACJ,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;YAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAA,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9B,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,MAAA,CAAC,CAAC,WAAW,mCAAI,WAAW,CAAC;gBAC9C,OAAO,IAAI,CAAA,kBAAkB,QAAQ,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;YACjE,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,MAAA,CAAC,CAAC,WAAW,mCAAI,sBAAsB,CAAC;gBACzD,OAAO,IAAI,CAAA,iCAAiC,QAAQ,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;YAChF,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAA,uBAAuB,CAAC,CAAC,OAAO,SAAS,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,MAAM,WAAW,GAAG,CAAC,CAAC,OAAwB,CAAC;oBAC/C,MAAM,SAAS,GAAG;wBACd,kDAAkD;wBAClD,IAAI,CAAA,mBAAmB,WAAW,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;8BACxE,WAAW,CAAC,IAAI;8CACA,WAAW,CAAC,SAAS;kCACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;wCAC3B;wBAChB,IAAI,CAAA,uBAAuB,MAAA,WAAW,CAAC,KAAK,0CAAE,IAAI,EAAE,UAAU;qBACjE,CAAC;oBACF,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;wBACnB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAA,sBAAsB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAChF,CAAC;oBACD,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;wBAClB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAA,qBAAqB,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC9E,CAAC;oBACD,OAAO,IAAI,CAAA,uBAAuB,SAAS,SAAS,CAAC;gBACzD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAA,EAAE,CAAC,CAAC,0BAA0B;YAC7C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAY,aAAa;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,KAAK,UAAU,CAAC;IAC7F,CAAC;IAEO,UAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC;QAClD,OAAO,IAAI,CAAA;;;4BAGS,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;6BACvC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;;sBAExD,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC;;kBAEvC,IAAI,CAAC,aAAa;YAChB,CAAC,CAAC,IAAI,CAAA;;sCAEY,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;uCACvC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;;gCAExD,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC;;uBAE5C;YACH,CAAC,CAAC,IAAI,CAAA,EAAE;;SAEnB,CAAC;IACN,CAAC;IAEkB,MAAM;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QACtC,MAAM,eAAe,GAAG,SAAS,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1E,MAAM,qBAAqB,GAAG,SAAS,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;QAChF,MAAM,YAAY,GAAG,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC;QAC1E,OAAO,IAAI,CAAA;cACL,IAAI,CAAC,UAAU,EAAE;kCACG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;kBACxD,eAAe;YACb,CAAC,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,QAAQ;YAC/E,CAAC,CAAC,qBAAqB;gBACrB,CAAC,CAAC,IAAI,CAAA,wCAAwC;gBAC9C,CAAC,CAAC,IAAI,CAAA,QAAQ,QAAQ,QAAQ;kBAClC,YAAY;YACV,CAAC,CAAC,IAAI,CAAA;;gCAEM,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC;yCACxB,IAAI,CAAC,mBAAmB;oCAC7B,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC;;;uBAGvD;YACH,CAAC,CAAC,IAAI,CAAA,EAAE;;SAEnB,CAAC;IACN,CAAC;CACJ,CAAA;AAvOY,MAAM;IADlB,aAAa,CAAC,UAAU,CAAC;GACb,MAAM,CAuOlB"}
|
|
@@ -116,6 +116,14 @@ for _ in range(10):
|
|
|
116
116
|
with open("names.txt", "r") as in_file:
|
|
117
117
|
for line in in_file:
|
|
118
118
|
print(line.rstrip())
|
|
119
|
+
`,
|
|
120
|
+
Turtle: `import turtle
|
|
121
|
+
|
|
122
|
+
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
|
|
123
|
+
for i in range(360):
|
|
124
|
+
turtle.pencolor(colors[i % 6])
|
|
125
|
+
turtle.forward(i * 0.5)
|
|
126
|
+
turtle.left(59)
|
|
119
127
|
`,
|
|
120
128
|
Matplotlib: `import matplotlib.pyplot as plt
|
|
121
129
|
import networkx as nx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonExamples.js","sourceRoot":"","sources":["../../../../../src/frontend/components/app/examples/PythonExamples.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,eAAe,EAAE,wBAAwB;IACzC,KAAK,EAAE;yBACc;IACrB,SAAS,EAAE;;;yCAG0B;IACrC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDb;IACG,KAAK,EAAE;;;;;;;;;;;;;;;CAeV;IACG,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd;IACG,OAAO,EAAE;;;;CAIZ;IACG,KAAK,EAAE;;;;;;;CAOV;IACG,UAAU,EAAE;;;;;;;;;;;;;;;;;;CAkBf;IACG,KAAK,EAAE;;;;;;;;CAQV;IACG,QAAQ,EAAE;;;;;;;;CAQb;IACG,SAAS,EAAE;;;;CAId;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"PythonExamples.js","sourceRoot":"","sources":["../../../../../src/frontend/components/app/examples/PythonExamples.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,eAAe,EAAE,wBAAwB;IACzC,KAAK,EAAE;yBACc;IACrB,SAAS,EAAE;;;yCAG0B;IACrC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDb;IACG,KAAK,EAAE;;;;;;;;;;;;;;;CAeV;IACG,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd;IACG,OAAO,EAAE;;;;CAIZ;IACG,KAAK,EAAE;;;;;;;CAOV;IACG,MAAM,EAAE;;;;;;;CAOX;IACG,UAAU,EAAE;;;;;;;;;;;;;;;;;;CAkBf;IACG,KAAK,EAAE;;;;;;;;CAQV;IACG,QAAQ,EAAE;;;;;;;;CAQb;IACG,SAAS,EAAE;;;;CAId;CACA,CAAC"}
|
|
@@ -32,7 +32,8 @@ export interface FriendlyError {
|
|
|
32
32
|
export declare enum OutputType {
|
|
33
33
|
stdout = "stdout",
|
|
34
34
|
stderr = "stderr",
|
|
35
|
-
img = "img"
|
|
35
|
+
img = "img",
|
|
36
|
+
turtle = "turtle"
|
|
36
37
|
}
|
|
37
38
|
export type OutputEntry = {
|
|
38
39
|
type: OutputType;
|
|
@@ -49,13 +50,19 @@ export interface FileEntry {
|
|
|
49
50
|
binary: boolean;
|
|
50
51
|
}
|
|
51
52
|
export declare const CODE_TAB = "code";
|
|
53
|
+
export declare const OUTPUT_TAB = "output";
|
|
54
|
+
export declare const TURTLE_TAB = "turtle";
|
|
55
|
+
export type OutputTab = typeof OUTPUT_TAB | typeof TURTLE_TAB;
|
|
52
56
|
export declare function parseFileEntries(data: string, contentType?: string): FileEntry[];
|
|
53
57
|
export declare class InputOutput extends State {
|
|
54
58
|
private papyros;
|
|
55
59
|
inputs: string[];
|
|
56
60
|
output: OutputEntry[];
|
|
61
|
+
hasTurtleOutput: boolean;
|
|
57
62
|
files: FileEntry[];
|
|
58
63
|
activeEditorTab: string;
|
|
64
|
+
activeOutputTab: OutputTab;
|
|
65
|
+
outputTabManuallySet: boolean;
|
|
59
66
|
prompt: string;
|
|
60
67
|
awaitingInput: boolean;
|
|
61
68
|
inputMode: InputMode;
|
|
@@ -66,6 +73,8 @@ export declare class InputOutput extends State {
|
|
|
66
73
|
constructor(papyros: Papyros);
|
|
67
74
|
logError(error: FriendlyError | string): void;
|
|
68
75
|
logImage(imageData: string, contentType?: string): void;
|
|
76
|
+
logTurtle(imageData: string, contentType?: string): void;
|
|
77
|
+
selectOutputTab(tab: OutputTab): void;
|
|
69
78
|
logOutput(output: string): void;
|
|
70
79
|
provideInput(input: string): void;
|
|
71
80
|
removeFile(name: string): void;
|
|
@@ -15,6 +15,7 @@ export var OutputType;
|
|
|
15
15
|
OutputType["stdout"] = "stdout";
|
|
16
16
|
OutputType["stderr"] = "stderr";
|
|
17
17
|
OutputType["img"] = "img";
|
|
18
|
+
OutputType["turtle"] = "turtle";
|
|
18
19
|
})(OutputType || (OutputType = {}));
|
|
19
20
|
export var InputMode;
|
|
20
21
|
(function (InputMode) {
|
|
@@ -22,6 +23,8 @@ export var InputMode;
|
|
|
22
23
|
InputMode["interactive"] = "interactive";
|
|
23
24
|
})(InputMode || (InputMode = {}));
|
|
24
25
|
export const CODE_TAB = "code";
|
|
26
|
+
export const OUTPUT_TAB = "output";
|
|
27
|
+
export const TURTLE_TAB = "turtle";
|
|
25
28
|
export function parseFileEntries(data, contentType) {
|
|
26
29
|
const parsed = parseData(data, contentType);
|
|
27
30
|
return Object.entries(parsed).map(([name, { content, binary }]) => ({ name, content, binary }));
|
|
@@ -50,8 +53,11 @@ export class InputOutput extends State {
|
|
|
50
53
|
super();
|
|
51
54
|
this.inputs = [];
|
|
52
55
|
this.output = [];
|
|
56
|
+
this.hasTurtleOutput = false;
|
|
53
57
|
this.files = [];
|
|
54
58
|
this.activeEditorTab = CODE_TAB;
|
|
59
|
+
this.activeOutputTab = OUTPUT_TAB;
|
|
60
|
+
this.outputTabManuallySet = false;
|
|
55
61
|
this.prompt = "";
|
|
56
62
|
this.awaitingInput = false;
|
|
57
63
|
this.inputMode = InputMode.interactive;
|
|
@@ -61,13 +67,17 @@ export class InputOutput extends State {
|
|
|
61
67
|
BackendManager.subscribe(BackendEventType.Start, () => this.reset());
|
|
62
68
|
BackendManager.subscribe(BackendEventType.Output, (e) => {
|
|
63
69
|
const data = parseData(e.data, e.contentType);
|
|
64
|
-
if (e.contentType && e.contentType.startsWith("
|
|
70
|
+
if (e.contentType && e.contentType.startsWith("image/")) {
|
|
65
71
|
this.logImage(data, e.contentType);
|
|
66
72
|
}
|
|
67
73
|
else {
|
|
68
74
|
this.logOutput(data);
|
|
69
75
|
}
|
|
70
76
|
});
|
|
77
|
+
BackendManager.subscribe(BackendEventType.Turtle, (e) => {
|
|
78
|
+
const data = parseData(e.data, e.contentType);
|
|
79
|
+
this.logTurtle(data, e.contentType);
|
|
80
|
+
});
|
|
71
81
|
BackendManager.subscribe(BackendEventType.Error, (e) => {
|
|
72
82
|
const data = parseData(e.data, e.contentType);
|
|
73
83
|
this.logError(data);
|
|
@@ -82,6 +92,11 @@ export class InputOutput extends State {
|
|
|
82
92
|
});
|
|
83
93
|
BackendManager.subscribe(BackendEventType.End, () => {
|
|
84
94
|
this.awaitingInput = false;
|
|
95
|
+
// If the finished run produced no turtle output, drop the (stale) Turtle tab
|
|
96
|
+
// selection so the tab bar hides. A manual selection is preserved.
|
|
97
|
+
if (this.activeOutputTab === TURTLE_TAB && !this.hasTurtleOutput && !this.outputTabManuallySet) {
|
|
98
|
+
this.activeOutputTab = OUTPUT_TAB;
|
|
99
|
+
}
|
|
85
100
|
});
|
|
86
101
|
BackendManager.subscribe(BackendEventType.Files, (e) => {
|
|
87
102
|
this.files = parseFileEntries(e.data, e.contentType);
|
|
@@ -99,9 +114,21 @@ export class InputOutput extends State {
|
|
|
99
114
|
}
|
|
100
115
|
this.output = [...this.output, { type: OutputType.stderr, content: error }];
|
|
101
116
|
}
|
|
102
|
-
logImage(imageData, contentType = "
|
|
117
|
+
logImage(imageData, contentType = "image/png") {
|
|
103
118
|
this.output = [...this.output, { type: OutputType.img, content: imageData, contentType }];
|
|
104
119
|
}
|
|
120
|
+
logTurtle(imageData, contentType = "image/svg+xml;base64") {
|
|
121
|
+
const isFirstSnapshot = !this.hasTurtleOutput;
|
|
122
|
+
this.output = [...this.output, { type: OutputType.turtle, content: imageData, contentType }];
|
|
123
|
+
this.hasTurtleOutput = true;
|
|
124
|
+
if (isFirstSnapshot && this.activeOutputTab === OUTPUT_TAB && !this.outputTabManuallySet) {
|
|
125
|
+
this.activeOutputTab = TURTLE_TAB;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
selectOutputTab(tab) {
|
|
129
|
+
this.activeOutputTab = tab;
|
|
130
|
+
this.outputTabManuallySet = true;
|
|
131
|
+
}
|
|
105
132
|
logOutput(output) {
|
|
106
133
|
// lines have been merged to limit the number of events
|
|
107
134
|
// we split them again here, to simplify overflow detection
|
|
@@ -164,9 +191,13 @@ export class InputOutput extends State {
|
|
|
164
191
|
reset() {
|
|
165
192
|
this.inputs = [];
|
|
166
193
|
this.output = [];
|
|
194
|
+
this.hasTurtleOutput = false;
|
|
167
195
|
this.prompt = "";
|
|
168
196
|
this.awaitingInput = false;
|
|
169
197
|
this.activeEditorTab = CODE_TAB;
|
|
198
|
+
// activeOutputTab is intentionally preserved across reruns: resetting it would make
|
|
199
|
+
// the tab bar flicker (Turtle → Output → Turtle) as a turtle rerun progresses. It is
|
|
200
|
+
// pruned back to OUTPUT_TAB on End when no turtle output was produced.
|
|
170
201
|
}
|
|
171
202
|
}
|
|
172
203
|
__decorate([
|
|
@@ -175,12 +206,21 @@ __decorate([
|
|
|
175
206
|
__decorate([
|
|
176
207
|
stateProperty
|
|
177
208
|
], InputOutput.prototype, "output", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
stateProperty
|
|
211
|
+
], InputOutput.prototype, "hasTurtleOutput", void 0);
|
|
178
212
|
__decorate([
|
|
179
213
|
stateProperty
|
|
180
214
|
], InputOutput.prototype, "files", void 0);
|
|
181
215
|
__decorate([
|
|
182
216
|
stateProperty
|
|
183
217
|
], InputOutput.prototype, "activeEditorTab", void 0);
|
|
218
|
+
__decorate([
|
|
219
|
+
stateProperty
|
|
220
|
+
], InputOutput.prototype, "activeOutputTab", void 0);
|
|
221
|
+
__decorate([
|
|
222
|
+
stateProperty
|
|
223
|
+
], InputOutput.prototype, "outputTabManuallySet", void 0);
|
|
184
224
|
__decorate([
|
|
185
225
|
stateProperty
|
|
186
226
|
], InputOutput.prototype, "prompt", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputOutput.js","sourceRoot":"","sources":["../../../src/frontend/state/InputOutput.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAgC1D,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"InputOutput.js","sourceRoot":"","sources":["../../../src/frontend/state/InputOutput.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,8 @@ export declare const ENGLISH_TRANSLATION: {
|
|
|
75
75
|
files_download: string;
|
|
76
76
|
files_binary: string;
|
|
77
77
|
files_empty: string;
|
|
78
|
+
output_tab_output: string;
|
|
79
|
+
output_tab_turtle: string;
|
|
78
80
|
};
|
|
79
81
|
CodeMirror: {
|
|
80
82
|
"Go to line": string;
|
|
@@ -167,6 +169,8 @@ export declare const DUTCH_TRANSLATION: {
|
|
|
167
169
|
files_download: string;
|
|
168
170
|
files_binary: string;
|
|
169
171
|
files_empty: string;
|
|
172
|
+
output_tab_output: string;
|
|
173
|
+
output_tab_turtle: string;
|
|
170
174
|
};
|
|
171
175
|
CodeMirror: {
|
|
172
176
|
"Control character": string;
|
|
@@ -77,6 +77,8 @@ export const ENGLISH_TRANSLATION = {
|
|
|
77
77
|
files_download: "Download",
|
|
78
78
|
files_binary: "Binary file",
|
|
79
79
|
files_empty: "Empty file",
|
|
80
|
+
output_tab_output: "Output",
|
|
81
|
+
output_tab_turtle: "Turtle",
|
|
80
82
|
},
|
|
81
83
|
CodeMirror: {
|
|
82
84
|
// @codemirror/search
|
|
@@ -171,6 +173,8 @@ export const DUTCH_TRANSLATION = {
|
|
|
171
173
|
files_download: "Downloaden",
|
|
172
174
|
files_binary: "Binair bestand",
|
|
173
175
|
files_empty: "Leeg bestand",
|
|
176
|
+
output_tab_output: "Uitvoer",
|
|
177
|
+
output_tab_turtle: "Turtle",
|
|
174
178
|
},
|
|
175
179
|
CodeMirror: {
|
|
176
180
|
// @codemirror/view
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Translations.js","sourceRoot":"","sources":["../../../src/frontend/state/Translations.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,6EAA6E;AAE7E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,OAAO,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM;QACZ,gBAAgB,EAAE,2EAA2E;QAC7F,KAAK,EAAE,OAAO;QACd,iBAAiB,EAAE;YACf,WAAW,EAAE,uCAAuC;YACpD,KAAK,EACD,iDAAiD,GAAG,iDAAiD;SAC5G;QACD,cAAc,EAAE,2EAA2E;QAC3F,MAAM,EAAE,QAAQ;QAChB,kBAAkB,EAAE,2CAA2C;QAC/D,iBAAiB,EAAE,uCAAuC;QAC1D,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,4BAA4B;QACtC,WAAW,EAAE,kCAAkC;QAC/C,MAAM,EAAE;YACJ,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,SAAS;YAClB,cAAc,EAAE,gBAAgB;YAChC,KAAK,EAAE,EAAE;SACZ;QACD,oBAAoB,EAAE,sBAAsB;QAC5C,qBAAqB,EAAE;YACnB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,YAAY;SAC3B;QACD,OAAO,EAAE;YACL,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,YAAY;SACnB;QACD,oBAAoB,EAAE;YAClB,WAAW,EAAE,4BAA4B;YACzC,KAAK,EAAE,uBAAuB;SACjC;QACD,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,WAAW;QACtB,eAAe,EAAE,kDAAkD;QACnE,wBAAwB,EAAE,qCAAqC;QAC/D,SAAS,EAAE,sCAAsC;QACjD,oBAAoB,EAAE,oCAAoC;QAC1D,YAAY,EAAE,gDAAgD;QAC9D,OAAO,EAAE,sBAAsB;QAC/B,SAAS,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,KAAK;SACb;QACD,UAAU,EAAE,2CAA2C;QACvD,sBAAsB,EAAE,iEAAiE;QACzF,QAAQ,EAAE;YACN,KAAK,EAAE,4CAA4C;YACnD,MAAM,EAAE,uHAAuH;YAC/H,MAAM,EAAE,gMAAgM;SAC3M;QACD,MAAM,EAAE;YACJ,SAAS,EAAE;gBACP,WAAW,EAAE,iDAAiD;gBAC9D,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,QAAQ;aACnB;SACJ;QACD,KAAK,EAAE;YACH,IAAI,EAAE,gBAAgB;SACzB;QACD,eAAe,EAAE,MAAM;QACvB,cAAc,EAAE,aAAa;QAC7B,kBAAkB,EAAE,4CAA4C;QAChE,eAAe,EAAE,aAAa;QAC9B,QAAQ,EAAE,UAAU;QACpB,oBAAoB,EAAE,gBAAgB;QACtC,cAAc,EAAE,UAAU;QAC1B,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"Translations.js","sourceRoot":"","sources":["../../../src/frontend/state/Translations.ts"],"names":[],"mappings":"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"}
|
package/dist/util/Util.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export declare function isValidFileName(name: string): boolean;
|
|
|
2
2
|
export declare function debounce<T extends (...args: any[]) => void>(fn: T, delay: number): T;
|
|
3
3
|
/**
|
|
4
4
|
* Parse the data contained within a PapyrosEvent using its contentType
|
|
5
|
-
* Supported content types are: text/plain, text/json,
|
|
5
|
+
* Supported content types are: text/plain, text/json, image/png;base64
|
|
6
6
|
* @param {string} data The data to parse
|
|
7
7
|
* @param {string} contentType The content type of the data
|
|
8
8
|
* @return {any} The parsed data
|
package/dist/util/Util.js
CHANGED
|
@@ -16,7 +16,7 @@ export function debounce(fn, delay) {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Parse the data contained within a PapyrosEvent using its contentType
|
|
19
|
-
* Supported content types are: text/plain, text/json,
|
|
19
|
+
* Supported content types are: text/plain, text/json, image/png;base64
|
|
20
20
|
* @param {string} data The data to parse
|
|
21
21
|
* @param {string} contentType The content type of the data
|
|
22
22
|
* @return {any} The parsed data
|
|
@@ -44,9 +44,10 @@ export function parseData(data, contentType) {
|
|
|
44
44
|
}
|
|
45
45
|
break;
|
|
46
46
|
}
|
|
47
|
-
case "
|
|
47
|
+
case "image": {
|
|
48
48
|
switch (specificType) {
|
|
49
|
-
case "png;base64":
|
|
49
|
+
case "png;base64":
|
|
50
|
+
case "svg+xml;base64": {
|
|
50
51
|
return data;
|
|
51
52
|
}
|
|
52
53
|
}
|
package/dist/util/Util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/util/Util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAqC,EAAK,EAAE,KAAa;IAC7E,IAAI,KAAgD,CAAC;IACrD,OAAO,CAAC,CAAC,GAAG,IAAmB,EAAE,EAAE;QAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAM,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,WAAoB;IACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,
|
|
1
|
+
{"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/util/Util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAqC,EAAK,EAAE,KAAa;IAC7E,IAAI,KAAgD,CAAC;IACrD,OAAO,CAAC,CAAC,GAAG,IAAmB,EAAE,EAAE;QAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAM,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,WAAoB;IACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACX,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,YAAY,CAAC;gBAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACpB,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,uFAAuF;YACvF,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,2BAA2B,WAAW,EAAE,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dodona/papyros",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"homepage": ".",
|
|
6
6
|
"dependencies": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@types/i18n-js": "^4.0.1",
|
|
32
32
|
"@types/node": "^25.0.3",
|
|
33
33
|
"@types/node-polyglot": "^2.5.0",
|
|
34
|
-
"@types/serviceworker": "^0.0.
|
|
34
|
+
"@types/serviceworker": "^0.0.196",
|
|
35
35
|
"@vitest/browser": "^4.0.6",
|
|
36
36
|
"@vitest/browser-playwright": "^4.0.6",
|
|
37
37
|
"eslint": "^10.0.2",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"globals": "^17.3.0",
|
|
43
43
|
"playwright": "^1.55.1",
|
|
44
44
|
"prettier": "^3.6.2",
|
|
45
|
-
"typescript": "^
|
|
45
|
+
"typescript": "^6.0.3",
|
|
46
46
|
"typescript-eslint": "^8.21.0",
|
|
47
47
|
"vite": "^8.0.3",
|
|
48
48
|
"vitest": "^4.0.6"
|