UNPKG

ng-zorro-antd-mobile

Version:

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

360 lines 26.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; 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'; var ModalService = /** @class */ (function (_super) { tslib_1.__extends(ModalService, _super); function ModalService() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.modalRef = null; return _this; } /** * @param {?} config * @param {?} options * @return {?} */ ModalService.prototype._initConfig = /** * @param {?} config * @param {?} options * @return {?} */ function (config, options) { /** @type {?} */ var props = new ModalBaseOptions(); /** @type {?} */ var 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 {?} */ var self = this; config = Object.assign(options, config, { close: (/** * @return {?} */ function () { if (config.maskClosable || config.closable) { self.closeWithAnimation(); } }) }, { closeWithAnimation: (/** * @return {?} */ function () { self.closeWithAnimation(); }) }); optionalParams.forEach((/** * @param {?} key * @return {?} */ function (key) { if (config[key] !== undefined) { props[key] = config[key]; } })); return props; }; /** * @param {?} props * @return {?} */ ModalService.prototype._open = /** * @param {?} props * @return {?} */ function (props) { /** @type {?} */ var childInjector = Injector.create([ { provide: ModalOptions, useValue: props } ]); this.modalRef = this.showPopup(ModalServiceComponent, childInjector); return this.modalRef && this.modalRef.instance; }; /** * @return {?} */ ModalService.prototype.closeWithAnimation = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var 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 {?} */ function () { _this.close(); }), 200); }; /** * @param {?=} title * @param {?=} message * @param {?=} actions * @param {?=} platform * @return {?} */ ModalService.prototype.alert = /** * @param {?=} title * @param {?=} message * @param {?=} actions * @param {?=} platform * @return {?} */ function (title, message, actions, platform) { /** @type {?} */ var options = new AlertOptions(); options.visible = true; options.transparent = true; options.closable = false; options.maskClosable = false; options.platform = 'ios'; /** @type {?} */ var footer = getFooter.call(this, actions); /** @type {?} */ var config = Object.assign({ title: title, message: message, footer: footer, actions: footer, platform: platform ? platform : 'ios' }); /** @type {?} */ var props = this._initConfig(config, options); return this._open(props); }; /** * @param {?=} title * @param {?=} message * @param {?=} callbackOrActions * @param {?=} type * @param {?=} defaultValue * @param {?=} placeholders * @param {?=} platform * @return {?} */ ModalService.prototype.prompt = /** * @param {?=} title * @param {?=} message * @param {?=} callbackOrActions * @param {?=} type * @param {?=} defaultValue * @param {?=} placeholders * @param {?=} platform * @return {?} */ function (title, message, callbackOrActions, type, defaultValue, placeholders, platform) { var _this = this; /** @type {?} */ var 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 {?} */ var text = self.modalRef.instance.data.text || options.defaultValue[0]; /** @type {?} */ var 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 {?} */ var actions; if (typeof callbackOrActions === 'function') { /** @type {?} */ var onPress_1 = getArgs(this, callbackOrActions); actions = [ { text: 'Cancel' }, { text: 'OK', onPress: (/** * @return {?} */ function () { onPress_1.call(); }) } ]; } else { actions = callbackOrActions.map((/** * @param {?} item * @return {?} */ function (item) { return { text: item.text, onPress: (/** * @return {?} */ function () { if (item.onPress) { return getArgs(_this, item.onPress); } }) }; })); } /** @type {?} */ var footer = getFooter.call(this, actions); /** @type {?} */ var config = Object.assign({ title: title, message: message, type: type ? type : 'default', footer: footer, actions: footer, platform: platform ? platform : 'ios' }); /** @type {?} */ var props = this._initConfig(config, options); return this._open(props); }; /** * @param {?=} actions * @param {?=} platform * @return {?} */ ModalService.prototype.operation = /** * @param {?=} actions * @param {?=} platform * @return {?} */ function (actions, platform) { /** @type {?} */ var options = new ModalOptions(); options.visible = true; options.transparent = true; options.closable = false; options.maskClosable = false; options.operation = true; options.className = 'am-modal-operation'; /** @type {?} */ var footer = getFooter.call(this, actions); /** @type {?} */ var config = Object.assign({ footer: footer, actions: footer, platform: platform ? platform : 'ios' }); /** @type {?} */ var props = this._initConfig(config, options); return this._open(props); }; /** * @return {?} */ ModalService.prototype.close = /** * @return {?} */ function () { this.hidePopup(); }; ModalService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, { type: Injectable } ]; return ModalService; }(PopupService)); export { ModalService }; if (false) { /** @type {?} */ ModalService.prototype.modalRef; } /** * @param {?} actions * @return {?} */ function getFooter(actions) { var _this = this; /** @type {?} */ var action = actions ? actions : [{ text: 'OK', onPress: (/** * @return {?} */ function () { }) }]; return action.map((/** * @param {?} button * @return {?} */ function (button) { /** @type {?} */ var orginPress = button.onPress || (/** * @return {?} */ function () { }); button.onPress = (/** * @return {?} */ function () { /** @type {?} */ var res = orginPress(); if (res && res.then) { res.then((/** * @return {?} */ function () { _this.closeWithAnimation(); })); } else { _this.closeWithAnimation(); } }); return button; })); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsibW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBVSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU5RDtJQUlrQyx3Q0FBWTtJQUo5QztRQUFBLHFFQXNNQztRQWpNQyxjQUFRLEdBQXdDLElBQUksQ0FBQzs7SUFpTXZELENBQUM7Ozs7OztJQWhNQyxrQ0FBVzs7Ozs7SUFBWCxVQUFZLE1BQXdCLEVBQUUsT0FBWTs7WUFDMUMsS0FBSyxHQUFxQixJQUFJLGdCQUFnQixFQUFFOztZQUNoRCxjQUFjLEdBQWE7WUFDL0IsU0FBUztZQUNULE9BQU87WUFDUCxXQUFXO1lBQ1gsVUFBVTtZQUNWLFVBQVU7WUFDVixjQUFjO1lBQ2QsU0FBUztZQUNULGFBQWE7WUFDYixPQUFPO1lBQ1AsZUFBZTtZQUNmLE9BQU87WUFDUCxRQUFRO1lBQ1IsVUFBVTtZQUNWLFdBQVc7WUFDWCxlQUFlO1lBQ2YsU0FBUztZQUNULFNBQVM7WUFDVCxtQkFBbUI7WUFDbkIsTUFBTTtZQUNOLGNBQWM7WUFDZCxjQUFjO1lBQ2QsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsT0FBTztZQUNQLG9CQUFvQjtTQUNyQjs7WUFDSyxJQUFJLEdBQUcsSUFBSTtRQUNqQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDcEIsT0FBTyxFQUNQLE1BQU0sRUFDTjtZQUNFLEtBQUs7OztZQUFFO2dC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LE9BQU87SUFBMUIsaUJBZ0JDOztRQWZLLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTzs7O1lBQUUsY0FBTyxDQUFDLENBQUEsRUFBRSxDQUFDO0lBQ3BFLE9BQU8sTUFBTSxDQUFDLEdBQUc7Ozs7SUFBQyxVQUFDLE1BQWM7O1lBQ3pCLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTzs7O1FBQUksY0FBWSxDQUFDLENBQUE7UUFDbEQsTUFBTSxDQUFDLE9BQU87OztRQUFHOztnQkFDVCxHQUFHLEdBQUcsVUFBVSxFQUFFO1lBQ3hCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJOzs7Z0JBQUM7b0JBQ1AsS0FBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVCLENBQUMsRUFBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsS0FBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7UUFDSCxDQUFDLENBQUEsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsRUFBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBDb21wb25lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2VDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbEJhc2VPcHRpb25zLCBNb2RhbE9wdGlvbnMsIEFsZXJ0T3B0aW9ucywgQWN0aW9uIH0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLnByb3ZpZGVyJztcbmltcG9ydCB7IFBvcHVwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcG9wdXAuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFJlZiB9IGZyb20gJy4vbW9kYWwtcmVmLmNsYXNzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSBleHRlbmRzIFBvcHVwU2VydmljZSB7XG4gIG1vZGFsUmVmOiBDb21wb25lbnRSZWY8TW9kYWxTZXJ2aWNlQ29tcG9uZW50PiA9IG51bGw7XG4gIF9pbml0Q29uZmlnKGNvbmZpZzogTW9kYWxCYXNlT3B0aW9ucywgb3B0aW9uczogYW55KTogTW9kYWxCYXNlT3B0aW9ucyB7XG4gICAgY29uc3QgcHJvcHM6IE1vZGFsQmFzZU9wdGlvbnMgPSBuZXcgTW9kYWxCYXNlT3B0aW9ucygpO1xuICAgIGNvbnN0IG9wdGlvbmFsUGFyYW1zOiBzdHJpbmdbXSA9IFtcbiAgICAgICd2aXNpYmxlJyxcbiAgICAgICdmb2N1cycsXG4gICAgICAncHJlZml4Q2xzJyxcbiAgICAgICdhbmltYXRlZCcsXG4gICAgICAnY2xvc2FibGUnLFxuICAgICAgJ21hc2tDbG9zYWJsZScsXG4gICAgICAnb25DbG9zZScsXG4gICAgICAndHJhbnNwYXJlbnQnLFxuICAgICAgJ3BvcHVwJyxcbiAgICAgICdhbmltYXRpb25UeXBlJyxcbiAgICAgICd0aXRsZScsXG4gICAgICAnZm9vdGVyJyxcbiAgICAgICdwbGF0Zm9ybScsXG4gICAgICAnY2xhc3NOYW1lJyxcbiAgICAgICd3cmFwQ2xhc3NOYW1lJyxcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdjYWxsYmFja09yQWN0aW9ucycsXG4gICAgICAndHlwZScsXG4gICAgICAnZGVmYXVsdFZhbHVlJyxcbiAgICAgICdwbGFjZWhvbGRlcnMnLFxuICAgICAgJ29wZXJhdGlvbicsXG4gICAgICAndHJhbnNpdGlvbk5hbWUnLFxuICAgICAgJ21hc2tUcmFuc2l0aW9uTmFtZScsXG4gICAgICAnY2xvc2UnLFxuICAgICAgJ2Nsb3NlV2l0aEFuaW1hdGlvbidcbiAgICBdO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICBvcHRpb25zLFxuICAgICAgY29uZmlnLFxuICAgICAge1xuICAgICAgICBjbG9zZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChjb25maWcubWFza0Nsb3NhYmxlIHx8IGNvbmZpZy5jbG9zYWJsZSkge1xuICAgICAgICAgICAgc2VsZi5jbG9zZVdpdGhBbmltYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsb3NlV2l0aEFuaW1hdGlvbjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHNlbGYuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChjb25maWdba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BzW2tleV0gPSBjb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICBfb3Blbihwcm9wczogTW9kYWxCYXNlT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgY2hpbGRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1vZGFsT3B0aW9ucyxcbiAgICAgICAgdXNlVmFsdWU6IHByb3BzXG4gICAgICB9XG4gICAgXSk7XG4gICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuc2hvd1BvcHVwKE1vZGFsU2VydmljZUNvbXBvbmVudCwgY2hpbGRJbmplY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxSZWYgJiYgdGhpcy5tb2RhbFJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIGNsb3NlV2l0aEFuaW1hdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25zOiBNb2RhbEJhc2VPcHRpb25zID0gbmV3IE1vZGFsQmFzZU9wdGlvbnMoKTtcbiAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLnRyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy50cmFuc2l0aW9uTmFtZX0tbGVhdmUgJHtvcHRpb25zLnRyYW5zaXRpb25OYW1lfS1sZWF2ZS1hY3RpdmVgO1xuICAgIHRoaXMubW9kYWxSZWYuaW5zdGFuY2UubWFza1RyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlICR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlLWFjdGl2ZWA7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGFsZXJ0KFxuICAgIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBhY3Rpb25zPzogQXJyYXk8YW55PixcbiAgICBwbGF0Zm9ybT86IHN0cmluZ1xuICApOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IEFsZXJ0T3B0aW9ucyA9IG5ldyBBbGVydE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLnZpc2libGUgPSB0cnVlO1xuICAgIG9wdGlvbnMudHJhbnNwYXJlbnQgPSB0cnVlO1xuICAgIG9wdGlvbnMuY2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLm1hc2tDbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMucGxhdGZvcm0gPSAnaW9zJztcblxuICAgIGNvbnN0IGZvb3RlciA9IGdldEZvb3Rlci5jYWxsKHRoaXMsIGFjdGlvbnMpO1xuXG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgZm9vdGVyOiBmb290ZXIsXG4gICAgICBhY3Rpb25zOiBmb290ZXIsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5fb3Blbihwcm9wcyk7XG4gIH1cblxuICBwcm9tcHQoXG4gICAgdGl0bGU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIGNhbGxiYWNrT3JBY3Rpb25zPzogYW55LFxuICAgIHR5cGU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlPzogQXJyYXk8c3RyaW5nPixcbiAgICBwbGFjZWhvbGRlcnM/OiBBcnJheTxhbnk+LFxuICAgIHBsYXRmb3JtPzogc3RyaW5nXG4gICk6IGFueSB7XG4gICAgY29uc3Qgb3B0aW9uczogTW9kYWxPcHRpb25zID0gbmV3IE1vZGFsT3B0aW9ucygpO1xuICAgIG9wdGlvbnMudmlzaWJsZSA9IHRydWU7XG4gICAgb3B0aW9ucy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgb3B0aW9ucy5jbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMubWFza0Nsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5jbGFzc05hbWUgPSAnYW0tbW9kYWwtYWxlcnQtY29udGVudCc7XG4gICAgb3B0aW9ucy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgfHwgWycnLCAnJ107XG4gICAgb3B0aW9ucy5wbGFjZWhvbGRlcnMgPSBwbGFjZWhvbGRlcnM7XG4gICAgKG9wdGlvbnMudHlwZSA9IHR5cGUgPyB0eXBlIDogJ2RlZmF1bHQnKSwgKG9wdGlvbnMucGxhdGZvcm0gPSBwbGF0Zm9ybSA/IHBsYXRmb3JtIDogJ2lvcycpO1xuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyhzZWxmLCBmdW5jKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gc2VsZi5tb2RhbFJlZi5pbnN0YW5jZS5kYXRhLnRleHQgfHwgb3B0aW9ucy5kZWZhdWx0VmFsdWVbMF07XG4gICAgICBjb25zdCBwYXNzd29yZCA9IHNlbGYubW9kYWxSZWYuaW5zdGFuY2UuZGF0YS5wYXNzd29yZCB8fCBvcHRpb25zLmRlZmF1bHRWYWx1ZVsxXTtcbiAgICAgIGlmICh0eXBlID09PSAnbG9naW4tcGFzc3dvcmQnKSB7XG4gICAgICAgIHJldHVybiBmdW5jKHRleHQsIHBhc3N3b3JkKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NlY3VyZS10ZXh0Jykge1xuICAgICAgICByZXR1cm4gZnVuYyhwYXNzd29yZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyh0ZXh0KTtcbiAgICB9XG5cbiAgICBsZXQgYWN0aW9ucztcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrT3JBY3Rpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBvblByZXNzID0gZ2V0QXJncyh0aGlzLCBjYWxsYmFja09yQWN0aW9ucyk7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7IHRleHQ6ICdDYW5jZWwnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnT0snLFxuICAgICAgICAgIG9uUHJlc3M6ICgpID0+IHtcbiAgICAgICAgICAgIG9uUHJlc3MuY2FsbCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aW9ucyA9IGNhbGxiYWNrT3JBY3Rpb25zLm1hcChpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgb25QcmVzczogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0ub25QcmVzcykge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0QXJncyh0aGlzLCBpdGVtLm9uUHJlc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZvb3RlciA9IGdldEZvb3Rlci5jYWxsKHRoaXMsIGFjdGlvbnMpO1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGU6IHR5cGUgPyB0eXBlIDogJ2RlZmF1bHQnLFxuICAgICAgZm9vdGVyOiBmb290ZXIsXG4gICAgICBhY3Rpb25zOiBmb290ZXIsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgb3BlcmF0aW9uKGFjdGlvbnM/OiBhbnksIHBsYXRmb3JtPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBvcHRpb25zOiBNb2RhbE9wdGlvbnMgPSBuZXcgTW9kYWxPcHRpb25zKCk7XG4gICAgb3B0aW9ucy52aXNpYmxlID0gdHJ1ZTtcbiAgICBvcHRpb25zLnRyYW5zcGFyZW50ID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5tYXNrQ2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLm9wZXJhdGlvbiA9IHRydWU7XG4gICAgb3B0aW9ucy5jbGFzc05hbWUgPSAnYW0tbW9kYWwtb3BlcmF0aW9uJztcbiAgICBjb25zdCBmb290ZXIgPSBnZXRGb290ZXIuY2FsbCh0aGlzLCBhY3Rpb25zKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgZm9vdGVyOiBmb290ZXIsXG4gICAgICBhY3Rpb25zOiBmb290ZXIsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5oaWRlUG9wdXAoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRGb290ZXIoYWN0aW9ucykge1xuICBsZXQgYWN0aW9uID0gYWN0aW9ucyA/IGFjdGlvbnMgOiBbeyB0ZXh0OiAnT0snLCBvblByZXNzOiAoKSA9PiB7fSB9XTtcbiAgcmV0dXJuIGFjdGlvbi5tYXAoKGJ1dHRvbjogQWN0aW9uKSA9PiB7XG4gICAgY29uc3Qgb3JnaW5QcmVzcyA9IGJ1dHRvbi5vblByZXNzIHx8IGZ1bmN0aW9uKCkge307XG4gICAgYnV0dG9uLm9uUHJlc3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBvcmdpblByZXNzKCk7XG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gYnV0dG9uO1xuICB9KTtcbn1cbiJdfQ==