feat: improve help view
Some checks failed
Deploy to GitHub Pages / build_site (push) Failing after 1m24s

This commit is contained in:
max_richter 2024-04-26 19:04:54 +02:00
parent 9d1b631c32
commit 98a4e6e34d
20 changed files with 243 additions and 170 deletions

20
Cargo.lock generated
View File

@ -227,9 +227,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.80"
version = "1.0.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e"
checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
dependencies = [
"unicode-ident",
]
@ -320,14 +320,14 @@ checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.59",
"syn 2.0.60",
]
[[package]]
name = "serde_json"
version = "1.0.115"
version = "1.0.116"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
dependencies = [
"itoa",
"ryu",
@ -361,9 +361,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.59"
version = "2.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a"
checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
dependencies = [
"proc-macro2",
"quote",
@ -418,7 +418,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.59",
"syn 2.0.60",
"wasm-bindgen-shared",
]
@ -452,7 +452,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.59",
"syn 2.0.60",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@ -485,7 +485,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.59",
"syn 2.0.60",
]
[[package]]

View File

@ -16,11 +16,11 @@
"@threlte/core": "^7.3.0",
"@threlte/extras": "^8.11.2",
"@threlte/flex": "^1.0.2",
"@types/three": "^0.163.0",
"@types/three": "^0.164.0",
"@unocss/reset": "^0.59.4",
"comlink": "^4.4.1",
"jsondiffpatch": "^0.6.0",
"three": "^0.163.0"
"three": "^0.164.1"
},
"devDependencies": {
"@iconify-json/tabler": "^1.1.110",
@ -32,7 +32,7 @@
"@zerodevx/svelte-json-view": "^1.0.9",
"internal-ip": "^8.0.0",
"svelte": "^4.2.15",
"svelte-check": "^3.6.9",
"svelte-check": "^3.7.0",
"three-inspect": "^0.4.5",
"tslib": "^2.6.2",
"typescript": "^5.4.5",
@ -41,6 +41,6 @@
"vite-plugin-comlink": "^4.0.3",
"vite-plugin-glsl": "^1.3.0",
"vite-plugin-wasm": "^3.3.0",
"vitest": "^1.5.1"
"vitest": "^1.5.2"
}
}

View File

