this repo has no description
1import { Accessor, Setter } from "solid-js";
2import { NodeManager } from "../Mangers/NodeManager";
3import { PositionInfo } from "../renderer";
4import { Node } from "../structs/node";
5
6export let NodeContextMenu = ( clickedNode: Node, selectedNode: Accessor<Node[]>, setSelectedNode: Setter<Node[]> ) => [
7 {
8 text: "Delete Node",
9 clicked: ( _e: MouseEvent, _canvas: HTMLCanvasElement, _position: PositionInfo ) => {
10 clickedNode!.inputs.map(input => {
11 input.connections.map(partner => {
12 partner.connections = partner.connections.filter(x => x != input);
13 })
14 })
15
16 clickedNode!.outputs.map(output => {
17 output.connections.map(partner => {
18 partner.connections = partner.connections.filter(x => x != output);
19 })
20 })
21
22 let selected = selectedNode();
23 for (let i = 0; i < selected.length; i++) {
24 let node = selected[i];
25
26 if(node.id === clickedNode.id){
27 selected.splice(i, 1);
28 setSelectedNode(selected);
29
30 break;
31 }
32 }
33
34 NodeManager.Instance.RemoveNode(clickedNode!)
35 },
36 hovered: false
37 }
38]