mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-22 07:19:41 +00:00
Emit searchbox triggering canvas events (#10)
* Emit canvas event * Update version
This commit is contained in:
46
src/litegraph.d.ts
vendored
46
src/litegraph.d.ts
vendored
@@ -24,10 +24,10 @@ export interface INodeSlot {
|
||||
type: string | -1;
|
||||
label?: string;
|
||||
dir?:
|
||||
| typeof LiteGraph.UP
|
||||
| typeof LiteGraph.RIGHT
|
||||
| typeof LiteGraph.DOWN
|
||||
| typeof LiteGraph.LEFT;
|
||||
| typeof LiteGraph.UP
|
||||
| typeof LiteGraph.RIGHT
|
||||
| typeof LiteGraph.DOWN
|
||||
| typeof LiteGraph.LEFT;
|
||||
color_on?: string;
|
||||
color_off?: string;
|
||||
shape?: SlotShape;
|
||||
@@ -104,8 +104,8 @@ export interface IComboWidget
|
||||
string[],
|
||||
{
|
||||
values:
|
||||
| string[]
|
||||
| ((widget: IComboWidget, node: LGraphNode) => string[]);
|
||||
| string[]
|
||||
| ((widget: IComboWidget, node: LGraphNode) => string[]);
|
||||
}
|
||||
> {
|
||||
type: "combo";
|
||||
@@ -146,6 +146,20 @@ export type ContextMenuEventListener = (
|
||||
node: LGraphNode
|
||||
) => boolean | void;
|
||||
|
||||
export type LinkReleaseContext = {
|
||||
node_from: LGraphNode;
|
||||
slot_from: INodeSlot;
|
||||
type_filter_in: string;
|
||||
};
|
||||
|
||||
export type LiteGraphCanvasEventType = "empty-release" | "empty-double-click";
|
||||
|
||||
export type LiteGraphCanvasEvent = CustomEvent<{
|
||||
subType: string;
|
||||
originalEvent: Event,
|
||||
linkReleaseContext?: LinkReleaseContext;
|
||||
}>;
|
||||
|
||||
export const LiteGraph: {
|
||||
DEFAULT_GROUP_FONT_SIZE: any;
|
||||
overlapBounding(visible_area: any, _bounding: any): unknown;
|
||||
@@ -244,7 +258,7 @@ export const LiteGraph: {
|
||||
|
||||
createNode<T extends LGraphNode = LGraphNode>(type: string): T;
|
||||
/** Register a node class so it can be listed when the user wants to create a new one */
|
||||
registerNodeType(type: string, base: { new (): LGraphNode }): void;
|
||||
registerNodeType(type: string, base: { new(): LGraphNode }): void;
|
||||
/** removes a node type from the system */
|
||||
unregisterNodeType(type: string): void;
|
||||
/** Removes all previously registered node's types. */
|
||||
@@ -426,7 +440,7 @@ export declare class LGraph {
|
||||
/**
|
||||
* Positions every node in a more readable manner
|
||||
*/
|
||||
arrange(margin?: number,layout?: string): void;
|
||||
arrange(margin?: number, layout?: string): void;
|
||||
/**
|
||||
* Returns the amount of time the graph has been running in milliseconds
|
||||
* @return number of milliseconds the graph has been running
|
||||
@@ -602,10 +616,10 @@ export type SerializedLGraphNode<T extends LGraphNode = LGraphNode> = {
|
||||
|
||||
/** https://github.com/jagenjo/litegraph.js/blob/master/guides/README.md#lgraphnode */
|
||||
export declare class LGraphNode {
|
||||
onResize?: Function;
|
||||
onResize?: Function;
|
||||
|
||||
// Used in group node
|
||||
setInnerNodes(nodes: LGraphNode[]);
|
||||
setInnerNodes(nodes: LGraphNode[]);
|
||||
|
||||
static title_color: string;
|
||||
static title: string;
|
||||
@@ -1054,8 +1068,8 @@ export declare class LGraphNode {
|
||||
}
|
||||
|
||||
export type LGraphNodeConstructor<T extends LGraphNode = LGraphNode> = {
|
||||
nodeData: any; // Used by group node.
|
||||
new (): T;
|
||||
nodeData: any; // Used by group node.
|
||||
new(): T;
|
||||
};
|
||||
|
||||
export type SerializedLGraphGroup = {
|
||||
@@ -1257,10 +1271,10 @@ export declare class LGraphCanvas {
|
||||
/** Called by `LGraphCanvas.showSearchBox` */
|
||||
onSearchBox:
|
||||
| ((
|
||||
helper: Element,
|
||||
value: string,
|
||||
graphCanvas: LGraphCanvas
|
||||
) => string[])
|
||||
helper: Element,
|
||||
value: string,
|
||||
graphCanvas: LGraphCanvas
|
||||
) => string[])
|
||||
| null;
|
||||
onSearchBoxSelection:
|
||||
| ((name: string, event: MouseEvent, graphCanvas: LGraphCanvas) => void)
|
||||
|
||||
@@ -6186,10 +6186,22 @@ LGraphNode.prototype.executeAction = function(action)
|
||||
}
|
||||
}
|
||||
|
||||
if (is_double_click && !this.read_only && this.allow_searchbox) {
|
||||
this.showSearchBox(e);
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (is_double_click && !this.read_only) {
|
||||
if (this.allow_searchbox) {
|
||||
this.showSearchBox(e);
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
this.canvas.dispatchEvent(new CustomEvent(
|
||||
"litegraph:canvas",
|
||||
{
|
||||
bubbles: true,
|
||||
detail: {
|
||||
type: "empty-double-click",
|
||||
originalEvent: e,
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
clicking_canvas_bg = true;
|
||||
@@ -6756,9 +6768,7 @@ LGraphNode.prototype.executeAction = function(action)
|
||||
// look for a good slot
|
||||
this.connecting_node.connectByType(this.connecting_slot,node,connType);
|
||||
}
|
||||
|
||||
}else if (this.connecting_input){
|
||||
|
||||
} else if (this.connecting_input) {
|
||||
var slot = this.isOverNodeOutput(
|
||||
node,
|
||||
e.canvasX,
|
||||
@@ -6772,22 +6782,34 @@ LGraphNode.prototype.executeAction = function(action)
|
||||
// look for a good slot
|
||||
this.connecting_node.connectByTypeOutput(this.connecting_slot,node,connType);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//}
|
||||
|
||||
}else{
|
||||
|
||||
} else {
|
||||
const linkReleaseContext = this.connecting_output ? {
|
||||
node_from: this.connecting_node,
|
||||
slot_from: this.connecting_output,
|
||||
type_filter_in: this.connecting_output.type
|
||||
} : {
|
||||
node_to: this.connecting_node,
|
||||
slot_from: this.connecting_input,
|
||||
type_filter_out: this.connecting_input.type
|
||||
};
|
||||
|
||||
this.canvas.dispatchEvent(new CustomEvent(
|
||||
"litegraph:canvas", {
|
||||
bubbles: true,
|
||||
detail: {
|
||||
subType: "empty-release",
|
||||
originalEvent: e,
|
||||
linkReleaseContext,
|
||||
},
|
||||
}
|
||||
));
|
||||
// add menu when releasing link in empty space
|
||||
if (LiteGraph.release_link_on_empty_shows_menu){
|
||||
if (e.shiftKey && this.allow_searchbox){
|
||||
if(this.connecting_output){
|
||||
this.showSearchBox(e,{node_from: this.connecting_node, slot_from: this.connecting_output, type_filter_in: this.connecting_output.type});
|
||||
}else if(this.connecting_input){
|
||||
this.showSearchBox(e,{node_to: this.connecting_node, slot_from: this.connecting_input, type_filter_out: this.connecting_input.type});
|
||||
}
|
||||
if (e.shiftKey){
|
||||
if (this.allow_searchbox) {
|
||||
this.showSearchBox(e, linkReleaseContext);
|
||||
}
|
||||
}else{
|
||||
if(this.connecting_output){
|
||||
this.showConnectionMenu({nodeFrom: this.connecting_node, slotFrom: this.connecting_output, e: e});
|
||||
|
||||
Reference in New Issue
Block a user