From 361a1a76ef971ba4bc6017d8af3698bd43e361da Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Wed, 12 Feb 2025 15:52:27 -0500 Subject: [PATCH] Add LGraphNode.getExtraSlotMenuOptions hook (#522) --- src/LGraphCanvas.ts | 4 ++++ src/LGraphNode.ts | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/LGraphCanvas.ts b/src/LGraphCanvas.ts index b0a0f5db8..d8e5ac807 100644 --- a/src/LGraphCanvas.ts +++ b/src/LGraphCanvas.ts @@ -7393,6 +7393,10 @@ export class LGraphCanvas implements ConnectionColorContext { } if (!_slot.nameLocked) menu_info.push({ content: "Rename Slot", slot: slot }) + + if (node.getExtraSlotMenuOptions) { + menu_info.push(...node.getExtraSlotMenuOptions(slot)) + } } // @ts-expect-error Slot type can be number and has number checks options.title = (slot.input ? slot.input.type : slot.output.type) || "*" diff --git a/src/LGraphNode.ts b/src/LGraphNode.ts index 82c4f3c10..2b6523ba8 100644 --- a/src/LGraphNode.ts +++ b/src/LGraphNode.ts @@ -458,7 +458,15 @@ export class LGraphNode implements Positionable, IPinnable { canvasElement: HTMLCanvasElement, ): void onMouseLeave?(this: LGraphNode, e: CanvasMouseEvent): void + /** + * Override the default slot menu options. + */ getSlotMenuOptions?(this: LGraphNode, slot: IFoundSlot): IContextMenuValue[] + /** + * Add extra menu options to the slot context menu. + */ + getExtraSlotMenuOptions?(this: LGraphNode, slot: IFoundSlot): IContextMenuValue[] + // FIXME: Re-typing onDropItem?(this: LGraphNode, event: Event): boolean onDropData?(