this repo has no description
1import { Accessor } from "solid-js";
2import { NodeManager } from "./Mangers/NodeManager";
3import { Node } from "./structs/node";
4
5let isKeyDown: any = {};
6
7export let load = ( selectedNode: Accessor<Node | null> ) => {
8 // TODO: Keybind system
9 // TODO: Delete selected node when delete key is pressed
10 // TODO: Copy / paste
11 // TODO: Add undo / redo -ing
12
13 window.onkeydown = ( e ) => {
14 isKeyDown[e.key] = true;
15
16 console.log(e.key);
17
18 switch(e.key){
19 case 'Delete':
20 let node = selectedNode();
21 if(!node)return;
22
23 node.inputs.map(input => {
24 input.connections.map(partner => {
25 partner.connections = partner.connections.filter(x => x != input);
26 })
27 })
28
29 node.outputs.map(output => {
30 output.connections.map(partner => {
31 partner.connections = partner.connections.filter(x => x != output);
32 })
33 })
34
35 // TODO: If node is currently selected, deselect it.
36 NodeManager.Instance.RemoveNode(node);
37 break;
38 case 's':
39 if(e.ctrlKey){
40 let currentTab = NodeManager.Instance.CurrentTab();
41 if(!currentTab)return;
42
43 // Save
44 NodeManager.Instance.SaveTab(currentTab);
45 }
46 break;
47 case 'S':
48 if(e.ctrlKey){
49 let currentTab = NodeManager.Instance.CurrentTab();
50 if(!currentTab)return;
51
52 // Save
53 NodeManager.Instance.SaveTab(currentTab, true);
54 }
55 break;
56 }
57 }
58
59 window.onkeyup = ( e ) => {
60 isKeyDown[e.key] = false;
61 }
62}