@sd-angular/core 1.3.118 → 1.3.119
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.
- package/bundles/sd-angular-core-grid-material.umd.js +77 -9
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +21 -5
- package/esm2015/grid-material/src/lib/grid-material.component.js +10 -5
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +39 -2
- package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.model.js +1 -1
- package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.service.js +3 -2
- package/fesm2015/sd-angular-core-grid-material.js +69 -9
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.d.ts +8 -1
- package/grid-material/src/lib/grid-material.component.d.ts +2 -0
- package/grid-material/src/lib/models/grid-column.model.d.ts +11 -2
- package/grid-material/src/lib/services/grid-filter/grid-filter.model.d.ts +6 -9
- package/package.json +1 -1
- package/{sd-angular-core-1.3.118.tgz → sd-angular-core-1.3.119.tgz} +0 -0
|
@@ -3,9 +3,12 @@ import { __classPrivateFieldGet } from "tslib";
|
|
|
3
3
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
4
4
|
import { Subject, Subscription } from 'rxjs';
|
|
5
5
|
import { startWith } from 'rxjs/operators';
|
|
6
|
+
import { SdFilterOperators } from '../../models/grid-column.model';
|
|
6
7
|
export class SdColumnInlineFilter {
|
|
7
8
|
constructor() {
|
|
9
|
+
this.columnOperator = {};
|
|
8
10
|
this.columnFilter = {};
|
|
11
|
+
this.operators = [];
|
|
9
12
|
this.filterChange = new EventEmitter();
|
|
10
13
|
_valueChanges.set(this, new Subject());
|
|
11
14
|
_subcription.set(this, new Subscription());
|
|
@@ -17,11 +20,23 @@ export class SdColumnInlineFilter {
|
|
|
17
20
|
this.value = value;
|
|
18
21
|
__classPrivateFieldGet(this, _valueChanges).next();
|
|
19
22
|
}
|
|
23
|
+
set _columnOperator(columnOperator) {
|
|
24
|
+
this.columnOperator = columnOperator || {};
|
|
25
|
+
}
|
|
20
26
|
set _columnFilter(columnFilter) {
|
|
21
27
|
this.columnFilter = columnFilter || {};
|
|
22
28
|
__classPrivateFieldGet(this, _valueChanges).next();
|
|
23
29
|
}
|
|
24
|
-
|
|
30
|
+
set _column(column) {
|
|
31
|
+
var _a, _b, _c;
|
|
32
|
+
this.column = column;
|
|
33
|
+
if (!((_a = column === null || column === void 0 ? void 0 : column.filter) === null || _a === void 0 ? void 0 : _a.disabled) && ((_c = (_b = column === null || column === void 0 ? void 0 : column.filter) === null || _b === void 0 ? void 0 : _b.operator) === null || _c === void 0 ? void 0 : _c.enable)) {
|
|
34
|
+
this.operators = SdFilterOperators.filter(e => { var _a, _b; return (_b = (_a = column.filter.operator.list) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, e.value); });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.operators = [];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
25
40
|
ngOnInit() {
|
|
26
41
|
__classPrivateFieldGet(this, _subcription).add(__classPrivateFieldGet(this, _valueChanges).pipe(startWith(this.columnFilter)).subscribe(() => {
|
|
27
42
|
var _a, _b;
|
|
@@ -29,7 +44,7 @@ export class SdColumnInlineFilter {
|
|
|
29
44
|
if (!((_b = (_a = this.column) === null || _a === void 0 ? void 0 : _a.option) === null || _b === void 0 ? void 0 : _b.useFilterDate)) {
|
|
30
45
|
this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {
|
|
31
46
|
from: null,
|
|
32
|
-
to: null
|
|
47
|
+
to: null,
|
|
33
48
|
};
|
|
34
49
|
}
|
|
35
50
|
}
|
|
@@ -43,7 +58,7 @@ _valueChanges = new WeakMap(), _subcription = new WeakMap();
|
|
|
43
58
|
SdColumnInlineFilter.decorators = [
|
|
44
59
|
{ type: Component, args: [{
|
|
45
60
|
selector: 'sd-column-inline-filter',
|
|
46
|
-
template: "<div class=\"c-inline-column\">\r\n <ng-container
|
|
61
|
+
template: "<div class=\"d-flex c-inline-column\">\r\n <ng-container\r\n *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 <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 required\r\n [(model)]=\"columnOperator[column.field]\"></sd-select>\r\n <sd-input\r\n *ngIf=\"column.type === 'string'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n type=\"text\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number\r\n *ngIf=\"column.type === 'number'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select\r\n *ngIf=\"column.type === 'bool'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\"\r\n valueField=\"value\"\r\n displayField=\"display\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (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'\"> </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\"> </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select\r\n *ngIf=\"column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"column.option.items\"\r\n [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (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\r\n *ngIf=\"column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"column.option.items\"\r\n [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (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\r\n *ngIf=\"!column.option?.useFilterDate\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [(from)]=\"columnFilter[column.field].from\"\r\n [(to)]=\"columnFilter[column.field].to\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time\r\n *ngIf=\"column.option?.useFilterDate\"\r\n style=\"flex: 1\"\r\n type=\"date\"\r\n size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [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>\r\n",
|
|
47
62
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
48
63
|
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}"]
|
|
49
64
|
},] }
|
|
@@ -51,8 +66,9 @@ SdColumnInlineFilter.decorators = [
|
|
|
51
66
|
SdColumnInlineFilter.ctorParameters = () => [];
|
|
52
67
|
SdColumnInlineFilter.propDecorators = {
|
|
53
68
|
_value: [{ type: Input, args: ['value',] }],
|
|
69
|
+
_columnOperator: [{ type: Input, args: ['columnOperator',] }],
|
|
54
70
|
_columnFilter: [{ type: Input, args: ['columnFilter',] }],
|
|
55
|
-
|
|
71
|
+
_column: [{ type: Input, args: ['column',] }],
|
|
56
72
|
filterChange: [{ type: Output }]
|
|
57
73
|
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1pbmxpbmUtZmlsdGVyL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBb0IsaUJBQWlCLEVBQXdCLE1BQU0sZ0NBQWdDLENBQUM7QUFRM0csTUFBTSxPQUFPLG9CQUFvQjtJQTZCL0I7UUF2QkEsbUJBQWMsR0FBcUMsRUFBRSxDQUFDO1FBS3RELGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUt2QyxjQUFTLEdBQW1ELEVBQUUsQ0FBQztRQVVyRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsd0JBQWdCLElBQUksT0FBTyxFQUFFLEVBQUM7UUFDOUIsdUJBQWUsSUFBSSxZQUFZLEVBQUUsRUFBQztRQXNCbEMsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7SUF2QmEsQ0FBQztJQTNCQSxNQUFNLENBQUMsS0FBVTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQiw0Q0FBbUIsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQTZCLGVBQWUsQ0FBQyxjQUFnRDtRQUMzRixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUdELElBQTJCLGFBQWEsQ0FBQyxZQUFpQztRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDdkMsNENBQW1CLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFxQixPQUFPLENBQUMsTUFBNEI7O1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksUUFBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSwwQ0FBRSxRQUFRLENBQUEsaUJBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sMENBQUUsUUFBUSwwQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNqRSxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxrQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLDBDQUFFLFFBQVEsbURBQUcsQ0FBQyxDQUFDLEtBQUssSUFBQyxDQUFDLENBQUM7U0FDbEc7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQU1ELFFBQVE7UUFDTiwyQ0FBa0IsR0FBRyxDQUNuQiw0Q0FBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFOztZQUNuRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUNqRyxJQUFJLGNBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsTUFBTSwwQ0FBRSxhQUFhLENBQUEsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTt3QkFDN0UsSUFBSSxFQUFFLElBQUk7d0JBQ1YsRUFBRSxFQUFFLElBQUk7cUJBQ1QsQ0FBQztpQkFDSDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsMkNBQWtCLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Ozs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLHVvSUFBb0Q7Z0JBRXBELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7OztxQkFHRSxLQUFLLFNBQUMsT0FBTzs4QkFLYixLQUFLLFNBQUMsZ0JBQWdCOzRCQUt0QixLQUFLLFNBQUMsY0FBYztzQkFNcEIsS0FBSyxTQUFDLFFBQVE7MkJBUWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RGaWx0ZXJPcGVyYXRvciwgU2RGaWx0ZXJPcGVyYXRvcnMsIFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtY29sdW1uLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ29sdW1uSW5saW5lRmlsdGVyIGltcGxlbWVudHMgT25Jbml0IHtcclxuICB2YWx1ZTogYW55O1xyXG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy4jdmFsdWVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgQElucHV0KCdjb2x1bW5PcGVyYXRvcicpIHNldCBfY29sdW1uT3BlcmF0b3IoY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+KSB7XHJcbiAgICB0aGlzLmNvbHVtbk9wZXJhdG9yID0gY29sdW1uT3BlcmF0b3IgfHwge307XHJcbiAgfVxyXG5cclxuICBjb2x1bW5GaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoJ2NvbHVtbkZpbHRlcicpIHNldCBfY29sdW1uRmlsdGVyKGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXIgfHwge307XHJcbiAgICB0aGlzLiN2YWx1ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBvcGVyYXRvcnM6IHsgdmFsdWU6IFNkRmlsdGVyT3BlcmF0b3I7IGRpc3BsYXk6IHN0cmluZyB9W10gPSBbXTtcclxuICBjb2x1bW46IFNkR3JpZE1hdGVyaWFsQ29sdW1uO1xyXG4gIEBJbnB1dCgnY29sdW1uJykgc2V0IF9jb2x1bW4oY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbikge1xyXG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XHJcbiAgICBpZiAoIWNvbHVtbj8uZmlsdGVyPy5kaXNhYmxlZCAmJiBjb2x1bW4/LmZpbHRlcj8ub3BlcmF0b3I/LmVuYWJsZSkge1xyXG4gICAgICB0aGlzLm9wZXJhdG9ycyA9IFNkRmlsdGVyT3BlcmF0b3JzLmZpbHRlcihlID0+IGNvbHVtbi5maWx0ZXIub3BlcmF0b3IubGlzdD8uaW5jbHVkZXM/LihlLnZhbHVlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZXJhdG9ycyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICN2YWx1ZUNoYW5nZXMgPSBuZXcgU3ViamVjdCgpO1xyXG4gICNzdWJjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb2x1bW5GaWx0ZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ3RpbWUnIHx8IHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb2x1bW4/Lm9wdGlvbj8udXNlRmlsdGVyRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gPSB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gfHwge1xyXG4gICAgICAgICAgICAgIGZyb206IG51bGwsXHJcbiAgICAgICAgICAgICAgdG86IG51bGwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCgpO1xyXG4gIH07XHJcbn1cclxuIl19
|