From c82401c61c3323eb0671791137524eaa2fd18d53 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Fri, 2 May 2025 11:29:43 +1000 Subject: [PATCH] [TS] Fix strict type on chain callback, widgetInput (#3727) --- src/composables/functional/useChainCallback.ts | 18 +++++++++++++++++- src/extensions/core/widgetInputs.ts | 12 ++++++------ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/composables/functional/useChainCallback.ts b/src/composables/functional/useChainCallback.ts index 3d631b9167..47e32b9fbb 100644 --- a/src/composables/functional/useChainCallback.ts +++ b/src/composables/functional/useChainCallback.ts @@ -1,3 +1,19 @@ +/** + * Shorthand for {@link Parameters} of optional callbacks. + * + * @example + * ```ts + * const { onClick } = CustomClass.prototype + * CustomClass.prototype.onClick = function (...args: CallbackParams) { + * const r = onClick?.apply(this, args) + * // ... + * return r + * } + * ``` + */ +export type CallbackParams any) | undefined> = + Parameters> + /** * Chain multiple callbacks together. * @@ -14,6 +30,6 @@ export const useChainCallback = < ) => { return function (this: O, ...args: Parameters) { originalCallback?.call(this, ...args) - callbacks.forEach((callback) => callback.call(this, ...args)) + for (const callback of callbacks) callback.call(this, ...args) } } diff --git a/src/extensions/core/widgetInputs.ts b/src/extensions/core/widgetInputs.ts index 5d64f0aef6..7d64030aee 100644 --- a/src/extensions/core/widgetInputs.ts +++ b/src/extensions/core/widgetInputs.ts @@ -9,7 +9,10 @@ import type { } from '@comfyorg/litegraph' import type { CanvasMouseEvent } from '@comfyorg/litegraph/dist/types/events' -import { useChainCallback } from '@/composables/functional/useChainCallback' +import { + type CallbackParams, + useChainCallback +} from '@/composables/functional/useChainCallback' import type { InputSpec } from '@/schemas/nodeDefSchema' import { app } from '@/scripts/app' import { ComfyWidgets, addValueControlWidgets } from '@/scripts/widgets' @@ -564,12 +567,9 @@ app.registerExtension({ const origOnInputDblClick = nodeType.prototype.onInputDblClick nodeType.prototype.onInputDblClick = function ( this: LGraphNode, - slot: number + ...[slot, ...args]: CallbackParams ) { - const r = origOnInputDblClick - ? // @ts-expect-error fixme ts strict error - origOnInputDblClick.apply(this, arguments) - : undefined + const r = origOnInputDblClick?.apply(this, [slot, ...args]) const input = this.inputs[slot] if (!input.widget) {