dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
307 lines • 27.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, HostBinding, ElementRef } from '@angular/core';
import { ElementsService } from 'dbweb-core';
import { IndexService } from '../index.service';
import { FormControl } from '@angular/forms';
import { startWith, map } from 'rxjs/operators';
import { Router } from '@angular/router';
var NavigationComponent = /** @class */ (function () {
function NavigationComponent(svr, eles, router, eRef) {
var _this = this;
this.svr = svr;
this.eles = eles;
this.router = router;
this.eRef = eRef;
this.hostClass = true;
this.formControl = new FormControl();
this.validElement = false;
this.displayElements = [];
this.MaxElementNumber = 8;
this.handleNav = false;
this.navName = 'navigation';
this.navSize = this.svr.userSetting.Cards.find((/**
* @param {?} x
* @return {?}
*/
function (x) { return x.Type === _this.navName; })).Size;
// console.log(this.navSize);
}
/**
* @return {?}
*/
NavigationComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.allEles = Object.values(this.eles.getEles()).filter((/**
* @param {?} e
* @return {?}
*/
function (e) { return !e.NotMenu; }));
this.filterElements = this.formControl.valueChanges.pipe(startWith(''), map((/**
* @param {?} v
* @return {?}
*/
function (v) {
/** @type {?} */
var arr = _this.allEles.filter((/**
* @param {?} e
* @return {?}
*/
function (e) {
return _this.formatElementDisplayLabel(e).toLowerCase().includes(v.toLowerCase());
}));
return arr.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) { return a.title().localeCompare(b.title()); }));
})));
this.formControl.valueChanges.subscribe((/**
* @param {?} v
* @return {?}
*/
function (v) {
_this.validElement = !!_this.allEles.find((/**
* @param {?} e
* @return {?}
*/
function (e) { return _this.formatElementDisplayLabel(e) === v; }));
}));
this.refreshDisplayElements();
};
/**
* @param {?} ele
* @return {?}
*/
NavigationComponent.prototype.formatElementDisplayLabel = /**
* @param {?} ele
* @return {?}
*/
function (ele) {
return ele.title() + "(" + ele.Name + ")";
};
/**
* @return {?}
*/
NavigationComponent.prototype.refreshDisplayElements = /**
* @return {?}
*/
function () {
var _this = this;
this.displayElements = this.svr.userSetting.NavigationElements
.filter((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.eles.get(v); }))
.map((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.eles.get(v); }));
// console.log('----', this.displayElements);
};
/**
* @param {?} val
* @return {?}
*/
NavigationComponent.prototype.change = /**
* @param {?} val
* @return {?}
*/
function (val) {
console.log(val);
};
/**
* @return {?}
*/
NavigationComponent.prototype.add = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var ele = this.allEles.find((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.formatElementDisplayLabel(v) === _this.formControl.value; }));
// console.log(ele);
if (!this.svr.userSetting.NavigationElements.includes(ele.Name)) {
this.svr.userSetting.NavigationElements.push(ele.Name);
this.svr.updateSetting().subscribe((/**
* @return {?}
*/
function () {
_this.refreshDisplayElements();
}));
}
};
/**
* @return {?}
*/
NavigationComponent.prototype.execute = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var ele = this.allEles.find((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.formatElementDisplayLabel(v) === _this.formControl.value; }));
this.router.navigateByUrl(this.eles.frontElementURL(ele.Name, decodeURI(ele.URL)));
};
/**
* @param {?} ele
* @return {?}
*/
NavigationComponent.prototype.routerLink = /**
* @param {?} ele
* @return {?}
*/
function (ele) {
return this.eles.frontElementURL(ele.Name, decodeURI(ele.URL));
};
// ↓ 浮窗删除选择源元素
// ↓ 浮窗删除选择源元素
/**
* @param {?} i
* @return {?}
*/
NavigationComponent.prototype.removeEle =
// ↓ 浮窗删除选择源元素
/**
* @param {?} i
* @return {?}
*/
function (i) {
var _this = this;
this.svr.userSetting.NavigationElements.splice(i, 1);
this.svr.updateSetting().subscribe((/**
* @return {?}
*/
function () {
_this.refreshDisplayElements();
}));
};
/**
* @param {?} cardName
* @return {?}
*/
NavigationComponent.prototype.removeCard = /**
* @param {?} cardName
* @return {?}
*/
function (cardName) {
/** @type {?} */
var arr = this.svr.userSetting.Cards;
this.svr.userSetting.Cards = arr.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.Type !== cardName; }));
};
/**
* @return {?}
*/
NavigationComponent.prototype.hasEles = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var ele = this.allEles.find((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.formatElementDisplayLabel(v) === _this.formControl.value; }));
return this.svr.userSetting.NavigationElements.includes(ele.Name);
};
/**
* @param {?} sz
* @return {?}
*/
NavigationComponent.prototype.changeSize = /**
* @param {?} sz
* @return {?}
*/
function (sz) {
var _this = this;
this.navSize = sz;
this.svr.userSetting.Cards.find((/**
* @param {?} x
* @return {?}
*/
function (x) { return x.Type === 'navigation'; })).Size = this.navSize;
this.svr.updateSetting().subscribe((/**
* @return {?}
*/
function () {
console.log(_this.svr.userSetting.Cards);
}));
};
NavigationComponent.decorators = [
{ type: Component, args: [{
selector: 'common-navigation',
template: "<div class=\"nav-main\">\r\n\t<!-- 1. \u4E0A\u534A\u90E8\u5206 -->\r\n\t<div class=\"part-A mat-elevation-z2\">\r\n\t\t<div class=\"a-title\">\r\n\t\t\t<div class=\"title-left\">\r\n\t\t\t\t<mat-icon class=\"apps\" svgIcon=\"apps\"></mat-icon>\r\n\t\t\t\t<span>\u5FEB\u901F\u64CD\u4F5C\u680F</span>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"title-right\">\r\n\t\t\t\t<common-more-vert disShow=\"true\" [disElements]=\"displayElements\" [typeName]=\"navName\" [theNavSize]=\"navSize\" (subMenuClick)=\"removeEle($event)\">\r\n\t\t\t\t</common-more-vert>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"a-main\">\r\n\t\t\t<div class=\"ele-icon\" *ngFor=\"let ele of displayElements\"\r\n\t\t\t\t[routerLink]=\"routerLink(ele)\" matTooltip=\"{{ ele.title() }}\">\r\n\t\t\t\t<div class=\"icon\">\r\n\t\t\t\t\t<mat-icon class=\"mini-icon\" [svgIcon]=\"ele.Icon || 'dns'\">\r\n\t\t\t\t\t</mat-icon>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"icon-text\">\r\n\t\t\t\t\t{{ ele.title() }}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<!-- 2. \u4E0B\u534A\u90E8\u5206 -->\r\n\t<div class=\"part-B mat-elevation-z2\">\r\n\t\t<!-- 2.1 \u5DE6\u4FA7input -->\r\n\t\t<div class=\"b-left\">\r\n\t\t\t<input #inputHaveLength class=\"b-input\" type=\"text\"\r\n\t\t\t\t[matAutocomplete]=\"auto\" [formControl]=\"formControl\"\r\n\t\t\t\tplaceholder=\"\u641C\u7D22\u83DC\u5355\u9879\" />\r\n\t\t\t<mat-autocomplete #auto=\"matAutocomplete\">\r\n\t\t\t\t<mat-option class=\"option-title\"\r\n\t\t\t\t\t*ngFor=\"let ele of filterElements | async\"\r\n\t\t\t\t\t[value]=\"formatElementDisplayLabel(ele)\">\r\n\t\t\t\t\t{{ ele.title() }}\r\n\t\t\t\t\t<span class=\"option-text\">({{ ele.Name }})</span>\r\n\t\t\t\t</mat-option>\r\n\t\t\t</mat-autocomplete>\r\n\t\t</div>\r\n\r\n\t\t<!-- 2.2 \u53F3\u4FA7\u56FE\u6807 -->\r\n\t\t<div class=\"b-right\">\r\n\t\t\t<div *ngIf=\"!inputHaveLength.value.length\">\r\n\t\t\t\t<button mat-button disabled>\r\n\t\t\t\t\t<mat-icon svgIcon=\"search\"></mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"inputLength\" *ngIf=\"inputHaveLength.value.length\">\r\n\t\t\t\t<div matTooltip=\"\u589E\u52A0\">\r\n\t\t\t\t\t<button mat-button color=\"primary\"\r\n\t\t\t\t\t\t[disabled]=\"hasEles() || !validElement || svr.userSetting.NavigationElements.length >= MaxElementNumber\"\r\n\t\t\t\t\t\t(click)=\"add()\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"add_circle\"></mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button color=\"primary\" mat-button matTooltip=\"\u6267\u884C\"\r\n\t\t\t\t\t[disabled]=\"!validElement\" (click)=\"execute()\">\r\n\t\t\t\t\t<!-- \u5224\u65AD\u6267\u884C\u7ED3\u679C\uFF0C\u8FD9\u884C\u5E2E\u6211\u7559\u7740\u5427 -->\r\n\t\t\t\t\t<!-- {{validElement}} -->\r\n\t\t\t\t\t<mat-icon svgIcon=\"keyboard_arrow_right\"></mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<!-- <mat-menu #dot=\"matMenu\" class=\"dotDot\">\r\n\t\t<button mat-menu-item [matMenuTriggerFor]=\"optionSelect\">\r\n\t\t\t<mat-icon svgIcon=\"spellcheck\"></mat-icon>\u9009\u62E9\u6E90\r\n\t\t</button>\r\n\t\t<button mat-menu-item [matMenuTriggerFor]=\"optionSize\">\r\n\t\t\t<mat-icon svgIcon=\"arrow_expand\"></mat-icon>\u5C3A\u5BF8\r\n\t\t</button>\r\n\t\t<button mat-menu-item (click)=\"removeCard('navigation')\">\r\n\t\t\t<mat-icon svgIcon=\"delete_outline\"></mat-icon>\u79FB\u9664\u6A21\u5757\r\n\t\t</button>\r\n\r\n\t</mat-menu>\r\n\r\n\t<mat-menu #optionSelect=\"matMenu\">\r\n\t\t<button mat-menu-item *ngFor=\"let ele of displayElements;let i = index\">\r\n\t\t\t<mat-icon color=\"warn\" class=\"remove-circle\" svgIcon=\"remove_circle\"\r\n\t\t\t\t(click)=\"removeEle(i)\">\r\n\t\t\t</mat-icon>\r\n\t\t\t<span>{{ele.title()}}</span>\r\n\t\t</button>\r\n\t</mat-menu>\r\n\r\n\t<mat-menu #optionSize=\"matMenu\">\r\n\t\t<button mat-menu-item [ngClass]=\"navSize === 'lg' ? 'pitched' : ''\"\r\n\t\t\t(click)=\"changeSize('lg')\">\r\n\t\t\t<mat-icon [svgIcon]=\"navSize === 'lg' ? 'done' : ''\">\r\n\t\t\t</mat-icon>\r\n\t\t\t<span>100%\u5BBD</span>\r\n\t\t</button>\r\n\t\t<button mat-menu-item\r\n\t\t\t[ngClass]=\"navSize === 'md' ? 'pitched' : ''\"\r\n\t\t\t(click)=\"changeSize('md')\">\r\n\t\t\t<mat-icon [svgIcon]=\"navSize === 'md' ? 'done' : ''\">\r\n\t\t\t</mat-icon>\r\n\t\t\t<span>2/3\u5BBD</span>\r\n\t\t</button>\r\n\t\t<button mat-menu-item\r\n\t\t\t[ngClass]=\"navSize === 'sm' ? 'pitched' : ''\"\r\n\t\t\t(click)=\"changeSize('sm')\">\r\n\t\t\t<mat-icon [svgIcon]=\"navSize === 'sm' ? 'done' : ''\">\r\n\t\t\t</mat-icon>\r\n\t\t\t<span>1/3\u5BBD</span>\r\n\t\t</button>\r\n\t</mat-menu> -->\r\n\r\n\r\n</div>",
styles: ["@charset \"UTF-8\";.nav-main{position:relative;width:100%;height:100%}.part-A{width:100%;height:200px;box-sizing:border-box;padding:8px 8px 0;border-radius:4px;overflow:hidden}.a-title{display:flex;justify-content:space-between;align-items:center;width:100%;height:24px;box-sizing:border-box;margin-bottom:20px;color:#61ccc4}.a-title .title-left,.a-title .title-right{align-items:center}.a-title .title-left{display:flex}.a-title .title-right{display:none}.a-title span{padding-left:8px;font:16px bold}.nav-main:hover .title-right{display:flex;justify-content:center;width:40px}.a-main{display:flex;flex-wrap:wrap;width:100%;height:144px;box-sizing:border-box;padding-left:4px;padding-right:4px;overflow:auto}.ele-icon{min-width:72px;height:56px;box-sizing:border-box;margin-left:4px;margin-right:4px;margin-bottom:16px;text-align:center;cursor:pointer}.icon{display:flex;justify-content:center;width:24px;height:24px;margin:0 auto 8px}.mini-icon{width:24px;height:24px}.icon-text{max-width:80px;margin:0 auto;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.part-B{display:flex;justify-content:space-between;position:relative;align-items:center;width:100%;height:64px;box-sizing:border-box;margin-top:13px;border-radius:4px}.b-left{width:100%;height:40px}.b-input{width:100%;height:40px;line-height:40px;box-sizing:border-box;border:none;padding:0 24px;outline:0;font-size:14px;background-color:transparent}.option-title{box-sizing:border-box;padding-left:24px;padding-right:24px;font-size:14px}.option-text{font-size:12px}.b-right{position:absolute;right:24px;text-align:right;width:80px;height:40px}.b-right button{min-width:40px;height:40px;padding-left:0;padding-right:0}.b-right ::ng-deep .mat-button{background-color:none;min-width:0}.b-right ::ng-deep .mat-button-focus-overlay{background-color:transparent}.b-right ::ng-deep .mat-button-active-overlay{background-color:transparent}.inputLength{display:flex;justify-content:space-between}"]
}] }
];
/** @nocollapse */
NavigationComponent.ctorParameters = function () { return [
{ type: IndexService },
{ type: ElementsService },
{ type: Router },
{ type: ElementRef }
]; };
NavigationComponent.propDecorators = {
hostClass: [{ type: HostBinding, args: ['class.c-index-navigation',] }]
};
return NavigationComponent;
}());
export { NavigationComponent };
if (false) {
/** @type {?} */
NavigationComponent.prototype.hostClass;
/** @type {?} */
NavigationComponent.prototype.filterElements;
/** @type {?} */
NavigationComponent.prototype.formControl;
/** @type {?} */
NavigationComponent.prototype.validElement;
/** @type {?} */
NavigationComponent.prototype.allEles;
/** @type {?} */
NavigationComponent.prototype.displayElements;
/** @type {?} */
NavigationComponent.prototype.MaxElementNumber;
/** @type {?} */
NavigationComponent.prototype.handleNav;
/** @type {?} */
NavigationComponent.prototype.navSize;
/** @type {?} */
NavigationComponent.prototype.navName;
/** @type {?} */
NavigationComponent.prototype.svr;
/** @type {?} */
NavigationComponent.prototype.eles;
/**
* @type {?}
* @private
*/
NavigationComponent.prototype.router;
/**
* @type {?}
* @private
*/
NavigationComponent.prototype.eRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvaW5kZXgvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQVcsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQXNCLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pDO0lBa0JDLDZCQUNRLEdBQWlCLEVBQ2pCLElBQXFCLEVBQ3BCLE1BQWMsRUFDZCxJQUFnQjtRQUp6QixpQkFRQztRQVBPLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFNBQUksR0FBSixJQUFJLENBQVk7UUFoQmdCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHMUQsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG9CQUFlLEdBQWMsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUM5QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLFlBQU8sR0FBRyxZQUFZLENBQUM7UUFRdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSTs7OztRQUFD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QUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQyxFQUFDLENBQUM7SUFDSixDQUFDOztnQkFsR0QsU0FBUyxTQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLHNpSkFBMEM7O2lCQUUxQzs7OztnQkFYUSxZQUFZO2dCQURILGVBQWU7Z0JBS3hCLE1BQU07Z0JBTndDLFVBQVU7Ozs0QkFlL0QsV0FBVyxTQUFDLDBCQUEwQjs7SUE2RnhDLDBCQUFDO0NBQUEsQUFuR0QsSUFtR0M7U0E5RlksbUJBQW1COzs7SUFDL0Isd0NBQTBEOztJQUUxRCw2Q0FBc0M7O0lBQ3RDLDBDQUFnQzs7SUFDaEMsMkNBQXFCOztJQUNyQixzQ0FBbUI7O0lBQ25CLDhDQUFnQzs7SUFDaEMsK0NBQThCOztJQUM5Qix3Q0FBa0I7O0lBQ2xCLHNDQUFrQjs7SUFDbEIsc0NBQXVCOztJQUd0QixrQ0FBd0I7O0lBQ3hCLG1DQUE0Qjs7Ozs7SUFDNUIscUNBQXNCOzs7OztJQUN0QixtQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkluaXQsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbGVtZW50LCBFbGVtZW50c1NlcnZpY2UgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgSW5kZXhTZXJ2aWNlLCBDYXJkU2l6ZSwgQ2FyZFR5cGUgfSBmcm9tICcuLi9pbmRleC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHRydW5jYXRlIH0gZnJvbSAnZnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjb21tb24tbmF2aWdhdGlvbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL25hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5jLWluZGV4LW5hdmlnYXRpb24nKSBob3N0Q2xhc3MgPSB0cnVlO1xyXG5cclxuXHRmaWx0ZXJFbGVtZW50czogT2JzZXJ2YWJsZTxFbGVtZW50W10+O1xyXG5cdGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblx0dmFsaWRFbGVtZW50ID0gZmFsc2U7XHJcblx0YWxsRWxlczogRWxlbWVudFtdO1xyXG5cdGRpc3BsYXlFbGVtZW50czogRWxlbWVudFtdID0gW107XHJcblx0cmVhZG9ubHkgTWF4RWxlbWVudE51bWJlciA9IDg7XHJcblx0aGFuZGxlTmF2ID0gZmFsc2U7XHJcblx0bmF2U2l6ZTogQ2FyZFNpemU7XHJcblx0bmF2TmFtZSA9ICduYXZpZ2F0aW9uJztcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgc3ZyOiBJbmRleFNlcnZpY2UsXHJcblx0XHRwdWJsaWMgZWxlczogRWxlbWVudHNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUgZVJlZjogRWxlbWVudFJlZlxyXG5cdCkge1xyXG5cdFx0dGhpcy5uYXZTaXplID0gdGhpcy5zdnIudXNlclNldHRpbmcuQ2FyZHMuZmluZCh4ID0+IHguVHlwZSA9PT0gdGhpcy5uYXZOYW1lKS5TaXplO1xyXG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5uYXZTaXplKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5hbGxFbGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmVsZXMuZ2V0RWxlcygpKS5maWx0ZXIoZSA9PiAhZS5Ob3RNZW51KTtcclxuXHRcdHRoaXMuZmlsdGVyRWxlbWVudHMgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG5cdFx0XHRzdGFydFdpdGgoJycpLFxyXG5cdFx0XHRtYXAodiA9PiB7XHJcblx0XHRcdFx0Y29uc3QgYXJyID0gdGhpcy5hbGxFbGVzLmZpbHRlcihlID0+XHJcblx0XHRcdFx0XHR0aGlzLmZvcm1hdEVsZW1lbnREaXNwbGF5TGFiZWwoZSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2LnRvTG93ZXJDYXNlKCkpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRyZXR1cm4gYXJyLnNvcnQoKGEsIGIpID0+IGEudGl0bGUoKS5sb2NhbGVDb21wYXJlKGIudGl0bGUoKSkpO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0dGhpcy52YWxpZEVsZW1lbnQgPSAhIXRoaXMuYWxsRWxlcy5maW5kKGUgPT4gdGhpcy5mb3JtYXRFbGVtZW50RGlzcGxheUxhYmVsKGUpID09PSB2KTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5yZWZyZXNoRGlzcGxheUVsZW1lbnRzKCk7XHJcblx0fVxyXG5cdGZvcm1hdEVsZW1lbnREaXNwbGF5TGFiZWwoZWxlOiBFbGVtZW50KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBgJHtlbGUudGl0bGUoKX0oJHtlbGUuTmFtZX0pYDtcclxuXHR9XHJcblx0cmVmcmVzaERpc3BsYXlFbGVtZW50cygpIHtcclxuXHRcdHRoaXMuZGlzcGxheUVsZW1lbnRzID0gdGhpcy5zdnIudXNlclNldHRpbmcuTmF2aWdhdGlvbkVsZW1lbnRzXHJcblx0XHRcdC5maWx0ZXIodiA9PiB0aGlzLmVsZXMuZ2V0KHYpKVxyXG5cdFx0XHQubWFwKHYgPT4gdGhpcy5lbGVzLmdldCh2KSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnLS0tLScsIHRoaXMuZGlzcGxheUVsZW1lbnRzKTtcclxuXHR9XHJcblx0Y2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcblx0XHRjb25zb2xlLmxvZyh2YWwpO1xyXG5cdH1cclxuXHRhZGQoKSB7XHJcblx0XHRjb25zdCBlbGUgPSB0aGlzLmFsbEVsZXMuZmluZCh2ID0+IHRoaXMuZm9ybWF0RWxlbWVudERpc3BsYXlMYWJlbCh2KSA9PT0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhlbGUpO1xyXG5cdFx0aWYgKCF0aGlzLnN2ci51c2VyU2V0dGluZy5OYXZpZ2F0aW9uRWxlbWVudHMuaW5jbHVkZXMoZWxlLk5hbWUpKSB7XHJcblx0XHRcdHRoaXMuc3ZyLnVzZXJTZXR0aW5nLk5hdmlnYXRpb25FbGVtZW50cy5wdXNoKGVsZS5OYW1lKTtcclxuXHRcdFx0dGhpcy5zdnIudXBkYXRlU2V0dGluZygpLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5yZWZyZXNoRGlzcGxheUVsZW1lbnRzKCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRleGVjdXRlKCkge1xyXG5cdFx0Y29uc3QgZWxlID0gdGhpcy5hbGxFbGVzLmZpbmQodiA9PiB0aGlzLmZvcm1hdEVsZW1lbnREaXNwbGF5TGFiZWwodikgPT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG5cclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5lbGVzLmZyb250RWxlbWVudFVSTChlbGUuTmFtZSwgZGVjb2RlVVJJKGVsZS5VUkwpKSk7XHJcblx0fVxyXG5cdHJvdXRlckxpbmsoZWxlOiBFbGVtZW50KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5lbGVzLmZyb250RWxlbWVudFVSTChlbGUuTmFtZSwgZGVjb2RlVVJJKGVsZS5VUkwpKTtcclxuXHR9XHJcblxyXG5cdC8vIOKGkyDmta7nqpfliKDpmaTpgInmi6nmupDlhYPntKBcclxuXHRyZW1vdmVFbGUoaTogbnVtYmVyKSB7XHJcblx0XHR0aGlzLnN2ci51c2VyU2V0dGluZy5OYXZpZ2F0aW9uRWxlbWVudHMuc3BsaWNlKGksIDEpO1xyXG5cdFx0dGhpcy5zdnIudXBkYXRlU2V0dGluZygpLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdHRoaXMucmVmcmVzaERpc3BsYXlFbGVtZW50cygpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRyZW1vdmVDYXJkKGNhcmROYW1lOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGFyciA9IHRoaXMuc3ZyLnVzZXJTZXR0aW5nLkNhcmRzO1xyXG5cdFx0dGhpcy5zdnIudXNlclNldHRpbmcuQ2FyZHMgPSBhcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uVHlwZSAhPT0gY2FyZE5hbWUpO1xyXG5cdH1cclxuXHRoYXNFbGVzKCkge1xyXG5cdFx0Y29uc3QgZWxlID0gdGhpcy5hbGxFbGVzLmZpbmQodiA9PiB0aGlzLmZvcm1hdEVsZW1lbnREaXNwbGF5TGFiZWwodikgPT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuc3ZyLnVzZXJTZXR0aW5nLk5hdmlnYXRpb25FbGVtZW50cy5pbmNsdWRlcyhlbGUuTmFtZSk7XHJcblx0fVxyXG5cclxuXHRjaGFuZ2VTaXplKHN6OiBDYXJkU2l6ZSkge1xyXG5cdFx0dGhpcy5uYXZTaXplID0gc3o7XHJcblx0XHR0aGlzLnN2ci51c2VyU2V0dGluZy5DYXJkcy5maW5kKHggPT4geC5UeXBlID09PSAnbmF2aWdhdGlvbicpLlNpemUgPSB0aGlzLm5hdlNpemU7XHJcblx0XHR0aGlzLnN2ci51cGRhdGVTZXR0aW5nKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2codGhpcy5zdnIudXNlclNldHRpbmcuQ2FyZHMpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==