ngx-pluto
Version:
355 lines • 22.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewEncapsulation, Input, ViewChild, forwardRef, Output, EventEmitter } from "@angular/core";
import * as moment_ from 'moment';
/** @type {?} */
var moment = moment_;
import { ComponentPortal } from "@angular/cdk/portal";
import { NG_VALUE_ACCESSOR } from "@angular/forms";
import { NpInput } from "../../input";
import { NpDatePickerService } from "../date-picker.service";
import { NpDatePickerPopup } from "../components/date-picker-popup";
/**
* Year picker组件
*/
var NpYearPicker = /** @class */ (function () {
function NpYearPicker(datePickerService) {
this.datePickerService = datePickerService;
/**
* Placeholder
*/
this.placeholder = '';
/**
* 已选时间
*/
this.date = null;
/**
* 时间展示格式
*/
this.format = 'YYYY';
this.onYearChanged = new EventEmitter();
this.onYearClicked = new EventEmitter();
this.isHover = false;
this.emitChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { });
}
/**
* @return {?}
*/
NpYearPicker.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.overlayRef = this.datePickerService.getOverlayRef(this.yearPickerInput.npInput);
};
/**
* @param {?} changes
* @return {?}
*/
NpYearPicker.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
};
/**
* @return {?}
*/
NpYearPicker.prototype.onToggleDatePickerPopup = /**
* @return {?}
*/
function () {
var _this = this;
if (this.isDisabled) {
return;
}
if (this.overlayRef.hasAttached()) {
this.closePopup();
return;
}
this.datePickerPopupRef = this.overlayRef.attach(new ComponentPortal(NpDatePickerPopup));
this.datePickerPopupRef.instance.date = moment(this.date);
this.datePickerPopupRef.instance.datePickerType = 'year-picker';
this.datePickerPopupRef.instance.isShowYearsPanel = true;
this.subscribeNotifyEvents();
this.overlayRef.backdropClick().subscribe((/**
* @return {?}
*/
function () {
_this.closePopup();
}));
};
/**
* @param {?} data
* @return {?}
*/
NpYearPicker.prototype.onBlur = /**
* @param {?} data
* @return {?}
*/
function (data) {
if (this.datePickerService.isValid(data.value)) {
this.date = moment(data.value, this.format).clone();
}
else {
// 如果输入日期不合法,默认当前时间
this.date = moment().clone();
}
this.syncValue();
this.emitChange(this.date);
this.onYearChanged.emit(this.date);
};
/**
* @return {?}
*/
NpYearPicker.prototype.onClear = /**
* @return {?}
*/
function () {
if (this.isDisabled) {
return;
}
this.date = null;
this.syncValue();
this.emitChange(this.date);
this.onYearChanged.emit(this.date);
};
/**
* @return {?}
*/
NpYearPicker.prototype.onMouseenter = /**
* @return {?}
*/
function () {
this.isHover = true;
};
/**
* @return {?}
*/
NpYearPicker.prototype.onMouseleave = /**
* @return {?}
*/
function () {
this.isHover = false;
};
//#region Private methods
/**每次this.date改变时,这个方法都必须要调用 */
//#region Private methods
/**
* 每次this.date改变时,这个方法都必须要调用
* @private
* @return {?}
*/
NpYearPicker.prototype.syncValue =
//#region Private methods
/**
* 每次this.date改变时,这个方法都必须要调用
* @private
* @return {?}
*/
function () {
if (this.date && this.datePickerService.isValid(this.date)) {
this.value = moment(this.date, this.format).format(this.format);
}
else {
this.value = '';
}
};
/**
* @private
* @return {?}
*/
NpYearPicker.prototype.closePopup = /**
* @private
* @return {?}
*/
function () {
if (this.overlayRef.hasAttached) {
this.overlayRef.detach();
}
};
/**
* @private
* @return {?}
*/
NpYearPicker.prototype.subscribeNotifyEvents = /**
* @private
* @return {?}
*/
function () {
var _this = this;
this.datePickerPopupRef.instance.onYearClicked.subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.emitDataAndClosePopup(res.date);
}));
};
/**
* @private
* @param {?} date
* @return {?}
*/
NpYearPicker.prototype.emitDataAndClosePopup = /**
* @private
* @param {?} date
* @return {?}
*/
function (date) {
this.date = date;
this.syncValue();
this.emitChange(this.date);
this.onYearChanged.emit(this.date);
this.yearPickerInput.focus();
this.closePopup();
};
//#endregion
//#region Implement for ControlValueAccessor
//#endregion
//#region Implement for ControlValueAccessor
/**
* @param {?} obj
* @return {?}
*/
NpYearPicker.prototype.writeValue =
//#endregion
//#region Implement for ControlValueAccessor
/**
* @param {?} obj
* @return {?}
*/
function (obj) {
this.date = obj;
this.syncValue();
};
/**
* @param {?} fn
* @return {?}
*/
NpYearPicker.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.emitChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
NpYearPicker.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) { };
NpYearPicker.decorators = [
{ type: Component, args: [{
selector: "np-year-picker",
template: "<div class=\"np-year-picker-wrapper flex-wrap col-flex\" (mouseenter)=\"onMouseenter()\" (mouseleave)=\"onMouseleave()\">\r\n <i *ngIf=\"!isHover\" class=\"far fa-calendar\"></i>\r\n <i *ngIf=\"isHover\" class=\"fas fa-times-circle\" (click)=\"onClear()\"></i>\r\n <np-input #yearPickerInput [label]=\"label\" [isRequired]=\"isRequired\" [isDisabled]=\"isDisabled\"\r\n [placeholder]=\"placeholder\" [errorMessage]=\"errorMessage\" [(ngModel)]=\"value\" (click)=\"onToggleDatePickerPopup()\"\r\n (onBlur)=\"onBlur($event)\">\r\n </np-input>\r\n</div>\r\n",
encapsulation: ViewEncapsulation.None,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return NpYearPicker; })),
multi: true,
}
],
styles: [".np-year-picker-wrapper{position:relative}.np-year-picker-wrapper>.far.fa-calendar,.np-year-picker-wrapper>.fas.fa-times-circle{position:absolute;right:10px;line-height:34px;font-size:15px;cursor:pointer;z-index:1}.np-year-picker-wrapper .np-input-wrapper .np-input{width:220px}"]
}] }
];
/** @nocollapse */
NpYearPicker.ctorParameters = function () { return [
{ type: NpDatePickerService }
]; };
NpYearPicker.propDecorators = {
label: [{ type: Input }],
isRequired: [{ type: Input }],
placeholder: [{ type: Input }],
errorMessage: [{ type: Input }],
isDisabled: [{ type: Input }],
date: [{ type: Input }],
format: [{ type: Input }],
onYearChanged: [{ type: Output }],
onYearClicked: [{ type: Output }],
yearPickerInput: [{ type: ViewChild, args: ['yearPickerInput',] }]
};
return NpYearPicker;
}());
export { NpYearPicker };
if (false) {
/**
* 标签
* @type {?}
*/
NpYearPicker.prototype.label;
/**
* 是否必填,true仅在标签前面添加红色*号, false不加
* @type {?}
*/
NpYearPicker.prototype.isRequired;
/**
* Placeholder
* @type {?}
*/
NpYearPicker.prototype.placeholder;
/**
* 校验错误时显示错误信息
* @type {?}
*/
NpYearPicker.prototype.errorMessage;
/**
* 是否禁用
* @type {?}
*/
NpYearPicker.prototype.isDisabled;
/**
* 已选时间
* @type {?}
*/
NpYearPicker.prototype.date;
/**
* 时间展示格式
* @type {?}
*/
NpYearPicker.prototype.format;
/** @type {?} */
NpYearPicker.prototype.onYearChanged;
/** @type {?} */
NpYearPicker.prototype.onYearClicked;
/** @type {?} */
NpYearPicker.prototype.yearPickerInput;
/** @type {?} */
NpYearPicker.prototype.datePickerPopupRef;
/**
* @type {?}
* @private
*/
NpYearPicker.prototype.overlayRef;
/** @type {?} */
NpYearPicker.prototype.isHover;
/**
* @type {?}
* @private
*/
NpYearPicker.prototype.emitChange;
/**
* 日期输入框文本值,每当this.date改变时此值会同步改变
* @type {?}
*/
NpYearPicker.prototype.value;
/**
* @type {?}
* @private
*/
NpYearPicker.prototype.datePickerService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1waWNrZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIvZGF0ZS1waWNrZXIveWVhci1waWNrZXIveWVhci1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pLLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDOztJQUFPLE1BQU0sR0FBRyxPQUFPO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUtwRTtJQThDRSxzQkFBb0IsaUJBQXNDO1FBQXRDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7Ozs7UUF6QmpELGdCQUFXLEdBQVcsRUFBRSxDQUFDOzs7O1FBT3pCLFNBQUksR0FBNEIsSUFBSSxDQUFDOzs7O1FBRXJDLFdBQU0sR0FBVyxNQUFNLENBQUM7UUFFdkIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQU12RCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRWpCLGVBQVU7Ozs7UUFBRyxVQUFDLENBQU0sSUFBTyxDQUFDLEVBQUM7SUFLeUIsQ0FBQzs7OztJQUUvRCwrQkFBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFB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LENBQUM7Ozs7O0lBRUQsd0NBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQU8sSUFBVSxDQUFDOztnQkF2SnJDLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixna0JBQStCO29CQUUvQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVOzs7NEJBQUMsY0FBTSxPQUFBLFlBQVksRUFBWixDQUFZLEVBQUM7NEJBQzNDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOztpQkFDRjs7OztnQkFsQlEsbUJBQW1COzs7d0JBdUJ6QixLQUFLOzZCQUVMLEtBQUs7OEJBRUwsS0FBSzsrQkFFTCxLQUFLOzZCQUVMLEtBQUs7dUJBR0wsS0FBSzt5QkFFTCxLQUFLO2dDQUVMLE1BQU07Z0NBQ04sTUFBTTtrQ0FFTixTQUFTLFNBQUMsaUJBQWlCOztJQXNIOUIsbUJBQUM7Q0FBQSxBQXpKRCxJQXlKQztTQTNJWSxZQUFZOzs7Ozs7SUFHdkIsNkJBQXVCOzs7OztJQUV2QixrQ0FBNkI7Ozs7O0lBRTdCLG1DQUFrQzs7Ozs7SUFFbEMsb0NBQThCOzs7OztJQUU5QixrQ0FBNkI7Ozs7O0lBRzdCLDRCQUE4Qzs7Ozs7SUFFOUMsOEJBQWlDOztJQUVqQyxxQ0FBa0Q7O0lBQ2xELHFDQUF1RDs7SUFFdkQsdUNBQXVEOztJQUV2RCwwQ0FBbUQ7Ozs7O0lBQ25ELGtDQUErQjs7SUFDL0IsK0JBQXlCOzs7OztJQUV6QixrQ0FBcUM7Ozs7O0lBR3JDLDZCQUFjOzs7OztJQUVGLHlDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ29tcG9uZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnOyBjb25zdCBtb21lbnQgPSBtb21lbnRfXHJcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE5wSW5wdXQgfSBmcm9tIFwiLi4vLi4vaW5wdXRcIjtcclxuaW1wb3J0IHsgTnBEYXRlUGlja2VyU2VydmljZSwgWWVhckRhdGEgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOcERhdGVQaWNrZXJQb3B1cCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2RhdGUtcGlja2VyLXBvcHVwXCI7XHJcblxyXG4vKipcclxuICogWWVhciBwaWNrZXLnu4Tku7ZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgbnAteWVhci1waWNrZXJgLFxyXG4gIHRlbXBsYXRlVXJsOiAneWVhci1waWNrZXIuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ3llYXItcGlja2VyLnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnBZZWFyUGlja2VyKSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE5wWWVhclBpY2tlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIC8qKuagh+etviAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoq5piv5ZCm5b+F5aGr77yMdHJ1ZeS7heWcqOagh+etvuWJjemdoua3u+WKoOe6ouiJsirlj7fvvIwgZmFsc2XkuI3liqAqL1xyXG4gIEBJbnB1dCgpIGlzUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgLyoqUGxhY2Vob2xkZXIgKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgLyoq5qCh6aqM6ZSZ6K+v5pe25pi+56S66ZSZ6K+v5L+h5oGvICovXHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgLyoq5piv5ZCm56aB55SoICovXHJcbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoq5bey6YCJ5pe26Ze0ICovXHJcbiAgQElucHV0KCkgZGF0ZTogbW9tZW50Xy5Nb21lbnQgfCBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKuaXtumXtOWxleekuuagvOW8jyAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogc3RyaW5nID0gJ1lZWVknO1xyXG5cclxuICBAT3V0cHV0KCkgb25ZZWFyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvblllYXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxZZWFyRGF0YT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgneWVhclBpY2tlcklucHV0JykgeWVhclBpY2tlcklucHV0OiBOcElucHV0O1xyXG5cclxuICBkYXRlUGlja2VyUG9wdXBSZWY6IENvbXBvbmVudFJlZjxOcERhdGVQaWNrZXJQb3B1cD5cclxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgaXNIb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVtaXRDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG4gIC8qKuaXpeacn+i+k+WFpeahhuaWh+acrOWAvO+8jOavj+W9k3RoaXMuZGF0ZeaUueWPmOaXtuatpOWAvOS8muWQjOatpeaUueWPmCovXHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogTnBEYXRlUGlja2VyU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRPdmVybGF5UmVmKHRoaXMueWVhclBpY2tlcklucHV0Lm5wSW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVEYXRlUGlja2VyUG9wdXAoKSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGVQaWNrZXJQb3B1cFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChOcERhdGVQaWNrZXJQb3B1cCkpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2UuZGF0ZSA9IG1vbWVudCh0aGlzLmRhdGUpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2UuZGF0ZVBpY2tlclR5cGUgPSAneWVhci1waWNrZXInO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2UuaXNTaG93WWVhcnNQYW5lbCA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmliZU5vdGlmeUV2ZW50cygpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihkYXRhOiB7IHZhbHVlOiBhbnksIGV2ZW50OiBhbnkgfSkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWxpZChkYXRhLnZhbHVlKSkge1xyXG4gICAgICB0aGlzLmRhdGUgPSBtb21lbnQoZGF0YS52YWx1ZSwgdGhpcy5mb3JtYXQpLmNsb25lKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzovpPlhaXml6XmnJ/kuI3lkIjms5XvvIzpu5jorqTlvZPliY3ml7bpl7RcclxuICAgICAgdGhpcy5kYXRlID0gbW9tZW50KCkuY2xvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uWWVhckNoYW5nZWQuZW1pdCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpIHtcclxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uWWVhckNoYW5nZWQuZW1pdCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZWVudGVyKCkge1xyXG4gICAgdGhpcy5pc0hvdmVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VsZWF2ZSgpIHtcclxuICAgIHRoaXMuaXNIb3ZlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFByaXZhdGUgbWV0aG9kc1xyXG5cclxuICAvKirmr4/mrKF0aGlzLmRhdGXmlLnlj5jml7bvvIzov5nkuKrmlrnms5Xpg73lv4XpobvopoHosIPnlKggKi9cclxuICBwcml2YXRlIHN5bmNWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGUgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbGlkKHRoaXMuZGF0ZSkpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh0aGlzLmRhdGUsIHRoaXMuZm9ybWF0KS5mb3JtYXQodGhpcy5mb3JtYXQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9zZVBvcHVwKCkge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCkge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZU5vdGlmeUV2ZW50cygpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlclBvcHVwUmVmLmluc3RhbmNlLm9uWWVhckNsaWNrZWQuc3Vic2NyaWJlKChyZXM6IFllYXJEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZW1pdERhdGFBbmRDbG9zZVBvcHVwKHJlcy5kYXRlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RGF0YUFuZENsb3NlUG9wdXAoZGF0ZTogbW9tZW50Xy5Nb21lbnQpIHtcclxuICAgIHRoaXMuZGF0ZSA9IGRhdGU7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uWWVhckNoYW5nZWQuZW1pdCh0aGlzLmRhdGUpO1xyXG4gICAgdGhpcy55ZWFyUGlja2VySW5wdXQuZm9jdXMoKTtcclxuICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEltcGxlbWVudCBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGUgPSBvYmo7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59Il19