UNPKG

ngx-pluto

Version:
351 lines 22.6 kB
/** * @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