UNPKG

ng-zorro-antd-mobile

Version:

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

343 lines (342 loc) 28 kB
/** * @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==