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)

206 lines 21 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 {?} */ const ASC = 'asc'; /** @type {?} */ const DESC = 'desc'; export class SortByFieldComponent { /** * @param {?} route * @param {?} activatedRoute */ constructor(route, activatedRoute) { this.allowMulti = false; this.route = route; this.activatedRoute = activatedRoute; } /** * @return {?} */ ngOnInit() { 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 {?} */ const 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((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 {?} */ const 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 {?} */ ngOnDestroy() { this.navigationSubscription.unsubscribe(); } /** * @return {?} */ getDirection() { return this.direction; } /** * @return {?} */ getRouterDirection() { if (this.direction === ASC) { return ''; } else if (this.direction === DESC) { return '-'; } else { return undefined; } } /** * @return {?} */ sort() { if (this.direction === ASC) { this.direction = DESC; } else if (this.direction === DESC) { this.direction = undefined; } else { this.direction = ASC; } /** @type {?} */ const url = this.activatedRoute.snapshot.url; /** @type {?} */ const queryParams = this.activatedRoute.snapshot.queryParams; /** @type {?} */ let 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, item => item === this.field || item === `+${this.field}` || item === `-${this.field}`); } else { fields = _.map(fields, 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, item => _.isNil(item) || item === ''); /** @type {?} */ let 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 = () => [ { type: Router }, { type: ActivatedRoute } ]; SortByFieldComponent.propDecorators = { field: [{ type: Input }], allowMulti: [{ type: Input }], default: [{ type: Input }], options: [{ type: Input }], callback: [{ type: Input }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Admljb2RlcnMvYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL3NvcnQtYnktZmllbGQvc29ydC1ieS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFvQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7TUFHdEIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07QUFRbkIsTUFBTTs7Ozs7SUFZSixZQUFZLEtBQWEsRUFBRSxjQUE4QjtRQVBoRCxlQUFVLEdBQWEsS0FBSyxDQUFDO1FBUXBDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRTtnQkFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7YUFDdkI7U0FDRjtRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTs7a0JBQzNE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RSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakUsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2RzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDOzs7WUF4SUYsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIscUtBQTZDOzthQUU5Qzs7O1lBYndCLE1BQU07WUFBdEIsY0FBYzs7O29CQWtCcEIsS0FBSzt5QkFDTCxLQUFLO3NCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLOzs7O0lBUE4sc0RBQXFDOztJQUNyQyw4Q0FBK0I7O0lBQy9CLHFDQUFjOztJQUNkLHFDQUF1Qjs7SUFDdkIsMENBQXNDOztJQUN0Qyx1Q0FBMEI7O0lBQzFCLHVDQUFvQzs7SUFDcEMsd0NBQTZCOztJQUU3Qix5Q0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuY29uc3QgQVNDID0gJ2FzYyc7XG5jb25zdCBERVNDID0gJ2Rlc2MnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3NvcnQtYnktZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc29ydC1ieS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NvcnQtYnktZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTb3J0QnlGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbmF2aWdhdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gIHJvdXRlOiBSb3V0ZXI7XG4gIEBJbnB1dCgpIGZpZWxkOiBTdHJpbmc7XG4gIEBJbnB1dCgpIGFsbG93TXVsdGk/OiBCb29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlZmF1bHQ/OiBTdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBOYXZpZ2F0aW9uRXh0cmFzO1xuICBASW5wdXQoKSBjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG4gIHB1YmxpYyBkaXJlY3Rpb246IFN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihyb3V0ZTogUm91dGVyLCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZSA9IGFjdGl2YXRlZFJvdXRlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZGVmYXVsdCkpIHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHQudG9Mb3dlckNhc2UoKSA9PT0gJ2FzYycpIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBBU0M7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZWZhdWx0LnRvTG93ZXJDYXNlKCkgPT09ICdkZXNjJykge1xuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IERFU0M7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnNvcnQpKSB7XG4gICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnNvcnQuc3BsaXQoJywnKTtcbiAgICAgIGlmIChfLmluY2x1ZGVzKGZpZWxkcywgdGhpcy5maWVsZCkgfHwgXy5pbmNsdWRlcyhmaWVsZHMsIGArJHt0aGlzLmZpZWxkfWApKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gQVNDO1xuICAgICAgfSBlbHNlIGlmIChfLmluY2x1ZGVzKGZpZWxkcywgYC0ke3RoaXMuZmllbGR9YCkpIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBERVNDO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubmF2aWdhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUuZXZlbnRzLnN1YnNjcmliZSgoZTogYW55KSA9PiB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZGVmYXVsdCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0LnRvTG93ZXJDYXNlKCkgPT09ICdhc2MnKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IEFTQztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdC50b0xvd2VyQ2FzZSgpID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gREVTQztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuc29ydCkpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnNvcnQuc3BsaXQoJywnKTtcbiAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhmaWVsZHMsIHRoaXMuZmllbGQpIHx8IF8uaW5jbHVkZXMoZmllbGRzLCBgKyR7dGhpcy5maWVsZH1gKSkge1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBBU0M7XG4gICAgICAgICAgfSBlbHNlIGlmIChfLmluY2x1ZGVzKGZpZWxkcywgYC0ke3RoaXMuZmllbGR9YCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gREVTQztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmF2aWdhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0RGlyZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbjtcbiAgfVxuXG4gIGdldFJvdXRlckRpcmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09IEFTQykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kaXJlY3Rpb24gPT09IERFU0MpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHNvcnQoKSB7XG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSBBU0MpIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gREVTQztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGlyZWN0aW9uID09PSBERVNDKSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXJlY3Rpb24gPSBBU0M7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QudXJsO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICBsZXQgZmllbGRzID0gW107XG4gICAgaWYgKHRoaXMuYWxsb3dNdWx0aSA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHF1ZXJ5UGFyYW1zLnNvcnQpKSB7XG4gICAgICAgIGZpZWxkcyA9IHF1ZXJ5UGFyYW1zLnNvcnQuc3BsaXQoJywnKTtcbiAgICAgICAgaWYgKF8uaW5jbHVkZXMoZmllbGRzLCB0aGlzLmZpZWxkKSB8fCBfLmluY2x1ZGVzKGZpZWxkcywgYCske3RoaXMuZmllbGR9YCkgfHwgXy5pbmNsdWRlcyhmaWVsZHMsIGAtJHt0aGlzLmZpZWxkfWApKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5yZW1vdmUoZmllbGRzLCBpdGVtID0+IGl0ZW0gPT09IHRoaXMuZmllbGQgfHwgaXRlbSA9PT0gYCske3RoaXMuZmllbGR9YCB8fCBpdGVtID09PSBgLSR7dGhpcy5maWVsZH1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGRzID0gXy5tYXAoZmllbGRzLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuZmllbGQgfHwgaXRlbSA9PT0gYCske3RoaXMuZmllbGR9YCB8fCBpdGVtID09PSBgLSR7dGhpcy5maWVsZH1gKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IGAke3RoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCl9JHt0aGlzLmZpZWxkfWA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZmllbGRzLnB1c2goYCR7dGhpcy5nZXRSb3V0ZXJEaXJlY3Rpb24oKX0ke3RoaXMuZmllbGR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5nZXRSb3V0ZXJEaXJlY3Rpb24oKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmllbGRzLnB1c2goYCR7dGhpcy5nZXRSb3V0ZXJEaXJlY3Rpb24oKX0ke3RoaXMuZmllbGR9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZ2V0Um91dGVyRGlyZWN0aW9uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWVsZHMucHVzaChgJHt0aGlzLmdldFJvdXRlckRpcmVjdGlvbigpfSR7dGhpcy5maWVsZH1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXy5yZW1vdmUoZmllbGRzLCBpdGVtID0+IF8uaXNOaWwoaXRlbSkgfHwgaXRlbSA9PT0gJycpO1xuICAgIGxldCBleHRyYXMgPSB7IHF1ZXJ5UGFyYW1zOiB7IHNvcnQ6IGZpZWxkcy5qb2luKCcsJyksIHBhZ2U6IDEgfSB9O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLm9wdGlvbnMpKSB7XG4gICAgICBleHRyYXMgPSBfLmFzc2lnbih0aGlzLm9wdGlvbnMsIGV4dHJhcyk7XG4gICAgfVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuY2FsbGJhY2spKSB7XG4gICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFtkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZV0sIF8uYXNzaWduKGV4dHJhcywgeyBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLmZpZWxkLCB0aGlzLmRpcmVjdGlvbiwgZXh0cmFzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==