UNPKG

ng-zorro-antd-mobile

Version:

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

315 lines 25.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,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 {?} */ const text = self.modalRef.instance.data.text || options.defaultValue[0]; /** @type {?} */ const password = self.modalRef.instance.data.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') { /** @type {?} */ const onPress = getArgs(this, callbackOrActions); actions = [ { text: 'Cancel' }, { text: 'OK', onPress: (/** * @return {?} */ () => { onPress.call(); }) } ]; } 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsibW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTTlELE1BQU0sT0FBTyxZQUFhLFNBQVEsWUFBWTtJQUo5Qzs7UUFLRSxhQUFRLEdBQXdDLElBQUksQ0FBQztJQWlNdkQsQ0FBQzs7Ozs7O0lBaE1DLFdBQVcsQ0FBQyxNQUF3QixFQUFFLE9BQVk7O2NBQzFDLEtBQUssR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRTs7Y0FDaEQsY0FBYyxHQUFhO1lBQy9CLFNBQVM7WUFDVCxPQUFPO1lBQ1AsV0FBVztZQUNYLFVBQVU7WUFDVixVQUFVO1lBQ1YsY0FBYztZQUNkLFNBQVM7WUFDVCxhQUFhO1lBQ2IsT0FBTztZQUNQLGVBQWU7WUFDZixPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixXQUFXO1lBQ1gsZUFBZTtZQUNmLFNBQVM7WUFDVCxTQUFTO1lBQ1QsbUJBQW1CO1lBQ25CLE1BQU07WUFDTixjQUFjO1lBQ2QsY0FBYztZQUNkLFdBQVc7WUFDWCxnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLE9BQU87WUFDUCxvQkFBb0I7U0FDckI7O2NBQ0ssSUFBSSxHQUFHLElBQUk7UUFDakIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3BCLE9BQU8sRUFDUCxNQUFNLEVBQ047WUFDRSxLQUFLOzs7WUFBRSxHQUFTLEVBQUU7Z0JB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QUFJLEVBQUUsT0FBTzs7O1lBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBLEVBQUUsQ0FBQztJQUNwRSxPQUFPLE1BQU0sQ0FBQyxHQUFHOzs7O0lBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTs7Y0FDN0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPOzs7UUFBSSxjQUFZLENBQUMsQ0FBQTtRQUNsRCxNQUFNLENBQUMsT0FBTzs7O1FBQUcsR0FBRyxFQUFFOztrQkFDZCxHQUFHLEdBQUcsVUFBVSxFQUFFO1lBQ3hCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJOzs7Z0JBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM1QixDQUFDLEVBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFBLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLEVBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgQ29tcG9uZW50UmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxCYXNlT3B0aW9ucywgTW9kYWxPcHRpb25zLCBBbGVydE9wdGlvbnMsIEFjdGlvbiB9IGZyb20gJy4vbW9kYWwtb3B0aW9ucy5wcm92aWRlcic7XG5pbXBvcnQgeyBQb3B1cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL3BvcHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kYWxSZWYgfSBmcm9tICcuL21vZGFsLXJlZi5jbGFzcyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2UgZXh0ZW5kcyBQb3B1cFNlcnZpY2Uge1xuICBtb2RhbFJlZjogQ29tcG9uZW50UmVmPE1vZGFsU2VydmljZUNvbXBvbmVudD4gPSBudWxsO1xuICBfaW5pdENvbmZpZyhjb25maWc6IE1vZGFsQmFzZU9wdGlvbnMsIG9wdGlvbnM6IGFueSk6IE1vZGFsQmFzZU9wdGlvbnMge1xuICAgIGNvbnN0IHByb3BzOiBNb2RhbEJhc2VPcHRpb25zID0gbmV3IE1vZGFsQmFzZU9wdGlvbnMoKTtcbiAgICBjb25zdCBvcHRpb25hbFBhcmFtczogc3RyaW5nW10gPSBbXG4gICAgICAndmlzaWJsZScsXG4gICAgICAnZm9jdXMnLFxuICAgICAgJ3ByZWZpeENscycsXG4gICAgICAnYW5pbWF0ZWQnLFxuICAgICAgJ2Nsb3NhYmxlJyxcbiAgICAgICdtYXNrQ2xvc2FibGUnLFxuICAgICAgJ29uQ2xvc2UnLFxuICAgICAgJ3RyYW5zcGFyZW50JyxcbiAgICAgICdwb3B1cCcsXG4gICAgICAnYW5pbWF0aW9uVHlwZScsXG4gICAgICAndGl0bGUnLFxuICAgICAgJ2Zvb3RlcicsXG4gICAgICAncGxhdGZvcm0nLFxuICAgICAgJ2NsYXNzTmFtZScsXG4gICAgICAnd3JhcENsYXNzTmFtZScsXG4gICAgICAnbWVzc2FnZScsXG4gICAgICAnYWN0aW9ucycsXG4gICAgICAnY2FsbGJhY2tPckFjdGlvbnMnLFxuICAgICAgJ3R5cGUnLFxuICAgICAgJ2RlZmF1bHRWYWx1ZScsXG4gICAgICAncGxhY2Vob2xkZXJzJyxcbiAgICAgICdvcGVyYXRpb24nLFxuICAgICAgJ3RyYW5zaXRpb25OYW1lJyxcbiAgICAgICdtYXNrVHJhbnNpdGlvbk5hbWUnLFxuICAgICAgJ2Nsb3NlJyxcbiAgICAgICdjbG9zZVdpdGhBbmltYXRpb24nXG4gICAgXTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25maWcgPSBPYmplY3QuYXNzaWduKFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHtcbiAgICAgICAgY2xvc2U6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoY29uZmlnLm1hc2tDbG9zYWJsZSB8fCBjb25maWcuY2xvc2FibGUpIHtcbiAgICAgICAgICAgIHNlbGYuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbG9zZVdpdGhBbmltYXRpb246ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICBzZWxmLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1trZXldID0gY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgX29wZW4ocHJvcHM6IE1vZGFsQmFzZU9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IGNoaWxkSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBNb2RhbE9wdGlvbnMsXG4gICAgICAgIHVzZVZhbHVlOiBwcm9wc1xuICAgICAgfVxuICAgIF0pO1xuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLnNob3dQb3B1cChNb2RhbFNlcnZpY2VDb21wb25lbnQsIGNoaWxkSW5qZWN0b3IpO1xuICAgIHJldHVybiB0aGlzLm1vZGFsUmVmICYmIHRoaXMubW9kYWxSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBjbG9zZVdpdGhBbmltYXRpb24oKSB7XG4gICAgY29uc3Qgb3B0aW9uczogTW9kYWxCYXNlT3B0aW9ucyA9IG5ldyBNb2RhbEJhc2VPcHRpb25zKCk7XG4gICAgdGhpcy5tb2RhbFJlZi5pbnN0YW5jZS50cmFuc2l0aW9uTmFtZSA9IGAke29wdGlvbnMudHJhbnNpdGlvbk5hbWV9LWxlYXZlICR7b3B0aW9ucy50cmFuc2l0aW9uTmFtZX0tbGVhdmUtYWN0aXZlYDtcbiAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLm1hc2tUcmFuc2l0aW9uTmFtZSA9IGAke29wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lfS1sZWF2ZSAke29wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lfS1sZWF2ZS1hY3RpdmVgO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBhbGVydChcbiAgICB0aXRsZT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgYWN0aW9ucz86IEFycmF5PGFueT4sXG4gICAgcGxhdGZvcm0/OiBzdHJpbmdcbiAgKTogYW55IHtcbiAgICBjb25zdCBvcHRpb25zOiBBbGVydE9wdGlvbnMgPSBuZXcgQWxlcnRPcHRpb25zKCk7XG4gICAgb3B0aW9ucy52aXNpYmxlID0gdHJ1ZTtcbiAgICBvcHRpb25zLnRyYW5zcGFyZW50ID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5tYXNrQ2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLnBsYXRmb3JtID0gJ2lvcyc7XG5cbiAgICBjb25zdCBmb290ZXIgPSBnZXRGb290ZXIuY2FsbCh0aGlzLCBhY3Rpb25zKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIGZvb3RlcjogZm9vdGVyLFxuICAgICAgYWN0aW9uczogZm9vdGVyLFxuICAgICAgcGxhdGZvcm06IHBsYXRmb3JtID8gcGxhdGZvcm0gOiAnaW9zJ1xuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgcHJvbXB0KFxuICAgIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBjYWxsYmFja09yQWN0aW9ucz86IGFueSxcbiAgICB0eXBlPzogc3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZT86IEFycmF5PHN0cmluZz4sXG4gICAgcGxhY2Vob2xkZXJzPzogQXJyYXk8YW55PixcbiAgICBwbGF0Zm9ybT86IHN0cmluZ1xuICApOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IG5ldyBNb2RhbE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLnZpc2libGUgPSB0cnVlO1xuICAgIG9wdGlvbnMudHJhbnNwYXJlbnQgPSB0cnVlO1xuICAgIG9wdGlvbnMuY2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLm1hc2tDbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gJ2FtLW1vZGFsLWFsZXJ0LWNvbnRlbnQnO1xuICAgIG9wdGlvbnMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlIHx8IFsnJywgJyddO1xuICAgIG9wdGlvbnMucGxhY2Vob2xkZXJzID0gcGxhY2Vob2xkZXJzO1xuICAgIChvcHRpb25zLnR5cGUgPSB0eXBlID8gdHlwZSA6ICdkZWZhdWx0JyksIChvcHRpb25zLnBsYXRmb3JtID0gcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnKTtcblxuICAgIGZ1bmN0aW9uIGdldEFyZ3Moc2VsZiwgZnVuYykge1xuICAgICAgY29uc3QgdGV4dCA9IHNlbGYubW9kYWxSZWYuaW5zdGFuY2UuZGF0YS50ZXh0IHx8IG9wdGlvbnMuZGVmYXVsdFZhbHVlWzBdO1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSBzZWxmLm1vZGFsUmVmLmluc3RhbmNlLmRhdGEucGFzc3dvcmQgfHwgb3B0aW9ucy5kZWZhdWx0VmFsdWVbMV07XG4gICAgICBpZiAodHlwZSA9PT0gJ2xvZ2luLXBhc3N3b3JkJykge1xuICAgICAgICByZXR1cm4gZnVuYyh0ZXh0LCBwYXNzd29yZCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzZWN1cmUtdGV4dCcpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMocGFzc3dvcmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmModGV4dCk7XG4gICAgfVxuXG4gICAgbGV0IGFjdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFja09yQWN0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3Qgb25QcmVzcyA9IGdldEFyZ3ModGhpcywgY2FsbGJhY2tPckFjdGlvbnMpO1xuICAgICAgYWN0aW9ucyA9IFtcbiAgICAgICAgeyB0ZXh0OiAnQ2FuY2VsJyB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ09LJyxcbiAgICAgICAgICBvblByZXNzOiAoKSA9PiB7XG4gICAgICAgICAgICBvblByZXNzLmNhbGwoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGlvbnMgPSBjYWxsYmFja09yQWN0aW9ucy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgIG9uUHJlc3M6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLm9uUHJlc3MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldEFyZ3ModGhpcywgaXRlbS5vblByZXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb290ZXIgPSBnZXRGb290ZXIuY2FsbCh0aGlzLCBhY3Rpb25zKTtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB0eXBlOiB0eXBlID8gdHlwZSA6ICdkZWZhdWx0JyxcbiAgICAgIGZvb3RlcjogZm9vdGVyLFxuICAgICAgYWN0aW9uczogZm9vdGVyLFxuICAgICAgcGxhdGZvcm06IHBsYXRmb3JtID8gcGxhdGZvcm0gOiAnaW9zJ1xuICAgIH0pO1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5faW5pdENvbmZpZyhjb25maWcsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLl9vcGVuKHByb3BzKTtcbiAgfVxuXG4gIG9wZXJhdGlvbihhY3Rpb25zPzogYW55LCBwbGF0Zm9ybT86IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3Qgb3B0aW9uczogTW9kYWxPcHRpb25zID0gbmV3IE1vZGFsT3B0aW9ucygpO1xuICAgIG9wdGlvbnMudmlzaWJsZSA9IHRydWU7XG4gICAgb3B0aW9ucy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgb3B0aW9ucy5jbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMubWFza0Nsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5vcGVyYXRpb24gPSB0cnVlO1xuICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gJ2FtLW1vZGFsLW9wZXJhdGlvbic7XG4gICAgY29uc3QgZm9vdGVyID0gZ2V0Rm9vdGVyLmNhbGwodGhpcywgYWN0aW9ucyk7XG5cbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGZvb3RlcjogZm9vdGVyLFxuICAgICAgYWN0aW9uczogZm9vdGVyLFxuICAgICAgcGxhdGZvcm06IHBsYXRmb3JtID8gcGxhdGZvcm0gOiAnaW9zJ1xuICAgIH0pO1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5faW5pdENvbmZpZyhjb25maWcsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLl9vcGVuKHByb3BzKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuaGlkZVBvcHVwKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9vdGVyKGFjdGlvbnMpIHtcbiAgbGV0IGFjdGlvbiA9IGFjdGlvbnMgPyBhY3Rpb25zIDogW3sgdGV4dDogJ09LJywgb25QcmVzczogKCkgPT4ge30gfV07XG4gIHJldHVybiBhY3Rpb24ubWFwKChidXR0b246IEFjdGlvbikgPT4ge1xuICAgIGNvbnN0IG9yZ2luUHJlc3MgPSBidXR0b24ub25QcmVzcyB8fCBmdW5jdGlvbigpIHt9O1xuICAgIGJ1dHRvbi5vblByZXNzID0gKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gb3JnaW5QcmVzcygpO1xuICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xuICAgICAgICByZXMudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZVdpdGhBbmltYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfSk7XG59XG4iXX0=