diff --git a/src/App.tsx b/src/App.tsx index f0c27ea..87938fd 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,9 +1,41 @@ -import { useCallback, useRef, useState } from "react" -import { useStore } from "./store" import { CircuitJsonPreview } from "@tscircuit/runframe" import type { AnyCircuitElement } from "circuit-json" -import type { SimpleRouteJson } from "tscircuit" +import { useCallback, useRef, useState } from "react" import { ErrorBoundary } from "react-error-boundary" +import type { SimpleRouteJson } from "tscircuit" +import exampleCircuitJsonUrl from "../assets/usb-c-flashlight.json?url" +import { useStore } from "./store" + +const convertSimpleRouteJsonToCircuitJson = ( + simpleRouteJson: SimpleRouteJson, +): AnyCircuitElement[] => { + const circuitJson: AnyCircuitElement[] = [] + + for (const connection of simpleRouteJson.connections) { + const trace: AnyCircuitElement = { + type: "pcb_trace", + pcb_trace_id: connection.name, + route: connection.pointsToConnect.map((point) => ({ + route_type: "wire", + x: point.x, + y: point.y, + layer: point.layer as + | "top" + | "bottom" + | "inner1" + | "inner2" + | "inner3" + | "inner4" + | "inner5" + | "inner6", + width: simpleRouteJson.minTraceWidth, + })), + } + circuitJson.push(trace) + } + + return circuitJson +} export const App = () => { const circuitJson = useStore((s) => s.circuitJson) @@ -12,37 +44,6 @@ export const App = () => { const textareaRef = useRef(null) const [errorMsg, setErrorMsg] = useState(null) - const convertSimpleRouteJsonToCircuitJson = ( - simpleRouteJson: SimpleRouteJson, - ): AnyCircuitElement[] => { - const circuitJson: AnyCircuitElement[] = [] - - for (const connection of simpleRouteJson.connections) { - const trace: AnyCircuitElement = { - type: "pcb_trace", - pcb_trace_id: connection.name, - route: connection.pointsToConnect.map((point) => ({ - route_type: "wire", - x: point.x, - y: point.y, - layer: point.layer as - | "top" - | "bottom" - | "inner1" - | "inner2" - | "inner3" - | "inner4" - | "inner5" - | "inner6", - width: simpleRouteJson.minTraceWidth, - })), - } - circuitJson.push(trace) - } - - return circuitJson - } - const loadJsonString = useCallback( (jsonString: string) => { try { @@ -150,6 +151,7 @@ export const App = () => { strokeLinecap="round" strokeLinejoin="round" > + Invalid JSON @@ -217,7 +219,8 @@ export const App = () => {

View{" "} example circuit json file