From e733b87f2229f0c23dd8d2096ae8dcc04fa7855e Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Mon, 2 Sep 2024 11:06:16 -0400 Subject: [PATCH] Add beforeRegisterVueAppNodeDefs hook (#709) * Add beforeRegisterVueAppNodeDefs hook * Remove min-char constraint on node library search --- .../sidebar/tabs/NodeLibrarySidebarTab.vue | 4 +++- src/scripts/app.ts | 4 +++- src/types/comfy.d.ts | 13 ++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/sidebar/tabs/NodeLibrarySidebarTab.vue b/src/components/sidebar/tabs/NodeLibrarySidebarTab.vue index 0fcf6e300..8e449aa75 100644 --- a/src/components/sidebar/tabs/NodeLibrarySidebarTab.vue +++ b/src/components/sidebar/tabs/NodeLibrarySidebarTab.vue @@ -129,7 +129,9 @@ const filteredRoot = computed(() => { const filters: Ref }>> = ref([]) const handleSearch = (query: string) => { - if (query.length < 3 && !filters.value.length) { + // Don't apply a min length filter because it does not make sense in + // multi-byte languages like Chinese, Japanese, Korean, etc. + if (query.length === 0 && !filters.value.length) { filteredNodeDefs.value = [] expandedKeys.value = {} return diff --git a/src/scripts/app.ts b/src/scripts/app.ts index 95293bcf3..626200295 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -1968,7 +1968,9 @@ export class ComfyApp { } const nodeDefStore = useNodeDefStore() - nodeDefStore.updateNodeDefs(Object.values(allNodeDefs)) + const nodeDefArray: ComfyNodeDef[] = Object.values(allNodeDefs) + this.#invokeExtensions('beforeRegisterVueAppNodeDefs', nodeDefArray, this) + nodeDefStore.updateNodeDefs(nodeDefArray) nodeDefStore.updateWidgets(this.widgets) } diff --git a/src/types/comfy.d.ts b/src/types/comfy.d.ts index 0043da1b2..061b65644 100644 --- a/src/types/comfy.d.ts +++ b/src/types/comfy.d.ts @@ -1,5 +1,6 @@ import { LGraphNode, IWidget } from './litegraph' import { ComfyApp } from '../scripts/app' +import type { ComfyNodeDef } from '@/types/apiTypes' export interface ComfyExtension { /** @@ -44,7 +45,7 @@ export interface ComfyExtension { > > /** - * Allows the extension to add additional handling to the node before it is registered with LGraph + * Allows the extension to add additional handling to the node before it is registered with **LGraph** * @param nodeType The node class (not an instance) * @param nodeData The original node object info config object * @param app The ComfyUI app instance @@ -54,6 +55,16 @@ export interface ComfyExtension { nodeData: ComfyObjectInfo, app: ComfyApp ): Promise + + /** + * Allows the extension to modify the node definitions before they are used in the Vue app + * Modifications is expected to be made in place. + * + * @param defs The node definitions + * @param app The ComfyUI app instance + */ + beforeRegisterVueAppNodeDefs?(defs: ComfyNodeDef[], app: ComfyApp): void + /** * Allows the extension to register additional nodes with LGraph after standard nodes are added * @param app The ComfyUI app instance