@ -1,16 +1,17 @@
<script lang="ts">
import type { Node, NodeRegistry } from "@nodes/types";
import type { NodeDefinition, NodeRegistry } from "@nodes/types";
import { onMount } from "svelte";
let mx = 0;
let my = 0;
let node: Node | undefined = undefined;
let node: NodeDefinition | undefined = undefined;
let input: string | undefined = undefined;
let wrapper: HTMLDivElement;
export let registry: NodeRegistry;
let width = 0;
function handleMouseOver(ev: MouseEvent) {
let target = ev.target as HTMLElement | null;
@ -18,7 +19,7 @@
my = ev.clientY;
if (!target) return;
const closest = target.closest("[data-node-type]");
const closest = target?.closest?.("[data-node-type]");
if (!closest) {
node = undefined;
@ -33,7 +34,7 @@
return;
}
node = registry.getNode(nodeType);
input = nodeInput;
input = nodeInput || undefined;
}
onMount(() => {
@ -47,16 +48,35 @@
<svelte:window on:mousemove={handleMouseOver} />
<div
class="help-wrapper"
class="help-wrapper p-4"
class:visible={node}
style="--my:{my}px; --mx:{mx}px;"
bind:clientWidth={width}
style="--my:{my}px; --mx:{Math.min(mx, window.innerWidth - width - 20)}px;"
bind:this={wrapper}
>
{#if node}
<p class="m-0 text-light opacity-40 flex items-center gap-3 mb-4">
<span class="i-tabler-help block w-4 h-4"></span>
{node?.id.split("/").at(-1) || "Help"}
{#if input}
{input}
{:else}
{node.id}
<span>> {input}</span>
{/if}
</p>
{#if node}
<div class="mb-4">
{#if input}
{node?.inputs?.[input]?.description || input}
{:else if node?.meta?.description}
{node?.meta?.description}
{:else}
<div class="text-xs opacity-30 mb-4">{node.id}</div>
{/if}
</div>
{#if !input}
<div>
<span class="i-tabler-arrow-right opacity-30">-></span>
{node?.outputs?.map((o) => o).join(", ") ?? "nothing"}
</div>
{/if}
{/if}
</div>
@ -66,13 +86,11 @@
position: fixed;
pointer-events: none;
transform: translate(var(--mx), var(--my));
background: red;
padding: 10px;
top: 0px;
left: 0px;
width: 50px;
height: 50px;
border: 1px solid black;
background: var(--layer-1);
border-radius: 5px;
top: 10px;
left: 10px;
border: 1px solid var(--outline);
z-index: 1000;
display: none;
}

View File

@ -197,7 +197,7 @@ export class GraphManager extends EventEmitter<{ "save": Graph, "result": any, "
for (const key in type.inputs) {
let settingId = type.inputs[key].setting;
if (settingId) {
settingTypes[settingId] = type.inputs[key];
settingTypes[settingId] = { __node_type: type.id, __node_input: key, ...type.inputs[key] };
if (settingValues[settingId] === undefined && "value" in type.inputs[key]) {
settingValues[settingId] = type.inputs[key].value;
}

View File

@ -673,6 +673,8 @@
});
function handleMouseUp(event: MouseEvent) {
if (!mouseDown) return;
const activeNode = manager.getNode($activeNodeId);
const clickedNodeId = getNodeIdFromEvent(event);
@ -870,7 +872,7 @@
});
</script>
<svelte:window on:mousemove={handleMouseMove} />
<svelte:window on:mousemove={handleMouseMove} on:mouseup={handleMouseUp} />
<div
on:wheel={handleMouseScroll}
@ -881,7 +883,6 @@
tabindex="0"
bind:clientWidth={width}
bind:clientHeight={height}
on:mouseup={handleMouseUp}
on:dragenter={handleDragEnter}
on:dragover={handlerDragOver}
on:dragexit={handleDragEnd}

View File

@ -36,12 +36,7 @@ export async function getNode(id: `${string}/${string}/${string}`) {
if (!definition) return null;
const { inputs, outputs } = definition;
try {
return { id, inputs, outputs }
} catch (e) {
console.log("Failed to parse input types for node", { id });
}
return definition;
}

View File

@ -36,7 +36,7 @@
let isRunning = false;
const task = useTask(() => {
let length = center.clone().sub(controls.target).length();
if (length < 0.01) {
if (length < 0.01 || !centerCamera) {
isRunning = false;
task.stop();
return;

View File

@ -2,13 +2,25 @@
import type { Node, NodeInput } from "@nodes/types";
import NestedSettings from "./NestedSettings.svelte";
import { writable } from "svelte/store";
import type { GraphManager } from "$lib/graph-interface/graph-manager";
export let manager: GraphManager;
export let node: Node | undefined;
function filterInputs(inputs: Record<string, NodeInput>) {
return Object.fromEntries(
Object.entries(inputs).filter(([key, value]) => {
return value.hidden === true;
}),
Object.entries(inputs)
.filter(([key, value]) => {
return value.hidden === true;
})
.map(([key, value]) => {
//@ts-ignore
value.__node_type = node?.tmp?.type.id;
//@ts-ignore
value.__node_input = key;
return [key, value];
}),
);
}
@ -26,14 +38,12 @@
return writable(store);
}
export let manager: GraphManager;
export let node: Node | undefined;
let nodeDefinition: Record<string, NodeInput> | undefined;
$: nodeDefinition = node?.tmp?.type
? filterInputs(node.tmp.type.inputs)
: undefined;
$: store = node ? createStore(node.props, nodeDefinition) : undefined;
$: console.log(nodeDefinition, store);
let lastPropsHash = "";
function updateNode() {

View File

@ -27,7 +27,6 @@
function isNodeInput(v: Input | Nested): v is Input {
return v && "type" in v;
}
console.log({ settings, store });
</script>
{#if $store}
@ -35,7 +34,11 @@
{@const value = settings[key]}
<div class="wrapper" class:first-level={depth === 0}>
{#if value !== undefined && isNodeInput(value)}
<div class="input input-{settings[key].type}">
<div
class="input input-{settings[key].type}"
data-node-type={value?.__node_type || null}
data-node-input={value?.__node_input || null}
>
{#if value.type === "button"}
<button on:click={() => value?.callback?.()}
>{value.label || key}</button

View File

@ -1,15 +1,20 @@
{
"id": "max/plantarium/branch",
"meta": {
"description": "Generates branches on a path"
},
"outputs": [
"path"
],
"inputs": {
"plant": {
"type": "path",
"description": "The path to place the branches on.",
"external": true
},
"length": {
"type": "float",
"description": "The length of the branches.",
"min": 0,
"max": 3,
"step": 0.05,
@ -17,6 +22,7 @@
},
"thickness": {
"type": "float",
"description": "The thickness of the branches.",
"min": 0,
"max": 1,
"step": 0.01,
@ -24,6 +30,7 @@
},
"offsetSingle": {
"type": "float",
"description": "Used to offset every second branch",
"min": 0,
"hidden": true,
"max": 1,
@ -33,6 +40,7 @@
"lowestBranch": {
"type": "float",
"hidden": true,
"description": "How low should the branches start. 0 is the bottom, 1 is the top.",
"min": 0,
"max": 1,
"step": 0.01,
@ -40,6 +48,7 @@
},
"highestBranch": {
"type": "float",
"description": "How high should the branches start. 0 is the bottom, 1 is the top.",
"hidden": true,
"min": 0,
"max": 1,
@ -55,12 +64,14 @@
},
"amount": {
"type": "integer",
"description": "The amount of branches to generate.",
"min": 0,
"max": 64,
"value": 10
},
"resolution_curve": {
"type": "integer",
"description": "The resolution of the curve.",
"value": 32,
"min": 3,
"max": 64,
@ -68,6 +79,7 @@
},
"rotation": {
"type": "float",
"description": "The rotation of the branches.",
"hidden": true,
"min": 0,
"max": 360,

View File

@ -1,11 +1,15 @@
{
"id": "max/plantarium/stem",
"meta": {
"description": "Creates a stem"
},
"outputs": [
"path"
],
"inputs": {
"origin": {
"type": "vec3",
"description": "The origin of the stem",
"value": [
0,
0,
@ -15,20 +19,24 @@
},
"amount": {
"type": "integer",
"description": "The amount of stems to produce",
"min": 1,
"max": 64,
"value": 1
},
"length": {
"type": "float",
"description": "How long the stem should be",
"value": 5
},
"thickness": {
"type": "float",
"description": "How thick the stem should be",
"value": 0.2
},
"resolution_curve": {
"type": "integer",
"description": "How many points along the length of the stem should be created",
"value": 32,
"min": 3,
"max": 64,

View File

@ -3,6 +3,12 @@
"version": "1.0.0",
"description": "",
"main": "src/index.ts",
"exports": {
".": {
"import": "./src/index.ts",
"require": "./src/index.ts"
}
},
"keywords": [],
"author": "",
"license": "ISC",

View File

@ -129,10 +129,22 @@ pub enum NodeInput {
path(NodeInputPath),
}
#[derive(Serialize, Deserialize)]
pub struct NodeDefinitionMeta {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct NodeDefinition {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub meta: Option<NodeDefinitionMeta>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inputs: Option<HashMap<String, NodeInput>>,

View File

@ -50,6 +50,7 @@ export type Socket = {
position: [number, number];
};
export type Edge = [Node, number, Node, string];
export type Graph = {

View File

@ -45,11 +45,11 @@
"histoire": "^0.17.17",
"publint": "^0.2.7",
"svelte": "^4.2.15",
"svelte-check": "^3.6.9",
"svelte-check": "^3.7.0",
"tslib": "^2.6.2",
"typescript": "^5.4.5",
"vite": "^5.2.10",
"vitest": "^1.5.1"
"vitest": "^1.5.2"
},
"svelte": "./dist/index.js",
"types": "./dist/index.d.ts",

View File

@ -52,7 +52,7 @@ body {
/* Secondary color */
--secondary-color: #6c757d;
--layer-0: var(--neutral-900);
--layer-0: var(--neutral-800);
--layer-1: var(--neutral-500);
--layer-2: var(--neutral-400);
--layer-3: var(--neutral-200);

View File

@ -8,6 +8,13 @@
export let max = 1;
export let id = "";
if (min > max) {
[min, max] = [max, min];
}
if (value > max) {
max = value;
}
function strip(input: number) {
return +parseFloat(input + "").toPrecision(2);
}

View File

@ -14,6 +14,6 @@
},
"devDependencies": {
"vite": "^5.2.10",
"vitest": "^1.5.1"
"vitest": "^1.5.2"
}
}

View File

@ -116,8 +116,8 @@ function createWrapper() {
var r1 = getInt32Memory0()[retptr / 4 + 1];
deferred1_0 = r0;
deferred1_1 = r1;
const string = getStringFromWasm0(r0, r1);
return JSON.parse(string) as NodeDefinition;
const rawDefinition = getStringFromWasm0(r0, r1);
return JSON.parse(rawDefinition) as NodeDefinition;
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);

View File

@ -21,16 +21,16 @@ importers:
version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)))(svelte@4.2.15)(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))
'@threlte/core':
specifier: ^7.3.0
version: 7.3.0(svelte@4.2.15)(three@0.163.0)
version: 7.3.0(svelte@4.2.15)(three@0.164.1)
'@threlte/extras':
specifier: ^8.11.2
version: 8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0)
version: 8.11.2(@types/three@0.164.0)(svelte@4.2.15)(three@0.164.1)
'@threlte/flex':
specifier: ^1.0.2
version: 1.0.2(svelte@4.2.15)(three@0.163.0)
version: 1.0.2(svelte@4.2.15)(three@0.164.1)
'@types/three':
specifier: ^0.163.0
version: 0.163.0
specifier: ^0.164.0
version: 0.164.0
'@unocss/reset':
specifier: ^0.59.4
version: 0.59.4
@ -41,8 +41,8 @@ importers:
specifier: ^0.6.0
version: 0.6.0
three:
specifier: ^0.163.0
version: 0.163.0
specifier: ^0.164.1
version: 0.164.1
devDependencies:
'@iconify-json/tabler':
specifier: ^1.1.110
@ -72,11 +72,11 @@ importers:
specifier: ^4.2.15
version: 4.2.15
svelte-check:
specifier: ^3.6.9
version: 3.6.9(@babel/core@7.24.4)(postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38))(postcss@8.4.38)(sass@1.75.0)(svelte@4.2.15)
specifier: ^3.7.0
version: 3.7.0(@babel/core@7.24.4)(postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38))(postcss@8.4.38)(sass@1.75.0)(svelte@4.2.15)
three-inspect:
specifier: ^0.4.5
version: 0.4.5(@types/three@0.163.0)(three@0.163.0)
version: 0.4.5(@types/three@0.164.0)(three@0.164.1)
tslib:
specifier: ^2.6.2
version: 2.6.2
@ -99,8 +99,8 @@ importers:
specifier: ^3.3.0
version: 3.3.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0))
vitest:
specifier: ^1.5.1
version: 1.5.1(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)
specifier: ^1.5.2
version: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)
nodes/max/plantarium/box: {}
@ -179,8 +179,8 @@ importers:
specifier: ^4.2.15
version: 4.2.15
svelte-check:
specifier: ^3.6.9
version: 3.6.9(@babel/core@7.24.4)(postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38))(postcss@8.4.38)(sass@1.75.0)(svelte@4.2.15)
specifier: ^3.7.0
version: 3.7.0(@babel/core@7.24.4)(postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38))(postcss@8.4.38)(sass@1.75.0)(svelte@4.2.15)
tslib:
specifier: ^2.6.2
version: 2.6.2
@ -191,8 +191,8 @@ importers:
specifier: ^5.2.10
version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
vitest:
specifier: ^1.5.1
version: 1.5.1(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)
specifier: ^1.5.2
version: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)
packages/utils:
dependencies:
@ -204,8 +204,8 @@ importers:
specifier: ^5.2.10
version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
vitest:
specifier: ^1.5.1
version: 1.5.1(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)
specifier: ^1.5.2
version: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)
packages:
@ -970,8 +970,8 @@ packages:
'@types/stats.js@0.17.3':
resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==}
'@types/three@0.163.0':
resolution: {integrity: sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==}
'@types/three@0.164.0':
resolution: {integrity: sha512-SFDofn9dJVrE+1DKta7xj7lc4ru7B3S3yf10NsxOserW57aQlB6GxtAS1UK5To3LfEMN5HUHMu3n5v+M5rApgA==}
'@types/webxr@0.5.15':
resolution: {integrity: sha512-nC9116Gd4N+CqTxqo6gvCfhAMAzgRcfS8ZsciNodHq8uwW4JCVKwhagw8yN0XmC7mHrLnWqniJpoVEiR+72Drw==}
@ -1120,20 +1120,20 @@ packages:
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
'@vitest/expect@1.5.1':
resolution: {integrity: sha512-w3Bn+VUMqku+oWmxvPhTE86uMTbfmBl35aGaIPlwVW7Q89ZREC/icfo2HBsEZ3AAW6YR9lObfZKPEzstw9tJOQ==}
'@vitest/expect@1.5.2':
resolution: {integrity: sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==}
'@vitest/runner@1.5.1':
resolution: {integrity: sha512-mt372zsz0vFR7L1xF/ert4t+teD66oSuXoTyaZbl0eJgilvyzCKP1tJ21gVa8cDklkBOM3DLnkE1ljj/BskyEw==}
'@vitest/runner@1.5.2':
resolution: {integrity: sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==}
'@vitest/snapshot@1.5.1':
resolution: {integrity: sha512-h/1SGaZYXmjn6hULRBOlqam2z4oTlEe6WwARRzLErAPBqljAs6eX7tfdyN0K+MpipIwSZ5sZsubDWkCPAiVXZQ==}
'@vitest/snapshot@1.5.2':
resolution: {integrity: sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==}
'@vitest/spy@1.5.1':
resolution: {integrity: sha512-vsqczk6uPJjmPLy6AEtqfbFqgLYcGBe9BTY+XL8L6y8vrGOhyE23CJN9P/hPimKXnScbqiZ/r/UtUSOQ2jIDGg==}
'@vitest/spy@1.5.2':
resolution: {integrity: sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==}
'@vitest/utils@1.5.1':
resolution: {integrity: sha512-92pE17bBXUxA0Y7goPcvnATMCuq4NQLOmqsG0e2BtzRi7KLwZB5jpiELi/8ybY8IQNWemKjSD5rMoO7xTdv8ug==}
'@vitest/utils@1.5.2':
resolution: {integrity: sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==}
'@zerodevx/svelte-json-view@1.0.9':
resolution: {integrity: sha512-2KKxBfDxEo7lM/kJSy+m1PdLAp5Q9c5nB6OYVBg7oWPdCLXB9JVH1Ytxn2hkqTn77m9MobqGI1fz9FFOTPONfA==}
@ -1598,8 +1598,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
electron-to-chromium@1.4.747:
resolution: {integrity: sha512-+FnSWZIAvFHbsNVmUxhEqWiaOiPMcfum1GQzlWCg/wLigVtshOsjXHyEFfmt6cFK6+HkS3QOJBv6/3OPumbBfw==}
electron-to-chromium@1.4.749:
resolution: {integrity: sha512-LRMMrM9ITOvue0PoBrvNIraVmuDbJV5QC9ierz/z5VilMdPOVMjOtpICNld3PuXuTZ3CHH/UPxX9gHhAPwi+0Q==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -2820,8 +2820,8 @@ packages:
resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
engines: {node: '>=8'}
react-is@18.2.0:
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
react-is@18.3.0:
resolution: {integrity: sha512-wRiUsea88TjKDc4FBEn+sLvIDesp6brMbGWnJGjew2waAc9evdhja/2LvePc898HJbHw0L+MTWy7NhpnELAvLQ==}
read-pkg-up@7.0.1:
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
@ -3128,8 +3128,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
svelte-check@3.6.9:
resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==}
svelte-check@3.7.0:
resolution: {integrity: sha512-Va6sGL4Vy4znn0K+vaatk98zoBvG2aDee4y3r5X4S80z8DXfbACHvdLlyXa4C4c5tQzK9H0Uq2pbd20wH3ucjQ==}
hasBin: true
peerDependencies:
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
@ -3203,8 +3203,8 @@ packages:
peerDependencies:
svelte: ^4.0.0
svelte2tsx@0.7.6:
resolution: {integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==}
svelte2tsx@0.7.7:
resolution: {integrity: sha512-HAIxtk5TUHXvCRKApKfxoh1BGT85S/17lS3DvbfxRKFd+Ghr5YScqBvd+sU+p7vJFw48LNkzdFk+ooNVk3e4kA==}
peerDependencies:
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
typescript: ^4.9.4 || ^5.0.0
@ -3243,8 +3243,8 @@ packages:
peerDependencies:
three: '>=0.151'
three@0.163.0:
resolution: {integrity: sha512-HlMgCb2TF/dTLRtknBnjUTsR8FsDqBY43itYop2+Zg822I+Kd0Ua2vs8CvfBVefXkBdNDrLMoRTGCIIpfCuDew==}
three@0.164.1:
resolution: {integrity: sha512-iC/hUBbl1vzFny7f5GtqzVXYjMJKaTPxiCxXfrvVdBi1Sf+jhd1CAkitiFwC7mIBFCo3MrDLJG97yisoaWig0w==}
time-span@5.1.0:
resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
@ -3464,8 +3464,8 @@ packages:
engines: {node: '>=v14.18.0'}
hasBin: true
vite-node@1.5.1:
resolution: {integrity: sha512-HNpfV7BrAsjkYVNWIcPleJwvJmydJqqJRrRbpoQ/U7QDwJKyEzNa4g5aYg8MjXJyKsk29IUCcMLFRcsEvqUIsA==}
vite-node@1.5.2:
resolution: {integrity: sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@ -3522,15 +3522,15 @@ packages:
vite:
optional: true
vitest@1.5.1:
resolution: {integrity: sha512-3GvBMpoRnUNbZRX1L3mJCv3Ou3NAobb4dM48y8k9ZGwDofePpclTOyO+lqJFKSQpubH1V8tEcAEw/Y3mJKGJQQ==}
vitest@1.5.2:
resolution: {integrity: sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0
'@vitest/browser': 1.5.1
'@vitest/ui': 1.5.1
'@vitest/browser': 1.5.2
'@vitest/ui': 1.5.2
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@ -4482,7 +4482,7 @@ snapshots:
sade: 1.8.1
semver: 7.6.0
svelte: 4.2.15
svelte2tsx: 0.7.6(svelte@4.2.15)(typescript@5.4.5)
svelte2tsx: 0.7.7(svelte@4.2.15)(typescript@5.4.5)
transitivePeerDependencies:
- typescript
@ -4509,39 +4509,39 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@threejs-kit/instanced-sprite-mesh@2.4.7(@types/three@0.163.0)(three@0.163.0)':
'@threejs-kit/instanced-sprite-mesh@2.4.7(@types/three@0.164.0)(three@0.164.1)':
dependencies:
diet-sprite: 0.0.1
earcut: 2.2.4
maath: 0.10.7(@types/three@0.163.0)(three@0.163.0)
three: 0.163.0
three-instanced-uniforms-mesh: 0.49.1(three@0.163.0)
troika-three-utils: 0.49.0(three@0.163.0)
maath: 0.10.7(@types/three@0.164.0)(three@0.164.1)
three: 0.164.1
three-instanced-uniforms-mesh: 0.49.1(three@0.164.1)
troika-three-utils: 0.49.0(three@0.164.1)
transitivePeerDependencies:
- '@types/three'
'@threlte/core@7.3.0(svelte@4.2.15)(three@0.163.0)':
'@threlte/core@7.3.0(svelte@4.2.15)(three@0.164.1)':
dependencies:
mitt: 3.0.1
svelte: 4.2.15
three: 0.163.0
three: 0.164.1
'@threlte/extras@8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0)':
'@threlte/extras@8.11.2(@types/three@0.164.0)(svelte@4.2.15)(three@0.164.1)':
dependencies:
'@threejs-kit/instanced-sprite-mesh': 2.4.7(@types/three@0.163.0)(three@0.163.0)
'@threejs-kit/instanced-sprite-mesh': 2.4.7(@types/three@0.164.0)(three@0.164.1)
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)
troika-three-text: 0.49.1(three@0.163.0)
three: 0.164.1
three-mesh-bvh: 0.7.4(three@0.164.1)
three-perf: 1.0.10(three@0.164.1)
troika-three-text: 0.49.1(three@0.164.1)
transitivePeerDependencies:
- '@types/three'
'@threlte/flex@1.0.2(svelte@4.2.15)(three@0.163.0)':
'@threlte/flex@1.0.2(svelte@4.2.15)(three@0.164.1)':
dependencies:
mitt: 3.0.1
svelte: 4.2.15
three: 0.163.0
three: 0.164.1
yoga-layout: 2.0.1
'@tootallnate/once@2.0.0': {}
@ -4604,7 +4604,7 @@ snapshots:
'@types/stats.js@0.17.3': {}
'@types/three@0.163.0':
'@types/three@0.164.0':
dependencies:
'@tweenjs/tween.js': 23.1.1
'@types/stats.js': 0.17.3
@ -4853,29 +4853,29 @@ snapshots:
transitivePeerDependencies:
- rollup
'@vitest/expect@1.5.1':
'@vitest/expect@1.5.2':
dependencies:
'@vitest/spy': 1.5.1
'@vitest/utils': 1.5.1
'@vitest/spy': 1.5.2
'@vitest/utils': 1.5.2
chai: 4.4.1
'@vitest/runner@1.5.1':
'@vitest/runner@1.5.2':
dependencies:
'@vitest/utils': 1.5.1
'@vitest/utils': 1.5.2
p-limit: 5.0.0
pathe: 1.1.2
'@vitest/snapshot@1.5.1':
'@vitest/snapshot@1.5.2':
dependencies:
magic-string: 0.30.10
pathe: 1.1.2
pretty-format: 29.7.0
'@vitest/spy@1.5.1':
'@vitest/spy@1.5.2':
dependencies:
tinyspy: 2.2.1
'@vitest/utils@1.5.1':
'@vitest/utils@1.5.2':
dependencies:
diff-sequences: 29.6.3
estree-walker: 3.0.3
@ -5023,7 +5023,7 @@ snapshots:
browserslist@4.23.0:
dependencies:
caniuse-lite: 1.0.30001612
electron-to-chromium: 1.4.747
electron-to-chromium: 1.4.749
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
@ -5054,9 +5054,9 @@ snapshots:
camelcase@5.3.1: {}
camera-controls@2.8.3(three@0.163.0):
camera-controls@2.8.3(three@0.164.1):
dependencies:
three: 0.163.0
three: 0.164.1
caniuse-lite@1.0.30001612: {}
@ -5371,7 +5371,7 @@ snapshots:
ee-first@1.1.1: {}
electron-to-chromium@1.4.747: {}
electron-to-chromium@1.4.749: {}
emoji-regex@8.0.0: {}
@ -6361,10 +6361,10 @@ snapshots:
dependencies:
yallist: 4.0.0
maath@0.10.7(@types/three@0.163.0)(three@0.163.0):
maath@0.10.7(@types/three@0.164.0)(three@0.164.1):
dependencies:
'@types/three': 0.163.0
three: 0.163.0
'@types/three': 0.164.0
three: 0.164.1
magic-string@0.30.10:
dependencies:
@ -6734,7 +6734,7 @@ snapshots:
dependencies:
'@jest/schemas': 29.6.3
ansi-styles: 5.2.0
react-is: 18.2.0
react-is: 18.3.0
pseudomap@1.0.2: {}
@ -6754,7 +6754,7 @@ snapshots:
quick-lru@4.0.1: {}
react-is@18.2.0: {}
react-is@18.3.0: {}
read-pkg-up@7.0.1:
dependencies:
@ -7087,7 +7087,7 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
svelte-check@3.6.9(@babel/core@7.24.4)(postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38))(postcss@8.4.38)(sass@1.75.0)(svelte@4.2.15):
svelte-check@3.7.0(@babel/core@7.24.4)(postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38))(postcss@8.4.38)(sass@1.75.0)(svelte@4.2.15):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
chokidar: 3.6.0
@ -7165,7 +7165,7 @@ snapshots:
tweakpane: 4.0.3
tweakpane-plugin-waveform: 1.0.0(tweakpane@4.0.3)
svelte2tsx@0.7.6(svelte@4.2.15)(typescript@5.4.5):
svelte2tsx@0.7.7(svelte@4.2.15)(typescript@5.4.5):
dependencies:
dedent-js: 1.0.1
pascal-case: 3.1.2
@ -7195,39 +7195,39 @@ snapshots:
text-table@0.2.0: {}
three-inspect@0.4.5(@types/three@0.163.0)(three@0.163.0):
three-inspect@0.4.5(@types/three@0.164.0)(three@0.164.1):
dependencies:
'@changesets/cli': 2.27.1
'@floating-ui/dom': 1.6.3
'@mdi/js': 7.4.47
'@threlte/core': 7.3.0(svelte@4.2.15)(three@0.163.0)
'@threlte/extras': 8.11.2(@types/three@0.163.0)(svelte@4.2.15)(three@0.163.0)
camera-controls: 2.8.3(three@0.163.0)
'@threlte/core': 7.3.0(svelte@4.2.15)(three@0.164.1)
'@threlte/extras': 8.11.2(@types/three@0.164.0)(svelte@4.2.15)(three@0.164.1)
camera-controls: 2.8.3(three@0.164.1)
flexible-tree: 0.1.6
svelte: 4.2.15
svelte-splitpanes: 0.8.0(svelte@4.2.15)
svelte-tweakpane-ui: 1.2.4(svelte@4.2.15)
three: 0.163.0
three-perf: 1.0.10(three@0.163.0)
three: 0.164.1
three-perf: 1.0.10(three@0.164.1)
transitivePeerDependencies:
- '@types/three'
three-instanced-uniforms-mesh@0.49.1(three@0.163.0):
three-instanced-uniforms-mesh@0.49.1(three@0.164.1):
dependencies:
three: 0.163.0
troika-three-utils: 0.49.0(three@0.163.0)
three: 0.164.1
troika-three-utils: 0.49.0(three@0.164.1)
three-mesh-bvh@0.7.4(three@0.163.0):
three-mesh-bvh@0.7.4(three@0.164.1):
dependencies:
three: 0.163.0
three: 0.164.1
three-perf@1.0.10(three@0.163.0):
three-perf@1.0.10(three@0.164.1):
dependencies:
three: 0.163.0
troika-three-text: 0.47.2(three@0.163.0)
three: 0.164.1
troika-three-text: 0.47.2(three@0.164.1)
tweakpane: 3.1.10
three@0.163.0: {}
three@0.164.1: {}
time-span@5.1.0:
dependencies:
@ -7274,29 +7274,29 @@ snapshots:
trim-newlines@3.0.1: {}
troika-three-text@0.47.2(three@0.163.0):
troika-three-text@0.47.2(three@0.164.1):
dependencies:
bidi-js: 1.0.3
three: 0.163.0
troika-three-utils: 0.47.2(three@0.163.0)
three: 0.164.1
troika-three-utils: 0.47.2(three@0.164.1)
troika-worker-utils: 0.47.2
webgl-sdf-generator: 1.1.1
troika-three-text@0.49.1(three@0.163.0):
troika-three-text@0.49.1(three@0.164.1):
dependencies:
bidi-js: 1.0.3
three: 0.163.0
troika-three-utils: 0.49.0(three@0.163.0)
three: 0.164.1
troika-three-utils: 0.49.0(three@0.164.1)
troika-worker-utils: 0.49.0
webgl-sdf-generator: 1.1.1
troika-three-utils@0.47.2(three@0.163.0):
troika-three-utils@0.47.2(three@0.164.1):
dependencies:
three: 0.163.0
three: 0.164.1
troika-three-utils@0.49.0(three@0.163.0):
troika-three-utils@0.49.0(three@0.164.1):
dependencies:
three: 0.163.0
three: 0.164.1
troika-worker-utils@0.47.2: {}
@ -7478,7 +7478,7 @@ snapshots:
- supports-color
- terser
vite-node@1.5.1(@types/node@20.12.7)(sass@1.75.0):
vite-node@1.5.2(@types/node@20.12.7)(sass@1.75.0):
dependencies:
cac: 6.7.14
debug: 4.3.4
@ -7528,13 +7528,13 @@ snapshots:
optionalDependencies:
vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
vitest@1.5.1(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0):
vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0):
dependencies:
'@vitest/expect': 1.5.1
'@vitest/runner': 1.5.1
'@vitest/snapshot': 1.5.1
'@vitest/spy': 1.5.1
'@vitest/utils': 1.5.1
'@vitest/expect': 1.5.2
'@vitest/runner': 1.5.2
'@vitest/snapshot': 1.5.2
'@vitest/spy': 1.5.2
'@vitest/utils': 1.5.2
acorn-walk: 8.3.2
chai: 4.4.1
debug: 4.3.4
@ -7548,7 +7548,7 @@ snapshots:
tinybench: 2.8.0
tinypool: 0.8.4
vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)
vite-node: 1.5.1(@types/node@20.12.7)(sass@1.75.0)
vite-node: 1.5.2(@types/node@20.12.7)(sass@1.75.0)
why-is-node-running: 2.2.2
optionalDependencies:
'@types/node': 20.12.7