@asadi/angular-date-components
Version:
`Angular Date Components` is a comprehensive angular library of date-related components designed to meet the needs of applications that require localization based on various calendar systems. While the package currently includes two powerful components (S
143 lines • 14.5 kB
JavaScript
import { Directive, EventEmitter, Input, Output } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
/**
* Directive to manage and emit events related to the scheduler, such as date range selection and event selection.
* It handles holidays, weekends, and events and provides observables for changes in these values.
*/
export class ADCSchedulerSource {
constructor() {
this._events = new BehaviorSubject([]);
this._holidays = new BehaviorSubject([]);
this._weekends = new BehaviorSubject([]);
/**
* Emitted when a date range is selected by the user.
* This output allows handling of date range selection events in the parent component.
*
* @example
* <div SchedulerSource (DateRangeSelect)="onDateRangeSelect($event)"></div>
*/
this.dateRangeSelect = new EventEmitter();
/**
* Emitted when an event is selected in the scheduler.
* This output allows handling of event selection events in the parent component.
*
* @example
* <div SchedulerSource (EventSelect)="onEventSelect($event)"></div>
*/
this.EventSelect = new EventEmitter();
/**
* Emitted when the date range is changed.
* This output allows handling of date range change events in the parent component.
*
* @example
* <div SchedulerSource (DateRangeChange)="onDateRangeChange($event)"></div>
*/
this.dateRangeChange = new EventEmitter();
this.startOf = null;
}
/**
* The list of holiday dates to exclude in the scheduler.
* When this value is updated, it updates the internal holidays list.
*
* @example
* <div SchedulerSource [Holidays]="holidayList"></div>
*/
set holidays(value) {
if (value == null) {
this._holidays.next([]);
}
else {
this._holidays.next(value);
}
}
get holidays() {
return this._holidays.value;
}
/**
* The list of weekend days (represented as day numbers, e.g., [0, 6] for Sunday and Saturday).
* When this value is updated, it updates the internal weekends list.
*
* @example
* <div SchedulerSource [Weekends]="[0, 6]"></div>
*/
set weekends(value) {
if (value == null) {
this._weekends.next([]);
}
else {
this._weekends.next(value);
}
}
get weekends() {
return this._weekends.value;
}
/**
* The list of scheduler events to be displayed in the scheduler.
* When this value is updated, it updates the internal events list.
*
* @example
* <div SchedulerSource [Events]="eventList"></div>
*/
set events(value) {
if (value == null) {
this._events.next([]);
}
else {
this._events.next(value);
}
}
get events() {
return this._events.value;
}
eventChanges() {
return this._events.asObservable();
}
holidayChanges() {
return this._holidays.asObservable();
}
weekendChanges() {
return this._weekends.asObservable();
}
onEventSelect(e) {
this.EventSelect.emit(e);
}
onDateRangeSelect(e) {
this.dateRangeSelect.next(e);
}
;
onDateRangeChange(e) {
this.dateRangeChange.next(e);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ADCSchedulerSource, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: ADCSchedulerSource, isStandalone: true, selector: "[SchedulerSource]", inputs: { holidays: "holidays", weekends: "weekends", startOf: "startOf", events: "events" }, outputs: { dateRangeSelect: "dateRangeSelect", EventSelect: "eventSelect", dateRangeChange: "dateRangeChange" }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ADCSchedulerSource, decorators: [{
type: Directive,
args: [{
selector: '[SchedulerSource]',
standalone: true
}]
}], propDecorators: { dateRangeSelect: [{
type: Output,
args: ['dateRangeSelect']
}], EventSelect: [{
type: Output,
args: ['eventSelect']
}], dateRangeChange: [{
type: Output,
args: ['dateRangeChange']
}], holidays: [{
type: Input,
args: ['holidays']
}], weekends: [{
type: Input,
args: ['weekends']
}], startOf: [{
type: Input,
args: ['startOf']
}], events: [{
type: Input,
args: ['events']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRjLXNjaGVkdWxlci1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNhZGkvYW5ndWxhci1kYXRlLWNvbXBvbmVudHMvc2NoZWR1bGVyL3NyYy9kaXJlY3RpdmVzL2FkYy1zY2hlZHVsZXItc291cmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25EOzs7R0FHRztBQUtILE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFNVSxZQUFPLEdBQTJDLElBQUksZUFBZSxDQUFFLEVBQTJCLENBQUMsQ0FBQztRQUNwRyxjQUFTLEdBQThCLElBQUksZUFBZSxDQUFFLEVBQWUsQ0FBQyxDQUFDO1FBQzdFLGNBQVMsR0FBOEIsSUFBSSxlQUFlLENBQUUsRUFBZSxDQUFDLENBQUM7UUFFbkY7Ozs7OztTQU1DO1FBRUssb0JBQWUsR0FBb0QsSUFBSSxZQUFZLEVBQXFDLENBQUM7UUFFL0g7Ozs7OztTQU1DO1FBRUssZ0JBQVcsR0FBZ0QsSUFBSSxZQUFZLEVBQWlDLENBQUM7UUFFbkg7Ozs7OztTQU1DO1FBRUssb0JBQWUsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFrRC9HLFlBQU8sR0FBa0IsSUFBSSxDQUFDO0tBdUQvQjtJQXZHQzs7Ozs7O09BTUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUFlO1FBRTFCLElBQUcsS0FBSyxJQUFJLElBQUksRUFDaEI7WUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjthQUNEO1lBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBRVYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBR0M7Ozs7OztLQU1DO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FBZTtRQUUxQixJQUFHLEtBQUssSUFBSSxJQUFJLEVBQ2hCO1lBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7YUFDRDtZQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUNELElBQUksUUFBUTtRQUVWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUtDOzs7Ozs7S0FNQztJQUNILElBQ0ksTUFBTSxDQUFDLEtBQTJCO1FBRXBDLElBQUcsS0FBSyxJQUFJLElBQUksRUFDaEI7WUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN2QjthQUNEO1lBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFFSCxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBRVIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWTtRQUVWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztRQUVaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztRQUVaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFDLENBQWdDO1FBRTVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFvQztRQUVwRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQUEsQ0FBQztJQUVGLGlCQUFpQixDQUFDLENBQTJCO1FBRTNDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBMUlVLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFlUyxlQUFlO3NCQUR0QixNQUFNO3VCQUFDLGlCQUFpQjtnQkFXakIsV0FBVztzQkFEbEIsTUFBTTt1QkFBQyxhQUFhO2dCQVdiLGVBQWU7c0JBRHRCLE1BQU07dUJBQUMsaUJBQWlCO2dCQVdyQixRQUFRO3NCQURYLEtBQUs7dUJBQUMsVUFBVTtnQkF5QmIsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLFVBQVU7Z0JBaUJqQixPQUFPO3NCQUROLEtBQUs7dUJBQUMsU0FBUztnQkFXWixNQUFNO3NCQURULEtBQUs7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFEQ0lTY2hlZHVsZXJEYXRlUmFuZ2VTZWxlY3RFdmVudCwgQURDSVNjaGVkdWxlckV2ZW50LCBBRENJU2NoZWR1bGVyRXZlbnRTZWxlY3RFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZS5nbG9iYWwnO1xyXG5pbXBvcnQgeyBBRENJRGF0ZVJhbmdlQ2hhbmdlRXZlbnQgfSBmcm9tICdAYXNhZGkvYW5ndWxhci1kYXRlLWNvbXBvbmVudHMvY29yZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIERpcmVjdGl2ZSB0byBtYW5hZ2UgYW5kIGVtaXQgZXZlbnRzIHJlbGF0ZWQgdG8gdGhlIHNjaGVkdWxlciwgc3VjaCBhcyBkYXRlIHJhbmdlIHNlbGVjdGlvbiBhbmQgZXZlbnQgc2VsZWN0aW9uLlxyXG4gKiBJdCBoYW5kbGVzIGhvbGlkYXlzLCB3ZWVrZW5kcywgYW5kIGV2ZW50cyBhbmQgcHJvdmlkZXMgb2JzZXJ2YWJsZXMgZm9yIGNoYW5nZXMgaW4gdGhlc2UgdmFsdWVzLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbU2NoZWR1bGVyU291cmNlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQURDU2NoZWR1bGVyU291cmNlIHtcclxuXHJcbiAgcHJpdmF0ZSBfZXZlbnRzOiBCZWhhdmlvclN1YmplY3Q8QURDSVNjaGVkdWxlckV2ZW50W10+ICA9IG5ldyBCZWhhdmlvclN1YmplY3QoKFtdIGFzIEFEQ0lTY2hlZHVsZXJFdmVudFtdKSk7XHJcbiAgcHJpdmF0ZSBfaG9saWRheXM6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KChbXSBhcyBzdHJpbmdbXSkpO1xyXG4gIHByaXZhdGUgX3dlZWtlbmRzOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgoW10gYXMgbnVtYmVyW10pKTtcclxuICBcclxuICAgIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiBhIGRhdGUgcmFuZ2UgaXMgc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXHJcbiAgICogVGhpcyBvdXRwdXQgYWxsb3dzIGhhbmRsaW5nIG9mIGRhdGUgcmFuZ2Ugc2VsZWN0aW9uIGV2ZW50cyBpbiB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIDxkaXYgU2NoZWR1bGVyU291cmNlIChEYXRlUmFuZ2VTZWxlY3QpPVwib25EYXRlUmFuZ2VTZWxlY3QoJGV2ZW50KVwiPjwvZGl2PlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ2RhdGVSYW5nZVNlbGVjdCcpXHJcbiAgcHJpdmF0ZSBkYXRlUmFuZ2VTZWxlY3Q6IEV2ZW50RW1pdHRlcjxBRENJU2NoZWR1bGVyRGF0ZVJhbmdlU2VsZWN0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBRENJU2NoZWR1bGVyRGF0ZVJhbmdlU2VsZWN0RXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuIGFuIGV2ZW50IGlzIHNlbGVjdGVkIGluIHRoZSBzY2hlZHVsZXIuXHJcbiAgICogVGhpcyBvdXRwdXQgYWxsb3dzIGhhbmRsaW5nIG9mIGV2ZW50IHNlbGVjdGlvbiBldmVudHMgaW4gdGhlIHBhcmVudCBjb21wb25lbnQuXHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8ZGl2IFNjaGVkdWxlclNvdXJjZSAoRXZlbnRTZWxlY3QpPVwib25FdmVudFNlbGVjdCgkZXZlbnQpXCI+PC9kaXY+XHJcbiAgICovXHJcbiAgQE91dHB1dCgnZXZlbnRTZWxlY3QnKVxyXG4gIHByaXZhdGUgRXZlbnRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxBRENJU2NoZWR1bGVyRXZlbnRTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFEQ0lTY2hlZHVsZXJFdmVudFNlbGVjdEV2ZW50PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGF0ZSByYW5nZSBpcyBjaGFuZ2VkLlxyXG4gICAqIFRoaXMgb3V0cHV0IGFsbG93cyBoYW5kbGluZyBvZiBkYXRlIHJhbmdlIGNoYW5nZSBldmVudHMgaW4gdGhlIHBhcmVudCBjb21wb25lbnQuXHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8ZGl2IFNjaGVkdWxlclNvdXJjZSAoRGF0ZVJhbmdlQ2hhbmdlKT1cIm9uRGF0ZVJhbmdlQ2hhbmdlKCRldmVudClcIj48L2Rpdj5cclxuICAgKi9cclxuICBAT3V0cHV0KCdkYXRlUmFuZ2VDaGFuZ2UnKVxyXG4gIHByaXZhdGUgZGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QURDSURhdGVSYW5nZUNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QURDSURhdGVSYW5nZUNoYW5nZUV2ZW50PigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbGlzdCBvZiBob2xpZGF5IGRhdGVzIHRvIGV4Y2x1ZGUgaW4gdGhlIHNjaGVkdWxlci5cclxuICAgKiBXaGVuIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCwgaXQgdXBkYXRlcyB0aGUgaW50ZXJuYWwgaG9saWRheXMgbGlzdC5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIDxkaXYgU2NoZWR1bGVyU291cmNlIFtIb2xpZGF5c109XCJob2xpZGF5TGlzdFwiPjwvZGl2PlxyXG4gICAqL1xyXG4gIEBJbnB1dCgnaG9saWRheXMnKVxyXG4gIHNldCBob2xpZGF5cyh2YWx1ZTogc3RyaW5nW10pXHJcbiAge1xyXG4gICAgaWYodmFsdWUgPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgdGhpcy5faG9saWRheXMubmV4dChbXSk7XHJcbiAgICB9ZWxzZVxyXG4gICAge1xyXG4gICAgICB0aGlzLl9ob2xpZGF5cy5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGhvbGlkYXlzKCk6IHN0cmluZ1tdXHJcbiAge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hvbGlkYXlzLnZhbHVlO1xyXG4gIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICogVGhlIGxpc3Qgb2Ygd2Vla2VuZCBkYXlzIChyZXByZXNlbnRlZCBhcyBkYXkgbnVtYmVycywgZS5nLiwgWzAsIDZdIGZvciBTdW5kYXkgYW5kIFNhdHVyZGF5KS5cclxuICAgKiBXaGVuIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCwgaXQgdXBkYXRlcyB0aGUgaW50ZXJuYWwgd2Vla2VuZHMgbGlzdC5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIDxkaXYgU2NoZWR1bGVyU291cmNlIFtXZWVrZW5kc109XCJbMCwgNl1cIj48L2Rpdj5cclxuICAgKi9cclxuICBASW5wdXQoJ3dlZWtlbmRzJylcclxuICBzZXQgd2Vla2VuZHModmFsdWU6IG51bWJlcltdKVxyXG4gIHtcclxuICAgIGlmKHZhbHVlID09IG51bGwpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuX3dlZWtlbmRzLm5leHQoW10pO1xyXG4gICAgfWVsc2VcclxuICAgIHtcclxuICAgICAgdGhpcy5fd2Vla2VuZHMubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCB3ZWVrZW5kcygpOiBudW1iZXJbXVxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLl93ZWVrZW5kcy52YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnc3RhcnRPZicpXHJcbiAgc3RhcnRPZjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICogVGhlIGxpc3Qgb2Ygc2NoZWR1bGVyIGV2ZW50cyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNjaGVkdWxlci5cclxuICAgKiBXaGVuIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCwgaXQgdXBkYXRlcyB0aGUgaW50ZXJuYWwgZXZlbnRzIGxpc3QuXHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8ZGl2IFNjaGVkdWxlclNvdXJjZSBbRXZlbnRzXT1cImV2ZW50TGlzdFwiPjwvZGl2PlxyXG4gICAqL1xyXG4gIEBJbnB1dCgnZXZlbnRzJylcclxuICBzZXQgZXZlbnRzKHZhbHVlOiBBRENJU2NoZWR1bGVyRXZlbnRbXSlcclxuICB7XHJcbiAgICBpZih2YWx1ZSA9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICB0aGlzLl9ldmVudHMubmV4dChbXSk7XHJcbiAgICB9ZWxzZVxyXG4gICAge1xyXG4gICAgICB0aGlzLl9ldmVudHMubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbiAgZ2V0IGV2ZW50cygpOiBBRENJU2NoZWR1bGVyRXZlbnRbXVxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudHMudmFsdWU7XHJcbiAgfVxyXG5cclxuICBldmVudENoYW5nZXMoKTogT2JzZXJ2YWJsZTxBRENJU2NoZWR1bGVyRXZlbnRbXT5cclxuICB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgaG9saWRheUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT5cclxuICB7XHJcbiAgICByZXR1cm4gdGhpcy5faG9saWRheXMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICB3ZWVrZW5kQ2hhbmdlcygpOiBPYnNlcnZhYmxlPG51bWJlcltdPlxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLl93ZWVrZW5kcy5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIG9uRXZlbnRTZWxlY3QoZTogQURDSVNjaGVkdWxlckV2ZW50U2VsZWN0RXZlbnQpOiB2b2lkXHJcbiAge1xyXG4gICAgdGhpcy5FdmVudFNlbGVjdC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlUmFuZ2VTZWxlY3QoZTogQURDSVNjaGVkdWxlckRhdGVSYW5nZVNlbGVjdEV2ZW50KVxyXG4gIHtcclxuICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0Lm5leHQoZSk7XHJcbiAgfTtcclxuXHJcbiAgb25EYXRlUmFuZ2VDaGFuZ2UoZTogQURDSURhdGVSYW5nZUNoYW5nZUV2ZW50KTogdm9pZFxyXG4gIHtcclxuICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLm5leHQoZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==