UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

237 lines 17.6 kB
/** * @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