feat: track images with git lfs

This commit is contained in:
max_richter 2024-04-04 19:17:27 +02:00
parent 5f2b2f59be
commit 9776b5a84a
193 changed files with 3295 additions and 4620 deletions

2579
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,6 @@
[workspace] [workspace]
resolver = "2" resolver = "2"
members = [ members = ["app/src-tauri", "nodes/max/plantarium/*", "packages/plantarium"]
"packages/runtime_executor_rust",
"nodes/add",
"nodes/subtract",
"frontend/src-tauri",
"packages/node_registry_rust", "nodes/multiply", "packages/node_registry_server",
]
[profile.release] [profile.release]
lto = true lto = true

View File

@ -1,5 +1,5 @@
{ {
"name": "frontend", "name": "@nodes/app",
"private": true, "private": true,
"version": "0.0.0", "version": "0.0.0",
"type": "module", "type": "module",
@ -13,6 +13,7 @@
"story:preview": "histoire preview" "story:preview": "histoire preview"
}, },
"dependencies": { "dependencies": {
"@nodes/input-elements": "link:../packages/input-elements",
"@sveltejs/kit": "^2.5.0", "@sveltejs/kit": "^2.5.0",
"@tauri-apps/api": "2.0.0-beta.2", "@tauri-apps/api": "2.0.0-beta.2",
"@tauri-apps/plugin-shell": "^2.0.0-beta.0", "@tauri-apps/plugin-shell": "^2.0.0-beta.0",
@ -20,13 +21,16 @@
"@threlte/extras": "^8.7.5", "@threlte/extras": "^8.7.5",
"@threlte/flex": "^1.0.1", "@threlte/flex": "^1.0.1",
"@types/three": "^0.159.0", "@types/three": "^0.159.0",
"input-elements": "link:../packages/input-elements",
"jsondiffpatch": "^0.6.0", "jsondiffpatch": "^0.6.0",
"meshline": "^3.2.0", "meshline": "^3.2.0",
"plantarium-nodes-math": "link:../nodes/math/pkg",
"three": "^0.159.0", "three": "^0.159.0",
"three.meshline": "^1.4.0" "three.meshline": "^1.4.0"
}, },
"devDependencies": { "devDependencies": {
"@histoire/plugin-svelte": "^0.17.9", "@histoire/plugin-svelte": "^0.17.9",
"@nodes/types": "link:../packages/types",
"@sveltejs/adapter-static": "^3.0.1", "@sveltejs/adapter-static": "^3.0.1",
"@sveltejs/vite-plugin-svelte": "^3.0.1", "@sveltejs/vite-plugin-svelte": "^3.0.1",
"@tauri-apps/cli": "2.0.0-beta.3", "@tauri-apps/cli": "2.0.0-beta.3",
@ -38,7 +42,8 @@
"svelte-check": "^3.4.6", "svelte-check": "^3.4.6",
"tslib": "^2.6.0", "tslib": "^2.6.0",
"typescript": "^5.0.2", "typescript": "^5.0.2",
"vite": "^5.0.0", "vite": "^5.1.4",
"vite-plugin-glsl": "^1.2.1" "vite-plugin-glsl": "^1.2.1",
"vite-plugin-wasm": "^3.3.0"
} }
} }

View File

@ -16,7 +16,6 @@ tauri-build = { version = "2.0.0-beta", features = [] }
[dependencies] [dependencies]
tauri = { version = "2.0.0-beta", features = [] } tauri = { version = "2.0.0-beta", features = [] }
runtime_executor_rust = { path = "../../packages/runtime_executor_rust" }
tauri-plugin-shell = "2.0.0-beta" tauri-plugin-shell = "2.0.0-beta"
serde_json = "1.0" serde_json = "1.0"
wasmtime = "18.0.1" wasmtime = "18.0.1"

File diff suppressed because one or more lines are too long

View File

