ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
95 lines • 14.3 kB
JavaScript
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { Injectable } from '@angular/core';
import { BehaviorSubject, combineLatest, merge, ReplaySubject } from 'rxjs';
import { map } from 'rxjs/operators';
export class NzTableStyleService {
constructor() {
this.theadTemplate$ = new ReplaySubject(1);
this.hasFixLeft$ = new ReplaySubject(1);
this.hasFixRight$ = new ReplaySubject(1);
this.hostWidth$ = new ReplaySubject(1);
this.columnCount$ = new ReplaySubject(1);
this.showEmpty$ = new ReplaySubject(1);
this.noResult$ = new ReplaySubject(1);
this.listOfThWidthConfigPx$ = new BehaviorSubject([]);
this.tableWidthConfigPx$ = new BehaviorSubject([]);
this.manualWidthConfigPx$ = combineLatest([this.tableWidthConfigPx$, this.listOfThWidthConfigPx$]).pipe(map(([widthConfig, listOfWidth]) => (widthConfig.length ? widthConfig : listOfWidth)));
this.listOfAutoWidthPx$ = new ReplaySubject(1);
this.listOfListOfThWidthPx$ = merge(
/** init with manual width **/
this.manualWidthConfigPx$, combineLatest([this.listOfAutoWidthPx$, this.manualWidthConfigPx$]).pipe(map(([autoWidth, manualWidth]) => {
/** use autoWidth until column length match **/
if (autoWidth.length === manualWidth.length) {
return autoWidth.map((width, index) => {
if (width === '0px') {
return manualWidth[index] || null;
}
else {
return manualWidth[index] || width;
}
});
}
else {
return manualWidth;
}
})));
this.listOfMeasureColumn$ = new ReplaySubject(1);
this.listOfListOfThWidth$ = this.listOfAutoWidthPx$.pipe(map(list => list.map(width => parseInt(width, 10))));
this.enableAutoMeasure$ = new ReplaySubject(1);
}
setTheadTemplate(template) {
this.theadTemplate$.next(template);
}
setHasFixLeft(hasFixLeft) {
this.hasFixLeft$.next(hasFixLeft);
}
setHasFixRight(hasFixRight) {
this.hasFixRight$.next(hasFixRight);
}
setTableWidthConfig(widthConfig) {
this.tableWidthConfigPx$.next(widthConfig);
}
setListOfTh(listOfTh) {
let columnCount = 0;
listOfTh.forEach(th => {
columnCount += (th.colspan && +th.colspan) || (th.colSpan && +th.colSpan) || 1;
});
const listOfThPx = listOfTh.map(item => item.nzWidth);
this.columnCount$.next(columnCount);
this.listOfThWidthConfigPx$.next(listOfThPx);
}
setListOfMeasureColumn(listOfTh) {
const listOfKeys = [];
listOfTh.forEach(th => {
const length = (th.colspan && +th.colspan) || (th.colSpan && +th.colSpan) || 1;
for (let i = 0; i < length; i++) {
listOfKeys.push(`measure_key_${i}`);
}
});
this.listOfMeasureColumn$.next(listOfKeys);
}
setListOfAutoWidth(listOfAutoWidth) {
this.listOfAutoWidthPx$.next(listOfAutoWidth.map(width => `${width}px`));
}
setShowEmpty(showEmpty) {
this.showEmpty$.next(showEmpty);
}
setNoResult(noResult) {
this.noResult$.next(noResult);
}
setScroll(scrollX, scrollY) {
const enableAutoMeasure = !!(scrollX || scrollY);
if (!enableAutoMeasure) {
this.setListOfAutoWidth([]);
}
this.enableAutoMeasure$.next(enableAutoMeasure);
}
}
NzTableStyleService.decorators = [
{ type: Injectable }
];
NzTableStyleService.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3R5bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvdGFibGUvc3JjL3RhYmxlLXN0eWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQyxNQUFNLE9BQU8sbUJBQW1CO0lBK0Y5QjtRQTlGQSxtQkFBYyxHQUFHLElBQUksYUFBYSxDQUF5QixDQUFDLENBQUMsQ0FBQztRQUM5RCxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsZUFBVSxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBOEMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUNwRix5QkFBb0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hHLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDdEYsQ0FBQztRQUNNLHVCQUFrQixHQUFHLElBQUksYUFBYSxDQUF3QixDQUFDLENBQUMsQ0FBQztRQUN6RSwyQkFBc0IsR0FBRyxLQUFLO1FBQzVCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUMvQiwrQ0FBK0M7WUFDL0MsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO3dCQUNuQixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7cUJBQ25DO3lCQUFNO3dCQUNMLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQztxQkFDcEM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxPQUFPLFdBQVcsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUNGLHlCQUFvQixHQUFHLElBQUksYUFBYSxDQUF3QixDQUFDLENBQUMsQ0FBQztRQUNuRSx5QkFBb0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pHLHVCQUFrQixHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO0lBMkRwQyxDQUFDO0lBekRoQixnQkFBZ0IsQ0FBQyxRQUFnQztRQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQW1CO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBb0I7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLFdBQXlDO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUE2QztRQUN2RCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixXQUFXLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQTZDO1FBQ2xFLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9FLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9CLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUF5QjtRQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBcUQ7UUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFzQixFQUFFLE9BQXNCO1FBQ3RELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBOUZGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2UsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE56VGhNZWFzdXJlRGlyZWN0aXZlIH0gZnJvbSAnLi9jZWxsL3RoLW1lYXN1cmUuZGlyZWN0aXZlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE56VGFibGVTdHlsZVNlcnZpY2Uge1xuICB0aGVhZFRlbXBsYXRlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PFRlbXBsYXRlUmVmPE56U2FmZUFueT4+KDEpO1xuICBoYXNGaXhMZWZ0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICBoYXNGaXhSaWdodCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgaG9zdFdpZHRoJCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIGNvbHVtbkNvdW50JCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHNob3dFbXB0eSQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgbm9SZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IHVuZGVmaW5lZD4oMSk7XG4gIHByaXZhdGUgbGlzdE9mVGhXaWR0aENvbmZpZ1B4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudWxsPj4oW10pO1xuICBwcml2YXRlIHRhYmxlV2lkdGhDb25maWdQeCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVsbD4+KFtdKTtcbiAgbWFudWFsV2lkdGhDb25maWdQeCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnRhYmxlV2lkdGhDb25maWdQeCQsIHRoaXMubGlzdE9mVGhXaWR0aENvbmZpZ1B4JF0pLnBpcGUoXG4gICAgbWFwKChbd2lkdGhDb25maWcsIGxpc3RPZldpZHRoXSkgPT4gKHdpZHRoQ29uZmlnLmxlbmd0aCA/IHdpZHRoQ29uZmlnIDogbGlzdE9mV2lkdGgpKVxuICApO1xuICBwcml2YXRlIGxpc3RPZkF1dG9XaWR0aFB4JCA9IG5ldyBSZXBsYXlTdWJqZWN0PFJlYWRvbmx5QXJyYXk8c3RyaW5nPj4oMSk7XG4gIGxpc3RPZkxpc3RPZlRoV2lkdGhQeCQgPSBtZXJnZShcbiAgICAvKiogaW5pdCB3aXRoIG1hbnVhbCB3aWR0aCAqKi9cbiAgICB0aGlzLm1hbnVhbFdpZHRoQ29uZmlnUHgkLFxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubGlzdE9mQXV0b1dpZHRoUHgkLCB0aGlzLm1hbnVhbFdpZHRoQ29uZmlnUHgkXSkucGlwZShcbiAgICAgIG1hcCgoW2F1dG9XaWR0aCwgbWFudWFsV2lkdGhdKSA9PiB7XG4gICAgICAgIC8qKiB1c2UgYXV0b1dpZHRoIHVudGlsIGNvbHVtbiBsZW5ndGggbWF0Y2ggKiovXG4gICAgICAgIGlmIChhdXRvV2lkdGgubGVuZ3RoID09PSBtYW51YWxXaWR0aC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gYXV0b1dpZHRoLm1hcCgod2lkdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAod2lkdGggPT09ICcwcHgnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBtYW51YWxXaWR0aFtpbmRleF0gfHwgbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBtYW51YWxXaWR0aFtpbmRleF0gfHwgd2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG1hbnVhbFdpZHRoO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgbGlzdE9mTWVhc3VyZUNvbHVtbiQgPSBuZXcgUmVwbGF5U3ViamVjdDxSZWFkb25seUFycmF5PHN0cmluZz4+KDEpO1xuICBsaXN0T2ZMaXN0T2ZUaFdpZHRoJCA9IHRoaXMubGlzdE9mQXV0b1dpZHRoUHgkLnBpcGUobWFwKGxpc3QgPT4gbGlzdC5tYXAod2lkdGggPT4gcGFyc2VJbnQod2lkdGgsIDEwKSkpKTtcbiAgZW5hYmxlQXV0b01lYXN1cmUkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgc2V0VGhlYWRUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8TnpTYWZlQW55Pik6IHZvaWQge1xuICAgIHRoaXMudGhlYWRUZW1wbGF0ZSQubmV4dCh0ZW1wbGF0ZSk7XG4gIH1cblxuICBzZXRIYXNGaXhMZWZ0KGhhc0ZpeExlZnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmhhc0ZpeExlZnQkLm5leHQoaGFzRml4TGVmdCk7XG4gIH1cblxuICBzZXRIYXNGaXhSaWdodChoYXNGaXhSaWdodDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaGFzRml4UmlnaHQkLm5leHQoaGFzRml4UmlnaHQpO1xuICB9XG5cbiAgc2V0VGFibGVXaWR0aENvbmZpZyh3aWR0aENvbmZpZzogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudWxsPik6IHZvaWQge1xuICAgIHRoaXMudGFibGVXaWR0aENvbmZpZ1B4JC5uZXh0KHdpZHRoQ29uZmlnKTtcbiAgfVxuXG4gIHNldExpc3RPZlRoKGxpc3RPZlRoOiBSZWFkb25seUFycmF5PE56VGhNZWFzdXJlRGlyZWN0aXZlPik6IHZvaWQge1xuICAgIGxldCBjb2x1bW5Db3VudCA9IDA7XG4gICAgbGlzdE9mVGguZm9yRWFjaCh0aCA9PiB7XG4gICAgICBjb2x1bW5Db3VudCArPSAodGguY29sc3BhbiAmJiArdGguY29sc3BhbikgfHwgKHRoLmNvbFNwYW4gJiYgK3RoLmNvbFNwYW4pIHx8IDE7XG4gICAgfSk7XG4gICAgY29uc3QgbGlzdE9mVGhQeCA9IGxpc3RPZlRoLm1hcChpdGVtID0+IGl0ZW0ubnpXaWR0aCk7XG4gICAgdGhpcy5jb2x1bW5Db3VudCQubmV4dChjb2x1bW5Db3VudCk7XG4gICAgdGhpcy5saXN0T2ZUaFdpZHRoQ29uZmlnUHgkLm5leHQobGlzdE9mVGhQeCk7XG4gIH1cblxuICBzZXRMaXN0T2ZNZWFzdXJlQ29sdW1uKGxpc3RPZlRoOiBSZWFkb25seUFycmF5PE56VGhNZWFzdXJlRGlyZWN0aXZlPik6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RPZktleXM6IHN0cmluZ1tdID0gW107XG4gICAgbGlzdE9mVGguZm9yRWFjaCh0aCA9PiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAodGguY29sc3BhbiAmJiArdGguY29sc3BhbikgfHwgKHRoLmNvbFNwYW4gJiYgK3RoLmNvbFNwYW4pIHx8IDE7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxpc3RPZktleXMucHVzaChgbWVhc3VyZV9rZXlfJHtpfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubGlzdE9mTWVhc3VyZUNvbHVtbiQubmV4dChsaXN0T2ZLZXlzKTtcbiAgfVxuXG4gIHNldExpc3RPZkF1dG9XaWR0aChsaXN0T2ZBdXRvV2lkdGg6IG51bWJlcltdKTogdm9pZCB7XG4gICAgdGhpcy5saXN0T2ZBdXRvV2lkdGhQeCQubmV4dChsaXN0T2ZBdXRvV2lkdGgubWFwKHdpZHRoID0+IGAke3dpZHRofXB4YCkpO1xuICB9XG5cbiAgc2V0U2hvd0VtcHR5KHNob3dFbXB0eTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0VtcHR5JC5uZXh0KHNob3dFbXB0eSk7XG4gIH1cblxuICBzZXROb1Jlc3VsdChub1Jlc3VsdDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMubm9SZXN1bHQkLm5leHQobm9SZXN1bHQpO1xuICB9XG5cbiAgc2V0U2Nyb2xsKHNjcm9sbFg6IHN0cmluZyB8IG51bGwsIHNjcm9sbFk6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVBdXRvTWVhc3VyZSA9ICEhKHNjcm9sbFggfHwgc2Nyb2xsWSk7XG4gICAgaWYgKCFlbmFibGVBdXRvTWVhc3VyZSkge1xuICAgICAgdGhpcy5zZXRMaXN0T2ZBdXRvV2lkdGgoW10pO1xuICAgIH1cbiAgICB0aGlzLmVuYWJsZUF1dG9NZWFzdXJlJC5uZXh0KGVuYWJsZUF1dG9NZWFzdXJlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==