UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

455 lines 30.7 kB
/** * @fileoverview added by tsickle * Generated from: modal.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata, __rest } 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, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core'; import { NzConfigService, WithConfig } from 'ng-zorro-antd/core/config'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { NzModalFooterDirective } from './modal-footer.directive'; import { NzModalService } from './modal.service'; import { getConfigFromComponent } from './utils'; /** @type {?} */ var NZ_CONFIG_COMPONENT_NAME = 'modal'; /** * @template T, R */ var NzModalComponent = /** @class */ (function () { function NzModalComponent(nzConfigService, cdr, modal, viewContainerRef) { this.nzConfigService = nzConfigService; this.cdr = cdr; this.modal = modal; this.viewContainerRef = viewContainerRef; this.nzVisible = false; this.nzClosable = true; this.nzOkLoading = false; this.nzOkDisabled = false; this.nzCancelDisabled = false; this.nzCancelLoading = false; this.nzKeyboard = true; this.nzNoAnimation = false; this.nzZIndex = 1000; this.nzWidth = 520; this.nzCloseIcon = 'close'; this.nzOkType = 'primary'; this.nzIconType = 'question-circle'; // Confirm Modal ONLY // Confirm Modal ONLY this.nzModalType = 'default'; this.nzOnOk = new EventEmitter(); this.nzOnCancel = new EventEmitter(); this.nzAfterOpen = new EventEmitter(); this.nzAfterClose = new EventEmitter(); this.nzVisibleChange = new EventEmitter(); this.modalRef = null; } Object.defineProperty(NzModalComponent.prototype, "modalFooter", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value.templateRef) { this.setFooterWithTemplate(value.templateRef); } }, enumerable: true, configurable: true }); Object.defineProperty(NzModalComponent.prototype, "afterOpen", { get: /** * @return {?} */ function () { // Observable alias for nzAfterOpen return this.nzAfterOpen.asObservable(); }, enumerable: true, configurable: true }); Object.defineProperty(NzModalComponent.prototype, "afterClose", { get: /** * @return {?} */ function () { // Observable alias for nzAfterClose return this.nzAfterClose.asObservable(); }, enumerable: true, configurable: true }); /** * @return {?} */ NzModalComponent.prototype.open = /** * @return {?} */ function () { if (!this.nzVisible) { this.nzVisible = true; this.nzVisibleChange.emit(true); } if (!this.modalRef) { /** @type {?} */ var config = this.getConfig(); this.modalRef = this.modal.create(config); } }; /** * @param {?=} result * @return {?} */ NzModalComponent.prototype.close = /** * @param {?=} result * @return {?} */ function (result) { if (this.nzVisible) { this.nzVisible = false; this.nzVisibleChange.emit(false); } if (this.modalRef) { this.modalRef.close(result); this.modalRef = null; } }; /** * @param {?=} result * @return {?} */ NzModalComponent.prototype.destroy = /** * @param {?=} result * @return {?} */ function (result) { this.close(result); }; /** * @return {?} */ NzModalComponent.prototype.triggerOk = /** * @return {?} */ function () { var _a; (_a = this.modalRef) === null || _a === void 0 ? void 0 : _a.triggerOk(); }; /** * @return {?} */ NzModalComponent.prototype.triggerCancel = /** * @return {?} */ function () { var _a; (_a = this.modalRef) === null || _a === void 0 ? void 0 : _a.triggerCancel(); }; /** * @return {?} */ NzModalComponent.prototype.getContentComponent = /** * @return {?} */ function () { var _a; return (_a = this.modalRef) === null || _a === void 0 ? void 0 : _a.getContentComponent(); }; /** * @return {?} */ NzModalComponent.prototype.getElement = /** * @return {?} */ function () { var _a; return (_a = this.modalRef) === null || _a === void 0 ? void 0 : _a.getElement(); }; /** * @return {?} */ NzModalComponent.prototype.getModalRef = /** * @return {?} */ function () { return this.modalRef; }; /** * @private * @param {?} templateRef * @return {?} */ NzModalComponent.prototype.setFooterWithTemplate = /** * @private * @param {?} templateRef * @return {?} */ function (templateRef) { var _this = this; this.nzFooter = templateRef; if (this.modalRef) { // If modalRef already created, set the footer in next tick Promise.resolve().then((/** * @return {?} */ function () { (/** @type {?} */ (_this.modalRef)).updateConfig({ nzFooter: _this.nzFooter }); })); } this.cdr.markForCheck(); }; /** * @private * @return {?} */ NzModalComponent.prototype.getConfig = /** * @private * @return {?} */ function () { /** @type {?} */ var componentConfig = getConfigFromComponent(this); componentConfig.nzViewContainerRef = this.viewContainerRef; if (!this.nzContent) { componentConfig.nzContent = this.contentTemplateRef; } return componentConfig; }; /** * @param {?} changes * @return {?} */ NzModalComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var nzVisible = changes.nzVisible, otherChanges = __rest(changes, ["nzVisible"]); if (Object.keys(otherChanges).length && this.modalRef) { this.modalRef.updateConfig(getConfigFromComponent(this)); } if (nzVisible) { if (this.nzVisible) { this.open(); } else { this.close(); } } }; NzModalComponent.decorators = [ { type: Component, args: [{ selector: 'nz-modal', exportAs: 'nzModal', template: " <ng-template><ng-content></ng-content></ng-template> ", changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ NzModalComponent.ctorParameters = function () { return [ { type: NzConfigService }, { type: ChangeDetectorRef }, { type: NzModalService }, { type: ViewContainerRef } ]; }; NzModalComponent.propDecorators = { nzMask: [{ type: Input }], nzMaskClosable: [{ type: Input }], nzVisible: [{ type: Input }], nzClosable: [{ type: Input }], nzOkLoading: [{ type: Input }], nzOkDisabled: [{ type: Input }], nzCancelDisabled: [{ type: Input }], nzCancelLoading: [{ type: Input }], nzKeyboard: [{ type: Input }], nzNoAnimation: [{ type: Input }], nzContent: [{ type: Input }], nzComponentParams: [{ type: Input }], nzFooter: [{ type: Input }], nzGetContainer: [{ type: Input }], nzZIndex: [{ type: Input }], nzWidth: [{ type: Input }], nzWrapClassName: [{ type: Input }], nzClassName: [{ type: Input }], nzStyle: [{ type: Input }], nzTitle: [{ type: Input }], nzCloseIcon: [{ type: Input }], nzMaskStyle: [{ type: Input }], nzBodyStyle: [{ type: Input }], nzOkText: [{ type: Input }], nzCancelText: [{ type: Input }], nzOkType: [{ type: Input }], nzIconType: [{ type: Input }], nzModalType: [{ type: Input }], nzOnOk: [{ type: Input }, { type: Output }], nzOnCancel: [{ type: Input }, { type: Output }], nzAfterOpen: [{ type: Output }], nzAfterClose: [{ type: Output }], nzVisibleChange: [{ type: Output }], contentTemplateRef: [{ type: ViewChild, args: [TemplateRef, { static: true },] }], modalFooter: [{ type: ContentChild, args: [NzModalFooterDirective,] }] }; __decorate([ WithConfig(NZ_CONFIG_COMPONENT_NAME, true), InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzMask", void 0); __decorate([ WithConfig(NZ_CONFIG_COMPONENT_NAME, true), InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzMaskClosable", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzVisible", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzClosable", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzOkLoading", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzOkDisabled", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzCancelDisabled", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzCancelLoading", void 0); __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], NzModalComponent.prototype, "nzKeyboard", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzModalComponent.prototype, "nzNoAnimation", void 0); return NzModalComponent; }()); export { NzModalComponent }; if (false) { /** @type {?} */ NzModalComponent.ngAcceptInputType_nzMask; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzMaskClosable; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzVisible; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzClosable; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzOkLoading; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzOkDisabled; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzCancelDisabled; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzCancelLoading; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzKeyboard; /** @type {?} */ NzModalComponent.ngAcceptInputType_nzNoAnimation; /** @type {?} */ NzModalComponent.prototype.nzMask; /** @type {?} */ NzModalComponent.prototype.nzMaskClosable; /** @type {?} */ NzModalComponent.prototype.nzVisible; /** @type {?} */ NzModalComponent.prototype.nzClosable; /** @type {?} */ NzModalComponent.prototype.nzOkLoading; /** @type {?} */ NzModalComponent.prototype.nzOkDisabled; /** @type {?} */ NzModalComponent.prototype.nzCancelDisabled; /** @type {?} */ NzModalComponent.prototype.nzCancelLoading; /** @type {?} */ NzModalComponent.prototype.nzKeyboard; /** @type {?} */ NzModalComponent.prototype.nzNoAnimation; /** @type {?} */ NzModalComponent.prototype.nzContent; /** @type {?} */ NzModalComponent.prototype.nzComponentParams; /** @type {?} */ NzModalComponent.prototype.nzFooter; /** @type {?} */ NzModalComponent.prototype.nzGetContainer; /** @type {?} */ NzModalComponent.prototype.nzZIndex; /** @type {?} */ NzModalComponent.prototype.nzWidth; /** @type {?} */ NzModalComponent.prototype.nzWrapClassName; /** @type {?} */ NzModalComponent.prototype.nzClassName; /** @type {?} */ NzModalComponent.prototype.nzStyle; /** @type {?} */ NzModalComponent.prototype.nzTitle; /** @type {?} */ NzModalComponent.prototype.nzCloseIcon; /** @type {?} */ NzModalComponent.prototype.nzMaskStyle; /** @type {?} */ NzModalComponent.prototype.nzBodyStyle; /** @type {?} */ NzModalComponent.prototype.nzOkText; /** @type {?} */ NzModalComponent.prototype.nzCancelText; /** @type {?} */ NzModalComponent.prototype.nzOkType; /** @type {?} */ NzModalComponent.prototype.nzIconType; /** @type {?} */ NzModalComponent.prototype.nzModalType; /** @type {?} */ NzModalComponent.prototype.nzOnOk; /** @type {?} */ NzModalComponent.prototype.nzOnCancel; /** @type {?} */ NzModalComponent.prototype.nzAfterOpen; /** @type {?} */ NzModalComponent.prototype.nzAfterClose; /** @type {?} */ NzModalComponent.prototype.nzVisibleChange; /** @type {?} */ NzModalComponent.prototype.contentTemplateRef; /** * @type {?} * @private */ NzModalComponent.prototype.modalRef; /** @type {?} */ NzModalComponent.prototype.nzConfigService; /** * @type {?} * @private */ NzModalComponent.prototype.cdr; /** * @type {?} * @private */ NzModalComponent.prototype.modal; /** * @type {?} * @private */ NzModalComponent.prototype.viewContainerRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC9tb2RhbC8iLCJzb3VyY2VzIjpbIm1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBU0EsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDOztJQUUzQyx3QkFBd0IsR0FBRyxPQUFPOzs7O0FBRXhDO0lBNkVFLDBCQUNTLGVBQWdDLEVBQy9CLEdBQXNCLEVBQ3RCLEtBQXFCLEVBQ3JCLGdCQUFrQztRQUhuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTdEbkIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxlQUFVLEdBQVksSUFB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aUNBQTZCOzs7OztJQUM3Qiw0Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOekJ1dHRvblR5cGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XG5pbXBvcnQgeyBOekNvbmZpZ1NlcnZpY2UsIFdpdGhDb25maWcgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTnpNb2RhbEZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtZm9vdGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOek1vZGFsTGVnYWN5QVBJIH0gZnJvbSAnLi9tb2RhbC1sZWdhY3ktYXBpJztcbmltcG9ydCB7IE56TW9kYWxSZWYgfSBmcm9tICcuL21vZGFsLXJlZic7XG5pbXBvcnQgeyBNb2RhbEJ1dHRvbk9wdGlvbnMsIE1vZGFsT3B0aW9ucywgTW9kYWxUeXBlcywgT25DbGlja0NhbGxiYWNrLCBTdHlsZU9iamVjdExpa2UgfSBmcm9tICcuL21vZGFsLXR5cGVzJztcbmltcG9ydCB7IE56TW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENvbmZpZ0Zyb21Db21wb25lbnQgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTlpfQ09ORklHX0NPTVBPTkVOVF9OQU1FID0gJ21vZGFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnotbW9kYWwnLFxuICBleHBvcnRBczogJ256TW9kYWwnLFxuICB0ZW1wbGF0ZTogYCA8bmctdGVtcGxhdGU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+IGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE56TW9kYWxDb21wb25lbnQ8VCA9IE56U2FmZUFueSwgUiA9IE56U2FmZUFueT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE56TW9kYWxMZWdhY3lBUEk8VCwgUj4ge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpNYXNrOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uek1hc2tDbG9zYWJsZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpWaXNpYmxlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekNsb3NhYmxlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uek9rTG9hZGluZzogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpPa0Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekNhbmNlbERpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekNhbmNlbExvYWRpbmc6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256S2V5Ym9hcmQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256Tm9BbmltYXRpb246IEJvb2xlYW5JbnB1dDtcblxuICBASW5wdXQoKSBAV2l0aENvbmZpZyhOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUsIHRydWUpIEBJbnB1dEJvb2xlYW4oKSBuek1hc2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSwgdHJ1ZSkgQElucHV0Qm9vbGVhbigpIG56TWFza0Nsb3NhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekNsb3NhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56T2tMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuek9rRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56Q2FuY2VsRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56Q2FuY2VsTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpLZXlib2FyZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuek5vQW5pbWF0aW9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIG56Q29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8e30+IHwgVHlwZTxUPjtcbiAgQElucHV0KCkgbnpDb21wb25lbnRQYXJhbXM6IFQ7XG4gIEBJbnB1dCgpIG56Rm9vdGVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx7fT4gfCBBcnJheTxNb2RhbEJ1dHRvbk9wdGlvbnM8VD4+IHwgbnVsbDtcbiAgQElucHV0KCkgbnpHZXRDb250YWluZXI6IEhUTUxFbGVtZW50IHwgT3ZlcmxheVJlZiB8ICgoKSA9PiBIVE1MRWxlbWVudCB8IE92ZXJsYXlSZWYpO1xuICBASW5wdXQoKSBuelpJbmRleDogbnVtYmVyID0gMTAwMDtcbiAgQElucHV0KCkgbnpXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gNTIwO1xuICBASW5wdXQoKSBueldyYXBDbGFzc05hbWU6IHN0cmluZztcbiAgQElucHV0KCkgbnpDbGFzc05hbWU6IHN0cmluZztcbiAgQElucHV0KCkgbnpTdHlsZTogb2JqZWN0O1xuICBASW5wdXQoKSBuelRpdGxlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx7fT47XG4gIEBJbnB1dCgpIG56Q2xvc2VJY29uOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiA9ICdjbG9zZSc7XG4gIEBJbnB1dCgpIG56TWFza1N0eWxlOiBTdHlsZU9iamVjdExpa2U7XG4gIEBJbnB1dCgpIG56Qm9keVN0eWxlOiBTdHlsZU9iamVjdExpa2U7XG4gIEBJbnB1dCgpIG56T2tUZXh0OiBzdHJpbmcgfCBudWxsO1xuICBASW5wdXQoKSBuekNhbmNlbFRleHQ6IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIG56T2tUeXBlOiBOekJ1dHRvblR5cGUgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIG56SWNvblR5cGU6IHN0cmluZyA9ICdxdWVzdGlvbi1jaXJjbGUnOyAvLyBDb25maXJtIE1vZGFsIE9OTFlcbiAgQElucHV0KCkgbnpNb2RhbFR5cGU6IE1vZGFsVHlwZXMgPSAnZGVmYXVsdCc7XG5cbiAgQElucHV0KClcbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IG56T25PazogRXZlbnRFbWl0dGVyPFQ+IHwgT25DbGlja0NhbGxiYWNrPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBASW5wdXQoKVxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgbnpPbkNhbmNlbDogRXZlbnRFbWl0dGVyPFQ+IHwgT25DbGlja0NhbGxiYWNrPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBuekFmdGVyT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56QWZ0ZXJDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Uj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56VmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHt9PjtcbiAgQENvbnRlbnRDaGlsZChOek1vZGFsRm9vdGVyRGlyZWN0aXZlKVxuICBzZXQgbW9kYWxGb290ZXIodmFsdWU6IE56TW9kYWxGb290ZXJEaXJlY3RpdmUpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUudGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMuc2V0Rm9vdGVyV2l0aFRlbXBsYXRlKHZhbHVlLnRlbXBsYXRlUmVmKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBtb2RhbFJlZjogTnpNb2RhbFJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBhZnRlck9wZW4oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgLy8gT2JzZXJ2YWJsZSBhbGlhcyBmb3IgbnpBZnRlck9wZW5cbiAgICByZXR1cm4gdGhpcy5uekFmdGVyT3Blbi5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBhZnRlckNsb3NlKCk6IE9ic2VydmFibGU8Uj4ge1xuICAgIC8vIE9ic2VydmFibGUgYWxpYXMgZm9yIG56QWZ0ZXJDbG9zZVxuICAgIHJldHVybiB0aGlzLm56QWZ0ZXJDbG9zZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuekNvbmZpZ1NlcnZpY2U6IE56Q29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtb2RhbDogTnpNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cblxuICBvcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5uelZpc2libGUpIHtcbiAgICAgIHRoaXMubnpWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMubnpWaXNpYmxlQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm1vZGFsUmVmKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldENvbmZpZygpO1xuICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMubW9kYWwuY3JlYXRlKGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UocmVzdWx0PzogUik6IHZvaWQge1xuICAgIGlmICh0aGlzLm56VmlzaWJsZSkge1xuICAgICAgdGhpcy5uelZpc2libGUgPSBmYWxzZTtcbiAgICAgIHRoaXMubnpWaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGFsUmVmKSB7XG4gICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKHJlc3VsdCk7XG4gICAgICB0aGlzLm1vZGFsUmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KHJlc3VsdD86IFIpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKHJlc3VsdCk7XG4gIH1cblxuICB0cmlnZ2VyT2soKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFJlZj8udHJpZ2dlck9rKCk7XG4gIH1cblxuICB0cmlnZ2VyQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxSZWY/LnRyaWdnZXJDYW5jZWwoKTtcbiAgfVxuXG4gIGdldENvbnRlbnRDb21wb25lbnQoKTogVCB8IHZvaWQge1xuICAgIHJldHVybiB0aGlzLm1vZGFsUmVmPy5nZXRDb250ZW50Q29tcG9uZW50KCk7XG4gIH1cblxuICBnZXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxSZWY/LmdldEVsZW1lbnQoKTtcbiAgfVxuXG4gIGdldE1vZGFsUmVmKCk6IE56TW9kYWxSZWYgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9vdGVyV2l0aFRlbXBsYXRlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx7fT4pOiB2b2lkIHtcbiAgICB0aGlzLm56Rm9vdGVyID0gdGVtcGxhdGVSZWY7XG4gICAgaWYgKHRoaXMubW9kYWxSZWYpIHtcbiAgICAgIC8vIElmIG1vZGFsUmVmIGFscmVhZHkgY3JlYXRlZCwgc2V0IHRoZSBmb290ZXIgaW4gbmV4dCB0aWNrXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZiEudXBkYXRlQ29uZmlnKHtcbiAgICAgICAgICBuekZvb3RlcjogdGhpcy5uekZvb3RlclxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWcoKTogTW9kYWxPcHRpb25zIHtcbiAgICBjb25zdCBjb21wb25lbnRDb25maWcgPSBnZXRDb25maWdGcm9tQ29tcG9uZW50KHRoaXMpO1xuICAgIGNvbXBvbmVudENvbmZpZy5uelZpZXdDb250YWluZXJSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWY7XG4gICAgaWYgKCF0aGlzLm56Q29udGVudCkge1xuICAgICAgY29tcG9uZW50Q29uZmlnLm56Q29udGVudCA9IHRoaXMuY29udGVudFRlbXBsYXRlUmVmO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50Q29uZmlnO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbnpWaXNpYmxlLCAuLi5vdGhlckNoYW5nZXMgfSA9IGNoYW5nZXM7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMob3RoZXJDaGFuZ2VzKS5sZW5ndGggJiYgdGhpcy5tb2RhbFJlZikge1xuICAgICAgdGhpcy5tb2RhbFJlZi51cGRhdGVDb25maWcoZ2V0Q29uZmlnRnJvbUNvbXBvbmVudCh0aGlzKSk7XG4gICAgfVxuXG4gICAgaWYgKG56VmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMubnpWaXNpYmxlKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19