UNPKG

@stratio/egeo

Version:
331 lines 25 kB
/** * @fileoverview added by tsickle * Generated from: lib/st-modal/st-modal.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /* * © 2017 Stratio Big Data Inc., Sucursal en España. * * This software is licensed under the Apache License, Version 2.0. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the terms of the License for more details. * * SPDX-License-Identifier: Apache-2.0. */ import { ComponentFactoryResolver, Injectable } from '@angular/core'; import { Subject } from 'rxjs'; /* local dependencies */ import { StModalComponent } from './st-modal.component'; import { StModalResponse, StModalBasicType } from './st-modal.model'; var StModalService = /** @class */ (function () { function StModalService(_cfr) { this._cfr = _cfr; this._containerRef = undefined; this.dynamicModal = undefined; } Object.defineProperty(StModalService.prototype, "container", { /* External API */ set: /* External API */ /** * @param {?} container * @return {?} */ function (container) { this._containerRef = container; }, enumerable: true, configurable: true }); // - Public methods // - Public methods /** * @param {?} config * @param {?=} component * @param {?=} disabledAnimation * @return {?} */ StModalService.prototype.show = // - Public methods /** * @param {?} config * @param {?=} component * @param {?=} disabledAnimation * @return {?} */ function (config, component, disabledAnimation) { /** @type {?} */ var errors = this.canCreateModal(config, component); if (errors && errors.length > 0) { throw new Error(errors.join(' ')); } this.notifyButtonInteraction = new Subject(); this.createModal(this.createConfig(config), component, disabledAnimation); return this.notifyButtonInteraction.asObservable(); }; /** * @param {?} type * @param {?} modalTitle * @param {?} messageTitle * @param {?} message * @param {?} okButton * @param {?=} cancelButton * @param {?=} maxWidth * @param {?=} minWidth * @param {?=} icon * @param {?=} showCloseBtn * @return {?} */ StModalService.prototype.showBasicModal = /** * @param {?} type * @param {?} modalTitle * @param {?} messageTitle * @param {?} message * @param {?} okButton * @param {?=} cancelButton * @param {?=} maxWidth * @param {?=} minWidth * @param {?=} icon * @param {?=} showCloseBtn * @return {?} */ function (type, modalTitle, messageTitle, message, okButton, cancelButton, maxWidth, minWidth, icon, showCloseBtn) { if (cancelButton === void 0) { cancelButton = ''; } if (maxWidth === void 0) { maxWidth = 600; } if (minWidth === void 0) { minWidth = 400; } if (icon === void 0) { icon = ''; } if (showCloseBtn === void 0) { showCloseBtn = false; } /** @type {?} */ var iconStatus; /** @type {?} */ var buttons = [{ label: okButton, classes: (type === StModalBasicType.DELETE) ? 'button-critical' : 'button-primary', responseValue: StModalResponse.YES, closeOnClick: true }]; if (type !== StModalBasicType.INFO) { buttons.unshift({ label: cancelButton, classes: (type === StModalBasicType.DELETE) ? 'button-borderless' : 'button-secondary', responseValue: StModalResponse.NO, closeOnClick: true }); } switch (type) { case StModalBasicType.DELETE: iconStatus = 'delete'; break; case StModalBasicType.WARNING: iconStatus = 'alert'; break; default: iconStatus = icon; break; } return this.show({ fullscreen: false, message: message, messageTitle: messageTitle, modalTitle: modalTitle, buttons: buttons, maxWidth: maxWidth, minWidth: minWidth, showCloseBtn: showCloseBtn, iconStatus: iconStatus }); }; /** * @return {?} */ StModalService.prototype.close = /** * @return {?} */ function () { this.destroy(); }; /* INTERNAL METHODS FOR WORK WITH MODALS */ /* INTERNAL METHODS FOR WORK WITH MODALS */ /** * @private * @param {?} modalConfig * @param {?=} component * @param {?=} disabledAnimation * @return {?} */ StModalService.prototype.createModal = /* INTERNAL METHODS FOR WORK WITH MODALS */ /** * @private * @param {?} modalConfig * @param {?=} component * @param {?=} disabledAnimation * @return {?} */ function (modalConfig, component, disabledAnimation) { /** @type {?} */ var stModalFactory = this._cfr.resolveComponentFactory(StModalComponent); if (stModalFactory) { this._containerRef.clear(); this.dynamicModal = this._containerRef.createComponent(stModalFactory); this.bindVars(modalConfig, component, disabledAnimation); } }; /** * @private * @return {?} */ StModalService.prototype.destroy = /** * @private * @return {?} */ function () { if (this.dynamicModal) { this.dynamicModal.destroy(); this.dynamicModal = undefined; this.notifyButtonInteraction.next(StModalResponse.CLOSE); this.notifyButtonInteraction.complete(); } }; /** * @private * @param {?} modalConfig * @param {?} component * @param {?} disabledAnimation * @return {?} */ StModalService.prototype.bindVars = /** * @private * @param {?} modalConfig * @param {?} component * @param {?} disabledAnimation * @return {?} */ function (modalConfig, component, disabledAnimation) { this.dynamicModal.instance.component = component; this.dynamicModal.instance.click.subscribe(this.notify.bind(this)); this.dynamicModal.instance.modalConfig = modalConfig; this.dynamicModal.instance.disabledAnimation = (disabledAnimation !== null) ? disabledAnimation : true; this.dynamicModal.changeDetectorRef.detectChanges(); }; /** * @private * @param {?} buttonResponse * @return {?} */ StModalService.prototype.notify = /** * @private * @param {?} buttonResponse * @return {?} */ function (buttonResponse) { this.notifyButtonInteraction.next(buttonResponse.response); if (buttonResponse.close) { this.close(); } }; /** * @private * @param {?} config * @param {?=} component * @return {?} */ StModalService.prototype.canCreateModal = /** * @private * @param {?} config * @param {?=} component * @return {?} */ function (config, component) { /** @type {?} */ var errors = []; if (!this._containerRef) { errors.push("[ERROR]: StModalService => Cant find container, are you sure you declarate in MAIN APP component in html and typescript?"); } if (this.dynamicModal !== undefined) { errors.push("[ERROR]: StModalService => Can't create modal beacause already exists one. Are you sure that you call close method?)"); } if (!component && !config.message && !config.html) { errors.push("[ERROR]: StModalService => Can't find message, html or component to show in modal"); } return errors; }; /** * @private * @param {?} config * @return {?} */ StModalService.prototype.createConfig = /** * @private * @param {?} config * @return {?} */ function (config) { /** @type {?} */ var defaultConfig = { fullscreen: false, inputs: {}, outputs: {}, modalTitle: 'Default title', messageTitle: 'Default subtitle', buttons: [], message: undefined, html: undefined, maxWidth: undefined, minWidth: undefined, empty: false }; /** @type {?} */ var checkedConfig = Object.assign({}, defaultConfig, config); checkedConfig.buttons = this.checkButtons(checkedConfig.buttons); return checkedConfig; }; /** * @private * @param {?} buttons * @return {?} */ StModalService.prototype.checkButtons = /** * @private * @param {?} buttons * @return {?} */ function (buttons) { return buttons.map((/** * @param {?} button * @return {?} */ function (button) { return Object.assign({}, { label: 'Button', closeOnClick: false }, button); })); }; StModalService.decorators = [ { type: Injectable } ]; /** @nocollapse */ StModalService.ctorParameters = function () { return [ { type: ComponentFactoryResolver } ]; }; return StModalService; }()); export { StModalService }; if (false) { /** * @type {?} * @private */ StModalService.prototype._containerRef; /** * @type {?} * @private */ StModalService.prototype.dynamicModal; /** * @type {?} * @private */ StModalService.prototype.notifyButtonInteraction; /** * @type {?} * @private */ StModalService.prototype._cfr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtbW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdHJhdGlvL2VnZW8vIiwic291cmNlcyI6WyJsaWIvc3QtbW9kYWwvc3QtbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFVQSxPQUFPLEVBRUosd0JBQXdCLEVBRXhCLFVBQVUsRUFHWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBR0osZUFBZSxFQUVmLGdCQUFnQixFQUNsQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCO0lBT0csd0JBQW9CLElBQThCO1FBQTlCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBSjFDLGtCQUFhLEdBQXFCLFNBQVMsQ0FBQztRQUM1QyxpQkFBWSxHQUFtQyxTQUFTLENBQUM7SUFHWCxDQUFDO0lBR3ZELHNCQUFJLHFDQUFTO1FBRGIsa0JBQWtCOzs7Ozs7UUFDbEIsVUFBYyxTQUEyQjtZQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQUVELG1CQUFtQjs7Ozs7Ozs7SUFDbkIsNkJBQUk7Ozs7Ozs7O0lBQUosVUFBSyxNQUFxQixFQUFFLFNBQXFCLEVBQUUsaUJBQTJCOztZQUN2RSxNQUFNLEdBQWEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1FBQzdELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO1FBQzlELElBQUksQ0FB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QUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFuRSxDQUFtRSxFQUFDLENBQUM7SUFDckcsQ0FBQzs7Z0JBM0pILFVBQVU7Ozs7Z0JBakJSLHdCQUF3Qjs7SUE2SzNCLHFCQUFDO0NBQUEsQUE1SkQsSUE0SkM7U0EzSlksY0FBYzs7Ozs7O0lBRXhCLHVDQUFvRDs7Ozs7SUFDcEQsc0NBQWlFOzs7OztJQUNqRSxpREFBMEQ7Ozs7O0lBRTlDLDhCQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiDCqSAyMDE3IFN0cmF0aW8gQmlnIERhdGEgSW5jLiwgU3VjdXJzYWwgZW4gRXNwYcOxYS5cbiAqXG4gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZO1xuICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS5cbiAqIFNlZSB0aGUgdGVybXMgb2YgdGhlIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMC5cbiAqL1xuaW1wb3J0IHtcbiAgIENvbXBvbmVudEZhY3RvcnksXG4gICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICBDb21wb25lbnRSZWYsXG4gICBJbmplY3RhYmxlLFxuICAgVHlwZSxcbiAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlICwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuLyogbG9jYWwgZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgeyBTdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zdC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgIFN0TW9kYWxCdXR0b24sXG4gICBTdE1vZGFsQ29uZmlnLFxuICAgU3RNb2RhbFJlc3BvbnNlLFxuICAgU3RNb2RhbEJ1dHRvblJlc3BvbnNlLFxuICAgU3RNb2RhbEJhc2ljVHlwZVxufSBmcm9tICcuL3N0LW1vZGFsLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0TW9kYWxTZXJ2aWNlIHtcblxuICAgcHJpdmF0ZSBfY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmID0gdW5kZWZpbmVkO1xuICAgcHJpdmF0ZSBkeW5hbWljTW9kYWw6IENvbXBvbmVudFJlZjxTdE1vZGFsQ29tcG9uZW50PiA9IHVuZGVmaW5lZDtcbiAgIHByaXZhdGUgbm90aWZ5QnV0dG9uSW50ZXJhY3Rpb246IFN1YmplY3Q8U3RNb2RhbFJlc3BvbnNlPjtcblxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHsgfVxuXG4gICAvKiBFeHRlcm5hbCBBUEkgKi9cbiAgIHNldCBjb250YWluZXIoY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICB0aGlzLl9jb250YWluZXJSZWYgPSBjb250YWluZXI7XG4gICB9XG5cbiAgIC8vIC0gUHVibGljIG1ldGhvZHNcbiAgIHNob3coY29uZmlnOiBTdE1vZGFsQ29uZmlnLCBjb21wb25lbnQ/OiBUeXBlPGFueT4sIGRpc2FibGVkQW5pbWF0aW9uPzogYm9vbGVhbik6IE9ic2VydmFibGU8U3RNb2RhbFJlc3BvbnNlPiB7XG4gICAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IHRoaXMuY2FuQ3JlYXRlTW9kYWwoY29uZmlnLCBjb21wb25lbnQpO1xuICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5qb2luKCcgJykpO1xuICAgICAgfVxuICAgICAgdGhpcy5ub3RpZnlCdXR0b25JbnRlcmFjdGlvbiA9IG5ldyBTdWJqZWN0PFN0TW9kYWxSZXNwb25zZT4oKTtcbiAgICAgIHRoaXMuY3JlYXRlTW9kYWwodGhpcy5jcmVhdGVDb25maWcoY29uZmlnKSwgY29tcG9uZW50LCBkaXNhYmxlZEFuaW1hdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5ub3RpZnlCdXR0b25JbnRlcmFjdGlvbi5hc09ic2VydmFibGUoKTtcbiAgIH1cblxuICAgc2hvd0Jhc2ljTW9kYWwoXG4gICAgICB0eXBlOiBTdE1vZGFsQmFzaWNUeXBlLFxuICAgICAgbW9kYWxUaXRsZTogc3RyaW5nLFxuICAgICAgbWVzc2FnZVRpdGxlOiBzdHJpbmcsXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBva0J1dHRvbjogc3RyaW5nLFxuICAgICAgY2FuY2VsQnV0dG9uOiBzdHJpbmcgPSAnJyxcbiAgICAgIG1heFdpZHRoOiBudW1iZXIgPSA2MDAsXG4gICAgICBtaW5XaWR0aDogbnVtYmVyID0gNDAwLFxuICAgICAgaWNvbjogc3RyaW5nID0gJycsXG4gICAgICBzaG93Q2xvc2VCdG46IGJvb2xlYW4gPSBmYWxzZVxuICAgKTogT2JzZXJ2YWJsZTxTdE1vZGFsUmVzcG9uc2U+IHtcbiAgICAgIGxldCBpY29uU3RhdHVzOiBzdHJpbmc7XG5cbiAgICAgIGNvbnN0IGJ1dHRvbnM6IFN0TW9kYWxCdXR0b25bXSA9IFt7XG4gICAgICAgICBsYWJlbDogb2tCdXR0b24sXG4gICAgICAgICBjbGFzc2VzOiAodHlwZSA9PT0gU3RNb2RhbEJhc2ljVHlwZS5ERUxFVEUpID8gJ2J1dHRvbi1jcml0aWNhbCcgOiAnYnV0dG9uLXByaW1hcnknLFxuICAgICAgICAgcmVzcG9uc2VWYWx1ZTogU3RNb2RhbFJlc3BvbnNlLllFUyxcbiAgICAgICAgIGNsb3NlT25DbGljazogdHJ1ZVxuICAgICAgfV07XG5cbiAgICAgIGlmICh0eXBlICE9PSBTdE1vZGFsQmFzaWNUeXBlLklORk8pIHtcbiAgICAgICAgIGJ1dHRvbnMudW5zaGlmdCh7XG4gICAgICAgICAgICBsYWJlbDogY2FuY2VsQnV0dG9uLFxuICAgICAgICAgICAgY2xhc3NlczogKHR5cGUgPT09IFN0TW9kYWxCYXNpY1R5cGUuREVMRVRFKSA/ICdidXR0b24tYm9yZGVybGVzcycgOiAnYnV0dG9uLXNlY29uZGFyeScsXG4gICAgICAgICAgICByZXNwb25zZVZhbHVlOiBTdE1vZGFsUmVzcG9uc2UuTk8sXG4gICAgICAgICAgICBjbG9zZU9uQ2xpY2s6IHRydWVcbiAgICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgIGNhc2UgU3RNb2RhbEJhc2ljVHlwZS5ERUxFVEU6XG4gICAgICAgICAgICBpY29uU3RhdHVzID0gJ2RlbGV0ZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgIGNhc2UgU3RNb2RhbEJhc2ljVHlwZS5XQVJOSU5HOlxuICAgICAgICAgICAgaWNvblN0YXR1cyA9ICdhbGVydCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpY29uU3RhdHVzID0gaWNvbjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zaG93KHtcbiAgICAgICAgIGZ1bGxzY3JlZW46IGZhbHNlLFxuICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgIG1lc3NhZ2VUaXRsZSxcbiAgICAgICAgIG1vZGFsVGl0bGUsXG4gICAgICAgICBidXR0b25zLFxuICAgICAgICAgbWF4V2lkdGgsXG4gICAgICAgICBtaW5XaWR0aCxcbiAgICAgICAgIHNob3dDbG9zZUJ0bixcbiAgICAgICAgIGljb25TdGF0dXNcbiAgICAgIH0pO1xuICAgfVxuXG4gICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgfVxuXG4gICAvKiBJTlRFUk5BTCBNRVRIT0RTIEZPUiBXT1JLIFdJVEggTU9EQUxTICovXG4gICBwcml2YXRlIGNyZWF0ZU1vZGFsKG1vZGFsQ29uZmlnOiBTdE1vZGFsQ29uZmlnLCBjb21wb25lbnQ/OiBUeXBlPGFueT4sIGRpc2FibGVkQW5pbWF0aW9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgbGV0IHN0TW9kYWxGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PFN0TW9kYWxDb21wb25lbnQ+ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFN0TW9kYWxDb21wb25lbnQpO1xuICAgICAgaWYgKHN0TW9kYWxGYWN0b3J5KSB7XG4gICAgICAgICB0aGlzLl9jb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgIHRoaXMuZHluYW1pY01vZGFsID0gdGhpcy5fY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxTdE1vZGFsQ29tcG9uZW50PihzdE1vZGFsRmFjdG9yeSk7XG4gICAgICAgICB0aGlzLmJpbmRWYXJzKG1vZGFsQ29uZmlnLCBjb21wb25lbnQsIGRpc2FibGVkQW5pbWF0aW9uKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuZHluYW1pY01vZGFsKSB7XG4gICAgICAgICB0aGlzLmR5bmFtaWNNb2RhbC5kZXN0cm95KCk7XG4gICAgICAgICB0aGlzLmR5bmFtaWNNb2RhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgIHRoaXMubm90aWZ5QnV0dG9uSW50ZXJhY3Rpb24ubmV4dChTdE1vZGFsUmVzcG9uc2UuQ0xPU0UpO1xuICAgICAgICAgdGhpcy5ub3RpZnlCdXR0b25JbnRlcmFjdGlvbi5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIGJpbmRWYXJzKG1vZGFsQ29uZmlnOiBTdE1vZGFsQ29uZmlnLCBjb21wb25lbnQ6IFR5cGU8YW55PiwgZGlzYWJsZWRBbmltYXRpb246IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIHRoaXMuZHluYW1pY01vZGFsLmluc3RhbmNlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcblxuICAgICAgdGhpcy5keW5hbWljTW9kYWwuaW5zdGFuY2UuY2xpY2suc3Vic2NyaWJlKHRoaXMubm90aWZ5LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5keW5hbWljTW9kYWwuaW5zdGFuY2UubW9kYWxDb25maWcgPSBtb2RhbENvbmZpZztcbiAgICAgIHRoaXMuZHluYW1pY01vZGFsLmluc3RhbmNlLmRpc2FibGVkQW5pbWF0aW9uID0gKGRpc2FibGVkQW5pbWF0aW9uICE9PSBudWxsKSA/IGRpc2FibGVkQW5pbWF0aW9uIDogdHJ1ZTtcblxuICAgICAgdGhpcy5keW5hbWljTW9kYWwuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgfVxuXG4gICBwcml2YXRlIG5vdGlmeShidXR0b25SZXNwb25zZTogU3RNb2RhbEJ1dHRvblJlc3BvbnNlKTogdm9pZCB7XG4gICAgICB0aGlzLm5vdGlmeUJ1dHRvbkludGVyYWN0aW9uLm5leHQoYnV0dG9uUmVzcG9uc2UucmVzcG9uc2UpO1xuICAgICAgaWYgKGJ1dHRvblJlc3BvbnNlLmNsb3NlKSB7XG4gICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgY2FuQ3JlYXRlTW9kYWwoY29uZmlnOiBTdE1vZGFsQ29uZmlnLCBjb21wb25lbnQ/OiBUeXBlPGFueT4pOiBzdHJpbmdbXSB7XG4gICAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKCF0aGlzLl9jb250YWluZXJSZWYpIHtcbiAgICAgICAgIGVycm9ycy5wdXNoKGBbRVJST1JdOiBTdE1vZGFsU2VydmljZSA9PiBDYW50IGZpbmQgY29udGFpbmVyLCBhcmUgeW91IHN1cmUgeW91IGRlY2xhcmF0ZSBpbiBNQUlOIEFQUCBjb21wb25lbnQgaW4gaHRtbCBhbmQgdHlwZXNjcmlwdD9gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmR5bmFtaWNNb2RhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICBlcnJvcnMucHVzaChgW0VSUk9SXTogU3RNb2RhbFNlcnZpY2UgPT4gQ2FuJ3QgY3JlYXRlIG1vZGFsIGJlYWNhdXNlIGFscmVhZHkgZXhpc3RzIG9uZS4gQXJlIHlvdSBzdXJlIHRoYXQgeW91IGNhbGwgY2xvc2UgbWV0aG9kPylgKTtcbiAgICAgIH1cbiAgICAgIGlmICghY29tcG9uZW50ICYmICFjb25maWcubWVzc2FnZSAmJiAhY29uZmlnLmh0bWwpIHtcbiAgICAgICAgIGVycm9ycy5wdXNoKGBbRVJST1JdOiBTdE1vZGFsU2VydmljZSA9PiBDYW4ndCBmaW5kIG1lc3NhZ2UsIGh0bWwgb3IgY29tcG9uZW50IHRvIHNob3cgaW4gbW9kYWxgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlQ29uZmlnKGNvbmZpZzogU3RNb2RhbENvbmZpZyk6IFN0TW9kYWxDb25maWcge1xuICAgICAgY29uc3QgZGVmYXVsdENvbmZpZzogU3RNb2RhbENvbmZpZyA9IHtcbiAgICAgICAgIGZ1bGxzY3JlZW46IGZhbHNlLFxuICAgICAgICAgaW5wdXRzOiB7fSxcbiAgICAgICAgIG91dHB1dHM6IHt9LFxuICAgICAgICAgbW9kYWxUaXRsZTogJ0RlZmF1bHQgdGl0bGUnLFxuICAgICAgICAgbWVzc2FnZVRpdGxlOiAnRGVmYXVsdCBzdWJ0aXRsZScsXG4gICAgICAgICBidXR0b25zOiBbXSxcbiAgICAgICAgIG1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgIGh0bWw6IHVuZGVmaW5lZCxcbiAgICAgICAgIG1heFdpZHRoOiB1bmRlZmluZWQsXG4gICAgICAgICBtaW5XaWR0aDogdW5kZWZpbmVkLFxuICAgICAgICAgZW1wdHk6IGZhbHNlXG4gICAgICB9O1xuICAgICAgY29uc3QgY2hlY2tlZENvbmZpZzogU3RNb2RhbENvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcsIGNvbmZpZyk7XG4gICAgICBjaGVja2VkQ29uZmlnLmJ1dHRvbnMgPSB0aGlzLmNoZWNrQnV0dG9ucyhjaGVja2VkQ29uZmlnLmJ1dHRvbnMpO1xuICAgICAgcmV0dXJuIGNoZWNrZWRDb25maWc7XG4gICB9XG5cbiAgIHByaXZhdGUgY2hlY2tCdXR0b25zKGJ1dHRvbnM6IFN0TW9kYWxCdXR0b25bXSk6IFN0TW9kYWxCdXR0b25bXSB7XG4gICAgICByZXR1cm4gYnV0dG9ucy5tYXAoYnV0dG9uID0+IE9iamVjdC5hc3NpZ24oe30sIHsgbGFiZWw6ICdCdXR0b24nLCBjbG9zZU9uQ2xpY2s6IGZhbHNlIH0sIGJ1dHRvbikpO1xuICAgfVxufVxuIl19