ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
301 lines • 22.9 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.nzType = null;
this.nzShape = null;
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 {?} 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"
}
}] }
];
/** @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 }],
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([
WithConfig(NZ_CONFIG_COMPONENT_NAME, 'default'),
__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.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.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvYnV0dG9uLyIsInNvdXJjZXMiOlsiYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsRUFFVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBTXhELHdCQUF3QixHQUFHLFFBQVE7QUFFekM7SUFvRUUsMkJBQ1UsVUFBc0IsRUFDdEIsR0FBc0IsRUFDdEIsUUFBbUIsRUFDcEIsZUFBZ0M7UUFKekMsaUJBWUM7UUFYUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBckNoQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUMsV0FBTSxHQUFpQixJQUFJLENBQUM7UUFDNUIsWUFBTyxHQUFrQixJQUFJLENB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QzlDO2lCQUNGOzs7O2dCQWhEQyxVQUFVO2dCQUhWLGlCQUFpQjtnQkFPakIsU0FBUztnQkFJRixlQUFlOzs7eUNBZ0RyQixZQUFZLFNBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTswQkFDbEQsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7NEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzt5QkFDTCxLQUFLOztJQVBtQjtRQUFmLFlBQVksRUFBRTs7c0RBQTBCO0lBQ3pCO1FBQWYsWUFBWSxFQUFFOztzREFBMEI7SUFDekI7UUFBZixZQUFZLEVBQUU7O3VEQUEyQjtJQUMxQjtRQUFmLFlBQVksRUFBRTs7d0RBQTRCO0lBQzNCO1FBQWYsWUFBWSxFQUFFOzt1REFBMkI7SUFHTztRQUFoRCxVQUFVLENBQUMsd0JBQXdCLEVBQUUsU0FBUyxDQUFDOztxREFBc0I7SUF5RWpGLHdCQUFDO0NBQUEsQUFuSEQsSUFtSEM7U0F4RlksaUJBQWlCOzs7SUFDNUIsNENBQStDOztJQUMvQyw0Q0FBK0M7O0lBQy9DLDZDQUFnRDs7SUFDaEQsOENBQWlEOztJQUNqRCw2Q0FBZ0Q7O0lBRWhELG1EQUF3Rjs7SUFDeEYsb0NBQWtEOztJQUNsRCxvQ0FBa0Q7O0lBQ2xELHFDQUFtRDs7SUFDbkQsc0NBQW9EOztJQUNwRCxxQ0FBbUQ7O0lBQ25ELG1DQUFxQzs7SUFDckMsb0NBQXVDOztJQUN2QyxtQ0FBK0U7Ozs7O0lBQy9FLHFDQUF1Qzs7Ozs7SUFDdkMscUNBQTBDOzs7OztJQXlCeEMsdUNBQThCOzs7OztJQUM5QixnQ0FBOEI7Ozs7O0lBQzlCLHFDQUEyQjs7SUFDM0IsNENBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE56Q29uZmlnU2VydmljZSwgV2l0aENvbmZpZyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcblxuaW1wb3J0IHsgTnpJY29uRGlyZWN0aXZlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIE56QnV0dG9uVHlwZSA9ICdwcmltYXJ5JyB8ICdkZWZhdWx0JyB8ICdkYXNoZWQnIHwgJ2RhbmdlcicgfCAnbGluaycgfCBudWxsO1xuZXhwb3J0IHR5cGUgTnpCdXR0b25TaGFwZSA9ICdjaXJjbGUnIHwgJ3JvdW5kJyB8IG51bGw7XG5leHBvcnQgdHlwZSBOekJ1dHRvblNpemUgPSAnbGFyZ2UnIHwgJ2RlZmF1bHQnIHwgJ3NtYWxsJztcblxuY29uc3QgTlpfQ09ORklHX0NPTVBPTkVOVF9OQU1FID0gJ2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2J1dHRvbltuei1idXR0b25dLCBhW256LWJ1dHRvbl0nLFxuICBleHBvcnRBczogJ256QnV0dG9uJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpIG56LWljb24gbnpUeXBlPVwibG9hZGluZ1wiICpuZ0lmPVwibnpMb2FkaW5nXCI+PC9pPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LWJ0bl0nOiBgdHJ1ZWAsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLXByaW1hcnldJzogYG56VHlwZSA9PT0gJ3ByaW1hcnknYCxcbiAgICAnW2NsYXNzLmFudC1idG4tZGFzaGVkXSc6IGBuelR5cGUgPT09ICdkYXNoZWQnYCxcbiAgICAnW2NsYXNzLmFudC1idG4tbGlua10nOiBgbnpUeXBlID09PSAnbGluaydgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1kYW5nZXJdJzogYG56VHlwZSA9PT0gJ2RhbmdlcidgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1jaXJjbGVdJzogYG56U2hhcGUgPT09ICdjaXJjbGUnYCxcbiAgICAnW2NsYXNzLmFudC1idG4tcm91bmRdJzogYG56U2hhcGUgPT09ICdyb3VuZCdgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1sZ10nOiBgbnpTaXplID09PSAnbGFyZ2UnYCxcbiAgICAnW2NsYXNzLmFudC1idG4tc21dJzogYG56U2l6ZSA9PT0gJ3NtYWxsJ2AsXG4gICAgJ1tjbGFzcy5hbnQtYnRuLWRhbmdlcm91c10nOiBgbnpEYW5nZXJgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1sb2FkaW5nXSc6IGBuekxvYWRpbmdgLFxuICAgICdbY2xhc3MuYW50LWJ0bi1iYWNrZ3JvdW5kLWdob3N0XSc6IGBuekdob3N0YCxcbiAgICAnW2NsYXNzLmFudC1idG4tYmxvY2tdJzogYG56QmxvY2tgLFxuICAgICdbY2xhc3MuYW50LWlucHV0LXNlYXJjaC1idXR0b25dJzogYG56U2VhcmNoYFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIE56QnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpCbG9jazogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpHaG9zdDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpTZWFyY2g6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256TG9hZGluZzogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpEYW5nZXI6IEJvb2xlYW5JbnB1dDtcblxuICBAQ29udGVudENoaWxkKE56SWNvbkRpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pIG56SWNvbkRpcmVjdGl2ZUVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekJsb2NrOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekdob3N0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekRhbmdlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBuelR5cGU6IE56QnV0dG9uVHlwZSA9IG51bGw7XG4gIEBJbnB1dCgpIG56U2hhcGU6IE56QnV0dG9uU2hhcGUgPSBudWxsO1xuICBASW5wdXQoKSBAV2l0aENvbmZpZyhOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUsICdkZWZhdWx0JykgbnpTaXplOiBOekJ1dHRvblNpemU7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGxvYWRpbmckID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBpbnNlcnRTcGFuKG5vZGVzOiBOb2RlTGlzdCwgcmVuZGVyZXI6IFJlbmRlcmVyMik6IHZvaWQge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PT0gJyN0ZXh0Jykge1xuICAgICAgICBjb25zdCBzcGFuID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBjb25zdCBwYXJlbnQgPSByZW5kZXJlci5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICByZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50LCBzcGFuLCBub2RlKTtcbiAgICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoc3Bhbiwgbm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3NlcnRJY29uT25seShlbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudCwgcmVuZGVyZXI6IFJlbmRlcmVyMik6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RPZk5vZGUgPSBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGROb2Rlcyk7XG4gICAgY29uc3QgaWNvbkNvdW50ID0gbGlzdE9mTm9kZS5maWx0ZXIobm9kZSA9PiBub2RlLm5vZGVOYW1lID09PSAnSScpLmxlbmd0aDtcbiAgICBjb25zdCBub1RleHQgPSBsaXN0T2ZOb2RlLmV2ZXJ5KG5vZGUgPT4gbm9kZS5ub2RlTmFtZSAhPT0gJyN0ZXh0Jyk7XG4gICAgY29uc3Qgbm9TcGFuID0gbGlzdE9mTm9kZS5ldmVyeShub2RlID0+IG5vZGUubm9kZU5hbWUgIT09ICdTUEFOJyk7XG4gICAgY29uc3QgaXNJY29uT25seSA9IG5vU3BhbiAmJiBub1RleHQgJiYgaWNvbkNvdW50ID09PSAxO1xuICAgIGlmIChpc0ljb25Pbmx5KSB7XG4gICAgICByZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAnYW50LWJ0bi1pY29uLW9ubHknKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgbnpDb25maWdTZXJ2aWNlOiBOekNvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5uekNvbmZpZ1NlcnZpY2VcbiAgICAgIC5nZXRDb25maWdDaGFuZ2VFdmVudEZvckNvbXBvbmVudChOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IG56TG9hZGluZyB9ID0gY2hhbmdlcztcbiAgICBpZiAobnpMb2FkaW5nKSB7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQodGhpcy5uekxvYWRpbmcpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2VydEljb25Pbmx5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnJlbmRlcmVyKTtcbiAgICB0aGlzLmluc2VydFNwYW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcywgdGhpcy5yZW5kZXJlcik7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLm56TG9hZGluZyksXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMubnpJY29uRGlyZWN0aXZlRWxlbWVudCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShsb2FkaW5nID0+IHtcbiAgICAgICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMubnpJY29uRGlyZWN0aXZlRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAobG9hZGluZykge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==