@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
300 lines • 22.9 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, HostListener } from '@angular/core';
import { isDateInRanges } from '../calendar';
import { CalendarSelection } from '../calendar-base';
/**
*@hidden
*/
var IgxDayItemComponent = /** @class */ (function () {
function IgxDayItemComponent(elementRef) {
this.elementRef = elementRef;
this.hideOutsideDays = false;
this.isLastInRange = false;
this.isFirstInRange = false;
this.isWithinRange = false;
this.onDateSelection = new EventEmitter();
this._selected = false;
}
Object.defineProperty(IgxDayItemComponent.prototype, "selected", {
/**
* Returns boolean indicating if the day is selected
*
*/
get: function () {
return this._selected;
},
/**
* Selects the day
*/
set: function (value) {
this._selected = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isCurrentMonth", {
get: function () {
return this.date.isCurrentMonth;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isPreviousMonth", {
get: function () {
return this.date.isPrevMonth;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isNextMonth", {
get: function () {
return this.date.isNextMonth;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "nativeElement", {
get: function () {
return this.elementRef.nativeElement;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isSelectedCSS", {
get: function () {
return (!this.isDisabled && this.selected);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isInactive", {
get: function () {
return this.date.isNextMonth || this.date.isPrevMonth;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isHidden", {
get: function () {
return this.hideOutsideDays && this.isInactive;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isToday", {
get: function () {
var today = new Date(Date.now());
var date = this.date.date;
return (date.getFullYear() === today.getFullYear() &&
date.getMonth() === today.getMonth() &&
date.getDate() === today.getDate());
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isWeekend", {
get: function () {
var day = this.date.date.getDay();
return day === 0 || day === 6;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isDisabled", {
get: function () {
if (this.disabledDates === null) {
return false;
}
return isDateInRanges(this.date.date, this.disabledDates);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isOutOfRange", {
get: function () {
if (!this.outOfRangeDates) {
return false;
}
return isDateInRanges(this.date.date, this.outOfRangeDates);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isFocusable", {
get: function () {
return this.isCurrentMonth && !this.isHidden && !this.isDisabled && !this.isOutOfRange;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isWithinRangeCSS", {
get: function () {
return !this.isSingleSelection && this.isWithinRange;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isSpecial", {
get: function () {
if (this.specialDates === null) {
return false;
}
return isDateInRanges(this.date.date, this.specialDates);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "defaultCSS", {
get: function () {
return this.date.isCurrentMonth && !(this.isWeekend && this.selected);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isDisabledCSS", {
get: function () {
return this.isHidden || this.isDisabled || this.isOutOfRange;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "isSingleSelection", {
get: function () {
return this.selection !== CalendarSelection.RANGE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxDayItemComponent.prototype, "tabindex", {
get: function () {
return this.isDisabled || this.isHidden ? -1 : 0;
},
enumerable: true,
configurable: true
});
IgxDayItemComponent.prototype.onSelect = function () {
this.onDateSelection.emit(this.date);
};
IgxDayItemComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
__decorate([
Input(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "date", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxDayItemComponent.prototype, "selection", void 0);
__decorate([
Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], IgxDayItemComponent.prototype, "selected", null);
__decorate([
Input(),
__metadata("design:type", Array)
], IgxDayItemComponent.prototype, "disabledDates", void 0);
__decorate([
Input(),
__metadata("design:type", Array)
], IgxDayItemComponent.prototype, "outOfRangeDates", void 0);
__decorate([
Input(),
__metadata("design:type", Array)
], IgxDayItemComponent.prototype, "specialDates", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "hideOutsideDays", void 0);
__decorate([
Input(),
HostBinding('class.igx-calendar__date--last'),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "isLastInRange", void 0);
__decorate([
Input(),
HostBinding('class.igx-calendar__date--first'),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "isFirstInRange", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "isWithinRange", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "onDateSelection", void 0);
__decorate([
HostBinding('class.igx-calendar__date--selected'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isSelectedCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--inactive'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isInactive", null);
__decorate([
HostBinding('class.igx-calendar__date--hidden'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isHidden", null);
__decorate([
HostBinding('class.igx-calendar__date--current'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isToday", null);
__decorate([
HostBinding('class.igx-calendar__date--weekend'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isWeekend", null);
__decorate([
HostBinding('class.igx-calendar__date--range'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isWithinRangeCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--special'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isSpecial", null);
__decorate([
HostBinding('class.igx-calendar__date'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "defaultCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--disabled'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isDisabledCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--single'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isSingleSelection", null);
__decorate([
HostBinding('attr.tabindex'),
__metadata("design:type", Number),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "tabindex", null);
__decorate([
HostListener('click'),
HostListener('keydown.enter'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], IgxDayItemComponent.prototype, "onSelect", null);
IgxDayItemComponent = __decorate([
Component({
selector: 'igx-day-item',
template: "<span class=\"igx-calendar__date-content\">\n <ng-content></ng-content>\n</span>\n"
}),
__metadata("design:paramtypes", [ElementRef])
], IgxDayItemComponent);
return IgxDayItemComponent;
}());
export { IgxDayItemComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJEOztFQUVFO0FBS0Y7SUF3SkksNkJBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF2SG5DLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSXhCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSXRCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBR3RCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUF1R25ELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFb0IsQ0FBQztJQTVJL0Msc0JBQVcseUNBQVE7UUFMbkI7OztXQUdHO2FBRUg7WUFDSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUVEOztXQUVHO2FBQ0gsVUFBb0IsS0FBVTtZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDOzs7T0FQQTtJQW1DRCxzQkFBVywrQ0FBYzthQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBVyxnREFBZTthQUExQjtZQUNJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENB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UUFEQyxNQUFNLEVBQUU7O2dFQUNrRDtJQW1CM0Q7UUFEQyxXQUFXLENBQUMsb0NBQW9DLENBQUM7Ozs0REFHakQ7SUFHRDtRQURDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQzs7O3lEQUdqRDtJQUdEO1FBREMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDOzs7dURBRy9DO0lBR0Q7UUFEQyxXQUFXLENBQUMsbUNBQW1DLENBQUM7OztzREFRaEQ7SUFHRDtRQURDLFdBQVcsQ0FBQyxtQ0FBbUMsQ0FBQzs7O3dEQUloRDtJQXVCRDtRQURDLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQzs7OytEQUc5QztJQUdEO1FBREMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDOzs7d0RBT2hEO0lBR0Q7UUFEQyxXQUFXLENBQUMsMEJBQTBCLENBQUM7Ozt5REFHdkM7SUFHRDtRQURDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQzs7OzREQUdqRDtJQUdEO1FBREMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDOzs7Z0VBRy9DO0lBR0Q7UUFEQyxXQUFXLENBQUMsZUFBZSxDQUFDOzs7dURBRzVCO0lBUUQ7UUFGQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JCLFlBQVksQ0FBQyxlQUFlLENBQUM7Ozs7dURBRzdCO0lBOUpRLG1CQUFtQjtRQUovQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsY0FBYztZQUN4QixpR0FBc0M7U0FDekMsQ0FBQzt5Q0F5SmtDLFVBQVU7T0F4SmpDLG1CQUFtQixDQStKL0I7SUFBRCwwQkFBQztDQUFBLEFBL0pELElBK0pDO1NBL0pZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ2FsZW5kYXJEYXRlLCBpc0RhdGVJblJhbmdlcyB9IGZyb20gJy4uL2NhbGVuZGFyJztcbmltcG9ydCB7IERhdGVSYW5nZURlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGVzJztcbmltcG9ydCB7IENhbGVuZGFyU2VsZWN0aW9uIH0gZnJvbSAnLi4vY2FsZW5kYXItYmFzZSc7XG5cbi8qKlxuICpAaGlkZGVuXG4qL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZGF5LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZGF5LWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneERheUl0ZW1Db21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGU6IElDYWxlbmRhckRhdGU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBkYXkgaXMgc2VsZWN0ZWRcbiAgICAgKlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0aGUgZGF5XG4gICAgICovXG4gICAgcHVibGljIHNldCBzZWxlY3RlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWREYXRlczogRGF0ZVJhbmdlRGVzY3JpcHRvcltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3V0T2ZSYW5nZURhdGVzOiBEYXRlUmFuZ2VEZXNjcmlwdG9yW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGVjaWFsRGF0ZXM6IERhdGVSYW5nZURlc2NyaXB0b3JbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGVPdXRzaWRlRGF5cyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tbGFzdCcpXG4gICAgcHVibGljIGlzTGFzdEluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLWZpcnN0JylcbiAgICBwdWJsaWMgaXNGaXJzdEluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzV2l0aGluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkRhdGVTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElDYWxlbmRhckRhdGU+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGlzQ3VycmVudE1vbnRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlLmlzQ3VycmVudE1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNQcmV2aW91c01vbnRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlLmlzUHJldk1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNOZXh0TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuaXNOZXh0TW9udGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXNlbGVjdGVkJylcbiAgICBwdWJsaWMgZ2V0IGlzU2VsZWN0ZWRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuaXNEaXNhYmxlZCAmJiB0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0taW5hY3RpdmUnKVxuICAgIHB1YmxpYyBnZXQgaXNJbmFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5pc05leHRNb250aCB8fCB0aGlzLmRhdGUuaXNQcmV2TW9udGg7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLWhpZGRlbicpXG4gICAgcHVibGljIGdldCBpc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGlkZU91dHNpZGVEYXlzICYmIHRoaXMuaXNJbmFjdGl2ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tY3VycmVudCcpXG4gICAgcHVibGljIGdldCBpc1RvZGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKERhdGUubm93KCkpO1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlLmRhdGU7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCkgPT09IHRvZGF5LmdldE1vbnRoKCkgJiZcbiAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0td2Vla2VuZCcpXG4gICAgcHVibGljIGdldCBpc1dlZWtlbmQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRheSA9IHRoaXMuZGF0ZS5kYXRlLmdldERheSgpO1xuICAgICAgICByZXR1cm4gZGF5ID09PSAwIHx8IGRheSA9PT0gNjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkRGF0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc0RhdGVJblJhbmdlcyh0aGlzLmRhdGUuZGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzT3V0T2ZSYW5nZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm91dE9mUmFuZ2VEYXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzRGF0ZUluUmFuZ2VzKHRoaXMuZGF0ZS5kYXRlLCB0aGlzLm91dE9mUmFuZ2VEYXRlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50TW9udGggJiYgIXRoaXMuaXNIaWRkZW4gJiYgIXRoaXMuaXNEaXNhYmxlZCAmJiAhdGhpcy5pc091dE9mUmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXJhbmdlJylcbiAgICBwdWJsaWMgZ2V0IGlzV2l0aGluUmFuZ2VDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc1NpbmdsZVNlbGVjdGlvbiAmJiB0aGlzLmlzV2l0aGluUmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXNwZWNpYWwnKVxuICAgIHB1YmxpYyBnZXQgaXNTcGVjaWFsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5zcGVjaWFsRGF0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc0RhdGVJblJhbmdlcyh0aGlzLmRhdGUuZGF0ZSwgdGhpcy5zcGVjaWFsRGF0ZXMpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlJylcbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuaXNDdXJyZW50TW9udGggJiYgISh0aGlzLmlzV2Vla2VuZCAmJiB0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNEaXNhYmxlZENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNIaWRkZW4gfHwgdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuaXNPdXRPZlJhbmdlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS1zaW5nbGUnKVxuICAgIHB1YmxpYyBnZXQgaXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAhPT0gQ2FsZW5kYXJTZWxlY3Rpb24uUkFOR0U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0hpZGRlbiA/IC0xIDogMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgICBwdWJsaWMgb25TZWxlY3QoKSB7XG4gICAgICAgIHRoaXMub25EYXRlU2VsZWN0aW9uLmVtaXQodGhpcy5kYXRlKTtcbiAgICB9XG59XG4iXX0=