@tiposaurio/guido-lib
Version:
283 lines • 26.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/components/menu/menu.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, EventEmitter, Output } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
var GuiMenuComponent = /** @class */ (function () {
function GuiMenuComponent(router, route) {
this.router = router;
this.route = route;
this.showMenu = '';
this.showSubMenu = '';
this.sidebarnavItems = [];
this.selectedItem = new EventEmitter();
this.userData = {
name: '',
email: '',
};
}
Object.defineProperty(GuiMenuComponent.prototype, "menu", {
set: /**
* @param {?} d
* @return {?}
*/
function (d) {
if (d) {
this.sidebarnavItems = d;
this.openMenuLoad(d);
}
},
enumerable: true,
configurable: true
});
// this is for the open close
// this is for the open close
/**
* @param {?} element
* @return {?}
*/
GuiMenuComponent.prototype.addExpandClass =
// this is for the open close
/**
* @param {?} element
* @return {?}
*/
function (element) {
if (element === this.showMenu) {
this.showMenu = '0';
}
else {
this.showMenu = element;
}
};
/**
* @param {?} element
* @return {?}
*/
GuiMenuComponent.prototype.addActiveClass = /**
* @param {?} element
* @return {?}
*/
function (element) {
if (element === this.showSubMenu) {
this.showSubMenu = '0';
}
else {
this.showSubMenu = element;
}
};
// End open close
// End open close
/**
* @return {?}
*/
GuiMenuComponent.prototype.ngOnInit =
// End open close
/**
* @return {?}
*/
function () {
// this.getListMenu();
// this.getUserData();
// this.getEnterprise();
// this.MenuDataState$ = this.stateService.onMenuState$().subscribe(res => {
// const arr = [];
// arr.push(res); // console.log('res...', res);
// this.showMenu = res.title;
// this.sidebarnavItems = arr;
// });
// this.MenuDataAllState$ = this.stateService.onMenuAllState$().subscribe(response => {
// this.sidebarnavItems = response;
// });
};
/**
* @return {?}
*/
GuiMenuComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.MenuDataState$.unsubscribe();
this.MenuDataAllState$.unsubscribe();
};
// public getListMenu() {
// this.menuService.getAll$().subscribe(res => {
// this.sidebarnavItems = res.data;
// this.openMenuLoad();
// });
// }
// private getEnterprise() {
// this.enterpriseService.getAll$().subscribe(response => {
// const enterData = response && response.data || {};
// this.authStoreService.setEnterpriseData(enterData);
// })
// }
// public getUserData() {
// this.userData = this.authStoreService.getUserData();
// }
// public logout() {
// this.logoutService.getAll$().subscribe(res => {
// this.authStoreService.clearAll();
// this.router.navigate(['/authentication/login'], {relativeTo: this.route});
// });
// }
// onPathLink(path) {
// if (path) {
// console.log(path, '<<------------');
// this.router.navigate([path], {relativeTo: this.route});
// }
// }
// public getListMenu() {
// this.menuService.getAll$().subscribe(res => {
// this.sidebarnavItems = res.data;
// this.openMenuLoad();
// });
// }
// private getEnterprise() {
// this.enterpriseService.getAll$().subscribe(response => {
// const enterData = response && response.data || {};
// this.authStoreService.setEnterpriseData(enterData);
// })
// }
// public getUserData() {
// this.userData = this.authStoreService.getUserData();
// }
// public logout() {
// this.logoutService.getAll$().subscribe(res => {
// this.authStoreService.clearAll();
// this.router.navigate(['/authentication/login'], {relativeTo: this.route});
// });
// }
// onPathLink(path) {
// if (path) {
// console.log(path, '<<------------');
// this.router.navigate([path], {relativeTo: this.route});
// }
// }
/**
* @private
* @param {?} sidebarnavItems
* @return {?}
*/
GuiMenuComponent.prototype.openMenuLoad =
// public getListMenu() {
// this.menuService.getAll$().subscribe(res => {
// this.sidebarnavItems = res.data;
// this.openMenuLoad();
// });
// }
// private getEnterprise() {
// this.enterpriseService.getAll$().subscribe(response => {
// const enterData = response && response.data || {};
// this.authStoreService.setEnterpriseData(enterData);
// })
// }
// public getUserData() {
// this.userData = this.authStoreService.getUserData();
// }
// public logout() {
// this.logoutService.getAll$().subscribe(res => {
// this.authStoreService.clearAll();
// this.router.navigate(['/authentication/login'], {relativeTo: this.route});
// });
// }
// onPathLink(path) {
// if (path) {
// console.log(path, '<<------------');
// this.router.navigate([path], {relativeTo: this.route});
// }
// }
/**
* @private
* @param {?} sidebarnavItems
* @return {?}
*/
function (sidebarnavItems) {
var _this = this;
/** @type {?} */
var path = window.location.pathname;
/** @type {?} */
var s_path = path.split('/');
if (s_path[1]) {
if (s_path[2]) {
sidebarnavItems = sidebarnavItems.map((/**
* @param {?} items
* @return {?}
*/
function (items) {
if (items.path === "" + s_path[2]) {
_this.showMenu = items.title;
}
items.submenu.forEach((/**
* @param {?} subItems
* @return {?}
*/
function (subItems) {
if (subItems.path === "/" + s_path[1] + "/" + s_path[2] + "/" + s_path[3]) {
_this.showSubMenu = subItems.title;
}
return subItems;
}));
return items;
}));
}
}
};
GuiMenuComponent.decorators = [
{ type: Component, args: [{
selector: 'gui-menu',
template: "<nav class=\"sidebar-nav\">\r\n <ul id=\"sidebarnav\">\r\n <!-- User Profile-->\r\n <!-- <li *ngIf=\"userData && userData.name\">\r\n <div class=\"user-profile d-flex no-block m-t-20\">\r\n <div class=\"user-pic\">\r\n <img src=\"assets/images/users/1.jpg\" alt=\"users\" class=\"rounded-circle\" width=\"40\" />\r\n </div>\r\n <div class=\"dropdown user-content hide-menu m-l-10\" ngbDropdown placement=\"bottom-right\">\r\n <a ngbDropdownToggle href=\"javascript:void(0)\" class=\"dropdown-toggle\" id=\"Userdd\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n aria-expanded=\"false\">\r\n <h5 class=\"m-b-0 user-name font-medium\">{{userData.name}}\r\n <i class=\"fa fa-angle-down\"></i>\r\n </h5>\r\n <span class=\"op-5 user-email\">{{userData.email}}</span>\r\n </a>\r\n <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"Userdd\" ngbDropdownMenu>\r\n <a class=\"dropdown-item\" href=\"javascript:void(0)\">\r\n <i class=\"ti-user m-r-5 m-l-5\"></i> My Profile</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item\" href=\"javascript:void(0)\">\r\n <i class=\"ti-settings m-r-5 m-l-5\"></i> Account Setting</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item\" (click)=\"logout()\">\r\n <i class=\"fa fa-power-off m-r-5 m-l-5\"></i> Logout</a>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n <li class=\"p-15 m-t-10\">\r\n <a href=\"javascript:void(0)\" class=\"btn btn-block create-btn text-white no-block d-flex align-items-center\">\r\n <i class=\"fa fa-plus-square\"></i>\r\n <span class=\"hide-menu m-l-5\">Create New</span>\r\n </a>\r\n </li> -->\r\n <ng-container *ngIf=\"sidebarnavItems && sidebarnavItems.length\">\r\n <!-- First level menu -->\r\n <li class=\"sidebar-item\" [class.active]=\"showMenu === sidebarnavItem.title\" *ngFor=\"let sidebarnavItem of sidebarnavItems\"\r\n [routerLinkActive]=\"sidebarnavItem.submenu.length != 0 ? '' : 'active'\">\r\n <div class=\"nav-small-cap\" *ngIf=\"sidebarnavItem.extralink === true\">\r\n <i [ngClass]=\"[sidebarnavItem.icon]\"></i><span class=\"hide-menu\">{{sidebarnavItem.title | uppercase}}</span>\r\n </div>\r\n <a class=\"sidebar-link waves-effect waves-dark lines\" [routerLink]=\"sidebarnavItem.class === '' ? [sidebarnavItem.path] : null\"\r\n [ngClass]=\"[sidebarnavItem.class]\" *ngIf=\"!sidebarnavItem.extralink;\" (click)=\"addExpandClass(sidebarnavItem.title)\"\r\n [routerLinkActive]=\"sidebarnavItem.submenu.length != 0 ? '' : 'active'\">\r\n <i [ngClass]=\"[sidebarnavItem.icon]\"></i>\r\n <span class=\"hide-menu\">{{sidebarnavItem.title | uppercase }}</span>\r\n </a>\r\n <!-- Second level menu -->\r\n <ul aria-expanded=\"false\" class=\"collapse first-level\" *ngIf=\"sidebarnavItem.submenu.length > 0\" [ngClass]=\"{'in' : showMenu === sidebarnavItem.title }\">\r\n <li class=\"sidebar-item\" *ngFor=\"let sidebarnavSubItem of sidebarnavItem.submenu\"\r\n [class.active]=\"showSubMenu === sidebarnavSubItem.title\"\r\n [routerLinkActive]=\"sidebarnavSubItem.submenu.length > 0 ? '' : 'active'\">\r\n <!-- [routerLink]=\"sidebarnavSubItem.submenu.length > 0 ? null : [sidebarnavSubItem.path]\" -->\r\n <a class=\"sidebar-link\" (click)=\"selectedItem.emit(sidebarnavSubItem)\"\r\n [routerLinkActive]=\"sidebarnavSubItem.submenu.length > 0 ? '' : 'router-link-active'\"\r\n [ngClass]=\"[sidebarnavSubItem.class]\" *ngIf=\"!sidebarnavSubItem.extralink;\" (click)=\"addActiveClass(sidebarnavSubItem.title)\">\r\n <i [ngClass]=\"[sidebarnavSubItem.icon]\"></i>\r\n <span class=\"hide-menu\">{{sidebarnavSubItem.title}}</span>\r\n </a>\r\n <!-- Third level menu -->\r\n <!-- <ul aria-expanded=\"false\" class=\"collapse Second-level\" *ngIf=\"sidebarnavSubItem.submenu.length > 0\" [ngClass]=\"{'in' : showSubMenu === sidebarnavSubItem.title }\">\r\n <li class=\"sidebar-item\" *ngFor=\"let sidebarnavSubsubItem of sidebarnavSubItem.submenu\" routerLinkActive=\"active\" [ngClass]=\"[sidebarnavSubsubItem.class]\">\r\n <a class=\"sidebar-link\" [routerLink]=\"[sidebarnavSubsubItem.path]\" *ngIf=\"!sidebarnavSubsubItem.extralink;\" [routerLinkActive]=\"sidebarnavSubsubItem.submenu.length > 0 ? '' : 'router-link-active'\">\r\n <i [ngClass]=\"[sidebarnavSubsubItem.icon]\"></i>\r\n <span class=\"hide-menu\">{{sidebarnavSubsubItem.title}}</span>\r\n </a>\r\n </li>\r\n </ul> -->\r\n </li>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n",
styles: ["@import url(https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800);.left-sidebar{position:absolute;width:250px;height:100%;top:0;z-index:10;padding-top:64px;background:#fff;box-shadow:1px 0 20px rgba(0,0,0,.08);-webkit-transition:.2s ease-in;transition:.2s ease-in}.scroll-sidebar{height:calc(100% - 20px);position:relative}.sidebar-nav ul .sidebar-item{width:250px}.sidebar-nav ul .sidebar-item .sidebar-link{color:#5f6368!important;padding:7px 15px;display:-webkit-box;display:flex;white-space:nowrap;-webkit-box-align:center;align-items:center;line-height:25px;font-weight:700;letter-spacing:.2px}.sidebar-nav ul .sidebar-item .sidebar-link i{font-style:normal;width:35px;line-height:25px;font-size:17px;color:#5f6368!important;display:inline-block;text-align:center}.sidebar-nav ul .sidebar-item .sidebar-link span{margin-left:10px}.sidebar-nav ul .sidebar-item .sidebar-link.active,.sidebar-nav ul .sidebar-item .sidebar-link:hover{opacity:1;background:rgba(0,0,0,.04)}.sidebar-nav ul .sidebar-item.active>.sidebar-link{background:rgba(0,0,0,.04);color:#2962ff!important;opacity:1}.sidebar-nav ul .sidebar-item.active>.sidebar-link i{color:#2962ff!important}.sidebar-nav ul .sidebar-item .first-level{padding:0 0 10px;background-color:#f5f5f5!important}.sidebar-nav ul .sidebar-item .first-level .sidebar-item.active .sidebar-link{opacity:1}.sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link{padding:7px 15px}.sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link i{font-size:14px}.nav-small-cap{font-size:12px;padding:7px 15px;white-space:nowrap;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;line-height:30px;color:#fff;opacity:.3;text-transform:uppercase}.nav-small-cap i{line-height:30px;margin:0 5px}.sidebar-nav ul{margin:0;padding:0}.sidebar-nav ul li{list-style:none}.collapse.in{display:block}.sidebar-nav .has-arrow{position:relative}.sidebar-nav .has-arrow::after{position:absolute;content:\"\";width:7px;height:7px;border-width:1px 0 0 1px;border-style:solid;border-color:#fff;margin-left:10px;-webkit-transform:rotate(135deg) translate(0,-50%);transform:rotate(135deg) translate(0,-50%);-webkit-transform-origin:top;transform-origin:top;top:26px;right:15px;-webkit-transition:.3s ease-out;transition:.3s ease-out}.sidebar-nav .has-arrow[aria-expanded=true]::after,.sidebar-nav li.active>.has-arrow::after,.sidebar-nav li>.has-arrow.active::after{-webkit-transform:rotate(-135deg) translate(0,-50%);transform:rotate(-135deg) translate(0,-50%)}.user-profile{padding:15px}.user-profile .user-content,.user-profile .user-email,.user-profile .user-name{color:#fff;white-space:nowrap;text-overflow:ellipsis}.user-profile a:after{display:none}.create-btn{height:40px;background:#343a40}"]
}] }
];
/** @nocollapse */
GuiMenuComponent.ctorParameters = function () { return [
{ type: Router },
{ type: ActivatedRoute }
]; };
GuiMenuComponent.propDecorators = {
menu: [{ type: Input }],
selectedItem: [{ type: Output }]
};
return GuiMenuComponent;
}());
export { GuiMenuComponent };
if (false) {
/** @type {?} */
GuiMenuComponent.prototype.showMenu;
/** @type {?} */
GuiMenuComponent.prototype.showSubMenu;
/** @type {?} */
GuiMenuComponent.prototype.sidebarnavItems;
/** @type {?} */
GuiMenuComponent.prototype.selectedItem;
/** @type {?} */
GuiMenuComponent.prototype.enterpriseData;
/** @type {?} */
GuiMenuComponent.prototype.userData;
/**
* @type {?}
* @private
*/
GuiMenuComponent.prototype.MenuDataState$;
/**
* @type {?}
* @private
*/
GuiMenuComponent.prototype.MenuDataAllState$;
/** @type {?} */
GuiMenuComponent.prototype.openActivatemenu;
/**
* @type {?}
* @private
*/
GuiMenuComponent.prototype.router;
/**
* @type {?}
* @private
*/
GuiMenuComponent.prototype.route;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGlwb3NhdXJpby9ndWlkby1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpEO0lBeUNFLDBCQUNVLE1BQWMsRUFDZCxLQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFwQzdCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNWLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBT3pCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdyQyxhQUFRLEdBQVE7WUFDdkIsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7SUEyQkMsQ0FBQztJQXZDRixzQkFBYSxrQ0FBSTs7Ozs7UUFBakIsVUFBa0IsQ0FBTTtZQUNwQixJQUFJLENBQUMsRUFBRTtnQkFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4QjtRQUNMLENBQUM7OztPQUFBO0lBUUgsNkJBQTZCOzs7Ozs7SUFDN0IseUNBQWM7Ozs7OztJQUFkLFVBQWUsT0FBWTtRQUN6QixJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztT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SUFDM0Isb0NBR0E7Ozs7O0lBZ0JGLDBDQUFxQzs7Ozs7SUFDckMsNkNBQXdDOztJQUN4Qyw0Q0FBeUI7Ozs7O0lBRXZCLGtDQUFzQjs7Ozs7SUFDdEIsaUNBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZ3VpLW1lbnUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdtZW51LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEd1aU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgc2hvd01lbnUgPSAnJztcclxuICAgIHNob3dTdWJNZW51ID0gJyc7XHJcbiAgICBwdWJsaWMgc2lkZWJhcm5hdkl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgc2V0IG1lbnUoZDogYW55KSB7XHJcbiAgICAgICAgaWYgKGQpIHtcclxuICAgICAgICAgICAgdGhpcy5zaWRlYmFybmF2SXRlbXMgPSBkO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5NZW51TG9hZChkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgXHJcbiAgICBwdWJsaWMgZW50ZXJwcmlzZURhdGE6IGFueTtcclxuICAgIHB1YmxpYyB1c2VyRGF0YTogYW55ID0ge1xyXG4gICAgbmFtZTogJycsXHJcbiAgICBlbWFpbDogJycsXHJcbiAgfTtcclxuICAvLyB0aGlzIGlzIGZvciB0aGUgb3BlbiBjbG9zZVxyXG4gIGFkZEV4cGFuZENsYXNzKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgaWYgKGVsZW1lbnQgPT09IHRoaXMuc2hvd01lbnUpIHtcclxuICAgICAgdGhpcy5zaG93TWVudSA9ICcwJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd01lbnUgPSBlbGVtZW50O1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGRBY3RpdmVDbGFzcyhlbGVtZW50OiBhbnkpIHtcclxuICAgIGlmIChlbGVtZW50ID09PSB0aGlzLnNob3dTdWJNZW51KSB7XHJcbiAgICAgIHRoaXMuc2hvd1N1Yk1lbnUgPSAnMCc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dTdWJNZW51ID0gZWxlbWVudDtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBNZW51RGF0YVN0YXRlJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgTWVudURhdGFBbGxTdGF0ZSQ6IFN1YnNjcmlwdGlvbjtcclxuICBvcGVuQWN0aXZhdGVtZW51OiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAvLyBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgYXV0aFN0b3JlU2VydmljZTogQXV0aFN0b3JlU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgbG9nb3V0U2VydmljZTogTG9nb3V0U2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgc3RhdGVTZXJ2aWNlOiBTdGF0ZVNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIGVudGVycHJpc2VTZXJ2aWNlOiBFbnRlcnByaXNlU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIC8vIEVuZCBvcGVuIGNsb3NlXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyB0aGlzLmdldExpc3RNZW51KCk7XHJcbiAgICAvLyB0aGlzLmdldFVzZXJEYXRhKCk7XHJcbiAgICAvLyB0aGlzLmdldEVudGVycHJpc2UoKTtcclxuICAgIC8vIHRoaXMuTWVudURhdGFTdGF0ZSQgPSB0aGlzLnN0YXRlU2VydmljZS5vbk1lbnVTdGF0ZSQoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgIC8vICAgY29uc3QgYXJyID0gW107XHJcbiAgICAvLyAgIGFyci5wdXNoKHJlcyk7IC8vIGNvbnNvbGUubG9nKCdyZXMuLi4nLCByZXMpO1xyXG4gICAgLy8gICB0aGlzLnNob3dNZW51ID0gcmVzLnRpdGxlO1xyXG4gICAgLy8gICB0aGlzLnNpZGViYXJuYXZJdGVtcyA9IGFycjtcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5NZW51RGF0YUFsbFN0YXRlJCA9IHRoaXMuc3RhdGVTZXJ2aWNlLm9uTWVudUFsbFN0YXRlJCgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuc2lkZWJhcm5hdkl0ZW1zID0gcmVzcG9uc2U7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLk1lbnVEYXRhU3RhdGUkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLk1lbnVEYXRhQWxsU3RhdGUkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4vLyAgIHB1YmxpYyBnZXRMaXN0TWVudSgpIHtcclxuLy8gICAgIHRoaXMubWVudVNlcnZpY2UuZ2V0QWxsJCgpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4vLyAgICAgICB0aGlzLnNpZGViYXJuYXZJdGVtcyA9IHJlcy5kYXRhO1xyXG4vLyAgICAgICB0aGlzLm9wZW5NZW51TG9hZCgpO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgfVxyXG4vLyAgIHByaXZhdGUgZ2V0RW50ZXJwcmlzZSgpIHtcclxuLy8gICAgICB0aGlzLmVudGVycHJpc2VTZXJ2aWNlLmdldEFsbCQoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4vLyAgICAgICAgICAgY29uc3QgZW50ZXJEYXRhID0gcmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSB8fCB7fTtcclxuLy8gICAgICAgICAgIHRoaXMuYXV0aFN0b3JlU2VydmljZS5zZXRFbnRlcnByaXNlRGF0YShlbnRlckRhdGEpO1xyXG4vLyAgICAgICB9KVxyXG4vLyAgIH1cclxuLy8gICBwdWJsaWMgZ2V0VXNlckRhdGEoKSB7XHJcbi8vICAgICB0aGlzLnVzZXJEYXRhID0gdGhpcy5hdXRoU3RvcmVTZXJ2aWNlLmdldFVzZXJEYXRhKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBwdWJsaWMgbG9nb3V0KCkge1xyXG4vLyAgICAgdGhpcy5sb2dvdXRTZXJ2aWNlLmdldEFsbCQoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuLy8gICAgICAgdGhpcy5hdXRoU3RvcmVTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbi8vICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGhlbnRpY2F0aW9uL2xvZ2luJ10sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlfSk7XHJcbi8vICAgICB9KTtcclxuLy8gICB9XHJcbiAgLy8gb25QYXRoTGluayhwYXRoKSB7XHJcbiAgLy8gICBpZiAocGF0aCkge1xyXG4gIC8vICAgICBjb25zb2xlLmxvZyhwYXRoLCAnPDwtLS0tLS0tLS0tLS0nKTtcclxuICAvLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhdLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZX0pO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuICBwcml2YXRlIG9wZW5NZW51TG9hZChzaWRlYmFybmF2SXRlbXMpIHtcclxuICAgIGNvbnN0IHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XHJcbiAgICBjb25zdCBzX3BhdGggPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgIGlmIChzX3BhdGhbMV0pIHtcclxuICAgICAgaWYgKHNfcGF0aFsyXSkge1xyXG4gICAgICAgIHNpZGViYXJuYXZJdGVtcyA9IHNpZGViYXJuYXZJdGVtcy5tYXAoaXRlbXMgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW1zLnBhdGggPT09IGAke3NfcGF0aFsyXX1gKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd01lbnUgPSBpdGVtcy50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGl0ZW1zLnN1Ym1lbnUuZm9yRWFjaChzdWJJdGVtcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdWJJdGVtcy5wYXRoID09PSBgLyR7c19wYXRoWzFdfS8ke3NfcGF0aFsyXX0vJHtzX3BhdGhbM119YCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1N1Yk1lbnUgPSBzdWJJdGVtcy50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3ViSXRlbXM7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiBpdGVtcztcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==