UNPKG

ng-zorro-antd-mobile

Version:

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

321 lines 26 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, Injector } from '@angular/core'; import { ModalServiceComponent } from './modal.component'; import { ModalBaseOptions, ModalOptions, AlertOptions } from './modal-options.provider'; import { PopupService } from '../core/services/popup.service'; export class ModalService extends PopupService { constructor() { super(...arguments); this.modalRef = null; } /** * @param {?} config * @param {?} options * @return {?} */ _initConfig(config, options) { /** @type {?} */ const props = new ModalBaseOptions(); /** @type {?} */ const optionalParams = [ 'visible', 'focus', 'prefixCls', 'animated', 'closable', 'maskClosable', 'onClose', 'transparent', 'popup', 'animationType', 'title', 'footer', 'platform', 'className', 'wrapClassName', 'message', 'actions', 'callbackOrActions', 'type', 'defaultValue', 'placeholders', 'operation', 'transitionName', 'maskTransitionName', 'close', 'closeWithAnimation' ]; /** @type {?} */ const self = this; config = Object.assign(options, config, { close: (/** * @return {?} */ () => { if (config.maskClosable || config.closable) { self.closeWithAnimation(); } }) }, { closeWithAnimation: (/** * @return {?} */ () => { self.closeWithAnimation(); }) }); optionalParams.forEach((/** * @param {?} key * @return {?} */ key => { if (config[key] !== undefined) { props[key] = config[key]; } })); return props; } /** * @param {?} props * @return {?} */ _open(props) { /** @type {?} */ const childInjector = Injector.create([ { provide: ModalOptions, useValue: props } ]); this.modalRef = this.showPopup(ModalServiceComponent, childInjector); return this.modalRef && this.modalRef.instance; } /** * @return {?} */ closeWithAnimation() { /** @type {?} */ const options = new ModalBaseOptions(); this.modalRef.instance.transitionName = `${options.transitionName}-leave ${options.transitionName}-leave-active`; this.modalRef.instance.maskTransitionName = `${options.maskTransitionName}-leave ${options.maskTransitionName}-leave-active`; setTimeout((/** * @return {?} */ () => { this.close(); }), 200); } /** * @param {?=} title * @param {?=} message * @param {?=} actions * @param {?=} platform * @return {?} */ alert(title, message, actions, platform) { /** @type {?} */ const options = new AlertOptions(); options.visible = true; options.transparent = true; options.closable = false; options.maskClosable = false; options.platform = 'ios'; /** @type {?} */ const footer = getFooter.call(this, actions); /** @type {?} */ const config = Object.assign({ title: title, message: message, footer: footer, actions: footer, platform: platform ? platform : 'ios' }); /** @type {?} */ const props = this._initConfig(config, options); return this._open(props); } /** * @param {?=} title * @param {?=} message * @param {?=} callbackOrActions * @param {?=} type * @param {?=} defaultValue * @param {?=} placeholders * @param {?=} platform * @return {?} */ prompt(title, message, callbackOrActions, type, defaultValue, placeholders, platform) { /** @type {?} */ const options = new ModalOptions(); options.visible = true; options.transparent = true; options.closable = false; options.maskClosable = false; options.className = 'am-modal-alert-content'; options.defaultValue = defaultValue || ['', '']; options.placeholders = placeholders; (options.type = type ? type : 'default'), (options.platform = platform ? platform : 'ios'); /** * @param {?} self * @param {?} func * @return {?} */ function getArgs(self, func) { /** @type {?} */ let text; /** @type {?} */ let password; if (self.modalRef) { text = self.modalRef.instance.data.text || options.defaultValue[0]; password = self.modalRef.instance.data.password || options.defaultValue[1]; } else { text = options.defaultValue[0]; password = options.defaultValue[1]; } if (type === 'login-password') { return func(text, password); } else if (type === 'secure-text') { return func(password); } return func(text); } /** @type {?} */ let actions; if (typeof callbackOrActions === 'function') { actions = [ { text: 'Cancel' }, { text: 'OK', onPress: (/** * @return {?} */ () => { getArgs(this, callbackOrActions); }) } ]; } else { actions = callbackOrActions.map((/** * @param {?} item * @return {?} */ item => { return { text: item.text, onPress: (/** * @return {?} */ () => { if (item.onPress) { return getArgs(this, item.onPress); } }) }; })); } /** @type {?} */ const footer = getFooter.call(this, actions); /** @type {?} */ const config = Object.assign({ title: title, message: message, type: type ? type : 'default', footer: footer, actions: footer, platform: platform ? platform : 'ios' }); /** @type {?} */ const props = this._initConfig(config, options); return this._open(props); } /** * @param {?=} actions * @param {?=} platform * @return {?} */ operation(actions, platform) { /** @type {?} */ const options = new ModalOptions(); options.visible = true; options.transparent = true; options.closable = false; options.maskClosable = false; options.operation = true; options.className = 'am-modal-operation'; /** @type {?} */ const footer = getFooter.call(this, actions); /** @type {?} */ const config = Object.assign({ footer: footer, actions: footer, platform: platform ? platform : 'ios' }); /** @type {?} */ const props = this._initConfig(config, options); return this._open(props); } /** * @return {?} */ close() { this.hidePopup(); } } ModalService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, { type: Injectable } ]; if (false) { /** @type {?} */ ModalService.prototype.modalRef; } /** * @param {?} actions * @return {?} */ function getFooter(actions) { /** @type {?} */ let action = actions ? actions : [{ text: 'OK', onPress: (/** * @return {?} */ () => { }) }]; return action.map((/** * @param {?} button * @return {?} */ (button) => { /** @type {?} */ const orginPress = button.onPress || (/** * @return {?} */ function () { }); button.onPress = (/** * @return {?} */ () => { /** @type {?} */ const res = orginPress(); if (res && res.then) { res.then((/** * @return {?} */ () => { this.closeWithAnimation(); })); } else { this.closeWithAnimation(); } }); return button; })); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsibW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTTlELE1BQU0sT0FBTyxZQUFhLFNBQVEsWUFBWTtJQUo5Qzs7UUFLRSxhQUFRLEdBQXdDLElBQUksQ0FBQztJQXVNdkQsQ0FBQzs7Ozs7O0lBdE1DLFdBQVcsQ0FBQyxNQUF3QixFQUFFLE9BQVk7O2NBQzFDLEtBQUssR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRTs7Y0FDaEQsY0FBYyxHQUFhO1lBQy9CLFNBQVM7WUFDVCxPQUFPO1lBQ1AsV0FBVztZQUNYLFVBQVU7WUFDVixVQUFVO1lBQ1YsY0FBYztZQUNkLFNBQVM7WUFDVCxhQUFhO1lBQ2IsT0FBTztZQUNQLGVBQWU7WUFDZixPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixXQUFXO1lBQ1gsZUFBZTtZQUNmLFNBQVM7WUFDVCxTQUFTO1lBQ1QsbUJBQW1CO1lBQ25CLE1BQU07WUFDTixjQUFjO1lBQ2QsY0FBYztZQUNkLFdBQVc7WUFDWCxnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLE9BQU87WUFDUCxvQkFBb0I7U0FDckI7O2NBQ0ssSUFBSSxHQUFHLElBQUk7UUFDakIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3BCLE9BQU8sRUFDUCxNQUFNLEVBQ047WUFDRSxLQUFLOzs7WUFBRSxHQUFTLEVBQUU7Z0JB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TUFBTTthQUNuQjtZQUNBLFVBQVU7Ozs7SUFFVCxnQ0FBcUQ7Ozs7OztBQXlNdkQsU0FBUyxTQUFTLENBQUMsT0FBTzs7UUFDcEIsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPOzs7WUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUEsRUFBRSxDQUFDO0lBQ3BFLE9BQU8sTUFBTSxDQUFDLEdBQUc7Ozs7SUFBQyxDQUFDLE1BQWMsRUFBRSxFQUFFOztjQUM3QixVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU87OztRQUFJLGNBQVksQ0FBQyxDQUFBO1FBQ2xELE1BQU0sQ0FBQyxPQUFPOzs7UUFBRyxHQUFHLEVBQUU7O2tCQUNkLEdBQUcsR0FBRyxVQUFVLEVBQUU7WUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDbkIsR0FBRyxDQUFDLElBQUk7OztnQkFBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVCLENBQUMsRUFBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7UUFDSCxDQUFDLENBQUEsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsRUFBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBDb21wb25lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2VDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbEJhc2VPcHRpb25zLCBNb2RhbE9wdGlvbnMsIEFsZXJ0T3B0aW9ucywgQWN0aW9uIH0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLnByb3ZpZGVyJztcbmltcG9ydCB7IFBvcHVwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcG9wdXAuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFJlZiB9IGZyb20gJy4vbW9kYWwtcmVmLmNsYXNzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSBleHRlbmRzIFBvcHVwU2VydmljZSB7XG4gIG1vZGFsUmVmOiBDb21wb25lbnRSZWY8TW9kYWxTZXJ2aWNlQ29tcG9uZW50PiA9IG51bGw7XG4gIF9pbml0Q29uZmlnKGNvbmZpZzogTW9kYWxCYXNlT3B0aW9ucywgb3B0aW9uczogYW55KTogTW9kYWxCYXNlT3B0aW9ucyB7XG4gICAgY29uc3QgcHJvcHM6IE1vZGFsQmFzZU9wdGlvbnMgPSBuZXcgTW9kYWxCYXNlT3B0aW9ucygpO1xuICAgIGNvbnN0IG9wdGlvbmFsUGFyYW1zOiBzdHJpbmdbXSA9IFtcbiAgICAgICd2aXNpYmxlJyxcbiAgICAgICdmb2N1cycsXG4gICAgICAncHJlZml4Q2xzJyxcbiAgICAgICdhbmltYXRlZCcsXG4gICAgICAnY2xvc2FibGUnLFxuICAgICAgJ21hc2tDbG9zYWJsZScsXG4gICAgICAnb25DbG9zZScsXG4gICAgICAndHJhbnNwYXJlbnQnLFxuICAgICAgJ3BvcHVwJyxcbiAgICAgICdhbmltYXRpb25UeXBlJyxcbiAgICAgICd0aXRsZScsXG4gICAgICAnZm9vdGVyJyxcbiAgICAgICdwbGF0Zm9ybScsXG4gICAgICAnY2xhc3NOYW1lJyxcbiAgICAgICd3cmFwQ2xhc3NOYW1lJyxcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdjYWxsYmFja09yQWN0aW9ucycsXG4gICAgICAndHlwZScsXG4gICAgICAnZGVmYXVsdFZhbHVlJyxcbiAgICAgICdwbGFjZWhvbGRlcnMnLFxuICAgICAgJ29wZXJhdGlvbicsXG4gICAgICAndHJhbnNpdGlvbk5hbWUnLFxuICAgICAgJ21hc2tUcmFuc2l0aW9uTmFtZScsXG4gICAgICAnY2xvc2UnLFxuICAgICAgJ2Nsb3NlV2l0aEFuaW1hdGlvbidcbiAgICBdO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICBvcHRpb25zLFxuICAgICAgY29uZmlnLFxuICAgICAge1xuICAgICAgICBjbG9zZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChjb25maWcubWFza0Nsb3NhYmxlIHx8IGNvbmZpZy5jbG9zYWJsZSkge1xuICAgICAgICAgICAgc2VsZi5jbG9zZVdpdGhBbmltYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsb3NlV2l0aEFuaW1hdGlvbjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHNlbGYuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChjb25maWdba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BzW2tleV0gPSBjb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICBfb3Blbihwcm9wczogTW9kYWxCYXNlT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgY2hpbGRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1vZGFsT3B0aW9ucyxcbiAgICAgICAgdXNlVmFsdWU6IHByb3BzXG4gICAgICB9XG4gICAgXSk7XG4gICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuc2hvd1BvcHVwKE1vZGFsU2VydmljZUNvbXBvbmVudCwgY2hpbGRJbmplY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxSZWYgJiYgdGhpcy5tb2RhbFJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIGNsb3NlV2l0aEFuaW1hdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25zOiBNb2RhbEJhc2VPcHRpb25zID0gbmV3IE1vZGFsQmFzZU9wdGlvbnMoKTtcbiAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLnRyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy50cmFuc2l0aW9uTmFtZX0tbGVhdmUgJHtvcHRpb25zLnRyYW5zaXRpb25OYW1lfS1sZWF2ZS1hY3RpdmVgO1xuICAgIHRoaXMubW9kYWxSZWYuaW5zdGFuY2UubWFza1RyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlICR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlLWFjdGl2ZWA7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGFsZXJ0KFxuICAgIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBhY3Rpb25zPzogQXJyYXk8YW55PixcbiAgICBwbGF0Zm9ybT86IHN0cmluZ1xuICApOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IEFsZXJ0T3B0aW9ucyA9IG5ldyBBbGVydE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLnZpc2libGUgPSB0cnVlO1xuICAgIG9wdGlvbnMudHJhbnNwYXJlbnQgPSB0cnVlO1xuICAgIG9wdGlvbnMuY2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLm1hc2tDbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMucGxhdGZvcm0gPSAnaW9zJztcblxuICAgIGNvbnN0IGZvb3RlciA9IGdldEZvb3Rlci5jYWxsKHRoaXMsIGFjdGlvbnMpO1xuXG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgZm9vdGVyOiBmb290ZXIsXG4gICAgICBhY3Rpb25zOiBmb290ZXIsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5fb3Blbihwcm9wcyk7XG4gIH1cblxuICBwcm9tcHQoXG4gICAgdGl0bGU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIGNhbGxiYWNrT3JBY3Rpb25zPzogYW55LFxuICAgIHR5cGU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlPzogQXJyYXk8c3RyaW5nPixcbiAgICBwbGFjZWhvbGRlcnM/OiBBcnJheTxhbnk+LFxuICAgIHBsYXRmb3JtPzogc3RyaW5nXG4gICk6IGFueSB7XG4gICAgY29uc3Qgb3B0aW9uczogTW9kYWxPcHRpb25zID0gbmV3IE1vZGFsT3B0aW9ucygpO1xuICAgIG9wdGlvbnMudmlzaWJsZSA9IHRydWU7XG4gICAgb3B0aW9ucy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgb3B0aW9ucy5jbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMubWFza0Nsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5jbGFzc05hbWUgPSAnYW0tbW9kYWwtYWxlcnQtY29udGVudCc7XG4gICAgb3B0aW9ucy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgfHwgWycnLCAnJ107XG4gICAgb3B0aW9ucy5wbGFjZWhvbGRlcnMgPSBwbGFjZWhvbGRlcnM7XG4gICAgKG9wdGlvbnMudHlwZSA9IHR5cGUgPyB0eXBlIDogJ2RlZmF1bHQnKSwgKG9wdGlvbnMucGxhdGZvcm0gPSBwbGF0Zm9ybSA/IHBsYXRmb3JtIDogJ2lvcycpO1xuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyhzZWxmOiBhbnksIGZ1bmM6IGFueSkge1xuICAgICAgbGV0IHRleHQ6IGFueSwgcGFzc3dvcmQ6IGFueTtcbiAgICAgIGlmIChzZWxmLm1vZGFsUmVmKSB7XG4gICAgICAgIHRleHQgPSBzZWxmLm1vZGFsUmVmLmluc3RhbmNlLmRhdGEudGV4dCB8fCBvcHRpb25zLmRlZmF1bHRWYWx1ZVswXTtcbiAgICAgICAgcGFzc3dvcmQgPSBzZWxmLm1vZGFsUmVmLmluc3RhbmNlLmRhdGEucGFzc3dvcmQgfHwgb3B0aW9ucy5kZWZhdWx0VmFsdWVbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0ID0gb3B0aW9ucy5kZWZhdWx0VmFsdWVbMF07XG4gICAgICAgIHBhc3N3b3JkID0gb3B0aW9ucy5kZWZhdWx0VmFsdWVbMV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnbG9naW4tcGFzc3dvcmQnKSB7XG4gICAgICAgIHJldHVybiBmdW5jKHRleHQsIHBhc3N3b3JkKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NlY3VyZS10ZXh0Jykge1xuICAgICAgICByZXR1cm4gZnVuYyhwYXNzd29yZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyh0ZXh0KTtcbiAgICB9XG5cbiAgICBsZXQgYWN0aW9ucztcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrT3JBY3Rpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7IHRleHQ6ICdDYW5jZWwnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnT0snLFxuICAgICAgICAgIG9uUHJlc3M6ICgpID0+IHtcbiAgICAgICAgICAgIGdldEFyZ3ModGhpcywgY2FsbGJhY2tPckFjdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aW9ucyA9IGNhbGxiYWNrT3JBY3Rpb25zLm1hcChpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgb25QcmVzczogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0ub25QcmVzcykge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0QXJncyh0aGlzLCBpdGVtLm9uUHJlc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZvb3RlciA9IGdldEZvb3Rlci5jYWxsKHRoaXMsIGFjdGlvbnMpO1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGU6IHR5cGUgPyB0eXBlIDogJ2RlZmF1bHQnLFxuICAgICAgZm9vdGVyOiBmb290ZXIsXG4gICAgICBhY3Rpb25zOiBmb290ZXIsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgb3BlcmF0aW9uKGFjdGlvbnM/OiBhbnksIHBsYXRmb3JtPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBvcHRpb25zOiBNb2RhbE9wdGlvbnMgPSBuZXcgTW9kYWxPcHRpb25zKCk7XG4gICAgb3B0aW9ucy52aXNpYmxlID0gdHJ1ZTtcbiAgICBvcHRpb25zLnRyYW5zcGFyZW50ID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5tYXNrQ2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLm9wZXJhdGlvbiA9IHRydWU7XG4gICAgb3B0aW9ucy5jbGFzc05hbWUgPSAnYW0tbW9kYWwtb3BlcmF0aW9uJztcbiAgICBjb25zdCBmb290ZXIgPSBnZXRGb290ZXIuY2FsbCh0aGlzLCBhY3Rpb25zKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgZm9vdGVyOiBmb290ZXIsXG4gICAgICBhY3Rpb25zOiBmb290ZXIsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5oaWRlUG9wdXAoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRGb290ZXIoYWN0aW9ucykge1xuICBsZXQgYWN0aW9uID0gYWN0aW9ucyA/IGFjdGlvbnMgOiBbeyB0ZXh0OiAnT0snLCBvblByZXNzOiAoKSA9PiB7fSB9XTtcbiAgcmV0dXJuIGFjdGlvbi5tYXAoKGJ1dHRvbjogQWN0aW9uKSA9PiB7XG4gICAgY29uc3Qgb3JnaW5QcmVzcyA9IGJ1dHRvbi5vblByZXNzIHx8IGZ1bmN0aW9uKCkge307XG4gICAgYnV0dG9uLm9uUHJlc3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBvcmdpblByZXNzKCk7XG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gYnV0dG9uO1xuICB9KTtcbn1cbiJdfQ==