-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathuse_everywhere_nodes.js
115 lines (107 loc) · 5.21 KB
/
use_everywhere_nodes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { handle_bypass, get_real_node } from "./use_everywhere_utilities.js";
const CONVERTED_TYPE = "converted-widget";
// import {CONVERTED_TYPE} from "../../extensions/core/widgetInputs.js"
/*
If a widget hasn't been converted, just get it's value
If it has, *try* to go upstream
*/
function get_widget_or_input_values(node_obj, widget_id) {
if (node_obj.widgets[widget_id]?.type.startsWith(CONVERTED_TYPE)) {
try {
const name = node_obj.widgets[widget_id].name;
const input = node_obj.inputs.find((input)=>input?.widget?.name==name);
const link = app.graph.links[input.link];
const upstream_node_obj = get_real_node(link.origin_id.toString());
//if (upstream_node_obj.widgets_values) return upstream_node_obj.widgets_values[0];
return upstream_node_obj.widgets[0].value;
} catch (error) {
return "NOT CONNECTED DONT MATCH";
}
}
return node_obj.widgets[widget_id].value;
}
function add_ue_from_node_in_group(ues, node, group_node_id, group_data) {
const group_node = get_real_node(group_node_id);
const ue_node = group_node.getInnerNodes()[node.index];
ue_node.in_group_with_data = group_data;
ue_node.getInnerNodesOfGroup = group_node.getInnerNodes;
add_ue_from_node(ues, ue_node)
}
/*
Add UseEverywhere broadcasts from this node to the list
*/
function add_ue_from_node(ues, node) {
if (node.type === "Seed Everywhere") ues.add_ue(node, -1, "INT", [node.id.toString(),0],
undefined, new RegExp("seed|随机种"), undefined, 5);
if (node.type === "Anything Everywhere?") {
const in_link = node?.inputs[0].link;
let type;
var link = undefined;
if (in_link) {
type = get_real_node(node.id.toString())?.input_type?.[0];
if (type) link = handle_bypass(app.graph.links[in_link], type);
} else if (node.in_group_with_data) {
const group_style_link = node.in_group_with_data.linksTo[node.index][0];
link = { "origin_id":node.getInnerNodesOfGroup()[group_style_link[0]].id, "origin_slot" : group_style_link[1] };
type = group_style_link[5];
}
if (link) {
const node_obj = get_real_node(node.id.toString());
const w0 = get_widget_or_input_values(node_obj,0);
const r0 = new RegExp(w0);
const w1 = get_widget_or_input_values(node_obj,1);
const r1 = (w1.startsWith('+')) ? w1 : new RegExp(w1);
const w2 = get_widget_or_input_values(node_obj,2);
const r2 = (w2 && w2!=".*") ? new RegExp(w2) : null;
ues.add_ue(node, 0, type, [link.origin_id.toString(), link.origin_slot], r0, r1, r2, 10);
}
}
if (node.type === "Prompts Everywhere") {
for (var i=0; i<2; i++) {
const in_link = node?.inputs[i].link;
let type;
var link = undefined;
if (in_link) {
type = get_real_node(node.id.toString())?.input_type[i];
link = handle_bypass(app.graph.links[in_link], type);
} else if (node.in_group_with_data) {
const group_style_link = node.in_group_with_data.linksTo[node.index][i];
link = { "origin_id":node.getInnerNodesOfGroup()[group_style_link[0]].id, "origin_slot" : group_style_link[1] };
type = group_style_link[5];
}
if (link) ues.add_ue(node, i, type, [link.origin_id.toString(), link.origin_slot],
undefined, new RegExp(["(_|\\b)pos(itive|_|\\b)|^prompt|正面","(_|\\b)neg(ative|_|\\b)|负面"][i]), undefined, 5);
}
}
if (node.type === "Anything Everywhere") {
const in_link = node?.inputs[0].link;
let type;
var link = undefined;
if (in_link) {
type = get_real_node(node.id.toString())?.input_type[0];
link = handle_bypass(app.graph.links[in_link], type);
} else if (node.in_group_with_data) {
const group_style_link = node.in_group_with_data.linksTo[node.index][0];
link = { "origin_id":node.getInnerNodesOfGroup()[group_style_link[0]].id, "origin_slot" : group_style_link[1] };
type = group_style_link[5];
}
if (link) ues.add_ue(node, 0, type, [link.origin_id.toString(), link.origin_slot], undefined, undefined, undefined, 2);
}
if (node.type === "Anything Everywhere3") {
for (var i=0; i<3; i++) {
const in_link = node?.inputs[i].link;
let type;
var link = undefined;
if (in_link) {
type = get_real_node(node.id.toString())?.input_type[i];
link = handle_bypass(app.graph.links[in_link],type);
} else if (node.in_group_with_data) {
const group_style_link = node.in_group_with_data.linksTo[node.index][i];
link = { "origin_id":node.getInnerNodesOfGroup()[group_style_link[0]].id, "origin_slot" : group_style_link[1] };
type = group_style_link[5];
}
if (link) ues.add_ue(node, i, type, [link.origin_id.toString(), link.origin_slot]);
}
}
}
export {add_ue_from_node, add_ue_from_node_in_group}