@porscheinformatik/clr-addons 15.5.5 → 15.5.7

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.
@@ -7,9 +7,9 @@ export declare class ClrDropdownOverflowDirective implements AfterContentChecked
7
7
  private nestedDropdownChildren;
8
8
  readonly defaultItemMinHeightRem = 1.5;
9
9
  readonly marginBottomRem = 0.1;
10
- private destroy$;
11
10
  private alreadyChecked;
12
11
  private heightFix;
12
+ private nestedDropdownSubscription;
13
13
  constructor(elRef: ElementRef);
14
14
  ngAfterContentChecked(): void;
15
15
  ngOnDestroy(): void;
@@ -71,10 +71,16 @@ export class StatePersistenceKeyDirective {
71
71
  Object.keys(savedState.columns).forEach(prop => {
72
72
  const filter = this.getFilter(prop);
73
73
  if (filter) {
74
- const savedFilterValue = savedState.columns[prop].filterValue || {};
75
- Object.keys(savedFilterValue)
76
- .filter(valueKey => valueKey !== 'property')
77
- .forEach(valueKey => (filter[valueKey] = this.parseFilterValue(savedFilterValue[valueKey])));
74
+ /* if the saved value is empty filter send null */
75
+ const savedFilterValue = savedState.columns[prop].filterValue;
76
+ if (savedFilterValue == null) {
77
+ filter['value'] = null;
78
+ }
79
+ else {
80
+ Object.keys(savedFilterValue)
81
+ .filter(valueKey => valueKey !== 'property')
82
+ .forEach(valueKey => (filter[valueKey] = this.parseFilterValue(savedFilterValue[valueKey])));
83
+ }
78
84
  }
79
85
  });
80
86
  }
@@ -240,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
240
246
  type: ContentChildren,
241
247
  args: [ClrDatagridFilter, { descendants: true }]
