ngx-bit
Version:
A flexible NG-ZORRO helper library
172 lines • 16.1 kB
JavaScript
import { AsyncSubject } from 'rxjs';
export class ListByPage {
constructor(curd, storage, option) {
this.curd = curd;
this.storage = storage;
this.option = option;
/**
* 完成初始化
* Complete initialization
*/
this.ready = new AsyncSubject();
/**
* 搜索字段定义
* Search field definition
*/
this.search = {};
/**
* 分页数据
* Paging data
*/
this.data = [];
/**
* 加载状态
* Loading status
*/
this.loading = true;
/**
* 分页限制
* Paging limit
*/
this.limit = 0;
/**
* 分页总数
* Total number of pages
*/
this.totals = 0;
/**
* 分页页码
* Pagination page number
*/
this.index = 1;
/**
* 是否全被选中
* Are all selected
*/
this.checked = false;
/**
* 是否不完全被选中
* Is it not completely selected
*/
this.indeterminate = false;
/**
* 是否可进行批量处理
* Whether it can be batch processed
*/
this.batch = false;
/**
* 被选中的数量
* Number selected
*/
this.checkedNumber = 0;
this.limit = option.limit;
this.order = option.order;
this.storage.get('search:' + option.id).subscribe((data) => {
if (!data) {
for (const value of option.query) {
this.search[value.field] = value;
}
}
else {
this.search = data;
}
this.ready.next(data);
this.ready.complete();
});
}
/**
* 设置数据
* Set data
*/
setData(data) {
this.data = data;
}
/**
* 判断是否包含该字段的搜索条件
* Determine whether to include the search criteria of the field
*/
hasSearch(field) {
return this.search.hasOwnProperty(field);
}
/**
* 主动触发搜索变动之后
* After actively triggering the search change
*/
afterSearch() {
return this.storage.set('search:' + this.option.id, this.search);
}
/**
* 主动触发搜索清空之后
* After actively triggering search and clearing
*/
clearSearch(reset = {}) {
for (const key in this.search) {
if (this.search.hasOwnProperty(key)) {
const search = this.search[key];
if (reset.hasOwnProperty(search.field)) {
search.value = reset[search.field];
}
else {
search.value = '';
}
}
}
return this.storage.delete('search:' + this.option.id);
}
/**
* 更新分页列表状态
* Update the status of the paging list
*/
refreshStatus() {
const allChecked = this.data.every((value) => value.checked === true);
const allUnchecked = this.data.every((value) => !value.checked);
this.checked = this.data.length !== 0 && allChecked;
this.indeterminate = !allChecked && !allUnchecked;
this.batch = this.checked || this.indeterminate;
this.checkedNumber = this.data.filter((value) => value.checked).length;
}
/**
* 更改所有分页列表选中状态
* Change the selected state of all tabbed lists
*/
checkedAll(event) {
this.data.forEach((data) => (data.checked = event));
this.refreshStatus();
}
/**
* 返回所有被选中的列表
* Return all selected lists
*/
getChecked() {
return this.data.filter(value => value.checked);
}
/**
* 获取当前的页码
* Get the current page number
*/
getPage() {
return this.storage.get('page:' + this.option.id);
}
/**
* 主动执行分页页码的持久化记录
* Actively execute persistent records of paging page numbers
*/
persistence() {
this.storage.set('page:' + this.option.id, this.index).subscribe(_ => _);
}
/**
* 返回查询定义数组
* Return query definition array
*/
toQuery() {
return Object.values(this.search);
}
/**
* 返回查询语句
* Return query statement
*/
toQuerySchema() {
return this.curd.getQuerySchema(this.toQuery());
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ieS1wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpdC9jb21tb24vdXRpbHMvbGlzdC1ieS1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFLaEQsTUFBTSxPQUFPLFVBQVU7SUF5RXJCLFlBQ1UsSUFBb0IsRUFDcEIsT0FBbUIsRUFDbkIsTUFBd0I7UUFGeEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQTNFbEM7OztXQUdHO1FBQ0gsVUFBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRW5EOzs7V0FHRztRQUNILFdBQU0sR0FBc0MsRUFBRSxDQUFDO1FBUS9DOzs7V0FHRztRQUNILFNBQUksR0FBVSxFQUFFLENBQUM7UUFFakI7OztXQUdHO1FBQ0gsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmOzs7V0FHRztRQUNILFVBQUssR0FBRyxDQUFDLENBQUM7UUFFVjs7O1dBR0c7UUFDSCxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRVg7OztXQUdHO1FBQ0gsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVWOzs7V0FHRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEI7OztXQUdHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEI7OztXQUdHO1FBQ0gsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVkOzs7V0FHRztRQUNILGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBT2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtvQkFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUNsQzthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ3BCO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsSUFBVztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLFFBQWEsRUFBRTtRQUN6QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDdEMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNwQztxQkFBTTtvQkFDTCxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztpQkFDbkI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDcEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpc3RCeVBhZ2VPcHRpb24sIFNlYXJjaE9wdGlvbiwgT3JkZXJPcHRpb24gfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IEJpdEN1cmRTZXJ2aWNlIH0gZnJvbSAnLi4vYml0LWN1cmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0QnlQYWdlIHtcclxuICAvKipcclxuICAgKiDlrozmiJDliJ3lp4vljJZcclxuICAgKiBDb21wbGV0ZSBpbml0aWFsaXphdGlvblxyXG4gICAqL1xyXG4gIHJlYWR5OiBBc3luY1N1YmplY3Q8YW55PiA9IG5ldyBBc3luY1N1YmplY3Q8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiDmkJzntKLlrZfmrrXlrprkuYlcclxuICAgKiBTZWFyY2ggZmllbGQgZGVmaW5pdGlvblxyXG4gICAqL1xyXG4gIHNlYXJjaDogeyBbZmllbGQ6IHN0cmluZ106IFNlYXJjaE9wdGlvbiB9ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIOaOkuW6j+Wtl+auteWumuS5iVxyXG4gICAqIFNvcnQgZmllbGQgZGVmaW5pdGlvblxyXG4gICAqL1xyXG4gIG9yZGVyOiBPcmRlck9wdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICog5YiG6aG15pWw5o2uXHJcbiAgICogUGFnaW5nIGRhdGFcclxuICAgKi9cclxuICBkYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiDliqDovb3nirbmgIFcclxuICAgKiBMb2FkaW5nIHN0YXR1c1xyXG4gICAqL1xyXG4gIGxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiDliIbpobXpmZDliLZcclxuICAgKiBQYWdpbmcgbGltaXRcclxuICAgKi9cclxuICBsaW1pdCA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIhumhteaAu+aVsFxyXG4gICAqIFRvdGFsIG51bWJlciBvZiBwYWdlc1xyXG4gICAqL1xyXG4gIHRvdGFscyA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIhumhtemhteeggVxyXG4gICAqIFBhZ2luYXRpb24gcGFnZSBudW1iZXJcclxuICAgKi9cclxuICBpbmRleCA9IDE7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuWFqOiiq+mAieS4rVxyXG4gICAqIEFyZSBhbGwgc2VsZWN0ZWRcclxuICAgKi9cclxuICBjaGVja2VkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuS4jeWujOWFqOiiq+mAieS4rVxyXG4gICAqIElzIGl0IG5vdCBjb21wbGV0ZWx5IHNlbGVjdGVkXHJcbiAgICovXHJcbiAgaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiDmmK/lkKblj6/ov5vooYzmibnph4/lpITnkIZcclxuICAgKiBXaGV0aGVyIGl0IGNhbiBiZSBiYXRjaCBwcm9jZXNzZWRcclxuICAgKi9cclxuICBiYXRjaCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiDooqvpgInkuK3nmoTmlbDph49cclxuICAgKiBOdW1iZXIgc2VsZWN0ZWRcclxuICAgKi9cclxuICBjaGVja2VkTnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGN1cmQ6IEJpdEN1cmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlTWFwLFxyXG4gICAgcHJpdmF0ZSBvcHRpb246IExpc3RCeVBhZ2VPcHRpb25cclxuICApIHtcclxuICAgIHRoaXMubGltaXQgPSBvcHRpb24ubGltaXQ7XHJcbiAgICB0aGlzLm9yZGVyID0gb3B0aW9uLm9yZGVyO1xyXG4gICAgdGhpcy5zdG9yYWdlLmdldCgnc2VhcmNoOicgKyBvcHRpb24uaWQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2Ygb3B0aW9uLnF1ZXJ5KSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFt2YWx1ZS5maWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVhZHkubmV4dChkYXRhKTtcclxuICAgICAgdGhpcy5yZWFkeS5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDorr7nva7mlbDmja5cclxuICAgKiBTZXQgZGF0YVxyXG4gICAqL1xyXG4gIHNldERhdGEoZGF0YTogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKTmlq3mmK/lkKbljIXlkKvor6XlrZfmrrXnmoTmkJzntKLmnaHku7ZcclxuICAgKiBEZXRlcm1pbmUgd2hldGhlciB0byBpbmNsdWRlIHRoZSBzZWFyY2ggY3JpdGVyaWEgb2YgdGhlIGZpZWxkXHJcbiAgICovXHJcbiAgaGFzU2VhcmNoKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlYXJjaC5oYXNPd25Qcm9wZXJ0eShmaWVsZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDkuLvliqjop6blj5HmkJzntKLlj5jliqjkuYvlkI5cclxuICAgKiBBZnRlciBhY3RpdmVseSB0cmlnZ2VyaW5nIHRoZSBzZWFyY2ggY2hhbmdlXHJcbiAgICovXHJcbiAgYWZ0ZXJTZWFyY2goKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdzZWFyY2g6JyArIHRoaXMub3B0aW9uLmlkLCB0aGlzLnNlYXJjaCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDkuLvliqjop6blj5HmkJzntKLmuIXnqbrkuYvlkI5cclxuICAgKiBBZnRlciBhY3RpdmVseSB0cmlnZ2VyaW5nIHNlYXJjaCBhbmQgY2xlYXJpbmdcclxuICAgKi9cclxuICBjbGVhclNlYXJjaChyZXNldDogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zZWFyY2gpIHtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFtrZXldO1xyXG4gICAgICAgIGlmIChyZXNldC5oYXNPd25Qcm9wZXJ0eShzZWFyY2guZmllbGQpKSB7XHJcbiAgICAgICAgICBzZWFyY2gudmFsdWUgPSByZXNldFtzZWFyY2guZmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZWFyY2gudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsZXRlKCdzZWFyY2g6JyArIHRoaXMub3B0aW9uLmlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOabtOaWsOWIhumhteWIl+ihqOeKtuaAgVxyXG4gICAqIFVwZGF0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdpbmcgbGlzdFxyXG4gICAqL1xyXG4gIHJlZnJlc2hTdGF0dXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbGxDaGVja2VkID0gdGhpcy5kYXRhLmV2ZXJ5KCh2YWx1ZSkgPT4gdmFsdWUuY2hlY2tlZCA9PT0gdHJ1ZSk7XHJcbiAgICBjb25zdCBhbGxVbmNoZWNrZWQgPSB0aGlzLmRhdGEuZXZlcnkoKHZhbHVlKSA9PiAhdmFsdWUuY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmRhdGEubGVuZ3RoICE9PSAwICYmIGFsbENoZWNrZWQ7XHJcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSAhYWxsQ2hlY2tlZCAmJiAhYWxsVW5jaGVja2VkO1xyXG4gICAgdGhpcy5iYXRjaCA9IHRoaXMuY2hlY2tlZCB8fCB0aGlzLmluZGV0ZXJtaW5hdGU7XHJcbiAgICB0aGlzLmNoZWNrZWROdW1iZXIgPSB0aGlzLmRhdGEuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUuY2hlY2tlZCkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5pu05pS55omA5pyJ5YiG6aG15YiX6KGo6YCJ5Lit54q25oCBXHJcbiAgICogQ2hhbmdlIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiBhbGwgdGFiYmVkIGxpc3RzXHJcbiAgICovXHJcbiAgY2hlY2tlZEFsbChldmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhLmZvckVhY2goKGRhdGEpID0+IChkYXRhLmNoZWNrZWQgPSBldmVudCkpO1xyXG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDov5Tlm57miYDmnInooqvpgInkuK3nmoTliJfooahcclxuICAgKiBSZXR1cm4gYWxsIHNlbGVjdGVkIGxpc3RzXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZCgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5jaGVja2VkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluW9k+WJjeeahOmhteeggVxyXG4gICAqIEdldCB0aGUgY3VycmVudCBwYWdlIG51bWJlclxyXG4gICAqL1xyXG4gIGdldFBhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KCdwYWdlOicgKyB0aGlzLm9wdGlvbi5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDkuLvliqjmiafooYzliIbpobXpobXnoIHnmoTmjIHkuYXljJborrDlvZVcclxuICAgKiBBY3RpdmVseSBleGVjdXRlIHBlcnNpc3RlbnQgcmVjb3JkcyBvZiBwYWdpbmcgcGFnZSBudW1iZXJzXHJcbiAgICovXHJcbiAgcGVyc2lzdGVuY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdwYWdlOicgKyB0aGlzLm9wdGlvbi5pZCwgdGhpcy5pbmRleCkuc3Vic2NyaWJlKF8gPT4gXyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDov5Tlm57mn6Xor6LlrprkuYnmlbDnu4RcclxuICAgKiBSZXR1cm4gcXVlcnkgZGVmaW5pdGlvbiBhcnJheVxyXG4gICAqL1xyXG4gIHRvUXVlcnkoKTogU2VhcmNoT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5zZWFyY2gpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6L+U5Zue5p+l6K+i6K+t5Y+lXHJcbiAgICogUmV0dXJuIHF1ZXJ5IHN0YXRlbWVudFxyXG4gICAqL1xyXG4gIHRvUXVlcnlTY2hlbWEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VyZC5nZXRRdWVyeVNjaGVtYSh0aGlzLnRvUXVlcnkoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==