ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
94 lines • 15 kB
JavaScript
import { Directive, ElementRef, Injector, Input, Renderer2 } from '@angular/core';
import { Subscription } from 'rxjs';
import { delay, distinctUntilChanged } from 'rxjs/operators';
import { OTranslateService } from '../../../../../services/translate/o-translate.service';
import { Util } from '../../../../../util/util';
import { OTableBase } from '../../../o-table-base.class';
import * as i0 from "@angular/core";
import * as i1 from "../../../o-table-base.class";
export class OTableExpandedFooterDirective {
set colspan(value) {
this._colspan = value;
if (this.tdTableWithMessage) {
this.tdTableWithMessage.setAttribute('colspan', value);
}
}
get colspan() {
return this._colspan;
}
constructor(table, element, renderer, injector) {
this.table = table;
this.element = element;
this.renderer = renderer;
this.injector = injector;
this.subscription = new Subscription();
this.translateService = this.injector.get(OTranslateService);
}
ngAfterViewInit() {
if (this.element.nativeElement.childNodes[2]) {
this.tableBody = this.element.nativeElement.childNodes[1];
}
this.registerContentChange();
}
registerContentChange() {
const tr = this.renderer.createElement('tr');
this.tdTableWithMessage = this.renderer.createElement('td');
this.renderer.addClass(tr, 'o-table-no-results');
tr.appendChild(this.tdTableWithMessage);
this.renderer.appendChild(this.tableBody, tr);
this.subscription.add(this.table.onContentChange.pipe(distinctUntilChanged((prev, curr) => (prev?.length ?? 0) === (curr?.length ?? 0)), delay(100)).subscribe(() => {
this.showMessage(true);
}));
if (this.table.oTableQuickFilterComponent) {
this.subscription.add(this.table.oTableQuickFilterComponent.onChange.pipe().subscribe(() => this.showMessage(true)));
}
}
showMessage(display) {
this.removeMessageSpan();
this.table.cd.detectChanges();
if (display && (this.table?.dataSource?.renderedData?.length ?? 0) === 0) {
this.createMessageSpan();
}
}
removeMessageSpan() {
if (this.spanMessageNotResults) {
this.renderer.removeChild(this.element.nativeElement, this.spanMessageNotResults);
}
}
destroy() {
this.subscription.unsubscribe();
}
buildMessage() {
let message = '';
message = this.translateService.get('TABLE.EMPTY');
if (this.tableHasQuickFilter() && this.table.oTableQuickFilterComponent.value) {
message += this.translateService.get('TABLE.EMPTY_USING_FILTER', [(this.table.oTableQuickFilterComponent.value)]);
}
return message;
}
tableHasQuickFilter() {
return this.table.quickFilter && Util.isDefined(this.table.oTableQuickFilterComponent);
}
createMessageSpan() {
const message = this.buildMessage();
this.spanMessageNotResults = this.renderer.createElement('span');
const messageNotResults = this.renderer.createText(message);
if (this.tdTableWithMessage) {
this.tdTableWithMessage.setAttribute('colspan', this.colspan);
this.renderer.appendChild(this.spanMessageNotResults, messageNotResults);
this.renderer.appendChild(this.tdTableWithMessage, this.spanMessageNotResults);
}
}
}
OTableExpandedFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableExpandedFooterDirective, deps: [{ token: i1.OTableBase }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
OTableExpandedFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OTableExpandedFooterDirective, selector: "[oTableExpandedFooter]", inputs: { colspan: ["oTableExpandedFooterColspan", "colspan"] }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableExpandedFooterDirective, decorators: [{
type: Directive,
args: [{
selector: '[oTableExpandedFooter]'
}]
}], ctorParameters: function () { return [{ type: i1.OTableBase }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { colspan: [{
type: Input,
args: ['oTableExpandedFooterColspan']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1leHBhbmRlZC1mb290ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9mb290ZXIvZXhwYW5kZWQvby10YWJsZS1leHBhbmRlZC1mb290ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFLekQsTUFBTSxPQUFPLDZCQUE2QjtJQVF4QyxJQUNJLE9BQU8sQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0QsWUFDUyxLQUFpQixFQUNqQixPQUFtQixFQUNsQixRQUFtQixFQUNqQixRQUFrQjtRQUhyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBbEJ0QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFvQnhDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCO1FBR25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUNqRCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFHOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUNuRCxvQkFBb0IsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDakYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNYLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUdKLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRTtZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEg7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQWdCO1FBRWpDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTlCLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFFeEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDbkY7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUU7WUFDN0UsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25IO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVTLG1CQUFtQjtRQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFUyxpQkFBaUI7UUFFekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDaEY7SUFDSCxDQUFDOzsySEF4R1UsNkJBQTZCOytHQUE3Qiw2QkFBNkI7NEZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQzt5S0FVSyxPQUFPO3NCQURWLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29UYWJsZUV4cGFuZGVkRm9vdGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlRXhwYW5kZWRGb290ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBwcml2YXRlIHNwYW5NZXNzYWdlTm90UmVzdWx0czogYW55O1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuICBwcml2YXRlIHRhYmxlQm9keTogYW55O1xuICBwcml2YXRlIHRkVGFibGVXaXRoTWVzc2FnZTogYW55O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBASW5wdXQoJ29UYWJsZUV4cGFuZGVkRm9vdGVyQ29sc3BhbicpXG4gIHNldCBjb2xzcGFuKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jb2xzcGFuID0gdmFsdWU7XG4gICAgaWYgKHRoaXMudGRUYWJsZVdpdGhNZXNzYWdlKSB7XG4gICAgICB0aGlzLnRkVGFibGVXaXRoTWVzc2FnZS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGdldCBjb2xzcGFuKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHNwYW47XG4gIH1cbiAgcHJpdmF0ZSBfY29sc3BhbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWJsZTogT1RhYmxlQmFzZSxcbiAgICBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXNbMl0pIHtcbiAgICAgIHRoaXMudGFibGVCb2R5ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlc1sxXTtcbiAgICB9XG4gICAgdGhpcy5yZWdpc3RlckNvbnRlbnRDaGFuZ2UoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQ29udGVudENoYW5nZSgpIHtcbiAgICAvLyBDcmVhdGUgYSB0ciB3aXRoIGEgdGQgYW5kIGluc2lkZSBwdXQgdGhlIG1lc3NhZ2UgYW5kIGFkZCB0byB0Ym9keVxuICAgIC8vIDx0cj48dGQ+PHNwYW4+e21lc3NhZ2V9PC9zcGFuPjx0ZD48dHI+XG4gICAgY29uc3QgdHIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgdGhpcy50ZFRhYmxlV2l0aE1lc3NhZ2UgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0ciwgJ28tdGFibGUtbm8tcmVzdWx0cycpO1xuICAgIHRyLmFwcGVuZENoaWxkKHRoaXMudGRUYWJsZVdpdGhNZXNzYWdlKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudGFibGVCb2R5LCB0cik7XG5cbiAgICAvKiBTaG93L0hpZGUgbWVzc2FnZSBXaGVuIHRoZSByZW5kZXJlciBkYXRhIGlzIGNoYW5nZWQgd2l0aCBzdGF0aWMgZGF0YSovXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMudGFibGUub25Db250ZW50Q2hhbmdlLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4gKHByZXY/Lmxlbmd0aCA/PyAwKSA9PT0gKGN1cnI/Lmxlbmd0aCA/PyAwKSksXG4gICAgICBkZWxheSgxMDApXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93TWVzc2FnZSh0cnVlKTtcbiAgICB9KSk7XG5cbiAgICAvKiAgU2hvdy9IaWRlIG1lc3NhZ2Ugd2hlbiB0aGUgcXVpY2tmaWx0ZXIgaXMgY2hhbmdlZCAqL1xuICAgIGlmICh0aGlzLnRhYmxlLm9UYWJsZVF1aWNrRmlsdGVyQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50YWJsZS5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudC5vbkNoYW5nZS5waXBlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2hvd01lc3NhZ2UodHJ1ZSkpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvd01lc3NhZ2UoZGlzcGxheTogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIHJlc2V0IHNwYW4gbWVzc2FnZVxuICAgIHRoaXMucmVtb3ZlTWVzc2FnZVNwYW4oKTtcbiAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmIChkaXNwbGF5ICYmICh0aGlzLnRhYmxlPy5kYXRhU291cmNlPy5yZW5kZXJlZERhdGE/Lmxlbmd0aCA/PyAwKSA9PT0gMCkge1xuICAgICAgLy8gZ2VuZXJhdGUgbmV3IG1lc3NhZ2VcbiAgICAgIHRoaXMuY3JlYXRlTWVzc2FnZVNwYW4oKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVNZXNzYWdlU3BhbigpIHtcbiAgICBpZiAodGhpcy5zcGFuTWVzc2FnZU5vdFJlc3VsdHMpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3Bhbk1lc3NhZ2VOb3RSZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgbGV0IG1lc3NhZ2UgPSAnJztcbiAgICBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnVEFCTEUuRU1QVFknKTtcbiAgICBpZiAodGhpcy50YWJsZUhhc1F1aWNrRmlsdGVyKCkgJiYgdGhpcy50YWJsZS5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudC52YWx1ZSkge1xuICAgICAgbWVzc2FnZSArPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRS5FTVBUWV9VU0lOR19GSUxURVInLCBbKHRoaXMudGFibGUub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQudmFsdWUpXSk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhYmxlSGFzUXVpY2tGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUucXVpY2tGaWx0ZXIgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50YWJsZS5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTWVzc2FnZVNwYW4oKSB7XG4gICAgLy8gMSBCdWlsZCBtZXNzYWdlXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuYnVpbGRNZXNzYWdlKCk7XG4gICAgLy8gMiBDcmVhdGUgbWVzc2FnZVxuICAgIHRoaXMuc3Bhbk1lc3NhZ2VOb3RSZXN1bHRzID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgY29uc3QgbWVzc2FnZU5vdFJlc3VsdHMgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQobWVzc2FnZSk7XG4gICAgaWYgKHRoaXMudGRUYWJsZVdpdGhNZXNzYWdlKSB7XG4gICAgICB0aGlzLnRkVGFibGVXaXRoTWVzc2FnZS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCB0aGlzLmNvbHNwYW4pO1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnNwYW5NZXNzYWdlTm90UmVzdWx0cywgbWVzc2FnZU5vdFJlc3VsdHMpO1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRkVGFibGVXaXRoTWVzc2FnZSwgdGhpcy5zcGFuTWVzc2FnZU5vdFJlc3VsdHMpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=