UNPKG

ng-zorro-antd

Version:

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

368 lines 25 kB
/** * @fileoverview added by tsickle * Generated from: modal-ref.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @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 { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes'; import { EventEmitter } from '@angular/core'; import { isPromise } from 'ng-zorro-antd/core/util'; import { Subject } from 'rxjs'; import { filter, take } from 'rxjs/operators'; /** @enum {number} */ var NzModalState = { OPEN: 0, CLOSING: 1, CLOSED: 2, }; export { NzModalState }; /** @enum {string} */ var NzTriggerAction = { CANCEL: "cancel", OK: "ok", }; export { NzTriggerAction }; /** * @template T, R */ var /** * @template T, R */ NzModalRef = /** @class */ (function () { function NzModalRef(overlayRef, config, containerInstance) { var _this = this; this.overlayRef = overlayRef; this.config = config; this.containerInstance = containerInstance; this.state = 0 /* OPEN */; this.afterClose = new Subject(); this.afterOpen = new Subject(); containerInstance.animationStateChanged .pipe(filter((/** * @param {?} event * @return {?} */ function (event) { return event.phaseName === 'done' && event.toState === 'enter'; })), take(1)) .subscribe((/** * @return {?} */ function () { _this.afterOpen.next(); _this.afterOpen.complete(); if (config.nzAfterOpen instanceof EventEmitter) { config.nzAfterOpen.emit(); } })); containerInstance.animationStateChanged .pipe(filter((/** * @param {?} event * @return {?} */ function (event) { return event.phaseName === 'done' && event.toState === 'exit'; })), take(1)) .subscribe((/** * @return {?} */ function () { clearTimeout(_this.closeTimeout); _this.overlayRef.dispose(); })); containerInstance.containerClick.pipe(take(1)).subscribe((/** * @return {?} */ function () { /** @type {?} */ var cancelable = !_this.config.nzCancelLoading && !_this.config.nzOkLoading && config.nzMask && config.nzMaskClosable; if (cancelable) { _this.trigger("cancel" /* CANCEL */); } })); overlayRef .keydownEvents() .pipe(filter((/** * @param {?} event * @return {?} */ function (event) { return (((/** @type {?} */ (_this.config.nzKeyboard))) && !_this.config.nzCancelLoading && !_this.config.nzOkLoading && event.keyCode === ESCAPE && !hasModifierKey(event)); }))) .subscribe((/** * @param {?} event * @return {?} */ function (event) { event.preventDefault(); _this.trigger("cancel" /* CANCEL */); })); containerInstance.cancelTriggered.subscribe((/** * @return {?} */ function () { return _this.trigger("cancel" /* CANCEL */); })); containerInstance.okTriggered.subscribe((/** * @return {?} */ function () { return _this.trigger("ok" /* OK */); })); overlayRef.detachments().subscribe((/** * @return {?} */ function () { _this.afterClose.next(_this.result); _this.afterClose.complete(); if (config.nzAfterClose instanceof EventEmitter) { config.nzAfterClose.emit(_this.result); } _this.componentInstance = null; _this.overlayRef.dispose(); })); } /** * @return {?} */ NzModalRef.prototype.getContentComponent = /** * @return {?} */ function () { return (/** @type {?} */ (this.componentInstance)); }; /** * @return {?} */ NzModalRef.prototype.getElement = /** * @return {?} */ function () { return this.containerInstance.getNativeElement(); }; /** * @param {?=} result * @return {?} */ NzModalRef.prototype.destroy = /** * @param {?=} result * @return {?} */ function (result) { this.close(result); }; /** * @return {?} */ NzModalRef.prototype.triggerOk = /** * @return {?} */ function () { this.trigger("ok" /* OK */); }; /** * @return {?} */ NzModalRef.prototype.triggerCancel = /** * @return {?} */ function () { this.trigger("cancel" /* CANCEL */); }; /** * Open the modal. * @deprecated Opened when create, this method is useless. * @breaking-change 10.0.0 */ /** * Open the modal. * @deprecated Opened when create, this method is useless. * \@breaking-change 10.0.0 * @return {?} */ NzModalRef.prototype.open = /** * Open the modal. * @deprecated Opened when create, this method is useless. * \@breaking-change 10.0.0 * @return {?} */ function () { // noop }; /** * @param {?=} result * @return {?} */ NzModalRef.prototype.close = /** * @param {?=} result * @return {?} */ function (result) { var _this = this; this.result = result; this.containerInstance.animationStateChanged .pipe(filter((/** * @param {?} event * @return {?} */ function (event) { return event.phaseName === 'start'; })), take(1)) .subscribe((/** * @param {?} event * @return {?} */ function (event) { _this.state = 2 /* CLOSED */; _this.overlayRef.detachBackdrop(); _this.closeTimeout = setTimeout((/** * @return {?} */ function () { _this.overlayRef.dispose(); }), event.totalTime + 100); })); this.containerInstance.startExitAnimation(); this.state = 1 /* CLOSING */; }; /** * @param {?} config * @return {?} */ NzModalRef.prototype.updateConfig = /** * @param {?} config * @return {?} */ function (config) { Object.assign(this.config, config); this.containerInstance.cdr.markForCheck(); }; /** * @return {?} */ NzModalRef.prototype.getState = /** * @return {?} */ function () { return this.state; }; /** * @return {?} */ NzModalRef.prototype.getConfig = /** * @return {?} */ function () { return this.config; }; /** * @return {?} */ NzModalRef.prototype.getBackdropElement = /** * @return {?} */ function () { return this.overlayRef.backdropElement; }; /** * @private * @param {?} action * @return {?} */ NzModalRef.prototype.trigger = /** * @private * @param {?} action * @return {?} */ function (action) { var _this = this; /** @type {?} */ var trigger = { ok: this.config.nzOnOk, cancel: this.config.nzOnCancel }[action]; /** @type {?} */ var loadingKey = (/** @type {?} */ ({ ok: 'nzOkLoading', cancel: 'nzCancelLoading' }[action])); /** @type {?} */ var loading = this.config[loadingKey]; if (loading) { return; } if (trigger instanceof EventEmitter) { trigger.emit(this.getContentComponent()); } else if (typeof trigger === 'function') { /** @type {?} */ var result = trigger(this.getContentComponent()); /** @type {?} */ var caseClose = (/** * @param {?} doClose * @return {?} */ function (doClose) { return doClose !== false && _this.close((/** @type {?} */ (doClose))); }); if (isPromise(result)) { this.config[loadingKey] = true; /** @type {?} */ var handleThen = (/** * @param {?} doClose * @return {?} */ function (doClose) { _this.config[loadingKey] = false; _this.closeWhitResult(doClose); }); result.then(handleThen).catch(handleThen); } else { caseClose(result); } } }; /** * @private * @param {?} result * @return {?} */ NzModalRef.prototype.closeWhitResult = /** * @private * @param {?} result * @return {?} */ function (result) { if (result !== false) { this.close(result); } }; return NzModalRef; }()); /** * @template T, R */ export { NzModalRef }; if (false) { /** @type {?} */ NzModalRef.prototype.componentInstance; /** @type {?} */ NzModalRef.prototype.result; /** @type {?} */ NzModalRef.prototype.state; /** @type {?} */ NzModalRef.prototype.afterClose; /** @type {?} */ NzModalRef.prototype.afterOpen; /** * @type {?} * @private */ NzModalRef.prototype.closeTimeout; /** * @type {?} * @private */ NzModalRef.prototype.overlayRef; /** * @type {?} * @private */ NzModalRef.prototype.config; /** @type {?} */ NzModalRef.prototype.containerInstance; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC9tb2RhbC8iLCJzb3VyY2VzIjpbIm1vZGFsLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNOUMsSUFBa0IsWUFBWTtJQUM1QixJQUFJLEdBQUE7SUFDSixPQUFPLEdBQUE7SUFDUCxNQUFNLEdBQUE7RUFDUDs7O0FBRUQsSUFBa0IsZUFBZTtJQUMvQixNQUFNLFVBQVc7SUFDakIsRUFBRSxNQUFPO0VBQ1Y7Ozs7O0FBRUQ7Ozs7SUFTRSxvQkFBb0IsVUFBc0IsRUFBVSxNQUFvQixFQUFTLGlCQUFxQztRQUF0SCxpQkE4REM7UUE5RG1CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQVMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQU50SCxVQUFLLGdCQUFtQztRQUN4QyxlQUFVLEdBQWUsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFLdkMsaUJBQWlCLENBQUMscUJBQXFCO2FBQ3BDLElBQUksQ0FDSCxNQUFNOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsU0FBUyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBdkQsQ0FBdUQsRUFBQyxFQUN4RSxJQUFJLENBQUMsQ0FBQyxD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RyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7O2dCQUM1QyxTQUFTOzs7O1lBQUcsVUFBQyxPQUE0QixJQUFLLE9BQUEsT0FBTyxLQUFLLEtBQUssSUFBSSxLQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFBLE9BQU8sRUFBSyxDQUFDLEVBQTdDLENBQTZDLENBQUE7WUFDakcsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDOztvQkFDekIsVUFBVTs7OztnQkFBRyxVQUFDLE9BQTRCO29CQUM5QyxLQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDaEMsS0FBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFBO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNuQjtTQUNGO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sb0NBQWU7Ozs7O0lBQXZCLFVBQXdCLE1BQWlCO1FBQ3ZDLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQXhLRCxJQXdLQzs7Ozs7OztJQXZLQyx1Q0FBNEI7O0lBQzVCLDRCQUFXOztJQUNYLDJCQUF3Qzs7SUFDeEMsZ0NBQXVDOztJQUN2QywrQkFBeUM7Ozs7O0lBRXpDLGtDQUE2Qjs7Ozs7SUFFakIsZ0NBQThCOzs7OztJQUFFLDRCQUE0Qjs7SUFBRSx1Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cbmltcG9ydCB7IEVTQ0FQRSwgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQmFzZU1vZGFsQ29udGFpbmVyIH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXInO1xuaW1wb3J0IHsgTnpNb2RhbExlZ2FjeUFQSSB9IGZyb20gJy4vbW9kYWwtbGVnYWN5LWFwaSc7XG5pbXBvcnQgeyBNb2RhbE9wdGlvbnMgfSBmcm9tICcuL21vZGFsLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGVudW0gTnpNb2RhbFN0YXRlIHtcbiAgT1BFTixcbiAgQ0xPU0lORyxcbiAgQ0xPU0VEXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIE56VHJpZ2dlckFjdGlvbiB7XG4gIENBTkNFTCA9ICdjYW5jZWwnLFxuICBPSyA9ICdvaydcbn1cblxuZXhwb3J0IGNsYXNzIE56TW9kYWxSZWY8VCA9IE56U2FmZUFueSwgUiA9IE56U2FmZUFueT4gaW1wbGVtZW50cyBOek1vZGFsTGVnYWN5QVBJPFQsIFI+IHtcbiAgY29tcG9uZW50SW5zdGFuY2U6IFQgfCBudWxsO1xuICByZXN1bHQ/OiBSO1xuICBzdGF0ZTogTnpNb2RhbFN0YXRlID0gTnpNb2RhbFN0YXRlLk9QRU47XG4gIGFmdGVyQ2xvc2U6IFN1YmplY3Q8Uj4gPSBuZXcgU3ViamVjdCgpO1xuICBhZnRlck9wZW46IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgY2xvc2VUaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBwcml2YXRlIGNvbmZpZzogTW9kYWxPcHRpb25zLCBwdWJsaWMgY29udGFpbmVySW5zdGFuY2U6IEJhc2VNb2RhbENvbnRhaW5lcikge1xuICAgIGNvbnRhaW5lckluc3RhbmNlLmFuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5waGFzZU5hbWUgPT09ICdkb25lJyAmJiBldmVudC50b1N0YXRlID09PSAnZW50ZXInKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWZ0ZXJPcGVuLm5leHQoKTtcbiAgICAgICAgdGhpcy5hZnRlck9wZW4uY29tcGxldGUoKTtcbiAgICAgICAgaWYgKGNvbmZpZy5uekFmdGVyT3BlbiBpbnN0YW5jZW9mIEV2ZW50RW1pdHRlcikge1xuICAgICAgICAgIGNvbmZpZy5uekFmdGVyT3Blbi5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY29udGFpbmVySW5zdGFuY2UuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnBoYXNlTmFtZSA9PT0gJ2RvbmUnICYmIGV2ZW50LnRvU3RhdGUgPT09ICdleGl0JyksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVRpbWVvdXQpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICBjb250YWluZXJJbnN0YW5jZS5jb250YWluZXJDbGljay5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjYW5jZWxhYmxlID0gIXRoaXMuY29uZmlnLm56Q2FuY2VsTG9hZGluZyAmJiAhdGhpcy5jb25maWcubnpPa0xvYWRpbmcgJiYgY29uZmlnLm56TWFzayAmJiBjb25maWcubnpNYXNrQ2xvc2FibGU7XG4gICAgICBpZiAoY2FuY2VsYWJsZSkge1xuICAgICAgICB0aGlzLnRyaWdnZXIoTnpUcmlnZ2VyQWN0aW9uLkNBTkNFTCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvdmVybGF5UmVmXG4gICAgICAua2V5ZG93bkV2ZW50cygpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMuY29uZmlnLm56S2V5Ym9hcmQgYXMgYm9vbGVhbikgJiZcbiAgICAgICAgICAgICF0aGlzLmNvbmZpZy5uekNhbmNlbExvYWRpbmcgJiZcbiAgICAgICAgICAgICF0aGlzLmNvbmZpZy5uek9rTG9hZGluZyAmJlxuICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmXG4gICAgICAgICAgICAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRyaWdnZXIoTnpUcmlnZ2VyQWN0aW9uLkNBTkNFTCk7XG4gICAgICB9KTtcblxuICAgIGNvbnRhaW5lckluc3RhbmNlLmNhbmNlbFRyaWdnZXJlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy50cmlnZ2VyKE56VHJpZ2dlckFjdGlvbi5DQU5DRUwpKTtcblxuICAgIGNvbnRhaW5lckluc3RhbmNlLm9rVHJpZ2dlcmVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRyaWdnZXIoTnpUcmlnZ2VyQWN0aW9uLk9LKSk7XG5cbiAgICBvdmVybGF5UmVmLmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuYWZ0ZXJDbG9zZS5uZXh0KHRoaXMucmVzdWx0KTtcbiAgICAgIHRoaXMuYWZ0ZXJDbG9zZS5jb21wbGV0ZSgpO1xuICAgICAgaWYgKGNvbmZpZy5uekFmdGVyQ2xvc2UgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICAgICAgY29uZmlnLm56QWZ0ZXJDbG9zZS5lbWl0KHRoaXMucmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSBudWxsO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbnRlbnRDb21wb25lbnQoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgYXMgVDtcbiAgfVxuXG4gIGdldEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlLmdldE5hdGl2ZUVsZW1lbnQoKTtcbiAgfVxuXG4gIGRlc3Ryb3kocmVzdWx0PzogUik6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UocmVzdWx0KTtcbiAgfVxuXG4gIHRyaWdnZXJPaygpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIoTnpUcmlnZ2VyQWN0aW9uLk9LKTtcbiAgfVxuXG4gIHRyaWdnZXJDYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyKE56VHJpZ2dlckFjdGlvbi5DQU5DRUwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIG1vZGFsLlxuICAgKiBAZGVwcmVjYXRlZCBPcGVuZWQgd2hlbiBjcmVhdGUsIHRoaXMgbWV0aG9kIGlzIHVzZWxlc3MuXG4gICAqIEBicmVha2luZy1jaGFuZ2UgMTAuMC4wXG4gICAqL1xuICBvcGVuKCk6IHZvaWQge1xuICAgIC8vIG5vb3BcbiAgfVxuXG4gIGNsb3NlKHJlc3VsdD86IFIpOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlLmFuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5waGFzZU5hbWUgPT09ICdzdGFydCcpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IE56TW9kYWxTdGF0ZS5DTE9TRUQ7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpO1xuICAgICAgICB0aGlzLmNsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgIH0sIGV2ZW50LnRvdGFsVGltZSArIDEwMCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2Uuc3RhcnRFeGl0QW5pbWF0aW9uKCk7XG4gICAgdGhpcy5zdGF0ZSA9IE56TW9kYWxTdGF0ZS5DTE9TSU5HO1xuICB9XG5cbiAgdXBkYXRlQ29uZmlnKGNvbmZpZzogTW9kYWxPcHRpb25zKTogdm9pZCB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbmZpZywgY29uZmlnKTtcbiAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldFN0YXRlKCk6IE56TW9kYWxTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gIH1cblxuICBnZXRDb25maWcoKTogTW9kYWxPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cblxuICBnZXRCYWNrZHJvcEVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlcihhY3Rpb246IE56VHJpZ2dlckFjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXIgPSB7IG9rOiB0aGlzLmNvbmZpZy5uek9uT2ssIGNhbmNlbDogdGhpcy5jb25maWcubnpPbkNhbmNlbCB9W2FjdGlvbl07XG4gICAgY29uc3QgbG9hZGluZ0tleSA9IHsgb2s6ICduek9rTG9hZGluZycsIGNhbmNlbDogJ256Q2FuY2VsTG9hZGluZycgfVthY3Rpb25dIGFzICduek9rTG9hZGluZycgfCAnbnpDYW5jZWxMb2FkaW5nJztcbiAgICBjb25zdCBsb2FkaW5nID0gdGhpcy5jb25maWdbbG9hZGluZ0tleV07XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRyaWdnZXIgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICAgIHRyaWdnZXIuZW1pdCh0aGlzLmdldENvbnRlbnRDb21wb25lbnQoKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHJpZ2dlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdHJpZ2dlcih0aGlzLmdldENvbnRlbnRDb21wb25lbnQoKSk7XG4gICAgICBjb25zdCBjYXNlQ2xvc2UgPSAoZG9DbG9zZTogYm9vbGVhbiB8IHZvaWQgfCB7fSkgPT4gZG9DbG9zZSAhPT0gZmFsc2UgJiYgdGhpcy5jbG9zZShkb0Nsb3NlIGFzIFIpO1xuICAgICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICAgIHRoaXMuY29uZmlnW2xvYWRpbmdLZXldID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgaGFuZGxlVGhlbiA9IChkb0Nsb3NlOiBib29sZWFuIHwgdm9pZCB8IHt9KSA9PiB7XG4gICAgICAgICAgdGhpcy5jb25maWdbbG9hZGluZ0tleV0gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNsb3NlV2hpdFJlc3VsdChkb0Nsb3NlKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVzdWx0LnRoZW4oaGFuZGxlVGhlbikuY2F0Y2goaGFuZGxlVGhlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXNlQ2xvc2UocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlV2hpdFJlc3VsdChyZXN1bHQ6IE56U2FmZUFueSk6IHZvaWQge1xuICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNsb3NlKHJlc3VsdCk7XG4gICAgfVxuICB9XG59XG4iXX0=