242
248
  }] } });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uta2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGFncmlkL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlL3N0YXRlLXBlcnNpc3RlbmNlLWtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBRVgsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFFcEIsMEJBQTBCLEdBQzNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdqRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFVekIsTUFBTSxPQUFPLDRCQUE0QjtJQThCdkMsWUFBb0IsUUFBcUI7UUFBckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQWxCekMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRzFCLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQVczQixpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWEsQ0FBQztJQUU3QyxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0wsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxF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LDBCQUEwQjtpQkFDckM7a0dBVUMsT0FBTztzQkFETixLQUFLO3VCQUFDLHdCQUF3QjtnQkFJL0IsaUJBQWlCO3NCQURoQixLQUFLO3VCQUFDLHNCQUFzQjtnQkFJN0IscUJBQXFCO3NCQURwQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFJakMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFJbkMsY0FBYztzQkFEYixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJekQsYUFBYTtzQkFEWixlQUFlO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbHJEYXRhZ3JpZCxcbiAgQ2xyRGF0YWdyaWRDb21wYXJhdG9ySW50ZXJmYWNlLFxuICBDbHJEYXRhZ3JpZEZpbHRlcixcbiAgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2UsXG4gIENsckRhdGFncmlkUGFnaW5hdGlvbixcbiAgQ2xyRGF0YWdyaWRTb3J0T3JkZXIsXG4gIENsckRhdGFncmlkU3RhdGVJbnRlcmZhY2UsXG4gIERhdGFncmlkUHJvcGVydHlDb21wYXJhdG9yLFxufSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwgfSBmcm9tICcuL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlLW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWxheSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZU9wdGlvbnMgfSBmcm9tICcuL3N0YXRlLXBlcnNpc3RlbmNlLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuY29uc3QgREFURV9UWVBFID0gJ2RhdGUnO1xuXG5pbnRlcmZhY2UgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEge1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2xyU3RhdGVQZXJzaXN0ZW5jZUtleV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0ZVBlcnNpc3RlbmNlS2V5RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBlcnNpc3RlbmNlLlxuICAgKiAnS2V5JyByZXByZXNlbnRzIHRoZSBsb2NhbCBzdG9yYWdlIGtleSB1bmRlciB3aGljaCB0aGUgcGVyc2lzdGVuY2Ugc3RhdGUgaXMgc3RvcmVkLlxuICAgKlxuICAgKiBPcHRpb25hbCBmaWVsZHMgd2l0aCB0aGUgJ3BlcnNpc3QnIHByZWZpeCB0b2dnbGUgdGhlIHBlcnNpc3RlbmNlIG9mIHRoZSByZXNwZWN0aXZlIGRhdGFncmlkIGZ1bmN0aW9uYWxpdHksXG4gICAqIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFsd2F5cyAndHJ1ZScuXG4gICAqL1xuICBASW5wdXQoJ2NsclN0YXRlUGVyc2lzdGVuY2VLZXknKVxuICBvcHRpb25zOiBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucztcblxuICBASW5wdXQoJ2NsclVzZUxvY2FsU3RvcmVPbmx5JylcbiAgdXNlTG9jYWxTdG9yZU9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclBhZ2luYXRpb25EZXNjcmlwdGlvbicpXG4gIHBhZ2luYXRpb25EZXNjcmlwdGlvbiA9ICcnO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0YWdyaWRQYWdpbmF0aW9uKVxuICBwYWdpbmF0aW9uOiBDbHJEYXRhZ3JpZFBhZ2luYXRpb247XG5cbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZFBhZ2luYXRpb24sIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwYWdpbmF0aW9uRWxlbTogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkcmVuKENsckRhdGFncmlkRmlsdGVyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGN1c3RvbUZpbHRlcnM6IFF1ZXJ5TGlzdDxDbHJEYXRhZ3JpZEZpbHRlcj47XG5cbiAgY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbiA9IGZhbHNlO1xuICB3YXJuZWRBYm91dEN1c3RvbURlc2NyaXB0aW9uID0gZmFsc2U7XG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFncmlkOiBDbHJEYXRhZ3JpZCkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZXJ2ZXJEcml2ZW4pIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgY29uc3Qgdm9sYXRpbGVEYXRhU3RhdGUgPSB0aGlzLmdldFZvbGF0aWxlRGF0YVN0YXRlKCk7XG4gICAgY29uc3QgbG9jYWxTdG9yYWdlU3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG5cbiAgICB0aGlzLmluaXRGaWx0ZXIodm9sYXRpbGVEYXRhU3RhdGUpO1xuICAgIHRoaXMuaW5pdFNvcnRpbmcobG9jYWxTdG9yYWdlU3RhdGUpO1xuICAgIHRoaXMuaW5pdERhdGFncmlkUGVyc2lzdGVyKCk7XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RQYWdpbmF0aW9uID8/IHRydWU7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbj8ucGFnZSAmJiBwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICB0aGlzLmluaXRQYWdlU2l6ZVBlcnNpc3Rlcihsb2NhbFN0b3JhZ2VTdGF0ZSk7XG4gICAgICB0aGlzLmluaXRDdXJyZW50UGFnZSh2b2xhdGlsZURhdGFTdGF0ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2l0aCB0aGlzIG1ldGhvZCBmaWx0ZXJzIGNhbiBiZSBjbGVhcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBmb3IgY2xyU3RhdGVQZXJzaXN0ZW5jZUtleVxuICAgKiBAcGFyYW0gdXNlTG9jYWxTdG9yZU9ubHkgVGhlIGNsclVzZUxvY2FsU3RvcmVPbmx5IGluZGljYXRvclxuICAgKi9cbiAgc3RhdGljIGNsZWFyRmlsdGVycyhrZXk6IHN0cmluZywgdXNlTG9jYWxTdG9yZU9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSgodXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuZ2V0SXRlbShrZXkpKSB8fCB7fTtcbiAgICBkYXRhLmNvbHVtbnMgPSB7fTtcbiAgICAodXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFBhZ2VTaXplUGVyc2lzdGVyKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogcGVyc2lzdCBwYWdlIHNpemUgY2hhbmdlcyBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2Uuc2l6ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHBhZ2VTaXplID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpO1xuICAgICAgc3RhdGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMub3B0aW9ucy5rZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gICAgfSk7XG5cbiAgICAvKiBpbml0IHBhZ2Ugc2l6ZSBvZiBkYXRhZ3JpZCBpZiBhbHJlYWR5IHBlcnNpc3RlZCBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgaWYgKHNhdmVkU3RhdGUucGFnZVNpemUpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlLnNpemUgPSBzYXZlZFN0YXRlLnBhZ2VTaXplO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEN1cnJlbnRQYWdlKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogaW5pdCBjdXJyZW50IHBhZ2Ugb2YgZGF0YWdyaWQgaWYgYWxyZWFkeSBwZXJzaXN0ZWQgKi9cbiAgICBpZiAoc2F2ZWRTdGF0ZT8uY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMuZGF0YWdyaWQuaXRlbXMuY2hhbmdlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+ICh0aGlzLnBhZ2luYXRpb24ucGFnZS5jdXJyZW50ID0gc2F2ZWRTdGF0ZS5jdXJyZW50UGFnZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlcihzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0RmlsdGVycyA/PyB0cnVlO1xuICAgIGlmIChzYXZlZFN0YXRlLmNvbHVtbnMgJiYgZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBPYmplY3Qua2V5cyhzYXZlZFN0YXRlLmNvbHVtbnMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKHByb3ApO1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWRGaWx0ZXJWYWx1ZSA9IHNhdmVkU3RhdGUuY29sdW1uc1twcm9wXS5maWx0ZXJWYWx1ZSB8fCB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzYXZlZEZpbHRlclZhbHVlKVxuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZUtleSA9PiB2YWx1ZUtleSAhPT0gJ3Byb3BlcnR5JylcbiAgICAgICAgICAgIC5mb3JFYWNoKHZhbHVlS2V5ID0+ICgoZmlsdGVyIGFzIGFueSlbdmFsdWVLZXldID0gdGhpcy5wYXJzZUZpbHRlclZhbHVlKHNhdmVkRmlsdGVyVmFsdWVbdmFsdWVLZXldKSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRTb3J0aW5nKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydFBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0U29ydCA/PyB0cnVlO1xuICAgIGlmIChzYXZlZFN0YXRlLnNvcnRCeSAmJiBzb3J0UGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICB0aGlzLmRhdGFncmlkLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5nZXRTb3J0UHJvcGVydHkoY29sdW1uLnNvcnRCeSkgPT09IHNhdmVkU3RhdGUuc29ydEJ5KSB7XG4gICAgICAgICAgY29sdW1uLnNvcnRPcmRlciA9IHNhdmVkU3RhdGUuc29ydFJldmVyc2UgPyBDbHJEYXRhZ3JpZFNvcnRPcmRlci5ERVNDIDogQ2xyRGF0YWdyaWRTb3J0T3JkZXIuQVNDO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbi5zb3J0T3JkZXIgPSBDbHJEYXRhZ3JpZFNvcnRPcmRlci5VTlNPUlRFRDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0RGF0YWdyaWRQZXJzaXN0ZXIoKSB7XG4gICAgLy8gZGVsYXkgaXMgbmVlZGVkLCBhcyBvbkRlc3Ryb3kgdGhlIGZpbHRlcnMgZW1pdCBlbXB0eSB2YWx1ZXMuXG4gICAgLy8gU28gZGVsYXkgaXQgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCBjeWNsZSwgc28gdGhlIGRpcmVjdGl2ZSBpcyBhbHNvIGRlc3Ryb3llZCBiZWZvcmUgaXQgZ2V0cyB0aGUgbmV4dCB2YWx1ZXNcbiAgICB0aGlzLmRhdGFncmlkLnJlZnJlc2gucGlwZShkZWxheSgwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZGdTdGF0ZSA9PiB7XG4gICAgICB0aGlzLnBlcnNpc3RGaWx0ZXJzQW5kQ3VycmVudFBhZ2UoZGdTdGF0ZSk7XG4gICAgICB0aGlzLnBlcnNpc3RTb3J0aW5nKGRnU3RhdGUpO1xuXG4gICAgICBpZiAodGhpcy5jYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFncmlkLml0ZW1zLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0RmlsdGVyc0FuZEN1cnJlbnRQYWdlKGRnU3RhdGU6IENsckRhdGFncmlkU3RhdGVJbnRlcmZhY2U8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdEZpbHRlcnMgPz8gdHJ1ZTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RQYWdpbmF0aW9uID8/IHRydWU7XG5cbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0Vm9sYXRpbGVEYXRhU3RhdGUoKTtcbiAgICBzdGF0ZS5jb2x1bW5zID0gc3RhdGUuY29sdW1ucyB8fCB7fTtcblxuICAgIGlmIChwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBzdGF0ZS5jdXJyZW50UGFnZSA9IGRnU3RhdGUucGFnZT8uY3VycmVudDtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBPYmplY3Qua2V5cyhzdGF0ZS5jb2x1bW5zKS5mb3JFYWNoKHByb3AgPT4gKHN0YXRlLmNvbHVtbnNbcHJvcF0uZmlsdGVyVmFsdWUgPSB1bmRlZmluZWQpKTtcbiAgICAgIGRnU3RhdGUuZmlsdGVycz8uZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlcik7XG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIHN0YXRlLmNvbHVtbnNbcHJvcGVydHldID0gc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0gfHwge307XG4gICAgICAgICAgc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0uZmlsdGVyVmFsdWUgPSB0aGlzLmVucmljaEZpbHRlclZhbHVlKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgICh0aGlzLnVzZUxvY2FsU3RvcmVPbmx5ID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpLnNldEl0ZW0odGhpcy5vcHRpb25zLmtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdFNvcnRpbmcoZGdTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZUludGVyZmFjZTx1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFNvcnQgPz8gdHJ1ZTtcbiAgICBpZiAoc29ydFBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG4gICAgICBzdGF0ZS5zb3J0QnkgPSB0aGlzLmdldFNvcnRQcm9wZXJ0eShkZ1N0YXRlLnNvcnQ/LmJ5KTtcbiAgICAgIHN0YXRlLnNvcnRSZXZlcnNlID0gZGdTdGF0ZS5zb3J0Py5yZXZlcnNlO1xuXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0aW9uIGRlc2NyaXB0aW9uIG11c3QgYmUgc2V0IGJ5IHRoaXMgZGlyZWN0aXZlLFxuICAgKiBvdGhlcndpc2Ugd2UgY2FuJ3QgdXBkYXRlIGRhdGFncmlkIHZhbHVlcyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgKiB3aXRob3V0IGdldHRpbmcgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVQYWdpbmF0aW9uRGVzY3JpcHRpb24oKSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkVsZW0gJiYgdGhpcy5wYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uRGVzY0VsZW0gPSAoPEhUTUxFbGVtZW50PnRoaXMucGFnaW5hdGlvbkVsZW0ubmF0aXZlRWxlbWVudCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgJ3BhZ2luYXRpb24tZGVzY3JpcHRpb24nXG4gICAgICApPy5bMF07XG4gICAgICBpZiAocGFnaW5hdGlvbkRlc2NFbGVtKSB7XG4gICAgICAgIGlmICghdGhpcy53YXJuZWRBYm91dEN1c3RvbURlc2NyaXB0aW9uICYmIHBhZ2luYXRpb25EZXNjRWxlbS50ZXh0Q29udGVudC50cmltKCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdXaGVuIHVzaW5nIGNsclN0YXRlUGVyc2lzdGVuY2VLZXkgZGlyZWN0aXZlLCB5b3Ugc2hvdWxkIG5vdCB1c2UgY3VzdG9tIHBhZ2luYXRpb24gZGVzY3JpcHRpb24nICtcbiAgICAgICAgICAgICAgJyBpbnNpZGUgcGFnaW5hdGlvbiBjb21wb25lbnQgY29udGVudCwgYnV0IHVzZSBbY2xyUGFnaW5hdGlvbkRlc2NyaXB0aW9uXSBvbiBjbHItZGF0YWdyaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICBwYWdpbmF0aW9uRGVzY0VsZW0udGV4dENvbnRlbnQgPSB0aGlzLnBhZ2luYXRpb25EZXNjcmlwdGlvblxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7Zmlyc3R9fScsICh0aGlzLnBhZ2luYXRpb24uZmlyc3RJdGVtICsgMSkudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKCd7e2xhc3R9fScsICh0aGlzLnBhZ2luYXRpb24ubGFzdEl0ZW0gKyAxKS50b1N0cmluZygpKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7dG90YWx9fScsIHRoaXMucGFnaW5hdGlvbi50b3RhbEl0ZW1zLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YXRlIG9mIHZvbGF0aWxlIGRhdGEuIFRoaXMgY2FuIGJlIGluZmx1ZW5jZWQgYnkgY2xyVXNlTG9jYWxTdG9yZU9ubHkuXG4gICAqL1xuICBnZXRWb2xhdGlsZURhdGFTdGF0ZSgpOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoKHRoaXMudXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuZ2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5KSkgfHwge307XG4gIH1cblxuICBnZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5vcHRpb25zLmtleSkpIHx8IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFzIGEgZGF0ZSBpcyBzZXJpYWxpemVkIGFzIHN0cmluZywgYnV0IG5vdCBkZXNlcmlhbGl6ZWQgYXMgZGF0ZVxuICAgKiB3ZSBuZWVkIHRvIGFkZCBzb21lIG1ldGEgaW5mb3JtYXRpb24gdG8gZG8gdGhhdCBtYW51YWxseSBsYXRlclxuICAgKi9cbiAgcHJpdmF0ZSBlbnJpY2hGaWx0ZXJWYWx1ZShmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBPYmplY3Qua2V5cyhmaWx0ZXIpLmZvckVhY2goXG4gICAgICBrZXkgPT5cbiAgICAgICAgKHJlc3VsdFtrZXldID1cbiAgICAgICAgICBmaWx0ZXJba2V5XSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEQVRFX1RZUEUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlcltrZXldLFxuICAgICAgICAgICAgICB9IGFzIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhKVxuICAgICAgICAgICAgOiBmaWx0ZXJba2V5XSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBmaWx0ZXIgdmFsdWVzIHdpdGggbWV0YSBpbmZvcm1hdGlvbiBsaWtlIGRhdGUsIHdoaWNoIG5lZWRzIG1hbnVhbCBkZXNlcmlhbGl6YXRpb24gdG8gYSBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUZpbHRlclZhbHVlKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuICh2YWx1ZSBhcyBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSk/LnR5cGUgPT09IERBVEVfVFlQRVxuICAgICAgPyBuZXcgRGF0ZSgodmFsdWUgYXMgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEpLnZhbHVlIGFzIHN0cmluZylcbiAgICAgIDogdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcihwcm9wOiBzdHJpbmcpOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTx1bmtub3duLCB1bmtub3duPiB7XG4gICAgLy8gZ2V0IGRlZmF1bHQgZmlsdGVyIG9yIGN1c3RvbSBmaWx0ZXJcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kYXRhZ3JpZC5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0gcHJvcCk/LmZpbHRlciB8fFxuICAgICAgdGhpcy5jdXN0b21GaWx0ZXJzLmZpbmQoZmlsdGVyID0+IHRoaXMuZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlci5maWx0ZXIpID09PSBwcm9wKT8uZmlsdGVyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlcjogQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8dW5rbm93biwgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIC8vIGZvciBOZXN0ZWRQcm9wZXJ0eSB3ZSBuZWVkIHRvIGdldCB0aGUgb3JpZ2luYWwgcHJvcGVydHlcbiAgICBjb25zdCBmaWx0ZXJXaXRoUHJvcCA9IGZpbHRlciBhcyB1bmtub3duIGFzIHsgcHJvcGVydHk6IHVua25vd24gfTtcbiAgICByZXR1cm4gKChmaWx0ZXJXaXRoUHJvcC5wcm9wZXJ0eSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LnByb3AgfHwgZmlsdGVyV2l0aFByb3AucHJvcGVydHkpIGFzIHN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFByb3BlcnR5KHNvcnRCeTogQ2xyRGF0YWdyaWRDb21wYXJhdG9ySW50ZXJmYWNlPHVua25vd24+IHwgc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoc29ydEJ5KSB7XG4gICAgICBpZiAodHlwZW9mIHNvcnRCeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRCeTtcbiAgICAgIH1cbiAgICAgIGlmIChzb3J0QnkgaW5zdGFuY2VvZiBEYXRhZ3JpZFByb3BlcnR5Q29tcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gc29ydEJ5LnByb3A7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uta2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGFncmlkL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlL3N0YXRlLXBlcnNpc3RlbmNlLWtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBRVgsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFFcEIsMEJBQTBCLEdBQzNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdqRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFVekIsTUFBTSxPQUFPLDRCQUE0QjtJQThCdkMsWUFBb0IsUUFBcUI7UUFBckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQWxCekMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRzFCLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQVczQixpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWEsQ0FBQztJQUU3QyxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0wsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxF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QnpCLHFCQUFxQixpRkFHckIscUJBQXFCLDJCQUFVLFVBQVUsZ0RBR3RDLGlCQUFpQjsyRkF2QnZCLDRCQUE0QjtrQkFIeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2lCQUNyQztrR0FVQyxPQUFPO3NCQUROLEtBQUs7dUJBQUMsd0JBQXdCO2dCQUkvQixpQkFBaUI7c0JBRGhCLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUk3QixxQkFBcUI7c0JBRHBCLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUlqQyxVQUFVO3NCQURULFlBQVk7dUJBQUMscUJBQXFCO2dCQUluQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl6RCxhQUFhO3NCQURaLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENsckRhdGFncmlkLFxuICBDbHJEYXRhZ3JpZENvbXBhcmF0b3JJbnRlcmZhY2UsXG4gIENsckRhdGFncmlkRmlsdGVyLFxuICBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZSxcbiAgQ2xyRGF0YWdyaWRQYWdpbmF0aW9uLFxuICBDbHJEYXRhZ3JpZFNvcnRPcmRlcixcbiAgQ2xyRGF0YWdyaWRTdGF0ZUludGVyZmFjZSxcbiAgRGF0YWdyaWRQcm9wZXJ0eUNvbXBhcmF0b3IsXG59IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB9IGZyb20gJy4vZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UtbW9kZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IGRlbGF5LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucyB9IGZyb20gJy4vc3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5jb25zdCBEQVRFX1RZUEUgPSAnZGF0ZSc7XG5cbmludGVyZmFjZSBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSB7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5XScsXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRlUGVyc2lzdGVuY2VLZXlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGVyc2lzdGVuY2UuXG4gICAqICdLZXknIHJlcHJlc2VudHMgdGhlIGxvY2FsIHN0b3JhZ2Uga2V5IHVuZGVyIHdoaWNoIHRoZSBwZXJzaXN0ZW5jZSBzdGF0ZSBpcyBzdG9yZWQuXG4gICAqXG4gICAqIE9wdGlvbmFsIGZpZWxkcyB3aXRoIHRoZSAncGVyc2lzdCcgcHJlZml4IHRvZ2dsZSB0aGUgcGVyc2lzdGVuY2Ugb2YgdGhlIHJlc3BlY3RpdmUgZGF0YWdyaWQgZnVuY3Rpb25hbGl0eSxcbiAgICogdGhlIGRlZmF1bHQgdmFsdWUgaXMgYWx3YXlzICd0cnVlJy5cbiAgICovXG4gIEBJbnB1dCgnY2xyU3RhdGVQZXJzaXN0ZW5jZUtleScpXG4gIG9wdGlvbnM6IFN0YXRlUGVyc2lzdGVuY2VPcHRpb25zO1xuXG4gIEBJbnB1dCgnY2xyVXNlTG9jYWxTdG9yZU9ubHknKVxuICB1c2VMb2NhbFN0b3JlT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnY2xyUGFnaW5hdGlvbkRlc2NyaXB0aW9uJylcbiAgcGFnaW5hdGlvbkRlc2NyaXB0aW9uID0gJyc7XG5cbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZFBhZ2luYXRpb24pXG4gIHBhZ2luYXRpb246IENsckRhdGFncmlkUGFnaW5hdGlvbjtcblxuICBAQ29udGVudENoaWxkKENsckRhdGFncmlkUGFnaW5hdGlvbiwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHBhZ2luYXRpb25FbGVtOiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ2xyRGF0YWdyaWRGaWx0ZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY3VzdG9tRmlsdGVyczogUXVlcnlMaXN0PENsckRhdGFncmlkRmlsdGVyPjtcblxuICBjYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uID0gZmFsc2U7XG4gIHdhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gPSBmYWxzZTtcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YWdyaWQ6IENsckRhdGFncmlkKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlcnZlckRyaXZlbikge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBjb25zdCB2b2xhdGlsZURhdGFTdGF0ZSA9IHRoaXMuZ2V0Vm9sYXRpbGVEYXRhU3RhdGUoKTtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2VTdGF0ZSA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlU3RhdGUoKTtcblxuICAgIHRoaXMuaW5pdEZpbHRlcih2b2xhdGlsZURhdGFTdGF0ZSk7XG4gICAgdGhpcy5pbml0U29ydGluZyhsb2NhbFN0b3JhZ2VTdGF0ZSk7XG4gICAgdGhpcy5pbml0RGF0YWdyaWRQZXJzaXN0ZXIoKTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFBhZ2luYXRpb24gPz8gdHJ1ZTtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uPy5wYWdlICYmIHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5pdFBhZ2VTaXplUGVyc2lzdGVyKGxvY2FsU3RvcmFnZVN0YXRlKTtcbiAgICAgIHRoaXMuaW5pdEN1cnJlbnRQYWdlKHZvbGF0aWxlRGF0YVN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5jYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXRoIHRoaXMgbWV0aG9kIGZpbHRlcnMgY2FuIGJlIGNsZWFyZWRcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IGZvciBjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5XG4gICAqIEBwYXJhbSB1c2VMb2NhbFN0b3JlT25seSBUaGUgY2xyVXNlTG9jYWxTdG9yZU9ubHkgaW5kaWNhdG9yXG4gICAqL1xuICBzdGF0aWMgY2xlYXJGaWx0ZXJzKGtleTogc3RyaW5nLCB1c2VMb2NhbFN0b3JlT25seTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKCh1c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5nZXRJdGVtKGtleSkpIHx8IHt9O1xuICAgIGRhdGEuY29sdW1ucyA9IHt9O1xuICAgICh1c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UGFnZVNpemVQZXJzaXN0ZXIoc2F2ZWRTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwpIHtcbiAgICAvKiBwZXJzaXN0IHBhZ2Ugc2l6ZSBjaGFuZ2VzIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICB0aGlzLnBhZ2luYXRpb24ucGFnZS5zaXplQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUocGFnZVNpemUgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG4gICAgICBzdGF0ZS5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vcHRpb25zLmtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgICB9KTtcblxuICAgIC8qIGluaXQgcGFnZSBzaXplIG9mIGRhdGFncmlkIGlmIGFscmVhZHkgcGVyc2lzdGVkIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICBpZiAoc2F2ZWRTdGF0ZS5wYWdlU2l6ZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2Uuc2l6ZSA9IHNhdmVkU3RhdGUucGFnZVNpemU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q3VycmVudFBhZ2Uoc2F2ZWRTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwpIHtcbiAgICAvKiBpbml0IGN1cnJlbnQgcGFnZSBvZiBkYXRhZ3JpZCBpZiBhbHJlYWR5IHBlcnNpc3RlZCAqL1xuICAgIGlmIChzYXZlZFN0YXRlPy5jdXJyZW50UGFnZSkge1xuICAgICAgdGhpcy5kYXRhZ3JpZC5pdGVtcy5jaGFuZ2UucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gKHRoaXMucGFnaW5hdGlvbi5wYWdlLmN1cnJlbnQgPSBzYXZlZFN0YXRlLmN1cnJlbnRQYWdlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0RmlsdGVyKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RGaWx0ZXJzID8/IHRydWU7XG4gICAgaWYgKHNhdmVkU3RhdGUuY29sdW1ucyAmJiBmaWx0ZXJQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUuY29sdW1ucykuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIocHJvcCk7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAvKiBpZiB0aGUgc2F2ZWQgdmFsdWUgaXMgZW1wdHkgZmlsdGVyIHNlbmQgbnVsbCAqL1xuICAgICAgICAgIGNvbnN0IHNhdmVkRmlsdGVyVmFsdWUgPSBzYXZlZFN0YXRlLmNvbHVtbnNbcHJvcF0uZmlsdGVyVmFsdWU7XG4gICAgICAgICAgaWYgKHNhdmVkRmlsdGVyVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgKGZpbHRlciBhcyBhbnkpWyd2YWx1ZSddID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2F2ZWRGaWx0ZXJWYWx1ZSlcbiAgICAgICAgICAgICAgLmZpbHRlcih2YWx1ZUtleSA9PiB2YWx1ZUtleSAhPT0gJ3Byb3BlcnR5JylcbiAgICAgICAgICAgICAgLmZvckVhY2godmFsdWVLZXkgPT4gKChmaWx0ZXIgYXMgYW55KVt2YWx1ZUtleV0gPSB0aGlzLnBhcnNlRmlsdGVyVmFsdWUoc2F2ZWRGaWx0ZXJWYWx1ZVt2YWx1ZUtleV0pKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRTb3J0aW5nKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydFBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0U29ydCA/PyB0cnVlO1xuICAgIGlmIChzYXZlZFN0YXRlLnNvcnRCeSAmJiBzb3J0UGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICB0aGlzLmRhdGFncmlkLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5nZXRTb3J0UHJvcGVydHkoY29sdW1uLnNvcnRCeSkgPT09IHNhdmVkU3RhdGUuc29ydEJ5KSB7XG4gICAgICAgICAgY29sdW1uLnNvcnRPcmRlciA9IHNhdmVkU3RhdGUuc29ydFJldmVyc2UgPyBDbHJEYXRhZ3JpZFNvcnRPcmRlci5ERVNDIDogQ2xyRGF0YWdyaWRTb3J0T3JkZXIuQVNDO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbi5zb3J0T3JkZXIgPSBDbHJEYXRhZ3JpZFNvcnRPcmRlci5VTlNPUlRFRDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0RGF0YWdyaWRQZXJzaXN0ZXIoKSB7XG4gICAgLy8gZGVsYXkgaXMgbmVlZGVkLCBhcyBvbkRlc3Ryb3kgdGhlIGZpbHRlcnMgZW1pdCBlbXB0eSB2YWx1ZXMuXG4gICAgLy8gU28gZGVsYXkgaXQgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCBjeWNsZSwgc28gdGhlIGRpcmVjdGl2ZSBpcyBhbHNvIGRlc3Ryb3llZCBiZWZvcmUgaXQgZ2V0cyB0aGUgbmV4dCB2YWx1ZXNcbiAgICB0aGlzLmRhdGFncmlkLnJlZnJlc2gucGlwZShkZWxheSgwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZGdTdGF0ZSA9PiB7XG4gICAgICB0aGlzLnBlcnNpc3RGaWx0ZXJzQW5kQ3VycmVudFBhZ2UoZGdTdGF0ZSk7XG4gICAgICB0aGlzLnBlcnNpc3RTb3J0aW5nKGRnU3RhdGUpO1xuXG4gICAgICBpZiAodGhpcy5jYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFncmlkLml0ZW1zLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0RmlsdGVyc0FuZEN1cnJlbnRQYWdlKGRnU3RhdGU6IENsckRhdGFncmlkU3RhdGVJbnRlcmZhY2U8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdEZpbHRlcnMgPz8gdHJ1ZTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RQYWdpbmF0aW9uID8/IHRydWU7XG5cbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0Vm9sYXRpbGVEYXRhU3RhdGUoKTtcbiAgICBzdGF0ZS5jb2x1bW5zID0gc3RhdGUuY29sdW1ucyB8fCB7fTtcblxuICAgIGlmIChwYWdpbmF0aW9uUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBzdGF0ZS5jdXJyZW50UGFnZSA9IGRnU3RhdGUucGFnZT8uY3VycmVudDtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBPYmplY3Qua2V5cyhzdGF0ZS5jb2x1bW5zKS5mb3JFYWNoKHByb3AgPT4gKHN0YXRlLmNvbHVtbnNbcHJvcF0uZmlsdGVyVmFsdWUgPSB1bmRlZmluZWQpKTtcbiAgICAgIGRnU3RhdGUuZmlsdGVycz8uZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlcik7XG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIHN0YXRlLmNvbHVtbnNbcHJvcGVydHldID0gc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0gfHwge307XG4gICAgICAgICAgc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0uZmlsdGVyVmFsdWUgPSB0aGlzLmVucmljaEZpbHRlclZhbHVlKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgICh0aGlzLnVzZUxvY2FsU3RvcmVPbmx5ID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpLnNldEl0ZW0odGhpcy5vcHRpb25zLmtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdFNvcnRpbmcoZGdTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZUludGVyZmFjZTx1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRQZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFNvcnQgPz8gdHJ1ZTtcbiAgICBpZiAoc29ydFBlcnNpc3RlbmNlRW5hYmxlZCkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG4gICAgICBzdGF0ZS5zb3J0QnkgPSB0aGlzLmdldFNvcnRQcm9wZXJ0eShkZ1N0YXRlLnNvcnQ/LmJ5KTtcbiAgICAgIHN0YXRlLnNvcnRSZXZlcnNlID0gZGdTdGF0ZS5zb3J0Py5yZXZlcnNlO1xuXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0aW9uIGRlc2NyaXB0aW9uIG11c3QgYmUgc2V0IGJ5IHRoaXMgZGlyZWN0aXZlLFxuICAgKiBvdGhlcndpc2Ugd2UgY2FuJ3QgdXBkYXRlIGRhdGFncmlkIHZhbHVlcyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgKiB3aXRob3V0IGdldHRpbmcgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVQYWdpbmF0aW9uRGVzY3JpcHRpb24oKSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkVsZW0gJiYgdGhpcy5wYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uRGVzY0VsZW0gPSAoPEhUTUxFbGVtZW50PnRoaXMucGFnaW5hdGlvbkVsZW0ubmF0aXZlRWxlbWVudCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgJ3BhZ2luYXRpb24tZGVzY3JpcHRpb24nXG4gICAgICApPy5bMF07XG4gICAgICBpZiAocGFnaW5hdGlvbkRlc2NFbGVtKSB7XG4gICAgICAgIGlmICghdGhpcy53YXJuZWRBYm91dEN1c3RvbURlc2NyaXB0aW9uICYmIHBhZ2luYXRpb25EZXNjRWxlbS50ZXh0Q29udGVudC50cmltKCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdXaGVuIHVzaW5nIGNsclN0YXRlUGVyc2lzdGVuY2VLZXkgZGlyZWN0aXZlLCB5b3Ugc2hvdWxkIG5vdCB1c2UgY3VzdG9tIHBhZ2luYXRpb24gZGVzY3JpcHRpb24nICtcbiAgICAgICAgICAgICAgJyBpbnNpZGUgcGFnaW5hdGlvbiBjb21wb25lbnQgY29udGVudCwgYnV0IHVzZSBbY2xyUGFnaW5hdGlvbkRlc2NyaXB0aW9uXSBvbiBjbHItZGF0YWdyaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICBwYWdpbmF0aW9uRGVzY0VsZW0udGV4dENvbnRlbnQgPSB0aGlzLnBhZ2luYXRpb25EZXNjcmlwdGlvblxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7Zmlyc3R9fScsICh0aGlzLnBhZ2luYXRpb24uZmlyc3RJdGVtICsgMSkudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKCd7e2xhc3R9fScsICh0aGlzLnBhZ2luYXRpb24ubGFzdEl0ZW0gKyAxKS50b1N0cmluZygpKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7dG90YWx9fScsIHRoaXMucGFnaW5hdGlvbi50b3RhbEl0ZW1zLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YXRlIG9mIHZvbGF0aWxlIGRhdGEuIFRoaXMgY2FuIGJlIGluZmx1ZW5jZWQgYnkgY2xyVXNlTG9jYWxTdG9yZU9ubHkuXG4gICAqL1xuICBnZXRWb2xhdGlsZURhdGFTdGF0ZSgpOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoKHRoaXMudXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuZ2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5KSkgfHwge307XG4gIH1cblxuICBnZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5vcHRpb25zLmtleSkpIHx8IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFzIGEgZGF0ZSBpcyBzZXJpYWxpemVkIGFzIHN0cmluZywgYnV0IG5vdCBkZXNlcmlhbGl6ZWQgYXMgZGF0ZVxuICAgKiB3ZSBuZWVkIHRvIGFkZCBzb21lIG1ldGEgaW5mb3JtYXRpb24gdG8gZG8gdGhhdCBtYW51YWxseSBsYXRlclxuICAgKi9cbiAgcHJpdmF0ZSBlbnJpY2hGaWx0ZXJWYWx1ZShmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBPYmplY3Qua2V5cyhmaWx0ZXIpLmZvckVhY2goXG4gICAgICBrZXkgPT5cbiAgICAgICAgKHJlc3VsdFtrZXldID1cbiAgICAgICAgICBmaWx0ZXJba2V5XSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEQVRFX1RZUEUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlcltrZXldLFxuICAgICAgICAgICAgICB9IGFzIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhKVxuICAgICAgICAgICAgOiBmaWx0ZXJba2V5XSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBmaWx0ZXIgdmFsdWVzIHdpdGggbWV0YSBpbmZvcm1hdGlvbiBsaWtlIGRhdGUsIHdoaWNoIG5lZWRzIG1hbnVhbCBkZXNlcmlhbGl6YXRpb24gdG8gYSBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUZpbHRlclZhbHVlKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuICh2YWx1ZSBhcyBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSk/LnR5cGUgPT09IERBVEVfVFlQRVxuICAgICAgPyBuZXcgRGF0ZSgodmFsdWUgYXMgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEpLnZhbHVlIGFzIHN0cmluZylcbiAgICAgIDogdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcihwcm9wOiBzdHJpbmcpOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTx1bmtub3duLCB1bmtub3duPiB7XG4gICAgLy8gZ2V0IGRlZmF1bHQgZmlsdGVyIG9yIGN1c3RvbSBmaWx0ZXJcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kYXRhZ3JpZC5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0gcHJvcCk/LmZpbHRlciB8fFxuICAgICAgdGhpcy5jdXN0b21GaWx0ZXJzLmZpbmQoZmlsdGVyID0+IHRoaXMuZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlci5maWx0ZXIpID09PSBwcm9wKT8uZmlsdGVyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlcjogQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8dW5rbm93biwgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIC8vIGZvciBOZXN0ZWRQcm9wZXJ0eSB3ZSBuZWVkIHRvIGdldCB0aGUgb3JpZ2luYWwgcHJvcGVydHlcbiAgICBjb25zdCBmaWx0ZXJXaXRoUHJvcCA9IGZpbHRlciBhcyB1bmtub3duIGFzIHsgcHJvcGVydHk6IHVua25vd24gfTtcbiAgICByZXR1cm4gKChmaWx0ZXJXaXRoUHJvcC5wcm9wZXJ0eSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LnByb3AgfHwgZmlsdGVyV2l0aFByb3AucHJvcGVydHkpIGFzIHN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFByb3BlcnR5KHNvcnRCeTogQ2xyRGF0YWdyaWRDb21wYXJhdG9ySW50ZXJmYWNlPHVua25vd24+IHwgc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoc29ydEJ5KSB7XG4gICAgICBpZiAodHlwZW9mIHNvcnRCeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRCeTtcbiAgICAgIH1cbiAgICAgIGlmIChzb3J0QnkgaW5zdGFuY2VvZiBEYXRhZ3JpZFByb3BlcnR5Q29tcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gc29ydEJ5LnByb3A7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -5,15 +5,12 @@
