@worktile/gantt 18.0.3 → 18.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,7 +54,7 @@ export class NgxGanttBarComponent extends GanttItemUpper {
54
54
  // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
55
55
  this.ngZone.runOutsideAngular(() => {
56
56
  onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
57
- this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);
57
+ this.drag.initialize(this.elementRef, this.item, this.ganttUpper);
58
58
  });
59
59
  });
60
60
  this.setContentBackground();
@@ -129,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
129
129
  type: ViewChildren,
130
130
  args: ['handle']
131
131
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFJWCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRVosWUFBWSxFQUlmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUV6RCxTQUFTLGNBQWMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3JFLE9BQU8sbUJBQW1CLFlBQVksSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUM7QUFDdEUsQ0FBQztBQVNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBU3BELFlBQ1ks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RUFBRSxnQkFBZ0IsQ0FBQzs7MEJBZTVCLE1BQU07MkJBQUMsaUJBQWlCOzhEQVpuQixRQUFRO3NCQUFqQixNQUFNO2dCQUVlLGlCQUFpQjtzQkFBdEMsU0FBUzt1QkFBQyxTQUFTO2dCQUVZLGNBQWM7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUVOLE9BQU87c0JBQTlCLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBOZ1pvbmUsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEJhckRyYWcgfSBmcm9tICcuL2Jhci1kcmFnJztcbmltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBiYXJCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdhbnR0QmFyQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5mdW5jdGlvbiBsaW5lYXJHcmFkaWVudChzaWRlT3JDb3JuZXI6IHN0cmluZywgY29sb3I6IHN0cmluZywgc3RvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBsaW5lYXItZ3JhZGllbnQoJHtzaWRlT3JDb3JuZXJ9LCR7Y29sb3J9IDAlLCR7c3RvcH0gNDAlKWA7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LWdhbnR0LWJhcixnYW50dC1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0dhbnR0QmFyRHJhZ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FudHRCYXJDb21wb25lbnQgZXh0ZW5kcyBHYW50dEl0ZW1VcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBPdXRwdXQoKSBiYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRCYXJDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtYmFyJykgZ2FudHRJdGVtQ2xhc3MgPSB0cnVlO1xuXG4gICAgQFZpZXdDaGlsZHJlbignaGFuZGxlJykgaGFuZGxlczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lcixcbiAgICAgICAgcHJpdmF0ZSBkcmFnOiBHYW50dEJhckRyYWcsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgb3ZlcnJpZGUgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBnYW50dFVwcGVyKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWcudXBkYXRlSXRlbSh0aGlzLml0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY2hhbmdlcy5pdGVtLmN1cnJlbnRWYWx1ZS5yZWZzPy53aWR0aCAhPT0gY2hhbmdlcy5pdGVtLnByZXZpb3VzVmFsdWUucmVmcz8ud2lkdGggfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLmNvbG9yICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5jb2xvciB8fFxuICAgICAgICAgICAgICAgIGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWUuc3RhcnQ/LnZhbHVlICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5zdGFydD8udmFsdWUgfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLmVuZD8udmFsdWUgIT09IGNoYW5nZXMuaXRlbS5wcmV2aW91c1ZhbHVlLmVuZD8udmFsdWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gTm90ZTogdGhlIHpvbmUgbWF5IGJlIG5vb3BlZCB0aHJvdWdoIGBCb290c3RyYXBPcHRpb25zYCB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlIHJvb3QgbW9kdWxlLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIHRoZSBgb25TdGFibGVgIHdpbGwgbmV2ZXIgZW1pdCBhbnkgdmFsdWUuXG4gICAgICAgIGNvbnN0IG9uU3RhYmxlJCA9IHRoaXMubmdab25lLmlzU3RhYmxlID8gZnJvbShQcm9taXNlLnJlc29sdmUoKSkgOiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpO1xuICAgICAgICAvLyBOb3JtYWxseSB0aGlzIGlzbid0IGluIHRoZSB6b25lLCBidXQgaXQgY2FuIGNhdXNlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGZvciBhcHBzXG4gICAgICAgIC8vIHVzaW5nIGB6b25lLXBhdGNoLXJ4anNgIGJlY2F1c2UgaXQnbGwgdHJpZ2dlciBhIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpdCB1bnN1YnNjcmliZXMuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3RhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnLmNyZWF0ZURyYWdzKHRoaXMuZWxlbWVudFJlZiwgdGhpcy5pdGVtLCB0aGlzLmdhbnR0VXBwZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcblxuICAgICAgICB0aGlzLmhhbmRsZXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuaGFuZGxlcyksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogd2UgbmVlZCB0byBleHBsaWNpdGx5IHN1YnNjcmliZSBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUgc2luY2UgYGFkZEV2ZW50TGlzdGVuZXJgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBjYWxsZWQgd2hlbiB0aGUgYGZyb21FdmVudGAgaXMgc3Vic2NyaWJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYnNlcnZhYmxlPEV2ZW50Pigoc3Vic2NyaWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZSguLi50aGlzLmhhbmRsZXMudG9BcnJheSgpLm1hcCgoaGFuZGxlKSA9PiBmcm9tRXZlbnQoaGFuZGxlLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkJhckNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmJhckNsaWNrLmVtaXQoeyBldmVudCwgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvbnRlbnRCYWNrZ3JvdW5kKCkge1xuICAgICAgICBpZiAodGhpcy5pdGVtLnJlZnM/LndpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5pdGVtLmNvbG9yIHx8IGJhckJhY2tncm91bmQ7XG4gICAgICAgICAgICBjb25zdCBzdHlsZTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPiA9IHRoaXMuaXRlbS5iYXJTdHlsZSB8fCB7fTtcbiAgICAgICAgICAgIGNvbnN0IGJhckVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbS5vcmlnaW4uc3RhcnQgJiYgdGhpcy5pdGVtLm9yaWdpbi5lbmQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gY29sb3I7XG4gICAgICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiAhdGhpcy5pdGVtLm9yaWdpbi5lbmQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gbGluZWFyR3JhZGllbnQoJ3RvIGxlZnQnLCBoZXhUb1JnYihjb2xvciwgMC41NSksIGhleFRvUmdiKGNvbG9yLCAxKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJSYWRpdXMgPSAnNHB4IDEyLjVweCAxMi41cHggNHB4JztcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgICAgICAgICAgICAgYmFyRWxlbWVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXRlbS5vcmlnaW4uc3RhcnQgJiYgdGhpcy5pdGVtLm9yaWdpbi5lbmQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gbGluZWFyR3JhZGllbnQoJ3RvIHJpZ2h0JywgaGV4VG9SZ2IoY29sb3IsIDAuNTUpLCBoZXhUb1JnYihjb2xvciwgMSkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyUmFkaXVzID0gJzEyLjVweCA0cHggNHB4IDEyLjVweCc7XG4gICAgICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gYm9yZGVyUmFkaXVzO1xuICAgICAgICAgICAgICAgIGJhckVsZW1lbnQuc3R5bGUuYm9yZGVyUmFkaXVzID0gYm9yZGVyUmFkaXVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbS5wcm9ncmVzcyA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFByb2dyZXNzRWxlbWVudCA9IGNvbnRlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1iYXItY29udGVudC1wcm9ncmVzcycpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBoZXhUb1JnYihjb2xvciwgMC4zKTtcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnJztcbiAgICAgICAgICAgICAgICBjb250ZW50UHJvZ3Jlc3NFbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBjb2xvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3R5bGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50RWxlbWVudC5zdHlsZVtrZXldID0gc3R5bGVba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdG9wUHJvcGFnYXRpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnYW50dC1iYXItbGF5ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImRyYWctaGFuZGxlc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmRyYWdnYWJsZSAmJiBnYW50dFVwcGVyLmRyYWdnYWJsZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIiAjaGFuZGxlPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCIgI2hhbmRsZT48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXRlbS5saW5rYWJsZSAmJiBnYW50dFVwcGVyLmxpbmthYmxlXCIgY2xhc3M9XCJsaW5rLWhhbmRsZXNcIj5cbiAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiPjxzcGFuIGNsYXNzPVwicG9pbnRcIj48L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCI+IDxzcGFuIGNsYXNzPVwicG9pbnRcIj48L3NwYW4+PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdhbnR0LWJhci1ib3JkZXJcIj48L2Rpdj5cbjxkaXYgI2NvbnRlbnQgY2xhc3M9XCJnYW50dC1iYXItY29udGVudFwiIChjbGljayk9XCJvbkJhckNsaWNrKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cImdhbnR0LWJhci1jb250ZW50LXByb2dyZXNzXCIgKm5nSWY9XCJpdGVtLnByb2dyZXNzID49IDBcIiBbc3R5bGUud2lkdGguJV09XCJpdGVtLnByb2dyZXNzICogMTAwXCI+PC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0ub3JpZ2luLCByZWZzOiBpdGVtLnJlZnMgfVwiPiA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFJWCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRVosWUFBWSxFQUlmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUV6RCxTQUFTLGNBQWMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3JFLE9BQU8sbUJBQW1CLFlBQVksSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUM7QUFDdEUsQ0FBQztBQVNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBU3BELFlBQ1ks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RUFBRSxnQkFBZ0IsQ0FBQzs7MEJBZTVCLE1BQU07MkJBQUMsaUJBQWlCOzhEQVpuQixRQUFRO3NCQUFqQixNQUFNO2dCQUVlLGlCQUFpQjtzQkFBdEMsU0FBUzt1QkFBQyxTQUFTO2dCQUVZLGNBQWM7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUVOLE9BQU87c0JBQTlCLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBOZ1pvbmUsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEJhckRyYWcgfSBmcm9tICcuL2Jhci1kcmFnJztcbmltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBiYXJCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdhbnR0QmFyQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5mdW5jdGlvbiBsaW5lYXJHcmFkaWVudChzaWRlT3JDb3JuZXI6IHN0cmluZywgY29sb3I6IHN0cmluZywgc3RvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBsaW5lYXItZ3JhZGllbnQoJHtzaWRlT3JDb3JuZXJ9LCR7Y29sb3J9IDAlLCR7c3RvcH0gNDAlKWA7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LWdhbnR0LWJhcixnYW50dC1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0dhbnR0QmFyRHJhZ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FudHRCYXJDb21wb25lbnQgZXh0ZW5kcyBHYW50dEl0ZW1VcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBPdXRwdXQoKSBiYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRCYXJDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtYmFyJykgZ2FudHRJdGVtQ2xhc3MgPSB0cnVlO1xuXG4gICAgQFZpZXdDaGlsZHJlbignaGFuZGxlJykgaGFuZGxlczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lcixcbiAgICAgICAgcHJpdmF0ZSBkcmFnOiBHYW50dEJhckRyYWcsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgb3ZlcnJpZGUgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBnYW50dFVwcGVyKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWcudXBkYXRlSXRlbSh0aGlzLml0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY2hhbmdlcy5pdGVtLmN1cnJlbnRWYWx1ZS5yZWZzPy53aWR0aCAhPT0gY2hhbmdlcy5pdGVtLnByZXZpb3VzVmFsdWUucmVmcz8ud2lkdGggfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLmNvbG9yICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5jb2xvciB8fFxuICAgICAgICAgICAgICAgIGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWUuc3RhcnQ/LnZhbHVlICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5zdGFydD8udmFsdWUgfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLmVuZD8udmFsdWUgIT09IGNoYW5nZXMuaXRlbS5wcmV2aW91c1ZhbHVlLmVuZD8udmFsdWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gTm90ZTogdGhlIHpvbmUgbWF5IGJlIG5vb3BlZCB0aHJvdWdoIGBCb290c3RyYXBPcHRpb25zYCB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlIHJvb3QgbW9kdWxlLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIHRoZSBgb25TdGFibGVgIHdpbGwgbmV2ZXIgZW1pdCBhbnkgdmFsdWUuXG4gICAgICAgIGNvbnN0IG9uU3RhYmxlJCA9IHRoaXMubmdab25lLmlzU3RhYmxlID8gZnJvbShQcm9taXNlLnJlc29sdmUoKSkgOiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpO1xuICAgICAgICAvLyBOb3JtYWxseSB0aGlzIGlzbid0IGluIHRoZSB6b25lLCBidXQgaXQgY2FuIGNhdXNlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGZvciBhcHBzXG4gICAgICAgIC8vIHVzaW5nIGB6b25lLXBhdGNoLXJ4anNgIGJlY2F1c2UgaXQnbGwgdHJpZ2dlciBhIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpdCB1bnN1YnNjcmliZXMuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3RhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnLmluaXRpYWxpemUodGhpcy5lbGVtZW50UmVmLCB0aGlzLml0ZW0sIHRoaXMuZ2FudHRVcHBlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZXRDb250ZW50QmFja2dyb3VuZCgpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5oYW5kbGVzKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgc3Vic2NyaWJlIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZSBzaW5jZSBgYWRkRXZlbnRMaXN0ZW5lcmBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGNhbGxlZCB3aGVuIHRoZSBgZnJvbUV2ZW50YCBpcyBzdWJzY3JpYmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9ic2VydmFibGU8RXZlbnQ+KChzdWJzY3JpYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlKC4uLnRoaXMuaGFuZGxlcy50b0FycmF5KCkubWFwKChoYW5kbGUpID0+IGZyb21FdmVudChoYW5kbGUubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpKSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQmFyQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuYmFyQ2xpY2suZW1pdCh7IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29udGVudEJhY2tncm91bmQoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW0ucmVmcz8ud2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLml0ZW0uY29sb3IgfHwgYmFyQmFja2dyb3VuZDtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0gdGhpcy5pdGVtLmJhclN0eWxlIHx8IHt9O1xuICAgICAgICAgICAgY29uc3QgYmFyRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBjb2xvcjtcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ub3JpZ2luLnN0YXJ0ICYmICF0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gbGVmdCcsIGhleFRvUmdiKGNvbG9yLCAwLjU1KSwgaGV4VG9SZ2IoY29sb3IsIDEpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9ICc0cHggMTIuNXB4IDEyLjVweCA0cHgnO1xuICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGl1cztcbiAgICAgICAgICAgICAgICBiYXJFbGVtZW50LnN0eWxlLmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGl1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gcmlnaHQnLCBoZXhUb1JnYihjb2xvciwgMC41NSksIGhleFRvUmdiKGNvbG9yLCAxKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJSYWRpdXMgPSAnMTIuNXB4IDRweCA0cHggMTIuNXB4JztcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgICAgICAgICAgICAgYmFyRWxlbWVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLnByb2dyZXNzID49IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UHJvZ3Jlc3NFbGVtZW50ID0gY29udGVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmdhbnR0LWJhci1jb250ZW50LXByb2dyZXNzJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGhleFRvUmdiKGNvbG9yLCAwLjMpO1xuICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICcnO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRQcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9IGNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LnN0eWxlW2tleV0gPSBzdHlsZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWJhci1sYXllclwiPlxuICA8ZGl2IGNsYXNzPVwiZHJhZy1oYW5kbGVzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZHJhZ2dhYmxlICYmIGdhbnR0VXBwZXIuZHJhZ2dhYmxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiICNoYW5kbGU+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIiAjaGFuZGxlPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpdGVtLmxpbmthYmxlICYmIGdhbnR0VXBwZXIubGlua2FibGVcIiBjbGFzcz1cImxpbmstaGFuZGxlc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCI+PHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIj4gPHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWJvcmRlclwiPjwvZGl2PlxuPGRpdiAjY29udGVudCBjbGFzcz1cImdhbnR0LWJhci1jb250ZW50XCIgKGNsaWNrKT1cIm9uQmFyQ2xpY2soJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWNvbnRlbnQtcHJvZ3Jlc3NcIiAqbmdJZj1cIml0ZW0ucHJvZ3Jlc3MgPj0gMFwiIFtzdHlsZS53aWR0aC4lXT1cIml0ZW0ucHJvZ3Jlc3MgKiAxMDBcIj48L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbS5vcmlnaW4sIHJlZnM6IGl0ZW0ucmVmcyB9XCI+IDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -4,7 +4,7 @@ import * as i1$1 from '@angular/cdk/scrolling';
4
4
  import { CdkScrollable, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, ScrollingModule } from '@angular/cdk/scrolling';
