this repo has no description
1import { Accessor, Setter } from "solid-js";
2import { NodeManager } from "./Mangers/NodeManager";
3import { Node } from "./structs/node";
4import { readText, writeText } from "@tauri-apps/plugin-clipboard-manager";
5import { decodeNodeList, encodeNodeList } from "./utils/clipboard";
6
7let isKeyDown: any = {};
8
9export let load = ( mousePos: Accessor<[ number, number ]>, selectedNode: Accessor<Node[]>, setSelectedNode: Setter<Node[]> ) => {
10 // TODO: Add undo / redo -ing
11
12 window.onkeydown = async ( e ) => {
13 isKeyDown[e.key] = true;
14
15 switch(e.key){
16 case 'Delete':
17 let nodes = selectedNode();
18 for(let node of nodes){
19 node.inputs.map(input => {
20 input.connections.map(partner => {
21 partner.connections = partner.connections.filter(x => x != input);
22 })
23 })
24
25 node.outputs.map(output => {
26 output.connections.map(partner => {
27 partner.connections = partner.connections.filter(x => x != output);
28 })
29 })
30
31 NodeManager.Instance.RemoveNode(node);
32 }
33
34 setSelectedNode([]);
35 break;
36 case 's':
37 if(e.ctrlKey){
38 let currentTab = NodeManager.Instance.CurrentTab();
39 if(!currentTab)return;
40
41 // Save
42 NodeManager.Instance.SaveTab(currentTab);
43 }
44 break;
45 case 'S':
46 if(e.ctrlKey){
47 let currentTab = NodeManager.Instance.CurrentTab();
48 if(!currentTab)return;
49
50 // Save
51 NodeManager.Instance.SaveTab(currentTab, true);
52 }
53 break;
54 case 'c':
55 if(e.ctrlKey){
56 let nodes = selectedNode();
57 await writeText(encodeNodeList(nodes, mousePos()));
58 }
59 break;
60 case 'v':
61 if(e.ctrlKey){
62 let text = await readText();
63
64 let nodes = await decodeNodeList(text, mousePos());
65 if(!nodes)return;
66
67 for(let node of nodes)
68 NodeManager.Instance.AddNode(node);
69
70 setSelectedNode(nodes);
71 }
72 break;
73 case 'z':
74 if(e.ctrlKey){
75 console.log('undo');
76 }
77 break;
78 case 'y':
79 if(e.ctrlKey){
80 console.log('redo');
81 }
82 break;
83 }
84 }
85
86 window.onkeyup = ( e ) => {
87 isKeyDown[e.key] = false;
88 }
89}