chore: setup linting
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
<script lang="ts">
|
||||
import type { NodeInstance, NodeInput } from "@nodarium/types";
|
||||
import NestedSettings from "$lib/settings/NestedSettings.svelte";
|
||||
import type { GraphManager } from "$lib/graph-interface/graph-manager.svelte";
|
||||
import type { GraphManager } from '$lib/graph-interface/graph-manager.svelte';
|
||||
import NestedSettings from '$lib/settings/NestedSettings.svelte';
|
||||
import type { NodeId, NodeInput, NodeInstance } from '@nodarium/types';
|
||||
|
||||
type InternalNodeInput = NodeInput & {
|
||||
__node_type?: NodeId;
|
||||
__node_input: string;
|
||||
};
|
||||
|
||||
type Props = {
|
||||
manager: GraphManager;
|
||||
@@ -11,40 +16,44 @@
|
||||
const { manager, node = $bindable() }: Props = $props();
|
||||
|
||||
function filterInputs(inputs?: Record<string, NodeInput>) {
|
||||
const _inputs = $state.snapshot(inputs);
|
||||
const _inputs = $state.snapshot(
|
||||
inputs as Record<string, InternalNodeInput>
|
||||
);
|
||||
return Object.fromEntries(
|
||||
Object.entries(structuredClone(_inputs ?? {}))
|
||||
.filter(([_key, value]) => {
|
||||
.filter(([, value]) => {
|
||||
return value.hidden === true;
|
||||
})
|
||||
.map(([key, value]) => {
|
||||
//@ts-ignore
|
||||
value.__node_type = node.state?.type.id;
|
||||
//@ts-ignore
|
||||
value.__node_type = node.state.type?.id;
|
||||
value.__node_input = key;
|
||||
return [key, value];
|
||||
}),
|
||||
})
|
||||
);
|
||||
}
|
||||
const nodeDefinition = filterInputs(node.state?.type?.inputs);
|
||||
const nodeDefinition = filterInputs(node.state.type?.inputs);
|
||||
|
||||
type Store = Record<string, number | number[]>;
|
||||
let store = $state<Store>(createStore(node?.props, nodeDefinition));
|
||||
function createStore(
|
||||
props: NodeInstance["props"],
|
||||
inputs: Record<string, NodeInput>,
|
||||
props: NodeInstance['props'],
|
||||
inputs: Record<string, NodeInput>
|
||||
): Store {
|
||||
const store: Store = {};
|
||||
Object.keys(inputs).forEach((key) => {
|
||||
if (props) {
|
||||
//@ts-ignore
|
||||
store[key] = props[key] || inputs[key].value;
|
||||
const value = props[key] || inputs[key].value;
|
||||
if (Array.isArray(value) || typeof value === 'number') {
|
||||
store[key] = value;
|
||||
} else {
|
||||
console.error('Wrong error');
|
||||
}
|
||||
}
|
||||
});
|
||||
return store;
|
||||
}
|
||||
|
||||
let lastPropsHash = "";
|
||||
let lastPropsHash = '';
|
||||
function updateNode() {
|
||||
if (!node || !store) return;
|
||||
let needsUpdate = false;
|
||||
@@ -53,7 +62,10 @@
|
||||
const key = _key as keyof typeof store;
|
||||
if (node && store) {
|
||||
needsUpdate = true;
|
||||
node.props[key] = store[key];
|
||||
const value = store[key];
|
||||
if (value !== undefined) {
|
||||
node.props[key] = value;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user