Files
2023-09-11 07:35:44 +07:00

69 lines
1.6 KiB
JavaScript

import { app } from "../../../scripts/app.js";
function concate_arr(arrays) {
let changed = true;
while (changed) {
changed = false;
for (let i = 0; i < arrays.length; i++) {
for (let j = i + 1; j < arrays.length; j++) {
if (arrays[i].some(val => arrays[j].includes(val))) {
arrays[i] = [...new Set([...arrays[i], ...arrays[j]])];
arrays.splice(j, 1);
changed = true;
break;
}
}
if (changed) {
break;
}
}
}
return arrays;
}
const ext = {
name: "julnodes.SoloMode",
init(app) {
window.addEventListener("keydown", (e) => {
if (e.key == "`") {
const selected_nodes = app.graph._nodes.filter(e => e.is_selected);
const _ia = app.graph.links.map(e => [e.origin_id, e.target_id]).filter(e => e != null)
const result = concate_arr(_ia);
if (selected_nodes.length <= 0) {
app.graph._nodes.forEach(e => e.changeMode(0));
return;
}
const selected_node_id = selected_nodes.map(e => e.id)[0];
const selected_ids = result.filter(e => e.includes(selected_node_id))[0]
for (const n of app.graph._nodes) {
n.changeMode(selected_ids.includes(n.id) ? 0 : 2)
}
}
})
},
setup(app) {
},
beforeRegisterNodeDef(nodeType) {
},
nodeCreated(node, app) {
}
};
app.registerExtension(ext);