UNPKG

ngx-pluto

Version:
184 lines 15.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, Input, ViewChild, Output, EventEmitter } from "@angular/core"; import * as moment_ from 'moment'; /** @type {?} */ const moment = moment_; import { NpDatePickerService } from "../date-picker.service"; import { NpDatePickerPopup } from "./date-picker-popup"; import { trigger, transition, style, animate } from "@angular/animations"; /** * Date range picker popup组件 */ export class NpDateRangePickerPopup { /** * @param {?} datePickerService */ constructor(datePickerService) { this.datePickerService = datePickerService; this.datePickerType = 'date-range-picker'; this.footerItems = []; this.onStartDayClicked = new EventEmitter(); this.onEndDayClicked = new EventEmitter(); this.onItemLabelClicked = new EventEmitter(); this.nowDate = moment(); } /** * @return {?} */ ngOnInit() { this.buildPicker(); setTimeout((/** * @return {?} */ () => { this.buildDayPanelStyle(moment(this.startDate)); }), 0); } /** * @param {?} dayData * @return {?} */ onStartPickerDayClicked(dayData) { /** @type {?} */ let dates = this.buildStartAndEndDates(); this.onStartDayClicked.emit({ day: dayData, dates: dates }); } /** * @param {?} dayData * @return {?} */ onEndPickerDayClicked(dayData) { /** @type {?} */ let dates = this.buildStartAndEndDates(); this.onEndDayClicked.emit({ day: dayData, dates: dates }); } /** * @param {?} dayData * @return {?} */ onStartPickerDayMouseover(dayData) { this.buildDayPanelStyle(dayData.date); } /** * @param {?} dayData * @return {?} */ onEndPickerDayMouseover(dayData) { this.buildDayPanelStyle(dayData.date); } /** * @param {?} item * @return {?} */ onFooterItemLabelClicked(item) { this.onItemLabelClicked.emit(item); } /** * @return {?} */ ngOnChanges() { } /** * @private * @param {?} date * @return {?} */ buildDayPanelStyle(date) { /** @type {?} */ let dates = this.buildStartAndEndDates(); this.startPicker.buildPanelForRangePicker(date, dates); this.endPicker.buildPanelForRangePicker(date, dates); } /** * @private * @return {?} */ buildPicker() { if (this.startPicker) { this.startPicker.datePickerType = this.datePickerType; } if (this.endPicker) { this.endPicker.datePickerType = this.datePickerType; } } /** * @private * @return {?} */ buildStartAndEndDates() { if (!this.datePickerService.isValid(this.startDate) || !this.datePickerService.isValid(this.endDate)) { return []; } if (moment(this.startDate) < moment(this.endDate)) { return [this.startDate, this.endDate]; } return [this.endDate, this.startDate]; } } NpDateRangePickerPopup.decorators = [ { type: Component, args: [{ selector: `np-date-range-picker-popup`, template: "<div class=\"np-date-range-picker-popup-wrapper flex-wrap row-flex\">\r\n <np-date-picker-popup class=\"start-picker\" #startPicker [date]=\"startDate\" [footerItems]=\"footerItems\"\r\n (onItemLabelClicked)=\"onFooterItemLabelClicked($event)\" (onDayClicked)=\"onStartPickerDayClicked($event)\"\r\n (onDayMouseover)=\"onStartPickerDayMouseover($event)\">\r\n </np-date-picker-popup>\r\n <np-date-picker-popup class=\"end-picker\" #endPicker [date]=\"endDate\" (onDayClicked)=\"onEndPickerDayClicked($event)\"\r\n (onDayMouseover)=\"onEndPickerDayMouseover($event)\"></np-date-picker-popup>\r\n</div>\r\n", encapsulation: ViewEncapsulation.None, animations: [trigger('date-picker-animations', [ transition(':enter', [ style({ opacity: 0 }), animate(300, style({ opacity: 1 })), ]), transition(':leave', [ animate(300, style({ opacity: 0 })), ]), ])], styles: [""] }] } ]; /** @nocollapse */ NpDateRangePickerPopup.ctorParameters = () => [ { type: NpDatePickerService } ]; NpDateRangePickerPopup.propDecorators = { startDate: [{ type: Input }], endDate: [{ type: Input }], onStartDayClicked: [{ type: Output }], onEndDayClicked: [{ type: Output }], onItemLabelClicked: [{ type: Output }], startPicker: [{ type: ViewChild, args: ['startPicker',] }], endPicker: [{ type: ViewChild, args: ['endPicker',] }] }; if (false) { /** @type {?} */ NpDateRangePickerPopup.prototype.datePickerType; /** @type {?} */ NpDateRangePickerPopup.prototype.footerItems; /** * 传入的第一个datepicker的时间,可以是moment实例,也可以是可转换为moment的字符串 * @type {?} */ NpDateRangePickerPopup.prototype.startDate; /** * 传入的第二个datepicker的时间,可以是moment实例,也可以是可转换为moment的字符串 * @type {?} */ NpDateRangePickerPopup.prototype.endDate; /** @type {?} */ NpDateRangePickerPopup.prototype.onStartDayClicked; /** @type {?} */ NpDateRangePickerPopup.prototype.onEndDayClicked; /** @type {?} */ NpDateRangePickerPopup.prototype.onItemLabelClicked; /** @type {?} */ NpDateRangePickerPopup.prototype.startPicker; /** @type {?} */ NpDateRangePickerPopup.prototype.endPicker; /** @type {?} */ NpDateRangePickerPopup.prototype.nowDate; /** * @type {?} * @private */ NpDateRangePickerPopup.prototype.datePickerService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItcG9wdXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIvZGF0ZS1waWNrZXIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci1wb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O01BQU8sTUFBTSxHQUFHLE9BQU87QUFDekQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFxQjFFLE1BQU0sT0FBTyxzQkFBc0I7Ozs7SUFzQmpDLFlBQW9CLGlCQUFzQztRQUF0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBckIxRCxtQkFBYyxHQUFtQixtQkFBbUIsQ0FBQztRQUNyRCxnQkFBVyxHQUEyQixFQUFFLENBQUM7UUFXL0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1FLENBQUM7UUFDeEcsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUUsQ0FBQztRQUN0Ryx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUt4RSxZQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFMkMsQ0FBQzs7OztJQUUvRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLFVBQVU7OztRQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzs7Ozs7SUFFRCx1QkFBdUIsQ0FBQyxPQUF3Qjs7WUFDMUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDOzs7OztJQUVELHFCQUFxQixDQUFDLE9BQXdCOztZQUN4QyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7OztJQUVELHlCQUF5QixDQUFDLE9BQXdCO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Ozs7SUFFRCx1QkFBdUIsQ0FBQyxPQUF3QjtRQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Ozs7O0lBRUQsd0JBQXdCLENBQUMsSUFBMEI7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs7O0lBRUQsV0FBVztJQUVYLENBQUM7Ozs7OztJQUVPLGtCQUFrQixDQUFDLElBQW9COztZQUN6QyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBRU8sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN2RDtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQzs7Ozs7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEcsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7WUFwR0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLG9uQkFBMkM7Z0JBRTNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUU7d0JBQzdDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7NEJBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDckIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt5QkFDcEMsQ0FBQzt3QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUNwQyxDQUFDO3FCQUNILENBQUMsQ0FBQzs7YUFDSjs7OztZQXRCeUIsbUJBQW1COzs7d0JBK0IxQyxLQUFLO3NCQUlMLEtBQUs7Z0NBRUwsTUFBTTs4QkFDTixNQUFNO2lDQUNOLE1BQU07MEJBRU4sU0FBUyxTQUFDLGFBQWE7d0JBQ3ZCLFNBQVMsU0FBQyxXQUFXOzs7O0lBakJ0QixnREFBcUQ7O0lBQ3JELDZDQUF5Qzs7Ozs7SUFLekMsMkNBQXdCOzs7OztJQUl4Qix5Q0FBc0I7O0lBRXRCLG1EQUFrSDs7SUFDbEgsaURBQWdIOztJQUNoSCxvREFBd0U7O0lBRXhFLDZDQUF5RDs7SUFDekQsMkNBQXFEOztJQUVyRCx5Q0FBbUI7Ozs7O0lBRVAsbURBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JzsgY29uc3QgbW9tZW50ID0gbW9tZW50X1xyXG5pbXBvcnQgeyBEYXlEYXRhUGVyTW9udGgsIE5wRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyRm9vdGVySXRlbSB9IGZyb20gXCIuL2RhdGUtcGlja2VyLWZvb3RlclwiO1xyXG5pbXBvcnQgeyBOcERhdGVQaWNrZXJQb3B1cCwgRGF0ZVBpY2tlclR5cGUgfSBmcm9tIFwiLi9kYXRlLXBpY2tlci1wb3B1cFwiO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcblxyXG4vKipcclxuICogRGF0ZSByYW5nZSBwaWNrZXIgcG9wdXDnu4Tku7ZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgbnAtZGF0ZS1yYW5nZS1waWNrZXItcG9wdXBgLFxyXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZS1yYW5nZS1waWNrZXItcG9wdXAuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2RhdGUtcmFuZ2UtcGlja2VyLXBvcHVwLnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdkYXRlLXBpY2tlci1hbmltYXRpb25zJywgW1xyXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDAgfSksXHJcbiAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gICAgXSksXHJcbiAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgXSksXHJcbiAgXSldXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTnBEYXRlUmFuZ2VQaWNrZXJQb3B1cCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF0ZVBpY2tlclR5cGU6IERhdGVQaWNrZXJUeXBlID0gJ2RhdGUtcmFuZ2UtcGlja2VyJztcclxuICBmb290ZXJJdGVtczogRGF0ZVBpY2tlckZvb3Rlckl0ZW1bXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiDkvKDlhaXnmoTnrKzkuIDkuKpkYXRlcGlja2Vy55qE5pe26Ze077yM5Y+v5Lul5pivbW9tZW505a6e5L6L77yM5Lmf5Y+v5Lul5piv5Y+v6L2s5o2i5Li6bW9tZW5055qE5a2X56ym5LiyXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3RhcnREYXRlOiBhbnk7XHJcbiAgLyoqXHJcbiAgICog5Lyg5YWl55qE56ys5LqM5LiqZGF0ZXBpY2tlcueahOaXtumXtO+8jOWPr+S7peaYr21vbWVudOWunuS+i++8jOS5n+WPr+S7peaYr+WPr+i9rOaNouS4um1vbWVudOeahOWtl+espuS4slxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGVuZERhdGU6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIG9uU3RhcnREYXlDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRheTogRGF5RGF0YVBlck1vbnRoLCBkYXRlczogQXJyYXk8bW9tZW50Xy5Nb21lbnQgfCBzdHJpbmc+IH0+KCk7XHJcbiAgQE91dHB1dCgpIG9uRW5kRGF5Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXk6IERheURhdGFQZXJNb250aCwgZGF0ZXM6IEFycmF5PG1vbWVudF8uTW9tZW50IHwgc3RyaW5nPiB9PigpO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1MYWJlbENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVQaWNrZXJGb290ZXJJdGVtPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyOiBOcERhdGVQaWNrZXJQb3B1cDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXI6IE5wRGF0ZVBpY2tlclBvcHVwO1xyXG5cclxuICBub3dEYXRlID0gbW9tZW50KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpY2tlclNlcnZpY2U6IE5wRGF0ZVBpY2tlclNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnVpbGRQaWNrZXIoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5idWlsZERheVBhbmVsU3R5bGUobW9tZW50KHRoaXMuc3RhcnREYXRlKSk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRQaWNrZXJEYXlDbGlja2VkKGRheURhdGE6IERheURhdGFQZXJNb250aCkge1xyXG4gICAgbGV0IGRhdGVzID0gdGhpcy5idWlsZFN0YXJ0QW5kRW5kRGF0ZXMoKTtcclxuICAgIHRoaXMub25TdGFydERheUNsaWNrZWQuZW1pdCh7IGRheTogZGF5RGF0YSwgZGF0ZXM6IGRhdGVzIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FbmRQaWNrZXJEYXlDbGlja2VkKGRheURhdGE6IERheURhdGFQZXJNb250aCkge1xyXG4gICAgbGV0IGRhdGVzID0gdGhpcy5idWlsZFN0YXJ0QW5kRW5kRGF0ZXMoKTtcclxuICAgIHRoaXMub25FbmREYXlDbGlja2VkLmVtaXQoeyBkYXk6IGRheURhdGEsIGRhdGVzOiBkYXRlcyB9KTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRQaWNrZXJEYXlNb3VzZW92ZXIoZGF5RGF0YTogRGF5RGF0YVBlck1vbnRoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRGF5UGFuZWxTdHlsZShkYXlEYXRhLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25FbmRQaWNrZXJEYXlNb3VzZW92ZXIoZGF5RGF0YTogRGF5RGF0YVBlck1vbnRoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRGF5UGFuZWxTdHlsZShkYXlEYXRhLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25Gb290ZXJJdGVtTGFiZWxDbGlja2VkKGl0ZW06IERhdGVQaWNrZXJGb290ZXJJdGVtKSB7XHJcbiAgICB0aGlzLm9uSXRlbUxhYmVsQ2xpY2tlZC5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZERheVBhbmVsU3R5bGUoZGF0ZTogbW9tZW50Xy5Nb21lbnQpIHtcclxuICAgIGxldCBkYXRlcyA9IHRoaXMuYnVpbGRTdGFydEFuZEVuZERhdGVzKCk7XHJcbiAgICB0aGlzLnN0YXJ0UGlja2VyLmJ1aWxkUGFuZWxGb3JSYW5nZVBpY2tlcihkYXRlLCBkYXRlcyk7XHJcbiAgICB0aGlzLmVuZFBpY2tlci5idWlsZFBhbmVsRm9yUmFuZ2VQaWNrZXIoZGF0ZSwgZGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBpY2tlcigpIHtcclxuICAgIGlmICh0aGlzLnN0YXJ0UGlja2VyKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQaWNrZXIuZGF0ZVBpY2tlclR5cGUgPSB0aGlzLmRhdGVQaWNrZXJUeXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVuZFBpY2tlcikge1xyXG4gICAgICB0aGlzLmVuZFBpY2tlci5kYXRlUGlja2VyVHlwZSA9IHRoaXMuZGF0ZVBpY2tlclR5cGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU3RhcnRBbmRFbmREYXRlcygpIHtcclxuICAgIGlmICghdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbGlkKHRoaXMuc3RhcnREYXRlKSB8fCAhdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbGlkKHRoaXMuZW5kRGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtb21lbnQodGhpcy5zdGFydERhdGUpIDwgbW9tZW50KHRoaXMuZW5kRGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFt0aGlzLnN0YXJ0RGF0ZSwgdGhpcy5lbmREYXRlXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW3RoaXMuZW5kRGF0ZSwgdGhpcy5zdGFydERhdGVdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlUGlja2VyVHlwZSA9ICdkYXRlLXJhbmdlLXBpY2tlcicgfCAnZGF0ZXRpbWUtcmFuZ2UtcGlja2VyJzsiXX0=