diff --git a/src/LGraph.ts b/src/LGraph.ts index deb3eaaea..1c5668831 100644 --- a/src/LGraph.ts +++ b/src/LGraph.ts @@ -869,7 +869,7 @@ export class LGraph implements LinkNetwork, Serialisable { if (index != -1) { this._groups.splice(index, 1) } - node.graph = null + node.graph = undefined this._version++ this.setDirtyCanvas(true, true) this.change() diff --git a/src/LGraphGroup.ts b/src/LGraphGroup.ts index 028be7dbe..e0b4f8bee 100644 --- a/src/LGraphGroup.ts +++ b/src/LGraphGroup.ts @@ -22,6 +22,7 @@ import { } from "./measure" import { LGraphNode } from "./LGraphNode" import { strokeShape } from "./draw" +import { NullGraphError } from "@/infrastructure/NullGraphError" export interface IGraphGroupFlags extends Record { pinned?: true @@ -51,7 +52,7 @@ export class LGraphGroup implements Positionable, IPinnable, IColorable { /** @deprecated See {@link _children} */ _nodes: LGraphNode[] = [] _children: Set = new Set() - graph: LGraph | null = null + graph?: LGraph flags: IGraphGroupFlags = {} selected?: boolean @@ -236,6 +237,7 @@ export class LGraphGroup implements Positionable, IPinnable, IColorable { } recomputeInsideNodes(): void { + if (!this.graph) throw new NullGraphError() const { nodes, reroutes, groups } = this.graph const children = this._children this._nodes.length = 0 @@ -266,6 +268,8 @@ export class LGraphGroup implements Positionable, IPinnable, IColorable { return children.has(b) ? -1 : 0 } else if (b === this) { return children.has(a) ? 1 : 0 + } else { + return 0 } }) } @@ -295,7 +299,7 @@ export class LGraphGroup implements Positionable, IPinnable, IColorable { this.resizeTo([...this.children, ...this._nodes, ...nodes], padding) } - getMenuOptions(): IContextMenuValue[] { + getMenuOptions(): (IContextMenuValue | null)[] { return [ { content: this.pinned ? "Unpin" : "Pin", diff --git a/src/infrastructure/NullGraphError.ts b/src/infrastructure/NullGraphError.ts new file mode 100644 index 000000000..a83984ef3 --- /dev/null +++ b/src/infrastructure/NullGraphError.ts @@ -0,0 +1,6 @@ +export class NullGraphError extends Error { + constructor(message: string = "Attempted to access LGraph reference that was null or undefined.", cause?: Error) { + super(message, { cause }) + this.name = "NullGraphError" + } +}