UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

194 lines 15.9 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 */ export class NbBaseCalendarComponent { /** * @param {?} dateService */ constructor(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 {?} */ ngOnInit() { if (!this.visibleDate) { this.visibleDate = this.dateService.today(); } } /** * @return {?} */ get medium() { return this.size === NbCalendarSize.MEDIUM; } /** * @return {?} */ get large() { return this.size === NbCalendarSize.LARGE; } /** * @param {?} viewMode * @return {?} */ setViewMode(viewMode) { this.activeViewMode = viewMode; } /** * @param {?} visibleDate * @return {?} */ setVisibleDate(visibleDate) { this.visibleDate = visibleDate; } /** * @return {?} */ prevMonth() { this.changeVisibleMonth(-1); } /** * @return {?} */ nextMonth() { this.changeVisibleMonth(1); } /** * @return {?} */ prevYears() { this.changeVisibleYear(-1); } /** * @return {?} */ nextYears() { this.changeVisibleYear(1); } /** * @return {?} */ navigateToday() { this.setViewMode(NbCalendarViewMode.DATE); this.visibleDate = this.dateService.today(); } /** * @private * @param {?} direction * @return {?} */ changeVisibleMonth(direction) { this.visibleDate = this.dateService.addMonth(this.visibleDate, direction); } /** * @private * @param {?} direction * @return {?} */ changeVisibleYear(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 = () => [ { 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',] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYWxlbmRhci9iYXNlLWNhbGVuZGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFNQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLGFBQWEsRUFBa0IsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVlwRyxNQUFNLE9BQU8sdUJBQXVCOzs7O0lBa0VsQyxZQUFzQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7Ozs7O1FBNUQxQyxrQkFBYSxHQUFZLElBQUksQ0FBQzs7OztRQUtuQixtQkFBYyxHQUF1QixrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Ozs7O1FBb0N4RSxTQUFJLEdBQW1CLGNBQWMsQ0FBQyxNQUFNLENBQUM7Ozs7UUFPN0MsZUFBVSxHQUFZLElBQUksQ0FBQzs7OztRQVUxQixlQUFVLEdBQW9CLElBQUksWUFBWSxFQUFFLENBQUM7UUFxQjNELGFBQVEsR0FBRyxrQkFBa0IsQ0FBQztJQWxCOUIsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0M7SUFDSCxDQUFDOzs7O0lBRUQsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsQ0FBQzs7OztJQUVELElBQ00sS0FBSztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7Ozs7O0lBSUQsV0FBVyxDQUFDLFFBQTRCO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLFdBQWM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQzs7OztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7O0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDOzs7O0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Ozs7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7Ozs7O0lBRU8sa0JBQWtCLENBQUMsU0FBaUI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Ozs7OztJQUVPLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQzs7O1lBOUhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1Qiw0eUVBQTZDO2FBQzlDOzs7O1lBWFEsYUFBYTs7OzRCQWtCbkIsS0FBSzs2QkFLTCxLQUFLLFNBQUMsV0FBVztrQkFLakIsS0FBSztrQkFLTCxLQUFLO3FCQUtMLEtBQUs7K0JBS0wsS0FBSztpQ0FLTCxLQUFLO2dDQUtMLEtBQUs7bUJBTUwsS0FBSzswQkFFTCxLQUFLO3lCQUtMLEtBQUs7bUJBS0wsS0FBSzt5QkFLTCxNQUFNO3FCQVdOLFdBQVcsU0FBQyxjQUFjO29CQUsxQixXQUFXLFNBQUMsYUFBYTs7OztJQTFFMUIsZ0RBQXVDOztJQUt2QyxpREFBaUY7O0lBS2pGLHNDQUFnQjs7SUFLaEIsc0NBQWdCOztJQUtoQix5Q0FBZ0M7O0lBS2hDLG1EQUFzRDs7SUFLdEQscURBQXdEOztJQUt4RCxvREFBdUQ7O0lBTXZELHVDQUFzRDs7SUFFdEQsOENBQXdCOztJQUt4Qiw2Q0FBb0M7O0lBS3BDLHVDQUFpQjs7SUFLakIsNkNBQTJEOztJQXFCM0QsMkNBQThCOzs7OztJQW5CbEIsOENBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBOYkRhdGVTZXJ2aWNlLCBOYkNhbGVuZGFyQ2VsbCwgTmJDYWxlbmRhclNpemUsIE5iQ2FsZW5kYXJWaWV3TW9kZSB9IGZyb20gJy4uL2NhbGVuZGFyLWtpdCc7XHJcblxyXG5cclxuLypcclxuICogVGhlIGJhc2lzIGZvciBjYWxlbmRhciBhbmQgcmFuZ2UgY2FsZW5kYXIgY29tcG9uZW50cy5cclxuICogRW5jYXBzdWxhdGVzIGNvbW1vbiBiZWhhdmlvciAtIHN0b3JlIGNhbGVuZGFyIHN0YXRlIGFuZCBwZXJmb3JtIG5hdmlnYXRpb25cclxuICogYmV0d2VlbiBwaWNrZXJzLlxyXG4gKiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25iLWJhc2UtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5iQmFzZUNhbGVuZGFyQ29tcG9uZW50PEQsIFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLypcclxuICAgKiBEZWZpbmVzIGlmIHdlIHNob3VsZCByZW5kZXIgcHJldmlvdXMgYW5kIG5leHQgbW9udGhzXHJcbiAgICogaW4gdGhlIGN1cnJlbnQgbW9udGggdmlldy5cclxuICAgKiAqL1xyXG4gIEBJbnB1dCgpIGJvdW5kaW5nTW9udGg6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKlxyXG4gICAqIERlZmluZXMgYWN0aXZlIHZpZXcgZm9yIGNhbGVuZGFyLlxyXG4gICAqICovXHJcbiAgQElucHV0KCdzdGFydFZpZXcnKSBhY3RpdmVWaWV3TW9kZTogTmJDYWxlbmRhclZpZXdNb2RlID0gTmJDYWxlbmRhclZpZXdNb2RlLkRBVEU7XHJcblxyXG4gIC8qXHJcbiAgICogTWluaW11bSBhdmFpbGFibGUgZGF0ZSBmb3Igc2VsZWN0aW9uLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgbWluOiBEO1xyXG5cclxuICAvKlxyXG4gICAqIE1heGltdW0gYXZhaWxhYmxlIGRhdGUgZm9yIHNlbGVjdGlvbi5cclxuICAgKiAqL1xyXG4gIEBJbnB1dCgpIG1heDogRDtcclxuXHJcbiAgLypcclxuICAgKiBQcmVkaWNhdGUgdGhhdCBkZWNpZGVzIHdoaWNoIGNlbGxzIHdpbGwgYmUgZGlzYWJsZWQuXHJcbiAgICogKi9cclxuICBASW5wdXQoKSBmaWx0ZXI6IChEKSA9PiBib29sZWFuO1xyXG5cclxuICAvKlxyXG4gICAqIEN1c3RvbSBkYXkgY2VsbCBjb21wb25lbnQuIEhhdmUgdG8gaW1wbGVtZW50IGBOYkNhbGVuZGFyQ2VsbGAgaW50ZXJmYWNlLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgZGF5Q2VsbENvbXBvbmVudDogVHlwZTxOYkNhbGVuZGFyQ2VsbDxELCBUPj47XHJcblxyXG4gIC8qXHJcbiAgICogQ3VzdG9tIG1vbnRoIGNlbGwgY29tcG9uZW50LiBIYXZlIHRvIGltcGxlbWVudCBgTmJDYWxlbmRhckNlbGxgIGludGVyZmFjZS5cclxuICAgKiAqL1xyXG4gIEBJbnB1dCgpIG1vbnRoQ2VsbENvbXBvbmVudDogVHlwZTxOYkNhbGVuZGFyQ2VsbDxELCBUPj47XHJcblxyXG4gIC8qXHJcbiAgICogQ3VzdG9tIHllYXIgY2VsbCBjb21wb25lbnQuIEhhdmUgdG8gaW1wbGVtZW50IGBOYkNhbGVuZGFyQ2VsbGAgaW50ZXJmYWNlLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgeWVhckNlbGxDb21wb25lbnQ6IFR5cGU8TmJDYWxlbmRhckNlbGw8RCwgVD4+O1xyXG5cclxuICAvKlxyXG4gICAqIFNpemUgb2YgdGhlIGNhbGVuZGFyIGFuZCBlbnRpcmUgY29tcG9uZW50cy5cclxuICAgKiBDYW4gYmUgJ21lZGl1bScgd2hpY2ggaXMgZGVmYXVsdCBvciAnbGFyZ2UnLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgc2l6ZTogTmJDYWxlbmRhclNpemUgPSBOYkNhbGVuZGFyU2l6ZS5NRURJVU07XHJcblxyXG4gIEBJbnB1dCgpIHZpc2libGVEYXRlOiBEO1xyXG5cclxuICAvKlxyXG4gICAqIERldGVybWluZXMgc2hvdWxkIHdlIHNob3cgY2FsZW5kYXJzIGhlYWRlciBvciBub3QuXHJcbiAgICogKi9cclxuICBASW5wdXQoKSBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLypcclxuICAgKiBWYWx1ZSB3aGljaCB3aWxsIGJlIHJlbmRlcmVkIGFzIHNlbGVjdGVkLlxyXG4gICAqICovXHJcbiAgQElucHV0KCkgZGF0ZTogVDtcclxuXHJcbiAgLypcclxuICAgKiBFbWl0cyBkYXRlIHdoZW4gc2VsZWN0ZWQuXHJcbiAgICogKi9cclxuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGF0ZVNlcnZpY2U6IE5iRGF0ZVNlcnZpY2U8RD4pIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLnZpc2libGVEYXRlKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnRvZGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1lZGl1bScpXHJcbiAgZ2V0IG1lZGl1bSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQ2FsZW5kYXJTaXplLk1FRElVTTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubGFyZ2UnKVxyXG4gICAgZ2V0IGxhcmdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJDYWxlbmRhclNpemUuTEFSR0U7XHJcbiAgfVxyXG5cclxuICBWaWV3TW9kZSA9IE5iQ2FsZW5kYXJWaWV3TW9kZTtcclxuXHJcbiAgc2V0Vmlld01vZGUodmlld01vZGU6IE5iQ2FsZW5kYXJWaWV3TW9kZSkge1xyXG4gICAgdGhpcy5hY3RpdmVWaWV3TW9kZSA9IHZpZXdNb2RlO1xyXG4gIH1cclxuXHJcbiAgc2V0VmlzaWJsZURhdGUodmlzaWJsZURhdGU6IEQpIHtcclxuICAgIHRoaXMudmlzaWJsZURhdGUgPSB2aXNpYmxlRGF0ZTtcclxuICB9XHJcblxyXG4gIHByZXZNb250aCgpIHtcclxuICAgIHRoaXMuY2hhbmdlVmlzaWJsZU1vbnRoKC0xKTtcclxuICB9XHJcblxyXG4gIG5leHRNb250aCgpIHtcclxuICAgIHRoaXMuY2hhbmdlVmlzaWJsZU1vbnRoKDEpO1xyXG4gIH1cclxuXHJcbiAgcHJldlllYXJzKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlWWVhcigtMSk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcnMoKSB7XHJcbiAgICB0aGlzLmNoYW5nZVZpc2libGVZZWFyKDEpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb2RheSgpIHtcclxuICAgIHRoaXMuc2V0Vmlld01vZGUoTmJDYWxlbmRhclZpZXdNb2RlLkRBVEUpO1xyXG4gICAgdGhpcy52aXNpYmxlRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudG9kYXkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlVmlzaWJsZU1vbnRoKGRpcmVjdGlvbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnZpc2libGVEYXRlID0gdGhpcy5kYXRlU2VydmljZS5hZGRNb250aCh0aGlzLnZpc2libGVEYXRlLCBkaXJlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VWaXNpYmxlWWVhcihkaXJlY3Rpb246IG51bWJlcikge1xyXG4gICAgdGhpcy52aXNpYmxlRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UuYWRkWWVhcih0aGlzLnZpc2libGVEYXRlLCBkaXJlY3Rpb24gKiAyMCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==