UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

365 lines 42.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { NestedTreeControl } from '@angular/cdk/tree'; import { Component, ElementRef, ViewChild } from '@angular/core'; import { MatTreeNestedDataSource } from '@angular/material/tree'; import { Router } from '@angular/router'; import { AuthloginService, CurrentService, ProjectService, RouteElementService, ElementsService } from 'dbweb-core'; import { portraitDefault } from '../../const'; import { MainNavService } from '../../services/main-nav.service'; import { TabsService } from '../tabs.service'; import { NavtreeService, NavHome } from './navtree.service'; export class FileFlatNode { /** * @param {?} expandable * @param {?} filename * @param {?} level * @param {?} type */ constructor(expandable, filename, level, type) { this.expandable = expandable; this.filename = filename; this.level = level; this.type = type; } } if (false) { /** @type {?} */ FileFlatNode.prototype.expandable; /** @type {?} */ FileFlatNode.prototype.filename; /** @type {?} */ FileFlatNode.prototype.level; /** @type {?} */ FileFlatNode.prototype.type; } export class HomeNavComponent { /** * @param {?} nav * @param {?} current * @param {?} eles * @param {?} database * @param {?} auth * @param {?} routeEle * @param {?} prj * @param {?} navMain * @param {?} router * @param {?} tabs */ constructor(nav, current, eles, database, auth, routeEle, prj, navMain, router, tabs) { this.nav = nav; this.current = current; this.eles = eles; this.database = database; this.auth = auth; this.routeEle = routeEle; this.prj = prj; this.navMain = navMain; this.router = router; this.tabs = tabs; // 是正常导航还是简略导航 this.isMinNav = true; // 是否打开对话框 this.isOpenDialog = false; this.navItems = []; this._getChildren = (/** * @param {?} node * @return {?} */ (node) => node.children); this.isMinNav = this.navMain.getCurrent(); this.navMain.navMin.subscribe((/** * @param {?} v * @return {?} */ v => { this.switchNavToMin(v); })); this.current.change$.subscribe((/** * @param {?} v * @return {?} */ v => { if (v && v.HeadPortrait) { this.nav.portraitURL = v.portraitURL; } else { this.nav.portraitURL = portraitDefault; } })); } /** * @param {?} v * @return {?} */ switchNavToMin(v) { if (v === this.isMinNav) { return; } setTimeout((/** * @return {?} */ () => { this.isMinNav = v; }), 300); if (v) { this.maxNavContainer.nativeElement.style.width = '80px'; this.maxNavContainer.nativeElement.style.transition = 'all 0.3s'; } else { this.minNavContainer.nativeElement.style.width = '240px'; this.minNavContainer.nativeElement.style.transition = 'all 0.3s'; } } /** * @return {?} */ ngOnInit() { this.nestedTreeControl = new NestedTreeControl(this._getChildren); this.nestedDataSource = new MatTreeNestedDataSource(); this.nestedDataSource.data = this.database.root.children; // this.buttonHight(); this.navItems = this.nestedDataSource.data; this.nav.subs.push(this.routeEle.currentElementListen.subscribe((/** * @param {?} e * @return {?} */ e => { // 偶尔会出现e未null的情况,原因未探查,等有时间再改造 if (e && e.element) { this.currentNode = null; this.obtainNode(e.element.Name, this.navItems); if (this.nav.activeNode.length !== 0 && this.currentNode !== null) { this.nav.activeNode.splice(0, this.nav.activeNode.length); } if (this.nav.openNodeCurrent.length !== 0 && this.currentNode !== null) { this.nav.openNodeCurrent.splice(0, this.nav.openNodeCurrent.length); } if (this.currentNode !== null) { this.nav.recursionFuns(this.currentNode); this.nav.recursionFun(this.currentNode); } } }))); this.nav.messages(); } /** * @return {?} */ ngOnDestroy() { this.nav.subs.forEach((/** * @param {?} v * @return {?} */ v => v.unsubscribe())); } /** * @return {?} */ logout() { this.router .navigateByUrl('/login' + '/' + this.prj.apiNav()[0] + '/' + this.prj.apiNav()[1] + '/login') .then((/** * @return {?} */ () => { // 必须要在路由切换之后,因为只有切换后,才会在reuse中存在,才能clear this.tabs.clear(); // 一定要先清除所有的tab页面,用于取消订阅curr的变化 this.auth.logoutDefault().subscribe(); })); } /** * @param {?} _ * @param {?} nodeData * @return {?} */ hasNestedChild(_, nodeData) { return !!nodeData.children && nodeData.children.length > 0; } // 对话框显示 /** * @return {?} */ openDialog() { this.isOpenDialog = true; // this.unread = null; setTimeout((/** * @return {?} */ () => { this.dialogScrolls(); }), 0); } /** * @return {?} */ closeDialog() { this.isOpenDialog = false; } // 获取当前节点的node /** * @param {?} title * @param {?} navItems * @return {?} */ obtainNode(title, navItems) { for (let i = 0; i <= navItems.length - 1; i++) { if (navItems[i].name === title) { this.currentNode = navItems[i]; } if (navItems[i].children !== undefined && this.currentNode == null) { this.obtainNode(title, navItems[i].children); } } } /** * @return {?} */ sendMessage() { if (this.nav.messageBody) { this.current.wsChat.next({ Creator: this.prj.Creator(), Project: this.prj.Name(), From: this.current.data.UserName, Addr: '', Time: null, Data: this.nav.messageBody }); this.nav.messageBody = ''; } setTimeout((/** * @return {?} */ () => { this.dialogScrolls(); }), 0); } // 输入框的回车事件 /** * @param {?} e * @return {?} */ keyDown(e) { /** @type {?} */ const ev = window.event || e; // 13是键盘上面固定的回车键 if (ev.keyCode === 13) { // 你要执行的方法 this.sendMessage(); } } // 将聊天窗口滚动条滚至最下方 /** * @return {?} */ dialogScrolls() { if (this.dialogScroll == null) { return; } this.nav.unread = null; this.dialogScroll.nativeElement.scrollTop = this.dialogScroll.nativeElement.scrollHeight; } // 判断是否已阅读最新消息 /** * @return {?} */ isNews() { /** @type {?} */ const isScrolledToBottom = this.dialogScroll.nativeElement.scrollHeight - this.dialogScroll.nativeElement.clientHeight <= this.dialogScroll.nativeElement.scrollTop + 1; if (isScrolledToBottom) { this.nav.unread = null; } } } HomeNavComponent.decorators = [ { type: Component, args: [{ selector: 'common-home-nav', template: "<div *ngIf=\"!isMinNav\" #maxNavContainer class=\"max-nav-container nav-container\">\r\n\t<div class=\"nav-top\">\r\n\t\t<div class=\"nav-title\">\r\n\t\t\t<div class=\"nav-title-logo\"><img [src]=\"prj.logoImageURL()\" /></div>\r\n\t\t\t<div class=\"nav-title-name\">\r\n\t\t\t\t<p\r\n\t\t\t\t\t[ngClass]=\"{'projectLabelMin': prj.projectLabelForShort.length>6}\">\r\n\t\t\t\t\t{{ prj.projectLabelForShort }}</p>\r\n\t\t\t\t<common-nav-selection-dept [isMinNav]=\"isMinNav\">\r\n\t\t\t\t</common-nav-selection-dept>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div (click)=\"switchNavToMin(!isMinNav)\" class=\"nav-switch\">\r\n\t\t\t<mat-icon svgIcon=\"chevron_left\"></mat-icon>\r\n\t\t</div>\r\n\t</div>\r\n\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t<div class=\"\u5BFC\u822A\u6811\">\r\n\t\t<div class=\"slider slider-color\"></div>\r\n\t\t<mat-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\" class=\"example-tree\">\r\n\t\t\t<mat-tree-node *matTreeNodeDef=\"let node; index as i\" matTreeNodeToggle>\r\n\t\t\t\t<li (click)=\"nav.gradually(node)\" class=\"mat-tree-node\">\r\n\t\t\t\t\t<button [class.collapsed]=\"nav.activeNode.includes(node)\" [routerLink]=\"[node.url]\" mat-button\r\n\t\t\t\t\t\tclass=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\">\r\n\t\t\t\t\t\t<mat-icon *ngIf=\"node.iconName\" class=\"menu-icon\" [svgIcon]=\"node.iconName\"></mat-icon>\r\n\t\t\t\t\t\t{{ node.title }}\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</li>\r\n\t\t\t</mat-tree-node>\r\n\t\t\t<mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasNestedChild; let i = index\" matTreeNodePadding>\r\n\t\t\t\t<div class=\"max-menu\" [class.\u5206\u652F\u80CC\u666F]=\"nav.openNodeCurrent.includes(node)\">\r\n\t\t\t\t\t<div *ngIf=\"node.level == 0\" [ngClass]=\"{\r\n\t\t\t\t\t\t\t'slider-color': nav.activeNode.includes(node),\r\n\t\t\t\t\t\t\t'max-left-slider': nav.activeNode.includes(node)\r\n\t\t\t\t\t\t}\"></div>\r\n\t\t\t\t\t<div class=\"mat-tree-node\">\r\n\t\t\t\t\t\t<button [class.collapsed]=\"nav.activeNode.includes(node)\" mat-button matTreeNodeToggle\r\n\t\t\t\t\t\t\t[attr.aria-label]=\"'toggle ' + node.title\" (click)=\"nav.openNode(node)\" class=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\">\r\n\t\t\t\t\t\t\t<mat-icon *ngIf=\"node.level == 0\" svgIcon=\"{{ node.iconName }}\">\r\n\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t\t{{ node.title }}\r\n\t\t\t\t\t\t\t<mat-icon *ngIf=\"node.level != 0\" class=\"mat-icon-rtl-mirror\" svgIcon=\"{{\r\n\t\t\t\t\t\t\t\t\tnav.openNodeCurrent.includes(node)\r\n\t\t\t\t\t\t\t\t\t\t? 'expand_more'\r\n\t\t\t\t\t\t\t\t\t\t: 'chevron_right'\r\n\t\t\t\t\t\t\t\t}}\">\r\n\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<ul [class.example-tree-invisible]=\"\r\n\t\t\t\t\t\t\t!nav.openNodeCurrent.includes(node)\r\n\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t<ng-container matTreeNodeOutlet></ng-container>\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t</div>\r\n\t\t\t</mat-nested-tree-node>\r\n\t\t</mat-tree>\r\n\t</div>\r\n\t<div class=\"nav-bottom\">\r\n\t\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t\t<a class=\"nav-bottom-photo\" [routerLink]=\"eles.frontElementURL('userinfo')\">\r\n\t\t\t<div><img [src]=\"nav.portraitURL\" /></div>\r\n\t\t\t<p class=\"\u6635\u79F0\">{{ current.data.NickName || current.data.UserName}}</p>\r\n\t\t</a>\r\n\t\t<div class=\"nav-bottom-icon\">\r\n\t\t\t<div (click)=\"openDialog()\">\r\n\t\t\t\t<mat-icon matBadge=\"{{ nav.unread }}\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" svgIcon=\"mail\">\r\n\t\t\t\t</mat-icon>\r\n\t\t\t\t<p>\u6D88\u606F</p>\r\n\t\t\t</div>\r\n\t\t\t<div (click)=\"logout()\">\r\n\t\t\t\t<mat-icon svgIcon=\"forward\"></mat-icon>\r\n\t\t\t\t<p>\u9000\u51FA</p>\r\n\t\t\t</div>\r\n\t\t\t<div>\r\n\t\t\t\t<mat-icon svgIcon=\"help\"></mat-icon>\r\n\t\t\t\t<p>\u5E2E\u52A9</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"isOpenDialog\" class=\"\u5BF9\u8BDD\u6846\">\r\n\t\t<div class=\"\u5BF9\u8BDD\u6846\u4E0A\u90E8\">\r\n\t\t\t<mat-icon (click)=\"closeDialog()\" svgIcon=\"expand_more\"></mat-icon>\r\n\t\t</div>\r\n\t\t<div #dialogScroll class=\"\u5BF9\u8BDD\u6846\u5185\u5BB9\">\r\n\t\t\t<p class=\"\u663E\u793A\u5BF9\u8BDD\" *ngFor=\"let message of nav.chatMessages\">\r\n\t\t\t\t[<span class=\"\u540D\u5B57\">{{ message.From }}</span>]\r\n\t\t\t\t<span class=\"\u65F6\u95F4\">{{\r\n\t\t\t\t\tmessage.Time | date: \"yyyy-MM-dd HH:mm:ss\"\r\n\t\t\t\t}}</span>\r\n\t\t\t\t<span class=\"\u5185\u5BB9\">{{ message.Data }}</span>\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<div class=\"\u5BF9\u8BDD\u6846\u5E95\u90E8\">\r\n\t\t\t<input mat-input class=\"\u8F93\u5165\u6846\" [(ngModel)]=\"nav.messageBody\" (keydown)=\"keyDown($event)\"\r\n\t\t\t\tplaceholder=\"\u8F93\u5165\u5185\u5BB9,\u56DE\u8F66\u53D1\u9001\" />\r\n\t\t\t<mat-icon (click)=\"sendMessage()\" svgIcon=\"send\"></mat-icon>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div *ngIf=\"isMinNav\" #minNavContainer class=\"min-nav-container nav-container\">\r\n\t<div class=\"min-logo\"><img [src]=\"prj.logoImageURL()\" /></div>\r\n\t<div>\r\n\t\t<common-nav-selection-dept [isMinNav]=\"isMinNav\">\r\n\t\t</common-nav-selection-dept>\r\n\t\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t</div>\r\n\t<div class=\"\u5BFC\u822A\u6811\u5C0F\">\r\n\t\t<div class=\"min-slider slider-color\"></div>\r\n\t\t<div class=\"\u83DC\u5355\u9879\" *ngFor=\"let item of navItems; index as i\" [class.\u5F53\u524D\u83DC\u5355\u9879]=\"nav.activeNode.includes(item)\">\r\n\t\t\t<div [ngClass]=\"{\r\n\t\t\t\t\t'slider-color': nav.activeNode.includes(item),\r\n\t\t\t\t\t'left-slider': nav.activeNode.includes(item)\r\n\t\t\t\t}\"></div>\r\n\t\t\t<!-- Handle branch node buttons here -->\r\n\t\t\t<div *ngIf=\"item.children && item.children.length > 0\">\r\n\t\t\t\t<button mat-button class=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\" [class.collapsed]=\"nav.activeNode.includes(item)\"\r\n\t\t\t\t\t[matMenuTriggerFor]=\"menu.childMenu\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"{{ item.iconName }}\"></mat-icon>\r\n\t\t\t\t\t{{ item.title }}\r\n\t\t\t\t</button>\r\n\t\t\t\t<common-menu [class.treebranch]=\"true\" #menu [items]=\"item.children\" [activeNode]=\"nav.activeNode\"\r\n\t\t\t\t\t(fromChild)=\"nav.fromChildFunc($event)\"></common-menu>\r\n\t\t\t</div>\r\n\t\t\t<!-- Leaf node buttons here -->\r\n\t\t\t<div *ngIf=\"!item.children || item.children.length === 0\">\r\n\t\t\t\t<button mat-button class=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"{{ item.iconName }}\"></mat-icon>\r\n\t\t\t\t\t{{ item.title }}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"\u5BFC\u822A\u5E95\u90E8\u5C0F\">\r\n\t\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t\t<button (click)=\"switchNavToMin(!isMinNav)\" mat-button>\r\n\t\t\t<mat-icon svgIcon=\"chevron_right\"></mat-icon>\u5C55\u5F00\r\n\t\t</button>\r\n\t\t<a class=\"nav-bottom-photo\" [routerLink]=\"eles.frontElementURL('userinfo')\">\r\n\t\t\t<div class=\"nav-bottom-photo-img\"><img [src]=\"nav.portraitURL\" /></div>\r\n\t\t\t<p class=\"\u6635\u79F0\">{{ current.data.NickName||current.data.UserName }}</p>\r\n\t\t</a>\r\n\t</div>\r\n</div>", providers: [NavtreeService, NavHome], styles: ["@charset \"UTF-8\";.max-nav-container{width:240px;height:100%;margin:0;padding:0;display:flex;flex-direction:column}.nav-top{width:100%;height:72px;display:flex;align-items:center;position:relative}.nav-top .nav-title{width:216px;height:48px;padding:0 8px 0 16px;display:flex}.nav-top .nav-title-logo{width:48px;height:48px}.nav-top .nav-title-logo img{width:100%;height:100%}.nav-top .nav-title-name{flex-grow:1;vertical-align:top;margin-left:8px;letter-spacing:1px}.nav-top .nav-title-name p{font-size:18px;width:100%;font-weight:700;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-top .nav-title-name .projectLabelMin{font-size:14px}.nav-top .nav-switch{width:32px;height:32px;border-radius:16px 0 0 16px;background-color:rgba(255,255,255,.2);position:absolute;right:0;bottom:4px}.nav-top .nav-switch .mat-icon{margin:4px;cursor:pointer}.nav-divider{z-index:2}.nav-menu-item{font-size:14px;height:32px;line-height:32px}.nav-bottom{margin:0;width:100%;height:98px}.nav-bottom .nav-bottom-photo{margin:16px 8px 0 12px}.nav-bottom .nav-bottom-icon{float:right;width:116px;height:46px;margin:28px 19px 0 0;display:flex;flex-direction:row;justify-content:space-between}.nav-bottom .nav-bottom-icon div{height:100%;cursor:pointer}.nav-bottom .nav-bottom-icon div p{margin:0;font-size:12px;line-height:18px;opacity:.6}.nav-bottom-photo{width:80px;display:inline-block;text-align:center}.nav-bottom-photo div{width:40px;height:40px;border-radius:50%;margin:0 auto;background:url(/front/assets/home/portrait_default.png);overflow:hidden}.nav-bottom-photo div img{width:100%;height:100%}.nav-bottom-photo p{font-size:12px;margin-top:5px;text-align:center;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.example-tree-invisible{display:none}.\u5BFC\u822A\u6811{flex-grow:1;overflow:auto;font-size:20px}.\u5BFC\u822A\u6811 .slider{width:2px;height:48px;display:none}.\u5BFC\u822A\u6811::-webkit-scrollbar-track{background-color:rgba(255,255,255,.06)}.\u5BFC\u822A\u6811::-webkit-scrollbar-track:hover{background-color:rgba(255,255,255,.12)}.\u5BFC\u822A\u6811::-webkit-scrollbar-thumb{background-color:#5e5e5e}.\u5BFC\u822A\u6811::-webkit-scrollbar-thumb:hover{background-color:silver}.\u5BFC\u822A\u6811 .example-tree li,.\u5BFC\u822A\u6811 .example-tree ul{margin-top:0;margin-bottom:0;list-style-type:none}.\u5BFC\u822A\u6811 .example-tree ul{padding-left:20px}.\u5BFC\u822A\u6811 .max-left-slider{width:2px;height:48px;float:left}.\u5BFC\u822A\u6811 .mat-tree-node button{font-size:16px}.\u5BFC\u822A\u6811 .\u7B2C\u4E09\u7EA7\u6ED1\u5757{width:2px;height:48px;background-color:rgba(255,255,255,.6);float:left}.\u5BFC\u822A\u6811 .mat-icon-rtl-mirror{float:right;margin:8px}.\u5BF9\u8BDD\u6846{width:240px;height:328px;background-color:#121212;position:absolute;left:0;bottom:2px;z-index:2;display:flex;flex-direction:column}.\u5BF9\u8BDD\u6846 .mat-icon{float:right;cursor:pointer}.\u5BF9\u8BDD\u6846\u5E95\u90E8 .\u8F93\u5165\u6846{width:184px;height:32px;box-sizing:border-box;border-radius:16px;padding:0 15px;margin:0 8px;line-height:30px;background-color:rgba(255,255,255,.36);border:0;outline:0;color:rgba(0,0,0,.87)}.\u5BF9\u8BDD\u6846\u5E95\u90E8 .\u8F93\u5165\u6846::-webkit-input-placeholder{color:rgba(0,0,0,.38)}.\u5BF9\u8BDD\u6846\u5E95\u90E8 .mat-icon{margin:4px 8px 4px 0;color:#ff9f1c}.\u5BF9\u8BDD\u6846\u5185\u5BB9{flex-grow:1;overflow-y:auto}.\u5BF9\u8BDD\u6846\u5185\u5BB9::-webkit-scrollbar{width:4px;height:4px;border-radius:2px}.\u5BF9\u8BDD\u6846\u5185\u5BB9::-webkit-scrollbar-track{border-radius:2px;background-color:rgba(255,255,255,.12)}.\u5BF9\u8BDD\u6846\u5185\u5BB9::-webkit-scrollbar-thumb{border-radius:2px;box-shadow:inset 0 2px 6px rgba(0,0,0,.3);background-color:#919191}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD{width:90%;padding:0 5%;font-size:12px;color:#7ed321}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD .\u65F6\u95F4{font-size:12px;color:rgba(255,255,255,.38);float:right;vertical-align:bottom}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD .\u540D\u5B57{display:inline-block;max-width:108px;font-size:12px;color:#7ed321;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD .\u5185\u5BB9{display:block;font-size:12px;color:#fff;flex-grow:1;letter-spacing:.75px}.min-nav-container{width:80px;height:100%;margin:0;padding:12px 0 0;box-sizing:border-box;display:flex;flex-direction:column}.min-logo{width:40px;height:40px;margin:0 auto}.min-logo img{width:100%;height:100%}.\u5BFC\u822A\u6811\u5C0F{flex-grow:1;overflow-y:auto;overflow-x:hidden}.\u5BFC\u822A\u6811\u5C0F .min-slider{width:2px;height:80px;display:none}.\u5BFC\u822A\u6811\u5C0F .left-slider{width:2px;height:80px;position:absolute;left:0;top:0;z-index:99}.\u5BFC\u822A\u6811\u5C0F .mat-button{width:78px;text-align:center;padding:10px 0 10px 2px;margin:0}.\u5BFC\u822A\u6811\u5C0F .mat-icon{margin:0 auto;text-align:center;display:block}.\u5BFC\u822A\u6811\u5C0F .\u83DC\u5355\u9879{margin:4px 0;padding:0;height:80px;position:relative}.\u5BFC\u822A\u6811\u5C0F .\u5F53\u524D\u83DC\u5355\u9879{background-color:#252525}.\u5BFC\u822A\u5E95\u90E8\u5C0F{width:80px;flex-shrink:0;text-align:center;font-size:12px}.\u5BFC\u822A\u5E95\u90E8\u5C0F p{margin:8px 0}.\u5BFC\u822A\u5E95\u90E8\u5C0F .mat-icon{display:block;text-align:center;margin:0 auto;color:#fff}.\u5BFC\u822A\u5E95\u90E8\u5C0F button{width:80px;margin:8px 0 24px;font-size:12px;color:rgba(255,255,255,.6)}.\u5BFC\u822A\u5E95\u90E8\u5C0F .nav-bottom-photo-img{width:24px;height:24px}.treebranch{width:0}.\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272::ng-deep .mat-button-focus-overlay{background-color:#fff}"] }] } ]; /** @nocollapse */ HomeNavComponent.ctorParameters = () => [ { type: NavHome }, { type: CurrentService }, { type: ElementsService }, { type: NavtreeService }, { type: AuthloginService }, { type: RouteElementService }, { type: ProjectService }, { type: MainNavService }, { type: Router }, { type: TabsService } ]; HomeNavComponent.propDecorators = { dialogScroll: [{ type: ViewChild, args: ['dialogScroll', { static: false },] }], maxNavContainer: [{ type: ViewChild, args: ['maxNavContainer', { static: false },] }], minNavContainer: [{ type: ViewChild, args: ['minNavContainer', { static: false },] }] }; if (false) { /** @type {?} */ HomeNavComponent.prototype.dialogScroll; /** @type {?} */ HomeNavComponent.prototype.maxNavContainer; /** @type {?} */ HomeNavComponent.prototype.minNavContainer; /** @type {?} */ HomeNavComponent.prototype.isMinNav; /** @type {?} */ HomeNavComponent.prototype.isOpenDialog; /** @type {?} */ HomeNavComponent.prototype.nestedTreeControl; /** @type {?} */ HomeNavComponent.prototype.nestedDataSource; /** @type {?} */ HomeNavComponent.prototype.treeControl; /** @type {?} */ HomeNavComponent.prototype.treeFlattener; /** @type {?} */ HomeNavComponent.prototype.dataSource; /** @type {?} */ HomeNavComponent.prototype.currentNode; /** @type {?} */ HomeNavComponent.prototype.navItems; /** @type {?} */ HomeNavComponent.prototype.chatObservable; /** @type {?} */ HomeNavComponent.prototype._getChildren; /** @type {?} */ HomeNavComponent.prototype.nav; /** @type {?} */ HomeNavComponent.prototype.current; /** @type {?} */ HomeNavComponent.prototype.eles; /** @type {?} */ HomeNavComponent.prototype.database; /** * @type {?} * @private */ HomeNavComponent.prototype.auth; /** * @type {?} * @private */ HomeNavComponent.prototype.routeEle; /** @type {?} */ HomeNavComponent.prototype.prj; /** @type {?} */ HomeNavComponent.prototype.navMain; /** * @type {?} * @private */ HomeNavComponent.prototype.router; /** * @type {?} * @private */ HomeNavComponent.prototype.tabs; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2hvbWUvbmF2LWl0ZW1uL2hvbWUtbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUEyQyx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ04sZ0JBQWdCLEVBRWhCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixNQUFNLFlBQVksQ0FBQztBQUVwQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1RCxNQUFNLE9BQU8sWUFBWTs7Ozs7OztJQUN4QixZQUFtQixVQUFtQixFQUFTLFFBQWdCLEVBQVMsS0FBYSxFQUFTLElBQVM7UUFBcEYsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUFTLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBSztJQUFHLENBQUM7Q0FDM0c7OztJQURZLGtDQUEwQjs7SUFBRSxnQ0FBdUI7O0lBQUUsNkJBQW9COztJQUFFLDRCQUFnQjs7QUFReEcsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7Ozs7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OUMsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7OztJQUovQyx3Q0FDeUM7O0lBQ3pDLDJDQUM0Qzs7SUFDNUMsMkNBQzRDOztJQUU1QyxvQ0FBZ0I7O0lBRWhCLHdDQUFxQjs7SUFFckIsNkNBQThDOztJQUM5Qyw0Q0FBbUQ7O0lBQ25ELHVDQUEyQzs7SUFDM0MseUNBQXVEOztJQUN2RCxzQ0FBeUQ7O0lBQ3pELHVDQUFxQjs7SUFDckIsb0NBQXlCOztJQUN6QiwwQ0FBd0M7O0lBa0Z4Qyx3Q0FBZ0Q7O0lBaEYvQywrQkFBbUI7O0lBQ25CLG1DQUE4Qjs7SUFDOUIsZ0NBQTRCOztJQUM1QixvQ0FBK0I7Ozs7O0lBQy9CLGdDQUE4Qjs7Ozs7SUFDOUIsb0NBQXFDOztJQUNyQywrQkFBMEI7O0lBQzFCLG1DQUE4Qjs7Ozs7SUFDOUIsa0NBQXNCOzs7OztJQUN0QixnQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wsIE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG5cdEF1dGhsb2dpblNlcnZpY2UsXHJcblx0Q2hhdE1lc3NhZ2UsXHJcblx0Q3VycmVudFNlcnZpY2UsXHJcblx0UHJvamVjdFNlcnZpY2UsXHJcblx0Um91dGVFbGVtZW50U2VydmljZSxcclxuXHRFbGVtZW50c1NlcnZpY2VcclxufSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHBvcnRyYWl0RGVmYXVsdCB9IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgTWFpbk5hdlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWluLW5hdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuLi90YWJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IE5hdnRyZWVTZXJ2aWNlLCBOYXZIb21lIH0gZnJvbSAnLi9uYXZ0cmVlLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVGbGF0Tm9kZSB7XHJcblx0Y29uc3RydWN0b3IocHVibGljIGV4cGFuZGFibGU6IGJvb2xlYW4sIHB1YmxpYyBmaWxlbmFtZTogc3RyaW5nLCBwdWJsaWMgbGV2ZWw6IG51bWJlciwgcHVibGljIHR5cGU6IGFueSkge31cclxufVxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2NvbW1vbi1ob21lLW5hdicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2hvbWUtbmF2LmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9ob21lLW5hdi5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW05hdnRyZWVTZXJ2aWNlLCBOYXZIb21lXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9tZU5hdkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRAVmlld0NoaWxkKCdkaWFsb2dTY3JvbGwnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRkaWFsb2dTY3JvbGw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cdEBWaWV3Q2hpbGQoJ21heE5hdkNvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdG1heE5hdkNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblx0QFZpZXdDaGlsZCgnbWluTmF2Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0bWluTmF2Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHQvLyDmmK/mraPluLjlr7zoiKrov5jmmK/nroDnlaXlr7zoiKpcclxuXHRpc01pbk5hdiA9IHRydWU7XHJcblx0Ly8g5piv5ZCm5omT5byA5a+56K+d5qGGXHJcblx0aXNPcGVuRGlhbG9nID0gZmFsc2U7XHJcblxyXG5cdG5lc3RlZFRyZWVDb250cm9sOiBOZXN0ZWRUcmVlQ29udHJvbDxOYXZJdGVtPjtcclxuXHRuZXN0ZWREYXRhU291cmNlOiBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZTxOYXZJdGVtPjtcclxuXHR0cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPEZpbGVGbGF0Tm9kZT47XHJcblx0dHJlZUZsYXR0ZW5lcjogTWF0VHJlZUZsYXR0ZW5lcjxOYXZJdGVtLCBGaWxlRmxhdE5vZGU+O1xyXG5cdGRhdGFTb3VyY2U6IE1hdFRyZWVGbGF0RGF0YVNvdXJjZTxOYXZJdGVtLCBGaWxlRmxhdE5vZGU+O1xyXG5cdGN1cnJlbnROb2RlOiBOYXZJdGVtO1xyXG5cdG5hdkl0ZW1zOiBOYXZJdGVtW10gPSBbXTtcclxuXHRjaGF0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxDaGF0TWVzc2FnZT47XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbmF2OiBOYXZIb21lLFxyXG5cdFx0cHVibGljIGN1cnJlbnQ6IEN1cnJlbnRTZXJ2aWNlLFxyXG5cdFx0cHVibGljIGVsZXM6IEVsZW1lbnRzU2VydmljZSxcclxuXHRcdHB1YmxpYyBkYXRhYmFzZTogTmF2dHJlZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGF1dGg6IEF1dGhsb2dpblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJvdXRlRWxlOiBSb3V0ZUVsZW1lbnRTZXJ2aWNlLFxyXG5cdFx0cHVibGljIHByajogUHJvamVjdFNlcnZpY2UsXHJcblx0XHRwdWJsaWMgbmF2TWFpbjogTWFpbk5hdlNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSB0YWJzOiBUYWJzU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5pc01pbk5hdiA9IHRoaXMubmF2TWFpbi5nZXRDdXJyZW50KCk7XHJcblx0XHR0aGlzLm5hdk1haW4ubmF2TWluLnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0dGhpcy5zd2l0Y2hOYXZUb01pbih2KTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5jdXJyZW50LmNoYW5nZSQuc3Vic2NyaWJlKHYgPT4ge1xyXG5cdFx0XHRpZiAodiAmJiB2LkhlYWRQb3J0cmFpdCkge1xyXG5cdFx0XHRcdHRoaXMubmF2LnBvcnRyYWl0VVJMID0gdi5wb3J0cmFpdFVSTDtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm5hdi5wb3J0cmFpdFVSTCA9IHBvcnRyYWl0RGVmYXVsdDtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHN3aXRjaE5hdlRvTWluKHY6IGJvb2xlYW4pIHtcclxuXHRcdGlmICh2ID09PSB0aGlzLmlzTWluTmF2KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmlzTWluTmF2ID0gdjtcclxuXHRcdH0sIDMwMCk7XHJcblx0XHRpZiAodikge1xyXG5cdFx0XHR0aGlzLm1heE5hdkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gJzgwcHgnO1xyXG5cdFx0XHR0aGlzLm1heE5hdkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDAuM3MnO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5taW5OYXZDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9ICcyNDBweCc7XHJcblx0XHRcdHRoaXMubWluTmF2Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMC4zcyc7XHJcblx0XHR9XHJcblx0fVxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5uZXN0ZWRUcmVlQ29udHJvbCA9IG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxOYXZJdGVtPih0aGlzLl9nZXRDaGlsZHJlbik7XHJcblx0XHR0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2UoKTtcclxuXHRcdHRoaXMubmVzdGVkRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhYmFzZS5yb290LmNoaWxkcmVuO1xyXG5cdFx0Ly8gdGhpcy5idXR0b25IaWdodCgpO1xyXG5cdFx0dGhpcy5uYXZJdGVtcyA9IHRoaXMubmVzdGVkRGF0YVNvdXJjZS5kYXRhO1xyXG5cdFx0dGhpcy5uYXYuc3Vicy5wdXNoKFxyXG5cdFx0XHR0aGlzLnJvdXRlRWxlLmN1cnJlbnRFbGVtZW50TGlzdGVuLnN1YnNjcmliZShlID0+IHtcclxuXHRcdFx0XHQvLyDlgbblsJTkvJrlh7rnjrBl5pyqbnVsbOeahOaDheWGte+8jOWOn+WboOacquaOouafpe+8jOetieacieaXtumXtOWGjeaUuemAoFxyXG5cdFx0XHRcdGlmIChlICYmIGUuZWxlbWVudCkge1xyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XHJcblx0XHRcdFx0XHR0aGlzLm9idGFpbk5vZGUoZS5lbGVtZW50Lk5hbWUsIHRoaXMubmF2SXRlbXMpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMubmF2LmFjdGl2ZU5vZGUubGVuZ3RoICE9PSAwICYmIHRoaXMuY3VycmVudE5vZGUgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5uYXYuYWN0aXZlTm9kZS5zcGxpY2UoMCwgdGhpcy5uYXYuYWN0aXZlTm9kZS5sZW5ndGgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMubmF2Lm9wZW5Ob2RlQ3VycmVudC5sZW5ndGggIT09IDAgJiYgdGhpcy5jdXJyZW50Tm9kZSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm5hdi5vcGVuTm9kZUN1cnJlbnQuc3BsaWNlKDAsIHRoaXMubmF2Lm9wZW5Ob2RlQ3VycmVudC5sZW5ndGgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMuY3VycmVudE5vZGUgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5uYXYucmVjdXJzaW9uRnVucyh0aGlzLmN1cnJlbnROb2RlKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5uYXYucmVjdXJzaW9uRnVuKHRoaXMuY3VycmVudE5vZGUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0XHR0aGlzLm5hdi5tZXNzYWdlcygpO1xyXG5cdH1cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMubmF2LnN1YnMuZm9yRWFjaCh2ID0+IHYudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cdGxvZ291dCgpIHtcclxuXHRcdHRoaXMucm91dGVyXHJcblx0XHRcdC5uYXZpZ2F0ZUJ5VXJsKCcvbG9naW4nICsgJy8nICsgdGhpcy5wcmouYXBpTmF2KClbMF0gKyAnLycgKyB0aGlzLnByai5hcGlOYXYoKVsxXSArICcvbG9naW4nKVxyXG5cdFx0XHQudGhlbigoKSA9PiB7XHJcblx0XHRcdFx0Ly8g5b+F6aG76KaB5Zyo6Lev55Sx5YiH5o2i5LmL5ZCO77yM5Zug5Li65Y+q5pyJ5YiH5o2i5ZCO77yM5omN5Lya5ZyocmV1c2XkuK3lrZjlnKjvvIzmiY3og71jbGVhclxyXG5cdFx0XHRcdHRoaXMudGFicy5jbGVhcigpOyAvLyDkuIDlrpropoHlhYjmuIXpmaTmiYDmnInnmoR0YWLpobXpnaLvvIznlKjkuo7lj5bmtojorqLpmIVjdXJy55qE5Y+Y5YyWXHJcblx0XHRcdFx0dGhpcy5hdXRoLmxvZ291dERlZmF1bHQoKS5zdWJzY3JpYmUoKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cdGhhc05lc3RlZENoaWxkKF86IG51bWJlciwgbm9kZURhdGE6IE5hdkl0ZW0pIHtcclxuXHRcdHJldHVybiAhIW5vZGVEYXRhLmNoaWxkcmVuICYmIG5vZGVEYXRhLmNoaWxkcmVuLmxlbmd0aCA+IDA7XHJcblx0fVxyXG5cdF9nZXRDaGlsZHJlbiA9IChub2RlOiBOYXZJdGVtKSA9PiBub2RlLmNoaWxkcmVuO1xyXG5cdC8vIOWvueivneahhuaYvuekulxyXG5cdG9wZW5EaWFsb2coKSB7XHJcblx0XHR0aGlzLmlzT3BlbkRpYWxvZyA9IHRydWU7XHJcblx0XHQvLyB0aGlzLnVucmVhZCA9IG51bGw7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5kaWFsb2dTY3JvbGxzKCk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcblx0Y2xvc2VEaWFsb2coKSB7XHJcblx0XHR0aGlzLmlzT3BlbkRpYWxvZyA9IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0Ly8g6I635Y+W5b2T5YmN6IqC54K555qEbm9kZVxyXG5cdG9idGFpbk5vZGUodGl0bGU6IHN0cmluZywgbmF2SXRlbXM6IE5hdkl0ZW1bXSkge1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPD0gbmF2SXRlbXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcblx0XHRcdGlmIChuYXZJdGVtc1tpXS5uYW1lID09PSB0aXRsZSkge1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudE5vZGUgPSBuYXZJdGVtc1tpXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAobmF2SXRlbXNbaV0uY2hpbGRyZW4gIT09IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnROb2RlID09IG51bGwpIHtcclxuXHRcdFx0XHR0aGlzLm9idGFpbk5vZGUodGl0bGUsIG5hdkl0ZW1zW2ldLmNoaWxkcmVuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2VuZE1lc3NhZ2UoKSB7XHJcblx0XHRpZiAodGhpcy5uYXYubWVzc2FnZUJvZHkpIHtcclxuXHRcdFx0dGhpcy5jdXJyZW50LndzQ2hhdC5uZXh0KHtcclxuXHRcdFx0XHRDcmVhdG9yOiB0aGlzLnByai5DcmVhdG9yKCksXHJcblx0XHRcdFx0UHJvamVjdDogdGhpcy5wcmouTmFtZSgpLFxyXG5cdFx0XHRcdEZyb206IHRoaXMuY3VycmVudC5kYXRhLlVzZXJOYW1lLFxyXG5cdFx0XHRcdEFkZHI6ICcnLFxyXG5cdFx0XHRcdFRpbWU6IG51bGwsXHJcblx0XHRcdFx0RGF0YTogdGhpcy5uYXYubWVzc2FnZUJvZHlcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMubmF2Lm1lc3NhZ2VCb2R5ID0gJyc7XHJcblx0XHR9XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5kaWFsb2dTY3JvbGxzKCk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcblx0Ly8g6L6T5YWl5qGG55qE5Zue6L2m5LqL5Lu2XHJcblx0a2V5RG93bihlOiBhbnkpIHtcclxuXHRcdGNvbnN0IGV2ID0gd2luZG93LmV2ZW50IHx8IGU7XHJcblxyXG5cdFx0Ly8gMTPmmK/plK7nm5jkuIrpnaLlm7rlrprnmoTlm57ovabplK5cclxuXHRcdGlmIChldi5rZXlDb2RlID09PSAxMykge1xyXG5cdFx0XHQvLyDkvaDopoHmiafooYznmoTmlrnms5VcclxuXHRcdFx0dGhpcy5zZW5kTWVzc2FnZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvLyDlsIbogYrlpKnnqpflj6Pmu5rliqjmnaHmu5roh7PmnIDkuIvmlrlcclxuXHRkaWFsb2dTY3JvbGxzKCkge1xyXG5cdFx0aWYgKHRoaXMuZGlhbG9nU2Nyb2xsID09IG51bGwpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5uYXYudW5yZWFkID0gbnVsbDtcclxuXHRcdHRoaXMuZGlhbG9nU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5kaWFsb2dTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcblx0fVxyXG5cclxuXHQvLyDliKTmlq3mmK/lkKblt7LpmIXor7vmnIDmlrDmtojmga9cclxuXHRpc05ld3MoKSB7XHJcblx0XHRjb25zdCBpc1Njcm9sbGVkVG9Cb3R0b20gPVxyXG5cdFx0XHR0aGlzLmRpYWxvZ1Njcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuZGlhbG9nU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IDw9XHJcblx0XHRcdHRoaXMuZGlhbG9nU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wICsgMTtcclxuXHRcdGlmIChpc1Njcm9sbGVkVG9Cb3R0b20pIHtcclxuXHRcdFx0dGhpcy5uYXYudW5yZWFkID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19