theme-lib
Version:
This is a simple example Angular Library published to npm.
237 lines • 17.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component, EventEmitter, HostBinding, Input, Output, Type } from '@angular/core';
import { NbDateService, NbCalendarSize, NbCalendarViewMode } from '../calendar-kit';
/*
* The basis for calendar and range calendar components.
* Encapsulates common behavior - store calendar state and perform navigation
* between pickers.
* */
/**
* @template D, T
*/
var NbBaseCalendarComponent = /** @class */ (function () {
function NbBaseCalendarComponent(dateService) {
this.dateService = dateService;
/*
* Defines if we should render previous and next months
* in the current month view.
* */
this.boundingMonth = true;
/*
* Defines active view for calendar.
* */
this.activeViewMode = NbCalendarViewMode.DATE;
/*
* Size of the calendar and entire components.
* Can be 'medium' which is default or 'large'.
* */
this.size = NbCalendarSize.MEDIUM;
/*
* Determines should we show calendars header or not.
* */
this.showHeader = true;
/*
* Emits date when selected.
* */
this.dateChange = new EventEmitter();
this.ViewMode = NbCalendarViewMode;
}
/**
* @return {?}
*/
NbBaseCalendarComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (!this.visibleDate) {
this.visibleDate = this.dateService.today();
}
};
Object.defineProperty(NbBaseCalendarComponent.prototype, "medium", {
get: /**
* @return {?}
*/
function () {
return this.size === NbCalendarSize.MEDIUM;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbBaseCalendarComponent.prototype, "large", {
get: /**
* @return {?}
*/
function () {
return this.size === NbCalendarSize.LARGE;
},
enumerable: true,
configurable: true
});
/**
* @param {?} viewMode
* @return {?}
*/
NbBaseCalendarComponent.prototype.setViewMode = /**
* @param {?} viewMode
* @return {?}
*/
function (viewMode) {
this.activeViewMode = viewMode;
};
/**
* @param {?} visibleDate
* @return {?}
*/
NbBaseCalendarComponent.prototype.setVisibleDate = /**
* @param {?} visibleDate
* @return {?}
*/
function (visibleDate) {
this.visibleDate = visibleDate;
};
/**
* @return {?}
*/
NbBaseCalendarComponent.prototype.prevMonth = /**
* @return {?}
*/
function () {
this.changeVisibleMonth(-1);
};
/**
* @return {?}
*/
NbBaseCalendarComponent.prototype.nextMonth = /**
* @return {?}
*/
function () {
this.changeVisibleMonth(1);
};
/**
* @return {?}
*/
NbBaseCalendarComponent.prototype.prevYears = /**
* @return {?}
*/
function () {
this.changeVisibleYear(-1);
};
/**
* @return {?}
*/
NbBaseCalendarComponent.prototype.nextYears = /**
* @return {?}
*/
function () {
this.changeVisibleYear(1);
};
/**
* @return {?}
*/
NbBaseCalendarComponent.prototype.navigateToday = /**
* @return {?}
*/
function () {
this.setViewMode(NbCalendarViewMode.DATE);
this.visibleDate = this.dateService.today();
};
/**
* @private
* @param {?} direction
* @return {?}
*/
NbBaseCalendarComponent.prototype.changeVisibleMonth = /**
* @private
* @param {?} direction
* @return {?}
*/
function (direction) {
this.visibleDate = this.dateService.addMonth(this.visibleDate, direction);
};
/**
* @private
* @param {?} direction
* @return {?}
*/
NbBaseCalendarComponent.prototype.changeVisibleYear = /**
* @private
* @param {?} direction
* @return {?}
*/
function (direction) {
this.visibleDate = this.dateService.addYear(this.visibleDate, direction * 20);
};
NbBaseCalendarComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-base-calendar',
template: "<nb-card>\r\n <nb-card-header *ngIf=\"showHeader\">\r\n <nb-calendar-header (navigateToday)=\"navigateToday()\"></nb-calendar-header>\r\n </nb-card-header>\r\n\r\n <nb-card-body [ngSwitch]=\"activeViewMode\">\r\n\r\n <ng-container *ngSwitchCase=\"ViewMode.DATE\">\r\n\r\n <nb-calendar-pageable-navigation\r\n *ngSwitchCase=\"ViewMode.DATE\"\r\n [date]=\"visibleDate\"\r\n (next)=\"nextMonth()\"\r\n (prev)=\"prevMonth()\"\r\n (changeMode)=\"setViewMode(ViewMode.YEAR)\">\r\n </nb-calendar-pageable-navigation>\r\n\r\n <nb-calendar-day-picker\r\n [boundingMonths]=\"boundingMonth\"\r\n [cellComponent]=\"dayCellComponent\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [filter]=\"filter\"\r\n [visibleDate]=\"visibleDate\"\r\n [size]=\"size\"\r\n [date]=\"date\"\r\n (dateChange)=\"dateChange.emit($event)\">\r\n </nb-calendar-day-picker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"ViewMode.YEAR\">\r\n\r\n <nb-calendar-pageable-navigation\r\n [date]=\"visibleDate\"\r\n (next)=\"nextYears()\"\r\n (prev)=\"prevYears()\"\r\n (changeMode)=\"setViewMode(ViewMode.DATE)\">\r\n </nb-calendar-pageable-navigation>\r\n\r\n <nb-calendar-year-picker\r\n [cellComponent]=\"yearCellComponent\"\r\n [date]=\"date\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [filter]=\"filter\"\r\n [size]=\"size\"\r\n [year]=\"visibleDate\"\r\n (yearChange)=\"setVisibleDate($event); setViewMode(ViewMode.MONTH)\">\r\n </nb-calendar-year-picker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"ViewMode.MONTH\">\r\n\r\n <nb-calendar-navigation\r\n [date]=\"visibleDate\"\r\n (changeMode)=\"setViewMode(ViewMode.DATE)\">\r\n </nb-calendar-navigation>\r\n\r\n <nb-calendar-month-picker\r\n [cellComponent]=\"monthCellComponent\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [filter]=\"filter\"\r\n [size]=\"size\"\r\n [month]=\"visibleDate\"\r\n (monthChange)=\"setVisibleDate($event); setViewMode(ViewMode.DATE)\">\r\n </nb-calendar-month-picker>\r\n\r\n </ng-container>\r\n\r\n </nb-card-body>\r\n\r\n</nb-card>\r\n"
}] }
];
/** @nocollapse */
NbBaseCalendarComponent.ctorParameters = function () { return [
{ type: NbDateService }
]; };
NbBaseCalendarComponent.propDecorators = {
boundingMonth: [{ type: Input }],
activeViewMode: [{ type: Input, args: ['startView',] }],
min: [{ type: Input }],
max: [{ type: Input }],
filter: [{ type: Input }],
dayCellComponent: [{ type: Input }],
monthCellComponent: [{ type: Input }],
yearCellComponent: [{ type: Input }],
size: [{ type: Input }],
visibleDate: [{ type: Input }],
showHeader: [{ type: Input }],
date: [{ type: Input }],
dateChange: [{ type: Output }],
medium: [{ type: HostBinding, args: ['class.medium',] }],
large: [{ type: HostBinding, args: ['class.large',] }]
};
return NbBaseCalendarComponent;
}());
export { NbBaseCalendarComponent };
if (false) {
/** @type {?} */
NbBaseCalendarComponent.prototype.boundingMonth;
/** @type {?} */
NbBaseCalendarComponent.prototype.activeViewMode;
/** @type {?} */
NbBaseCalendarComponent.prototype.min;
/** @type {?} */
NbBaseCalendarComponent.prototype.max;
/** @type {?} */
NbBaseCalendarComponent.prototype.filter;
/** @type {?} */
NbBaseCalendarComponent.prototype.dayCellComponent;
/** @type {?} */
NbBaseCalendarComponent.prototype.monthCellComponent;
/** @type {?} */
NbBaseCalendarComponent.prototype.yearCellComponent;
/** @type {?} */
NbBaseCalendarComponent.prototype.size;
/** @type {?} */
NbBaseCalendarComponent.prototype.visibleDate;
/** @type {?} */
NbBaseCalendarComponent.prototype.showHeader;
/** @type {?} */
NbBaseCalendarComponent.prototype.date;
/** @type {?} */
NbBaseCalendarComponent.prototype.dateChange;
/** @type {?} */
NbBaseCalendarComponent.prototype.ViewMode;
/**
* @type {?}
* @protected
*/
NbBaseCalendarComponent.prototype.dateService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYWxlbmRhci9iYXNlLWNhbGVuZGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFNQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLGFBQWEsRUFBa0IsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVFwRztJQXNFRSxpQ0FBc0IsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCOzs7OztRQTVEMUMsa0JBQWEsR0FBWSxJQUFJLENBQUM7Ozs7UUFLbkIsbUJBQWMsR0FBdUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDOzs7OztRQW9DeEUsU0FBSSxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDOzs7O1FBTzdDLGVBQVUsR0FBWSxJQUFJLENBQUM7Ozs7UUFVMUIsZUFBVSxHQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBcUIzRCxhQUFRLEdBQUcsa0JBQWtCLENBQUM7SUFsQjlCLENBQUM7Ozs7SUFFRCwwQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsc0JBQ0ksMkNBQU07Ozs7UUFEVjtZQUVFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzdDLENBQUM7OztPQUFBO0lBRUQsc0JBQ00sMENBQUs7Ozs7UUFEWDtZQUVFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQzVDLENBQUM7OztPQUFBOzs7OztJQUlELDZDQUFXOzs7O0lBQVgsVUFBWSxRQUE0QjtRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUNqQyxDQUFDOzs7OztJQUVELGdEQUFjOzs7O0lBQWQsVUFBZSxXQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFRCwyQ0FBUzs7O0lBQVQ7UUFDRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7O0lBRUQsMkNBQVM7OztJQUFUO1FBQ0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Ozs7SUFFRCwyQ0FBUzs7O0lBQVQ7UUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDOzs7O0lBRUQsMkNBQVM7OztJQUFUO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7SUFFRCwrQ0FBYTs7O0lBQWI7UUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzs7Ozs7SUFFTyxvREFBa0I7Ozs7O0lBQTFCLFVBQTJCLFNBQWlCO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1RSxDQUFDOzs7Ozs7SUFFTyxtREFBaUI7Ozs7O0lBQXpCLFVBQTBCLFNBQWlCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQzs7Z0JBOUhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1Qiw0eUVBQTZDO2lCQUM5Qzs7OztnQkFYUSxhQUFhOzs7Z0NBa0JuQixLQUFLO2lDQUtMLEtBQUssU0FBQyxXQUFXO3NCQUtqQixLQUFLO3NCQUtMLEtBQUs7eUJBS0wsS0FBSzttQ0FLTCxLQUFLO3FDQUtMLEtBQUs7b0NBS0wsS0FBSzt1QkFNTCxLQUFLOzhCQUVMLEtBQUs7NkJBS0wsS0FBSzt1QkFLTCxLQUFLOzZCQUtMLE1BQU07eUJBV04sV0FBVyxTQUFDLGNBQWM7d0JBSzFCLFdBQVcsU0FBQyxhQUFhOztJQTJDNUIsOEJBQUM7Q0FBQSxBQS9IRCxJQStIQztTQTNIWSx1QkFBdUI7OztJQU1sQyxnREFBdUM7O0lBS3ZDLGlEQUFpRjs7SUFLakYsc0NBQWdCOztJQUtoQixzQ0FBZ0I7O0lBS2hCLHlDQUFnQzs7SUFLaEMsbURBQXNEOztJQUt0RCxxREFBd0Q7O0lBS3hELG9EQUF1RDs7SUFNdkQsdUNBQXNEOztJQUV0RCw4Q0FBd0I7O0lBS3hCLDZDQUFvQzs7SUFLcEMsdUNBQWlCOztJQUtqQiw2Q0FBMkQ7O0lBcUIzRCwyQ0FBOEI7Ozs7O0lBbkJsQiw4Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE5iRGF0ZVNlcnZpY2UsIE5iQ2FsZW5kYXJDZWxsLCBOYkNhbGVuZGFyU2l6ZSwgTmJDYWxlbmRhclZpZXdNb2RlIH0gZnJvbSAnLi4vY2FsZW5kYXIta2l0JztcclxuXHJcblxyXG4vKlxyXG4gKiBUaGUgYmFzaXMgZm9yIGNhbGVuZGFyIGFuZCByYW5nZSBjYWxlbmRhciBjb21wb25lbnRzLlxyXG4gKiBFbmNhcHN1bGF0ZXMgY29tbW9uIGJlaGF2aW9yIC0gc3RvcmUgY2FsZW5kYXIgc3RhdGUgYW5kIHBlcmZvcm0gbmF2aWdhdGlvblxyXG4gKiBiZXR3ZWVuIHBpY2tlcnMuXHJcbiAqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmItYmFzZS1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmJCYXNlQ2FsZW5kYXJDb21wb25lbnQ8RCwgVD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKlxyXG4gICAqIERlZmluZXMgaWYgd2Ugc2hvdWxkIHJlbmRlciBwcmV2aW91cyBhbmQgbmV4dCBtb250aHNcclxuICAgKiBpbiB0aGUgY3VycmVudCBtb250aCB2aWV3LlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgYm91bmRpbmdNb250aDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qXHJcbiAgICogRGVmaW5lcyBhY3RpdmUgdmlldyBmb3IgY2FsZW5kYXIuXHJcbiAgICogKi9cclxuICBASW5wdXQoJ3N0YXJ0VmlldycpIGFjdGl2ZVZpZXdNb2RlOiBOYkNhbGVuZGFyVmlld01vZGUgPSBOYkNhbGVuZGFyVmlld01vZGUuREFURTtcclxuXHJcbiAgLypcclxuICAgKiBNaW5pbXVtIGF2YWlsYWJsZSBkYXRlIGZvciBzZWxlY3Rpb24uXHJcbiAgICogKi9cclxuICBASW5wdXQoKSBtaW46IEQ7XHJcblxyXG4gIC8qXHJcbiAgICogTWF4aW11bSBhdmFpbGFibGUgZGF0ZSBmb3Igc2VsZWN0aW9uLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgbWF4OiBEO1xyXG5cclxuICAvKlxyXG4gICAqIFByZWRpY2F0ZSB0aGF0IGRlY2lkZXMgd2hpY2ggY2VsbHMgd2lsbCBiZSBkaXNhYmxlZC5cclxuICAgKiAqL1xyXG4gIEBJbnB1dCgpIGZpbHRlcjogKEQpID0+IGJvb2xlYW47XHJcblxyXG4gIC8qXHJcbiAgICogQ3VzdG9tIGRheSBjZWxsIGNvbXBvbmVudC4gSGF2ZSB0byBpbXBsZW1lbnQgYE5iQ2FsZW5kYXJDZWxsYCBpbnRlcmZhY2UuXHJcbiAgICogKi9cclxuICBASW5wdXQoKSBkYXlDZWxsQ29tcG9uZW50OiBUeXBlPE5iQ2FsZW5kYXJDZWxsPEQsIFQ+PjtcclxuXHJcbiAgLypcclxuICAgKiBDdXN0b20gbW9udGggY2VsbCBjb21wb25lbnQuIEhhdmUgdG8gaW1wbGVtZW50IGBOYkNhbGVuZGFyQ2VsbGAgaW50ZXJmYWNlLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgbW9udGhDZWxsQ29tcG9uZW50OiBUeXBlPE5iQ2FsZW5kYXJDZWxsPEQsIFQ+PjtcclxuXHJcbiAgLypcclxuICAgKiBDdXN0b20geWVhciBjZWxsIGNvbXBvbmVudC4gSGF2ZSB0byBpbXBsZW1lbnQgYE5iQ2FsZW5kYXJDZWxsYCBpbnRlcmZhY2UuXHJcbiAgICogKi9cclxuICBASW5wdXQoKSB5ZWFyQ2VsbENvbXBvbmVudDogVHlwZTxOYkNhbGVuZGFyQ2VsbDxELCBUPj47XHJcblxyXG4gIC8qXHJcbiAgICogU2l6ZSBvZiB0aGUgY2FsZW5kYXIgYW5kIGVudGlyZSBjb21wb25lbnRzLlxyXG4gICAqIENhbiBiZSAnbWVkaXVtJyB3aGljaCBpcyBkZWZhdWx0IG9yICdsYXJnZScuXHJcbiAgICogKi9cclxuICBASW5wdXQoKSBzaXplOiBOYkNhbGVuZGFyU2l6ZSA9IE5iQ2FsZW5kYXJTaXplLk1FRElVTTtcclxuXHJcbiAgQElucHV0KCkgdmlzaWJsZURhdGU6IEQ7XHJcblxyXG4gIC8qXHJcbiAgICogRGV0ZXJtaW5lcyBzaG91bGQgd2Ugc2hvdyBjYWxlbmRhcnMgaGVhZGVyIG9yIG5vdC5cclxuICAgKiAqL1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKlxyXG4gICAqIFZhbHVlIHdoaWNoIHdpbGwgYmUgcmVuZGVyZWQgYXMgc2VsZWN0ZWQuXHJcbiAgICogKi9cclxuICBASW5wdXQoKSBkYXRlOiBUO1xyXG5cclxuICAvKlxyXG4gICAqIEVtaXRzIGRhdGUgd2hlbiBzZWxlY3RlZC5cclxuICAgKiAqL1xyXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkYXRlU2VydmljZTogTmJEYXRlU2VydmljZTxEPikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMudmlzaWJsZURhdGUpIHtcclxuICAgICAgdGhpcy52aXNpYmxlRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudG9kYXkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWVkaXVtJylcclxuICBnZXQgbWVkaXVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJDYWxlbmRhclNpemUuTUVESVVNO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYXJnZScpXHJcbiAgICBnZXQgbGFyZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkNhbGVuZGFyU2l6ZS5MQVJHRTtcclxuICB9XHJcblxyXG4gIFZpZXdNb2RlID0gTmJDYWxlbmRhclZpZXdNb2RlO1xyXG5cclxuICBzZXRWaWV3TW9kZSh2aWV3TW9kZTogTmJDYWxlbmRhclZpZXdNb2RlKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVZpZXdNb2RlID0gdmlld01vZGU7XHJcbiAgfVxyXG5cclxuICBzZXRWaXNpYmxlRGF0ZSh2aXNpYmxlRGF0ZTogRCkge1xyXG4gICAgdGhpcy52aXNpYmxlRGF0ZSA9IHZpc2libGVEYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJldk1vbnRoKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlTW9udGgoLTEpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlTW9udGgoMSk7XHJcbiAgfVxyXG5cclxuICBwcmV2WWVhcnMoKSB7XHJcbiAgICB0aGlzLmNoYW5nZVZpc2libGVZZWFyKC0xKTtcclxuICB9XHJcblxyXG4gIG5leHRZZWFycygpIHtcclxuICAgIHRoaXMuY2hhbmdlVmlzaWJsZVllYXIoMSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvZGF5KCkge1xyXG4gICAgdGhpcy5zZXRWaWV3TW9kZShOYkNhbGVuZGFyVmlld01vZGUuREFURSk7XHJcbiAgICB0aGlzLnZpc2libGVEYXRlID0gdGhpcy5kYXRlU2VydmljZS50b2RheSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VWaXNpYmxlTW9udGgoZGlyZWN0aW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMudmlzaWJsZURhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLmFkZE1vbnRoKHRoaXMudmlzaWJsZURhdGUsIGRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZVZpc2libGVZZWFyKGRpcmVjdGlvbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnZpc2libGVEYXRlID0gdGhpcy5kYXRlU2VydmljZS5hZGRZZWFyKHRoaXMudmlzaWJsZURhdGUsIGRpcmVjdGlvbiAqIDIwKTtcclxuICB9XHJcbn1cclxuIl19