Fix IColorable.getColorOption (#551)

* Fix IColorable.getColorOption

* nit
This commit is contained in:
Chenlei Hu
2025-02-19 14:57:29 -05:00
committed by GitHub
parent 8b1b8d2a76
commit 7bab620986
4 changed files with 19 additions and 13 deletions

View File

@@ -64,23 +64,20 @@ export class LGraphGroup implements Positionable, IPinnable, IColorable {
: "#AAA"
}
/** The color option used to set {@link color}. */
#colorOption: ColorOption | null = null
/** @inheritdoc {@link IColorable.setColorOption} */
setColorOption(colorOption: ColorOption | null): void {
if (colorOption == null) {
delete this.color
this.#colorOption = null
} else {
this.color = colorOption.groupcolor
this.#colorOption = colorOption
}
}
/** @inheritdoc {@link IColorable.getColorOption} */
getColorOption(): ColorOption | null {
return this.#colorOption
return Object.values(LGraphCanvas.node_colors).find(
colorOption => colorOption.groupcolor === this.color,
) ?? null
}
/** Position of the group, as x,y co-ordinates in graph space */

View File

@@ -23,7 +23,7 @@ import type {
import type { LGraph } from "./LGraph"
import type { IBaseWidget, IWidget, TWidgetValue } from "./types/widgets"
import type { ISerialisedNode } from "./types/serialisation"
import type { LGraphCanvas } from "./LGraphCanvas"
import { LGraphCanvas } from "./LGraphCanvas"
import type { CanvasMouseEvent } from "./types/events"
import type { DragAndScale } from "./DragAndScale"
import type { RerouteId } from "./Reroute"
@@ -236,25 +236,23 @@ export class LGraphNode implements Positionable, IPinnable, IColorable {
return this.boxcolor || colState || LiteGraph.NODE_DEFAULT_BOXCOLOR
}
/** The color option used to set {@link color} and {@link bgcolor}. */
#colorOption: ColorOption | null = null
/** @inheritdoc {@link IColorable.setColorOption} */
setColorOption(colorOption: ColorOption | null): void {
if (colorOption == null) {
delete this.color
delete this.bgcolor
this.#colorOption = null
} else {
this.color = colorOption.color
this.bgcolor = colorOption.bgcolor
this.#colorOption = colorOption
}
}
/** @inheritdoc {@link IColorable.getColorOption} */
getColorOption(): ColorOption | null {
return this.#colorOption
return Object.values(LGraphCanvas.node_colors).find(
colorOption =>
colorOption.color === this.color && colorOption.bgcolor === this.bgcolor,
) ?? null
}
exec_version: number

View File

@@ -83,6 +83,13 @@ export interface IColorable {
getColorOption(): ColorOption | null
}
/**
* Checks if an object is an instance of {@link IColorable}.
*/
export const isColorable = (obj: unknown): obj is IColorable => {
return typeof obj === "object" && obj !== null && "setColorOption" in obj && "getColorOption" in obj
}
/**
* An object that can be pinned.
*

View File

@@ -20,7 +20,9 @@ import type {
Rect32,
Size,
ColorOption,
IColorable,
} from "./interfaces"
import { isColorable } from "./interfaces"
import type { SlotShape, LabelPosition, SlotDirection, SlotType } from "./draw"
import type { IWidget } from "./types/widgets"
import type { RenderShape, TitleMode } from "./types/globalEnums"
@@ -72,6 +74,8 @@ export {
Rect32,
Size,
ColorOption,
IColorable,
isColorable,
}
export { IWidget }
export { LGraphBadge, BadgePosition }