UNPKG

ng-yunzai-mobile

Version:

1. 适配yunzai_uni_app_x

267 lines 28 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\">\r\n <a class=\"tree-picker-reset-btn\" (click)=\"resetHandle()\">\u91CD\u7F6E</a>\r\n <h2>\u8BF7\u9009\u62E9\r\n <ng-container *ngIf=\"titleName\">{{titleName}}</ng-container>\r\n </h2>\r\n <Icon *ngIf=\"!closeBtnText\"\r\n class=\"tree-picker-close-btn\"\r\n [type]=\"'cross'\"\r\n [size]=\"'md'\"\r\n (click)=\"closeHandle()\"\r\n ></Icon>\r\n <a *ngIf=\"closeBtnText\" class=\"tree-picker-close-btn\" (click)=\"closeHandle()\">{{closeBtnText}}</a>\r\n <div class=\"tree-picker-step\" *ngIf=\"resultList.length>0\">\r\n <Steps [size]=\"'small'\">\r\n <Step *ngFor=\"let item of resultList;let i=index;\"\r\n [title]=\"item?.title\"\r\n (click)=\"selectResultDeptHandle(item,i)\"></Step>\r\n </Steps>\r\n </div>\r\n\r\n <div class=\"tree-picker-search\">\r\n <SearchBar [placeholder]=\"'\u641C\u7D22\u2026\u2026'\"\r\n [(ngModel)]=\"searchValue\"\r\n (ngModelChange)=\"searchHandle()\"\r\n (onCancel)=\"cancelSearchHandle()\"></SearchBar>\r\n </div>\r\n\r\n <ul *ngIf=\"!searchValue\"\r\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\r\n <li *ngFor=\"let item of deptList\"\r\n (click)=\"selectDeptHandle(item)\"\r\n [class.selected]=\"item.selected\">\r\n <span>{{item?.title || 'XX'}}</span>\r\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\r\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\r\n </li>\r\n <li *ngIf=\"deptList.length==0\" style=\"text-align: center;\">\u6682\u65E0\u6570\u636E\u2026\u2026</li>\r\n </ul>\r\n\r\n <ul *ngIf=\"searchValue\"\r\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\r\n <li *ngFor=\"let item of searchResult\"\r\n (click)=\"selectDeptHandle(item)\"\r\n [class.selected]=\"item.selected\">\r\n <span>{{item?.title || 'XX'}}</span>\r\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\r\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\r\n </li>\r\n\r\n <li *ngIf=\"searchResult.length==0\" style=\"text-align: center;color: red\">\u65E0\u641C\u7D22\u7ED3\u679C\u2026\u2026</li>\r\n </ul>\r\n</div>\r\n\r\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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SkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLDY1RUFBOEM7O2FBRS9DOzs7O1lBTndCLFlBQVk7WUFEakIsZ0JBQWdCLHVCQXVCckIsTUFBTSxTQUFDLGVBQWU7Ozs7SUFibkMsMENBQXlCOztJQUN6Qiw2Q0FBNEI7O0lBQzVCLGdEQUErQjs7SUFHL0IseUNBQWlDOztJQUNqQyx5Q0FBYzs7SUFFZCwyQ0FBZ0I7O0lBQ2hCLDRDQUEyQjs7SUFDM0IsNkNBQWtCOztJQUVOLDBDQUFxRDs7SUFDckQscUNBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtsaXN0T3B0aW9uLCB0cmVlUGlja2VyUGFyYW1zfSBmcm9tIFwiLi95ei10cmVlLXBpY2tlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3l6LXRyZWUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4veXotdHJlZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3l6LXRyZWUtcGlja2VyLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFl6VHJlZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHRpdGxlTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBjbG9zZUJ0blRleHQ6IHN0cmluZyA9IG51bGw7XHJcbiAgcGlja2VyQ2xhc3NOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLyDpg6jpl6gv54+t57qnXHJcbiAgZGVwdE5vZGU6IEFycmF5PGxpc3RPcHRpb24+ID0gW107XHJcbiAgZGVwdExpc3QgPSBbXTtcclxuXHJcbiAgcmVzdWx0TGlzdCA9IFtdO1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSBudWxsO1xyXG4gIHNlYXJjaFJlc3VsdCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8WXpUcmVlUGlja2VyQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHRyZWVQaWNrZXJQYXJhbXMpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50aXRsZU5hbWUgPSB0aGlzLmRhdGEudGl0bGVOYW1lO1xyXG4gICAgdGhpcy5kZXB0Tm9kZSA9IHRoaXMuZGF0YS50cmVlO1xyXG4gICAgdGhpcy5jbG9zZUJ0blRleHQgPSB0aGlzLmRhdGEuY2xvc2VCdG5UZXh0O1xyXG4gICAgdGhpcy5waWNrZXJDbGFzc05hbWUgPSB0aGlzLmRhdGEucGlja2VyQ2xhc3NOYW1lO1xyXG4gICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0Tm9kZSwgbnVsbCk7XHJcbiAgICB0aGlzLnNldERlZnVsdFZhbHVlKCk7XHJcbiAgICB0aGlzLmJsVHJlZSh0aGlzLmRlcHROb2RlLCBudWxsKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4geyAvLyDngrnlh7vog4zmma/pga7nvanlsYLlhbPpl63pgInmi6nlmajml7ZcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJlZS1waWNrZXItcGFuZWwtYmcnKVswXS5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5jbG9zZUhhbmRsZSgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8g5YWz6ZetXHJcbiAgY2xvc2VIYW5kbGUoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnJlc3VsdExpc3QpO1xyXG4gIH1cclxuXHJcbiAgLy8g6YeN572uXHJcbiAgcmVzZXRIYW5kbGUoKSB7XHJcbiAgICB0aGlzLnJlc3VsdExpc3QgPSBbXTtcclxuICAgIHRoaXMuYmxUcmVlKHRoaXMuZGVwdE5vZGUsIG51bGwpO1xyXG4gICAgdGhpcy5kZXB0TGlzdCA9IHRoaXMuZGVwdE5vZGUubGVuZ3RoID4gMCA/IHRoaXMuZGVwdE5vZGUgOiBbXVxyXG4gICAgdGhpcy5jYW5jZWxTZWFyY2hIYW5kbGUoKTtcclxuICB9XHJcblxyXG4gIC8vIOWbnuaYvlxyXG4gIHNldERlZnVsdFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS52YWx1ZSkge1xyXG4gICAgICB0aGlzLnJlc3VsdExpc3QgPSB0aGlzLmZhbWlseVRyZWUodGhpcy5kZXB0Tm9kZSwgdGhpcy5kYXRhLnZhbHVlKS5yZXZlcnNlKCk7XHJcbiAgICAgIGlmICh0aGlzLnJlc3VsdExpc3QubGVuZ3RoID09IDApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCfkvKDlhaXlj4LmlbDkuK3lm57mmL7mlbDmja7lrZfmrrXvvIh2YWx1Ze+8ieWAvOS4jeWtmOWcqOS6juaVsOaNrua6kOS4re+8ge+8ge+8gScpO1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLmNoaWxkcmVuICYmIHRoaXMucmVzdWx0TGlzdFt0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMV0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLmNoaWxkcmVuO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmVzdWx0TGlzdC5sZW5ndGggPj0gMikge1xyXG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDJdLmNoaWxkcmVuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLmRlcHROb2RlLmxlbmd0aCA+IDAgPyB0aGlzLmRlcHROb2RlIDogW107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLmRlcHROb2RlLmxlbmd0aCA+IDAgPyB0aGlzLmRlcHROb2RlIDogW11cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOmBjeWOhuagkeiKgueCue+8jOiuvue9rueItmlkXHJcbiAgYmxUcmVlKGRhdGEsIGlkKSB7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbVsncGlkJ10gPSBpZDtcclxuICAgICAgICBpdGVtWydzZWxlY3RlZCddID0gdGhpcy5yZXN1bHRMaXN0LnNvbWUoaXRlbTIgPT4gaXRlbTIudmFsdWUgPT0gaXRlbS52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5ibFRyZWUoaXRlbS5jaGlsZHJlbiwgaXRlbS52YWx1ZSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyDpgJLlvZLojrflj5blrZDoioLngrnmiYDmnInniLboioLngrlcclxuICBmYW1pbHlUcmVlKGFycjEsIGlkKSB7XHJcbiAgICBsZXQgdGVtcCA9IFtdXHJcbiAgICBjb25zdCBmb3JGbiA9IGZ1bmN0aW9uIChhcnIsIGlkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGFycltpXVxyXG4gICAgICAgIGlmIChpdGVtLnZhbHVlID09PSBpZCkge1xyXG4gICAgICAgICAgdGVtcC5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICBmb3JGbihhcnIxLCBpdGVtLnBpZClcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGZvckZuKGl0ZW0uY2hpbGRyZW4sIGlkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yRm4oYXJyMSwgaWQpXHJcbiAgICByZXR1cm4gdGVtcFxyXG4gIH1cclxuXHJcbiAgLy8g5pCc57SiXHJcbiAgc2VhcmNoSGFuZGxlKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBbXTtcclxuICAgIGlmICh0aGlzLnNlYXJjaFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdGhpcy5kZXB0TGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLnRpdGxlLmluZGV4T2YodGhpcy5zZWFyY2hWYWx1ZSkgIT0gLTEpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDlj5bmtojmkJzntKJcclxuICBjYW5jZWxTZWFyY2hIYW5kbGUoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IFtdO1xyXG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8g6YCJ5oup6YOo6ZeoXHJcbiAgc2VsZWN0RGVwdEhhbmRsZShkZXB0OiBhbnkpIHtcclxuICAgIHRoaXMuY2FuY2VsU2VhcmNoSGFuZGxlKCk7XHJcbiAgICBjb25zdCBoYXNUaGlzID0gdGhpcy5yZXN1bHRMaXN0LnNvbWUoaXRlbSA9PiBpdGVtLnZhbHVlID09IGRlcHQudmFsdWUpO1xyXG4gICAgaWYgKCFoYXNUaGlzKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlc3VsdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGhhc0xhc3RJdGVtID0gdGhpcy5kZXB0TGlzdC5zb21lKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PSB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLnZhbHVlKVxyXG4gICAgICAgIGlmIChoYXNMYXN0SXRlbSkgeyAvLyDlnKjmnIDlkI7nmoTlj7blrZDoioLngrnkuIrmm7TmjaLpg6jpl6hcclxuICAgICAgICAgIHRoaXMucmVzdWx0TGlzdC5zcGxpY2UodGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3VsdExpc3QucHVzaChkZXB0KTtcclxuICAgICAgdGhpcy5kZXB0TGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW1bJ3NlbGVjdGVkJ10gPSBpdGVtLnZhbHVlID09IGRlcHQudmFsdWU7XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChkZXB0LmNoaWxkcmVuICYmIGRlcHQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSBkZXB0LmNoaWxkcmVuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRTY3JvbGxUb3AoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvLyDlnKjnu5PmnpzlpITmm7TmlLnpg6jpl6hcclxuICBzZWxlY3RSZXN1bHREZXB0SGFuZGxlKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKGluZGV4ICE9IHRoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMuZGVwdExpc3QgPSBpdGVtLmNoaWxkcmVuO1xyXG4gICAgICB0aGlzLnJlc3VsdExpc3QubGVuZ3RoID0gaW5kZXggKyAxO1xyXG4gICAgICB0aGlzLmJsVHJlZSh0aGlzLmRlcHRMaXN0LCBpdGVtLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFNjcm9sbFRvcCgpO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6+572u5pWw5o2u5rqQ5YiX6KGo5rua5Yqo5p2h572u6aG2XHJcbiAgc2V0U2Nyb2xsVG9wKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyZWUtcGlja2VyLWNvbXAnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndWwnKVswXS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgfSwgMClcclxuICB9XHJcbn1cclxuIl19