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 } 74 } 75 76 window.onkeyup = ( e ) => { 77 isKeyDown[e.key] = false; 78 } 79}