Create flipstreamviewer.js
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { app } from "../../../scripts/app.js";
|
||||
import { api } from "../../../scripts/api.js";
|
||||
|
||||
app.registerExtension({
|
||||
name: "FlipStreamViewer.RunOnce",
|
||||
async setup() {
|
||||
api.addEventListener("FlipStreamViewer_run_once", async () => {
|
||||
await api.interrupt();
|
||||
await api.fetchApi("/queue", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ clear: true }),
|
||||
});
|
||||
await app.queuePrompt(0, 1);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
app.registerExtension({
|
||||
name: "FlipStreamViewer.FlipStreamChatJson",
|
||||
async beforeRegisterNodeDef(t, d) {
|
||||
const config = {
|
||||
"FlipStreamGet": { in: 0, out: 2, range: 20, iname:'label', oname:'value', useo: true },
|
||||
"FlipStreamChatJson": { in: 9, out: 3, range: 20, iname:'label', oname:'value', useo: true },
|
||||
"FlipStreamTextConcat": { in: 2, out: 1, range: 20, iname:'text', oname:'', useo: false }
|
||||
};
|
||||
const CFG = config[d.name];
|
||||
if (!CFG) return;
|
||||
|
||||
const sync = (n) => {
|
||||
const w = n.widgets;
|
||||
if (CFG.useo) {
|
||||
while (n.outputs.length > w.length + CFG.out - CFG.in) {
|
||||
if (n.outputs.length < CFG.out || n.outputs[n.outputs.length - 1]?.links?.length) break;
|
||||
n.removeOutput(n.outputs.length - 1);
|
||||
n.outputs_dirty = true;
|
||||
}
|
||||
}
|
||||
if (w.length < CFG.in + CFG.range && (w.at(-1)?.value || n.inputs[w.length - 1]?.link !== null)) {
|
||||
if (CFG.useo) {
|
||||
n.addOutput(`${CFG.oname}${w.length - CFG.in}`, "*");
|
||||
n.outputs_dirty = true;
|
||||
}
|
||||
const inputName = `${CFG.iname}${w.length - CFG.in}`;
|
||||
n.addWidget("string", inputName, "", () => {}, { forceInput: true });
|
||||
n.inputs_dirty = true;
|
||||
}
|
||||
while (w.length > CFG.in + 1 && (!w.at(-1).value && n.inputs[w.length - 1]?.link === null) && (!w.at(-2).value && n.inputs[w.length - 2]?.link === null)) {
|
||||
if (n.outputs[w.length + CFG.out - CFG.in - 1]?.links?.length) break;
|
||||
if (CFG.useo) {
|
||||
n.removeOutput(w.length + CFG.out - CFG.in - 1);
|
||||
n.outputs_dirty = true;
|
||||
}
|
||||
w.pop();
|
||||
n.inputs_dirty = true;
|
||||
}
|
||||
n.setSize(n.computeSize());
|
||||
};
|
||||
|
||||
t.prototype.onNodeCreated = function() { sync(this); };
|
||||
t.prototype.onWidgetChanged = function() { sync(this); };
|
||||
t.prototype.onConnectionsChange = function(type, slot, connected, info) { sync(this);};
|
||||
|
||||
t.prototype.onConfigure = function(c) {
|
||||
c.widgets_values.forEach((v, i) => { if (this.widgets[i]) this.widgets[i].value = v; sync(this);});
|
||||
};
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user