diff --git a/Cargo.lock b/Cargo.lock index 7245610..170f91c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,8 +97,10 @@ name = "macros" version = "0.1.0" dependencies = [ "quote", + "serde", "serde_json", "syn 1.0.109", + "types", ] [[package]] @@ -224,9 +226,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" dependencies = [ "serde_derive", ] @@ -244,9 +246,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" dependencies = [ "proc-macro2", "quote", @@ -314,6 +316,14 @@ dependencies = [ "web-sys", ] +[[package]] +name = "types" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "unicode-ident" version = "1.0.12" diff --git a/Cargo.toml b/Cargo.toml index a0c8ee1..9fc8f10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["nodes/max/plantarium/*", "packages/macros", "packages/utils"] +members = ["nodes/max/plantarium/*", "packages/macros", "packages/types", "packages/utils"] [profile.release] diff --git a/app/package.json b/app/package.json index 1776ec0..48c913d 100644 --- a/app/package.json +++ b/app/package.json @@ -37,7 +37,7 @@ "@zerodevx/svelte-json-view": "^1.0.9", "histoire": "^0.17.17", "internal-ip": "^8.0.0", - "svelte": "^4.2.14", + "svelte": "^4.2.15", "svelte-check": "^3.6.9", "tslib": "^2.6.2", "typescript": "^5.4.5", diff --git a/app/src/lib/graph-interface/graph/Graph.svelte b/app/src/lib/graph-interface/graph/Graph.svelte index ead4ea0..b885e9d 100644 --- a/app/src/lib/graph-interface/graph/Graph.svelte +++ b/app/src/lib/graph-interface/graph/Graph.svelte @@ -514,9 +514,7 @@ } function handleKeyDown(event: KeyboardEvent) { - const bodyIsFocused = - document.activeElement === document.body || - document?.activeElement?.id === "graph"; + const bodyIsFocused = document?.activeElement?.nodeName !== "INPUT"; if (event.key === "l") { const activeNode = graph.getNode($activeNodeId); @@ -538,7 +536,7 @@ addMenuPosition = [mousePosition[0], mousePosition[1]]; } - if (event.key === ".") { + if (event.key === "." && bodyIsFocused) { const average = [0, 0]; for (const node of $nodes.values()) { average[0] += node.position[0]; diff --git a/app/src/lib/graph-interface/node/NodeParameter.svelte b/app/src/lib/graph-interface/node/NodeParameter.svelte index 1b8f623..c92466a 100644 --- a/app/src/lib/graph-interface/node/NodeParameter.svelte +++ b/app/src/lib/graph-interface/node/NodeParameter.svelte @@ -15,6 +15,8 @@ export let id: string; export let isLast = false; + const inputType = node?.tmp?.type?.inputs?.[id]!; + const socketId = `${node.id}-${id}`; const graph = getGraphManager(); @@ -75,8 +77,10 @@ > {#key id && graphId}
- - {#if node?.tmp?.type?.inputs?.[id]?.external !== true} + {#if inputType.label !== false} + + {/if} + {#if inputType.external !== true} {/if}
diff --git a/app/src/routes/+layout.svelte b/app/src/routes/+layout.svelte index ee5c896..343fca9 100644 --- a/app/src/routes/+layout.svelte +++ b/app/src/routes/+layout.svelte @@ -1,5 +1,5 @@ diff --git a/nodes/max/plantarium/math/src/lib.rs b/nodes/max/plantarium/math/src/lib.rs index 14d93c3..2230fff 100644 --- a/nodes/max/plantarium/math/src/lib.rs +++ b/nodes/max/plantarium/math/src/lib.rs @@ -10,8 +10,10 @@ pub fn execute(args: &[i32]) -> Vec { result.push(1); result.push(0); // encoding the [ bracket result.push(args[1] + 1); + result.push(0); // adding the node-type, math: 0 result.extend_from_slice(&args[2..]); + result.push(1); result.push(1); // closing bracket result.push(1); diff --git a/nodes/max/plantarium/vec3/src/input.json b/nodes/max/plantarium/vec3/src/input.json index ec5bba4..39858ab 100644 --- a/nodes/max/plantarium/vec3/src/input.json +++ b/nodes/max/plantarium/vec3/src/input.json @@ -4,13 +4,16 @@ ], "inputs": { "0": { - "type": "float" + "type": "float", + "label": false }, "1": { - "type": "float" + "type": "float", + "label": false }, "2": { - "type": "float" + "type": "float", + "label": false } } } diff --git a/packages/macros/Cargo.toml b/packages/macros/Cargo.toml index cbfc0a1..1f9d7a9 100644 --- a/packages/macros/Cargo.toml +++ b/packages/macros/Cargo.toml @@ -8,5 +8,7 @@ proc-macro = true [dependencies] syn = { version = "1.0", features = ["full"] } -serde_json = "1.0" +serde = { version = "1.0", features = ["derive"] } +serde_json = { version = "1.0", default-features = false, features = ["alloc"] } quote = "1.0" +types = { version = "0.1.0", path = "../types" } diff --git a/packages/macros/src/lib.rs b/packages/macros/src/lib.rs index 6db4c93..fc5c4b1 100644 --- a/packages/macros/src/lib.rs +++ b/packages/macros/src/lib.rs @@ -1,18 +1,18 @@ extern crate proc_macro; use proc_macro::TokenStream; use quote::quote; -use serde_json::Value; use std::env; use std::fs; use std::path::Path; use syn::{parse_macro_input, LitStr}; +use types::NodeType; #[proc_macro] pub fn define_node(input: TokenStream) -> TokenStream { let input_string = parse_macro_input!(input as LitStr).value(); // Validate JSON format - let json: Value = match serde_json::from_str(&input_string) { + let json: NodeType = match serde_json::from_str(&input_string) { Ok(json) => json, Err(e) => panic!("Invalid JSON input: {}", e), }; @@ -49,8 +49,8 @@ pub fn include_definition_file(input: TokenStream) -> TokenStream { }); // Optionally, validate that the content is valid JSON - let _: Value = serde_json::from_str(&json_content) - .unwrap_or_else(|_| panic!("JSON file contains invalid JSON")); + let _: NodeType = serde_json::from_str(&json_content) + .unwrap_or_else(|err| panic!("JSON file contains invalid JSON: {}", err)); // Generate the function that returns the JSON string let expanded = quote! { diff --git a/packages/node-registry/package.json b/packages/node-registry/package.json index eaea9d4..3d97ee4 100644 --- a/packages/node-registry/package.json +++ b/packages/node-registry/package.json @@ -24,7 +24,7 @@ "eslint-plugin-svelte": "^2.37.0", "prettier": "^3.2.5", "prettier-plugin-svelte": "^3.2.3", - "svelte": "^4.2.14", + "svelte": "^4.2.15", "svelte-check": "^3.6.9", "tslib": "^2.6.2", "typescript": "^5.4.5", diff --git a/packages/types/Cargo.toml b/packages/types/Cargo.toml new file mode 100644 index 0000000..00025ca --- /dev/null +++ b/packages/types/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "types" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +serde_json = { version = "1.0", default-features = false, features = ["alloc"] } diff --git a/packages/types/package.json b/packages/types/package.json index 94771ac..23d0414 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -2,7 +2,7 @@ "name": "@nodes/types", "version": "1.0.0", "description": "", - "main": "index.ts", + "main": "src/index.ts", "keywords": [], "author": "", "license": "ISC" diff --git a/packages/types/index.ts b/packages/types/src/index.ts similarity index 100% rename from packages/types/index.ts rename to packages/types/src/index.ts diff --git a/packages/types/inputs.ts b/packages/types/src/inputs.ts similarity index 97% rename from packages/types/inputs.ts rename to packages/types/src/inputs.ts index 01c3cc3..bd89a1e 100644 --- a/packages/types/inputs.ts +++ b/packages/types/src/inputs.ts @@ -35,7 +35,7 @@ type DefaultOptions = { internal?: boolean; external?: boolean; setting?: string; - label?: string; + label?: string | false; } type InputTypes = (NodeInputSeed | NodeInputBoolean | NodeInputFloat | NodeInputInteger | NodeInputSelect); diff --git a/packages/types/src/lib.rs b/packages/types/src/lib.rs new file mode 100644 index 0000000..8922cc9 --- /dev/null +++ b/packages/types/src/lib.rs @@ -0,0 +1,133 @@ +use serde::{Deserialize, Deserializer, Serialize}; +use serde_json::Value; +use std::collections::HashMap; + +#[derive(Serialize, Deserialize, Debug)] +#[serde(tag = "type")] +#[allow(non_camel_case_types)] +pub enum InputTypes { + float(NodeInputFloat), + integer(NodeInputInteger), + boolean(NodeInputBoolean), + select(NodeInputSelect), + seed(NodeInputSeed), + model(NodeInputModel), + plant(NodeInputPlant), + vec3(NodeInputVec3), +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputVec3 { + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option>, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputFloat { + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub min: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub max: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub step: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputInteger { + #[serde(skip_serializing_if = "Option::is_none")] + pub element: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub min: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub max: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputBoolean { + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputSelect { + pub labels: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputSeed { + #[serde(skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +// Assuming similar structure as other NodeInput types for Model and Plant +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputModel { + // Model-specific fields can be added here +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct NodeInputPlant { + // Plant-specific fields can be added here +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct DefaultOptions { + #[serde(skip_serializing_if = "Option::is_none")] + pub internal: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub external: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub setting: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub label: Option, // To handle both String and false +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(untagged)] +pub enum NodeTypeOrArray { + Single(InputTypes), + Multiple(Vec), +} + +#[derive(Debug, Serialize)] +pub struct NodeInput { + pub types: Vec, + pub options: DefaultOptions, +} + +impl<'de> Deserialize<'de> for NodeInput { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let raw_input: Value = Deserialize::deserialize(deserializer)?; + let options: DefaultOptions = + DefaultOptions::deserialize(&raw_input).map_err(serde::de::Error::custom)?; // Maps deserialization errors appropriately + + let types: Vec = match raw_input.get("type") { + Some(Value::String(single_type)) => vec![single_type.clone()], + Some(Value::Array(types)) => types + .iter() + .map(|t| t.as_str().unwrap_or("").to_owned()) + .collect(), + _ => return Err(serde::de::Error::custom("Invalid or missing 'type' field")), + }; + + Ok(NodeInput { types, options }) + } +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct NodeType { + #[serde(skip_serializing_if = "Option::is_none")] + pub inputs: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub outputs: Option>, +} + diff --git a/packages/types/parameters.ts b/packages/types/src/parameters.ts similarity index 100% rename from packages/types/parameters.ts rename to packages/types/src/parameters.ts diff --git a/packages/ui/package.json b/packages/ui/package.json index 49089f6..745f7c0 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -16,7 +16,8 @@ ".": { "types": "./dist/index.d.ts", "svelte": "./dist/index.js" - } + }, + "./app.css": "./dist/app.css" }, "files": [ "dist", @@ -37,7 +38,7 @@ "eslint": "^9.0.0", "eslint-plugin-svelte": "^2.37.0", "publint": "^0.2.7", - "svelte": "^4.2.14", + "svelte": "^4.2.15", "svelte-check": "^3.6.9", "tslib": "^2.6.2", "typescript": "^5.4.5", diff --git a/packages/ui/src/lib/Input.svelte b/packages/ui/src/lib/Input.svelte index d0f1994..27788c2 100644 --- a/packages/ui/src/lib/Input.svelte +++ b/packages/ui/src/lib/Input.svelte @@ -5,7 +5,6 @@ import Select from "$lib/elements/Select.svelte"; import type { NodeInput } from "@nodes/types"; - import Slider from "./elements/Slider.svelte"; export let input: NodeInput; export let value: any; @@ -13,11 +12,7 @@ {#if input.type === "float"} - {#if input?.element === "slider"} - - {:else} - - {/if} + {:else if input.type === "integer"} {:else if input.type === "boolean"} diff --git a/app/src/routes/app.css b/packages/ui/src/lib/app.css similarity index 100% rename from app/src/routes/app.css rename to packages/ui/src/lib/app.css diff --git a/packages/ui/src/lib/elements/Float.svelte b/packages/ui/src/lib/elements/Float.svelte index cb50167..96565db 100644 --- a/packages/ui/src/lib/elements/Float.svelte +++ b/packages/ui/src/lib/elements/Float.svelte @@ -1,20 +1,172 @@ - +
+ + +
diff --git a/packages/ui/src/lib/elements/Slider.svelte b/packages/ui/src/lib/elements/Slider.svelte deleted file mode 100644 index a17ee8c..0000000 --- a/packages/ui/src/lib/elements/Slider.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/packages/ui/src/lib/helpers/getBoundingValue.ts b/packages/ui/src/lib/helpers/getBoundingValue.ts new file mode 100644 index 0000000..33b8553 --- /dev/null +++ b/packages/ui/src/lib/helpers/getBoundingValue.ts @@ -0,0 +1,13 @@ +export function getBoundingValue(_v: number) { + const v = Math.abs(_v); + + let level = 1; + const levels = [1, 2, 4, 10, 20, 50, 100, 200, 300, 400, 500, 1000]; + + for (const l of levels) { + level = l; + if (l >= v) break; + } + + return _v >= 0 ? level : -level; +} diff --git a/packages/ui/src/routes/+page.svelte b/packages/ui/src/routes/+page.svelte index 0a45b69..fed7354 100644 --- a/packages/ui/src/routes/+page.svelte +++ b/packages/ui/src/routes/+page.svelte @@ -1,3 +1,7 @@ -

Welcome to your library project

-

Create your package using @sveltejs/package and preview/showcase your work with SvelteKit

-

Visit kit.svelte.dev to read the documentation

+ + + + diff --git a/packages/ui/static/fonts/fira-code-v22-latin-300.woff2 b/packages/ui/static/fonts/fira-code-v22-latin-300.woff2 new file mode 100644 index 0000000..ab6a0e5 Binary files /dev/null and b/packages/ui/static/fonts/fira-code-v22-latin-300.woff2 differ diff --git a/packages/ui/static/fonts/fira-code-v22-latin-600.woff2 b/packages/ui/static/fonts/fira-code-v22-latin-600.woff2 new file mode 100644 index 0000000..309e529 Binary files /dev/null and b/packages/ui/static/fonts/fira-code-v22-latin-600.woff2 differ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c760499..7be976b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,7 +18,7 @@ importers: version: link:../packages/utils '@sveltejs/kit': specifier: ^2.5.6 - version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) + version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) '@tauri-apps/api': specifier: 2.0.0-beta.2 version: 2.0.0-beta.2 @@ -27,13 +27,13 @@ importers: version: 2.0.0-beta.2 '@threlte/core': specifier: ^7.3.0 - version: 7.3.0(svelte@4.2.14)(three@0.163.0) + version: 7.3.0(svelte@4.2.15)(three@0.163.0) '@threlte/extras': specifier: ^8.11.2 - version: 8.11.2(@types/three@0.163.0)(svelte@4.2.14)(three@0.163.0) + version: 8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0) '@threlte/flex': specifier: ^1.0.2 - version: 1.0.2(svelte@4.2.14)(three@0.163.0) + version: 1.0.2(svelte@4.2.15)(three@0.163.0) '@types/three': specifier: ^0.163.0 version: 0.163.0 @@ -49,7 +49,7 @@ importers: devDependencies: '@histoire/plugin-svelte': specifier: ^0.17.17 - version: 0.17.17(histoire@0.17.17)(svelte@4.2.14)(vite@5.2.9) + version: 0.17.17(histoire@0.17.17)(svelte@4.2.15)(vite@5.2.9) '@nodes/types': specifier: link:../packages/types version: link:../packages/types @@ -58,7 +58,7 @@ importers: version: 3.0.1(@sveltejs/kit@2.5.6) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.14)(vite@5.2.9) + version: 3.1.0(svelte@4.2.15)(vite@5.2.9) '@tauri-apps/cli': specifier: 2.0.0-beta.3 version: 2.0.0-beta.3 @@ -67,7 +67,7 @@ importers: version: 5.0.4 '@zerodevx/svelte-json-view': specifier: ^1.0.9 - version: 1.0.9(svelte@4.2.14) + version: 1.0.9(svelte@4.2.15) histoire: specifier: ^0.17.17 version: 0.17.17(vite@5.2.9) @@ -75,11 +75,11 @@ importers: specifier: ^8.0.0 version: 8.0.0 svelte: - specifier: ^4.2.14 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 svelte-check: specifier: ^3.6.9 - version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.15) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -138,6 +138,10 @@ importers: nodes/max/plantarium/triangle/pkg: {} + nodes/max/plantarium/vec3: {} + + nodes/max/plantarium/vec3/pkg: {} + packages/node-registry: dependencies: '@nodes/utils': @@ -152,10 +156,10 @@ importers: version: 3.2.0(@sveltejs/kit@2.5.6) '@sveltejs/kit': specifier: ^2.5.6 - version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) + version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.14)(vite@5.2.9) + version: 3.1.0(svelte@4.2.15)(vite@5.2.9) '@types/eslint': specifier: ^8.56.9 version: 8.56.9 @@ -173,19 +177,19 @@ importers: version: 9.1.0(eslint@9.0.0) eslint-plugin-svelte: specifier: ^2.37.0 - version: 2.37.0(eslint@9.0.0)(svelte@4.2.14) + version: 2.37.0(eslint@9.0.0)(svelte@4.2.15) prettier: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.3 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.14) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) svelte: - specifier: ^4.2.14 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 svelte-check: specifier: ^3.6.9 - version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.15) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -215,13 +219,13 @@ importers: version: 3.2.0(@sveltejs/kit@2.5.6) '@sveltejs/kit': specifier: ^2.5.6 - version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) + version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) '@sveltejs/package': specifier: ^2.3.1 - version: 2.3.1(svelte@4.2.14)(typescript@5.4.5) + version: 2.3.1(svelte@4.2.15)(typescript@5.4.5) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.14)(vite@5.2.9) + version: 3.1.0(svelte@4.2.15)(vite@5.2.9) '@types/eslint': specifier: ^8.56.9 version: 8.56.9 @@ -236,16 +240,16 @@ importers: version: 9.0.0 eslint-plugin-svelte: specifier: ^2.37.0 - version: 2.37.0(eslint@9.0.0)(svelte@4.2.14) + version: 2.37.0(eslint@9.0.0)(svelte@4.2.15) publint: specifier: ^0.2.7 version: 0.2.7 svelte: - specifier: ^4.2.14 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 svelte-check: specifier: ^3.6.9 - version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.15) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -291,8 +295,8 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - /@codemirror/commands@6.3.3: - resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==} + /@codemirror/commands@6.4.0: + resolution: {integrity: sha512-HB3utD5GxCvEhSyj5EuG9KpuQQhFpxalh3lwrspyL/GeSNDe4c6JDxVzL12SJ+7gUknHjZzmq7OPCb9QPgiRmQ==} dependencies: '@codemirror/language': 6.10.1 '@codemirror/state': 6.4.1 @@ -584,7 +588,7 @@ packages: /@histoire/controls@0.17.17(vite@5.2.9): resolution: {integrity: sha512-W22HZ/X078IZmE09XEKj4Fq7LxQPP/w/aMYAzm94V2NIGhI0fkiSaBDvyTUl7NYrGT66Wq5+9Po1IWPMllk3cQ==} dependencies: - '@codemirror/commands': 6.3.3 + '@codemirror/commands': 6.4.0 '@codemirror/lang-json': 6.0.1 '@codemirror/language': 6.10.1 '@codemirror/lint': 6.5.0 @@ -597,7 +601,7 @@ packages: - vite dev: true - /@histoire/plugin-svelte@0.17.17(histoire@0.17.17)(svelte@4.2.14)(vite@5.2.9): + /@histoire/plugin-svelte@0.17.17(histoire@0.17.17)(svelte@4.2.15)(vite@5.2.9): resolution: {integrity: sha512-PEBe7uiwLJgxprc7ha5lCkxe0UrcMqDE0Lv2oR/6EIPXINpWyR7L2MkVnbCQVZv/SpYOJbfqv5+9jiWef6cP2A==} peerDependencies: histoire: ^0.17.17 @@ -611,7 +615,7 @@ packages: histoire: 0.17.17(vite@5.2.9) launch-editor: 2.6.1 pathe: 1.1.2 - svelte: 4.2.14 + svelte: 4.2.15 transitivePeerDependencies: - vite dev: true @@ -869,7 +873,7 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) + '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) import-meta-resolve: 4.0.0 dev: true @@ -878,10 +882,10 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) + '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) dev: true - /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9): + /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9): resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==} engines: {node: '>=18.13'} hasBin: true @@ -891,23 +895,23 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.9) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 4.3.2 esm-env: 1.0.0 import-meta-resolve: 4.0.0 kleur: 4.1.5 - magic-string: 0.30.9 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.14 + svelte: 4.2.15 tiny-glob: 0.2.9 vite: 5.2.9 - /@sveltejs/package@2.3.1(svelte@4.2.14)(typescript@5.4.5): + /@sveltejs/package@2.3.1(svelte@4.2.15)(typescript@5.4.5): resolution: {integrity: sha512-JvR2J4ost1oCn1CSdqenYRwGX/1RX+7LN+VZ71aPnz3JAlIFaEKQd1pBxlb+OSQTfeugJO0W39gB9voAbBO5ow==} engines: {node: ^16.14 || >=18} hasBin: true @@ -918,13 +922,13 @@ packages: kleur: 4.1.5 sade: 1.8.1 semver: 7.6.0 - svelte: 4.2.14 - svelte2tsx: 0.7.6(svelte@4.2.14)(typescript@5.4.5) + svelte: 4.2.15 + svelte2tsx: 0.7.6(svelte@4.2.15)(typescript@5.4.5) transitivePeerDependencies: - typescript dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9): + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9): resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -932,27 +936,27 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.9) debug: 4.3.4 - svelte: 4.2.14 + svelte: 4.2.15 vite: 5.2.9 transitivePeerDependencies: - supports-color - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.9): + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.9): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.14 - svelte-hmr: 0.16.0(svelte@4.2.14) + magic-string: 0.30.10 + svelte: 4.2.15 + svelte-hmr: 0.16.0(svelte@4.2.15) vite: 5.2.9 vitefu: 0.2.5(vite@5.2.9) transitivePeerDependencies: @@ -1096,25 +1100,25 @@ packages: - '@types/three' dev: false - /@threlte/core@7.3.0(svelte@4.2.14)(three@0.163.0): + /@threlte/core@7.3.0(svelte@4.2.15)(three@0.163.0): resolution: {integrity: sha512-yedstu5kcjV1/V1W0xNjkFQmL8A+n57NzjxBK+cPC1fdUtOvBtmOPxvOZ0b/TlhTyZM8XkEv4BiKrGibOrBzyA==} peerDependencies: svelte: '>=4' three: '>=0.152' dependencies: mitt: 3.0.1 - svelte: 4.2.14 + svelte: 4.2.15 three: 0.163.0 dev: false - /@threlte/extras@8.11.2(@types/three@0.163.0)(svelte@4.2.14)(three@0.163.0): + /@threlte/extras@8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0): resolution: {integrity: sha512-4wXIh47EoQbgjOrcbwiXFlQ3s4fPxW5x3OSfXEZgn8GGBdC8ZGdMhALyProe/6VeLhGa50uEn21vX7TcQYgn1w==} peerDependencies: svelte: '>=4' three: '>=0.152' dependencies: '@threejs-kit/instanced-sprite-mesh': 2.4.7(@types/three@0.163.0)(three@0.163.0) - svelte: 4.2.14 + svelte: 4.2.15 three: 0.163.0 three-mesh-bvh: 0.7.4(three@0.163.0) three-perf: 1.0.10(three@0.163.0) @@ -1123,14 +1127,14 @@ packages: - '@types/three' dev: false - /@threlte/flex@1.0.2(svelte@4.2.14)(three@0.163.0): + /@threlte/flex@1.0.2(svelte@4.2.15)(three@0.163.0): resolution: {integrity: sha512-Y87chYdzqhjrWpXaRjmulJX5LXhMLdWjXpR0dIytHg72muvWAbX5csKrBnJFSSMyrxthy2ZUKNrsfvymTqK8Zw==} peerDependencies: svelte: '>=4' three: '>=0.152' dependencies: mitt: 3.0.1 - svelte: 4.2.14 + svelte: 4.2.15 three: 0.163.0 yoga-layout: 2.0.1 dev: false @@ -1377,7 +1381,7 @@ packages: /@vitest/snapshot@1.5.0: resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} dependencies: - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -1397,12 +1401,12 @@ packages: pretty-format: 29.7.0 dev: true - /@zerodevx/svelte-json-view@1.0.9(svelte@4.2.14): + /@zerodevx/svelte-json-view@1.0.9(svelte@4.2.15): resolution: {integrity: sha512-2KKxBfDxEo7lM/kJSy+m1PdLAp5Q9c5nB6OYVBg7oWPdCLXB9JVH1Ytxn2hkqTn77m9MobqGI1fz9FFOTPONfA==} peerDependencies: svelte: ^3.57.0 || ^4.0.0 dependencies: - svelte: 4.2.14 + svelte: 4.2.15 dev: true /abab@2.0.6: @@ -1701,6 +1705,10 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true + /connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -1988,7 +1996,7 @@ packages: eslint: 9.0.0 dev: true - /eslint-plugin-svelte@2.37.0(eslint@9.0.0)(svelte@4.2.14): + /eslint-plugin-svelte@2.37.0(eslint@9.0.0)(svelte@4.2.15): resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: @@ -2010,8 +2018,8 @@ packages: postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-selector-parser: 6.0.16 semver: 7.6.0 - svelte: 4.2.14 - svelte-eslint-parser: 0.34.1(svelte@4.2.14) + svelte: 4.2.15 + svelte-eslint-parser: 0.34.1(svelte@4.2.15) transitivePeerDependencies: - supports-color - ts-node @@ -2721,10 +2729,6 @@ packages: hasBin: true dev: true - /jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - dev: true - /jsondiffpatch@0.6.0: resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2793,7 +2797,7 @@ packages: engines: {node: '>=14'} dependencies: mlly: 1.6.1 - pkg-types: 1.0.3 + pkg-types: 1.1.0 dev: true /locate-character@3.0.0: @@ -2839,6 +2843,11 @@ packages: three: 0.163.0 dev: false + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -2846,12 +2855,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.9: - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} peerDependencies: @@ -2976,7 +2979,7 @@ packages: dependencies: acorn: 8.11.3 pathe: 1.1.2 - pkg-types: 1.0.3 + pkg-types: 1.1.0 ufo: 1.5.3 dev: true @@ -3207,10 +3210,10 @@ packages: engines: {node: '>=8.6'} dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + /pkg-types@1.1.0: + resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} dependencies: - jsonc-parser: 3.2.1 + confbox: 0.1.7 mlly: 1.6.1 pathe: 1.1.2 dev: true @@ -3271,14 +3274,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.14): + /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15): resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: prettier: 3.2.5 - svelte: 4.2.14 + svelte: 4.2.15 dev: true /prettier@3.2.5: @@ -3605,7 +3608,7 @@ packages: has-flag: 4.0.0 dev: true - /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.14): + /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.15): resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} hasBin: true peerDependencies: @@ -3617,8 +3620,8 @@ packages: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.14 - svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) + svelte: 4.2.15 + svelte-preprocess: 5.1.4(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' @@ -3632,7 +3635,7 @@ packages: - sugarss dev: true - /svelte-eslint-parser@0.34.1(svelte@4.2.14): + /svelte-eslint-parser@0.34.1(svelte@4.2.15): resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3646,20 +3649,20 @@ packages: espree: 9.6.1 postcss: 8.4.38 postcss-scss: 4.0.9(postcss@8.4.38) - svelte: 4.2.14 + svelte: 4.2.15 dev: true - /svelte-hmr@0.16.0(svelte@4.2.14): + /svelte-hmr@0.16.0(svelte@4.2.15): resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.14 + svelte: 4.2.15 - /svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + /svelte-preprocess@5.1.4(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5): + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} requiresBuild: true peerDependencies: '@babel/core': ^7.10.2 @@ -3697,15 +3700,15 @@ packages: dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.9 + magic-string: 0.30.10 postcss: 8.4.38 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.14 + svelte: 4.2.15 typescript: 5.4.5 dev: true - /svelte2tsx@0.7.6(svelte@4.2.14)(typescript@5.4.5): + /svelte2tsx@0.7.6(svelte@4.2.15)(typescript@5.4.5): resolution: {integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 @@ -3713,12 +3716,12 @@ packages: dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.14 + svelte: 4.2.15 typescript: 5.4.5 dev: true - /svelte@4.2.14: - resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} + /svelte@4.2.15: + resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.3.0 @@ -3733,7 +3736,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.9 + magic-string: 0.30.10 periscopic: 3.1.0 /symbol-tree@3.2.4: @@ -4129,7 +4132,7 @@ packages: debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0