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