this repo has no description
at main 2.4 kB view raw
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 = ( canvas: HTMLCanvasElement, mousePos: Accessor<[ number, number ]>, selectedNode: Accessor<Node[]>, setSelectedNode: Setter<Node[]> ) => { 10 // TODO: Add undo / redo -ing 11 12 canvas.onkeydown = async ( e ) => { 13 switch(e.key){ 14 case 'Delete': 15 let nodes = selectedNode(); 16 for(let node of nodes){ 17 node.inputs.map(input => { 18 input.connections.map(partner => { 19 partner.connections = partner.connections.filter(x => x != input); 20 }) 21 }) 22 23 node.outputs.map(output => { 24 output.connections.map(partner => { 25 partner.connections = partner.connections.filter(x => x != output); 26 }) 27 }) 28 29 NodeManager.Instance.RemoveNode(node); 30 } 31 32 setSelectedNode([]); 33 break; 34 } 35 } 36 37 window.onkeydown = async ( e ) => { 38 isKeyDown[e.key] = true; 39 40 switch(e.key){ 41 case 's': 42 if(e.ctrlKey){ 43 let currentTab = NodeManager.Instance.CurrentTab(); 44 if(!currentTab)return; 45 46 // Save 47 NodeManager.Instance.SaveTab(currentTab); 48 } 49 break; 50 case 'S': 51 if(e.ctrlKey){ 52 let currentTab = NodeManager.Instance.CurrentTab(); 53 if(!currentTab)return; 54 55 // Save 56 NodeManager.Instance.SaveTab(currentTab, true); 57 } 58 break; 59 case 'c': 60 if(e.ctrlKey){ 61 let nodes = selectedNode(); 62 await writeText(encodeNodeList(nodes, mousePos())); 63 } 64 break; 65 case 'v': 66 if(e.ctrlKey){ 67 let text = await readText(); 68 69 let nodes = await decodeNodeList(text, mousePos()); 70 if(!nodes)return; 71 72 for(let node of nodes) 73 NodeManager.Instance.AddNode(node); 74 75 setSelectedNode(nodes); 76 } 77 break; 78 case 'z': 79 if(e.ctrlKey){ 80 console.log('undo'); 81 } 82 break; 83 case 'y': 84 if(e.ctrlKey){ 85 console.log('redo'); 86 } 87 break; 88 } 89 } 90 91 window.onkeyup = ( e ) => { 92 isKeyDown[e.key] = false; 93 } 94}