ngx-pluto
Version:
351 lines • 22.6 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";
/**
* Month picker组件
*/
var NpMonthPicker = /** @class */ (function () {
function NpMonthPicker(datePickerService) {
this.datePickerService = datePickerService;
/**
* Placeholder
*/
this.placeholder = '';
/**
* 已选时间
*/
this.date = null;
/**
* 时间展示格式
*/
this.format = 'YYYY-MM';
this.onMonthChanged = new EventEmitter();
this.isHover = false;
this.emitChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { });
}
/**
* @return {?}
*/
NpMonthPicker.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.overlayRef = this.datePickerService.getOverlayRef(this.monthPickerInput.npInput);
};
/**
* @param {?} changes
* @return {?}
*/
NpMonthPicker.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
};
/**
* @return {?}
*/
NpMonthPicker.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 = 'month-picker';
this.datePickerPopupRef.instance.isShowMonthsPanel = true;
this.subscribeNotifyEvents();
this.overlayRef.backdropClick().subscribe((/**
* @return {?}
*/
function () {
_this.closePopup();
}));
};
/**
* @param {?} data
* @return {?}
*/
NpMonthPicker.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.onMonthChanged.emit(this.date);
};
/**
* @return {?}
*/
NpMonthPicker.prototype.onClear = /**
* @return {?}
*/
function () {
if (this.isDisabled) {
return;
}
this.date = null;
this.syncValue();
this.emitChange(this.date);
this.onMonthChanged.emit(this.date);
};
/**
* @return {?}
*/
NpMonthPicker.prototype.onMouseenter = /**
* @return {?}
*/
function () {
this.isHover = true;
};
/**
* @return {?}
*/
NpMonthPicker.prototype.onMouseleave = /**
* @return {?}
*/
function () {
this.isHover = false;
};
//#region Private methods
/**每次this.date改变时,这个方法都必须要调用 */
//#region Private methods
/**
* 每次this.date改变时,这个方法都必须要调用
* @private
* @return {?}
*/
NpMonthPicker.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 {?}
*/
NpMonthPicker.prototype.closePopup = /**
* @private
* @return {?}
*/
function () {
if (this.overlayRef.hasAttached) {
this.overlayRef.detach();
}
};
/**
* @private
* @return {?}
*/
NpMonthPicker.prototype.subscribeNotifyEvents = /**
* @private
* @return {?}
*/
function () {
var _this = this;
this.datePickerPopupRef.instance.onMonthClicked.subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.emitDataAndClosePopup(res.date);
}));
};
/**
* @private
* @param {?} date
* @return {?}
*/
NpMonthPicker.prototype.emitDataAndClosePopup = /**
* @private
* @param {?} date
* @return {?}
*/
function (date) {
this.date = date;
this.syncValue();
this.emitChange(this.date);
this.onMonthChanged.emit(this.date);
this.monthPickerInput.focus();
this.closePopup();
};
//#endregion
//#region Implement for ControlValueAccessor
//#endregion
//#region Implement for ControlValueAccessor
/**
* @param {?} obj
* @return {?}
*/
NpMonthPicker.prototype.writeValue =
//#endregion
//#region Implement for ControlValueAccessor
/**
* @param {?} obj
* @return {?}
*/
function (obj) {
this.date = obj;
this.syncValue();
};
/**
* @param {?} fn
* @return {?}
*/
NpMonthPicker.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.emitChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
NpMonthPicker.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) { };
NpMonthPicker.decorators = [
{ type: Component, args: [{
selector: "np-month-picker",
template: "<div class=\"np-month-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 #monthPickerInput [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 NpMonthPicker; })),
multi: true,
}
],
styles: [".np-month-picker-wrapper{position:relative}.np-month-picker-wrapper>.far.fa-calendar,.np-month-picker-wrapper>.fas.fa-times-circle{position:absolute;right:10px;line-height:34px;font-size:15px;cursor:pointer;z-index:1}.np-month-picker-wrapper .np-input-wrapper .np-input{width:220px}"]
}] }
];
/** @nocollapse */
NpMonthPicker.ctorParameters = function () { return [
{ type: NpDatePickerService }
]; };
NpMonthPicker.propDecorators = {
label: [{ type: Input }],
isRequired: [{ type: Input }],
placeholder: [{ type: Input }],
errorMessage: [{ type: Input }],
isDisabled: [{ type: Input }],
date: [{ type: Input }],
format: [{ type: Input }],
onMonthChanged: [{ type: Output }],
monthPickerInput: [{ type: ViewChild, args: ['monthPickerInput',] }]
};
return NpMonthPicker;
}());
export { NpMonthPicker };
if (false) {
/**
* 标签
* @type {?}
*/
NpMonthPicker.prototype.label;
/**
* 是否必填,true仅在标签前面添加红色*号, false不加
* @type {?}
*/
NpMonthPicker.prototype.isRequired;
/**
* Placeholder
* @type {?}
*/
NpMonthPicker.prototype.placeholder;
/**
* 校验错误时显示错误信息
* @type {?}
*/
NpMonthPicker.prototype.errorMessage;
/**
* 是否禁用
* @type {?}
*/
NpMonthPicker.prototype.isDisabled;
/**
* 已选时间
* @type {?}
*/
NpMonthPicker.prototype.date;
/**
* 时间展示格式
* @type {?}
*/
NpMonthPicker.prototype.format;
/** @type {?} */
NpMonthPicker.prototype.onMonthChanged;
/** @type {?} */
NpMonthPicker.prototype.monthPickerInput;
/** @type {?} */
NpMonthPicker.prototype.datePickerPopupRef;
/**
* @type {?}
* @private
*/
NpMonthPicker.prototype.overlayRef;
/** @type {?} */
NpMonthPicker.prototype.isHover;
/**
* @type {?}
* @private
*/
NpMonthPicker.prototype.emitChange;
/**
* 日期输入框文本值,每当this.date改变时此值会同步改变
* @type {?}
*/
NpMonthPicker.prototype.value;
/**
* @type {?}
* @private
*/
NpMonthPicker.prototype.datePickerService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcGlja2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXBsdXRvLyIsInNvdXJjZXMiOlsibGliL2RhdGUtcGlja2VyL21vbnRoLXBpY2tlci9tb250aC1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQVUsS0FBSyxFQUFjLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDOztJQUFPLE1BQU0sR0FBRyxPQUFPO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUtwRTtJQTZDRSx1QkFBb0IsaUJBQXNDO1FBQXRDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7Ozs7UUF4QmpELGdCQUFXLEdBQVcsRUFBRSxDQUFDOzs7O1FBT3pCLFNBQUksR0FBNEIsSUFBSSxDQUFDOzs7O1FBRXJDLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFFMUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTW5ELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFakIsZUFBVTs7OztRQUFHLFVBQUMsQ0FBTSxJQUFPLENBQUMsRUFBQztJQUt5QixDQUFDOzs7O0lBRS9ELGdDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdC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LFVBQWtCLEVBQU8sSUFBVSxDQUFDOztnQkF0SnJDLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixra0JBQWdDO29CQUVoQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVOzs7NEJBQUMsY0FBTSxPQUFBLGFBQWEsRUFBYixDQUFhLEVBQUM7NEJBQzVDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOztpQkFDRjs7OztnQkFuQlEsbUJBQW1COzs7d0JBd0J6QixLQUFLOzZCQUVMLEtBQUs7OEJBRUwsS0FBSzsrQkFFTCxLQUFLOzZCQUVMLEtBQUs7dUJBR0wsS0FBSzt5QkFFTCxLQUFLO2lDQUVMLE1BQU07bUNBRU4sU0FBUyxTQUFDLGtCQUFrQjs7SUFzSC9CLG9CQUFDO0NBQUEsQUF4SkQsSUF3SkM7U0ExSVksYUFBYTs7Ozs7O0lBR3hCLDhCQUF1Qjs7Ozs7SUFFdkIsbUNBQTZCOzs7OztJQUU3QixvQ0FBa0M7Ozs7O0lBRWxDLHFDQUE4Qjs7Ozs7SUFFOUIsbUNBQTZCOzs7OztJQUc3Qiw2QkFBOEM7Ozs7O0lBRTlDLCtCQUFvQzs7SUFFcEMsdUNBQW1EOztJQUVuRCx5Q0FBeUQ7O0lBRXpELDJDQUFvRDs7Ozs7SUFDcEQsbUNBQStCOztJQUMvQixnQ0FBeUI7Ozs7O0lBRXpCLG1DQUFxQzs7Ozs7SUFHckMsOEJBQWM7Ozs7O0lBRUYsMENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBmb3J3YXJkUmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7IGNvbnN0IG1vbWVudCA9IG1vbWVudF9cclxuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTnBJbnB1dCB9IGZyb20gXCIuLi8uLi9pbnB1dFwiO1xyXG5pbXBvcnQgeyBOcERhdGVQaWNrZXJTZXJ2aWNlLCBNb250aERhdGEgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOb3RpZnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9ub3RpZnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOcERhdGVQaWNrZXJQb3B1cCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2RhdGUtcGlja2VyLXBvcHVwXCI7XHJcblxyXG4vKipcclxuICogTW9udGggcGlja2Vy57uE5Lu2XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYG5wLW1vbnRoLXBpY2tlcmAsXHJcbiAgdGVtcGxhdGVVcmw6ICdtb250aC1waWNrZXIuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ21vbnRoLXBpY2tlci5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5wTW9udGhQaWNrZXIpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTnBNb250aFBpY2tlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIC8qKuagh+etviAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoq5piv5ZCm5b+F5aGr77yMdHJ1ZeS7heWcqOagh+etvuWJjemdoua3u+WKoOe6ouiJsirlj7fvvIwgZmFsc2XkuI3liqAqL1xyXG4gIEBJbnB1dCgpIGlzUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgLyoqUGxhY2Vob2xkZXIgKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgLyoq5qCh6aqM6ZSZ6K+v5pe25pi+56S66ZSZ6K+v5L+h5oGvICovXHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgLyoq5piv5ZCm56aB55SoICovXHJcbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoq5bey6YCJ5pe26Ze0ICovXHJcbiAgQElucHV0KCkgZGF0ZTogbW9tZW50Xy5Nb21lbnQgfCBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKuaXtumXtOWxleekuuagvOW8jyAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogc3RyaW5nID0gJ1lZWVktTU0nO1xyXG5cclxuICBAT3V0cHV0KCkgb25Nb250aENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbW9udGhQaWNrZXJJbnB1dCcpIG1vbnRoUGlja2VySW5wdXQ6IE5wSW5wdXQ7XHJcblxyXG4gIGRhdGVQaWNrZXJQb3B1cFJlZjogQ29tcG9uZW50UmVmPE5wRGF0ZVBpY2tlclBvcHVwPjtcclxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgaXNIb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVtaXRDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG4gIC8qKuaXpeacn+i+k+WFpeahhuaWh+acrOWAvO+8jOavj+W9k3RoaXMuZGF0ZeaUueWPmOaXtuatpOWAvOS8muWQjOatpeaUueWPmCovXHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogTnBEYXRlUGlja2VyU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRPdmVybGF5UmVmKHRoaXMubW9udGhQaWNrZXJJbnB1dC5ucElucHV0KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlRGF0ZVBpY2tlclBvcHVwKCkge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoTnBEYXRlUGlja2VyUG9wdXApKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlclBvcHVwUmVmLmluc3RhbmNlLmRhdGUgPSBtb21lbnQodGhpcy5kYXRlKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlclBvcHVwUmVmLmluc3RhbmNlLmRhdGVQaWNrZXJUeXBlID0gJ21vbnRoLXBpY2tlcic7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJQb3B1cFJlZi5pbnN0YW5jZS5pc1Nob3dNb250aHNQYW5lbCA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmliZU5vdGlmeUV2ZW50cygpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihkYXRhOiB7IHZhbHVlOiBhbnksIGV2ZW50OiBhbnkgfSkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWxpZChkYXRhLnZhbHVlKSkge1xyXG4gICAgICB0aGlzLmRhdGUgPSBtb21lbnQoZGF0YS52YWx1ZSwgdGhpcy5mb3JtYXQpLmNsb25lKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzovpPlhaXml6XmnJ/kuI3lkIjms5XvvIzpu5jorqTlvZPliY3ml7bpl7RcclxuICAgICAgdGhpcy5kYXRlID0gbW9tZW50KCkuY2xvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uTW9udGhDaGFuZ2VkLmVtaXQodGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGUgPSBudWxsO1xyXG4gICAgdGhpcy5zeW5jVmFsdWUoKTtcclxuICAgIHRoaXMuZW1pdENoYW5nZSh0aGlzLmRhdGUpO1xyXG4gICAgdGhpcy5vbk1vbnRoQ2hhbmdlZC5lbWl0KHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlZW50ZXIoKSB7XHJcbiAgICB0aGlzLmlzSG92ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZWxlYXZlKCkge1xyXG4gICAgdGhpcy5pc0hvdmVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gUHJpdmF0ZSBtZXRob2RzXHJcblxyXG4gIC8qKuavj+asoXRoaXMuZGF0ZeaUueWPmOaXtu+8jOi/meS4quaWueazlemDveW/hemhu+imgeiwg+eUqCAqL1xyXG4gIHByaXZhdGUgc3luY1ZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZSAmJiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVmFsaWQodGhpcy5kYXRlKSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHRoaXMuZGF0ZSwgdGhpcy5mb3JtYXQpLmZvcm1hdCh0aGlzLmZvcm1hdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsb3NlUG9wdXAoKSB7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlTm90aWZ5RXZlbnRzKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2Uub25Nb250aENsaWNrZWQuc3Vic2NyaWJlKChyZXM6IE1vbnRoRGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmVtaXREYXRhQW5kQ2xvc2VQb3B1cChyZXMuZGF0ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdERhdGFBbmRDbG9zZVBvcHVwKGRhdGU6IG1vbWVudF8uTW9tZW50KSB7XHJcbiAgICB0aGlzLmRhdGUgPSBkYXRlO1xyXG4gICAgdGhpcy5zeW5jVmFsdWUoKTtcclxuICAgIHRoaXMuZW1pdENoYW5nZSh0aGlzLmRhdGUpO1xyXG4gICAgdGhpcy5vbk1vbnRoQ2hhbmdlZC5lbWl0KHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm1vbnRoUGlja2VySW5wdXQuZm9jdXMoKTtcclxuICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEltcGxlbWVudCBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGUgPSBvYmo7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59Il19