5
5
  */
6
6
  import { ContentChildren, Directive, ElementRef, Input, QueryList, } from '@angular/core';
7
7
  import { ClrDropdown } from '@clr/angular';
8
- import { Subject } from 'rxjs';
9
- import { takeUntil } from 'rxjs/operators';
10
8
  import * as i0 from "@angular/core";
11
9
  export class ClrDropdownOverflowDirective {
12
10
  constructor(elRef) {
13
11
  this.elRef = elRef;
14
12
  this.defaultItemMinHeightRem = 1.5;
15
13
  this.marginBottomRem = 0.1;
16
- this.destroy$ = new Subject();
17
14
  this.alreadyChecked = false;
18
15
  this.heightFix = 27;
19
16
  }
@@ -22,19 +19,20 @@ export class ClrDropdownOverflowDirective {
22
19
  if (!this.nestedDropdownChildren?.length) {
23
20
  this.applyDropdownOverflowStyles();
24
21
  }
25
- this.nestedDropdownChildren.changes.pipe(takeUntil(this.destroy$)).subscribe((children) => {
26
- // if there are any nested dropdowns, our overflow fix prevents those from showing and needs to be removed
27
- if (!children?.length) {
28
- this.applyDropdownOverflowStyles();
29
- }
30
- else if (children?.length) {
31
- this.removeDropdownOverflowStyles();
32
- }
33
- });
22
+ if (!this.nestedDropdownSubscription) {
23
+ this.nestedDropdownSubscription = this.nestedDropdownChildren.changes.subscribe((children) => {
24
+ // if there are any nested dropdowns, our overflow fix prevents those from showing and needs to be removed
25
+ if (!children?.length) {
26
+ this.applyDropdownOverflowStyles();
27
+ }
28
+ else if (children?.length) {
29
+ this.removeDropdownOverflowStyles();
30
+ }
31
+ });
32
+ }
34
33
  }
35
34
  ngOnDestroy() {
36
- this.destroy$.next();
37
- this.destroy$.complete();
35
+ this.nestedDropdownSubscription?.unsubscribe();
38
36
  }
39
37
  applyDropdownOverflowStyles() {
40
38
  // the vertical position of our element in the current window
@@ -65,6 +63,7 @@ export class ClrDropdownOverflowDirective {
65
63
  }
66
64
  this.elRef.nativeElement.style.maxHeight = null;
67
65
  this.elRef.nativeElement.style.overflowY = null;
66
+ this.alreadyChecked = false;
68
67
  }
69
68
  getAllChildDropdownMenuItems() {
70
69
  return this.elRef.nativeElement.getElementsByClassName('dropdown-item');
@@ -118,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
118
117
  type: ContentChildren,
119
118
  args: [ClrDropdown, { descendants: true }]
120
119
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xyLWRyb3Bkb3duLW92ZXJmbG93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2Ryb3Bkb3duL2Nsci1kcm9wZG93bi1vdmVyZmxvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFFTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNDLE1BQU0sT0FBTyw0QkFBNEI7SUFhdkMsWUFBMkIsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQVA1Qiw0QkFBdUIsR0FBRyxHQUFHLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFFOUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUV3QixDQUFDO0lBRWhELHFCQUFxQjtRQUNuQix5RkFBeUY7UUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDcEM7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBZ0MsRUFBRSxFQUFFO1lBQ2hILDBHQUEwRztZQUMxRyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFB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SmpCLDRCQUE0QjtrQkFEeEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTtpR0FFakMsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFFdUQsc0JBQXNCO3NCQUFsRixlQUFlO3VCQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsckRyb3Bkb3duIH0gZnJvbSAnQGNsci9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnY2xyLWRyb3Bkb3duLW1lbnUnIH0pXG5leHBvcnQgY2xhc3MgQ2xyRHJvcGRvd25PdmVyZmxvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNsckRyb3Bkb3duTWVudU1heEhlaWdodDogc3RyaW5nIHwgbnVtYmVyOyAvLyBjYW4gYmUgb2YgcHgsIHJlbSwgdmgsIG9yIGEgbnVtYmVyICh3aGljaCB0aGVuIGlzIGNvbnNpZGVyZWQgYXMgcHggdmFsdWUpXG4gIEBJbnB1dCgpIGNsckRyb3Bkb3duTWVudUl0ZW1NaW5IZWlnaHQ6IHN0cmluZyB8IG51bWJlcjsgLy8gY2FuIGJlIG9mIHB4LCByZW0sIHZoLCBvciBhIG51bWJlciAod2hpY2ggdGhlbiBpcyBjb25zaWRlcmVkIGFzIHB4IHZhbHVlKVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ2xyRHJvcGRvd24sIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJpdmF0ZSBuZXN0ZWREcm9wZG93bkNoaWxkcmVuOiBRdWVyeUxpc3Q8Q2xyRHJvcGRvd24+O1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0SXRlbU1pbkhlaWdodFJlbSA9IDEuNTtcbiAgcHVibGljIHJlYWRvbmx5IG1hcmdpbkJvdHRvbVJlbSA9IDAuMTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBhbHJlYWR5Q2hlY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIGhlaWdodEZpeCA9IDI3O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvLyBmaXJzdCB0cmlnZ2VyIG1hbnVhbGx5IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiBsb3dlciBvbmx5IHRyaWdnZXJzIGFmdGVyIGZpcnN0IGNoYW5nZVxuICAgIGlmICghdGhpcy5uZXN0ZWREcm9wZG93bkNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXBwbHlEcm9wZG93bk92ZXJmbG93U3R5bGVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5uZXN0ZWREcm9wZG93bkNoaWxkcmVuLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoY2hpbGRyZW46IFF1ZXJ5TGlzdDxDbHJEcm9wZG93bj4pID0+IHtcbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBhbnkgbmVzdGVkIGRyb3Bkb3ducywgb3VyIG92ZXJmbG93IGZpeCBwcmV2ZW50cyB0aG9zZSBmcm9tIHNob3dpbmcgYW5kIG5lZWRzIHRvIGJlIHJlbW92ZWRcbiAgICAgIGlmICghY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFwcGx5RHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURyb3Bkb3duT3ZlcmZsb3dTdHlsZXMoKTogdm9pZCB7XG4gICAgLy8gdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIG91ciBlbGVtZW50IGluIHRoZSBjdXJyZW50IHdpbmRvd1xuICAgIGNvbnN0IHkgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueTtcbiAgICBpZiAoeSAhPT0gMCAmJiAhdGhpcy5hbHJlYWR5Q2hlY2tlZCkge1xuICAgICAgY29uc3QgaXRlbU1pbkhlaWdodFB4ID0gdGhpcy5nZXRJdGVtTWluSGVpZ2h0KHRoaXMuY2xyRHJvcGRvd25NZW51SXRlbU1pbkhlaWdodCk7XG4gICAgICAvLyBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI3NTQzMTUvZm9yLWxvb3AtZm9yLWh0bWxjb2xsZWN0aW9uLWVsZW1lbnRzXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgICAgaXRlbS5zdHlsZS5taW5IZWlnaHQgPSBpdGVtTWluSGVpZ2h0UHggKyAncHgnO1xuICAgICAgfVxuICAgICAgbGV0IGhlaWdodCA9IDA7XG4gICAgICBpZiAoeSArIHRoaXMuaGVpZ2h0Rml4IDwgd2luZG93LmlubmVySGVpZ2h0IC0geSkge1xuICAgICAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB5IC0gdGhpcy5oZWlnaHRGaXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB5O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID1cbiAgICAgICAgdGhpcy5nZXRNZW51TWF4SGVpZ2h0KHRoaXMuY2xyRHJvcGRvd25NZW51TWF4SGVpZ2h0LCBoZWlnaHQgLSB0aGlzLmNvbnZlcnRSZW1Ub1BpeGVscyh0aGlzLm1hcmdpbkJvdHRvbVJlbSkpICtcbiAgICAgICAgJ3B4JztcblxuICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9ICdhdXRvJztcbiAgICAgIHRoaXMuYWxyZWFkeUNoZWNrZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgIGl0ZW0uc3R5bGUubWluSGVpZ2h0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDtcbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsQ2hpbGREcm9wZG93bk1lbnVJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLWl0ZW0nKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVudU1heEhlaWdodChtZW51TWF4SGVpZ2h0UHJvdmlkZWQ6IHN0cmluZyB8IG51bWJlciwgbWVudU1heEhlaWdodFB4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChtZW51TWF4SGVpZ2h0UHJvdmlkZWQpIHtcbiAgICAgIGNvbnN0IG1heEhlaWdodFB4ID0gdGhpcy5jb252ZXJ0VG9QaXhlbHMobWVudU1heEhlaWdodFByb3ZpZGVkKTtcbiAgICAgIHJldHVybiBtYXhIZWlnaHRQeCA+IG1lbnVNYXhIZWlnaHRQeCA/IG1lbnVNYXhIZWlnaHRQeCA6IG1heEhlaWdodFB4O1xuICAgIH1cbiAgICByZXR1cm4gbWVudU1heEhlaWdodFB4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtTWluSGVpZ2h0KGl0ZW1NaW5IZWlnaHRQcm92aWRlZDogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoaXRlbU1pbkhlaWdodFByb3ZpZGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9QaXhlbHMoaXRlbU1pbkhlaWdodFByb3ZpZGVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFJlbVRvUGl4ZWxzKHRoaXMuZGVmYXVsdEl0ZW1NaW5IZWlnaHRSZW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9QaXhlbHModmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgncHgnKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdyZW0nKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0UmVtVG9QaXhlbHMocGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCdyZW0nLCAnJykpKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuZW5kc1dpdGgoJ3ZoJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFZoVG9QaXhlbHMocGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCd2aCcsICcnKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRSZW1Ub1BpeGVscyhyZW06IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHJlbSAqIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFZoVG9QaXhlbHModmg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcHhQZXJWaFVuaXQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLyAxMDA7XG4gICAgcmV0dXJuIHZoICogcHhQZXJWaFVuaXQ7XG4gIH1cbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xyLWRyb3Bkb3duLW92ZXJmbG93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2Ryb3Bkb3duL2Nsci1kcm9wZG93bi1vdmVyZmxvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFFTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBSTNDLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFBMkIsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQVI1Qiw0QkFBdUIsR0FBRyxHQUFHLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFFOUIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUl3QixDQUFDO0lBRWhELHFCQUFxQjtRQUNuQix5RkFBeUY7UUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDcEM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ3BDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDN0UsQ0FBQyxRQUFnQyxFQUFFLEVBQUU7Z0JBQ25DLDBHQUEwRztnQkFDMUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQ3JCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2lCQUNwQztxQkFBTSxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQzNCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFD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QUFLO2dCQUV1RCxzQkFBc0I7c0JBQWxGLGVBQWU7dUJBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xyRHJvcGRvd24gfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2Nsci1kcm9wZG93bi1tZW51JyB9KVxuZXhwb3J0IGNsYXNzIENsckRyb3Bkb3duT3ZlcmZsb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjbHJEcm9wZG93bk1lbnVNYXhIZWlnaHQ6IHN0cmluZyB8IG51bWJlcjsgLy8gY2FuIGJlIG9mIHB4LCByZW0sIHZoLCBvciBhIG51bWJlciAod2hpY2ggdGhlbiBpcyBjb25zaWRlcmVkIGFzIHB4IHZhbHVlKVxuICBASW5wdXQoKSBjbHJEcm9wZG93bk1lbnVJdGVtTWluSGVpZ2h0OiBzdHJpbmcgfCBudW1iZXI7IC8vIGNhbiBiZSBvZiBweCwgcmVtLCB2aCwgb3IgYSBudW1iZXIgKHdoaWNoIHRoZW4gaXMgY29uc2lkZXJlZCBhcyBweCB2YWx1ZSlcblxuICBAQ29udGVudENoaWxkcmVuKENsckRyb3Bkb3duLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHByaXZhdGUgbmVzdGVkRHJvcGRvd25DaGlsZHJlbjogUXVlcnlMaXN0PENsckRyb3Bkb3duPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEl0ZW1NaW5IZWlnaHRSZW0gPSAxLjU7XG4gIHB1YmxpYyByZWFkb25seSBtYXJnaW5Cb3R0b21SZW0gPSAwLjE7XG5cbiAgcHJpdmF0ZSBhbHJlYWR5Q2hlY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIGhlaWdodEZpeCA9IDI3O1xuXG4gIHByaXZhdGUgbmVzdGVkRHJvcGRvd25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy8gZmlyc3QgdHJpZ2dlciBtYW51YWxseSBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gbG93ZXIgb25seSB0cmlnZ2VycyBhZnRlciBmaXJzdCBjaGFuZ2VcbiAgICBpZiAoIXRoaXMubmVzdGVkRHJvcGRvd25DaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5uZXN0ZWREcm9wZG93blN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5uZXN0ZWREcm9wZG93blN1YnNjcmlwdGlvbiA9IHRoaXMubmVzdGVkRHJvcGRvd25DaGlsZHJlbi5jaGFuZ2VzLnN1YnNjcmliZShcbiAgICAgICAgKGNoaWxkcmVuOiBRdWVyeUxpc3Q8Q2xyRHJvcGRvd24+KSA9PiB7XG4gICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIGFueSBuZXN0ZWQgZHJvcGRvd25zLCBvdXIgb3ZlcmZsb3cgZml4IHByZXZlbnRzIHRob3NlIGZyb20gc2hvd2luZyBhbmQgbmVlZHMgdG8gYmUgcmVtb3ZlZFxuICAgICAgICAgIGlmICghY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hcHBseURyb3Bkb3duT3ZlcmZsb3dTdHlsZXMoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5lc3RlZERyb3Bkb3duU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURyb3Bkb3duT3ZlcmZsb3dTdHlsZXMoKTogdm9pZCB7XG4gICAgLy8gdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIG91ciBlbGVtZW50IGluIHRoZSBjdXJyZW50IHdpbmRvd1xuICAgIGNvbnN0IHkgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueTtcbiAgICBpZiAoeSAhPT0gMCAmJiAhdGhpcy5hbHJlYWR5Q2hlY2tlZCkge1xuICAgICAgY29uc3QgaXRlbU1pbkhlaWdodFB4ID0gdGhpcy5nZXRJdGVtTWluSGVpZ2h0KHRoaXMuY2xyRHJvcGRvd25NZW51SXRlbU1pbkhlaWdodCk7XG4gICAgICAvLyBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI3NTQzMTUvZm9yLWxvb3AtZm9yLWh0bWxjb2xsZWN0aW9uLWVsZW1lbnRzXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgICAgaXRlbS5zdHlsZS5taW5IZWlnaHQgPSBpdGVtTWluSGVpZ2h0UHggKyAncHgnO1xuICAgICAgfVxuICAgICAgbGV0IGhlaWdodCA9IDA7XG4gICAgICBpZiAoeSArIHRoaXMuaGVpZ2h0Rml4IDwgd2luZG93LmlubmVySGVpZ2h0IC0geSkge1xuICAgICAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB5IC0gdGhpcy5oZWlnaHRGaXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB5O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID1cbiAgICAgICAgdGhpcy5nZXRNZW51TWF4SGVpZ2h0KHRoaXMuY2xyRHJvcGRvd25NZW51TWF4SGVpZ2h0LCBoZWlnaHQgLSB0aGlzLmNvbnZlcnRSZW1Ub1BpeGVscyh0aGlzLm1hcmdpbkJvdHRvbVJlbSkpICtcbiAgICAgICAgJ3B4JztcblxuICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9ICdhdXRvJztcbiAgICAgIHRoaXMuYWxyZWFkeUNoZWNrZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRHJvcGRvd25PdmVyZmxvd1N0eWxlcygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5nZXRBbGxDaGlsZERyb3Bkb3duTWVudUl0ZW1zKCkpIHtcbiAgICAgIGl0ZW0uc3R5bGUubWluSGVpZ2h0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDtcbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gbnVsbDtcbiAgICB0aGlzLmFscmVhZHlDaGVja2VkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbENoaWxkRHJvcGRvd25NZW51SXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bi1pdGVtJyk7XG4gIH1cblxuICBwcml2YXRlIGdldE1lbnVNYXhIZWlnaHQobWVudU1heEhlaWdodFByb3ZpZGVkOiBzdHJpbmcgfCBudW1iZXIsIG1lbnVNYXhIZWlnaHRQeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAobWVudU1heEhlaWdodFByb3ZpZGVkKSB7XG4gICAgICBjb25zdCBtYXhIZWlnaHRQeCA9IHRoaXMuY29udmVydFRvUGl4ZWxzKG1lbnVNYXhIZWlnaHRQcm92aWRlZCk7XG4gICAgICByZXR1cm4gbWF4SGVpZ2h0UHggPiBtZW51TWF4SGVpZ2h0UHggPyBtZW51TWF4SGVpZ2h0UHggOiBtYXhIZWlnaHRQeDtcbiAgICB9XG4gICAgcmV0dXJuIG1lbnVNYXhIZWlnaHRQeDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbU1pbkhlaWdodChpdGVtTWluSGVpZ2h0UHJvdmlkZWQ6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGl0ZW1NaW5IZWlnaHRQcm92aWRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvUGl4ZWxzKGl0ZW1NaW5IZWlnaHRQcm92aWRlZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRSZW1Ub1BpeGVscyh0aGlzLmRlZmF1bHRJdGVtTWluSGVpZ2h0UmVtKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvUGl4ZWxzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodmFsdWUuZW5kc1dpdGgoJ3B4JykpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgncmVtJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFJlbVRvUGl4ZWxzKHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgncmVtJywgJycpKSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCd2aCcpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRWaFRvUGl4ZWxzKHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgndmgnLCAnJykpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmVtVG9QaXhlbHMocmVtOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZW0gKiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRWaFRvUGl4ZWxzKHZoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHB4UGVyVmhVbml0ID0gd2luZG93LmlubmVySGVpZ2h0IC8gMTAwO1xuICAgIHJldHVybiB2aCAqIHB4UGVyVmhVbml0O1xuICB9XG59XG4iXX0=
@@ -693,7 +693,6 @@ class ClrDropdownOverflowDirective {
693
693
  this.elRef = elRef;
694
694
  this.defaultItemMinHeightRem = 1.5;
695
695
  this.marginBottomRem = 0.1;
696
- this.destroy$ = new Subject();
697
696
  this.alreadyChecked = false;
698
697
  this.heightFix = 27;
699
698
  }
@@ -703,19 +702,21 @@ class ClrDropdownOverflowDirective {
703
702
  if (!((_a = this.nestedDropdownChildren) === null || _a === void 0 ? void 0 : _a.length)) {
704
703
  this.applyDropdownOverflowStyles();
705
704
  }
706
- this.nestedDropdownChildren.changes.pipe(takeUntil(this.destroy$)).subscribe((children) => {
707
- // if there are any nested dropdowns, our overflow fix prevents those from showing and needs to be removed
708
- if (!(children === null || children === void 0 ? void 0 : children.length)) {
709
- this.applyDropdownOverflowStyles();
710
- }
711
- else if (children === null || children === void 0 ? void 0 : children.length) {
712
- this.removeDropdownOverflowStyles();
713
- }
714
- });
705
+ if (!this.nestedDropdownSubscription) {
706
+ this.nestedDropdownSubscription = this.nestedDropdownChildren.changes.subscribe((children) => {
707
+ // if there are any nested dropdowns, our overflow fix prevents those from showing and needs to be removed
708
+ if (!(children === null || children === void 0 ? void 0 : children.length)) {
709
+ this.applyDropdownOverflowStyles();
710
+ }
711
+ else if (children === null || children === void 0 ? void 0 : children.length) {
712
+ this.removeDropdownOverflowStyles();
713
+ }
714
+ });
715
+ }
715
716
  }
716
717
  ngOnDestroy() {
717
- this.destroy$.next();
718
- this.destroy$.complete();
718
+ var _a;
719
+ (_a = this.nestedDropdownSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
719
720
  }
720
721
  applyDropdownOverflowStyles() {
721
722
  // the vertical position of our element in the current window
@@ -746,6 +747,7 @@ class ClrDropdownOverflowDirective {
746
747
  }
747
748
  this.elRef.nativeElement.style.maxHeight = null;
748
749
  this.elRef.nativeElement.style.overflowY = null;
750
+ this.alreadyChecked = false;
749
751
  }
750
752
  getAllChildDropdownMenuItems() {
751
753
  return this.elRef.nativeElement.getElementsByClassName('dropdown-item');
@@ -5475,10 +5477,16 @@ class StatePersistenceKeyDirective {
5475
5477
  Object.keys(savedState.columns).forEach(prop => {
5476
5478
  const filter = this.getFilter(prop);
5477
5479
  if (filter) {
5478
- const savedFilterValue = savedState.columns[prop].filterValue || {};
5479
- Object.keys(savedFilterValue)
5480
- .filter(valueKey => valueKey !== 'property')
5481
- .forEach(valueKey => (filter[valueKey] = this.parseFilterValue(savedFilterValue[valueKey])));
5480
+ /* if the saved value is empty filter send null */
5481
+ const savedFilterValue = savedState.columns[prop].filterValue;
5482
+ if (savedFilterValue == null) {
5483
+ filter['value'] = null;
5484
+ }
5485
+ else {
5486
+ Object.keys(savedFilterValue)
5487
+ .filter(valueKey => valueKey !== 'property')
5488
+ .forEach(valueKey => (filter[valueKey] = this.parseFilterValue(savedFilterValue[valueKey])));
5489
+ }
5482
5490
  }
5483
5491
  });
5484
5492
  }