5
5
  import { isPlatformServer, NgIf, NgTemplateOutlet, NgFor, NgStyle, NgClass, DOCUMENT, CommonModule } from '@angular/common';
6
6
  import * as i0 from '@angular/core';
7
- import { InjectionToken, EventEmitter, Directive, Inject, Input, Output, ContentChild, HostBinding, Injectable, PLATFORM_ID, Component, ViewChild, ViewChildren, Pipe, ElementRef, Optional, HostListener, forwardRef, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';
7
+ import { InjectionToken, EventEmitter, Directive, Inject, Input, Output, ContentChild, HostBinding, Injectable, PLATFORM_ID, signal, effect, Component, ViewChild, ViewChildren, Pipe, ElementRef, Optional, HostListener, forwardRef, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';
8
8
  import { fromUnixTime, getWeek, getDaysInMonth, differenceInCalendarDays, setDate, addSeconds, addMinutes, addHours, addDays, addWeeks, addMonths, addQuarters, addYears, startOfMinute, startOfHour, startOfDay, startOfWeek, startOfMonth, startOfQuarter, startOfYear, endOfMinute, endOfHour, endOfDay, endOfWeek, endOfMonth, endOfQuarter, endOfYear, getUnixTime, format, isWeekend, isToday, differenceInHours, differenceInMinutes, differenceInDays, differenceInCalendarQuarters, eachMonthOfInterval, eachYearOfInterval, eachWeekOfInterval, eachDayOfInterval, differenceInCalendarYears, eachHourOfInterval, setDefaultOptions } from 'date-fns';
9
9
  export { addDays, addHours, addMinutes, addMonths, addQuarters, addSeconds, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarQuarters, differenceInDays, differenceInMinutes, eachDayOfInterval, eachHourOfInterval, eachMonthOfInterval, eachWeekOfInterval, endOfDay, endOfHour, endOfMinute, endOfMonth, endOfQuarter, endOfWeek, endOfYear, format, fromUnixTime, getDaysInMonth, getUnixTime, getWeek, isToday, isWeekend, setDate, startOfDay, startOfHour, startOfMinute, startOfMonth, startOfQuarter, startOfWeek, startOfYear } from 'date-fns';
10
10
  import { BehaviorSubject, Subject, from, fromEvent, merge, Observable, EMPTY, interval, animationFrameScheduler, takeUntil as takeUntil$1, startWith as startWith$1, auditTime as auditTime$1, filter } from 'rxjs';
@@ -1686,10 +1686,10 @@ function createSvgElement(qualifiedName, className) {
1686
1686
  }
1687
1687
  class GanttBarDrag {
1688
1688
  get dragDisabled() {
1689
- return !this.item.draggable || !this.ganttUpper.draggable;
1689
+ return !this.item().draggable || !this.ganttUpper.draggable;
1690
1690
  }
1691
1691
  get linkDragDisabled() {
1692
- return !this.item.linkable || !this.ganttUpper.linkable;
1692
+ return !this.item().linkable || !this.ganttUpper.linkable;
1693
1693
  }
1694
1694
  get barHandleDragMoveAndScrollDistance() {
1695
1695
  return this.barHandleDragMoveDistance + this.dragScrollDistance;
@@ -1702,7 +1702,9 @@ class GanttBarDrag {
1702
1702
  this.dom = dom;
1703
1703
  this.dragContainer = dragContainer;
1704
1704
  this._ngZone = _ngZone;
1705
- this.dragRefs = [];
1705
+ this.item = signal(null);
1706
+ this.linkDragRefs = [];
1707
+ this.barHandleDragRefs = [];
1706
1708
  this.destroy$ = new Subject();
1707
1709
  /** Used to signal to the current auto-scroll sequence when to stop. */
1708
1710
  this.stopScrollTimers$ = new Subject();
@@ -1733,6 +1735,12 @@ class GanttBarDrag {
1733
1735
  }
1734
1736
  });
1735
1737
  };
1738
+ effect(() => {
1739
+ const item = this.item();
1740
+ if (item) {
1741
+ this.createDrags();
1742
+ }
1743
+ });
1736
1744
  }
1737
1745
  createDragRef(element) {
1738
1746
  const dragRef = this.dragDrop.createDrag(element);
@@ -1742,40 +1750,46 @@ class GanttBarDrag {
1742
1750
  return fromEvent(this.dom.mainContainer, 'scroll', passiveListenerOptions).pipe(takeUntil(dragRef.ended));
1743
1751
  }
1744
1752
  createMouseEvents() {
1745
- const dropClass = this.ganttUpper.config.linkOptions?.dependencyTypes?.length === 1 &&
1746
- this.ganttUpper.config.linkOptions?.dependencyTypes[0] === GanttLinkType.fs
1747
- ? singleDropActiveClass
1748
- : dropActiveClass;
1749
- fromEvent(this.barElement, 'mouseenter', passiveListenerOptions)
1750
- .pipe(takeUntil(this.destroy$))
1751
- .subscribe(() => {
1752
- if (this.dragContainer.linkDraggingId && this.dragContainer.linkDraggingId !== this.item.id) {
1753
- if (this.item.linkable) {
1754
- this.barElement.classList.add(dropClass);
1755
- this.dragContainer.emitLinkDragEntered({
1756
- item: this.item,
1757
- element: this.barElement
1758
- });
1753
+ if (!this.hasMonitorMouseEvent && (!this.dragDisabled || !this.linkDragDisabled)) {
1754
+ this.hasMonitorMouseEvent = true;
1755
+ const dropClass = this.ganttUpper.config.linkOptions?.dependencyTypes?.length === 1 &&
1756
+ this.ganttUpper.config.linkOptions?.dependencyTypes[0] === GanttLinkType.fs
1757
+ ? singleDropActiveClass
1758
+ : dropActiveClass;
1759
+ fromEvent(this.barElement, 'mouseenter', passiveListenerOptions)
1760
+ .pipe(takeUntil(this.destroy$))
1761
+ .subscribe(() => {
1762
+ if (this.dragContainer.linkDraggingId && this.dragContainer.linkDraggingId !== this.item().id) {
1763
+ if (!this.linkDragDisabled) {
1764
+ this.barElement.classList.add(dropClass);
1765
+ this.dragContainer.emitLinkDragEntered({
1766
+ item: this.item(),
1767
+ element: this.barElement
1768
+ });
1769
+ }
1759
1770
  }
1760
- }
1761
- else {
1762
- this.barElement.classList.add(activeClass);
1763
- }
1764
- });
1765
- fromEvent(this.barElement, 'mouseleave', passiveListenerOptions)
1766
- .pipe(takeUntil(this.destroy$))
1767
- .subscribe(() => {
1768
- if (!this.dragContainer.linkDraggingId) {
1769
- this.barElement.classList.remove(activeClass);
1770
- }
1771
- else {
1772
- this.dragContainer.emitLinkDragLeaved();
1773
- }
1774
- this.barElement.classList.remove(dropClass);
1775
- });
1771
+ else {
1772
+ if (!this.dragDisabled || !this.linkDragDisabled) {
1773
+ this.barElement.classList.add(activeClass);
1774
+ }
1775
+ }
1776
+ });
1777
+ fromEvent(this.barElement, 'mouseleave', passiveListenerOptions)
1778
+ .pipe(takeUntil(this.destroy$))
1779
+ .subscribe(() => {
1780
+ if (!this.dragContainer.linkDraggingId) {
1781
+ this.barElement.classList.remove(activeClass);
1782
+ }
1783
+ else {
1784
+ this.dragContainer.emitLinkDragLeaved();
1785
+ }
1786
+ this.barElement.classList.remove(dropClass);
1787
+ });
1788
+ }
1776
1789
  }
1777
1790
  createBarDrag() {
1778
1791
  const dragRef = this.createDragRef(this.barElement);
1792
+ dragRef.disabled = this.dragDisabled;
1779
1793
  dragRef.lockAxis = 'x';
1780
1794
  dragRef.withBoundaryElement(this.dom.mainItems);
1781
1795
  dragRef.started.subscribe(() => {
@@ -1789,7 +1803,7 @@ class GanttBarDrag {
1789
1803
  this.barDragMove();
1790
1804
  }
1791
1805
  });
1792
- this.dragContainer.dragStarted.emit({ item: this.item.origin });
1806
+ this.dragContainer.dragStarted.emit({ item: this.item().origin });
1793
1807
  });
1794
1808
  dragRef.moved.subscribe((event) => {
1795
1809
  this.startScrollingIfNecessary(event.pointerPosition.x, event.pointerPosition.y);
@@ -1806,14 +1820,13 @@ class GanttBarDrag {
1806
1820
  this.dragScrolling = false;
1807
1821
  this.dragScrollDistance = 0;
1808
1822
  this.barDragMoveDistance = 0;
1809
- this.item.updateRefs({
1810
- width: this.ganttUpper.view.getDateRangeWidth(this.item.start, this.item.end),
1811
- x: this.ganttUpper.view.getXPointByDate(this.item.start),
1823
+ this.item().updateRefs({
1824
+ width: this.ganttUpper.view.getDateRangeWidth(this.item().start, this.item().end),
1825
+ x: this.ganttUpper.view.getXPointByDate(this.item().start),
1812
1826
  y: (this.ganttUpper.styles.lineHeight - this.ganttUpper.styles.barHeight) / 2 - 1
1813
1827
  });
1814
- this.dragContainer.dragEnded.emit({ item: this.item.origin });
1828
+ this.dragContainer.dragEnded.emit({ item: this.item().origin });
1815
1829
  });
1816
- this.barDragRef = dragRef;
1817
1830
  return dragRef;
1818
1831
  }
1819
1832
  createBarHandleDrags() {
@@ -1822,6 +1835,7 @@ class GanttBarDrag {
1822
1835
  handles.forEach((handle, index) => {
1823
1836
  const isBefore = index === 0;
1824
1837
  const dragRef = this.createDragRef(handle);
1838
+ dragRef.disabled = this.dragDisabled;
1825
1839
  dragRef.lockAxis = 'x';
1826
1840
  dragRef.withBoundaryElement(this.dom.mainItems);
1827
1841
  dragRef.started.subscribe(() => {
@@ -1844,7 +1858,7 @@ class GanttBarDrag {
1844
1858
  }
1845
1859
  }
1846
1860
  });
1847
- this.dragContainer.dragStarted.emit({ item: this.item.origin });
1861
+ this.dragContainer.dragStarted.emit({ item: this.item().origin });
1848
1862
  });
1849
1863
  dragRef.moved.subscribe((event) => {
1850
1864
  if (this.barHandleDragMoveRecordDiffs && this.barHandleDragMoveRecordDiffs > 0) {
@@ -1868,12 +1882,12 @@ class GanttBarDrag {
1868
1882
  this.dragScrolling = false;
1869
1883
  this.dragScrollDistance = 0;
1870
1884
  this.barHandleDragMoveDistance = 0;
1871
- this.item.updateRefs({
1872
- width: this.ganttUpper.view.getDateRangeWidth(this.item.start, this.item.end),
1873
- x: this.ganttUpper.view.getXPointByDate(this.item.start),
1885
+ this.item().updateRefs({
1886
+ width: this.ganttUpper.view.getDateRangeWidth(this.item().start, this.item().end),
1887
+ x: this.ganttUpper.view.getXPointByDate(this.item().start),
1874
1888
  y: (this.ganttUpper.styles.lineHeight - this.ganttUpper.styles.barHeight) / 2 - 1
1875
1889
  });
1876
- this.dragContainer.dragEnded.emit({ item: this.item.origin });
1890
+ this.dragContainer.dragEnded.emit({ item: this.item().origin });
1877
1891
  });
1878
1892
  dragRefs.push(dragRef);
1879
1893
  });
@@ -1885,6 +1899,7 @@ class GanttBarDrag {
1885
1899
  handles.forEach((handle, index) => {
1886
1900
  const isBegin = index === 0;
1887
1901
  const dragRef = this.dragDrop.createDrag(handle);
1902
+ dragRef.disabled = this.linkDragDisabled;
1888
1903
  dragRef.withBoundaryElement(this.dom.root);
1889
1904
  dragRef.beforeStarted.subscribe(() => {
1890
1905
  handle.style.pointerEvents = 'none';
@@ -1894,7 +1909,7 @@ class GanttBarDrag {
1894
1909
  this.createLinkDraggingLine();
1895
1910
  this.dragContainer.emitLinkDragStarted({
1896
1911
  element: this.barElement,
1897
- item: this.item,
1912
+ item: this.item(),
1898
1913
  pos: isBegin ? InBarPosition.start : InBarPosition.finish
1899
1914
  });
1900
1915
  });
@@ -1969,10 +1984,10 @@ class GanttBarDrag {
1969
1984
  this.barElement.classList.remove('gantt-bar-draggable-drag');
1970
1985
  }
1971
1986
  barDragMove() {
1972
- const currentX = this.item.refs.x + this.barDragMoveDistance + this.dragScrollDistance;
1987
+ const currentX = this.item().refs.x + this.barDragMoveDistance + this.dragScrollDistance;
1973
1988
  const currentDate = this.ganttUpper.view.getDateByXPoint(currentX);
1974
1989
  const currentStartX = this.ganttUpper.view.getXPointByDate(currentDate);
1975
- const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item.end, this.item.start);
1990
+ const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item().end, this.item().start);
1976
1991
  let start = currentDate;
1977
1992
  let end = currentDate.add(diffs, this.ganttUpper.view?.options?.datePrecisionUnit);
1978
1993
  // 日视图特殊逻辑处理
@@ -1987,59 +2002,59 @@ class GanttBarDrag {
1987
2002
  const left = currentX - this.barDragMoveDistance;
1988
2003
  this.barElement.style.left = left + 'px';
1989
2004
  }
1990
- this.openDragBackdrop(this.barElement, this.ganttUpper.view.getDateByXPoint(currentX), this.ganttUpper.view.getDateByXPoint(currentX + this.item.refs.width));
2005
+ this.openDragBackdrop(this.barElement, this.ganttUpper.view.getDateByXPoint(currentX), this.ganttUpper.view.getDateByXPoint(currentX + this.item().refs.width));
1991
2006
  if (!this.isStartOrEndInsideView(start, end)) {
1992
2007
  return;
1993
2008
  }
1994
2009
  this.updateItemDate(start, end);
1995
- this.dragContainer.dragMoved.emit({ item: this.item.origin });
2010
+ this.dragContainer.dragMoved.emit({ item: this.item().origin });
1996
2011
  }
1997
2012
  barBeforeHandleDragMove() {
1998
2013
  const { x, start, minRangeWidthWidth } = this.startOfBarHandle();
1999
- const width = this.item.refs.width + this.barHandleDragMoveAndScrollDistance * -1;
2000
- const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item.end, start);
2014
+ const width = this.item().refs.width + this.barHandleDragMoveAndScrollDistance * -1;
2015
+ const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item().end, start);
2001
2016
  if (width > dragMinWidth && diffs > 0) {
2002
2017
  this.barElement.style.width = width + 'px';
2003
2018
  this.barElement.style.left = x + 'px';
2004
- this.openDragBackdrop(this.barElement, start, this.item.end);
2005
- if (!this.isStartOrEndInsideView(start, this.item.end)) {
2019
+ this.openDragBackdrop(this.barElement, start, this.item().end);
2020
+ if (!this.isStartOrEndInsideView(start, this.item().end)) {
2006
2021
  return;
2007
2022
  }
2008
- this.updateItemDate(start, this.item.end);
2023
+ this.updateItemDate(start, this.item().end);
2009
2024
  }
2010
2025
  else {
2011
2026
  if (this.barHandleDragMoveRecordDiffs > 0 && diffs <= 0) {
2012
2027
  this.barElement.style.width = minRangeWidthWidth + 'px';
2013
- const x = this.ganttUpper.view.getXPointByDate(this.item.end);
2028
+ const x = this.ganttUpper.view.getXPointByDate(this.item().end);
2014
2029
  this.barElement.style.left = x + 'px';
2015
2030
  }
2016
- this.openDragBackdrop(this.barElement, this.item.end, this.item.end);
2017
- this.updateItemDate(this.item.end, this.item.end);
2031
+ this.openDragBackdrop(this.barElement, this.item().end, this.item().end);
2032
+ this.updateItemDate(this.item().end, this.item().end);
2018
2033
  }
2019
2034
  this.barHandleDragMoveRecordDiffs = diffs;
2020
- this.dragContainer.dragMoved.emit({ item: this.item.origin });
2035
+ this.dragContainer.dragMoved.emit({ item: this.item().origin });
2021
2036
  }
2022
2037
  barAfterHandleDragMove() {
2023
2038
  const { width, end } = this.endOfBarHandle();
2024
- const diffs = this.ganttUpper.view.differenceByPrecisionUnit(end, this.item.start);
2039
+ const diffs = this.ganttUpper.view.differenceByPrecisionUnit(end, this.item().start);
2025
2040
  if (width > dragMinWidth && diffs > 0) {
2026
2041
  this.barElement.style.width = width + 'px';
2027
- this.openDragBackdrop(this.barElement, this.item.start, end);
2028
- if (!this.isStartOrEndInsideView(this.item.start, end)) {
2042
+ this.openDragBackdrop(this.barElement, this.item().start, end);
2043
+ if (!this.isStartOrEndInsideView(this.item().start, end)) {
2029
2044
  return;
2030
2045
  }
2031
- this.updateItemDate(this.item.start, end);
2046
+ this.updateItemDate(this.item().start, end);
2032
2047
  }
2033
2048
  else {
2034
2049
  if (this.barHandleDragMoveRecordDiffs > 0 && diffs <= 0) {
2035
- const minRangeWidth = this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item.start);
2050
+ const minRangeWidth = this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item().start);
2036
2051
  this.barElement.style.width = minRangeWidth + 'px';
2037
2052
  }
2038
- this.openDragBackdrop(this.barElement, this.item.start, this.item.start);
2039
- this.updateItemDate(this.item.start, this.item.start);
2053
+ this.openDragBackdrop(this.barElement, this.item().start, this.item().start);
2054
+ this.updateItemDate(this.item().start, this.item().start);
2040
2055
  }
2041
2056
  this.barHandleDragMoveRecordDiffs = diffs;
2042
- this.dragContainer.dragMoved.emit({ item: this.item.origin });
2057
+ this.dragContainer.dragMoved.emit({ item: this.item().origin });
2043
2058
  }
2044
2059
  calcLinkLinePositions(target, isBefore) {
2045
2060
  const rootRect = this.dom.root.getBoundingClientRect();
@@ -2096,33 +2111,33 @@ class GanttBarDrag {
2096
2111
  const xThreshold = clientWidth * DROP_PROXIMITY_THRESHOLD;
2097
2112
  if (isBefore) {
2098
2113
  const { start, minRangeWidthWidth } = this.startOfBarHandle();
2099
- const xPointerByEndDate = this.ganttUpper.view.getXPointByDate(this.item.end);
2100
- isStartGreaterThanEnd = start.value > this.item.end.value;
2114
+ const xPointerByEndDate = this.ganttUpper.view.getXPointByDate(this.item().end);
2115
+ isStartGreaterThanEnd = start.value > this.item().end.value;
2101
2116
  isBarAppearsInView = xPointerByEndDate + minRangeWidthWidth + xThreshold <= scrollLeft + clientWidth;
2102
2117
  }
2103
2118
  else {
2104
2119
  const { end } = this.endOfBarHandle();
2105
- const xPointerByStartDate = this.ganttUpper.view.getXPointByDate(this.item.start);
2106
- isStartGreaterThanEnd = end.value < this.item.start.value;
2120
+ const xPointerByStartDate = this.ganttUpper.view.getXPointByDate(this.item().start);
2121
+ isStartGreaterThanEnd = end.value < this.item().start.value;
2107
2122
  isBarAppearsInView = scrollLeft + xThreshold <= xPointerByStartDate;
2108
2123
  }
2109
2124
  return isStartGreaterThanEnd && isBarAppearsInView ? true : false;
2110
2125
  }
2111
2126
  // Some data information about dragging start until it is equal to or greater than end
2112
2127
  startOfBarHandle() {
2113
- const x = this.item.refs.x + this.barHandleDragMoveAndScrollDistance;
2128
+ const x = this.item().refs.x + this.barHandleDragMoveAndScrollDistance;
2114
2129
  return {
2115
2130
  x,
2116
2131
  start: this.ganttUpper.view.getDateByXPoint(x),
2117
- minRangeWidthWidth: this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item.end)
2132
+ minRangeWidthWidth: this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item().end)
2118
2133
  };
2119
2134
  }
2120
2135
  // Some data information about dragging end of bar handle
2121
2136
  endOfBarHandle() {
2122
- const width = this.item.refs.width + this.barHandleDragMoveAndScrollDistance;
2137
+ const width = this.item().refs.width + this.barHandleDragMoveAndScrollDistance;
2123
2138
  return {
2124
2139
  width,
2125
- end: this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width)
2140
+ end: this.ganttUpper.view.getDateByXPoint(this.item().refs.x + width)
2126
2141
  };
2127
2142
  }
2128
2143
  stopScrolling() {
@@ -2141,34 +2156,55 @@ class GanttBarDrag {
2141
2156
  }
2142
2157
  }
2143
2158
  updateItemDate(start, end) {
2144
- this.item.updateDate(this.ganttUpper.view.startOfPrecision(start), this.ganttUpper.view.endOfPrecision(end));
2159
+ this.item().updateDate(this.ganttUpper.view.startOfPrecision(start), this.ganttUpper.view.endOfPrecision(end));
2145
2160
  }
2146
- createDrags(elementRef, item, ganttUpper) {
2147
- this.item = item;
2161
+ initialize(elementRef, item, ganttUpper) {
2148
2162
  this.barElement = elementRef.nativeElement;
2149
2163
  this.ganttUpper = ganttUpper;
2150
- if (this.dragDisabled && this.linkDragDisabled) {
2151
- return;
2164
+ this.item.set(item);
2165
+ }
2166
+ createBarDragRef() {
2167
+ if (this.barDragRef) {
2168
+ this.barDragRef.disabled = this.dragDisabled;
2152
2169
  }
2153
- else {
2154
- this.createMouseEvents();
2155
- if (!this.dragDisabled) {
2156
- const dragRef = this.createBarDrag();
2157
- const dragHandlesRefs = this.createBarHandleDrags();
2158
- this.dragRefs.push(dragRef, ...dragHandlesRefs);
2159
- }
2160
- if (!this.linkDragDisabled) {
2161
- const linkDragRefs = this.createLinkHandleDrags();
2162
- this.dragRefs.push(...linkDragRefs);
2163
- }
2170
+ else if (!this.dragDisabled) {
2171
+ this.barDragRef = this.createBarDrag();
2164
2172
  }
2165
2173
  }
2174
+ createBarHandleDragRefs() {
2175
+ if (this.barHandleDragRefs.length > 0) {
2176
+ this.barHandleDragRefs.forEach((dragRef) => {
2177
+ dragRef.disabled = this.dragDisabled;
2178
+ });
2179
+ }
2180
+ else if (!this.dragDisabled) {
2181
+ this.barHandleDragRefs = this.createBarHandleDrags();
2182
+ }
2183
+ }
2184
+ createLinkDragRefs() {
2185
+ if (this.linkDragRefs.length > 0) {
2186
+ this.linkDragRefs.forEach((dragRef) => {
2187
+ dragRef.disabled = this.linkDragDisabled;
2188
+ });
2189
+ }
2190
+ else if (!this.linkDragDisabled) {
2191
+ this.linkDragRefs = this.createLinkHandleDrags();
2192
+ }
2193
+ }
2194
+ createDrags() {
2195
+ this.createMouseEvents();
2196
+ this.createBarDragRef();
2197
+ this.createBarHandleDragRefs();
2198
+ this.createLinkDragRefs();
2199
+ }
2166
2200
  updateItem(item) {
2167
- this.item = item;
2201
+ this.item.set(item);
2168
2202
  }
2169
2203
  ngOnDestroy() {
2170
2204
  this.closeDragBackdrop();
2171
- this.dragRefs.forEach((dragRef) => dragRef.dispose());
2205
+ this.barDragRef?.dispose();
2206
+ this.linkDragRefs?.forEach((dragRef) => dragRef.dispose());
2207
+ this.barHandleDragRefs?.forEach((dragRef) => dragRef.dispose());
2172
2208
  this.destroy$.next();
2173
2209
  this.destroy$.complete();
2174
2210
  this.stopScrolling();
@@ -2293,7 +2329,7 @@ class NgxGanttBarComponent extends GanttItemUpper {
2293
2329
  // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
2294
2330
  this.ngZone.runOutsideAngular(() => {
2295
2331
  onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
2296
- this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);
2332
+ this.drag.initialize(this.elementRef, this.item, this.ganttUpper);
2297
2333
  });
2298
2334
  });
2299
2335
  this.setContentBackground();