66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
import { app } from "/scripts/app.js";
|
|
|
|
const COLOR_THEMES = {
|
|
core: { nodeColor: "#0F6B57", nodeBgColor: "#0D5949" },
|
|
high_level: { nodeColor: "#2e3e57", nodeBgColor: "#4b5b73" },
|
|
side_effect: { nodeColor: "#3e2e40", nodeBgColor: "#573647" },
|
|
logic: { nodeColor: "#6b4b0d", nodeBgColor: "#59430a" },
|
|
danger: { nodeColor: "#6b0d0d", nodeBgColor: "#591010" },
|
|
};
|
|
|
|
const NODE_COLORS = {
|
|
"__FunctionParam__": "core",
|
|
"__FunctionEnd__": "core",
|
|
"duanyll::CallClosure": "core",
|
|
"duanyll::CallClosureRemote": "core",
|
|
|
|
"duanyll::HighLevelMap": "high_level",
|
|
"duanyll::HighLevelMapIndexed": "high_level",
|
|
"duanyll::HighLevelComap": "high_level",
|
|
"duanyll::HighLevelNest": "high_level",
|
|
"duanyll::HighLevelNestWhile": "high_level",
|
|
"duanyll::HighLevelFold": "high_level",
|
|
"duanyll::HighLevelTakeWhile": "high_level",
|
|
"duanyll::HighLevelSelect": "high_level",
|
|
|
|
"__Sow__": "side_effect",
|
|
"__Reap__": "side_effect",
|
|
"__Inspect__": "side_effect",
|
|
"duanyll::Latch": "side_effect",
|
|
"duanyll::Sleep": "side_effect",
|
|
|
|
"duanyll::LogicalAnd": "logic",
|
|
"duanyll::LogicalOr": "logic",
|
|
"duanyll::IfCondition": "logic",
|
|
|
|
"duanyll::PythonExec": "danger",
|
|
};
|
|
|
|
function setNodeColors(node, theme) {
|
|
if (!theme) { return; }
|
|
if (theme.nodeColor) {
|
|
node.color = theme.nodeColor;
|
|
}
|
|
if (theme.nodeBgColor) {
|
|
node.bgcolor = theme.nodeBgColor;
|
|
}
|
|
if (theme.width) {
|
|
node.size = node.size || [140, 80];
|
|
node.size[0] = theme.width;
|
|
}
|
|
}
|
|
|
|
const ext = {
|
|
name: "duanyll.functional.appearance",
|
|
|
|
nodeCreated(node) {
|
|
const nclass = node.comfyClass;
|
|
if (NODE_COLORS.hasOwnProperty(nclass)) {
|
|
let colorKey = NODE_COLORS[nclass];
|
|
const theme = COLOR_THEMES[colorKey];
|
|
setNodeColors(node, theme);
|
|
}
|
|
}
|
|
};
|
|
|
|
app.registerExtension(ext); |