From 81a00b5e6ced7d62a1604afb218d84240677dbf3 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Mon, 28 Apr 2025 02:30:59 +1000 Subject: [PATCH] [Refactor] Remove repeat interface definitions (#976) Prefers param destructuring over manual impl. --- src/widgets/BaseWidget.ts | 25 +++++++++---------------- src/widgets/BooleanWidget.ts | 11 ++--------- src/widgets/ButtonWidget.ts | 12 ++---------- src/widgets/ComboWidget.ts | 24 ++++-------------------- src/widgets/KnobWidget.ts | 11 ++--------- src/widgets/NumberWidget.ts | 24 ++++-------------------- src/widgets/SliderWidget.ts | 17 +++-------------- src/widgets/TextWidget.ts | 13 ++----------- 8 files changed, 28 insertions(+), 109 deletions(-) diff --git a/src/widgets/BaseWidget.ts b/src/widgets/BaseWidget.ts index 5de0b4e40..a3cac25cf 100644 --- a/src/widgets/BaseWidget.ts +++ b/src/widgets/BaseWidget.ts @@ -12,6 +12,12 @@ export interface DrawWidgetOptions { margin?: number } +export interface WidgetEventOptions { + e: CanvasMouseEvent + node: LGraphNode + canvas: LGraphCanvas +} + export abstract class BaseWidget implements IBaseWidget { /** From node edge to widget edge */ static margin = 15 @@ -117,33 +123,20 @@ export abstract class BaseWidget implements IBaseWidget { * Handles the click event for the widget * @param options The options for handling the click event */ - abstract onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }): void + abstract onClick(options: WidgetEventOptions): void /** * Handles the drag event for the widget * @param options The options for handling the drag event */ - onDrag?(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }): void + onDrag?(options: WidgetEventOptions): void /** * Sets the value of the widget * @param value The value to set * @param options The options for setting the value */ - setValue(value: TWidgetValue, options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { - const { node, canvas, e } = options + setValue(value: TWidgetValue, { e, node, canvas }: WidgetEventOptions) { const oldValue = this.value if (value === this.value) return diff --git a/src/widgets/BooleanWidget.ts b/src/widgets/BooleanWidget.ts index dd23943c1..dd9d43c9d 100644 --- a/src/widgets/BooleanWidget.ts +++ b/src/widgets/BooleanWidget.ts @@ -1,9 +1,6 @@ -import type { LGraphCanvas } from "@/LGraphCanvas" -import type { LGraphNode } from "@/LGraphNode" -import type { CanvasMouseEvent } from "@/types/events" import type { IBooleanWidget } from "@/types/widgets" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class BooleanWidget extends BaseWidget implements IBooleanWidget { // IBooleanWidget properties @@ -60,11 +57,7 @@ export class BooleanWidget extends BaseWidget implements IBooleanWidget { } } - override onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { + override onClick(options: WidgetEventOptions) { this.setValue(!this.value, options) } } diff --git a/src/widgets/ButtonWidget.ts b/src/widgets/ButtonWidget.ts index b081fd676..76a34bbea 100644 --- a/src/widgets/ButtonWidget.ts +++ b/src/widgets/ButtonWidget.ts @@ -1,9 +1,6 @@ -import type { LGraphCanvas } from "@/LGraphCanvas" -import type { LGraphNode } from "@/LGraphNode" -import type { CanvasMouseEvent } from "@/types/events" import type { IButtonWidget, IWidgetOptions } from "@/types/widgets" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class ButtonWidget extends BaseWidget implements IButtonWidget { // IButtonWidget properties @@ -67,12 +64,7 @@ export class ButtonWidget extends BaseWidget implements IButtonWidget { ctx.fillStyle = originalFillStyle } - override onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { - const { e, node, canvas } = options + override onClick({ e, node, canvas }: WidgetEventOptions) { const pos = canvas.graph_mouse // Set clicked state and mark canvas as dirty diff --git a/src/widgets/ComboWidget.ts b/src/widgets/ComboWidget.ts index 043d945c7..e2edffc87 100644 --- a/src/widgets/ComboWidget.ts +++ b/src/widgets/ComboWidget.ts @@ -1,11 +1,8 @@ -import type { LGraphCanvas } from "@/LGraphCanvas" -import type { LGraphNode } from "@/LGraphNode" -import type { CanvasMouseEvent } from "@/types/events" import type { IComboWidget, IWidgetOptions } from "@/types/widgets" import { LiteGraph } from "@/litegraph" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class ComboWidget extends BaseWidget implements IComboWidget { // IComboWidget properties @@ -121,12 +118,7 @@ export class ComboWidget extends BaseWidget implements IComboWidget { ctx.fillStyle = originalFillStyle } - override onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { - const { e, node, canvas } = options + override onClick({ e, node, canvas }: WidgetEventOptions) { const x = e.canvasX - node.pos[0] const width = this.width || node.size[0] @@ -163,11 +155,7 @@ export class ComboWidget extends BaseWidget implements IComboWidget { Array.isArray(values) ? values[index] : index, - { - e, - node, - canvas, - }, + { e, node, canvas }, ) return } @@ -184,11 +172,7 @@ export class ComboWidget extends BaseWidget implements IComboWidget { values != values_list ? text_values.indexOf(value) : value, - { - e, - node, - canvas, - }, + { e, node, canvas }, ) }, }) diff --git a/src/widgets/KnobWidget.ts b/src/widgets/KnobWidget.ts index 95509f01a..65860d7fd 100644 --- a/src/widgets/KnobWidget.ts +++ b/src/widgets/KnobWidget.ts @@ -1,12 +1,9 @@ -import type { LGraphNode } from "@/LGraphNode" import type { IKnobWidget, IWidgetKnobOptions } from "@/types/widgets" -import { LGraphCanvas } from "@/LGraphCanvas" import { clamp } from "@/litegraph" -import { CanvasMouseEvent } from "@/types/events" import { getWidgetStep } from "@/utils/widget" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class KnobWidget extends BaseWidget implements IKnobWidget { declare type: "knob" @@ -202,11 +199,7 @@ export class KnobWidget extends BaseWidget implements IKnobWidget { } current_drag_offset = 0 - override onDrag(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }): void { + override onDrag(options: WidgetEventOptions): void { if (this.options.read_only) return const { e } = options const step = getWidgetStep(this.options) diff --git a/src/widgets/NumberWidget.ts b/src/widgets/NumberWidget.ts index fd1389aec..ed4eb8f31 100644 --- a/src/widgets/NumberWidget.ts +++ b/src/widgets/NumberWidget.ts @@ -1,11 +1,8 @@ -import type { LGraphCanvas } from "@/LGraphCanvas" -import type { LGraphNode } from "@/LGraphNode" -import type { CanvasMouseEvent } from "@/types/events" import type { INumericWidget, IWidgetOptions } from "@/types/widgets" import { getWidgetStep } from "@/utils/widget" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class NumberWidget extends BaseWidget implements INumericWidget { // INumberWidget properties @@ -19,11 +16,7 @@ export class NumberWidget extends BaseWidget implements INumericWidget { this.value = widget.value } - override setValue(value: number, options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { + override setValue(value: number, options: WidgetEventOptions) { let newValue = value if (this.options.min != null && newValue < this.options.min) { newValue = this.options.min @@ -96,12 +89,7 @@ export class NumberWidget extends BaseWidget implements INumericWidget { ctx.fillStyle = originalFillStyle } - override onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { - const { e, node, canvas } = options + override onClick({ e, node, canvas }: WidgetEventOptions) { const x = e.canvasX - node.pos[0] const width = this.width || node.size[0] @@ -138,11 +126,7 @@ export class NumberWidget extends BaseWidget implements INumericWidget { * Handles drag events for the number widget * @param options The options for handling the drag event */ - override onDrag(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { + override onDrag(options: WidgetEventOptions) { const { e, node, canvas } = options const width = this.width || node.width const x = e.canvasX - node.pos[0] diff --git a/src/widgets/SliderWidget.ts b/src/widgets/SliderWidget.ts index e68f4d75e..dbc20e291 100644 --- a/src/widgets/SliderWidget.ts +++ b/src/widgets/SliderWidget.ts @@ -1,11 +1,8 @@ -import type { LGraphCanvas } from "@/LGraphCanvas" -import type { LGraphNode } from "@/LGraphNode" -import type { CanvasMouseEvent } from "@/types/events" import type { ISliderWidget, IWidgetSliderOptions } from "@/types/widgets" import { clamp } from "@/litegraph" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class SliderWidget extends BaseWidget implements ISliderWidget { // ISliderWidget properties @@ -93,11 +90,7 @@ export class SliderWidget extends BaseWidget implements ISliderWidget { /** * Handles click events for the slider widget */ - override onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { + override onClick(options: WidgetEventOptions) { if (this.options.read_only) return const { e, node } = options @@ -116,11 +109,7 @@ export class SliderWidget extends BaseWidget implements ISliderWidget { /** * Handles drag events for the slider widget */ - override onDrag(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { + override onDrag(options: WidgetEventOptions) { if (this.options.read_only) return false const { e, node } = options diff --git a/src/widgets/TextWidget.ts b/src/widgets/TextWidget.ts index 48805c046..3b81a9cfd 100644 --- a/src/widgets/TextWidget.ts +++ b/src/widgets/TextWidget.ts @@ -1,9 +1,6 @@ -import type { LGraphCanvas } from "@/LGraphCanvas" -import type { LGraphNode } from "@/LGraphNode" -import type { CanvasMouseEvent } from "@/types/events" import type { IStringWidget, IWidgetOptions } from "@/types/widgets" -import { BaseWidget, type DrawWidgetOptions } from "./BaseWidget" +import { BaseWidget, type DrawWidgetOptions, type WidgetEventOptions } from "./BaseWidget" export class TextWidget extends BaseWidget implements IStringWidget { // IStringWidget properties @@ -78,13 +75,7 @@ export class TextWidget extends BaseWidget implements IStringWidget { ctx.fillStyle = originalFillStyle } - override onClick(options: { - e: CanvasMouseEvent - node: LGraphNode - canvas: LGraphCanvas - }) { - const { e, node, canvas } = options - + override onClick({ e, node, canvas }: WidgetEventOptions) { // Show prompt dialog for text input canvas.prompt( "Value",