ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
285 lines • 24.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, HostBinding, Inject, Input, NgZone, Optional, QueryList, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';
import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
import { NzUpdateHostClassService } from '../core/services/update-host-class.service';
import { isEmpty } from '../core/util/check';
import { InputBoolean } from '../core/util/convert';
import { findFirstNotEmptyNode, findLastNotEmptyNode } from '../core/util/dom';
import { NzWaveDirective, NZ_WAVE_GLOBAL_CONFIG } from '../core/wave/nz-wave.directive';
import { NzIconDirective } from '../icon/nz-icon.directive';
var NzButtonComponent = /** @class */ (function () {
function NzButtonComponent(elementRef, cdr, renderer, nzUpdateHostClassService, ngZone, waveConfig, animationType) {
this.elementRef = elementRef;
this.cdr = cdr;
this.renderer = renderer;
this.nzUpdateHostClassService = nzUpdateHostClassService;
this.ngZone = ngZone;
this.waveConfig = waveConfig;
this.animationType = animationType;
this.el = this.elementRef.nativeElement;
this.iconOnly = false;
this.nzWave = new NzWaveDirective(this.ngZone, this.elementRef, this.waveConfig, this.animationType);
this.nzBlock = false;
this.nzGhost = false;
this.nzSearch = false;
this.nzLoading = false;
this.nzType = 'default';
this.nzShape = null;
this.nzSize = 'default';
}
/** temp solution since no method add classMap to host https://github.com/angular/angular/issues/7289 */
/**
* temp solution since no method add classMap to host https://github.com/angular/angular/issues/7289
* @return {?}
*/
NzButtonComponent.prototype.setClassMap = /**
* temp solution since no method add classMap to host https://github.com/angular/angular/issues/7289
* @return {?}
*/
function () {
var _a;
/** @type {?} */
var prefixCls = 'ant-btn';
/** @type {?} */
var sizeMap = { large: 'lg', small: 'sm' };
this.nzUpdateHostClassService.updateHostClass(this.el, (_a = {},
_a["" + prefixCls] = true,
_a[prefixCls + "-" + this.nzType] = this.nzType,
_a[prefixCls + "-" + this.nzShape] = this.nzShape,
_a[prefixCls + "-" + sizeMap[this.nzSize]] = sizeMap[this.nzSize],
_a[prefixCls + "-loading"] = this.nzLoading,
_a[prefixCls + "-icon-only"] = this.iconOnly,
_a[prefixCls + "-background-ghost"] = this.nzGhost,
_a[prefixCls + "-block"] = this.nzBlock,
_a["ant-input-search-button"] = this.nzSearch,
_a));
};
/**
* @param {?} value
* @return {?}
*/
NzButtonComponent.prototype.updateIconDisplay = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.iconElement) {
this.renderer.setStyle(this.iconElement, 'display', value ? 'none' : 'inline-block');
}
};
/**
* @return {?}
*/
NzButtonComponent.prototype.checkContent = /**
* @return {?}
*/
function () {
/** @type {?} */
var hasIcon = this.listOfIconElement && this.listOfIconElement.length;
if (hasIcon) {
this.moveIcon();
}
this.renderer.removeStyle(this.contentElement.nativeElement, 'display');
/** https://github.com/angular/angular/issues/12530 **/
if (isEmpty(this.contentElement.nativeElement)) {
this.renderer.setStyle(this.contentElement.nativeElement, 'display', 'none');
this.iconOnly = !!hasIcon;
}
else {
this.renderer.removeStyle(this.contentElement.nativeElement, 'display');
this.iconOnly = false;
}
this.setClassMap();
this.updateIconDisplay(this.nzLoading);
this.cdr.detectChanges();
};
/**
* @return {?}
*/
NzButtonComponent.prototype.moveIcon = /**
* @return {?}
*/
function () {
if (this.listOfIconElement && this.listOfIconElement.length) {
/** @type {?} */
var firstChildElement = findFirstNotEmptyNode(this.contentElement.nativeElement);
/** @type {?} */
var lastChildElement = findLastNotEmptyNode(this.contentElement.nativeElement);
if (firstChildElement && (firstChildElement === this.listOfIconElement.first.nativeElement)) {
this.renderer.insertBefore(this.el, firstChildElement, this.contentElement.nativeElement);
this.iconElement = (/** @type {?} */ (firstChildElement));
}
else if (lastChildElement && (lastChildElement === this.listOfIconElement.last.nativeElement)) {
this.renderer.appendChild(this.el, lastChildElement);
}
}
};
/**
* @return {?}
*/
NzButtonComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
this.checkContent();
};
/**
* @return {?}
*/
NzButtonComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.setClassMap();
this.nzWave.ngOnInit();
};
/**
* @return {?}
*/
NzButtonComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.nzWave.ngOnDestroy();
};
/**
* @param {?} changes
* @return {?}
*/
NzButtonComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes.nzBlock || changes.nzGhost || changes.nzSearch || changes.nzType || changes.nzShape || changes.nzSize || changes.nzLoading) {
this.setClassMap();
}
if (changes.nzLoading) {
this.updateIconDisplay(this.nzLoading);
}
};
NzButtonComponent.decorators = [
{ type: Component, args: [{
selector: '[nz-button]',
providers: [NzUpdateHostClassService],
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
template: "<i nz-icon type=\"loading\" *ngIf=\"nzLoading\"></i>\n<span (cdkObserveContent)=\"checkContent()\" #contentElement><ng-content></ng-content></span>"
}] }
];
/** @nocollapse */
NzButtonComponent.ctorParameters = function () { return [
{ type: ElementRef },
{ type: ChangeDetectorRef },
{ type: Renderer2 },
{ type: NzUpdateHostClassService },
{ type: NgZone },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NZ_WAVE_GLOBAL_CONFIG,] }] },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
]; };
NzButtonComponent.propDecorators = {
contentElement: [{ type: ViewChild, args: ['contentElement',] }],
listOfIconElement: [{ type: ContentChildren, args: [NzIconDirective, { read: ElementRef },] }],
nzWave: [{ type: HostBinding, args: ['attr.nz-wave',] }],
nzBlock: [{ type: Input }],
nzGhost: [{ type: Input }],
nzSearch: [{ type: Input }],
nzLoading: [{ type: Input }],
nzType: [{ type: Input }],
nzShape: [{ type: Input }],
nzSize: [{ type: Input }]
};
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzButtonComponent.prototype, "nzBlock", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzButtonComponent.prototype, "nzGhost", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzButtonComponent.prototype, "nzSearch", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzButtonComponent.prototype, "nzLoading", void 0);
return NzButtonComponent;
}());
export { NzButtonComponent };
if (false) {
/** @type {?} */
NzButtonComponent.prototype.el;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.iconElement;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.iconOnly;
/** @type {?} */
NzButtonComponent.prototype.contentElement;
/** @type {?} */
NzButtonComponent.prototype.listOfIconElement;
/** @type {?} */
NzButtonComponent.prototype.nzWave;
/** @type {?} */
NzButtonComponent.prototype.nzBlock;
/** @type {?} */
NzButtonComponent.prototype.nzGhost;
/** @type {?} */
NzButtonComponent.prototype.nzSearch;
/** @type {?} */
NzButtonComponent.prototype.nzLoading;
/** @type {?} */
NzButtonComponent.prototype.nzType;
/** @type {?} */
NzButtonComponent.prototype.nzShape;
/** @type {?} */
NzButtonComponent.prototype.nzSize;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.elementRef;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.cdr;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.renderer;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.nzUpdateHostClassService;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.ngZone;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.waveConfig;
/**
* @type {?}
* @private
*/
NzButtonComponent.prototype.animationType;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvIiwic291cmNlcyI6WyJidXR0b24vbnotYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFJTixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFFVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0UsT0FBTyxFQUFnQixlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLNUQ7SUE4RUUsMkJBQW9CLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLHdCQUFrRCxFQUNsRCxNQUFjLEVBQzZCLFVBQXdCLEVBQ3hCLGFBQXFCO1FBTmhFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFdBQU0sR0FBTixNQUFNLENBQVE7UUFD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OzBCQUNMLEtBQUs7MkJBQ0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzt5QkFDTCxLQUFLOztJQU5tQjtRQUFmLFlBQVksRUFBRTs7c0RBQWlCO0lBQ2hCO1FBQWYsWUFBWSxFQUFFOztzREFBaUI7SUFDaEI7UUFBZixZQUFZLEVBQUU7O3VEQUFrQjtJQUNqQjtRQUFmLFlBQVksRUFBRTs7d0RBQW1CO0lBMEY3Qyx3QkFBQztDQUFBLEFBNUdELElBNEdDO1NBcEdZLGlCQUFpQjs7O0lBQzVCLCtCQUF5RDs7Ozs7SUFDekQsd0NBQWlDOzs7OztJQUNqQyxxQ0FBeUI7O0lBQ3pCLDJDQUF3RDs7SUFDeEQsOENBQWlHOztJQUNqRyxtQ0FBNkg7O0lBQzdILG9DQUF5Qzs7SUFDekMsb0NBQXlDOztJQUN6QyxxQ0FBMEM7O0lBQzFDLHNDQUEyQzs7SUFDM0MsbUNBQTBDOztJQUMxQyxvQ0FBdUM7O0lBQ3ZDLG1DQUEyQzs7Ozs7SUF5RC9CLHVDQUE4Qjs7Ozs7SUFDOUIsZ0NBQThCOzs7OztJQUM5QixxQ0FBMkI7Ozs7O0lBQzNCLHFEQUEwRDs7Ozs7SUFDMUQsbUNBQXNCOzs7OztJQUN0Qix1Q0FBMkU7Ozs7O0lBQzNFLDBDQUF3RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFOSU1BVElPTl9NT0RVTEVfVFlQRSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7IE56VXBkYXRlSG9zdENsYXNzU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvdXBkYXRlLWhvc3QtY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBOelNpemVMRFNUeXBlIH0gZnJvbSAnLi4vY29yZS90eXBlcy9zaXplJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICcuLi9jb3JlL3V0aWwvY2hlY2snO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vY29yZS91dGlsL2NvbnZlcnQnO1xuaW1wb3J0IHsgZmluZEZpcnN0Tm90RW1wdHlOb2RlLCBmaW5kTGFzdE5vdEVtcHR5Tm9kZSB9IGZyb20gJy4uL2NvcmUvdXRpbC9kb20nO1xuaW1wb3J0IHsgTnpXYXZlQ29uZmlnLCBOeldhdmVEaXJlY3RpdmUsIE5aX1dBVkVfR0xPQkFMX0NPTkZJRyB9IGZyb20gJy4uL2NvcmUvd2F2ZS9uei13YXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOekljb25EaXJlY3RpdmUgfSBmcm9tICcuLi9pY29uL256LWljb24uZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgTnpCdXR0b25UeXBlID0gJ3ByaW1hcnknIHwgJ2Rhc2hlZCcgfCAnZGFuZ2VyJyB8ICdkZWZhdWx0JztcbmV4cG9ydCB0eXBlIE56QnV0dG9uU2hhcGUgPSAnY2lyY2xlJyB8ICdyb3VuZCcgfCBudWxsIDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yICAgICAgICAgICA6ICdbbnotYnV0dG9uXScsXG4gIHByb3ZpZGVycyAgICAgICAgICA6IFsgTnpVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIF0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb24gICAgOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb24gICAgICA6IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsICAgICAgICA6ICcuL256LWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTnpCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIHByaXZhdGUgaWNvbkVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGljb25Pbmx5ID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRFbGVtZW50JykgY29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBDb250ZW50Q2hpbGRyZW4oTnpJY29uRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbGlzdE9mSWNvbkVsZW1lbnQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm56LXdhdmUnKSBueldhdmUgPSBuZXcgTnpXYXZlRGlyZWN0aXZlKHRoaXMubmdab25lLCB0aGlzLmVsZW1lbnRSZWYsIHRoaXMud2F2ZUNvbmZpZywgdGhpcy5hbmltYXRpb25UeXBlKTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56QmxvY2sgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56R2hvc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2VhcmNoID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgbnpUeXBlOiBOekJ1dHRvblR5cGUgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIG56U2hhcGU6IE56QnV0dG9uU2hhcGUgPSBudWxsO1xuICBASW5wdXQoKSBuelNpemU6IE56U2l6ZUxEU1R5cGUgPSAnZGVmYXVsdCc7XG5cbiAgLyoqIHRlbXAgc29sdXRpb24gc2luY2Ugbm8gbWV0aG9kIGFkZCBjbGFzc01hcCB0byBob3N0IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzcyODkgKi9cbiAgc2V0Q2xhc3NNYXAoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlZml4Q2xzID0gJ2FudC1idG4nO1xuICAgIGNvbnN0IHNpemVNYXAgPSB7IGxhcmdlOiAnbGcnLCBzbWFsbDogJ3NtJyB9O1xuICAgIHRoaXMubnpVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlLnVwZGF0ZUhvc3RDbGFzcyh0aGlzLmVsLCB7XG4gICAgICBbIGAke3ByZWZpeENsc31gIF0gICAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSxcbiAgICAgIFsgYCR7cHJlZml4Q2xzfS0ke3RoaXMubnpUeXBlfWAgXSAgICAgICAgICAgOiB0aGlzLm56VHlwZSxcbiAgICAgIFsgYCR7cHJlZml4Q2xzfS0ke3RoaXMubnpTaGFwZX1gIF0gICAgICAgICAgOiB0aGlzLm56U2hhcGUsXG4gICAgICBbIGAke3ByZWZpeENsc30tJHtzaXplTWFwWyB0aGlzLm56U2l6ZSBdfWAgXTogc2l6ZU1hcFsgdGhpcy5uelNpemUgXSxcbiAgICAgIFsgYCR7cHJlZml4Q2xzfS1sb2FkaW5nYCBdICAgICAgICAgICAgICAgICAgOiB0aGlzLm56TG9hZGluZyxcbiAgICAgIFsgYCR7cHJlZml4Q2xzfS1pY29uLW9ubHlgIF0gICAgICAgICAgICAgICAgOiB0aGlzLmljb25Pbmx5LFxuICAgICAgWyBgJHtwcmVmaXhDbHN9LWJhY2tncm91bmQtZ2hvc3RgIF0gICAgICAgICA6IHRoaXMubnpHaG9zdCxcbiAgICAgIFsgYCR7cHJlZml4Q2xzfS1ibG9ja2AgXSAgICAgICAgICAgICAgICAgICAgOiB0aGlzLm56QmxvY2ssXG4gICAgICBbIGBhbnQtaW5wdXQtc2VhcmNoLWJ1dHRvbmAgXSAgICAgICAgICAgICAgIDogdGhpcy5uelNlYXJjaFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlSWNvbkRpc3BsYXkodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pY29uRWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmljb25FbGVtZW50LCAnZGlzcGxheScsIHZhbHVlID8gJ25vbmUnIDogJ2lubGluZS1ibG9jaycpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQ29udGVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNJY29uID0gdGhpcy5saXN0T2ZJY29uRWxlbWVudCAmJiB0aGlzLmxpc3RPZkljb25FbGVtZW50Lmxlbmd0aDtcbiAgICBpZiAoaGFzSWNvbikge1xuICAgICAgdGhpcy5tb3ZlSWNvbigpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknKTtcbiAgICAvKiogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTI1MzAgKiovXG4gICAgaWYgKGlzRW1wdHkodGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgIHRoaXMuaWNvbk9ubHkgPSAhIWhhc0ljb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScpO1xuICAgICAgdGhpcy5pY29uT25seSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgdGhpcy51cGRhdGVJY29uRGlzcGxheSh0aGlzLm56TG9hZGluZyk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbW92ZUljb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdE9mSWNvbkVsZW1lbnQgJiYgdGhpcy5saXN0T2ZJY29uRWxlbWVudC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q2hpbGRFbGVtZW50ID0gZmluZEZpcnN0Tm90RW1wdHlOb2RlKHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCBsYXN0Q2hpbGRFbGVtZW50ID0gZmluZExhc3ROb3RFbXB0eU5vZGUodGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIGlmIChmaXJzdENoaWxkRWxlbWVudCAmJiAoZmlyc3RDaGlsZEVsZW1lbnQgPT09IHRoaXMubGlzdE9mSWNvbkVsZW1lbnQuZmlyc3QubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUodGhpcy5lbCwgZmlyc3RDaGlsZEVsZW1lbnQsIHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuaWNvbkVsZW1lbnQgPSBmaXJzdENoaWxkRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIH0gZWxzZSBpZiAobGFzdENoaWxkRWxlbWVudCAmJiAobGFzdENoaWxkRWxlbWVudCA9PT0gdGhpcy5saXN0T2ZJY29uRWxlbWVudC5sYXN0Lm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbCwgbGFzdENoaWxkRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBuelVwZGF0ZUhvc3RDbGFzc1NlcnZpY2U6IE56VXBkYXRlSG9zdENsYXNzU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOWl9XQVZFX0dMT0JBTF9DT05GSUcpIHByaXZhdGUgd2F2ZUNvbmZpZzogTnpXYXZlQ29uZmlnLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFOSU1BVElPTl9NT0RVTEVfVFlQRSkgcHJpdmF0ZSBhbmltYXRpb25UeXBlOiBzdHJpbmcpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrQ29udGVudCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICAgIHRoaXMubnpXYXZlLm5nT25Jbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm56V2F2ZS5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm56QmxvY2sgfHwgY2hhbmdlcy5uekdob3N0IHx8IGNoYW5nZXMubnpTZWFyY2ggfHwgY2hhbmdlcy5uelR5cGUgfHwgY2hhbmdlcy5uelNoYXBlIHx8IGNoYW5nZXMubnpTaXplIHx8IGNoYW5nZXMubnpMb2FkaW5nKSB7XG4gICAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm56TG9hZGluZykge1xuICAgICAgdGhpcy51cGRhdGVJY29uRGlzcGxheSh0aGlzLm56TG9hZGluZyk7XG4gICAgfVxuICB9XG59XG4iXX0=