UNPKG

@vicoders/angular

Version:

- [Vicoders Angular Common Module](#vicoders-angular-common-module) - [Install](#install) - [How to use](#how-to-use) - [Pipes](#pipes) - [hasItem](#hasitem) - [isArray](#isarray) - [length](#length) - [orderBy](#orderby)

221 lines 21.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ActivatedRoute, Router, NavigationEnd } from '@angular/router'; import { Component, Input } from '@angular/core'; import * as _ from 'lodash'; /** @type {?} */ var ASC = 'asc'; /** @type {?} */ var DESC = 'desc'; var SortByFieldComponent = /** @class */ (function () { function SortByFieldComponent(route, activatedRoute) { this.allowMulti = false; this.route = route; this.activatedRoute = activatedRoute; } /** * @return {?} */ SortByFieldComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; if (!_.isUndefined(this.default)) { if (this.default.toLowerCase() === 'asc') { this.direction = ASC; } if (this.default.toLowerCase() === 'desc') { this.direction = DESC; } } if (!_.isUndefined(this.activatedRoute.snapshot.queryParams.sort)) { /** @type {?} */ var fields = this.activatedRoute.snapshot.queryParams.sort.split(','); if (_.includes(fields, this.field) || _.includes(fields, "+" + this.field)) { this.direction = ASC; } else if (_.includes(fields, "-" + this.field)) { this.direction = DESC; } } this.navigationSubscription = this.route.events.subscribe(function (e) { if (e instanceof NavigationEnd) { if (!_.isUndefined(_this.default)) { if (_this.default.toLowerCase() === 'asc') { _this.direction = ASC; } if (_this.default.toLowerCase() === 'desc') { _this.direction = DESC; } } if (!_.isUndefined(_this.activatedRoute.snapshot.queryParams.sort)) { /** @type {?} */ var fields = _this.activatedRoute.snapshot.queryParams.sort.split(','); if (_.includes(fields, _this.field) || _.includes(fields, "+" + _this.field)) { _this.direction = ASC; } else if (_.includes(fields, "-" + _this.field)) { _this.direction = DESC; } else { // tslint:disable-next-line:no-unused-expression _this.direction = undefined; } } else { // tslint:disable-next-line:no-unused-expression _this.direction = undefined; } } }); }; /** * @return {?} */ SortByFieldComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.navigationSubscription.unsubscribe(); }; /** * @return {?} */ SortByFieldComponent.prototype.getDirection = /** * @return {?} */ function () { return this.direction; }; /** * @return {?} */ SortByFieldComponent.prototype.getRouterDirection = /** * @return {?} */ function () { if (this.direction === ASC) { return ''; } else if (this.direction === DESC) { return '-'; } else { return undefined; } }; /** * @return {?} */ SortByFieldComponent.prototype.sort = /** * @return {?} */ function () { var _this = this; if (this.direction === ASC) { this.direction = DESC; } else if (this.direction === DESC) { this.direction = undefined; } else { this.direction = ASC; } /** @type {?} */ var url = this.activatedRoute.snapshot.url; /** @type {?} */ var queryParams = this.activatedRoute.snapshot.queryParams; /** @type {?} */ var fields = []; if (this.allowMulti === true) { if (!_.isUndefined(queryParams.sort)) { fields = queryParams.sort.split(','); if (_.includes(fields, this.field) || _.includes(fields, "+" + this.field) || _.includes(fields, "-" + this.field)) { if (this.getRouterDirection() === undefined) { _.remove(fields, function (item) { return item === _this.field || item === "+" + _this.field || item === "-" + _this.field; }); } else { fields = _.map(fields, function (item) { if (item === _this.field || item === "+" + _this.field || item === "-" + _this.field) { item = "" + _this.getRouterDirection() + _this.field; } return item; }); } } else { if (this.getRouterDirection() !== undefined) { fields.push("" + this.getRouterDirection() + this.field); } } } else { if (this.getRouterDirection() !== undefined) { fields.push("" + this.getRouterDirection() + this.field); } } } else { if (this.getRouterDirection() !== undefined) { fields.push("" + this.getRouterDirection() + this.field); } } _.remove(fields, function (item) { return _.isNil(item) || item === ''; }); /** @type {?} */ var extras = { queryParams: { sort: fields.join(','), page: 1 } }; if (!_.isUndefined(this.options)) { extras = _.assign(this.options, extras); } if (_.isUndefined(this.callback)) { this.route.navigate([document.location.pathname], _.assign(extras, { queryParamsHandling: 'merge' })); } else { this.callback(this.field, this.direction, extras); } }; SortByFieldComponent.decorators = [ { type: Component, args: [{ // tslint:disable-next-line:component-selector selector: 'sort-by-field', template: "<span class=\"sorting fa fa-sort\" [ngClass]=\"{ 'fa-sort-up': direction === 'asc', 'fa-sort-down': direction === 'desc' }\" (click)=\"sort()\"></span>\n", styles: [":host .sorting{cursor:pointer}"] }] } ]; SortByFieldComponent.ctorParameters = function () { return [ { type: Router }, { type: ActivatedRoute } ]; }; SortByFieldComponent.propDecorators = { field: [{ type: Input }], allowMulti: [{ type: Input }], default: [{ type: Input }], options: [{ type: Input }], callback: [{ type: Input }] }; return SortByFieldComponent; }()); export { SortByFieldComponent }; if (false) { /** @type {?} */ SortByFieldComponent.prototype.navigationSubscription; /** @type {?} */ SortByFieldComponent.prototype.activatedRoute; /** @type {?} */ SortByFieldComponent.prototype.route; /** @type {?} */ SortByFieldComponent.prototype.field; /** @type {?} */ SortByFieldComponent.prototype.allowMulti; /** @type {?} */ SortByFieldComponent.prototype.default; /** @type {?} */ SortByFieldComponent.prototype.options; /** @type {?} */ SortByFieldComponent.prototype.callback; /** @type {?} */ SortByFieldComponent.prototype.direction; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Admljb2RlcnMvYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL3NvcnQtYnktZmllbGQvc29ydC1ieS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFvQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7SUFHdEIsR0FBRyxHQUFHLEtBQUs7O0lBQ1gsSUFBSSxHQUFHLE1BQU07QUFFbkI7SUFrQkUsOEJBQVksS0FBYSxFQUFFLGNBQThCO1FBUGhELGVBQVUsR0FBYSxLQUFLLENBQUM7UUFRcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQzs7OztJQUVELHVDQUFROzs7SUFBUjtRQUFBLGlCQTRDQztRQTNDQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7YUFDdEI7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtTQUNGO1FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FB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QUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakUsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2RzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDOztnQkF4SUYsU0FBUyxTQUFDOztvQkFFVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIscUtBQTZDOztpQkFFOUM7OztnQkFid0IsTUFBTTtnQkFBdEIsY0FBYzs7O3dCQWtCcEIsS0FBSzs2QkFDTCxLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLOztJQTJIUiwyQkFBQztDQUFBLEFBeklELElBeUlDO1NBbklZLG9CQUFvQjs7O0lBQy9CLHNEQUFxQzs7SUFDckMsOENBQStCOztJQUMvQixxQ0FBYzs7SUFDZCxxQ0FBdUI7O0lBQ3ZCLDBDQUFzQzs7SUFDdEMsdUNBQTBCOztJQUMxQix1Q0FBb0M7O0lBQ3BDLHdDQUE2Qjs7SUFFN0IseUNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgTmF2aWdhdGlvbkV4dHJhcywgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IEFTQyA9ICdhc2MnO1xuY29uc3QgREVTQyA9ICdkZXNjJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdzb3J0LWJ5LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NvcnQtYnktZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zb3J0LWJ5LWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU29ydEJ5RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5hdmlnYXRpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICByb3V0ZTogUm91dGVyO1xuICBASW5wdXQoKSBmaWVsZDogU3RyaW5nO1xuICBASW5wdXQoKSBhbGxvd011bHRpPzogQm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWZhdWx0PzogU3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25zPzogTmF2aWdhdGlvbkV4dHJhcztcbiAgQElucHV0KCkgY2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuICBwdWJsaWMgZGlyZWN0aW9uOiBTdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iocm91dGU6IFJvdXRlciwgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgdGhpcy5yb3V0ZSA9IHJvdXRlO1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUgPSBhY3RpdmF0ZWRSb3V0ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmRlZmF1bHQpKSB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0LnRvTG93ZXJDYXNlKCkgPT09ICdhc2MnKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gQVNDO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGVmYXVsdC50b0xvd2VyQ2FzZSgpID09PSAnZGVzYycpIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBERVNDO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zb3J0KSkge1xuICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zb3J0LnNwbGl0KCcsJyk7XG4gICAgICBpZiAoXy5pbmNsdWRlcyhmaWVsZHMsIHRoaXMuZmllbGQpIHx8IF8uaW5jbHVkZXMoZmllbGRzLCBgKyR7dGhpcy5maWVsZH1gKSkge1xuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IEFTQztcbiAgICAgIH0gZWxzZSBpZiAoXy5pbmNsdWRlcyhmaWVsZHMsIGAtJHt0aGlzLmZpZWxkfWApKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gREVTQztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5hdmlnYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLmV2ZW50cy5zdWJzY3JpYmUoKGU6IGFueSkgPT4ge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmRlZmF1bHQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdC50b0xvd2VyQ2FzZSgpID09PSAnYXNjJykge1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBBU0M7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHQudG9Mb3dlckNhc2UoKSA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IERFU0M7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnNvcnQpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zb3J0LnNwbGl0KCcsJyk7XG4gICAgICAgICAgaWYgKF8uaW5jbHVkZXMoZmllbGRzLCB0aGlzLmZpZWxkKSB8fCBfLmluY2x1ZGVzKGZpZWxkcywgYCske3RoaXMuZmllbGR9YCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gQVNDO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXy5pbmNsdWRlcyhmaWVsZHMsIGAtJHt0aGlzLmZpZWxkfWApKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IERFU0M7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvblxuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvblxuICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5hdmlnYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldERpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb247XG4gIH1cblxuICBnZXRSb3V0ZXJEaXJlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSBBU0MpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGlyZWN0aW9uID09PSBERVNDKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBzb3J0KCkge1xuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gQVNDKSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbiA9IERFU0M7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gREVTQykge1xuICAgICAgdGhpcy5kaXJlY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gQVNDO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnVybDtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgbGV0IGZpZWxkcyA9IFtdO1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGkgPT09IHRydWUpIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChxdWVyeVBhcmFtcy5zb3J0KSkge1xuICAgICAgICBmaWVsZHMgPSBxdWVyeVBhcmFtcy5zb3J0LnNwbGl0KCcsJyk7XG4gICAgICAgIGlmIChfLmluY2x1ZGVzKGZpZWxkcywgdGhpcy5maWVsZCkgfHwgXy5pbmNsdWRlcyhmaWVsZHMsIGArJHt0aGlzLmZpZWxkfWApIHx8IF8uaW5jbHVkZXMoZmllbGRzLCBgLSR7dGhpcy5maWVsZH1gKSkge1xuICAgICAgICAgIGlmICh0aGlzLmdldFJvdXRlckRpcmVjdGlvbigpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF8ucmVtb3ZlKGZpZWxkcywgaXRlbSA9PiBpdGVtID09PSB0aGlzLmZpZWxkIHx8IGl0ZW0gPT09IGArJHt0aGlzLmZpZWxkfWAgfHwgaXRlbSA9PT0gYC0ke3RoaXMuZmllbGR9YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcyA9IF8ubWFwKGZpZWxkcywgaXRlbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtID09PSB0aGlzLmZpZWxkIHx8IGl0ZW0gPT09IGArJHt0aGlzLmZpZWxkfWAgfHwgaXRlbSA9PT0gYC0ke3RoaXMuZmllbGR9YCkge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSBgJHt0aGlzLmdldFJvdXRlckRpcmVjdGlvbigpfSR7dGhpcy5maWVsZH1gO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmdldFJvdXRlckRpcmVjdGlvbigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKGAke3RoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCl9JHt0aGlzLmZpZWxkfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpZWxkcy5wdXNoKGAke3RoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCl9JHt0aGlzLmZpZWxkfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmdldFJvdXRlckRpcmVjdGlvbigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmllbGRzLnB1c2goYCR7dGhpcy5nZXRSb3V0ZXJEaXJlY3Rpb24oKX0ke3RoaXMuZmllbGR9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIF8ucmVtb3ZlKGZpZWxkcywgaXRlbSA9PiBfLmlzTmlsKGl0ZW0pIHx8IGl0ZW0gPT09ICcnKTtcbiAgICBsZXQgZXh0cmFzID0geyBxdWVyeVBhcmFtczogeyBzb3J0OiBmaWVsZHMuam9pbignLCcpLCBwYWdlOiAxIH0gfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5vcHRpb25zKSkge1xuICAgICAgZXh0cmFzID0gXy5hc3NpZ24odGhpcy5vcHRpb25zLCBleHRyYXMpO1xuICAgIH1cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmNhbGxiYWNrKSkge1xuICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZShbZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWVdLCBfLmFzc2lnbihleHRyYXMsIHsgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5maWVsZCwgdGhpcy5kaXJlY3Rpb24sIGV4dHJhcyk7XG4gICAgfVxuICB9XG59XG4iXX0=