mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-08-20 16:16:41 +08:00
52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
import { getConnectedOutputNodesAndFilterPassThroughs } from "../utils.js";
|
|
export let SERVICE;
|
|
const OWNED_PREFIX = "+";
|
|
const REGEX_PREFIX = /^[\+⚠️]\s*/;
|
|
const REGEX_EMPTY_INPUT = /^\+\s*$/;
|
|
export function stripContextInputPrefixes(name) {
|
|
return name.replace(REGEX_PREFIX, "");
|
|
}
|
|
export function getContextOutputName(inputName) {
|
|
if (inputName === "base_ctx")
|
|
return "CONTEXT";
|
|
return stripContextInputPrefixes(inputName).toUpperCase();
|
|
}
|
|
export var InputMutationOperation;
|
|
(function (InputMutationOperation) {
|
|
InputMutationOperation[InputMutationOperation["UNKNOWN"] = 0] = "UNKNOWN";
|
|
InputMutationOperation[InputMutationOperation["ADDED"] = 1] = "ADDED";
|
|
InputMutationOperation[InputMutationOperation["REMOVED"] = 2] = "REMOVED";
|
|
InputMutationOperation[InputMutationOperation["RENAMED"] = 3] = "RENAMED";
|
|
})(InputMutationOperation || (InputMutationOperation = {}));
|
|
export class ContextService {
|
|
constructor() {
|
|
if (SERVICE) {
|
|
throw new Error("ContextService was already instantiated.");
|
|
}
|
|
}
|
|
onInputChanges(node, mutation) {
|
|
const childCtxs = getConnectedOutputNodesAndFilterPassThroughs(node, node, 0);
|
|
for (const childCtx of childCtxs) {
|
|
childCtx.handleUpstreamMutation(mutation);
|
|
}
|
|
}
|
|
getDynamicContextInputsData(node) {
|
|
return node
|
|
.getContextInputsList()
|
|
.map((input, index) => ({
|
|
name: stripContextInputPrefixes(input.name),
|
|
type: String(input.type),
|
|
index,
|
|
}))
|
|
.filter((i) => i.type !== "*");
|
|
}
|
|
getDynamicContextOutputsData(node) {
|
|
return node.outputs.map((output, index) => ({
|
|
name: stripContextInputPrefixes(output.name),
|
|
type: String(output.type),
|
|
index,
|
|
}));
|
|
}
|
|
}
|
|
SERVICE = new ContextService();
|