ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
321 lines • 26 kB
JavaScript
/**
* @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==