From 63677a47090fd0868c3a3e347f6e39f4bcb4bf62 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Tue, 18 Jun 2024 14:28:53 -0400 Subject: [PATCH] Migrate context menu to ts (#32) * rename * Migrate context --- .../core/{contextMenuFilter.js => contextMenuFilter.ts} | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) rename src/extensions/core/{contextMenuFilter.js => contextMenuFilter.ts} (97%) diff --git a/src/extensions/core/contextMenuFilter.js b/src/extensions/core/contextMenuFilter.ts similarity index 97% rename from src/extensions/core/contextMenuFilter.js rename to src/extensions/core/contextMenuFilter.ts index 98fd58b8a..fc33ef820 100644 --- a/src/extensions/core/contextMenuFilter.js +++ b/src/extensions/core/contextMenuFilter.ts @@ -6,7 +6,8 @@ const ext = { name: "Comfy.ContextMenuFilter", init() { const ctxMenu = LiteGraph.ContextMenu; - + // @ts-ignore + // TODO Very hacky way to modify Litegraph behaviour. Fix this later. LiteGraph.ContextMenu = function (values, options) { const ctx = ctxMenu.call(this, values, options); @@ -17,12 +18,13 @@ const ext = { filter.placeholder = "Filter list"; this.root.prepend(filter); - const items = Array.from(this.root.querySelectorAll(".litemenu-entry")); + const items = Array.from(this.root.querySelectorAll(".litemenu-entry")) as HTMLElement[]; let displayedItems = [...items]; let itemCount = displayedItems.length; // We must request an animation frame for the current node of the active canvas to update. requestAnimationFrame(() => { + // @ts-ignore const currentNode = LGraphCanvas.active_canvas.current_node; const clickedComboValue = currentNode.widgets ?.filter(w => w.type === "combo" && w.options.values.length === values.length) @@ -32,7 +34,7 @@ const ext = { let selectedIndex = clickedComboValue ? values.findIndex(v => v === clickedComboValue) : 0; if (selectedIndex < 0) { selectedIndex = 0; - } + } let selectedItem = displayedItems[selectedIndex]; updateSelected();