69 lines
1.6 KiB
JavaScript
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); |