UNPKG

ng-yunzai-mobile

Version:

1. 修改wechat.micro.ts

267 lines 27.5 kB
/** * @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=