UNPKG

ng-zorro-antd-mobile

Version:

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

379 lines (378 loc) 31.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, Output, TemplateRef, EventEmitter, ViewEncapsulation, ViewChild } from '@angular/core'; import { NgSwitch, NgSwitchCase } from '@angular/common'; import { ModalOptions } from './modal-options.provider'; export class ModalComponent { /** * @param {?} _option */ constructor(_option) { this._option = _option; this.defaultProps = { visible: false, prefixCls: 'am-modal', transparent: false, popup: false, animationType: 'slide-down', animated: true, style: {}, footer: [], closable: false, maskClosable: false, operation: false, platform: 'ios', className: '', wrapClassName: '', message: '', actions: [], callbackOrActions: [], type: '', defaultValue: '', placeholders: [] }; this.value = ''; this.passwordValue = ''; this.autoFocus = { focus: true, date: new Date() }; this.transitionName = ''; this.maskTransitionName = ''; this.isTitleString = true; this.isMessageString = true; this.wrapCls = {}; this.cls = {}; this.btnGroupClass = {}; this.data = {}; this._title = ''; this._message = ''; this._focus = true; this.onClose = new EventEmitter(); } /** * @return {?} */ get title() { return this._title; } /** * @param {?} value * @return {?} */ set title(value) { if (value instanceof TemplateRef) { this.isTitleString = false; } else { this.isTitleString = true; } this._title = value; } /** * @param {?} value * @return {?} */ set visible(value) { if (!value) { this.leaveAnimation(); } else { this.defaultProps.visible = value; if (this.defaultProps.animated) { if (this.defaultProps.transparent) { this.transitionName = this.maskTransitionName = 'am-fade-enter am-fade-enter-active'; } else { this.transitionName = this.maskTransitionName = 'am-slide-up-enter am-slide-up-enter-active'; } if (this.defaultProps.popup) { this.transitionName = this.defaultProps.animationType === 'slide-up' ? 'am-slide-up-enter am-slide-up-enter-active' : 'am-slide-down-enter am-slide-down-enter-active'; this.maskTransitionName = 'am-fade-enter am-fade-enter-active'; } } this.setClassMap(); } } /** * @param {?} value * @return {?} */ set closable(value) { this.defaultProps.closable = value; } /** * @param {?} value * @return {?} */ set maskClosable(value) { this.defaultProps.maskClosable = value; } /** * @param {?} value * @return {?} */ set popup(value) { this.defaultProps.popup = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set animationType(value) { this.defaultProps.animationType = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set transparent(value) { this.defaultProps.transparent = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set footer(value) { this.defaultProps.footer = value; } /** * @param {?} value * @return {?} */ set platform(value) { this.defaultProps.platform = value; this.setClassMap(); } /** * @return {?} */ get message() { return this._message; } /** * @param {?} value * @return {?} */ set message(value) { if (value instanceof TemplateRef) { this.isMessageString = false; } else { this.isMessageString = true; } this._message = value; } /** * @param {?} value * @return {?} */ set className(value) { this.defaultProps.className = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set wrapClassName(value) { this.defaultProps.wrapClassName = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set actions(value) { this.defaultProps.footer = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set defaultValue(value) { this.defaultProps.defaultValue = value !== undefined ? value : ''; } /** * @param {?} value * @return {?} */ set type(value) { this.defaultProps.type = value; } /** * @param {?} value * @return {?} */ set placeholders(value) { this.defaultProps.placeholders = value; } /** * @param {?} value * @return {?} */ set operation(value) { this.defaultProps.operation = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set focus(value) { if (value) { this._focus = value; } } /** * @return {?} */ setClassMap() { this.wrapCls = { [this.defaultProps.wrapClassName]: true, [`${this.defaultProps.prefixCls}-wrap-popup`]: this.defaultProps.popup }; this.cls = { [this.defaultProps.className]: true, [`${this.defaultProps.prefixCls}-transparent`]: this.defaultProps.transparent, [`${this.defaultProps.prefixCls}-popup`]: this.defaultProps.popup, [`${this.defaultProps.prefixCls}-popup-${this.defaultProps.animationType}`]: this.defaultProps.popup && this.defaultProps.animationType, [`${this.defaultProps.prefixCls}-android`]: this.defaultProps.platform === 'android' }; this.btnGroupClass = { [`${this.defaultProps.prefixCls}-button-group-${this.defaultProps.footer.length === 2 && !this.defaultProps.operation ? 'h' : 'v'}`]: true, [`${this.defaultProps.prefixCls}-button-group-${this.defaultProps.operation ? 'operation' : 'normal'}`]: true }; } /** * @param {?} type * @param {?} value * @return {?} */ inputChange(type, value) { this.data[type] = value; } /** * @return {?} */ leaveAnimation() { if (this.defaultProps.animated) { if (this.defaultProps.transparent) { this.transitionName = this.maskTransitionName = 'am-fade-leave am-fade-leave-active'; } else { this.transitionName = this.maskTransitionName = 'am-slide-up-leave am-slide-up-leave-active'; } if (this.defaultProps.popup) { this.transitionName = this.defaultProps.animationType === 'slide-up' ? 'am-slide-up-leave am-slide-up-leave-active' : 'am-slide-down-leave am-slide-down-leave-active'; this.maskTransitionName = 'am-fade-leave am-fade-leave-active'; } } setTimeout(() => { this.defaultProps.visible = false; }, 200); } /** * @return {?} */ close() { if ((!this.defaultProps.closable || !this.defaultProps.maskClosable) && !this.defaultProps.popup) { return; } if (this._option.close) { this._option.close(); } else { this.leaveAnimation(); this.onClose.emit(); } } /** * @return {?} */ ngOnInit() { this.setClassMap(); } } ModalComponent.decorators = [ { type: Component, args: [{ selector: 'Modal', template: "<div *ngIf=\"defaultProps.visible\">\n <div class=\"{{defaultProps.prefixCls}}-mask {{maskTransitionName}}\"></div>\n <div role=\"dialog\"\n class=\"{{defaultProps.prefixCls}}-wrap {{transitionName}}\"\n [ngClass]=\"wrapCls\"\n (click)=\"close()\"\n >\n <div role=\"document\"\n class=\"{{defaultProps.prefixCls}}\"\n [ngClass]=\"cls\"\n >\n <div class=\"{{defaultProps.prefixCls}}-content\">\n <div *ngIf=\"defaultProps.closable\"\n class=\"{{defaultProps.prefixCls}}-close\"\n (click)=\"close()\"\n >\n <span class=\"{{defaultProps.prefixCls}}-close-x\"></span>\n </div>\n <div class=\"{{defaultProps.prefixCls}}-header\">\n <div *ngIf=\"isTitleString\" class=\"{{defaultProps.prefixCls}}-title\">{{title}}</div>\n <ng-template *ngIf=\"!isTitleString\" [ngTemplateOutlet]=\"title\"></ng-template>\n </div>\n <div class=\"{{defaultProps.prefixCls}}-body\">\n <ng-content></ng-content>\n <div *ngIf=\"isMessageString\" class=\"{{defaultProps.prefixCls}}-alert-content\">{{message}}</div>\n <ng-template *ngIf=\"!isMessageString\" [ngTemplateOutlet]=\"message\"></ng-template>\n <ng-template *ngIf=\"defaultProps.type === 'default'\" [ngTemplateOutlet]=\"promptDefault\"></ng-template>\n <ng-template *ngIf=\"defaultProps.type === 'secure-text'\" [ngTemplateOutlet]=\"promptSecure\"></ng-template>\n <ng-template *ngIf=\"defaultProps.type === 'login-password'\" [ngTemplateOutlet]=\"promptPassword\"></ng-template>\n </div>\n <div class=\"{{defaultProps.prefixCls}}-footer\">\n <div [ngClass]=\"btnGroupClass\" role=\"group\">\n <div Button\n role=\"button\"\n *ngFor=\"let button of defaultProps.footer\"\n [className]=\"'am-modal-button'\"\n (onClick)=\"button.onPress()\"\n >\n {{button.text}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #promptPassword>\n <div class=\"{{defaultProps.prefixCls}}-input-container\">\n <div class=\"{{defaultProps.prefixCls}}-input\">\n <input \n #inputElement \n autofocus\n [type]=\"'text'\" \n [defaultValue]=\"defaultProps.defaultValue || ''\" \n [placeholder]=\"defaultProps.placeholders[0] || ''\"\n [(ngModel)]=\"value\" \n (ngModelChange)=\"inputChange('text', $event)\" \n >\n </div>\n <div className=\"{{defaultProps.prefixCls}}-input\">\n <input \n #inputElement \n [type]=\"'password'\" \n [defaultValue]=\"defaultProps.defaultValue || ''\" \n [placeholder]=\"defaultProps.placeholders[0] || ''\"\n [(ngModel)]=\"passwordValue\" \n (ngModelChange)=\"inputChange('password', $event)\" \n >\n </div>\n </div>\n</ng-template>\n<ng-template #promptSecure>\n <div className=\"{{defaultProps.prefixCls}}-input-container\">\n <div className=\"{{defaultProps.prefixCls}}-input\">\n <input \n #inputElement \n autofocus\n [type]=\"'password'\" \n [defaultValue]=\"defaultProps.defaultValue || ''\" \n [placeholder]=\"defaultProps.placeholders[0] || ''\"\n [(ngModel)]=\"passwordValue\" \n (ngModelChange)=\"inputChange('password', $event)\" \n >\n </div>\n </div>\n</ng-template>\n<ng-template #promptDefault>\n <div className=\"{{defaultProps.prefixCls}}-input-container\">\n <div className=\"{{defaultProps.prefixCls}}-input\">\n <input \n #inputElement \n autofocus\n [type]=\"'text'\" \n [defaultValue]=\"defaultProps.defaultValue || ''\" \n [placeholder]=\"defaultProps.placeholders[0] || ''\"\n [(ngModel)]=\"value\" \n (ngModelChange)=\"inputChange('text', $event)\" \n >\n </div>\n </div>\n</ng-template>", encapsulation: ViewEncapsulation.None, providers: [NgSwitch, NgSwitchCase, ModalOptions] }] } ]; /** @nocollapse */ ModalComponent.ctorParameters = () => [ { type: ModalOptions } ]; ModalComponent.propDecorators = { inputElementRef: [{ type: ViewChild, args: ['inputElement',] }], title: [{ type: Input }], visible: [{ type: Input }], closable: [{ type: Input }], maskClosable: [{ type: Input }], popup: [{ type: Input }], animationType: [{ type: Input }], transparent: [{ type: Input }], footer: [{ type: Input }], platform: [{ type: Input }], message: [{ type: Input }], className: [{ type: Input }], wrapClassName: [{ type: Input }], actions: [{ type: Input }], defaultValue: [{ type: Input }], type: [{ type: Input }], placeholders: [{ type: Input }], operation: [{ type: Input }], focus: [{ type: Input }], onClose: [{ type: Output }] }; if (false) { /** @type {?} */ ModalComponent.prototype.defaultProps; /** @type {?} */ ModalComponent.prototype.value; /** @type {?} */ ModalComponent.prototype.passwordValue; /** @type {?} */ ModalComponent.prototype.autoFocus; /** @type {?} */ ModalComponent.prototype.transitionName; /** @type {?} */ ModalComponent.prototype.maskTransitionName; /** @type {?} */ ModalComponent.prototype.isTitleString; /** @type {?} */ ModalComponent.prototype.isMessageString; /** @type {?} */ ModalComponent.prototype.wrapCls; /** @type {?} */ ModalComponent.prototype.cls; /** @type {?} */ ModalComponent.prototype.btnGroupClass; /** @type {?} */ ModalComponent.prototype.data; /** @type {?} */ ModalComponent.prototype._title; /** @type {?} */ ModalComponent.prototype._message; /** @type {?} */ ModalComponent.prototype._focus; /** @type {?} */ ModalComponent.prototype.inputElementRef; /** @type {?} */ ModalComponent.prototype.onClose; /** @type {?} */ ModalComponent.prototype._option; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC1tb2JpbGUvIiwic291cmNlcyI6WyJtb2RhbC9tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVF4RCxNQUFNOzs7O0lBa0tKLFlBQW9CLE9BQXFCO1FBQXJCLFlBQU8sR0FBUCxPQUFPLENBQWM7NEJBaksxQjtZQUNiLE9BQU8sRUFBRSxLQUFLO1lBQ2QsU0FBUyxFQUFFLFVBQVU7WUFDckIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsS0FBSyxFQUFFLEtBQUs7WUFDWixhQUFhLEVBQUUsWUFBWTtZQUMzQixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxLQUFLO1lBQ25CLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixhQUFhLEVBQUUsRUFBRTtZQUNqQixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1NBQ2pCO3FCQUNlLEVBQUU7NkJBQ00sRUFBRTt5QkFDZCxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFB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Q0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDaEcsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtLQUNGOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUNwQjs7O1lBdk9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsT0FBTztnQkFDakIseTlIQUFxQztnQkFDckMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO2FBQ2xEOzs7O1lBUFEsWUFBWTs7OzhCQStDbEIsU0FBUyxTQUFDLGNBQWM7b0JBR3hCLEtBQUs7c0JBWUwsS0FBSzt1QkF1QkwsS0FBSzsyQkFJTCxLQUFLO29CQUlMLEtBQUs7NEJBS0wsS0FBSzswQkFLTCxLQUFLO3FCQUtMLEtBQUs7dUJBSUwsS0FBSztzQkFLTCxLQUFLO3dCQVlMLEtBQUs7NEJBS0wsS0FBSztzQkFLTCxLQUFLOzJCQUtMLEtBQUs7bUJBSUwsS0FBSzsyQkFJTCxLQUFLO3dCQUlMLEtBQUs7b0JBS0wsS0FBSztzQkFNTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBFdmVudEVtaXR0ZXIsIFZpZXdFbmNhcHN1bGF0aW9uLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLnByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnTW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBNb2RhbE9wdGlvbnNdXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGVmYXVsdFByb3BzID0ge1xuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIHByZWZpeENsczogJ2FtLW1vZGFsJyxcbiAgICB0cmFuc3BhcmVudDogZmFsc2UsXG4gICAgcG9wdXA6IGZhbHNlLFxuICAgIGFuaW1hdGlvblR5cGU6ICdzbGlkZS1kb3duJyxcbiAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICBzdHlsZToge30sXG4gICAgZm9vdGVyOiBbXSxcbiAgICBjbG9zYWJsZTogZmFsc2UsXG4gICAgbWFza0Nsb3NhYmxlOiBmYWxzZSxcbiAgICBvcGVyYXRpb246IGZhbHNlLFxuICAgIHBsYXRmb3JtOiAnaW9zJyxcbiAgICBjbGFzc05hbWU6ICcnLFxuICAgIHdyYXBDbGFzc05hbWU6ICcnLFxuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGFjdGlvbnM6IFtdLFxuICAgIGNhbGxiYWNrT3JBY3Rpb25zOiBbXSxcbiAgICB0eXBlOiAnJyxcbiAgICBkZWZhdWx0VmFsdWU6ICcnLFxuICAgIHBsYWNlaG9sZGVyczogW11cbiAgfTtcbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xuICBwYXNzd29yZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgYXV0b0ZvY3VzID0geyBmb2N1czogdHJ1ZSwgZGF0ZTogbmV3IERhdGUoKSB9O1xuICB0cmFuc2l0aW9uTmFtZTogc3RyaW5nID0gJyc7XG4gIG1hc2tUcmFuc2l0aW9uTmFtZTogc3RyaW5nID0gJyc7XG4gIGlzVGl0bGVTdHJpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBpc01lc3NhZ2VTdHJpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICB3cmFwQ2xzID0ge307XG4gIGNscyA9IHt9O1xuICBidG5Hcm91cENsYXNzID0ge307XG4gIGRhdGEgPSB7fTtcblxuICBwcml2YXRlIF90aXRsZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiA9ICcnO1xuICBwcml2YXRlIF9tZXNzYWdlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+ID0gJyc7XG4gIHByaXZhdGUgX2ZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKVxuICBpbnB1dEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KClcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgfVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pc1RpdGxlU3RyaW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNUaXRsZVN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX3RpdGxlID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHZpc2libGUodmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFByb3BzLnZpc2libGUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRQcm9wcy5hbmltYXRlZCkge1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0UHJvcHMudHJhbnNwYXJlbnQpIHtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25OYW1lID0gdGhpcy5tYXNrVHJhbnNpdGlvbk5hbWUgPSAnYW0tZmFkZS1lbnRlciBhbS1mYWRlLWVudGVyLWFjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uTmFtZSA9IHRoaXMubWFza1RyYW5zaXRpb25OYW1lID0gJ2FtLXNsaWRlLXVwLWVudGVyIGFtLXNsaWRlLXVwLWVudGVyLWFjdGl2ZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFByb3BzLnBvcHVwKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uTmFtZSA9XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRQcm9wcy5hbmltYXRpb25UeXBlID09PSAnc2xpZGUtdXAnXG4gICAgICAgICAgICAgID8gJ2FtLXNsaWRlLXVwLWVudGVyIGFtLXNsaWRlLXVwLWVudGVyLWFjdGl2ZSdcbiAgICAgICAgICAgICAgOiAnYW0tc2xpZGUtZG93bi1lbnRlciBhbS1zbGlkZS1kb3duLWVudGVyLWFjdGl2ZSc7XG4gICAgICAgICAgdGhpcy5tYXNrVHJhbnNpdGlvbk5hbWUgPSAnYW0tZmFkZS1lbnRlciBhbS1mYWRlLWVudGVyLWFjdGl2ZSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGNsb3NhYmxlKHZhbHVlKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMuY2xvc2FibGUgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgbWFza0Nsb3NhYmxlKHZhbHVlKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMubWFza0Nsb3NhYmxlID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHBvcHVwKHZhbHVlKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMucG9wdXAgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGFuaW1hdGlvblR5cGUodmFsdWUpIHtcbiAgICB0aGlzLmRlZmF1bHRQcm9wcy5hbmltYXRpb25UeXBlID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB0cmFuc3BhcmVudCh2YWx1ZSkge1xuICAgIHRoaXMuZGVmYXVsdFByb3BzLnRyYW5zcGFyZW50ID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBmb290ZXIodmFsdWUpIHtcbiAgICB0aGlzLmRlZmF1bHRQcm9wcy5mb290ZXIgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgcGxhdGZvcm0odmFsdWUpIHtcbiAgICB0aGlzLmRlZmF1bHRQcm9wcy5wbGF0Zm9ybSA9IHZhbHVlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgbWVzc2FnZSgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZTtcbiAgfVxuICBzZXQgbWVzc2FnZSh2YWx1ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmlzTWVzc2FnZVN0cmluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTWVzc2FnZVN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX21lc3NhZ2UgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgY2xhc3NOYW1lKHZhbHVlKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMuY2xhc3NOYW1lID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB3cmFwQ2xhc3NOYW1lKHZhbHVlKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMud3JhcENsYXNzTmFtZSA9IHZhbHVlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgYWN0aW9ucyh2YWx1ZSkge1xuICAgIHRoaXMuZGVmYXVsdFByb3BzLmZvb3RlciA9IHZhbHVlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgZGVmYXVsdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMuZGVmYXVsdFZhbHVlID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogJyc7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHR5cGUodmFsdWUpIHtcbiAgICB0aGlzLmRlZmF1bHRQcm9wcy50eXBlID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVycyh2YWx1ZTogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuZGVmYXVsdFByb3BzLnBsYWNlaG9sZGVycyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBvcGVyYXRpb24odmFsdWUpIHtcbiAgICB0aGlzLmRlZmF1bHRQcm9wcy5vcGVyYXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGZvY3VzKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9mb2N1cyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBAT3V0cHV0KClcbiAgb25DbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfb3B0aW9uOiBNb2RhbE9wdGlvbnMpIHt9XG5cbiAgc2V0Q2xhc3NNYXAoKSB7XG4gICAgdGhpcy53cmFwQ2xzID0ge1xuICAgICAgW3RoaXMuZGVmYXVsdFByb3BzLndyYXBDbGFzc05hbWVdOiB0cnVlLFxuICAgICAgW2Ake3RoaXMuZGVmYXVsdFByb3BzLnByZWZpeENsc30td3JhcC1wb3B1cGBdOiB0aGlzLmRlZmF1bHRQcm9wcy5wb3B1cFxuICAgIH07XG5cbiAgICB0aGlzLmNscyA9IHtcbiAgICAgIFt0aGlzLmRlZmF1bHRQcm9wcy5jbGFzc05hbWVdOiB0cnVlLFxuICAgICAgW2Ake3RoaXMuZGVmYXVsdFByb3BzLnByZWZpeENsc30tdHJhbnNwYXJlbnRgXTogdGhpcy5kZWZhdWx0UHJvcHMudHJhbnNwYXJlbnQsXG4gICAgICBbYCR7dGhpcy5kZWZhdWx0UHJvcHMucHJlZml4Q2xzfS1wb3B1cGBdOiB0aGlzLmRlZmF1bHRQcm9wcy5wb3B1cCxcbiAgICAgIFtgJHt0aGlzLmRlZmF1bHRQcm9wcy5wcmVmaXhDbHN9LXBvcHVwLSR7dGhpcy5kZWZhdWx0UHJvcHMuYW5pbWF0aW9uVHlwZX1gXTpcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJvcHMucG9wdXAgJiYgdGhpcy5kZWZhdWx0UHJvcHMuYW5pbWF0aW9uVHlwZSxcbiAgICAgIFtgJHt0aGlzLmRlZmF1bHRQcm9wcy5wcmVmaXhDbHN9LWFuZHJvaWRgXTogdGhpcy5kZWZhdWx0UHJvcHMucGxhdGZvcm0gPT09ICdhbmRyb2lkJ1xuICAgIH07XG5cbiAgICB0aGlzLmJ0bkdyb3VwQ2xhc3MgPSB7XG4gICAgICBbYCR7dGhpcy5kZWZhdWx0UHJvcHMucHJlZml4Q2xzfS1idXR0b24tZ3JvdXAtJHtcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJvcHMuZm9vdGVyLmxlbmd0aCA9PT0gMiAmJiAhdGhpcy5kZWZhdWx0UHJvcHMub3BlcmF0aW9uID8gJ2gnIDogJ3YnXG4gICAgICB9YF06IHRydWUsXG4gICAgICBbYCR7dGhpcy5kZWZhdWx0UHJvcHMucHJlZml4Q2xzfS1idXR0b24tZ3JvdXAtJHt0aGlzLmRlZmF1bHRQcm9wcy5vcGVyYXRpb24gPyAnb3BlcmF0aW9uJyA6ICdub3JtYWwnfWBdOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGlucHV0Q2hhbmdlKHR5cGUsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3R5cGVdID0gdmFsdWU7XG4gIH1cblxuICBsZWF2ZUFuaW1hdGlvbigpIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0UHJvcHMuYW5pbWF0ZWQpIHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRQcm9wcy50cmFuc3BhcmVudCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25OYW1lID0gdGhpcy5tYXNrVHJhbnNpdGlvbk5hbWUgPSAnYW0tZmFkZS1sZWF2ZSBhbS1mYWRlLWxlYXZlLWFjdGl2ZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25OYW1lID0gdGhpcy5tYXNrVHJhbnNpdGlvbk5hbWUgPSAnYW0tc2xpZGUtdXAtbGVhdmUgYW0tc2xpZGUtdXAtbGVhdmUtYWN0aXZlJztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRlZmF1bHRQcm9wcy5wb3B1cCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25OYW1lID1cbiAgICAgICAgICB0aGlzLmRlZmF1bHRQcm9wcy5hbmltYXRpb25UeXBlID09PSAnc2xpZGUtdXAnXG4gICAgICAgICAgICA/ICdhbS1zbGlkZS11cC1sZWF2ZSBhbS1zbGlkZS11cC1sZWF2ZS1hY3RpdmUnXG4gICAgICAgICAgICA6ICdhbS1zbGlkZS1kb3duLWxlYXZlIGFtLXNsaWRlLWRvd24tbGVhdmUtYWN0aXZlJztcbiAgICAgICAgdGhpcy5tYXNrVHJhbnNpdGlvbk5hbWUgPSAnYW0tZmFkZS1sZWF2ZSBhbS1mYWRlLWxlYXZlLWFjdGl2ZSc7XG4gICAgICB9XG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kZWZhdWx0UHJvcHMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAoKCF0aGlzLmRlZmF1bHRQcm9wcy5jbG9zYWJsZSB8fCAhdGhpcy5kZWZhdWx0UHJvcHMubWFza0Nsb3NhYmxlKSAmJiAhdGhpcy5kZWZhdWx0UHJvcHMucG9wdXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX29wdGlvbi5jbG9zZSkge1xuICAgICAgdGhpcy5fb3B0aW9uLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGVhdmVBbmltYXRpb24oKTtcbiAgICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG59XG4iXX0=