mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-08-20 07:23:29 +08:00
108 lines
4.1 KiB
TypeScript
108 lines
4.1 KiB
TypeScript
/**
|
|
* This used to augment the LiteGraph types, either to fix them for how they actually behave
|
|
* (e.g. marking args that are typed as required as optional because they actually are, etc.) or
|
|
* adding properties/methods that rgthree-comfy adds/uses. Mostly the latter are prefixed 'rgthree_'
|
|
* but not always.
|
|
*/
|
|
import "@comfyorg/frontend";
|
|
|
|
declare module "@comfyorg/frontend" {
|
|
interface INodeSlot {
|
|
// @rgthree: Hides a slot for rgthree-comfy draw methods.
|
|
hidden?: boolean;
|
|
|
|
// @rgthree: Used to "disable" an input/output. Used in PowerPrompt to disallow connecting
|
|
// an output if there's no optional corresponding input (since, that would just break).
|
|
disabled?: boolean;
|
|
|
|
// @rgthree: A status we put on some nodes so we can draw things around it.
|
|
rgthree_status?: "WARN" | "ERROR";
|
|
}
|
|
|
|
interface LGraph {
|
|
// @rgthree (Fix): `result` arg is optional in impl.
|
|
findNodesByType(type: string, result?: LGraphNode[]): LGraphNode[];
|
|
}
|
|
|
|
interface LGraphNode {
|
|
// @rgthree: rgthree-comfy added this before comfyui did and it was a bit more flexible.
|
|
removeWidget(widget: IBaseWidget|IWidget|number|undefined): void;
|
|
|
|
// @rgthree (Fix): Implementation allows a falsy value to be returned and it will suppress the
|
|
// menu all together.
|
|
// NOTE: [🤮] We can't actually augment this because it's a return.. but keeping here because
|
|
// this is how it's actually implemented.
|
|
// getSlotMenuOptions?(this: LGraphNode, slot: IFoundSlot): IContextMenuValue[] | void;
|
|
|
|
// @rgthree (Fix): Implementation allows a falsy value to be returned and it will not add items.
|
|
// NOTE: [🤮] We can't actually augment this because it's a return.. but keeping here because
|
|
// this is how it's actually implemented.
|
|
// getExtraMenuOptions?(
|
|
// canvas: LGraphCanvas,
|
|
// options: (IContextMenuValue<unknown> | null)[],
|
|
// ): (IContextMenuValue<unknown> | null)[] | void;
|
|
}
|
|
|
|
interface LGraphGroup {
|
|
// @rgthree: Track whether a group has any active node from the fast group mode changers.
|
|
rgthree_hasAnyActiveNode?: boolean;
|
|
}
|
|
|
|
interface LGraphCanvas {
|
|
// @rgthree (Fix): At one point this was in ComfyUI's app.js. I don't see it now... perhaps it's
|
|
// been removed? We were using it in rgthree-comfy.
|
|
selected_group_moving?: boolean;
|
|
|
|
// @rgthree (Fix): Allows LGraphGroup to be passed (it could be `{size: Point, pos: Point}`).
|
|
centerOnNode(node: LGraphNode | LGraphGroup);
|
|
|
|
// @rgthree (Fix): Makes item's fields optiona, and other params nullable, as well as adds
|
|
// LGraphGroup to the node, since the implementation accomodates all of these as typed below.
|
|
// NOTE: [🤮] We can't actually augment this because it's static.. but keeping here because
|
|
// this is how it's actually implemented.
|
|
// static onShowPropertyEditor(
|
|
// item: {
|
|
// property?: keyof LGraphNode | undefined;
|
|
// type?: string;
|
|
// },
|
|
// options: IContextMenuOptions<string> | null,
|
|
// e: MouseEvent | null,
|
|
// menu: ContextMenu<string> | null,
|
|
// node: LGraphNode | LGraphGroup,
|
|
// ): void;
|
|
}
|
|
|
|
interface LGraphNodeConstructor {
|
|
// @rgthree (Fix): Fixes ComfyUI-Frontend which marks this as required, even through even though
|
|
// elsewhere it defines it as optional (like for the actual for LGraphNode).
|
|
comfyClass?: string;
|
|
|
|
// @rgthree: reference the original nodeType data as sometimes extensions clobber it.
|
|
nodeType?: LGraphNodeConstructor | null;
|
|
}
|
|
}
|
|
|
|
declare module "@/lib/litegraph/src/types/widgets" {
|
|
interface IBaseWidget {
|
|
// @rgthree (Fix): Where is this in Comfy types?
|
|
inputEl?: HTMLInputElement;
|
|
|
|
// @rgthree: A status we put on some nodes so we can draw things around it.
|
|
rgthree_lastValue?: any;
|
|
}
|
|
}
|
|
|
|
declare module "@/lib/litegraph/src/interfaces" {
|
|
// @rgthree (Fix): widget is (or was?) available when inputs were moved from a widget.
|
|
interface IFoundSlot {
|
|
widget?: IBaseWidget;
|
|
}
|
|
}
|
|
|
|
declare module "@comfyorg/litegraph/dist/LiteGraphGlobal" {
|
|
interface LiteGraphGlobal {
|
|
// @rgthree (Fix): Window is actually optional in the code.
|
|
closeAllContextMenus(ref_window?: Window): void;
|
|
}
|
|
}
|