diff --git a/src/LGraph.ts b/src/LGraph.ts index 65b522f..830c91e 100644 --- a/src/LGraph.ts +++ b/src/LGraph.ts @@ -117,12 +117,15 @@ export class LGraph implements LinkNetwork, Serialisable { /** @returns Whether the graph has no items */ get empty(): boolean { - return this.positionableItems.length === 0 + return this._nodes.length + this._groups.length + this.reroutes.size === 0 } /** @returns All items on the canvas that can be selected */ - get positionableItems(): Positionable[] { - return [...this._nodes, ...this._groups, ...this.reroutes.values()] + *positionableItems(): Generator { + for (const node of this._nodes) yield node + for (const group of this._groups) yield group + for (const reroute of this.reroutes.values()) yield reroute + return } #reroutes = new Map() diff --git a/src/LGraphCanvas.ts b/src/LGraphCanvas.ts index 77cc394..a8407e9 100644 --- a/src/LGraphCanvas.ts +++ b/src/LGraphCanvas.ts @@ -3958,8 +3958,8 @@ export class LGraphCanvas { return this.graph.empty } - get positionableItems(): Positionable[] { - return this.graph.positionableItems + get positionableItems() { + return this.graph.positionableItems() } /** @@ -8420,7 +8420,7 @@ export class LGraphCanvas { * If nothing is selected, the view is fitted around all items in the graph. */ fitViewToSelectionAnimated(options: AnimationOptions = {}) { - const items: Positionable[] = this.selectedItems.size + const items = this.selectedItems.size ? Array.from(this.selectedItems) : this.positionableItems this.animateToBounds(createBounds(items), options)