ng-yunzai-mobile
Version:
1. 修改wechat.micro.ts
267 lines • 27.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: tree-picker/yz-tree-picker/yz-tree-picker.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Inject } from '@angular/core';
import { treePickerParams } from "./yz-tree-picker.service";
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
export class YzTreePickerComponent {
/**
* @param {?} dialogRef
* @param {?} data
*/
constructor(dialogRef, data) {
this.dialogRef = dialogRef;
this.data = data;
this.titleName = null;
this.closeBtnText = null;
this.pickerClassName = null;
// 部门/班级
this.deptNode = [];
this.deptList = [];
this.resultList = [];
this.searchValue = null;
this.searchResult = [];
}
/**
* @return {?}
*/
ngOnInit() {
this.titleName = this.data.titleName;
this.deptNode = this.data.tree;
this.closeBtnText = this.data.closeBtnText;
this.pickerClassName = this.data.pickerClassName;
this.blTree(this.deptNode, null);
this.setDefultValue();
this.blTree(this.deptNode, null);
this.dialogRef.backdropClick().subscribe((/**
* @return {?}
*/
() => {
document.getElementsByClassName('tree-picker-panel-bg')[0].remove();
this.closeHandle();
}));
}
// 关闭
/**
* @return {?}
*/
closeHandle() {
this.dialogRef.close(this.resultList);
}
// 重置
/**
* @return {?}
*/
resetHandle() {
this.resultList = [];
this.blTree(this.deptNode, null);
this.deptList = this.deptNode.length > 0 ? this.deptNode : [];
this.cancelSearchHandle();
}
// 回显
/**
* @return {?}
*/
setDefultValue() {
if (this.data.value) {
this.resultList = this.familyTree(this.deptNode, this.data.value).reverse();
if (this.resultList.length == 0) {
console.error('传入参数中回显数据字段(value)值不存在于数据源中!!!');
return;
}
if (this.resultList[this.resultList.length - 1].children && this.resultList[this.resultList.length - 1].children.length > 0) {
this.deptList = this.resultList[this.resultList.length - 1].children;
}
else if (this.resultList.length >= 2) {
this.deptList = this.resultList[this.resultList.length - 2].children;
}
else {
this.deptList = this.deptNode.length > 0 ? this.deptNode : [];
}
}
else {
this.deptList = this.deptNode.length > 0 ? this.deptNode : [];
}
}
// 遍历树节点,设置父id
/**
* @param {?} data
* @param {?} id
* @return {?}
*/
blTree(data, id) {
if (data && data.length && data.length > 0) {
data.forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
item['pid'] = id;
item['selected'] = this.resultList.some((/**
* @param {?} item2
* @return {?}
*/
item2 => item2.value == item.value));
this.blTree(item.children, item.value);
}));
}
}
// 递归获取子节点所有父节点
/**
* @param {?} arr1
* @param {?} id
* @return {?}
*/
familyTree(arr1, id) {
/** @type {?} */
let temp = [];
/** @type {?} */
const forFn = (/**
* @param {?} arr
* @param {?} id
* @return {?}
*/
function (arr, id) {
for (let i = 0; i < arr.length; i++) {
/** @type {?} */
const item = arr[i];
if (item.value === id) {
temp.push(item);
forFn(arr1, item.pid);
break;
}
else {
if (item.children) {
forFn(item.children, id);
}
}
}
});
forFn(arr1, id);
return temp;
}
// 搜索
/**
* @return {?}
*/
searchHandle() {
this.searchResult = [];
if (this.searchValue) {
this.searchResult = this.deptList.filter((/**
* @param {?} item
* @return {?}
*/
item => item.title.indexOf(this.searchValue) != -1));
}
}
// 取消搜索
/**
* @return {?}
*/
cancelSearchHandle() {
this.searchResult = [];
this.searchValue = null;
}
// 选择部门
/**
* @param {?} dept
* @return {?}
*/
selectDeptHandle(dept) {
this.cancelSearchHandle();
/** @type {?} */
const hasThis = this.resultList.some((/**
* @param {?} item
* @return {?}
*/
item => item.value == dept.value));
if (!hasThis) {
if (this.resultList.length > 0) {
/** @type {?} */
const hasLastItem = this.deptList.some((/**
* @param {?} item
* @return {?}
*/
item => item.value == this.resultList[this.resultList.length - 1].value));
if (hasLastItem) { // 在最后的叶子节点上更换部门
this.resultList.splice(this.resultList.length - 1, 1);
}
}
this.resultList.push(dept);
this.deptList.forEach((/**
* @param {?} item
* @return {?}
*/
item => {
item['selected'] = item.value == dept.value;
}));
if (dept.children && dept.children.length > 0) {
this.deptList = dept.children;
}
}
this.setScrollTop();
}
// 在结果处更改部门
/**
* @param {?} item
* @param {?} index
* @return {?}
*/
selectResultDeptHandle(item, index) {
if (index != this.resultList.length - 1) {
this.deptList = item.children;
this.resultList.length = index + 1;
this.blTree(this.deptList, item.value);
}
this.setScrollTop();
}
// 设置数据源列表滚动条置顶
/**
* @return {?}
*/
setScrollTop() {
setTimeout((/**
* @return {?}
*/
() => {
document.getElementsByClassName('tree-picker-comp')[0].getElementsByTagName('ul')[0].scrollTop = 0;
}), 0);
}
}
YzTreePickerComponent.decorators = [
{ type: Component, args: [{
selector: 'yz-tree-picker',
template: "<div class=\"tree-picker-comp\" [ngClass]=\"pickerClassName\">\n <a class=\"tree-picker-reset-btn\" (click)=\"resetHandle()\">\u91CD\u7F6E</a>\n <h2>\u8BF7\u9009\u62E9\n <ng-container *ngIf=\"titleName\">{{titleName}}</ng-container>\n </h2>\n <Icon *ngIf=\"!closeBtnText\"\n class=\"tree-picker-close-btn\"\n [type]=\"'cross'\"\n [size]=\"'md'\"\n (click)=\"closeHandle()\"\n ></Icon>\n <a *ngIf=\"closeBtnText\" class=\"tree-picker-close-btn\" (click)=\"closeHandle()\">{{closeBtnText}}</a>\n <div class=\"tree-picker-step\" *ngIf=\"resultList.length>0\">\n <Steps [size]=\"'small'\">\n <Step *ngFor=\"let item of resultList;let i=index;\"\n [title]=\"item?.title\"\n (click)=\"selectResultDeptHandle(item,i)\"></Step>\n </Steps>\n </div>\n\n <div class=\"tree-picker-search\">\n <SearchBar [placeholder]=\"'\u641C\u7D22\u2026\u2026'\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"searchHandle()\"\n (onCancel)=\"cancelSearchHandle()\"></SearchBar>\n </div>\n\n <ul *ngIf=\"!searchValue\"\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\n <li *ngFor=\"let item of deptList\"\n (click)=\"selectDeptHandle(item)\"\n [class.selected]=\"item.selected\">\n <span>{{item?.title || 'XX'}}</span>\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\n </li>\n <li *ngIf=\"deptList.length==0\" style=\"text-align: center;\">\u6682\u65E0\u6570\u636E\u2026\u2026</li>\n </ul>\n\n <ul *ngIf=\"searchValue\"\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\n <li *ngFor=\"let item of searchResult\"\n (click)=\"selectDeptHandle(item)\"\n [class.selected]=\"item.selected\">\n <span>{{item?.title || 'XX'}}</span>\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\n </li>\n\n <li *ngIf=\"searchResult.length==0\" style=\"text-align: center;color: red\">\u65E0\u641C\u7D22\u7ED3\u679C\u2026\u2026</li>\n </ul>\n</div>\n\n",
styles: [".textOverflow{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}::ng-deep .tree-picker-panel-bg{background:rgba(0,0,0,.4);height:100%;position:fixed;width:100%;left:0;top:0;z-index:200}::ng-deep .tree-picker-panel{position:fixed!important;bottom:0;left:0;z-index:200;width:100%;height:80%;max-width:unset!important}::ng-deep .tree-picker-panel .mat-dialog-container{padding:0;border-radius:0;transform:none!important}.tree-picker-comp{background:#fff;width:100%;height:100%;overflow:hidden}.tree-picker-comp h2{font-size:16px;text-align:center;font-weight:700;padding:10px 42px;text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tree-picker-comp ul{margin:0;overflow-y:auto}.tree-picker-comp ul li{line-height:44px;overflow:hidden;padding:0 16px;color:#333}.tree-picker-comp ul li:active{background:#eaeaea}.tree-picker-comp ul li span{float:left;max-width:calc(100% - 70px);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tree-picker-comp ul li Icon{float:right;margin:11px 0 0 10px}.tree-picker-comp ul li.selected{color:#108ee9}.tree-picker-comp ul li.selected Icon ::ng-deep .am-icon-check{color:#108ee9}.tree-picker-close-btn,.tree-picker-reset-btn{position:absolute;right:0;top:0;padding:10px;cursor:pointer;color:#333;background:#fff}.tree-picker-close-btn:active,.tree-picker-reset-btn:active{color:#108ee9}.tree-picker-reset-btn{right:auto;left:0;line-height:24px;font-size:14px;color:#108ee9}.tree-picker-reset-btn:active{opacity:.7}::ng-deep .tree-picker-step{border-bottom:1px solid #ddd;padding:12px 16px 0;max-height:253px;overflow-y:auto}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-title{font-size:14px;max-height:36px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}::ng-deep .tree-picker-step .am-steps-small .am-steps-icon{display:none}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-icon{width:8px;height:8px;background:#108ee9!important;margin:5px 10px 5px 6px}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-tail:after{background:#108ee9!important}::ng-deep .tree-picker-search{padding:4px 8px 0}::ng-deep .tree-picker-search .am-search{background:#fff;height:55px}::ng-deep .tree-picker-search .am-search-input{border:1px solid #ddd;height:38px}::ng-deep .tree-picker-search .am-search-input input[type=search]{height:36px;line-height:36px}::ng-deep .tree-picker-search .am-search-input .am-search-synthetic-ph{height:36px;line-height:36px;padding-left:12px!important}::ng-deep .tree-picker-search .am-search-input .am-search-clear{padding:11px 7px}::ng-deep .tree-picker-search .am-search-cancel{height:38px;line-height:38px}"]
}] }
];
/** @nocollapse */
YzTreePickerComponent.ctorParameters = () => [
{ type: MatDialogRef },
{ type: treePickerParams, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
];
if (false) {
/** @type {?} */
YzTreePickerComponent.prototype.titleName;
/** @type {?} */
YzTreePickerComponent.prototype.closeBtnText;
/** @type {?} */
YzTreePickerComponent.prototype.pickerClassName;
/** @type {?} */
YzTreePickerComponent.prototype.deptNode;
/** @type {?} */
YzTreePickerComponent.prototype.deptList;
/** @type {?} */
YzTreePickerComponent.prototype.resultList;
/** @type {?} */
YzTreePickerComponent.prototype.searchValue;
/** @type {?} */
YzTreePickerComponent.prototype.searchResult;
/** @type {?} */
YzTreePickerComponent.prototype.dialogRef;
/** @type {?} */
YzTreePickerComponent.prototype.data;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXotdHJlZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcteXVuemFpLW1vYmlsZS8iLCJzb3VyY2VzIjpbInRyZWUtcGlja2VyL3l6LXRyZWUtcGlja2VyL3l6LXRyZWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBYSxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFPdkUsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7SUFjaEMsWUFBbUIsU0FBOEMsRUFDckIsSUFBc0I7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBcUM7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFibEUsY0FBUyxHQUFXLElBQUksQ0FBQztRQUN6QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixvQkFBZSxHQUFXLElBQUksQ0FBQzs7UUFHL0IsYUFBUSxHQUFzQixFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVkLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFJbEIsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxD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SkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLG16RUFBOEM7O2FBRS9DOzs7O1lBTndCLFlBQVk7WUFEakIsZ0JBQWdCLHVCQXVCckIsTUFBTSxTQUFDLGVBQWU7Ozs7SUFibkMsMENBQXlCOztJQUN6Qiw2Q0FBNEI7O0lBQzVCLGdEQUErQjs7SUFHL0IseUNBQWlDOztJQUNqQyx5Q0FBYzs7SUFFZCwyQ0FBZ0I7O0lBQ2hCLDRDQUEyQjs7SUFDM0IsNkNBQWtCOztJQUVOLDBDQUFxRDs7SUFDckQscUNBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7bGlzdE9wdGlvbiwgdHJlZVBpY2tlclBhcmFtc30gZnJvbSBcIi4veXotdHJlZS1waWNrZXIuc2VydmljZVwiO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXotdHJlZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4veXotdHJlZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi95ei10cmVlLXBpY2tlci5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIFl6VHJlZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgdGl0bGVOYW1lOiBzdHJpbmcgPSBudWxsO1xuICBjbG9zZUJ0blRleHQ6IHN0cmluZyA9IG51bGw7XG4gIHBpY2tlckNsYXNzTmFtZTogc3RyaW5nID0gbnVsbDtcblxuICAvLyDpg6jpl6gv54+t57qnXG4gIGRlcHROb2RlOiBBcnJheTxsaXN0T3B0aW9uPiA9IFtdO1xuICBkZXB0TGlzdCA9IFtdO1xuXG4gIHJlc3VsdExpc3QgPSBbXTtcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9IG51bGw7XG4gIHNlYXJjaFJlc3VsdCA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxZelRyZWVQaWNrZXJDb21wb25lbnQ+LFxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHRyZWVQaWNrZXJQYXJhbXMpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGl0bGVOYW1lID0gdGhpcy5kYXRhLnRpdGxlTmFtZTtcbiAgICB0aGlzLmRlcHROb2RlID0gdGhpcy5kYXRhLnRyZWU7XG4gICAgdGhpcy5jbG9zZUJ0blRleHQgPSB0aGlzLmRhdGEuY2xvc2VCdG5UZXh0O1xuICAgIHRoaXMucGlja2VyQ2xhc3NOYW1lID0gdGhpcy5kYXRhLnBpY2tlckNsYXNzTmFtZTtcbiAgICB0aGlzLmJsVHJlZSh0aGlzLmRlcHROb2RlLCBudWxsKTtcbiAgICB0aGlzLnNldERlZnVsdFZhbHVlKCk7XG4gICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0Tm9kZSwgbnVsbCk7XG4gICAgdGhpcy5kaWFsb2dSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7IC8vIOeCueWHu+iDjOaZr+mBrue9qeWxguWFs+mXremAieaLqeWZqOaXtlxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJlZS1waWNrZXItcGFuZWwtYmcnKVswXS5yZW1vdmUoKTtcbiAgICAgIHRoaXMuY2xvc2VIYW5kbGUoKVxuICAgIH0pXG4gIH1cblxuICAvLyDlhbPpl61cbiAgY2xvc2VIYW5kbGUoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5yZXN1bHRMaXN0KTtcbiAgfVxuXG4gIC8vIOmHjee9rlxuICByZXNldEhhbmRsZSgpIHtcbiAgICB0aGlzLnJlc3VsdExpc3QgPSBbXTtcbiAgICB0aGlzLmJsVHJlZSh0aGlzLmRlcHROb2RlLCBudWxsKTtcbiAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5kZXB0Tm9kZS5sZW5ndGggPiAwID8gdGhpcy5kZXB0Tm9kZSA6IFtdXG4gICAgdGhpcy5jYW5jZWxTZWFyY2hIYW5kbGUoKTtcbiAgfVxuXG4gIC8vIOWbnuaYvlxuICBzZXREZWZ1bHRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5kYXRhLnZhbHVlKSB7XG4gICAgICB0aGlzLnJlc3VsdExpc3QgPSB0aGlzLmZhbWlseVRyZWUodGhpcy5kZXB0Tm9kZSwgdGhpcy5kYXRhLnZhbHVlKS5yZXZlcnNlKCk7XG4gICAgICBpZiAodGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+S8oOWFpeWPguaVsOS4reWbnuaYvuaVsOaNruWtl+aute+8iHZhbHVl77yJ5YC85LiN5a2Y5Zyo5LqO5pWw5o2u5rqQ5Lit77yB77yB77yBJyk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmVzdWx0TGlzdFt0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMV0uY2hpbGRyZW4gJiYgdGhpcy5yZXN1bHRMaXN0W3RoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxXS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLmNoaWxkcmVuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc3VsdExpc3QubGVuZ3RoID49IDIpIHtcbiAgICAgICAgdGhpcy5kZXB0TGlzdCA9IHRoaXMucmVzdWx0TGlzdFt0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMl0uY2hpbGRyZW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5kZXB0Tm9kZS5sZW5ndGggPiAwID8gdGhpcy5kZXB0Tm9kZSA6IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5kZXB0Tm9kZS5sZW5ndGggPiAwID8gdGhpcy5kZXB0Tm9kZSA6IFtdXG4gICAgfVxuICB9XG5cbiAgLy8g6YGN5Y6G5qCR6IqC54K577yM6K6+572u54i2aWRcbiAgYmxUcmVlKGRhdGEsIGlkKSB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggJiYgZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbVsncGlkJ10gPSBpZDtcbiAgICAgICAgaXRlbVsnc2VsZWN0ZWQnXSA9IHRoaXMucmVzdWx0TGlzdC5zb21lKGl0ZW0yID0+IGl0ZW0yLnZhbHVlID09IGl0ZW0udmFsdWUpO1xuICAgICAgICB0aGlzLmJsVHJlZShpdGVtLmNoaWxkcmVuLCBpdGVtLnZhbHVlKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuXG4gIC8vIOmAkuW9kuiOt+WPluWtkOiKgueCueaJgOacieeItuiKgueCuVxuICBmYW1pbHlUcmVlKGFycjEsIGlkKSB7XG4gICAgbGV0IHRlbXAgPSBbXVxuICAgIGNvbnN0IGZvckZuID0gZnVuY3Rpb24gKGFyciwgaWQpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBhcnJbaV1cbiAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IGlkKSB7XG4gICAgICAgICAgdGVtcC5wdXNoKGl0ZW0pXG4gICAgICAgICAgZm9yRm4oYXJyMSwgaXRlbS5waWQpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgZm9yRm4oaXRlbS5jaGlsZHJlbiwgaWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvckZuKGFycjEsIGlkKVxuICAgIHJldHVybiB0ZW1wXG4gIH1cblxuICAvLyDmkJzntKJcbiAgc2VhcmNoSGFuZGxlKCkge1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdGhpcy5kZXB0TGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLnRpdGxlLmluZGV4T2YodGhpcy5zZWFyY2hWYWx1ZSkgIT0gLTEpXG4gICAgfVxuICB9XG5cbiAgLy8g5Y+W5raI5pCc57SiXG4gIGNhbmNlbFNlYXJjaEhhbmRsZSgpIHtcbiAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IFtdO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBudWxsO1xuICB9XG5cblxuICAvLyDpgInmi6npg6jpl6hcbiAgc2VsZWN0RGVwdEhhbmRsZShkZXB0OiBhbnkpIHtcbiAgICB0aGlzLmNhbmNlbFNlYXJjaEhhbmRsZSgpO1xuICAgIGNvbnN0IGhhc1RoaXMgPSB0aGlzLnJlc3VsdExpc3Quc29tZShpdGVtID0+IGl0ZW0udmFsdWUgPT0gZGVwdC52YWx1ZSk7XG4gICAgaWYgKCFoYXNUaGlzKSB7XG4gICAgICBpZiAodGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgaGFzTGFzdEl0ZW0gPSB0aGlzLmRlcHRMaXN0LnNvbWUoaXRlbSA9PiBpdGVtLnZhbHVlID09IHRoaXMucmVzdWx0TGlzdFt0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMV0udmFsdWUpXG4gICAgICAgIGlmIChoYXNMYXN0SXRlbSkgeyAvLyDlnKjmnIDlkI7nmoTlj7blrZDoioLngrnkuIrmm7TmjaLpg6jpl6hcbiAgICAgICAgICB0aGlzLnJlc3VsdExpc3Quc3BsaWNlKHRoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZXN1bHRMaXN0LnB1c2goZGVwdCk7XG4gICAgICB0aGlzLmRlcHRMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW1bJ3NlbGVjdGVkJ10gPSBpdGVtLnZhbHVlID09IGRlcHQudmFsdWU7XG4gICAgICB9KVxuICAgICAgaWYgKGRlcHQuY2hpbGRyZW4gJiYgZGVwdC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSBkZXB0LmNoaWxkcmVuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XG5cbiAgfVxuXG4gIC8vIOWcqOe7k+aenOWkhOabtOaUuemDqOmXqFxuICBzZWxlY3RSZXN1bHREZXB0SGFuZGxlKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCAhPSB0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5kZXB0TGlzdCA9IGl0ZW0uY2hpbGRyZW47XG4gICAgICB0aGlzLnJlc3VsdExpc3QubGVuZ3RoID0gaW5kZXggKyAxO1xuICAgICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0TGlzdCwgaXRlbS52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3AoKTtcbiAgfVxuXG4gIC8vIOiuvue9ruaVsOaNrua6kOWIl+ihqOa7muWKqOadoee9rumhtlxuICBzZXRTY3JvbGxUb3AoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cmVlLXBpY2tlci1jb21wJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3VsJylbMF0uc2Nyb2xsVG9wID0gMDtcbiAgICB9LCAwKVxuICB9XG59XG4iXX0=