= observer((props) => {
return (
<>
+
= observer((props) => {
variant="light"
/>
-
);
});
diff --git a/packages/editor/src/runtime/executor/components/ConsoleOutput.ts b/packages/editor/src/runtime/executor/components/ConsoleOutput.ts
index ebf60ac29..aeebaf807 100644
--- a/packages/editor/src/runtime/executor/components/ConsoleOutput.ts
+++ b/packages/editor/src/runtime/executor/components/ConsoleOutput.ts
@@ -2,26 +2,41 @@ import { makeObservable, observable, runInAction } from "mobx";
import { lifecycle } from "vscode-lib";
import { ConsolePayload } from "../../../../../engine/types/Engine";
+interface ConsoleEvent extends ConsolePayload {
+ id: string;
+}
+
/**
* Keeps track of console output for a cell. Appends new events to the events array.
*/
export class ConsoleOutput extends lifecycle.Disposable {
private autorunDisposer: (() => void) | undefined;
- public events: ConsolePayload[] = [];
+ // Keep track of id's so every new event always has a unique id.
+ private idIncrement = 1;
+ public events: ConsoleEvent[] = [];
constructor() {
super();
makeObservable(this, {
- events: observable,
+ events: observable.shallow,
});
}
- async appendEvent(consolePayload: ConsolePayload) {
+ public async appendEvent(consolePayload: ConsolePayload) {
runInAction(() => {
if (consolePayload.level === "clear") {
this.events = [];
} else {
- this.events.push(consolePayload);
+ if (this.events.length >= 999) {
+ // Remove the first event when this arbitrary limit is reached to prevent memory issues.
+ this.events.shift();
+ }
+
+ this.idIncrement++;
+ this.events.push({
+ id: this.idIncrement.toString(),
+ ...consolePayload,
+ });
}
});
}
diff --git a/packages/editor/src/runtime/executor/executionHosts/sandboxed/iframesandbox/Frame.tsx b/packages/editor/src/runtime/executor/executionHosts/sandboxed/iframesandbox/Frame.tsx
index d07d95873..5b18370f7 100644
--- a/packages/editor/src/runtime/executor/executionHosts/sandboxed/iframesandbox/Frame.tsx
+++ b/packages/editor/src/runtime/executor/executionHosts/sandboxed/iframesandbox/Frame.tsx
@@ -128,9 +128,8 @@ const getOutputOuterStyle = (x: number, y: number) => ({
});
const outputInnerStyle = {
- maxWidth: "100%",
- width: "100%",
- overflow: "hidden",
+ overflow: "auto",
+ flex: "1",
};
const containerStyle = { position: "relative" as "relative" };
From 862e7ec33c57a500be18bb85b545561554f6a5c1 Mon Sep 17 00:00:00 2001
From: Niklas Kors
Date: Thu, 28 Apr 2022 20:39:09 +0200
Subject: [PATCH 8/8] Hook more console methods & rename level => method
---
.../runtime/executor/components/Console.tsx | 2 +-
.../executor/components/ConsoleOutput.ts | 2 +-
packages/engine/src/Engine.test.ts | 2 +-
packages/engine/src/Engine.ts | 15 ++++-
packages/engine/src/HookExecution.ts | 63 ++++++++++++++-----
.../src/__snapshots__/Engine.test.ts.snap | 6 +-
6 files changed, 66 insertions(+), 24 deletions(-)
diff --git a/packages/editor/src/runtime/executor/components/Console.tsx b/packages/editor/src/runtime/executor/components/Console.tsx
index 282a1861c..31690205d 100644
--- a/packages/editor/src/runtime/executor/components/Console.tsx
+++ b/packages/editor/src/runtime/executor/components/Console.tsx
@@ -16,7 +16,7 @@ const Console: React.FC = observer((props) => {
return {
id: event.id,
data: event.arguments,
- method: event.level,
+ method: event.method,
};
});
diff --git a/packages/editor/src/runtime/executor/components/ConsoleOutput.ts b/packages/editor/src/runtime/executor/components/ConsoleOutput.ts
index aeebaf807..67223d5b2 100644
--- a/packages/editor/src/runtime/executor/components/ConsoleOutput.ts
+++ b/packages/editor/src/runtime/executor/components/ConsoleOutput.ts
@@ -24,7 +24,7 @@ export class ConsoleOutput extends lifecycle.Disposable {
public async appendEvent(consolePayload: ConsolePayload) {
runInAction(() => {
- if (consolePayload.level === "clear") {
+ if (consolePayload.method === "clear") {
this.events = [];
} else {
if (this.events.length >= 999) {
diff --git a/packages/engine/src/Engine.test.ts b/packages/engine/src/Engine.test.ts
index 21d31a12c..442e7f23e 100644
--- a/packages/engine/src/Engine.test.ts
+++ b/packages/engine/src/Engine.test.ts
@@ -145,7 +145,7 @@ exports.default = sum;`
const consoleEvents = await eventsPromise;
- expect(consoleEvents[0].payload.level).toBe("info");
+ expect(consoleEvents[0].payload.method).toBe("log");
expect(consoleEvents[0].payload.arguments[0]).toBe("hi!");
});
diff --git a/packages/engine/src/Engine.ts b/packages/engine/src/Engine.ts
index c9f75b268..742870c82 100644
--- a/packages/engine/src/Engine.ts
+++ b/packages/engine/src/Engine.ts
@@ -14,7 +14,18 @@ export type OutputEvent = {
};
export type ConsolePayload = {
- level: "info" | "warn" | "error" | "clear";
+ method:
+ | "log"
+ | "debug"
+ | "info"
+ | "warn"
+ | "error"
+ | "table"
+ | "clear"
+ | "time"
+ | "timeEnd"
+ | "count"
+ | "assert";
arguments: any[];
};
@@ -145,7 +156,7 @@ export class Engine extends lifecycle.Disposable {
this._onConsole.fire({
model,
payload: {
- level: "clear",
+ method: "clear",
arguments: [],
},
});
diff --git a/packages/engine/src/HookExecution.ts b/packages/engine/src/HookExecution.ts
index cfa59aeff..340c512b8 100644
--- a/packages/engine/src/HookExecution.ts
+++ b/packages/engine/src/HookExecution.ts
@@ -50,30 +50,61 @@ export class HookExecution {
}),
console: {
...originalReferences.console,
- log: (...args: any) => {
+ log: (...args: any) =>
this.onConsoleEvent({
- level: "info",
+ method: "log",
arguments: args,
- });
- },
- info: (...args: any) => {
+ }),
+ debug: (...args: any) =>
this.onConsoleEvent({
- level: "info",
+ method: "debug",
arguments: args,
- });
- },
- warn: (...args: any) => {
+ }),
+ info: (...args: any) =>
this.onConsoleEvent({
- level: "warn",
+ method: "info",
arguments: args,
- });
- },
- error: (...args: any) => {
+ }),
+ warn: (...args: any) =>
this.onConsoleEvent({
- level: "error",
+ method: "warn",
arguments: args,
- });
- },
+ }),
+ error: (...args: any) =>
+ this.onConsoleEvent({
+ method: "error",
+ arguments: args,
+ }),
+ table: (...args: any) =>
+ this.onConsoleEvent({
+ method: "table",
+ arguments: args,
+ }),
+ clear: (...args: any) =>
+ this.onConsoleEvent({
+ method: "clear",
+ arguments: args,
+ }),
+ time: (...args: any) =>
+ this.onConsoleEvent({
+ method: "time",
+ arguments: args,
+ }),
+ timeEnd: (...args: any) =>
+ this.onConsoleEvent({
+ method: "timeEnd",
+ arguments: args,
+ }),
+ count: (...args: any) =>
+ this.onConsoleEvent({
+ method: "count",
+ arguments: args,
+ }),
+ assert: (...args: any) =>
+ this.onConsoleEvent({
+ method: "assert",
+ arguments: args,
+ }),
},
};
diff --git a/packages/engine/src/__snapshots__/Engine.test.ts.snap b/packages/engine/src/__snapshots__/Engine.test.ts.snap
index edb6f28ce..fba8fdf73 100644
--- a/packages/engine/src/__snapshots__/Engine.test.ts.snap
+++ b/packages/engine/src/__snapshots__/Engine.test.ts.snap
@@ -42,7 +42,7 @@ Array [
"arguments": Array [
"info",
],
- "level": "info",
+ "method": "info",
},
"path": "model2",
},
@@ -51,7 +51,7 @@ Array [
"arguments": Array [
"warn",
],
- "level": "warn",
+ "method": "warn",
},
"path": "model2",
},
@@ -60,7 +60,7 @@ Array [
"arguments": Array [
"error",
],
- "level": "error",
+ "method": "error",
},
"path": "model2",
},