From 504a580b0a58edeadc862d3dd9ee675def589b9d Mon Sep 17 00:00:00 2001 From: seveibar Date: Wed, 11 Dec 2024 03:54:22 -0800 Subject: [PATCH] initial runframe implementation --- bun.lockb | Bin 265993 -> 266327 bytes examples/runframe1-basic.fixture.tsx | 14 +++++++ lib/components/RunFrame.tsx | 56 ++++++++++++++++++++++++++- package.json | 3 +- 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 examples/runframe1-basic.fixture.tsx diff --git a/bun.lockb b/bun.lockb index 85878f8c6bd9f375e7cdf94e94d5aba3395fa006..733184701b7feb6048b2676497b8f05132214a6a 100755 GIT binary patch delta 41875 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 Xt)==}7x{_3qpel9emBqh=KKE#ZA86q delta 41096 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 diff --git a/examples/runframe1-basic.fixture.tsx b/examples/runframe1-basic.fixture.tsx new file mode 100644 index 0000000..20d6cac --- /dev/null +++ b/examples/runframe1-basic.fixture.tsx @@ -0,0 +1,14 @@ +import { RunFrame } from "lib/components/RunFrame" + +export default () => ( + +) +`, + }} + entrypoint="main.tsx" + /> +) diff --git a/lib/components/RunFrame.tsx b/lib/components/RunFrame.tsx index cebb439..0339179 100644 --- a/lib/components/RunFrame.tsx +++ b/lib/components/RunFrame.tsx @@ -1,3 +1,55 @@ -export const RunFrame = () => { - return
hello
+import { createCircuitWebWorker } from "@tscircuit/eval-webworker" +import { CircuitJsonPreview } from "./CircuitJsonPreview" +import { useEffect, useState } from "react" + +interface Props { + /** + * Map of filenames to file contents that will be available in the worker + */ + fsMap: { [filename: string]: string } + + /** + * The entry point file that will be executed first + */ + entrypoint: string + + /** + * Called when the circuit JSON changes + */ + onCircuitJsonChange?: (circuitJson: any) => void + + /** + * Called when rendering is finished + */ + onRenderingFinished?: (params: { circuitJson: any }) => void + + /** + * Called for each render event + */ + onRenderEvent?: (event: any) => void + + /** + * Called when an error occurs + */ + onError?: (error: Error) => void +} + +export const RunFrame = (props: Props) => { + const [circuitJson, setCircuitJson] = useState(null) + + useEffect(() => { + async function runWorker() { + const worker = await createCircuitWebWorker({}) + const $finished = worker.executeWithFsMap({ + entrypoint: props.entrypoint, + fsMap: props.fsMap, + }) + setCircuitJson(await worker.getCircuitJson()) + await $finished + setCircuitJson(await worker.getCircuitJson()) + } + runWorker() + }, [props.fsMap]) + + return } diff --git a/package.json b/package.json index 9e17a04..8ec0ad2 100644 --- a/package.json +++ b/package.json @@ -31,9 +31,10 @@ "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-tabs": "^1.1.1", "@tscircuit/3d-viewer": "^0.0.46", - "@tscircuit/eval-webworker": "^0.0.4", + "@tscircuit/eval-webworker": "^0.0.8", "@tscircuit/pcb-viewer": "^1.10.21", "@tscircuit/schematic-viewer": "2.0.3", + "comlink": "^4.4.2", "cssnano": "^7.0.6", "lucide-react": "^0.468.0", "react-cosmos-plugin-vite": "^6.2.0",