UNPKG

angular-location-selector

Version:

![Logo](https://iili.io/HWfBDgV.png)

141 lines 19.9 kB
import { __decorate } from "tslib"; import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core'; var LocationMultiSelectorTreeViewComponent = /** @class */ (function () { function LocationMultiSelectorTreeViewComponent(cdRef) { this.cdRef = cdRef; this.closeEvent = new EventEmitter(); this.onChange = new EventEmitter(); this.locationSelector = { id: 0, locationName: null, locationCode: null, utcoffsetInMinutes: 0, locationTypeId: 0, timezoneId: null, timeZoneName: null, dropDownDisabled: null, lastLocationAutoWraupTime: null }; // currently checked Tree view unique id this.checkedKeys = []; this.checkAll = true; // Checking component this.key = 'locationId'; } LocationMultiSelectorTreeViewComponent.prototype.ngOnChanges = function (changes) { this.checkDefaultValue(changes.checkedKeys.currentValue, this.locations); }; LocationMultiSelectorTreeViewComponent.prototype.ngOnInit = function () { this.checkDefaultValue(this.checkedKeys, this.locations); this.onChange.emit(this.checkedKeys); }; LocationMultiSelectorTreeViewComponent.prototype.ngAfterContentInit = function () { this.addExpandListItem(this.locations); }; LocationMultiSelectorTreeViewComponent.prototype.ngAfterViewInit = function () { this.cdRef.detectChanges(); }; LocationMultiSelectorTreeViewComponent.prototype.checkDefaultValue = function (checkedKeys, items) { for (var i = 0; i < items.length; i++) { if (checkedKeys.indexOf(items[i].locationId) > -1) { if (items[i].isSelectable) { items[i].isSelected = true; this.checkDefaultValue(checkedKeys, items[i].items); } else { items[i].isSelected = false; } } else { items[i].isSelected = false; this.checkDefaultValue(checkedKeys, items[i].items); } } }; LocationMultiSelectorTreeViewComponent.prototype.handleCheck = function (dataItem) { dataItem.isSelected = !dataItem.isSelected; this.handleChildCheck(dataItem.items, dataItem.isSelected); this.checkedKeys = []; this.checkedKeys = this.getCheckedKeys(this.locations, this.checkedKeys); this.onChange.emit(this.checkedKeys); }; LocationMultiSelectorTreeViewComponent.prototype.handleChildCheck = function (childItems, isSelected) { for (var i = 0; i < childItems.length; i++) { if (childItems[i].isSelectable) { childItems[i].isSelected = isSelected; this.handleChildCheck(childItems[i].items, isSelected); } } }; LocationMultiSelectorTreeViewComponent.prototype.unCheckAll = function (items) { for (var i = 0; i < items.length; i++) { if (items[i].isSelectable) { items[i].isSelected = false; this.unCheckAll(items[i].items); } } }; LocationMultiSelectorTreeViewComponent.prototype.getCheckedKeys = function (items, keys) { for (var i = 0; i < items.length; i++) { if (items[i].isSelected) { keys.push(items[i].locationId); } keys = this.getCheckedKeys(items[i].items, keys); } return keys; }; LocationMultiSelectorTreeViewComponent.prototype.showClick = function (dataItem) { var _a, _b, _c, _d, _e, _f, _g, _h; this.locationSelector = { id: (_a = dataItem) === null || _a === void 0 ? void 0 : _a.locationId, locationName: (_b = dataItem) === null || _b === void 0 ? void 0 : _b.locationName, locationCode: (_c = dataItem) === null || _c === void 0 ? void 0 : _c.locationCode, locationTypeId: (_d = dataItem) === null || _d === void 0 ? void 0 : _d.locationTypeId, utcoffsetInMinutes: (_e = dataItem) === null || _e === void 0 ? void 0 : _e.utcoffsetInMinutes, timezoneId: (_f = dataItem) === null || _f === void 0 ? void 0 : _f.timezoneId, timeZoneName: (_g = dataItem) === null || _g === void 0 ? void 0 : _g.timeZoneName, dropDownDisabled: null, lastLocationAutoWraupTime: (_h = dataItem) === null || _h === void 0 ? void 0 : _h.lastLocationAutoWraupTime }; this.closeEvent.emit(this.locationSelector); }; LocationMultiSelectorTreeViewComponent.prototype.addExpandListItem = function (treeItem) { var _this = this; treeItem.forEach(function (item) { if (item.hasChild) { _this.addExpandListItem(item.items); } }); }; LocationMultiSelectorTreeViewComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef } ]; }; __decorate([ Input() ], LocationMultiSelectorTreeViewComponent.prototype, "expandedKeys", void 0); __decorate([ Input() ], LocationMultiSelectorTreeViewComponent.prototype, "selectedLocationId", void 0); __decorate([ Input() ], LocationMultiSelectorTreeViewComponent.prototype, "locations", void 0); __decorate([ Output() ], LocationMultiSelectorTreeViewComponent.prototype, "closeEvent", void 0); __decorate([ Output() ], LocationMultiSelectorTreeViewComponent.prototype, "onChange", void 0); __decorate([ Input() ], LocationMultiSelectorTreeViewComponent.prototype, "checkedKeys", void 0); LocationMultiSelectorTreeViewComponent = __decorate([ Component({ selector: 'location-multi-selector-tree-view', template: "<kendo-treeview [nodes]=\"locations\" textField=\"locationName\" childrenField=\"items\" \r\n[(expandedKeys)]=\"expandedKeys\" expandBy=\"locationId\" \r\n[filterable]=\"true\" \r\n filterInputPlaceholder=\"Search\" kendoTreeViewExpandable \r\n kendoTreeViewHierarchyBinding>\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem>\r\n <input [(ngModel)]=\"dataItem.isSelected\" (click)=\"handleCheck(dataItem)\" [disabled]=\"!dataItem.isSelectable\" class=\"k-checkbox\" type=\"checkbox\"\r\n kendoCheckBox /><span class=\"selectoritem\" (click)=\"handleCheck(dataItem)\" [ngClass]=\"{'disableNode': dataItem.isSelectable === false,'itemactive' : selectedLocationId == dataItem.locationId}\"> \r\n {{ dataItem.locationName }} \r\n </span>\r\n \r\n </ng-template>\r\n</kendo-treeview>\r\n", styles: [":host ::ng-deep .k-checkbox{border-color:#000}:host ::ng-deep .k-textbox{width:100%;margin-bottom:8px}:host ::ng-deep .k-in.k-state-focused{box-shadow:none!important}:host ::ng-deep .selectoritem:hover{background-color:#005151;border-radius:3px;color:#fff;font-weight:500;cursor:default}:host ::ng-deep .k-treeview .k-icon{font-size:20px}:host ::ng-deep .k-treeview .k-in{padding:0;width:100%}:host ::ng-deep .selectoritem{padding:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}:host ::ng-deep .disableNode{opacity:.6;pointer-events:none}:host ::ng-deep .itemactive{color:#005151;font-weight:500}"] }) ], LocationMultiSelectorTreeViewComponent); return LocationMultiSelectorTreeViewComponent; }()); export { LocationMultiSelectorTreeViewComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tbXVsdGktc2VsZWN0b3ItdHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbG9jYXRpb24tc2VsZWN0b3IvIiwic291cmNlcyI6WyJsaWIvbG9jYXRpb24tbXVsdGktc2VsZWN0b3IvbG9jYXRpb24tbXVsdGktc2VsZWN0b3ItdHJlZS12aWV3L2xvY2F0aW9uLW11bHRpLXNlbGVjdG9yLXRyZWUtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVdqSDtJQXlDRSxnREFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUE1QjVDLGVBQVUsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFaEYsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBELHFCQUFnQixHQUF5QjtZQUM5QyxFQUFFLEVBQUUsQ0FBQztZQUNMLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLGtCQUFrQixFQUFFLENBQUM7WUFDckIsY0FBYyxFQUFFLENBQUM7WUFDakIsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0Qix5QkFBeUIsRUFBRSxJQUFJO1NBQ2hDLENBQUM7UUFFRix3Q0FBd0M7UUFFakMsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFJeEIsYUFBUSxHQUFZLElBQUksQ0FBQztRQUVoQyxxQkFBcUI7UUFDZCxRQUFHLEdBQUcsWUFBWSxDQUFDO0lBR3NCLENBQUM7SUFUakQsNERBQVcsR0FBWCxVQUFZLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FB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LENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sa0VBQWlCLEdBQXpCLFVBQTBCLFFBQWlDO1FBQTNELGlCQU1DO1FBTEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7WUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ25DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnQkF6RjBCLGlCQUFpQjs7SUFyQ25DO1FBQVIsS0FBSyxFQUFFO2dGQUFxQjtJQUdwQjtRQUFSLEtBQUssRUFBRTtzRkFBNEI7SUFJM0I7UUFBUixLQUFLLEVBQUU7NkVBQXlDO0lBRWpEO1FBREMsTUFBTSxFQUFFOzhFQUNpRjtJQUVoRjtRQUFULE1BQU0sRUFBRTs0RUFBa0Q7SUFnQjNEO1FBREMsS0FBSyxFQUFFOytFQUN1QjtJQS9CcEIsc0NBQXNDO1FBTGxELFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxtQ0FBbUM7WUFDN0MsbTJCQUFpRTs7U0FFbEUsQ0FBQztPQUNXLHNDQUFzQyxDQW9JbEQ7SUFBRCw2Q0FBQztDQUFBLEFBcElELElBb0lDO1NBcElZLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uTXVsdGlTZWxlY3Rvck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvY2F0aW9uLW11bHRpLXNlbGVjdG9yLm1vZGVsJztcclxuaW1wb3J0IHsgTG9jYXRpb25Ecm9wRG93bk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvY2F0aW9ucy1kcm9wLWRvd24tbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7IExvY2F0aW9uU2VsZWN0b3JJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvY2F0aW9uU2VsZWN0b3JNb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsb2NhdGlvbi1tdWx0aS1zZWxlY3Rvci10cmVlLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1tdWx0aS1zZWxlY3Rvci10cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvY2F0aW9uLW11bHRpLXNlbGVjdG9yLXRyZWUtdmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbk11bHRpU2VsZWN0b3JUcmVlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICAvLyBnZXQgcm9vdCBsb2NhdGlvbnMgaWRzIGFzIGlucHV0XHJcbiAgQElucHV0KCkgZXhwYW5kZWRLZXlzOiBhbnlbXTtcclxuXHJcbiAgLy8gZ2V0IGNoZWNrZWQgY29tcG9uZW50cyBUcmVlIHZpZXcgdW5pcXVlIGlkMFxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkTG9jYXRpb25JZDogbnVtYmVyO1xyXG4gIC8vIFRyZWUgdmlldyBzaG93biBsb2NhdGlvbnNcclxuICAvLyBwdWJsaWMgbG9jYXRpb25zOiBPYnNlcnZhYmxlPExvY2F0aW9uRHJvcERvd25Nb2RlbFtdPjtcclxuXHJcbiAgQElucHV0KCkgbG9jYXRpb25zOiBMb2NhdGlvbk11bHRpU2VsZWN0b3JNb2RlbFtdO1xyXG4gIEBPdXRwdXQoKVxyXG4gIGNsb3NlRXZlbnQ6IEV2ZW50RW1pdHRlcjxMb2NhdGlvblNlbGVjdG9ySW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyPExvY2F0aW9uU2VsZWN0b3JJbmZvPigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgbG9jYXRpb25TZWxlY3RvcjogTG9jYXRpb25TZWxlY3RvckluZm8gPSB7XHJcbiAgICBpZDogMCxcclxuICAgIGxvY2F0aW9uTmFtZTogbnVsbCxcclxuICAgIGxvY2F0aW9uQ29kZTogbnVsbCxcclxuICAgIHV0Y29mZnNldEluTWludXRlczogMCxcclxuICAgIGxvY2F0aW9uVHlwZUlkOiAwLFxyXG4gICAgdGltZXpvbmVJZDogbnVsbCxcclxuICAgIHRpbWVab25lTmFtZTogbnVsbCxcclxuICAgIGRyb3BEb3duRGlzYWJsZWQ6IG51bGwsXHJcbiAgICBsYXN0TG9jYXRpb25BdXRvV3JhdXBUaW1lOiBudWxsXHJcbiAgfTtcclxuXHJcbiAgLy8gY3VycmVudGx5IGNoZWNrZWQgVHJlZSB2aWV3IHVuaXF1ZSBpZFxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNoZWNrZWRLZXlzOiBhbnlbXSA9IFtdO1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMuY2hlY2tEZWZhdWx0VmFsdWUoY2hhbmdlcy5jaGVja2VkS2V5cy5jdXJyZW50VmFsdWUsIHRoaXMubG9jYXRpb25zKTtcclxuICB9XHJcbiAgcHVibGljIGNoZWNrQWxsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8gQ2hlY2tpbmcgY29tcG9uZW50XHJcbiAgcHVibGljIGtleSA9ICdsb2NhdGlvbklkJztcclxuICBwdWJsaWMgaXRlcmFibGVEaWZmZXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrRGVmYXVsdFZhbHVlKHRoaXMuY2hlY2tlZEtleXMsIHRoaXMubG9jYXRpb25zKTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmNoZWNrZWRLZXlzKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMuYWRkRXhwYW5kTGlzdEl0ZW0odGhpcy5sb2NhdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tEZWZhdWx0VmFsdWUoY2hlY2tlZEtleXM6IG51bWJlcltdLCBpdGVtczogTG9jYXRpb25NdWx0aVNlbGVjdG9yTW9kZWxbXSkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoY2hlY2tlZEtleXMuaW5kZXhPZihpdGVtc1tpXS5sb2NhdGlvbklkKSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1zW2ldLmlzU2VsZWN0YWJsZSkge1xyXG4gICAgICAgICAgaXRlbXNbaV0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdFZhbHVlKGNoZWNrZWRLZXlzLCBpdGVtc1tpXS5pdGVtcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGl0ZW1zW2ldLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaXRlbXNbaV0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hlY2tEZWZhdWx0VmFsdWUoY2hlY2tlZEtleXMsIGl0ZW1zW2ldLml0ZW1zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2hlY2soZGF0YUl0ZW06IExvY2F0aW9uTXVsdGlTZWxlY3Rvck1vZGVsKSB7XHJcbiAgICBkYXRhSXRlbS5pc1NlbGVjdGVkID0gIWRhdGFJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICB0aGlzLmhhbmRsZUNoaWxkQ2hlY2soZGF0YUl0ZW0uaXRlbXMsIGRhdGFJdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5jaGVja2VkS2V5cyA9IFtdO1xyXG4gICAgdGhpcy5jaGVja2VkS2V5cyA9IHRoaXMuZ2V0Q2hlY2tlZEtleXModGhpcy5sb2NhdGlvbnMsIHRoaXMuY2hlY2tlZEtleXMpO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZEtleXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNoaWxkQ2hlY2soY2hpbGRJdGVtczogTG9jYXRpb25NdWx0aVNlbGVjdG9yTW9kZWxbXSwgaXNTZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChjaGlsZEl0ZW1zW2ldLmlzU2VsZWN0YWJsZSkge1xyXG4gICAgICAgIGNoaWxkSXRlbXNbaV0uaXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVDaGlsZENoZWNrKGNoaWxkSXRlbXNbaV0uaXRlbXMsIGlzU2VsZWN0ZWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdW5DaGVja0FsbChpdGVtczogTG9jYXRpb25NdWx0aVNlbGVjdG9yTW9kZWxbXSkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaXRlbXNbaV0uaXNTZWxlY3RhYmxlKSB7XHJcbiAgICAgICAgaXRlbXNbaV0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudW5DaGVja0FsbChpdGVtc1tpXS5pdGVtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDaGVja2VkS2V5cyhpdGVtczogTG9jYXRpb25NdWx0aVNlbGVjdG9yTW9kZWxbXSwga2V5czogbnVtYmVyW10pOiBudW1iZXJbXSB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpdGVtc1tpXS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAga2V5cy5wdXNoKGl0ZW1zW2ldLmxvY2F0aW9uSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGtleXMgPSB0aGlzLmdldENoZWNrZWRLZXlzKGl0ZW1zW2ldLml0ZW1zLCBrZXlzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXlzO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NsaWNrKGRhdGFJdGVtOiBhbnkpIHtcclxuICAgIHRoaXMubG9jYXRpb25TZWxlY3RvciA9IHtcclxuICAgICAgaWQ6IGRhdGFJdGVtPy5sb2NhdGlvbklkLFxyXG4gICAgICBsb2NhdGlvbk5hbWU6IGRhdGFJdGVtPy5sb2NhdGlvbk5hbWUsXHJcbiAgICAgIGxvY2F0aW9uQ29kZTogZGF0YUl0ZW0/LmxvY2F0aW9uQ29kZSxcclxuICAgICAgbG9jYXRpb25UeXBlSWQ6IGRhdGFJdGVtPy5sb2NhdGlvblR5cGVJZCxcclxuICAgICAgdXRjb2Zmc2V0SW5NaW51dGVzOiBkYXRhSXRlbT8udXRjb2Zmc2V0SW5NaW51dGVzLFxyXG4gICAgICB0aW1lem9uZUlkOiBkYXRhSXRlbT8udGltZXpvbmVJZCxcclxuICAgICAgdGltZVpvbmVOYW1lOiBkYXRhSXRlbT8udGltZVpvbmVOYW1lLFxyXG4gICAgICBkcm9wRG93bkRpc2FibGVkOiBudWxsLFxyXG4gICAgICBsYXN0TG9jYXRpb25BdXRvV3JhdXBUaW1lOiBkYXRhSXRlbT8ubGFzdExvY2F0aW9uQXV0b1dyYXVwVGltZVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KHRoaXMubG9jYXRpb25TZWxlY3Rvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEV4cGFuZExpc3RJdGVtKHRyZWVJdGVtOiBMb2NhdGlvbkRyb3BEb3duTW9kZWxbXSkge1xyXG4gICAgdHJlZUl0ZW0uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGQpIHtcclxuICAgICAgICB0aGlzLmFkZEV4cGFuZExpc3RJdGVtKGl0ZW0uaXRlbXMpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19