diff --git a/projects/ngx-flowchart/src/lib/model.service.ts b/projects/ngx-flowchart/src/lib/model.service.ts index eb87b8b..8b572b0 100644 --- a/projects/ngx-flowchart/src/lib/model.service.ts +++ b/projects/ngx-flowchart/src/lib/model.service.ts @@ -1,7 +1,8 @@ import { FcModelValidationService } from './modelvalidation.service'; import { FcConnector, FcCoords, FcEdge, FcItemInfo, FcModel, FcNode, FcRectBox } from './ngx-flowchart.models'; -import { Observable, of } from 'rxjs'; +import { Observable, of, Subject } from 'rxjs'; import { ChangeDetectorRef, EventEmitter } from '@angular/core'; +import { debounceTime } from 'rxjs/operators'; export class FcModelService { @@ -24,7 +25,8 @@ export class FcModelService { dropTargetId: string; - modelChanged: EventEmitter; + private readonly modelChanged: EventEmitter; + private readonly debouncer = new Subject(); connectors: ConnectorsModel; nodes: NodesModel; @@ -61,10 +63,14 @@ export class FcModelService { this.connectors = new ConnectorsModel(this); this.nodes = new NodesModel(this); this.edges = new EdgesModel(this); + + this.debouncer + .pipe(debounceTime(100)) + .subscribe(() => this.modelChanged.emit()); } public notifyModelChanged() { - this.modelChanged.emit(); + this.debouncer.next(); } public detectChanges() {