@sd-angular/core 1.3.138 → 1.3.139

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.
@@ -1,5 +1,5 @@
1
- var _valueChanges, _subcription;
2
- import { __classPrivateFieldGet } from "tslib";
1
+ var _inlineOperator_1, _valueChanges, _subcription;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
4
4
  import { Subject, Subscription } from 'rxjs';
5
5
  import { startWith } from 'rxjs/operators';
@@ -7,7 +7,9 @@ import { SdFilterOperators } from '../../models/grid-column.model';
7
7
  export class SdColumnInlineFilter {
8
8
  constructor(ref) {
9
9
  this.ref = ref;
10
- this.columnOperator = {};
10
+ this.inlineSymbol = 'filter_alt';
11
+ _inlineOperator_1.set(this, void 0);
12
+ this.inlineOperatorChange = new EventEmitter();
11
13
  this.columnFilter = {};
12
14
  this.operators = [];
13
15
  this.filterChange = new EventEmitter();
@@ -16,13 +18,16 @@ export class SdColumnInlineFilter {
16
18
  this.onFilterChange = () => {
17
19
  this.filterChange.emit();
18
20
  };
19
- this.onChangeOperator = (operator) => {
20
- if (operator) {
21
- this.columnOperator[this.column.field] = operator.value;
21
+ this.onChangeOperator = (event) => {
22
+ if (event) {
23
+ __classPrivateFieldSet(this, _inlineOperator_1, event.value);
24
+ this.inlineSymbol = event.symbol;
22
25
  }
23
26
  else {
24
- this.columnOperator[this.column.field] = null;
27
+ __classPrivateFieldSet(this, _inlineOperator_1, null);
28
+ this.inlineSymbol = 'filter_alt';
25
29
  }
30
+ this.inlineOperatorChange.emit(__classPrivateFieldGet(this, _inlineOperator_1));
26
31
  this.ref.markForCheck();
27
32
  };
28
33
  }
@@ -30,8 +35,10 @@ export class SdColumnInlineFilter {
30
35
  this.value = value;
31
36
  __classPrivateFieldGet(this, _valueChanges).next();
32
37
  }
33
- set _columnOperator(columnOperator) {
34
- this.columnOperator = columnOperator || {};
38
+ set _inlineOperator(inlineOperator) {
39
+ var _a, _b;
40
+ __classPrivateFieldSet(this, _inlineOperator_1, inlineOperator);
41
+ this.inlineSymbol = (_b = (_a = SdFilterOperators.find(e => e.value === inlineOperator)) === null || _a === void 0 ? void 0 : _a.symbol) !== null && _b !== void 0 ? _b : 'filter_alt';
35
42
  }
36
43
  set _columnFilter(columnFilter) {
37
44
  this.columnFilter = columnFilter || {};
@@ -63,16 +70,12 @@ export class SdColumnInlineFilter {
63
70
  ngOnDestroy() {
64
71
  __classPrivateFieldGet(this, _subcription).unsubscribe();
65
72
  }
66
- get columnSymbol() {
67
- var _a;
68
- return ((_a = SdFilterOperators.find(e => { var _a, _b; return e.value === ((_a = this.columnOperator) === null || _a === void 0 ? void 0 : _a[(_b = this.column) === null || _b === void 0 ? void 0 : _b.field]); })) === null || _a === void 0 ? void 0 : _a.symbol) || 'filter_alt';
69
- }
70
73
  }
71
- _valueChanges = new WeakMap(), _subcription = new WeakMap();
74
+ _inlineOperator_1 = new WeakMap(), _valueChanges = new WeakMap(), _subcription = new WeakMap();
72
75
  SdColumnInlineFilter.decorators = [
73
76
  { type: Component, args: [{
74
77
  selector: 'sd-column-inline-filter',
75
- template: "<div class=\"d-flex c-inline-column align-items-end\">\r\n <ng-container *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\r\n \">\r\n <ng-container *ngIf=\"operators.length\">\r\n <!-- <div style=\"width: 60px; margin-right: 4px\" [matMenuTriggerFor]=\"menu\">\r\n <span>=</span>\r\n </div> -->\r\n <sd-button class=\"mr-2\" fontSet=\"material-symbols-outlined\" [icon]=\"columnSymbol\" size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\" type=\"link\"> </sd-button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button *ngFor=\"let operator of operators\" (click)=\"onChangeOperator(operator)\" mat-menu-item type=\"button\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{ operator.symbol }}</mat-icon>\r\n <span> {{ operator.display }}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <!-- <sd-select\r\n *ngIf=\"operators.length\"\r\n style=\"width: 60px; margin-right: 4px\"\r\n size=\"sm\"\r\n [items]=\"operators\"\r\n valueField=\"value\"\r\n displayField=\"display\"\r\n [(model)]=\"columnOperator[column.field]\"></sd-select> -->\r\n <sd-input *ngIf=\"column.type === 'string'\" style=\"flex: 1\" size=\"sm\" type=\"text\"\r\n [(model)]=\"columnFilter[column.field]\" (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number *ngIf=\"column.type === 'number'\" style=\"flex: 1\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select *ngIf=\"column.type === 'bool'\" style=\"flex: 1\" size=\"sm\" [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\">\r\n </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\">\r\n </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\" style=\"flex: 1\"\r\n size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\"\r\n [multiple]=\"column?.option?.selection === 'MULTIPLE' || column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\" style=\"flex: 1\"\r\n size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range *ngIf=\"!column.option?.useFilterDate\" style=\"flex: 1\" size=\"sm\"\r\n [(from)]=\"columnFilter[column.field].from\" [(to)]=\"columnFilter[column.field].to\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time *ngIf=\"column.option?.useFilterDate\" style=\"flex: 1\" type=\"date\" size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>",
78
+ template: "<div class=\"d-flex c-inline-column align-items-end\">\r\n <ng-container *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\r\n \">\r\n <ng-container *ngIf=\"operators.length\">\r\n <!-- <div style=\"width: 60px; margin-right: 4px\" [matMenuTriggerFor]=\"menu\">\r\n <span>=</span>\r\n </div> -->\r\n <sd-button class=\"mr-2\" fontSet=\"material-symbols-outlined\" [icon]=\"inlineSymbol\" size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\" type=\"link\"> </sd-button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button *ngFor=\"let operator of operators\" (click)=\"onChangeOperator(operator)\" mat-menu-item type=\"button\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{ operator.symbol }}</mat-icon>\r\n <span> {{ operator.display }}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <!-- <sd-select\r\n *ngIf=\"operators.length\"\r\n style=\"width: 60px; margin-right: 4px\"\r\n size=\"sm\"\r\n [items]=\"operators\"\r\n valueField=\"value\"\r\n displayField=\"display\"\r\n [(model)]=\"columnOperator[column.field]\"></sd-select> -->\r\n <sd-input *ngIf=\"column.type === 'string'\" style=\"flex: 1\" size=\"sm\" type=\"text\"\r\n [(model)]=\"columnFilter[column.field]\" (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number *ngIf=\"column.type === 'number'\" style=\"flex: 1\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select *ngIf=\"column.type === 'bool'\" style=\"flex: 1\" size=\"sm\" [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\">\r\n </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\">\r\n </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\" style=\"flex: 1\"\r\n size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\"\r\n [multiple]=\"column?.option?.selection === 'MULTIPLE' || column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\" style=\"flex: 1\"\r\n size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range *ngIf=\"!column.option?.useFilterDate\" style=\"flex: 1\" size=\"sm\"\r\n [(from)]=\"columnFilter[column.field].from\" [(to)]=\"columnFilter[column.field].to\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time *ngIf=\"column.option?.useFilterDate\" style=\"flex: 1\" type=\"date\" size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>",
76
79
  changeDetection: ChangeDetectionStrategy.OnPush,
77
80
  styles: [":host ::ng-deep .c-inline-column .mat-form-field-wrapper{background-color:#fff;border-radius:8px;margin:8px 0 0!important;padding:0!important}"]
78
81
  },] }
@@ -82,9 +85,10 @@ SdColumnInlineFilter.ctorParameters = () => [
82
85
  ];
83
86
  SdColumnInlineFilter.propDecorators = {
84
87
  _value: [{ type: Input, args: ['value',] }],
85
- _columnOperator: [{ type: Input, args: ['columnOperator',] }],
88
+ _inlineOperator: [{ type: Input, args: ['inlineOperator',] }],
89
+ inlineOperatorChange: [{ type: Output }],
86
90
  _columnFilter: [{ type: Input, args: ['columnFilter',] }],
87
91
  _column: [{ type: Input, args: ['column',] }],
88
92
  filterChange: [{ type: Output }]
89
93
  };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9jb2x1bW4taW5saW5lLWZpbHRlci9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLGlCQUFpQixFQUF3QixNQUFNLGdDQUFnQyxDQUFDO0FBUTNHLE1BQU0sT0FBTyxvQkFBb0I7SUE0Qi9CLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdEIxQyxtQkFBYyxHQUFxQyxFQUFFLENBQUM7UUFJdEQsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBS3ZDLGNBQVMsR0FBb0UsRUFBRSxDQUFDO1FBVXRFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1Qyx3QkFBZ0IsSUFBSSxPQUFPLEVBQUUsRUFBQztRQUM5Qix1QkFBZSxJQUFJLFlBQVksRUFBRSxFQUFDO1FBc0JsQyxtQkFBYyxHQUFHLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQU1GLHFCQUFnQixHQUFHLENBQUMsUUFBdUUsRUFBRSxFQUFFO1lBQzdGLElBQUksUUFBUSxFQUFFO2dCQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2FBQ3pEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDL0M7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQTtJQXBDNkMsQ0FBQztJQTFCL0IsTUFBTSxDQUFDLEtBQVU7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsNENBQW1CLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUE2QixlQUFlLENBQUMsY0FBZ0Q7UUFDM0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLElBQUksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUEyQixhQUFhLENBQUMsWUFBaUM7UUFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQ3ZDLDRDQUFtQixJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBcUIsT0FBTyxDQUFDLE1BQTRCOztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLFFBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sMENBQUUsUUFBUSxDQUFBLGlCQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLDBDQUFFLFFBQVEsMENBQUUsTUFBTSxDQUFBLEVBQUU7WUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0NBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSwwQ0FBRSxRQUFRLG1EQUFHLENBQUMsQ0FBQyxLQUFLLElBQUMsQ0FBQyxDQUFDO1NBQ2xHO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFNRCxRQUFRO1FBQ04sMkNBQWtCLEdBQUcsQ0FDbkIsNENBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTs7WUFDbkUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtnQkFDakcsSUFBSSxjQUFDLElBQUksQ0FBQyxNQUFNLDBDQUFFLE1BQU0sMENBQUUsYUFBYSxDQUFBLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzdFLElBQUksRUFBRSxJQUFJO3dCQUNWLEVBQUUsRUFBRSxJQUFJO3FCQUNULENBQUM7aUJBQ0g7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULDJDQUFrQixXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBTUQsSUFBSSxZQUFZOztRQUNkLE9BQU8sT0FBQSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBQyxPQUFBLENBQUMsQ0FBQyxLQUFLLFlBQUssSUFBSSxDQUFDLGNBQWMsZ0RBQUcsSUFBSSxDQUFDLE1BQU0sMENBQUUsS0FBSyxFQUFDLENBQUEsRUFBQSxDQUFDLDBDQUFFLE1BQU0sS0FBSSxZQUFZLENBQUE7SUFDbkgsQ0FBQzs7OztZQTdERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsdytJQUFvRDtnQkFFcEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFWaUMsaUJBQWlCOzs7cUJBYWhELEtBQUssU0FBQyxPQUFPOzhCQUtiLEtBQUssU0FBQyxnQkFBZ0I7NEJBSXRCLEtBQUssU0FBQyxjQUFjO3NCQU1wQixLQUFLLFNBQUMsUUFBUTsyQkFRZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RGaWx0ZXJPcGVyYXRvciwgU2RGaWx0ZXJPcGVyYXRvcnMsIFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtY29sdW1uLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ29sdW1uSW5saW5lRmlsdGVyIGltcGxlbWVudHMgT25Jbml0IHtcclxuICB2YWx1ZTogYW55O1xyXG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy4jdmFsdWVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgQElucHV0KCdjb2x1bW5PcGVyYXRvcicpIHNldCBfY29sdW1uT3BlcmF0b3IoY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+KSB7XHJcbiAgICB0aGlzLmNvbHVtbk9wZXJhdG9yID0gY29sdW1uT3BlcmF0b3IgfHwge307XHJcbiAgfVxyXG4gIGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIEBJbnB1dCgnY29sdW1uRmlsdGVyJykgc2V0IF9jb2x1bW5GaWx0ZXIoY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlciB8fCB7fTtcclxuICAgIHRoaXMuI3ZhbHVlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIG9wZXJhdG9yczogeyB2YWx1ZTogU2RGaWx0ZXJPcGVyYXRvciwgc3ltYm9sPzogc3RyaW5nLCBkaXNwbGF5OiBzdHJpbmcgfVtdID0gW107XHJcbiAgY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbjtcclxuICBASW5wdXQoJ2NvbHVtbicpIHNldCBfY29sdW1uKGNvbHVtbjogU2RHcmlkTWF0ZXJpYWxDb2x1bW4pIHtcclxuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xyXG4gICAgaWYgKCFjb2x1bW4/LmZpbHRlcj8uZGlzYWJsZWQgJiYgY29sdW1uPy5maWx0ZXI/Lm9wZXJhdG9yPy5lbmFibGUpIHtcclxuICAgICAgdGhpcy5vcGVyYXRvcnMgPSBTZEZpbHRlck9wZXJhdG9ycy5maWx0ZXIoZSA9PiBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3Q/LmluY2x1ZGVzPy4oZS52YWx1ZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVyYXRvcnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAjdmFsdWVDaGFuZ2VzID0gbmV3IFN1YmplY3QoKTtcclxuICAjc3ViY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuI3ZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmNvbHVtbkZpbHRlcikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCB0aGlzLmNvbHVtbi50eXBlID09PSAndGltZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbHVtbj8ub3B0aW9uPy51c2VGaWx0ZXJEYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1uRmlsdGVyW3RoaXMuY29sdW1uLmZpZWxkXSA9IHRoaXMuY29sdW1uRmlsdGVyW3RoaXMuY29sdW1uLmZpZWxkXSB8fCB7XHJcbiAgICAgICAgICAgICAgZnJvbTogbnVsbCxcclxuICAgICAgICAgICAgICB0bzogbnVsbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGNvbHVtblN5bWJvbCgpIHtcclxuICAgIHJldHVybiBTZEZpbHRlck9wZXJhdG9ycy5maW5kKGUgPT4gZS52YWx1ZSA9PT0gdGhpcy5jb2x1bW5PcGVyYXRvcj8uW3RoaXMuY29sdW1uPy5maWVsZF0pPy5zeW1ib2wgfHwgJ2ZpbHRlcl9hbHQnXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZU9wZXJhdG9yID0gKG9wZXJhdG9yOiB7IHZhbHVlOiBTZEZpbHRlck9wZXJhdG9yLCBzeW1ib2w/OiBzdHJpbmcsIGRpc3BsYXk6IHN0cmluZyB9KSA9PiB7XHJcbiAgICBpZiAob3BlcmF0b3IpIHtcclxuICAgICAgdGhpcy5jb2x1bW5PcGVyYXRvclt0aGlzLmNvbHVtbi5maWVsZF0gPSBvcGVyYXRvci52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29sdW1uT3BlcmF0b3JbdGhpcy5jb2x1bW4uZmllbGRdID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9jb2x1bW4taW5saW5lLWZpbHRlci9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLGlCQUFpQixFQUF3QixNQUFNLGdDQUFnQyxDQUFDO0FBUTNHLE1BQU0sT0FBTyxvQkFBb0I7SUFnQy9CLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBMUIxQyxpQkFBWSxHQUFXLFlBQVksQ0FBQztRQUNwQyxvQ0FBa0M7UUFLeEIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCxpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFLdkMsY0FBUyxHQUFvRSxFQUFFLENBQUM7UUFVdEUsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLHdCQUFnQixJQUFJLE9BQU8sRUFBRSxFQUFDO1FBQzlCLHVCQUFlLElBQUksWUFBWSxFQUFFLEVBQUM7UUFzQmxDLG1CQUFjLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBR0YscUJBQWdCLEdBQUcsQ0FBQyxL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dUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVZpQyxpQkFBaUI7OztxQkFhaEQsS0FBSyxTQUFDLE9BQU87OEJBTWIsS0FBSyxTQUFDLGdCQUFnQjttQ0FJdEIsTUFBTTs0QkFHTixLQUFLLFNBQUMsY0FBYztzQkFNcEIsS0FBSyxTQUFDLFFBQVE7MkJBUWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkRmlsdGVyT3BlcmF0b3IsIFNkRmlsdGVyT3BlcmF0b3JzLCBTZEdyaWRNYXRlcmlhbENvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWNvbHVtbi5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWNvbHVtbi1pbmxpbmUtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZENvbHVtbklubGluZUZpbHRlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdmFsdWU6IGFueTtcclxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuI3ZhbHVlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIGlubGluZVN5bWJvbDogc3RyaW5nID0gJ2ZpbHRlcl9hbHQnO1xyXG4gICNpbmxpbmVPcGVyYXRvcjogU2RGaWx0ZXJPcGVyYXRvcjtcclxuICBASW5wdXQoJ2lubGluZU9wZXJhdG9yJykgc2V0IF9pbmxpbmVPcGVyYXRvcihpbmxpbmVPcGVyYXRvcjogU2RGaWx0ZXJPcGVyYXRvcikge1xyXG4gICAgdGhpcy4jaW5saW5lT3BlcmF0b3IgPSBpbmxpbmVPcGVyYXRvcjtcclxuICAgIHRoaXMuaW5saW5lU3ltYm9sID0gU2RGaWx0ZXJPcGVyYXRvcnMuZmluZChlID0+IGUudmFsdWUgPT09IGlubGluZU9wZXJhdG9yKT8uc3ltYm9sID8/ICdmaWx0ZXJfYWx0JztcclxuICB9XHJcbiAgQE91dHB1dCgpIGlubGluZU9wZXJhdG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb2x1bW5GaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoJ2NvbHVtbkZpbHRlcicpIHNldCBfY29sdW1uRmlsdGVyKGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXIgfHwge307XHJcbiAgICB0aGlzLiN2YWx1ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBvcGVyYXRvcnM6IHsgdmFsdWU6IFNkRmlsdGVyT3BlcmF0b3IsIHN5bWJvbD86IHN0cmluZywgZGlzcGxheTogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIGNvbHVtbjogU2RHcmlkTWF0ZXJpYWxDb2x1bW47XHJcbiAgQElucHV0KCdjb2x1bW4nKSBzZXQgX2NvbHVtbihjb2x1bW46IFNkR3JpZE1hdGVyaWFsQ29sdW1uKSB7XHJcbiAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcclxuICAgIGlmICghY29sdW1uPy5maWx0ZXI/LmRpc2FibGVkICYmIGNvbHVtbj8uZmlsdGVyPy5vcGVyYXRvcj8uZW5hYmxlKSB7XHJcbiAgICAgIHRoaXMub3BlcmF0b3JzID0gU2RGaWx0ZXJPcGVyYXRvcnMuZmlsdGVyKGUgPT4gY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0Py5pbmNsdWRlcz8uKGUudmFsdWUpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlcmF0b3JzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgI3ZhbHVlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgI3N1YmNyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb2x1bW5GaWx0ZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ3RpbWUnIHx8IHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb2x1bW4/Lm9wdGlvbj8udXNlRmlsdGVyRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gPSB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gfHwge1xyXG4gICAgICAgICAgICAgIGZyb206IG51bGwsXHJcbiAgICAgICAgICAgICAgdG86IG51bGwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCgpO1xyXG4gIH07XHJcblxyXG5cclxuICBvbkNoYW5nZU9wZXJhdG9yID0gKGV2ZW50OiB7IHZhbHVlOiBTZEZpbHRlck9wZXJhdG9yLCBzeW1ib2w/OiBzdHJpbmcsIGRpc3BsYXk6IHN0cmluZyB9KSA9PiB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy4jaW5saW5lT3BlcmF0b3IgPSBldmVudC52YWx1ZTtcclxuICAgICAgdGhpcy5pbmxpbmVTeW1ib2wgPSBldmVudC5zeW1ib2w7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLiNpbmxpbmVPcGVyYXRvciA9IG51bGw7XHJcbiAgICAgIHRoaXMuaW5saW5lU3ltYm9sID0gJ2ZpbHRlcl9hbHQnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmxpbmVPcGVyYXRvckNoYW5nZS5lbWl0KHRoaXMuI2lubGluZU9wZXJhdG9yKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG4iXX0=