@ -11,6 +11,13 @@
} }
] ]
}, },
{
"description": "A list of capabilities.",
"type": "array",
"items": {
"$ref": "#/definitions/Capability"
}
},
{ {
"description": "A list of capabilities.", "description": "A list of capabilities.",
"type": "object", "type": "object",
@ -34,8 +41,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"identifier", "identifier",
"permissions", "permissions"
"windows"
], ],
"properties": { "properties": {
"identifier": { "identifier": {
@ -85,15 +91,11 @@
} }
}, },
"platforms": { "platforms": {
"description": "Target platforms this capability applies. By default all platforms applies.", "description": "Target platforms this capability applies. By default all platforms are affected by this capability.",
"default": [ "type": [
"linux", "array",
"macOS", "null"
"windows",
"android",
"iOS"
], ],
"type": "array",
"items": { "items": {
"$ref": "#/definitions/Target" "$ref": "#/definitions/Target"
} }
@ -108,7 +110,7 @@
], ],
"properties": { "properties": {
"urls": { "urls": {
"description": "Remote domains this capability refers to. Can use glob patterns.", "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n# Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -139,6 +141,12 @@
"properties": { "properties": {
"identifier": { "identifier": {
"oneOf": [ "oneOf": [
{
"type": "string",
"enum": [
"shell:default"
]
},
{ {
"description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.",
"type": "string", "type": "string",
@ -204,7 +212,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"args", "args",
"command", "cmd",
"name", "name",
"sidecar" "sidecar"
], ],
@ -217,7 +225,7 @@
} }
] ]
}, },
"command": { "cmd": {
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"type": "string" "type": "string"
}, },
@ -239,7 +247,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"args", "args",
"command", "cmd",
"name", "name",
"sidecar" "sidecar"
], ],
@ -252,7 +260,7 @@
} }
] ]
}, },
"command": { "cmd": {
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"type": "string" "type": "string"
}, },
@ -415,6 +423,83 @@
"event:deny-unlisten" "event:deny-unlisten"
] ]
}, },
{
"description": "image:default -> Default permissions for the plugin.",
"type": "string",
"enum": [
"image:default"
]
},
{
"description": "image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-from-bytes"
]
},
{
"description": "image:allow-from-path -> Enables the from_path command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-from-path"
]
},
{
"description": "image:allow-new -> Enables the new command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-new"
]
},
{
"description": "image:allow-rgba -> Enables the rgba command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-rgba"
]
},
{
"description": "image:allow-size -> Enables the size command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-size"
]
},
{
"description": "image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-from-bytes"
]
},
{
"description": "image:deny-from-path -> Denies the from_path command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-from-path"
]
},
{
"description": "image:deny-new -> Denies the new command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-new"
]
},
{
"description": "image:deny-rgba -> Denies the rgba command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-rgba"
]
},
{
"description": "image:deny-size -> Denies the size command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-size"
]
},
{ {
"description": "menu:default -> Default permissions for the plugin.", "description": "menu:default -> Default permissions for the plugin.",
"type": "string", "type": "string",
@ -870,6 +955,12 @@
"resources:deny-close" "resources:deny-close"
] ]
}, },
{
"type": "string",
"enum": [
"shell:default"
]
},
{ {
"description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.",
"type": "string", "type": "string",
@ -933,6 +1024,13 @@
"tray:default" "tray:default"
] ]
}, },
{
"description": "tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:allow-get-by-id"
]
},
{ {
"description": "tray:allow-new -> Enables the new command without any pre-configured scope.", "description": "tray:allow-new -> Enables the new command without any pre-configured scope.",
"type": "string", "type": "string",
@ -940,6 +1038,13 @@
"tray:allow-new" "tray:allow-new"
] ]
}, },
{
"description": "tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:allow-remove-by-id"
]
},
{ {
"description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", "description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.",
"type": "string", "type": "string",
@ -996,6 +1101,13 @@
"tray:allow-set-visible" "tray:allow-set-visible"
] ]
}, },
{
"description": "tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:deny-get-by-id"
]
},
{ {
"description": "tray:deny-new -> Denies the new command without any pre-configured scope.", "description": "tray:deny-new -> Denies the new command without any pre-configured scope.",
"type": "string", "type": "string",
@ -1003,6 +1115,13 @@
"tray:deny-new" "tray:deny-new"
] ]
}, },
{
"description": "tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:deny-remove-by-id"
]
},
{ {
"description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", "description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.",
"type": "string", "type": "string",

View File

@ -11,6 +11,13 @@
} }
] ]
}, },
{
"description": "A list of capabilities.",
"type": "array",
"items": {
"$ref": "#/definitions/Capability"
}
},
{ {
"description": "A list of capabilities.", "description": "A list of capabilities.",
"type": "object", "type": "object",
@ -34,8 +41,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"identifier", "identifier",
"permissions", "permissions"
"windows"
], ],
"properties": { "properties": {
"identifier": { "identifier": {
@ -85,15 +91,11 @@
} }
}, },
"platforms": { "platforms": {
"description": "Target platforms this capability applies. By default all platforms applies.", "description": "Target platforms this capability applies. By default all platforms are affected by this capability.",
"default": [ "type": [
"linux", "array",
"macOS", "null"
"windows",
"android",
"iOS"
], ],
"type": "array",
"items": { "items": {
"$ref": "#/definitions/Target" "$ref": "#/definitions/Target"
} }
@ -108,7 +110,7 @@
], ],
"properties": { "properties": {
"urls": { "urls": {
"description": "Remote domains this capability refers to. Can use glob patterns.", "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n# Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -139,6 +141,12 @@
"properties": { "properties": {
"identifier": { "identifier": {
"oneOf": [ "oneOf": [
{
"type": "string",
"enum": [
"shell:default"
]
},
{ {
"description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.",
"type": "string", "type": "string",
@ -204,7 +212,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"args", "args",
"command", "cmd",
"name", "name",
"sidecar" "sidecar"
], ],
@ -217,7 +225,7 @@
} }
] ]
}, },
"command": { "cmd": {
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"type": "string" "type": "string"
}, },
@ -239,7 +247,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"args", "args",
"command", "cmd",
"name", "name",
"sidecar" "sidecar"
], ],
@ -252,7 +260,7 @@
} }
] ]
}, },
"command": { "cmd": {
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"type": "string" "type": "string"
}, },
@ -415,6 +423,83 @@
"event:deny-unlisten" "event:deny-unlisten"
] ]
}, },
{
"description": "image:default -> Default permissions for the plugin.",
"type": "string",
"enum": [
"image:default"
]
},
{
"description": "image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-from-bytes"
]
},
{
"description": "image:allow-from-path -> Enables the from_path command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-from-path"
]
},
{
"description": "image:allow-new -> Enables the new command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-new"
]
},
{
"description": "image:allow-rgba -> Enables the rgba command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-rgba"
]
},
{
"description": "image:allow-size -> Enables the size command without any pre-configured scope.",
"type": "string",
"enum": [
"image:allow-size"
]
},
{
"description": "image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-from-bytes"
]
},
{
"description": "image:deny-from-path -> Denies the from_path command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-from-path"
]
},
{
"description": "image:deny-new -> Denies the new command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-new"
]
},
{
"description": "image:deny-rgba -> Denies the rgba command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-rgba"
]
},
{
"description": "image:deny-size -> Denies the size command without any pre-configured scope.",
"type": "string",
"enum": [
"image:deny-size"
]
},
{ {
"description": "menu:default -> Default permissions for the plugin.", "description": "menu:default -> Default permissions for the plugin.",
"type": "string", "type": "string",
@ -870,6 +955,12 @@
"resources:deny-close" "resources:deny-close"
] ]
}, },
{
"type": "string",
"enum": [
"shell:default"
]
},
{ {
"description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.",
"type": "string", "type": "string",
@ -933,6 +1024,13 @@
"tray:default" "tray:default"
] ]
}, },
{
"description": "tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:allow-get-by-id"
]
},
{ {
"description": "tray:allow-new -> Enables the new command without any pre-configured scope.", "description": "tray:allow-new -> Enables the new command without any pre-configured scope.",
"type": "string", "type": "string",
@ -940,6 +1038,13 @@
"tray:allow-new" "tray:allow-new"
] ]
}, },
{
"description": "tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:allow-remove-by-id"
]
},
{ {
"description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", "description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.",
"type": "string", "type": "string",
@ -996,6 +1101,13 @@
"tray:allow-set-visible" "tray:allow-set-visible"
] ]
}, },
{
"description": "tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:deny-get-by-id"
]
},
{ {
"description": "tray:deny-new -> Denies the new command without any pre-configured scope.", "description": "tray:deny-new -> Denies the new command without any pre-configured scope.",
"type": "string", "type": "string",
@ -1003,6 +1115,13 @@
"tray:deny-new" "tray:deny-new"
] ]
}, },
{
"description": "tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.",
"type": "string",
"enum": [
"tray:deny-remove-by-id"
]
},
{ {
"description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", "description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.",
"type": "string", "type": "string",

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 974 B

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

Before

Width:  |  Height:  |  Size: 903 B

After

Width:  |  Height:  |  Size: 903 B

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -6,9 +6,8 @@
import { onMount, setContext } from "svelte"; import { onMount, setContext } from "svelte";
import Camera from "../Camera.svelte"; import Camera from "../Camera.svelte";
import GraphView from "./GraphView.svelte"; import GraphView from "./GraphView.svelte";
import type { Node, Node as NodeType } from "$lib/types"; import type { Node, Node as NodeType, Socket } from "@nodes/types";
import FloatingEdge from "../edges/FloatingEdge.svelte"; import FloatingEdge from "../edges/FloatingEdge.svelte";
import type { Socket } from "$lib/types";
import { import {
activeNodeId, activeNodeId,
activeSocket, activeSocket,

View File

@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import type { Edge as EdgeType, Node as NodeType } from "$lib/types"; import type { Edge as EdgeType, Node as NodeType } from "@nodes/types";
import { HTML } from "@threlte/extras"; import { HTML } from "@threlte/extras";
import Edge from "../edges/Edge.svelte"; import Edge from "../edges/Edge.svelte";
import Node from "../node/Node.svelte"; import Node from "../node/Node.svelte";

View File

@ -1,5 +1,5 @@
import { browser } from "$app/environment"; import { browser } from "$app/environment";
import type { Socket } from "$lib/types"; import type { Socket } from "@nodes/types";
import { writable, type Writable } from "svelte/store"; import { writable, type Writable } from "svelte/store";
import { Color } from "three/src/math/Color.js"; import { Color } from "three/src/math/Color.js";

View File

@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import type { Node } from "$lib/types"; import type { Node } from "@nodes/types";
import { getContext, onMount } from "svelte"; import { getContext, onMount } from "svelte";
import NodeHeader from "./NodeHeader.svelte"; import NodeHeader from "./NodeHeader.svelte";
import NodeParameter from "./NodeParameter.svelte"; import NodeParameter from "./NodeParameter.svelte";

View File

@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { createNodePath } from "$lib/helpers"; import { createNodePath } from "$lib/helpers";
import type { Node, Socket } from "$lib/types"; import type { Node, Socket } from "@nodes/types";
import { getContext } from "svelte"; import { getContext } from "svelte";
export let node: Node; export let node: Node;

View File

@ -0,0 +1,21 @@
<script lang="ts">
import type { Node, NodeInput } from "@nodes/types";
import { getGraphManager } from "../graph/context";
import Input from "@nodes/input-elements";
export let node: Node;
export let input: NodeInput;
export let id: string;
const graph = getGraphManager();
let value = node?.props?.[id] ?? input.value;
$: if (node?.props?.[id] !== value) {
node.props = { ...node.props, [id]: value };
graph.execute();
}
</script>
<label for="asd">{id}</label>
<Input {input} bind:value />

View File

@ -1,6 +1,5 @@
<script lang="ts"> <script lang="ts">
import type { NodeInput as NodeInputType, Socket } from "$lib/types"; import type { NodeInput as NodeInputType, Socket, Node } from "@nodes/types";
import type { Node } from "$lib/types";
import { getContext } from "svelte"; import { getContext } from "svelte";
import { createNodePath } from "$lib/helpers"; import { createNodePath } from "$lib/helpers";
import { possibleSocketIds } from "../graph/stores"; import { possibleSocketIds } from "../graph/stores";

View File

@ -1,5 +1,5 @@
import { writable, type Writable } from "svelte/store"; import { writable, type Writable } from "svelte/store";
import { type Graph, type Node, type Edge, type Socket, type NodeRegistry, type RuntimeExecutor, } from "./types"; import type { Graph, Node, Edge, Socket, NodeRegistry, RuntimeExecutor, } from "@nodes/s";
import { HistoryManager } from "./history-manager"; import { HistoryManager } from "./history-manager";
import * as templates from "./graphs"; import * as templates from "./graphs";
import EventEmitter from "./helpers/EventEmitter"; import EventEmitter from "./helpers/EventEmitter";

View File

@ -1,4 +1,4 @@
import type { Graph } from "$lib/types"; import type { Graph } from "@nodes/types";
export function grid(width: number, height: number) { export function grid(width: number, height: number) {

View File

@ -1,4 +1,4 @@
import type { Graph, Node } from "$lib/types"; import type { Graph, Node } from "@nodes/types";
export function tree(depth: number): Graph { export function tree(depth: number): Graph {

View File

@ -1,5 +1,5 @@
import { create, type Delta } from "jsondiffpatch"; import { create, type Delta } from "jsondiffpatch";
import type { Graph } from "./types"; import type { Graph } from "@nodes/types";
import { createLogger, clone } from "./helpers"; import { createLogger, clone } from "./helpers";

View File

@ -0,0 +1,39 @@
import type { NodeRegistry, NodeType } from "@nodes/types";
import * as d from "plantarium-nodes-math";
const nodeTypes: NodeType[] = [
{
id: "input/float",
inputs: {
"value": { type: "float", value: 0.1, internal: true },
},
outputs: ["float"],
execute: ({ value }) => { return value }
},
{
id: d.get_id(),
inputs: JSON.parse(d.get_input_types()),
outputs: d.get_outputs(),
execute: ({ op_type, a, b }) => {
return d.execute(op_type, a, b);
}
},
{
id: "output",
inputs: {
"input": { type: "float" },
},
outputs: [],
}
]
export class MemoryNodeRegistry implements NodeRegistry {
getNode(id: string): NodeType | undefined {
return nodeTypes.find((nodeType) => nodeType.id === id);
}
getAllNodes(): NodeType[] {
return [...nodeTypes];
}
}

View File

@ -1,11 +1,10 @@
import type { Graph, NodeRegistry, NodeType, RuntimeExecutor } from "./types"; import type { Graph, NodeRegistry, NodeType, RuntimeExecutor } from "@nodes/types";
export class MemoryRuntimeExecutor implements RuntimeExecutor { export class MemoryRuntimeExecutor implements RuntimeExecutor {
constructor(private registry: NodeRegistry) { } constructor(private registry: NodeRegistry) { }
private getNodeTypes(graph: Graph) { private getNodeTypes(graph: Graph) {
const typeMap = new Map<string, NodeType>(); const typeMap = new Map<string, NodeType>();
for (const node of graph.nodes) { for (const node of graph.nodes) {
if (!typeMap.has(node.type)) { if (!typeMap.has(node.type)) {
@ -16,12 +15,9 @@ export class MemoryRuntimeExecutor implements RuntimeExecutor {
} }
} }
return typeMap; return typeMap;
} }
addMetaData(graph: Graph) { private addMetaData(graph: Graph) {
// First, lets check if all nodes have a type // First, lets check if all nodes have a type
const typeMap = this.getNodeTypes(graph); const typeMap = this.getNodeTypes(graph);

View File

@ -5,7 +5,7 @@
import { MemoryRuntimeExecutor } from "$lib/runtime-executor"; import { MemoryRuntimeExecutor } from "$lib/runtime-executor";
import { MemoryNodeRegistry } from "$lib/node-registry"; import { MemoryNodeRegistry } from "$lib/node-registry";
import { LinearSRGBColorSpace } from "three"; import { LinearSRGBColorSpace } from "three";
import Details from "$lib/elements/Details.svelte"; import Details from "$lib/components/Details.svelte";
import { JsonView } from "@zerodevx/svelte-json-view"; import { JsonView } from "@zerodevx/svelte-json-view";
const nodeRegistry = new MemoryNodeRegistry(); const nodeRegistry = new MemoryNodeRegistry();
@ -37,7 +37,7 @@
<br /> <br />
<button <button
on:click={() => on:click={() =>
graphManager.load(graphManager.createTemplate("grid", 10, 10))} graphManager.load(graphManager.createTemplate("grid", 3, 3))}
>load grid</button >load grid</button
> >
<br /> <br />

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,9 +1,10 @@
import { sveltekit } from '@sveltejs/kit/vite' import { sveltekit } from '@sveltejs/kit/vite'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import glsl from "vite-plugin-glsl"; import glsl from "vite-plugin-glsl";
import wasm from "vite-plugin-wasm";
export default defineConfig({ export default defineConfig({
plugins: [sveltekit(), glsl()], plugins: [sveltekit(), glsl(), wasm()],
ssr: { ssr: {
noExternal: ['three'], noExternal: ['three'],
} }

View File

@ -1,15 +0,0 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
[*.js]
indent_style = space
indent_size = 2
[{package.json,*.yml,*.cjson}]
indent_style = space
indent_size = 2

View File

@ -1,3 +0,0 @@
dist
.output
node-modules

View File

@ -1,5 +0,0 @@
{
"extends": [
"@nuxtjs/eslint-config-typescript"
]
}

7
backend/.gitignore vendored
View File

@ -1,7 +0,0 @@
node_modules
*.log*
.nitro
.cache
.output
.env
dist

View File

@ -1,2 +0,0 @@
shamefully-hoist=true
strict-peer-dependencies=false

View File

@ -1,42 +0,0 @@
# Nitro Minimal Starter
Look at the [Nitro documentation](https://nitro.unjs.io/) to learn more.
## Setup
Make sure to install the dependencies:
```bash
# npm
npm install
# yarn
yarn install
# pnpm
pnpm install
```
## Development Server
Start the development server on <http://localhost:3000>
```bash
npm run dev
```
## Production
Build the application for production:
```bash
npm run build
```
Locally preview production build:
```bash
npm run preview
```
Check out the [deployment documentation](https://nitro.unjs.io/deploy) for more information.

View File

@ -1,2 +0,0 @@
//https://nitro.unjs.io/config
export default defineNitroConfig({});

Some files were not shown because too many files have changed in this diff Show More