ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
343 lines (342 loc) • 28 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, Compiler, ComponentFactoryResolver } from '@angular/core';
import { ModalComponent } from './modal.component';
import { BaseOptions, ModalOptions, AlertOptions } from './modal-options.provider';
var Modal = /** @class */ (function () {
function Modal(_appRef, _compiler, _cfr) {
this._appRef = _appRef;
this._compiler = _compiler;
this._cfr = _cfr;
Modal.appRef = this._appRef;
Modal._modalCompFactory = this._cfr.resolveComponentFactory(ModalComponent);
}
/**
* @param {?} config
* @param {?} options
* @return {?}
*/
Modal._initConfig = /**
* @param {?} config
* @param {?} options
* @return {?}
*/
function (config, options) {
/** @type {?} */
var props = new BaseOptions();
/** @type {?} */
var optionalParams = [
'visible',
'focus',
'closable',
'maskClosable',
'onClose',
'transparent',
'popup',
'animationType',
'title',
'footer',
'platform',
'className',
'wrapClassName',
'message',
'actions',
'callbackOrActions',
'type',
'defaultValue',
'placeholders',
'operation',
'transitionName',
'maskTransitionName',
'close'
];
options.transitionName = options.transitionName + "-enter " + options.transitionName + "-enter-active";
options.maskTransitionName = options.maskTransitionName + "-enter " + options.maskTransitionName + "-enter-active";
config = Object.assign(options, config, {
close: function () {
if (config.maskClosable || config.closable) {
Modal.closeWithAnimation();
}
}
});
optionalParams.forEach(function (key) {
if (config[key] !== undefined) {
props[key] = config[key];
}
});
return props;
};
/**
* @param {?} props
* @param {?} factory
* @return {?}
*/
Modal._open = /**
* @param {?} props
* @param {?} factory
* @return {?}
*/
function (props, factory) {
document.body.insertBefore(document.createElement(factory.selector), document.body.firstChild);
/** @type {?} */
var subject;
Modal.compRef = Modal.appRef.bootstrap(factory);
Modal.instance = Modal.compRef.instance;
subject = Modal.instance.subject;
Object.assign(Modal.instance, props);
return subject;
};
/**
* @return {?}
*/
Modal.closeWithAnimation = /**
* @return {?}
*/
function () {
/** @type {?} */
var options = new BaseOptions();
Modal.instance.transitionName = options.transitionName + "-leave " + options.transitionName + "-leave-active";
Modal.instance.maskTransitionName = options.maskTransitionName + "-leave " + options.maskTransitionName + "-leave-active";
setTimeout(function () {
Modal.close();
}, 200);
};
/**
* @param {?} config
* @return {?}
*/
Modal.open = /**
* @param {?} config
* @return {?}
*/
function (config) {
/** @type {?} */
var options = new ModalOptions();
/** @type {?} */
var props = Modal._initConfig(config, options);
return Modal._open(props, Modal._modalCompFactory);
};
/**
* @param {?=} title
* @param {?=} message
* @param {?=} actions
* @param {?=} platform
* @return {?}
*/
Modal.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(actions);
/** @type {?} */
var config = Object.assign({
title: title,
message: message,
actions: footer ? footer : [{ text: '确定' }],
platform: platform ? platform : 'ios'
});
/** @type {?} */
var props = Modal._initConfig(config, options);
return Modal._open(props, this._modalCompFactory);
};
/**
* @param {?=} title
* @param {?=} message
* @param {?=} callbackOrActions
* @param {?=} type
* @param {?=} defaultValue
* @param {?=} placeholders
* @param {?=} platform
* @return {?}
*/
Modal.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 AlertOptions();
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.instance.data.text || defaultValue || '';
/** @type {?} */
var password = self.instance.data.password || '';
if (type === 'login-password') {
return func(text, password);
}
else if (type === 'secure-text') {
return func(password || defaultValue);
}
return func(text);
}
/** @type {?} */
var actions;
if (typeof callbackOrActions === 'function') {
actions = [
{ text: '取消' },
{
text: '确定',
onPress: function () {
getArgs(_this, callbackOrActions);
}
}
];
}
else {
actions = callbackOrActions.map(function (item) {
return {
text: item.text,
onPress: function () {
if (item.onPress) {
return getArgs(_this, item.onPress);
}
}
};
});
}
/** @type {?} */
var footer = getFooter(actions);
/** @type {?} */
var config = Object.assign({
title: title,
message: message,
type: type ? type : 'default',
actions: footer ? footer : [{ text: '确定' }],
platform: platform ? platform : 'ios'
});
/** @type {?} */
var props = Modal._initConfig(config, options);
return Modal._open(props, this._modalCompFactory);
};
/**
* @param {?=} actions
* @param {?=} platform
* @return {?}
*/
Modal.operation = /**
* @param {?=} actions
* @param {?=} platform
* @return {?}
*/
function (actions, platform) {
/** @type {?} */
var options = new BaseOptions();
options.visible = true;
options.transparent = true;
options.closable = false;
options.maskClosable = false;
options.operation = true;
options.className = 'am-modal-operation';
/** @type {?} */
var footer = getFooter(actions);
/** @type {?} */
var config = Object.assign({
actions: footer ? footer : [{ text: '确定' }],
platform: platform ? platform : 'ios'
});
/** @type {?} */
var props = Modal._initConfig(config, options);
return Modal._open(props, this._modalCompFactory);
};
/**
* @return {?}
*/
Modal.close = /**
* @return {?}
*/
function () {
if (Modal.compRef) {
Modal.compRef.destroy();
Modal.compRef = null;
}
};
Modal.compRef = null;
Modal._modalCompFactory = null;
Modal.appRef = null;
Modal.instance = null;
Modal.decorators = [
{ type: Injectable }
];
/** @nocollapse */
Modal.ctorParameters = function () { return [
{ type: ApplicationRef },
{ type: Compiler },
{ type: ComponentFactoryResolver }
]; };
return Modal;
}());
export { Modal };
if (false) {
/** @type {?} */
Modal.compRef;
/** @type {?} */
Modal._modalCompFactory;
/** @type {?} */
Modal.appRef;
/** @type {?} */
Modal.instance;
/** @type {?} */
Modal.prototype._appRef;
/** @type {?} */
Modal.prototype._compiler;
/** @type {?} */
Modal.prototype._cfr;
}
/**
* @param {?} actions
* @return {?}
*/
function getFooter(actions) {
return actions.map(function (button) {
/** @type {?} */
var orginPress = button.onPress || function () { };
button.onPress = function () {
/** @type {?} */
var res = orginPress();
if (res && res.then) {
res.then(function () {
Modal.closeWithAnimation();
});
}
else {
Modal.closeWithAnimation();
}
};
return button;
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsibW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFHVixjQUFjLEVBQ2QsUUFBUSxFQUVSLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sMEJBQTBCLENBQUM7O0lBUXpGLGVBQW9CLE9BQXVCLEVBQVUsU0FBbUIsRUFBVSxJQUE4QjtRQUE1RixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5RyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsS0FBSyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDN0U7Ozs7OztJQUVNLGlCQUFXOzs7OztJQUFsQixVQUFtQixNQUFtQixFQUFFLE9BQVk7O1FBQ2xELElBQU0sS0FBSyxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDOztRQUM3QyxJQUFNLGNBQWMsR0FBYTtZQUMvQixTQUFTO1lBQ1QsT0FBTztZQUNQLFVBQVU7WUFDVixjQUFjO1lBQ2QsU0FBUztZQUNULGFBQWE7WUFDYixPQUFPO1lBQ1AsZUFBZTtZQUNmLE9BQU87WUFDUCxRQUFRO1lBQ1IsVUFBVTtZQUNWLFdBQVc7WUFDWCxlQUFlO1lBQ2YsU0FBUztZQUNULFNBQVM7WUFDVCxtQkFBbUI7WUFDbkIsTUFBTTtZQUNOLGNBQWM7WUFDZCxjQUFjO1lBQ2QsV0FBVztZQUNYLGdCQUFnQjtZ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SSxFQUFFO2dCQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNQLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2lCQUM1QixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUM1QjtTQUNGLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztLQUNmLENBQUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5LFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcGlsZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBNb2RhbE9wdGlvbnMsIEFsZXJ0T3B0aW9ucywgQWN0aW9uIH0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLnByb3ZpZGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsIHtcbiAgc3RhdGljIGNvbXBSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gbnVsbDtcbiAgc3RhdGljIF9tb2RhbENvbXBGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PE1vZGFsQ29tcG9uZW50PiA9IG51bGw7XG4gIHN0YXRpYyBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmID0gbnVsbDtcbiAgc3RhdGljIGluc3RhbmNlID0gbnVsbDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBfY29tcGlsZXI6IENvbXBpbGVyLCBwcml2YXRlIF9jZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xuICAgIE1vZGFsLmFwcFJlZiA9IHRoaXMuX2FwcFJlZjtcbiAgICBNb2RhbC5fbW9kYWxDb21wRmFjdG9yeSA9IHRoaXMuX2Nmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShNb2RhbENvbXBvbmVudCk7XG4gIH1cblxuICBzdGF0aWMgX2luaXRDb25maWcoY29uZmlnOiBCYXNlT3B0aW9ucywgb3B0aW9uczogYW55KTogQmFzZU9wdGlvbnMge1xuICAgIGNvbnN0IHByb3BzOiBCYXNlT3B0aW9ucyA9IG5ldyBCYXNlT3B0aW9ucygpO1xuICAgIGNvbnN0IG9wdGlvbmFsUGFyYW1zOiBzdHJpbmdbXSA9IFtcbiAgICAgICd2aXNpYmxlJyxcbiAgICAgICdmb2N1cycsXG4gICAgICAnY2xvc2FibGUnLFxuICAgICAgJ21hc2tDbG9zYWJsZScsXG4gICAgICAnb25DbG9zZScsXG4gICAgICAndHJhbnNwYXJlbnQnLFxuICAgICAgJ3BvcHVwJyxcbiAgICAgICdhbmltYXRpb25UeXBlJyxcbiAgICAgICd0aXRsZScsXG4gICAgICAnZm9vdGVyJyxcbiAgICAgICdwbGF0Zm9ybScsXG4gICAgICAnY2xhc3NOYW1lJyxcbiAgICAgICd3cmFwQ2xhc3NOYW1lJyxcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdjYWxsYmFja09yQWN0aW9ucycsXG4gICAgICAndHlwZScsXG4gICAgICAnZGVmYXVsdFZhbHVlJyxcbiAgICAgICdwbGFjZWhvbGRlcnMnLFxuICAgICAgJ29wZXJhdGlvbicsXG4gICAgICAndHJhbnNpdGlvbk5hbWUnLFxuICAgICAgJ21hc2tUcmFuc2l0aW9uTmFtZScsXG4gICAgICAnY2xvc2UnXG4gICAgXTtcbiAgICBvcHRpb25zLnRyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy50cmFuc2l0aW9uTmFtZX0tZW50ZXIgJHtvcHRpb25zLnRyYW5zaXRpb25OYW1lfS1lbnRlci1hY3RpdmVgO1xuICAgIG9wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWVudGVyICR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWVudGVyLWFjdGl2ZWA7XG4gICAgY29uZmlnID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCBjb25maWcsIHtcbiAgICAgIGNsb3NlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChjb25maWcubWFza0Nsb3NhYmxlIHx8IGNvbmZpZy5jbG9zYWJsZSkge1xuICAgICAgICAgIE1vZGFsLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgb3B0aW9uYWxQYXJhbXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNba2V5XSA9IGNvbmZpZ1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9wcztcbiAgfVxuXG4gIHN0YXRpYyBfb3Blbihwcm9wczogQmFzZU9wdGlvbnMsIGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55Pik6IGFueSB7XG4gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChmYWN0b3J5LnNlbGVjdG9yKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICBsZXQgc3ViamVjdDogYW55O1xuICAgIE1vZGFsLmNvbXBSZWYgPSBNb2RhbC5hcHBSZWYuYm9vdHN0cmFwKGZhY3RvcnkpO1xuICAgIE1vZGFsLmluc3RhbmNlID0gTW9kYWwuY29tcFJlZi5pbnN0YW5jZTtcbiAgICBzdWJqZWN0ID0gTW9kYWwuaW5zdGFuY2Uuc3ViamVjdDtcbiAgICBPYmplY3QuYXNzaWduKE1vZGFsLmluc3RhbmNlLCBwcm9wcyk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cblxuICBzdGF0aWMgY2xvc2VXaXRoQW5pbWF0aW9uKCkge1xuICAgIGNvbnN0IG9wdGlvbnM6IEJhc2VPcHRpb25zID0gbmV3IEJhc2VPcHRpb25zKCk7XG4gICAgTW9kYWwuaW5zdGFuY2UudHJhbnNpdGlvbk5hbWUgPSBgJHtvcHRpb25zLnRyYW5zaXRpb25OYW1lfS1sZWF2ZSAke29wdGlvbnMudHJhbnNpdGlvbk5hbWV9LWxlYXZlLWFjdGl2ZWA7XG4gICAgTW9kYWwuaW5zdGFuY2UubWFza1RyYW5zaXRpb25OYW1lID0gYCR7b3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlICR7XG4gICAgICBvcHRpb25zLm1hc2tUcmFuc2l0aW9uTmFtZVxuICAgIH0tbGVhdmUtYWN0aXZlYDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIE1vZGFsLmNsb3NlKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHN0YXRpYyBvcGVuKGNvbmZpZzogQmFzZU9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IG9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IG5ldyBNb2RhbE9wdGlvbnMoKTtcbiAgICBjb25zdCBwcm9wcyA9IE1vZGFsLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIE1vZGFsLl9vcGVuKHByb3BzLCBNb2RhbC5fbW9kYWxDb21wRmFjdG9yeSk7XG4gIH1cblxuICBzdGF0aWMgYWxlcnQoXG4gICAgdGl0bGU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIGFjdGlvbnM/OiBBcnJheTxhbnk+LFxuICAgIHBsYXRmb3JtPzogc3RyaW5nXG4gICk6IGFueSB7XG4gICAgY29uc3Qgb3B0aW9uczogQWxlcnRPcHRpb25zID0gbmV3IEFsZXJ0T3B0aW9ucygpO1xuICAgIG9wdGlvbnMudmlzaWJsZSA9IHRydWU7XG4gICAgb3B0aW9ucy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgb3B0aW9ucy5jbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMubWFza0Nsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5wbGF0Zm9ybSA9ICdpb3MnO1xuXG4gICAgY29uc3QgZm9vdGVyID0gZ2V0Rm9vdGVyKGFjdGlvbnMpO1xuXG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgYWN0aW9uczogZm9vdGVyID8gZm9vdGVyIDogW3sgdGV4dDogJ+ehruWumicgfV0sXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9wcyA9IE1vZGFsLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIE1vZGFsLl9vcGVuKHByb3BzLCB0aGlzLl9tb2RhbENvbXBGYWN0b3J5KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9tcHQoXG4gICAgdGl0bGU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIGNhbGxiYWNrT3JBY3Rpb25zPzogYW55LFxuICAgIHR5cGU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nLFxuICAgIHBsYWNlaG9sZGVycz86IEFycmF5PGFueT4sXG4gICAgcGxhdGZvcm0/OiBzdHJpbmdcbiAgKTogYW55IHtcbiAgICBjb25zdCBvcHRpb25zOiBBbGVydE9wdGlvbnMgPSBuZXcgQWxlcnRPcHRpb25zKCk7XG4gICAgb3B0aW9ucy52aXNpYmxlID0gdHJ1ZTtcbiAgICBvcHRpb25zLnRyYW5zcGFyZW50ID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5tYXNrQ2xvc2FibGUgPSBmYWxzZTtcbiAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICdhbS1tb2RhbC1hbGVydC1jb250ZW50JztcbiAgICBvcHRpb25zLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICBvcHRpb25zLnBsYWNlaG9sZGVycyA9IHBsYWNlaG9sZGVycztcbiAgICAob3B0aW9ucy50eXBlID0gdHlwZSA/IHR5cGUgOiAnZGVmYXVsdCcpLCAob3B0aW9ucy5wbGF0Zm9ybSA9IHBsYXRmb3JtID8gcGxhdGZvcm0gOiAnaW9zJyk7XG5cbiAgICBmdW5jdGlvbiBnZXRBcmdzKHNlbGYsIGZ1bmMpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBzZWxmLmluc3RhbmNlLmRhdGEudGV4dCB8fCBkZWZhdWx0VmFsdWUgfHwgJyc7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IHNlbGYuaW5zdGFuY2UuZGF0YS5wYXNzd29yZCB8fCAnJztcbiAgICAgIGlmICh0eXBlID09PSAnbG9naW4tcGFzc3dvcmQnKSB7XG4gICAgICAgIHJldHVybiBmdW5jKHRleHQsIHBhc3N3b3JkKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NlY3VyZS10ZXh0Jykge1xuICAgICAgICByZXR1cm4gZnVuYyhwYXNzd29yZCB8fCBkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmModGV4dCk7XG4gICAgfVxuXG4gICAgbGV0IGFjdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFja09yQWN0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYWN0aW9ucyA9IFtcbiAgICAgICAgeyB0ZXh0OiAn5Y+W5raIJyB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ+ehruWumicsXG4gICAgICAgICAgb25QcmVzczogKCkgPT4ge1xuICAgICAgICAgICAgZ2V0QXJncyh0aGlzLCBjYWxsYmFja09yQWN0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rpb25zID0gY2FsbGJhY2tPckFjdGlvbnMubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICBvblByZXNzOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5vblByZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBnZXRBcmdzKHRoaXMsIGl0ZW0ub25QcmVzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9vdGVyID0gZ2V0Rm9vdGVyKGFjdGlvbnMpO1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGU6IHR5cGUgPyB0eXBlIDogJ2RlZmF1bHQnLFxuICAgICAgYWN0aW9uczogZm9vdGVyID8gZm9vdGVyIDogW3sgdGV4dDogJ+ehruWumicgfV0sXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0gPyBwbGF0Zm9ybSA6ICdpb3MnXG4gICAgfSk7XG4gICAgY29uc3QgcHJvcHMgPSBNb2RhbC5faW5pdENvbmZpZyhjb25maWcsIG9wdGlvbnMpO1xuICAgIHJldHVybiBNb2RhbC5fb3Blbihwcm9wcywgdGhpcy5fbW9kYWxDb21wRmFjdG9yeSk7XG4gIH1cblxuICBzdGF0aWMgb3BlcmF0aW9uKGFjdGlvbnM/OiBhbnksIHBsYXRmb3JtPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBvcHRpb25zOiBCYXNlT3B0aW9ucyA9IG5ldyBCYXNlT3B0aW9ucygpO1xuICAgIG9wdGlvbnMudmlzaWJsZSA9IHRydWU7XG4gICAgb3B0aW9ucy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgb3B0aW9ucy5jbG9zYWJsZSA9IGZhbHNlO1xuICAgIG9wdGlvbnMubWFza0Nsb3NhYmxlID0gZmFsc2U7XG4gICAgb3B0aW9ucy5vcGVyYXRpb24gPSB0cnVlO1xuICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gJ2FtLW1vZGFsLW9wZXJhdGlvbic7XG4gICAgY29uc3QgZm9vdGVyID0gZ2V0Rm9vdGVyKGFjdGlvbnMpO1xuXG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBhY3Rpb25zOiBmb290ZXIgPyBmb290ZXIgOiBbeyB0ZXh0OiAn56Gu5a6aJyB9XSxcbiAgICAgIHBsYXRmb3JtOiBwbGF0Zm9ybSA/IHBsYXRmb3JtIDogJ2lvcydcbiAgICB9KTtcbiAgICBjb25zdCBwcm9wcyA9IE1vZGFsLl9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIE1vZGFsLl9vcGVuKHByb3BzLCB0aGlzLl9tb2RhbENvbXBGYWN0b3J5KTtcbiAgfVxuXG4gIHN0YXRpYyBjbG9zZSgpIHtcbiAgICBpZiAoTW9kYWwuY29tcFJlZikge1xuICAgICAgTW9kYWwuY29tcFJlZi5kZXN0cm95KCk7XG4gICAgICBNb2RhbC5jb21wUmVmID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9vdGVyKGFjdGlvbnMpIHtcbiAgcmV0dXJuIGFjdGlvbnMubWFwKChidXR0b246IEFjdGlvbikgPT4ge1xuICAgIGNvbnN0IG9yZ2luUHJlc3MgPSBidXR0b24ub25QcmVzcyB8fCBmdW5jdGlvbigpIHt9O1xuICAgIGJ1dHRvbi5vblByZXNzID0gKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gb3JnaW5QcmVzcygpO1xuICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xuICAgICAgICByZXMudGhlbigoKSA9PiB7XG4gICAgICAgICAgTW9kYWwuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTW9kYWwuY2xvc2VXaXRoQW5pbWF0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gYnV0dG9uO1xuICB9KTtcbn1cbiJdfQ==