ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
333 lines • 25.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: button.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __decorate, __metadata } from "tslib";
/**
* @license
* Copyright Alibaba.com All Rights Reserved.
*
* 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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Input, Renderer2, ViewEncapsulation } from '@angular/core';
import { NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';
import { InputBoolean } from 'ng-zorro-antd/core/util';
import { NzIconDirective } from 'ng-zorro-antd/icon';
import { Subject } from 'rxjs';
import { filter, startWith, takeUntil } from 'rxjs/operators';
/** @type {?} */
var NZ_CONFIG_COMPONENT_NAME = 'button';
var NzButtonComponent = /** @class */ (function () {
function NzButtonComponent(elementRef, cdr, renderer, nzConfigService) {
var _this = this;
this.elementRef = elementRef;
this.cdr = cdr;
this.renderer = renderer;
this.nzConfigService = nzConfigService;
this.nzBlock = false;
this.nzGhost = false;
this.nzSearch = false;
this.nzLoading = false;
this.nzDanger = false;
this.disabled = false;
this.tabIndex = null;
this.nzType = null;
this.nzShape = null;
this.nzSize = 'default';
this.destroy$ = new Subject();
this.loading$ = new Subject();
this.nzConfigService
.getConfigChangeEventForComponent(NZ_CONFIG_COMPONENT_NAME)
.pipe(takeUntil(this.destroy$))
.subscribe((/**
* @return {?}
*/
function () {
_this.cdr.markForCheck();
}));
}
/**
* @param {?} event
* @return {?}
*/
NzButtonComponent.prototype.haltDisabledEvents = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.disabled) {
event.preventDefault();
event.stopImmediatePropagation();
}
};
/**
* @param {?} nodes
* @param {?} renderer
* @return {?}
*/
NzButtonComponent.prototype.insertSpan = /**
* @param {?} nodes
* @param {?} renderer
* @return {?}
*/
function (nodes, renderer) {
nodes.forEach((/**
* @param {?} node
* @return {?}
*/
function (node) {
if (node.nodeName === '#text') {
/** @type {?} */
var span = renderer.createElement('span');
/** @type {?} */
var parent_1 = renderer.parentNode(node);
renderer.insertBefore(parent_1, span, node);
renderer.appendChild(span, node);
}
}));
};
/**
* @param {?} element
* @param {?} renderer
* @return {?}
*/
NzButtonComponent.prototype.assertIconOnly = /**
* @param {?} element
* @param {?} renderer
* @return {?}
*/
function (element, renderer) {
/** @type {?} */
var listOfNode = Array.from(element.childNodes);
/** @type {?} */
var iconCount = listOfNode.filter((/**
* @param {?} node
* @return {?}
*/
function (node) { return node.nodeName === 'I'; })).length;
/** @type {?} */
var noText = listOfNode.every((/**
* @param {?} node
* @return {?}
*/
function (node) { return node.nodeName !== '#text'; }));
/** @type {?} */
var noSpan = listOfNode.every((/**
* @param {?} node
* @return {?}
*/
function (node) { return node.nodeName !== 'SPAN'; }));
/** @type {?} */
var isIconOnly = noSpan && noText && iconCount === 1;
if (isIconOnly) {
renderer.addClass(element, 'ant-btn-icon-only');
}
};
/**
* @param {?} changes
* @return {?}
*/
NzButtonComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var nzLoading = changes.nzLoading;
if (nzLoading) {
this.loading$.next(this.nzLoading);
}
};
/**
* @return {?}
*/
NzButtonComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.assertIconOnly(this.elementRef.nativeElement, this.renderer);
this.insertSpan(this.elementRef.nativeElement.childNodes, this.renderer);
};
/**
* @return {?}
*/
NzButtonComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.loading$
.pipe(startWith(this.nzLoading), filter((/**
* @return {?}
*/
function () { return !!_this.nzIconDirectiveElement; })), takeUntil(this.destroy$))
.subscribe((/**
* @param {?} loading
* @return {?}
*/
function (loading) {
/** @type {?} */
var nativeElement = _this.nzIconDirectiveElement.nativeElement;
if (loading) {
_this.renderer.setStyle(nativeElement, 'display', 'none');
}
else {
_this.renderer.removeStyle(nativeElement, 'display');
}
}));
};
/**
* @return {?}
*/
NzButtonComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.destroy$.next();
this.destroy$.complete();
};
NzButtonComponent.decorators = [
{ type: Component, args: [{
selector: 'button[nz-button], a[nz-button]',
exportAs: 'nzButton',
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
template: "\n <i nz-icon nzType=\"loading\" *ngIf=\"nzLoading\"></i>\n <ng-content></ng-content>\n ",
host: {
'[class.ant-btn]': "true",
'[class.ant-btn-primary]': "nzType === 'primary'",
'[class.ant-btn-dashed]': "nzType === 'dashed'",
'[class.ant-btn-link]': "nzType === 'link'",
'[class.ant-btn-danger]': "nzType === 'danger'",
'[class.ant-btn-circle]': "nzShape === 'circle'",
'[class.ant-btn-round]': "nzShape === 'round'",
'[class.ant-btn-lg]': "nzSize === 'large'",
'[class.ant-btn-sm]': "nzSize === 'small'",
'[class.ant-btn-dangerous]': "nzDanger",
'[class.ant-btn-loading]': "nzLoading",
'[class.ant-btn-background-ghost]': "nzGhost",
'[class.ant-btn-block]': "nzBlock",
'[class.ant-input-search-button]': "nzSearch",
'[attr.tabindex]': 'disabled ? -1 : (tabIndex === null ? null : tabIndex)',
'[attr.disabled]': 'disabled || null',
'(click)': 'haltDisabledEvents($event)'
}
}] }
];
/** @nocollapse */
NzButtonComponent.ctorParameters = function () { return [
{ type: ElementRef },
{ type: ChangeDetectorRef },
{ type: Renderer2 },
{ type: NzConfigService }
]; };
NzButtonComponent.propDecorators = {
nzIconDirectiveElement: [{ type: ContentChild, args: [NzIconDirective, { read: ElementRef },] }],
nzBlock: [{ type: Input }],
nzGhost: [{ type: Input }],
nzSearch: [{ type: Input }],
nzLoading: [{ type: Input }],
nzDanger: [{ type: Input }],
disabled: [{ type: Input }],
tabIndex: [{ type: Input }],
nzType: [{ type: Input }],
nzShape: [{ type: Input }],
nzSize: [{ type: Input }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzButtonComponent.prototype, "nzBlock", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzButtonComponent.prototype, "nzGhost", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzButtonComponent.prototype, "nzSearch", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzButtonComponent.prototype, "nzLoading", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzButtonComponent.prototype, "nzDanger", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Boolean)
], NzButtonComponent.prototype, "disabled", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME),
__metadata("design:type", String)
], NzButtonComponent.prototype, "nzSize", void 0);
return NzButtonComponent;
}());
export { NzButtonComponent };
if (false) {
/** @type {?} */
NzButtonComponent.ngAcceptInputType_nzBlock;
/** @type {?} */
NzButtonComponent.ngAcceptInputType_nzGhost;
/** @type {?} */
NzButtonComponent.ngAcceptInputType_nzSearch;
/** @type {?} */
NzButtonComponent.ngAcceptInputType_nzLoading;
/** @type {?} */
NzButtonComponent.ngAcceptInputType_nzDanger;
/** @type {?} */
NzButtonComponent.ngAcceptInputType_disabled;
/** @type {?} */
NzButtonComponent.prototype.nzIconDirectiveElement;
/** @type {?} */
NzButtonComponent.prototype.nzBlock;
/** @type {?} */
NzButtonComponent.prototype.nzGhost;
/** @type {?} */
NzButtonComponent.prototype.nzSearch;
/** @type {?} */
NzButtonComponent.prototype.nzLoading;
/** @type {?} */
NzButtonComponent.prototype.nzDanger;
/** @type {?} */
NzButtonComponent.prototype.disabled;
/** @type {?} */
NzButtonComponent.prototype.tabIndex;
/** @type {?} */
NzButtonComponent.prototype.nzType;
/** @type {?} */
NzButtonComponent.prototype.nzShape;
/** @type {?} */
NzButtonComponent.prototype.nzSize;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.destroy$;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.loading$;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.elementRef;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.cdr;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.renderer;
/** @type {?} */
NzButtonComponent.prototype.nzConfigService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvYnV0dG9uLyIsInNvdXJjZXMiOlsiYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsRUFFVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBTXhELHdCQUF3QixHQUFHLFFBQVE7QUFFekM7SUFpRkUsMkJBQ1UsVUFBc0IsRUFDdEIsR0FBc0IsRUFDdEIsUUFBbUIsRUFDcEIsZUFBZ0M7UUFKekMsaUJBWUM7UUFYUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBOUNoQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQyxhQUFRLEdBQTJCLElBQUksQ0FB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OztJQUNsRCxvQ0FBa0Q7O0lBQ2xELHFDQUFtRDs7SUFDbkQsc0NBQW9EOztJQUNwRCxxQ0FBbUQ7O0lBQ25ELHFDQUFtRDs7SUFDbkQscUNBQWlEOztJQUNqRCxtQ0FBcUM7O0lBQ3JDLG9DQUF1Qzs7SUFDdkMsbUNBQWdGOzs7OztJQUNoRixxQ0FBdUM7Ozs7O0lBQ3ZDLHFDQUEwQzs7Ozs7SUFnQ3hDLHVDQUE4Qjs7Ozs7SUFDOUIsZ0NBQThCOzs7OztJQUM5QixxQ0FBMkI7O0lBQzNCLDRDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOekNvbmZpZ1NlcnZpY2UsIFdpdGhDb25maWcgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5cbmltcG9ydCB7IE56SWNvbkRpcmVjdGl2ZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBOekJ1dHRvblR5cGUgPSAncHJpbWFyeScgfCAnZGVmYXVsdCcgfCAnZGFzaGVkJyB8ICdkYW5nZXInIHwgJ2xpbmsnIHwgbnVsbDtcbmV4cG9ydCB0eXBlIE56QnV0dG9uU2hhcGUgPSAnY2lyY2xlJyB8ICdyb3VuZCcgfCBudWxsO1xuZXhwb3J0IHR5cGUgTnpCdXR0b25TaXplID0gJ2xhcmdlJyB8ICdkZWZhdWx0JyB8ICdzbWFsbCc7XG5cbmNvbnN0IE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSA9ICdidXR0b24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdidXR0b25bbnotYnV0dG9uXSwgYVtuei1idXR0b25dJyxcbiAgZXhwb3J0QXM6ICduekJ1dHRvbicsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aSBuei1pY29uIG56VHlwZT1cImxvYWRpbmdcIiAqbmdJZj1cIm56TG9hZGluZ1wiPjwvaT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmFudC1idG5dJzogYHRydWVgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1wcmltYXJ5XSc6IGBuelR5cGUgPT09ICdwcmltYXJ5J2AsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLWRhc2hlZF0nOiBgbnpUeXBlID09PSAnZGFzaGVkJ2AsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLWxpbmtdJzogYG56VHlwZSA9PT0gJ2xpbmsnYCxcbiAgICAnW2NsYXNzLmFudC1idG4tZGFuZ2VyXSc6IGBuelR5cGUgPT09ICdkYW5nZXInYCxcbiAgICAnW2NsYXNzLmFudC1idG4tY2lyY2xlXSc6IGBuelNoYXBlID09PSAnY2lyY2xlJ2AsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLXJvdW5kXSc6IGBuelNoYXBlID09PSAncm91bmQnYCxcbiAgICAnW2NsYXNzLmFudC1idG4tbGddJzogYG56U2l6ZSA9PT0gJ2xhcmdlJ2AsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLXNtXSc6IGBuelNpemUgPT09ICdzbWFsbCdgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1kYW5nZXJvdXNdJzogYG56RGFuZ2VyYCxcbiAgICAnW2NsYXNzLmFudC1idG4tbG9hZGluZ10nOiBgbnpMb2FkaW5nYCxcbiAgICAnW2NsYXNzLmFudC1idG4tYmFja2dyb3VuZC1naG9zdF0nOiBgbnpHaG9zdGAsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLWJsb2NrXSc6IGBuekJsb2NrYCxcbiAgICAnW2NsYXNzLmFudC1pbnB1dC1zZWFyY2gtYnV0dG9uXSc6IGBuelNlYXJjaGAsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICdkaXNhYmxlZCA/IC0xIDogKHRhYkluZGV4ID09PSBudWxsID8gbnVsbCA6IHRhYkluZGV4KScsXG4gICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAnKGNsaWNrKSc6ICdoYWx0RGlzYWJsZWRFdmVudHMoJGV2ZW50KSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBOekJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256QmxvY2s6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256R2hvc3Q6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2VhcmNoOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekxvYWRpbmc6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256RGFuZ2VyOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuXG4gIEBDb250ZW50Q2hpbGQoTnpJY29uRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbnpJY29uRGlyZWN0aXZlRWxlbWVudCE6IEVsZW1lbnRSZWY7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekJsb2NrOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekdob3N0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekRhbmdlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGFiSW5kZXg6IG51bWJlciB8IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuelR5cGU6IE56QnV0dG9uVHlwZSA9IG51bGw7XG4gIEBJbnB1dCgpIG56U2hhcGU6IE56QnV0dG9uU2hhcGUgPSBudWxsO1xuICBASW5wdXQoKSBAV2l0aENvbmZpZyhOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUpIG56U2l6ZTogTnpCdXR0b25TaXplID0gJ2RlZmF1bHQnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBsb2FkaW5nJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgaGFsdERpc2FibGVkRXZlbnRzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgaW5zZXJ0U3Bhbihub2RlczogTm9kZUxpc3QsIHJlbmRlcmVyOiBSZW5kZXJlcjIpOiB2b2lkIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgY29uc3Qgc3BhbiA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gcmVuZGVyZXIucGFyZW50Tm9kZShub2RlKTtcbiAgICAgICAgcmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHBhcmVudCwgc3Bhbiwgbm9kZSk7XG4gICAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHNwYW4sIG5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXNzZXJ0SWNvbk9ubHkoZWxlbWVudDogSFRNTEJ1dHRvbkVsZW1lbnQsIHJlbmRlcmVyOiBSZW5kZXJlcjIpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0T2ZOb2RlID0gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpO1xuICAgIGNvbnN0IGljb25Db3VudCA9IGxpc3RPZk5vZGUuZmlsdGVyKG5vZGUgPT4gbm9kZS5ub2RlTmFtZSA9PT0gJ0knKS5sZW5ndGg7XG4gICAgY29uc3Qgbm9UZXh0ID0gbGlzdE9mTm9kZS5ldmVyeShub2RlID0+IG5vZGUubm9kZU5hbWUgIT09ICcjdGV4dCcpO1xuICAgIGNvbnN0IG5vU3BhbiA9IGxpc3RPZk5vZGUuZXZlcnkobm9kZSA9PiBub2RlLm5vZGVOYW1lICE9PSAnU1BBTicpO1xuICAgIGNvbnN0IGlzSWNvbk9ubHkgPSBub1NwYW4gJiYgbm9UZXh0ICYmIGljb25Db3VudCA9PT0gMTtcbiAgICBpZiAoaXNJY29uT25seSkge1xuICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudCwgJ2FudC1idG4taWNvbi1vbmx5Jyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIG56Q29uZmlnU2VydmljZTogTnpDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubnpDb25maWdTZXJ2aWNlXG4gICAgICAuZ2V0Q29uZmlnQ2hhbmdlRXZlbnRGb3JDb21wb25lbnQoTlpfQ09ORklHX0NPTVBPTkVOVF9OQU1FKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBuekxvYWRpbmcgfSA9IGNoYW5nZXM7XG4gICAgaWYgKG56TG9hZGluZykge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRoaXMubnpMb2FkaW5nKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hc3NlcnRJY29uT25seSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlcik7XG4gICAgdGhpcy5pbnNlcnRTcGFuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMsIHRoaXMucmVuZGVyZXIpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5uekxvYWRpbmcpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLm56SWNvbkRpcmVjdGl2ZUVsZW1lbnQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUobG9hZGluZyA9PiB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLm56SWNvbkRpcmVjdGl2ZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKG5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=