diff --git a/frontend/src/lib/components/Camera.svelte b/frontend/src/lib/components/Camera.svelte
index 04793e8..3bac531 100644
--- a/frontend/src/lib/components/Camera.svelte
+++ b/frontend/src/lib/components/Camera.svelte
@@ -1,74 +1,18 @@
-
-
-
+
diff --git a/frontend/src/lib/components/Node.svelte b/frontend/src/lib/components/Node.svelte
index a52ada0..40d63ce 100644
--- a/frontend/src/lib/components/Node.svelte
+++ b/frontend/src/lib/components/Node.svelte
@@ -1,9 +1,10 @@
+
{#if input.type === "float"}
{:else if input.type === "integer"}
diff --git a/frontend/src/lib/components/NodeParameter.svelte b/frontend/src/lib/components/NodeParameter.svelte
index 2fa53d9..2a2ef24 100644
--- a/frontend/src/lib/components/NodeParameter.svelte
+++ b/frontend/src/lib/components/NodeParameter.svelte
@@ -68,8 +68,6 @@
class:disabled={$possibleSocketIds && !$possibleSocketIds.has(socketId)}
>
-
-
@@ -152,16 +150,6 @@
display: none;
}
- .input {
- width: 100%;
- box-sizing: border-box;
- border-radius: 3px;
- font-size: 1em;
- padding: 10px;
- background: #111;
- background: var(--background-color-lighter);
- }
-
svg {
position: absolute;
box-sizing: border-box;
diff --git a/frontend/src/lib/components/background/Background.svelte b/frontend/src/lib/components/background/Background.svelte
index 334d37d..0c854fc 100644
--- a/frontend/src/lib/components/background/Background.svelte
+++ b/frontend/src/lib/components/background/Background.svelte
@@ -3,7 +3,6 @@
import BackgroundVert from "./Background.vert";
import BackgroundFrag from "./Background.frag";
- import { Color } from "three";
import { colors } from "../graph/stores";
export let minZoom = 4;
diff --git a/frontend/src/lib/components/debug/Debug.svelte b/frontend/src/lib/components/debug/Debug.svelte
index d53a791..94686a6 100644
--- a/frontend/src/lib/components/debug/Debug.svelte
+++ b/frontend/src/lib/components/debug/Debug.svelte
@@ -22,12 +22,3 @@
{/each}
-
-
diff --git a/frontend/src/lib/components/debug/index.ts b/frontend/src/lib/components/debug/index.ts
index 6db9502..fc131cb 100644
--- a/frontend/src/lib/components/debug/index.ts
+++ b/frontend/src/lib/components/debug/index.ts
@@ -1,4 +1,4 @@
-import { Vector3 } from "three";
+import { Vector3 } from "three/src/math/Vector3.js";
import { lines, points } from "./store";
export function debugPosition(x: number, y: number) {
diff --git a/frontend/src/lib/components/debug/store.ts b/frontend/src/lib/components/debug/store.ts
index 4dbe8fd..59d869f 100644
--- a/frontend/src/lib/components/debug/store.ts
+++ b/frontend/src/lib/components/debug/store.ts
@@ -1,5 +1,5 @@
import { writable } from "svelte/store";
-import type { Vector3 } from "three";
+import { Vector3 } from "three/src/math/Vector3.js";
export const points = writable
([]);
diff --git a/frontend/src/lib/components/edges/Edge.svelte b/frontend/src/lib/components/edges/Edge.svelte
index a68b182..e6f3807 100644
--- a/frontend/src/lib/components/edges/Edge.svelte
+++ b/frontend/src/lib/components/edges/Edge.svelte
@@ -1,13 +1,21 @@
-
-
-
-
-
+
+
{#if boxSelection && mouseDown}
diff --git a/frontend/src/lib/components/graph/stores.ts b/frontend/src/lib/components/graph/stores.ts
index 2d3efa1..82bc014 100644
--- a/frontend/src/lib/components/graph/stores.ts
+++ b/frontend/src/lib/components/graph/stores.ts
@@ -1,7 +1,7 @@
import { browser } from "$app/environment";
import type { Socket } from "$lib/types";
import { writable, type Writable } from "svelte/store";
-import { Color } from "three";
+import { Color } from "three/src/math/Color.js";
export const activeNodeId: Writable = writable(-1);
export const selectedNodes: Writable | null> = writable(null);
diff --git a/frontend/src/lib/graph-manager.ts b/frontend/src/lib/graph-manager.ts
index 1fa5ed8..4d34ea3 100644
--- a/frontend/src/lib/graph-manager.ts
+++ b/frontend/src/lib/graph-manager.ts
@@ -1,44 +1,14 @@
import { writable, type Writable } from "svelte/store";
-import type { Graph, NodeRegistry as INodeRegistry, NodeType, Node, Edge, Socket } from "./types";
+import { type Graph, type Node, type Edge, type Socket, type NodeRegistry, type RuntimeExecutor } from "./types";
import { HistoryManager } from "./history-manager";
-
-const nodeTypes: NodeType[] = [
- {
- id: "input/float",
- inputs: {
- "value": { type: "float", value: 0.1 },
- },
- outputs: ["float"],
- },
- {
- id: "math",
- inputs: {
- "type": { type: "select", options: ["add", "subtract", "multiply", "divide"], internal: true },
- "a": { type: "float", value: 0.2 },
- "b": { type: "float", value: 0.2 },
- },
- outputs: ["float"],
- },
- {
- id: "output",
- inputs: {
- "input": { type: "float" },
- },
- outputs: [],
- }
-]
-
-export class NodeRegistry implements INodeRegistry {
- getNode(id: string): NodeType | undefined {
- return nodeTypes.find((nodeType) => nodeType.id === id);
- }
-}
-
+import * as templates from "./graphs";
export class GraphManager {
status: Writable<"loading" | "idle" | "error"> = writable("loading");
+ graph: Graph = { nodes: [], edges: [] };
+
private _nodes: Map = new Map();
nodes: Writable