@alauda/ui 6.5.10-beta.52 → 6.5.10-beta.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,6 +37,8 @@ export declare class DatePickerPanelComponent extends CommonFormControl<Dayjs> {
37
37
  confirmValue(value?: ConfigType, closeAfterConfirm?: boolean): void;
38
38
  timeDateChange(time: TimePickerModel): void;
39
39
  setToday(): void;
40
+ clearValue(): void;
41
+ private _disabledTimeFn;
40
42
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerPanelComponent, never>;
41
43
  static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerPanelComponent, "aui-date-picker-panel", never, { "clearable": { "alias": "clearable"; "required": false; }; "clearText": { "alias": "clearText"; "required": false; }; "type": { "alias": "type"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "disabledTime": { "alias": "disabledTime"; "required": false; }; "weekStartDay": { "alias": "weekStartDay"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "extraFooter": { "alias": "extraFooter"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; }, { "confirm": "confirm"; "clear": "clear"; }, never, never, false, never>;
42
44
  }
@@ -5,6 +5,7 @@ import { CommonFormControl } from '../../../form/common-form';
5
5
  import { DateNavRange } from '../../date-picker.type';
6
6
  import { DatePickerType } from '../constant';
7
7
  import { getNavRangeByType, getTimePickerModel, getTypeByNavRange, nextNavRangeType, updateDate, updateDateByTimeModel, } from '../util';
8
+ import { HOUR_ITEMS, MINUTE_ITEMS, SECOND_ITEMS } from 'src/time-picker';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common";
10
11
  import * as i2 from "../../../button/button.component";
@@ -40,7 +41,7 @@ export class DatePickerPanelComponent extends CommonFormControl {
40
41
  _cacheDisabledTimeFn;
41
42
  getDisabledTimeFn(selectedDate, type) {
42
43
  if (selectedDate !== this._cacheSelectedDate) {
43
- this._cacheDisabledTimeFn = this.disabledTime(selectedDate);
44
+ this._cacheDisabledTimeFn = combineDisabledTimeFn(this._disabledTimeFn.bind(this), this.disabledTime)(selectedDate);
44
45
  this._cacheSelectedDate = selectedDate;
45
46
  }
46
47
  return this._cacheDisabledTimeFn?.[type];
@@ -87,6 +88,52 @@ export class DatePickerPanelComponent extends CommonFormControl {
87
88
  setToday() {
88
89
  this.confirmValue(dayjs(), true);
89
90
  }
91
+ clearValue() {
92
+ this.selectedTime = null;
93
+ this.clear.next();
94
+ }
95
+ _disabledTimeFn(selectedDate) {
96
+ const returnFnMap = {
97
+ hours: () => [],
98
+ minutes: () => [],
99
+ seconds: () => [],
100
+ };
101
+ if (selectedDate &&
102
+ this.minDate &&
103
+ selectedDate?.isSame(this.minDate, 'date')) {
104
+ returnFnMap.hours = () => HOUR_ITEMS.filter(item => item < this.minDate.hour());
105
+ returnFnMap.minutes = (hour) => {
106
+ if (hour === this.minDate.hour()) {
107
+ return MINUTE_ITEMS.filter(item => item < this.minDate.minute());
108
+ }
109
+ return [];
110
+ };
111
+ returnFnMap.seconds = (hour, minute) => {
112
+ if (hour === this.minDate.hour() && minute === this.minDate.minute()) {
113
+ return SECOND_ITEMS.filter(item => item < this.minDate.second());
114
+ }
115
+ return [];
116
+ };
117
+ }
118
+ if (selectedDate &&
119
+ this.maxDate &&
120
+ selectedDate?.isSame(this.maxDate, 'date')) {
121
+ returnFnMap.hours = () => HOUR_ITEMS.filter(item => item > this.maxDate.hour());
122
+ returnFnMap.minutes = (hour) => {
123
+ if (hour === this.maxDate.hour()) {
124
+ return MINUTE_ITEMS.filter(item => item > this.maxDate.minute());
125
+ }
126
+ return [];
127
+ };
128
+ returnFnMap.seconds = (hour, minute) => {
129
+ if (hour === this.maxDate.hour() && minute === this.maxDate.minute()) {
130
+ return SECOND_ITEMS.filter(item => item > this.maxDate.second());
131
+ }
132
+ return [];
133
+ };
134
+ }
135
+ return returnFnMap;
136
+ }
90
137
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DatePickerPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
91
138
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: DatePickerPanelComponent, selector: "aui-date-picker-panel", inputs: { clearable: "clearable", clearText: "clearText", type: "type", showTime: "showTime", disabledDate: "disabledDate", disabledTime: "disabledTime", weekStartDay: "weekStartDay", showFooter: "showFooter", footerTemplate: "footerTemplate", extraFooter: "extraFooter", minDate: "minDate", maxDate: "maxDate" }, outputs: { confirm: "confirm", clear: "clear" }, providers: [
92
139
  {
@@ -94,7 +141,7 @@ export class DatePickerPanelComponent extends CommonFormControl {
94
141
  useExisting: forwardRef(() => DatePickerPanelComponent),
95
142
  multi: true,
96
143
  },
97
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TimePickerComponent, selector: "aui-time-picker", inputs: ["format", "size", "placeholder", "clearable", "showIcon", "disableHours", "disableMinutes", "disableSeconds", "hourStep", "minuteStep", "secondStep", "footerTemplate"], outputs: ["open", "close"] }, { kind: "component", type: i5.CalendarHeaderComponent, selector: "aui-calendar-header", inputs: ["dateNavRange", "anchor", "maxAvail", "minAvail"], outputs: ["navRangeChange", "anchorChange"] }, { kind: "component", type: i6.CalendarFooterComponent, selector: "aui-calendar-footer", inputs: ["clearable", "clearText", "customAction"], outputs: ["confirm", "clear"] }, { kind: "component", type: i7.PickerPanelComponent, selector: "aui-picker-panel", inputs: ["navRange", "type", "anchor", "matchDates", "disabledDate", "weekStartDay", "minDate", "maxDate"], outputs: ["select", "hovered"] }, { kind: "pipe", type: i8.I18nPipe, name: "auiI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
144
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n (clear)=\"clearValue()\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TimePickerComponent, selector: "aui-time-picker", inputs: ["format", "size", "placeholder", "clearable", "showIcon", "disableHours", "disableMinutes", "disableSeconds", "hourStep", "minuteStep", "secondStep", "footerTemplate"], outputs: ["open", "close"] }, { kind: "component", type: i5.CalendarHeaderComponent, selector: "aui-calendar-header", inputs: ["dateNavRange", "anchor", "maxAvail", "minAvail"], outputs: ["navRangeChange", "anchorChange"] }, { kind: "component", type: i6.CalendarFooterComponent, selector: "aui-calendar-footer", inputs: ["clearable", "clearText", "customAction"], outputs: ["confirm", "clear"] }, { kind: "component", type: i7.PickerPanelComponent, selector: "aui-picker-panel", inputs: ["navRange", "type", "anchor", "matchDates", "disabledDate", "weekStartDay", "minDate", "maxDate"], outputs: ["select", "hovered"] }, { kind: "pipe", type: i8.I18nPipe, name: "auiI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
98
145
  }
99
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DatePickerPanelComponent, decorators: [{
100
147
  type: Component,
@@ -104,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
104
151
  useExisting: forwardRef(() => DatePickerPanelComponent),
105
152
  multi: true,
106
153
  },
107
- ], template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"] }]
154
+ ], template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n (clear)=\"clearValue()\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"] }]
108
155
  }], propDecorators: { clearable: [{
109
156
  type: Input
110
157
  }], clearText: [{
@@ -134,4 +181,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
134
181
  }], clear: [{
135
182
  type: Output
136
183
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2NhbGVuZGFyL2RhdGUtcGlja2VyLXBhbmVsL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9jYWxlbmRhci9kYXRlLXBpY2tlci1wYW5lbC90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxLQUE0QixNQUFNLE9BQU8sQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YscUJBQXFCLEdBQ3RCLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7O0FBZ0JqQixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsaUJBQXdCO0lBRXBFLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFHakIsU0FBUyxDQUFTO0lBRWxCLElBQ0ksSUFBSSxDQUFDLElBQW9CO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFD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QkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixNQUFNO2dCQUlQLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGRheWpzLCB7IENvbmZpZ1R5cGUsIERheWpzIH0gZnJvbSAnZGF5anMnO1xuXG5pbXBvcnQgeyBDb21tb25Gb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL2Zvcm0vY29tbW9uLWZvcm0nO1xuaW1wb3J0IHsgVGltZVBpY2tlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdGltZS1waWNrZXIvdGltZS1waWNrZXIudHlwZSc7XG5pbXBvcnQgeyBEYXRlTmF2UmFuZ2UsIERpc2FibGVkVGltZUZuIH0gZnJvbSAnLi4vLi4vZGF0ZS1waWNrZXIudHlwZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyVHlwZSB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCB7XG4gIGdldE5hdlJhbmdlQnlUeXBlLFxuICBnZXRUaW1lUGlja2VyTW9kZWwsXG4gIGdldFR5cGVCeU5hdlJhbmdlLFxuICBuZXh0TmF2UmFuZ2VUeXBlLFxuICB1cGRhdGVEYXRlLFxuICB1cGRhdGVEYXRlQnlUaW1lTW9kZWwsXG59IGZyb20gJy4uL3V0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktZGF0ZS1waWNrZXItcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlclBhbmVsQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJQYW5lbENvbXBvbmVudCBleHRlbmRzIENvbW1vbkZvcm1Db250cm9sPERheWpzPiB7XG4gIEBJbnB1dCgpXG4gIGNsZWFyYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgY2xlYXJUZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IHR5cGUodHlwZTogRGF0ZVBpY2tlclR5cGUpIHtcbiAgICB0aGlzLm5hdlJhbmdlID0gZ2V0TmF2UmFuZ2VCeVR5cGUodHlwZSk7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgX3R5cGU6IERhdGVQaWNrZXJUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dUaW1lID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWREYXRlOiAoZGF0ZTogRGF5anMsIHR5cGU6IERhdGVOYXZSYW5nZSkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkVGltZTogRGlzYWJsZWRUaW1lRm4gPSAoKSA9PiBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHdlZWtTdGFydERheSA9IDA7XG5cbiAgQElucHV0KClcbiAgc2hvd0Zvb3RlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGV4dHJhRm9vdGVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBtaW5EYXRlOiBEYXlqcztcblxuICBASW5wdXQoKVxuICBtYXhEYXRlOiBEYXlqcztcblxuICBAT3V0cHV0KClcbiAgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF5anM+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2NhY2hlU2VsZWN0ZWREYXRlOiBEYXlqcztcbiAgcHJpdmF0ZSBfY2FjaGVEaXNhYmxlZFRpbWVGbjogUmV0dXJuVHlwZTxEaXNhYmxlZFRpbWVGbj47XG5cbiAgZ2V0RGlzYWJsZWRUaW1lRm4oXG4gICAgc2VsZWN0ZWREYXRlOiBEYXlqcyxcbiAgICB0eXBlOiBrZXlvZiBSZXR1cm5UeXBlPERpc2FibGVkVGltZUZuPixcbiAgKSB7XG4gICAgaWYgKHNlbGVjdGVkRGF0ZSAhPT0gdGhpcy5fY2FjaGVTZWxlY3RlZERhdGUpIHtcbiAgICAgIHRoaXMuX2NhY2hlRGlzYWJsZWRUaW1lRm4gPSB0aGlzLmRpc2FibGVkVGltZShzZWxlY3RlZERhdGUpO1xuICAgICAgdGhpcy5fY2FjaGVTZWxlY3RlZERhdGUgPSBzZWxlY3RlZERhdGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jYWNoZURpc2FibGVkVGltZUZuPy5bdHlwZV07XG4gIH1cblxuICBuYXZSYW5nZTogRGF0ZU5hdlJhbmdlO1xuXG4gIGdldCBjdXJyZW50TmF2VHlwZSgpIHtcbiAgICByZXR1cm4gZ2V0VHlwZUJ5TmF2UmFuZ2UodGhpcy5uYXZSYW5nZSk7XG4gIH1cblxuICBhbmNob3I6IERheWpzO1xuXG4gIHNlbGVjdGVkRGF0ZTogRGF5anM7XG5cbiAgc2VsZWN0ZWRUaW1lOiBUaW1lUGlja2VyTW9kZWw7XG5cbiAgRGF0ZU5hdlJhbmdlID0gRGF0ZU5hdlJhbmdlO1xuICBEYXRlUGlja2VyVHlwZSA9IERhdGVQaWNrZXJUeXBlO1xuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBEYXlqcykge1xuICAgIHN1cGVyLndyaXRlVmFsdWUob2JqKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG9iajtcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IGdldFRpbWVQaWNrZXJNb2RlbChvYmopO1xuICAgIHRoaXMuYW5jaG9yID0gb2JqIHx8IGRheWpzKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwYW5lbFZhbHVlQ2hhbmdlKHZhbHVlOiBEYXlqcykge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdXBkYXRlRGF0ZShcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlIHx8IGRheWpzKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMuY3VycmVudE5hdlR5cGUsXG4gICAgKTtcbiAgICB0aGlzLmFuY2hvciA9IHRoaXMuc2VsZWN0ZWREYXRlO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdXBkYXRlRGF0ZUJ5VGltZU1vZGVsKFxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUsXG4gICAgICB0aGlzLnNlbGVjdGVkVGltZSxcbiAgICApO1xuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuY3VycmVudE5hdlR5cGUpIHtcbiAgICAgIHRoaXMuY29uZmlybVZhbHVlKHRoaXMuc2VsZWN0ZWREYXRlLCAhdGhpcy5zaG93VGltZSk7XG4gICAgfVxuICAgIGNvbnN0IG5leHROYXZSYW5nZSA9IG5leHROYXZSYW5nZVR5cGUoXG4gICAgICB0aGlzLm5hdlJhbmdlLFxuICAgICAgZ2V0TmF2UmFuZ2VCeVR5cGUodGhpcy50eXBlKSxcbiAgICApO1xuICAgIGlmICh0aGlzLm5hdlJhbmdlICE9PSBuZXh0TmF2UmFuZ2UpIHtcbiAgICAgIHRoaXMubmF2UmFuZ2UgPSBuZXh0TmF2UmFuZ2U7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVZhbHVlKHZhbHVlPzogQ29uZmlnVHlwZSwgY2xvc2VBZnRlckNvbmZpcm0gPSB0cnVlKSB7XG4gICAgdGhpcy5lbWl0VmFsdWUodmFsdWUgPyBkYXlqcyh2YWx1ZSkgOiB0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgY2xvc2VBZnRlckNvbmZpcm0gJiYgdGhpcy5jb25maXJtLm5leHQobnVsbCk7XG4gIH1cblxuICB0aW1lRGF0ZUNoYW5nZSh0aW1lOiBUaW1lUGlja2VyTW9kZWwpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdXBkYXRlRGF0ZUJ5VGltZU1vZGVsKHRoaXMuc2VsZWN0ZWREYXRlLCB0aW1lKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gIH1cblxuICBzZXRUb2RheSgpIHtcbiAgICB0aGlzLmNvbmZpcm1WYWx1ZShkYXlqcygpLCB0cnVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF1aS1kYXRlLXBpY2tlci1wYW5lbF9fd3JhcHBlclwiPlxuICA8YXVpLWNhbGVuZGFyLWhlYWRlclxuICAgIFtkYXRlTmF2UmFuZ2VdPVwibmF2UmFuZ2VcIlxuICAgIFthbmNob3JdPVwiYW5jaG9yXCJcbiAgICBbbWluQXZhaWxdPVwibWluRGF0ZVwiXG4gICAgW21heEF2YWlsXT1cIm1heERhdGVcIlxuICAgIFtzdHlsZS5tYXJnaW4taW5saW5lLnB4XT1cIjRcIlxuICAgIChuYXZSYW5nZUNoYW5nZSk9XCJuYXZSYW5nZSA9ICRldmVudFwiXG4gICAgKGFuY2hvckNoYW5nZSk9XCJhbmNob3IgPSAkZXZlbnRcIlxuICA+PC9hdWktY2FsZW5kYXItaGVhZGVyPlxuXG4gIDxhdWktcGlja2VyLXBhbmVsXG4gICAgW3N0eWxlLm1hcmdpbl09XCInMTZweCAwJ1wiXG4gICAgW2FuY2hvcl09XCJhbmNob3JcIlxuICAgIFtuYXZSYW5nZV09XCJuYXZSYW5nZVwiXG4gICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxuICAgIFt3ZWVrU3RhcnREYXldPVwid2Vla1N0YXJ0RGF5XCJcbiAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbbWF0Y2hEYXRlc109XCJbc2VsZWN0ZWREYXRlXVwiXG4gICAgKHNlbGVjdCk9XCJwYW5lbFZhbHVlQ2hhbmdlKCRldmVudClcIlxuICA+PC9hdWktcGlja2VyLXBhbmVsPlxuXG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cImV4dHJhRm9vdGVyXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJleHRyYUZvb3RlclwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29udGV4dDogdGhpcyB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Rm9vdGVyXCI+XG4gICAgPGF1aS1jYWxlbmRhci1mb290ZXJcbiAgICAgIChjbGVhcik9XCJjbGVhci5uZXh0KClcIlxuICAgICAgKGNvbmZpcm0pPVwiY29uZmlybVZhbHVlKClcIlxuICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgW2NsZWFyVGV4dF09XCJjbGVhclRleHRcIlxuICAgICAgKm5nSWY9XCJzaG93VGltZTsgZWxzZSB0b2RheVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cImZvb3RlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNvbnRleHQ6IHRoaXMgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgPGF1aS10aW1lLXBpY2tlclxuICAgICAgICAgICpuZ0lmPVwiY3VycmVudE5hdlR5cGUgPT09IERhdGVQaWNrZXJUeXBlLkRheSAmJiBzaG93VGltZVwiXG4gICAgICAgICAgW3Nob3dJY29uXT1cImZhbHNlXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUaW1lXCJcbiAgICAgICAgICBbZGlzYWJsZUhvdXJzXT1cImdldERpc2FibGVkVGltZUZuKHNlbGVjdGVkRGF0ZSwgJ2hvdXJzJylcIlxuICAgICAgICAgIFtkaXNhYmxlTWludXRlc109XCJnZXREaXNhYmxlZFRpbWVGbihzZWxlY3RlZERhdGUsICdtaW51dGVzJylcIlxuICAgICAgICAgIFtkaXNhYmxlU2Vjb25kc109XCJnZXREaXNhYmxlZFRpbWVGbihzZWxlY3RlZERhdGUsICdzZWNvbmRzJylcIlxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcCBzdGFydFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGltZURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWxlY3RfdGltZScgfCBhdWlJMThuXCJcbiAgICAgICAgPjwvYXVpLXRpbWUtcGlja2VyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2F1aS1jYWxlbmRhci1mb290ZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RvZGF5PlxuICAgICAgPGF1aS1jYWxlbmRhci1mb290ZXJcbiAgICAgICAgKm5nSWY9XCJ0eXBlID09PSBEYXRlUGlja2VyVHlwZS5EYXlcIlxuICAgICAgICBbY2xlYXJhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW2N1c3RvbUFjdGlvbl09XCJ0b2RheUJ0blwiXG4gICAgICA+XG4gICAgICA8L2F1aS1jYWxlbmRhci1mb290ZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3RvZGF5QnRuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXVpLWJ1dHRvbj1cImlubGluZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldFRvZGF5KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ3RvZGF5JyB8IGF1aUkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
184
+ function combineDisabledTimeFn(...disabledFnList) {
185
+ return (date) => ({
186
+ hours: () => Array.from(new Set(disabledFnList
187
+ .map(fn => fn(date)?.hours?.() || [])
188
+ .reduce((prev, cur) => [...prev, ...cur], []))),
189
+ minutes: (hour) => Array.from(new Set(disabledFnList
190
+ .map(fn => fn(date)?.minutes?.(hour) || [])
191
+ .reduce((prev, cur) => [...prev, ...cur], []))),
192
+ seconds: (hour, minute) => Array.from(new Set(disabledFnList
193
+ .map(fn => fn(date)?.seconds?.(hour, minute) || [])
194
+ .reduce((prev, cur) => [...prev, ...cur], []))),
195
+ });
196
+ }
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2NhbGVuZGFyL2RhdGUtcGlja2VyLXBhbmVsL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9jYWxlbmRhci9kYXRlLXBpY2tlci1wYW5lbC90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxLQUE0QixNQUFNLE9BQU8sQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YscUJBQXFCLEdBQ3RCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBZ0J6RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsaUJBQXdCO0lBRXBFLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFHakIsU0FBUyxDQUFTO0lBRWxCLElBQ0ksSUFBSSxDQUFDLElBQW9CO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtB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R0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDaEQsQ0FDRjtRQUNILE9BQU8sRUFBRSxDQUFDLElBQWEsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUMxQyxLQUFLLENBQUMsSUFBSSxDQUNSLElBQUksR0FBRyxDQUNMLGNBQWM7YUFDWCxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNsRCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ2hELENBQ0Y7S0FDSixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgZGF5anMsIHsgQ29uZmlnVHlwZSwgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5cbmltcG9ydCB7IENvbW1vbkZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vZm9ybS9jb21tb24tZm9ybSc7XG5pbXBvcnQgeyBUaW1lUGlja2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi90aW1lLXBpY2tlci90aW1lLXBpY2tlci50eXBlJztcbmltcG9ydCB7IERhdGVOYXZSYW5nZSwgRGlzYWJsZWRUaW1lRm4gfSBmcm9tICcuLi8uLi9kYXRlLXBpY2tlci50eXBlJztcbmltcG9ydCB7IERhdGVQaWNrZXJUeXBlIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IHtcbiAgZ2V0TmF2UmFuZ2VCeVR5cGUsXG4gIGdldFRpbWVQaWNrZXJNb2RlbCxcbiAgZ2V0VHlwZUJ5TmF2UmFuZ2UsXG4gIG5leHROYXZSYW5nZVR5cGUsXG4gIHVwZGF0ZURhdGUsXG4gIHVwZGF0ZURhdGVCeVRpbWVNb2RlbCxcbn0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBIT1VSX0lURU1TLCBNSU5VVEVfSVRFTVMsIFNFQ09ORF9JVEVNUyB9IGZyb20gJ3NyYy90aW1lLXBpY2tlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS1kYXRlLXBpY2tlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUGlja2VyUGFuZWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlclBhbmVsQ29tcG9uZW50IGV4dGVuZHMgQ29tbW9uRm9ybUNvbnRyb2w8RGF5anM+IHtcbiAgQElucHV0KClcbiAgY2xlYXJhYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBjbGVhclRleHQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgdHlwZSh0eXBlOiBEYXRlUGlja2VyVHlwZSkge1xuICAgIHRoaXMubmF2UmFuZ2UgPSBnZXROYXZSYW5nZUJ5VHlwZSh0eXBlKTtcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHlwZTogRGF0ZVBpY2tlclR5cGU7XG5cbiAgQElucHV0KClcbiAgc2hvd1RpbWUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGU6IChkYXRlOiBEYXlqcywgdHlwZTogRGF0ZU5hdlJhbmdlKSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWRUaW1lOiBEaXNhYmxlZFRpbWVGbiA9ICgpID0+IG51bGw7XG5cbiAgQElucHV0KClcbiAgd2Vla1N0YXJ0RGF5ID0gMDtcblxuICBASW5wdXQoKVxuICBzaG93Rm9vdGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgZXh0cmFGb290ZXI6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIG1pbkRhdGU6IERheWpzO1xuXG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IERheWpzO1xuXG4gIEBPdXRwdXQoKVxuICBjb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcjxEYXlqcz4oKTtcblxuICBAT3V0cHV0KClcbiAgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfY2FjaGVTZWxlY3RlZERhdGU6IERheWpzO1xuICBwcml2YXRlIF9jYWNoZURpc2FibGVkVGltZUZuOiBSZXR1cm5UeXBlPERpc2FibGVkVGltZUZuPjtcblxuICBnZXREaXNhYmxlZFRpbWVGbihcbiAgICBzZWxlY3RlZERhdGU6IERheWpzLFxuICAgIHR5cGU6IGtleW9mIFJldHVyblR5cGU8RGlzYWJsZWRUaW1lRm4+LFxuICApIHtcbiAgICBpZiAoc2VsZWN0ZWREYXRlICE9PSB0aGlzLl9jYWNoZVNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5fY2FjaGVEaXNhYmxlZFRpbWVGbiA9IGNvbWJpbmVEaXNhYmxlZFRpbWVGbihcbiAgICAgICAgdGhpcy5fZGlzYWJsZWRUaW1lRm4uYmluZCh0aGlzKSxcbiAgICAgICAgdGhpcy5kaXNhYmxlZFRpbWUsXG4gICAgICApKHNlbGVjdGVkRGF0ZSk7XG4gICAgICB0aGlzLl9jYWNoZVNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlRGlzYWJsZWRUaW1lRm4/Llt0eXBlXTtcbiAgfVxuXG4gIG5hdlJhbmdlOiBEYXRlTmF2UmFuZ2U7XG5cbiAgZ2V0IGN1cnJlbnROYXZUeXBlKCkge1xuICAgIHJldHVybiBnZXRUeXBlQnlOYXZSYW5nZSh0aGlzLm5hdlJhbmdlKTtcbiAgfVxuXG4gIGFuY2hvcjogRGF5anM7XG5cbiAgc2VsZWN0ZWREYXRlOiBEYXlqcztcblxuICBzZWxlY3RlZFRpbWU6IFRpbWVQaWNrZXJNb2RlbDtcblxuICBEYXRlTmF2UmFuZ2UgPSBEYXRlTmF2UmFuZ2U7XG4gIERhdGVQaWNrZXJUeXBlID0gRGF0ZVBpY2tlclR5cGU7XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IERheWpzKSB7XG4gICAgc3VwZXIud3JpdGVWYWx1ZShvYmopO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gb2JqO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gZ2V0VGltZVBpY2tlck1vZGVsKG9iaik7XG4gICAgdGhpcy5hbmNob3IgPSBvYmogfHwgZGF5anMoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHBhbmVsVmFsdWVDaGFuZ2UodmFsdWU6IERheWpzKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB1cGRhdGVEYXRlKFxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgfHwgZGF5anMoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5jdXJyZW50TmF2VHlwZSxcbiAgICApO1xuICAgIHRoaXMuYW5jaG9yID0gdGhpcy5zZWxlY3RlZERhdGU7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB1cGRhdGVEYXRlQnlUaW1lTW9kZWwoXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSxcbiAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lLFxuICAgICk7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdGhpcy5jdXJyZW50TmF2VHlwZSkge1xuICAgICAgdGhpcy5jb25maXJtVmFsdWUodGhpcy5zZWxlY3RlZERhdGUsICF0aGlzLnNob3dUaW1lKTtcbiAgICB9XG4gICAgY29uc3QgbmV4dE5hdlJhbmdlID0gbmV4dE5hdlJhbmdlVHlwZShcbiAgICAgIHRoaXMubmF2UmFuZ2UsXG4gICAgICBnZXROYXZSYW5nZUJ5VHlwZSh0aGlzLnR5cGUpLFxuICAgICk7XG4gICAgaWYgKHRoaXMubmF2UmFuZ2UgIT09IG5leHROYXZSYW5nZSkge1xuICAgICAgdGhpcy5uYXZSYW5nZSA9IG5leHROYXZSYW5nZTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtVmFsdWUodmFsdWU/OiBDb25maWdUeXBlLCBjbG9zZUFmdGVyQ29uZmlybSA9IHRydWUpIHtcbiAgICB0aGlzLmVtaXRWYWx1ZSh2YWx1ZSA/IGRheWpzKHZhbHVlKSA6IHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICBjbG9zZUFmdGVyQ29uZmlybSAmJiB0aGlzLmNvbmZpcm0ubmV4dChudWxsKTtcbiAgfVxuXG4gIHRpbWVEYXRlQ2hhbmdlKHRpbWU6IFRpbWVQaWNrZXJNb2RlbCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB1cGRhdGVEYXRlQnlUaW1lTW9kZWwodGhpcy5zZWxlY3RlZERhdGUsIHRpbWUpO1xuICAgIHRoaXMuZW1pdFZhbHVlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgfVxuXG4gIHNldFRvZGF5KCkge1xuICAgIHRoaXMuY29uZmlybVZhbHVlKGRheWpzKCksIHRydWUpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IG51bGw7XG4gICAgdGhpcy5jbGVhci5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZFRpbWVGbihzZWxlY3RlZERhdGU6IENvbmZpZ1R5cGUpIHtcbiAgICBjb25zdCByZXR1cm5Gbk1hcDogUmVjb3JkPFxuICAgICAga2V5b2YgUmV0dXJuVHlwZTxEaXNhYmxlZFRpbWVGbj4sXG4gICAgICAoKSA9PiBudW1iZXJbXVxuICAgID4gPSB7XG4gICAgICBob3VyczogKCkgPT4gW10sXG4gICAgICBtaW51dGVzOiAoKSA9PiBbXSxcbiAgICAgIHNlY29uZHM6ICgpID0+IFtdLFxuICAgIH07XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZERhdGUgJiZcbiAgICAgIHRoaXMubWluRGF0ZSAmJlxuICAgICAgKHNlbGVjdGVkRGF0ZSBhcyBEYXlqcyk/LmlzU2FtZSh0aGlzLm1pbkRhdGUsICdkYXRlJylcbiAgICApIHtcbiAgICAgIHJldHVybkZuTWFwLmhvdXJzID0gKCkgPT5cbiAgICAgICAgSE9VUl9JVEVNUy5maWx0ZXIoaXRlbSA9PiBpdGVtIDwgdGhpcy5taW5EYXRlLmhvdXIoKSk7XG4gICAgICByZXR1cm5Gbk1hcC5taW51dGVzID0gKGhvdXI/OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKGhvdXIgPT09IHRoaXMubWluRGF0ZS5ob3VyKCkpIHtcbiAgICAgICAgICByZXR1cm4gTUlOVVRFX0lURU1TLmZpbHRlcihpdGVtID0+IGl0ZW0gPCB0aGlzLm1pbkRhdGUubWludXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH07XG4gICAgICByZXR1cm5Gbk1hcC5zZWNvbmRzID0gKGhvdXI/OiBudW1iZXIsIG1pbnV0ZT86IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoaG91ciA9PT0gdGhpcy5taW5EYXRlLmhvdXIoKSAmJiBtaW51dGUgPT09IHRoaXMubWluRGF0ZS5taW51dGUoKSkge1xuICAgICAgICAgIHJldHVybiBTRUNPTkRfSVRFTVMuZmlsdGVyKGl0ZW0gPT4gaXRlbSA8IHRoaXMubWluRGF0ZS5zZWNvbmQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZERhdGUgJiZcbiAgICAgIHRoaXMubWF4RGF0ZSAmJlxuICAgICAgKHNlbGVjdGVkRGF0ZSBhcyBEYXlqcyk/LmlzU2FtZSh0aGlzLm1heERhdGUsICdkYXRlJylcbiAgICApIHtcbiAgICAgIHJldHVybkZuTWFwLmhvdXJzID0gKCkgPT5cbiAgICAgICAgSE9VUl9JVEVNUy5maWx0ZXIoaXRlbSA9PiBpdGVtID4gdGhpcy5tYXhEYXRlLmhvdXIoKSk7XG4gICAgICByZXR1cm5Gbk1hcC5taW51dGVzID0gKGhvdXI/OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKGhvdXIgPT09IHRoaXMubWF4RGF0ZS5ob3VyKCkpIHtcbiAgICAgICAgICByZXR1cm4gTUlOVVRFX0lURU1TLmZpbHRlcihpdGVtID0+IGl0ZW0gPiB0aGlzLm1heERhdGUubWludXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH07XG4gICAgICByZXR1cm5Gbk1hcC5zZWNvbmRzID0gKGhvdXI/OiBudW1iZXIsIG1pbnV0ZT86IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoaG91ciA9PT0gdGhpcy5tYXhEYXRlLmhvdXIoKSAmJiBtaW51dGUgPT09IHRoaXMubWF4RGF0ZS5taW51dGUoKSkge1xuICAgICAgICAgIHJldHVybiBTRUNPTkRfSVRFTVMuZmlsdGVyKGl0ZW0gPT4gaXRlbSA+IHRoaXMubWF4RGF0ZS5zZWNvbmQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0dXJuRm5NYXA7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tYmluZURpc2FibGVkVGltZUZuKFxuICAuLi5kaXNhYmxlZEZuTGlzdDogRGlzYWJsZWRUaW1lRm5bXVxuKTogRGlzYWJsZWRUaW1lRm4ge1xuICByZXR1cm4gKGRhdGU/OiBDb25maWdUeXBlKSA9PiAoe1xuICAgIGhvdXJzOiAoKSA9PlxuICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgbmV3IFNldChcbiAgICAgICAgICBkaXNhYmxlZEZuTGlzdFxuICAgICAgICAgICAgLm1hcChmbiA9PiBmbihkYXRlKT8uaG91cnM/LigpIHx8IFtdKVxuICAgICAgICAgICAgLnJlZHVjZSgocHJldiwgY3VyKSA9PiBbLi4ucHJldiwgLi4uY3VyXSwgW10pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBtaW51dGVzOiAoaG91cj86IG51bWJlcikgPT5cbiAgICAgIEFycmF5LmZyb20oXG4gICAgICAgIG5ldyBTZXQoXG4gICAgICAgICAgZGlzYWJsZWRGbkxpc3RcbiAgICAgICAgICAgIC5tYXAoZm4gPT4gZm4oZGF0ZSk/Lm1pbnV0ZXM/Lihob3VyKSB8fCBbXSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cikgPT4gWy4uLnByZXYsIC4uLmN1cl0sIFtdKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgc2Vjb25kczogKGhvdXI/OiBudW1iZXIsIG1pbnV0ZT86IG51bWJlcikgPT5cbiAgICAgIEFycmF5LmZyb20oXG4gICAgICAgIG5ldyBTZXQoXG4gICAgICAgICAgZGlzYWJsZWRGbkxpc3RcbiAgICAgICAgICAgIC5tYXAoZm4gPT4gZm4oZGF0ZSk/LnNlY29uZHM/Lihob3VyLCBtaW51dGUpIHx8IFtdKVxuICAgICAgICAgICAgLnJlZHVjZSgocHJldiwgY3VyKSA9PiBbLi4ucHJldiwgLi4uY3VyXSwgW10pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgfSk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXVpLWRhdGUtcGlja2VyLXBhbmVsX193cmFwcGVyXCI+XG4gIDxhdWktY2FsZW5kYXItaGVhZGVyXG4gICAgW2RhdGVOYXZSYW5nZV09XCJuYXZSYW5nZVwiXG4gICAgW2FuY2hvcl09XCJhbmNob3JcIlxuICAgIFttaW5BdmFpbF09XCJtaW5EYXRlXCJcbiAgICBbbWF4QXZhaWxdPVwibWF4RGF0ZVwiXG4gICAgW3N0eWxlLm1hcmdpbi1pbmxpbmUucHhdPVwiNFwiXG4gICAgKG5hdlJhbmdlQ2hhbmdlKT1cIm5hdlJhbmdlID0gJGV2ZW50XCJcbiAgICAoYW5jaG9yQ2hhbmdlKT1cImFuY2hvciA9ICRldmVudFwiXG4gID48L2F1aS1jYWxlbmRhci1oZWFkZXI+XG5cbiAgPGF1aS1waWNrZXItcGFuZWxcbiAgICBbc3R5bGUubWFyZ2luXT1cIicxNnB4IDAnXCJcbiAgICBbYW5jaG9yXT1cImFuY2hvclwiXG4gICAgW25hdlJhbmdlXT1cIm5hdlJhbmdlXCJcbiAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXG4gICAgW3dlZWtTdGFydERheV09XCJ3ZWVrU3RhcnREYXlcIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFttYXRjaERhdGVzXT1cIltzZWxlY3RlZERhdGVdXCJcbiAgICAoc2VsZWN0KT1cInBhbmVsVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2F1aS1waWNrZXItcGFuZWw+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiZXh0cmFGb290ZXJcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4dHJhRm9vdGVyXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb250ZXh0OiB0aGlzIH1cIlxuICA+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGb290ZXJcIj5cbiAgICA8YXVpLWNhbGVuZGFyLWZvb3RlclxuICAgICAgKGNsZWFyKT1cImNsZWFyLm5leHQoKVwiXG4gICAgICAoY29uZmlybSk9XCJjb25maXJtVmFsdWUoKVwiXG4gICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICBbY2xlYXJUZXh0XT1cImNsZWFyVGV4dFwiXG4gICAgICAqbmdJZj1cInNob3dUaW1lOyBlbHNlIHRvZGF5XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29udGV4dDogdGhpcyB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICA8YXVpLXRpbWUtcGlja2VyXG4gICAgICAgICAgKm5nSWY9XCJjdXJyZW50TmF2VHlwZSA9PT0gRGF0ZVBpY2tlclR5cGUuRGF5ICYmIHNob3dUaW1lXCJcbiAgICAgICAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRpbWVcIlxuICAgICAgICAgIFtkaXNhYmxlSG91cnNdPVwiZ2V0RGlzYWJsZWRUaW1lRm4oc2VsZWN0ZWREYXRlLCAnaG91cnMnKVwiXG4gICAgICAgICAgW2Rpc2FibGVNaW51dGVzXT1cImdldERpc2FibGVkVGltZUZuKHNlbGVjdGVkRGF0ZSwgJ21pbnV0ZXMnKVwiXG4gICAgICAgICAgW2Rpc2FibGVTZWNvbmRzXT1cImdldERpc2FibGVkVGltZUZuKHNlbGVjdGVkRGF0ZSwgJ3NlY29uZHMnKVwiXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wIHN0YXJ0XCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aW1lRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlbGVjdF90aW1lJyB8IGF1aUkxOG5cIlxuICAgICAgICA+PC9hdWktdGltZS1waWNrZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYXVpLWNhbGVuZGFyLWZvb3Rlcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdG9kYXk+XG4gICAgICA8YXVpLWNhbGVuZGFyLWZvb3RlclxuICAgICAgICAqbmdJZj1cInR5cGUgPT09IERhdGVQaWNrZXJUeXBlLkRheVwiXG4gICAgICAgIChjbGVhcik9XCJjbGVhclZhbHVlKClcIlxuICAgICAgICBbY2xlYXJhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW2N1c3RvbUFjdGlvbl09XCJ0b2RheUJ0blwiXG4gICAgICA+XG4gICAgICA8L2F1aS1jYWxlbmRhci1mb290ZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3RvZGF5QnRuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXVpLWJ1dHRvbj1cImlubGluZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldFRvZGF5KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ3RvZGF5JyB8IGF1aUkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -32,7 +32,7 @@ export class PickerPanelComponent {
32
32
  minDate;
33
33
  maxDate;
34
34
  get disabledDateFn() {
35
- return composeDisabledDateFn(date => this.minDate && date.isBefore(this.minDate), date => this.maxDate && date.isAfter(this.maxDate), this.disabledDate);
35
+ return composeDisabledDateFn(date => this.minDate && date.isBefore(this.minDate, 'date'), date => this.maxDate && date.isAfter(this.maxDate, 'date'), this.disabledDate);
36
36
  }
37
37
  _weekStartDay = 0;
38
38
  panelData;
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
155
155
  }], hovered: [{
156
156
  type: Output
157
157
  }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2NhbGVuZGFyL3BhbmVsL3BpY2tlci1wYW5lbC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9jYWxlbmRhci9wYW5lbC9waWNrZXItcGFuZWwudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFnQixNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFDTCxHQUFHLEVBQ0gsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUVuQixLQUFLLEVBQ0wsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBRUwsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsU0FBUyxHQUNWLE1BQU0sU0FBUyxDQUFDOzs7OztBQUVqQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRXhCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBU3pDLE1BQU0sT0FBTyxvQkFBb0I7SUFtRUY7SUFqRTdCLFFBQVEsQ0FBZTtJQUd2QixJQUFJLENBQWlCO0lBR3JCLE1BQU0sR0FBRyxL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QyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzt1R0FsS1Usb0JBQW9COzJGQUFwQixvQkFBb0IsZ1VDakRqQywyakRBbURBOzsyRkRGYSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07d0dBSS9DLFFBQVE7c0JBRFAsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSUYsWUFBWTtzQkFEZixLQUFLO2dCQWVOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBZ0JOLE1BQU07c0JBREwsTUFBTTtnQkFJUCxPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcywgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCBpc0JldHdlZW4gZnJvbSAnZGF5anMvcGx1Z2luL2lzQmV0d2Vlbic7XG5cbmltcG9ydCB7IGJ1aWxkQmVtIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRGF0ZU5hdlJhbmdlIH0gZnJvbSAnLi4vLi4vZGF0ZS1waWNrZXIudHlwZSc7XG5pbXBvcnQge1xuICBEQVksXG4gIERBWV9QQU5FTF9DT0xVTU5fQ09VTlQsXG4gIERBWV9QQU5FTF9ST1dfQ09VTlQsXG4gIERhdGVQaWNrZXJUeXBlLFxuICBNT05USCxcbiAgTU9OVEhfUEFORUxfQ09MVU1OX0NPVU5ULFxuICBNT05USF9QQU5FTF9ST1dfQ09VTlQsXG4gIFlFQVIsXG4gIFlFQVJfUEFORUxfQ09MVU1OX0NPVU5ULFxuICBZRUFSX1BBTkVMX1JPV19DT1VOVCxcbn0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IHtcbiAgRGF0ZUNlbGwsXG4gIGNhbGNSYW5nZVZhbHVlLFxuICBjb21wb3NlRGlzYWJsZWREYXRlRm4sXG4gIGZvcm1hdERhdGUsXG4gIGdldERhdGVQYW5lbEl0ZXJhYmxlLFxuICBnZXROYXZSYW5nZUJ5VHlwZSxcbiAgZ2V0VHlwZUJ5TmF2UmFuZ2UsXG4gIHNvcnREYXRlcyxcbn0gZnJvbSAnLi4vdXRpbCc7XG5cbmRheWpzLmV4dGVuZChpc0JldHdlZW4pO1xuXG5jb25zdCBiZW0gPSBidWlsZEJlbSgnYXVpLXBpY2tlci1wYW5lbCcpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktcGlja2VyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci1wYW5lbC50ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGlja2VyLXBhbmVsLnN0eWxlLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgbmF2UmFuZ2U6IERhdGVOYXZSYW5nZTtcblxuICBASW5wdXQoKVxuICB0eXBlOiBEYXRlUGlja2VyVHlwZTtcblxuICBASW5wdXQoKVxuICBhbmNob3IgPSBkYXlqcygpO1xuXG4gIEBJbnB1dCgpXG4gIG1hdGNoRGF0ZXM6IERheWpzW107XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWREYXRlOiAoZGF0ZTogRGF5anMsIG5hdlJhbmdlOiBEYXRlTmF2UmFuZ2UpID0+IGJvb2xlYW4gPSAoKSA9PiBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgd2Vla1N0YXJ0RGF5KGRheTogbnVtYmVyKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IE1hdGgubWF4KE1hdGgubWluKE1hdGgucm91bmQoZGF5KSwgNiksIDApO1xuICAgIHRoaXMud2Vla0RlZnMgPSBbXG4gICAgICAuLi50aGlzLndlZWtEZWZzLnNsaWNlKG5vcm1hbGl6ZWQpLFxuICAgICAgLi4udGhpcy53ZWVrRGVmcy5zbGljZSgwLCBub3JtYWxpemVkKSxcbiAgICBdO1xuICAgIHRoaXMuX3dlZWtTdGFydERheSA9IG5vcm1hbGl6ZWQ7XG4gIH1cblxuICBnZXQgd2Vla1N0YXJ0RGF5KCkge1xuICAgIHJldHVybiB0aGlzLl93ZWVrU3RhcnREYXk7XG4gIH1cblxuICBASW5wdXQoKVxuICBtaW5EYXRlOiBEYXlqcztcblxuICBASW5wdXQoKVxuICBtYXhEYXRlOiBEYXlqcztcblxuICBnZXQgZGlzYWJsZWREYXRlRm4oKSB7XG4gICAgcmV0dXJuIGNvbXBvc2VEaXNhYmxlZERhdGVGbihcbiAgICAgIGRhdGUgPT4gdGhpcy5taW5EYXRlICYmIGRhdGUuaXNCZWZvcmUodGhpcy5taW5EYXRlKSxcbiAgICAgIGRhdGUgPT4gdGhpcy5tYXhEYXRlICYmIGRhdGUuaXNBZnRlcih0aGlzLm1heERhdGUpLFxuICAgICAgdGhpcy5kaXNhYmxlZERhdGUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dlZWtTdGFydERheSA9IDA7XG5cbiAgcGFuZWxEYXRhOiBEYXRlQ2VsbFtdW107XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF5anM+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGhvdmVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERheWpzPigpO1xuXG4gIGJlbSA9IGJlbTtcbiAgRGF0ZU5hdlJhbmdlID0gRGF0ZU5hdlJhbmdlO1xuXG4gIHdlZWtEZWZzID0gW1xuICAgICdzdW5kYXknLFxuICAgICdtb25kYXknLFxuICAgICd0dWVzZGF5JyxcbiAgICAnd2VkbmVzZGF5JyxcbiAgICAndGh1cnNkYXknLFxuICAgICdmcmlkYXknLFxuICAgICdzYXR1cmRheScsXG4gIF07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIOWmguaenCBkYXRlVmFsdWUg5piv5LiA5Liq5pWw57uE77yM5b+F54S25piv5ZCM5LiA5Liq6Z2i5p2/5LiK77yM5ZCm5YiZ5bqU5b2T57uZ5LiO5LiN5ZCM55qE6Z2i5p2/5LiN5ZCM55qEZGF0ZVZhbHVl5YC8XG4gICAgY29uc3QgaGVhZGVyUmFuZ2UgPSBjYWxjUmFuZ2VWYWx1ZSh0aGlzLm5hdlJhbmdlLCB0aGlzLmFuY2hvcik7XG4gICAgdGhpcy5yZW5kZXJQYW5lbERhdGEoaGVhZGVyUmFuZ2Uuc3RhcnQsIHRoaXMubmF2UmFuZ2UpO1xuICB9XG5cbiAgLy8g5qC55o2u5b2T5YmN5pWw5o2u77yM6K6h566X5riy5p+T6KGo5qC8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gIHJlbmRlclBhbmVsRGF0YShkYXRlOiBEYXlqcywgbmF2UmFuZ2U6IERhdGVOYXZSYW5nZSkge1xuICAgIGNvbnN0IHZhbHVlID0gW107XG4gICAgbGV0IGNvbENvdW50cyA9IDA7XG4gICAgbGV0IHJvd0NvdW50cyA9IDA7XG4gICAgaWYgKCF0aGlzLnBhbmVsRGF0YSkge1xuICAgICAgdGhpcy5wYW5lbERhdGEgPSBbW11dO1xuICAgIH1cbiAgICBjb25zdCBbLi4udmFsdWVzXSA9IGdldERhdGVQYW5lbEl0ZXJhYmxlKGRhdGUsIG5hdlJhbmdlLCB0aGlzLndlZWtTdGFydERheSk7XG4gICAgc3dpdGNoIChuYXZSYW5nZSkge1xuICAgICAgY2FzZSBEYXRlTmF2UmFuZ2UuTW9udGg6IHtcbiAgICAgICAgY29sQ291bnRzID0gREFZX1BBTkVMX0NPTFVNTl9DT1VOVDtcbiAgICAgICAgcm93Q291bnRzID0gREFZX1BBTkVMX1JPV19DT1VOVDtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0ZU5hdlJhbmdlLkRlY2FkZToge1xuICAgICAgICBjb2xDb3VudHMgPSBZRUFSX1BBTkVMX0NPTFVNTl9DT1VOVDtcbiAgICAgICAgcm93Q291bnRzID0gWUVBUl9QQU5FTF9ST1dfQ09VTlQ7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIERhdGVOYXZSYW5nZS5ZZWFyOiB7XG4gICAgICAgIGNvbENvdW50cyA9IE1PTlRIX1BBTkVMX0NPTFVNTl9DT1VOVDtcbiAgICAgICAgcm93Q291bnRzID0gTU9OVEhfUEFORUxfUk9XX0NPVU5UO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTm8gZGVmYXVsdFxuICAgIH1cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHJvd0NvdW50czsgaysrKSB7XG4gICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sQ291bnRzOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IGZvcm1hdERhdGUobmF2UmFuZ2UsIHZhbHVlc1trICogY29sQ291bnRzICsgaV0sIGRhdGUpO1xuICAgICAgICBjZWxsLmlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkRGF0ZUZuKGNlbGwudmFsdWUsIG5hdlJhbmdlKTtcbiAgICAgICAgY29uc3Qgc29ydGVkRGF0ZXMgPSBzb3J0RGF0ZXModGhpcy5tYXRjaERhdGVzKTtcbiAgICAgICAgaWYgKHNvcnRlZERhdGVzPy5sZW5ndGggPT09IDIgJiYgbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNlbGwudmFsdWUuaXNCZXR3ZWVuKHNvcnRlZERhdGVzWzBdLCBzb3J0ZWREYXRlc1sxXSkgJiZcbiAgICAgICAgICAgICFjZWxsLmlzQmFja2dyb3VuZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2VsbC5pblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2VsbC5pc1JhbmdlU3RhcnQgPVxuICAgICAgICAgICAgY2VsbC52YWx1ZS5pc1NhbWUoc29ydGVkRGF0ZXNbMF0sIERBWSkgJiYgIWNlbGwuaXNCYWNrZ3JvdW5kO1xuICAgICAgICAgIGNlbGwuaXNSYW5nZUVuZCA9XG4gICAgICAgICAgICBjZWxsLnZhbHVlLmlzU2FtZShzb3J0ZWREYXRlc1sxXSwgREFZKSAmJiAhY2VsbC5pc0JhY2tncm91bmQ7XG4gICAgICAgICAgaWYgKGNlbGwuaXNSYW5nZVN0YXJ0ICYmIGNlbGwuaXNSYW5nZUVuZCkge1xuICAgICAgICAgICAgY2VsbC5pc1JhbmdlU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNlbGwuaXNSYW5nZUVuZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3cucHVzaChjZWxsKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlLnB1c2gocm93KTtcbiAgICB9XG4gICAgdGhpcy5wYW5lbERhdGEgPSB2YWx1ZS5zbGljZSgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWF0Y2godmFsdWU6IERheWpzKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubWF0Y2hEYXRlcz8uZmlsdGVyKHYgPT4gISF2KT8ubGVuZ3RoIHx8XG4gICAgICBnZXROYXZSYW5nZUJ5VHlwZSh0aGlzLnR5cGUpICE9PSB0aGlzLm5hdlJhbmdlXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hdGNoRGF0ZXM/LnNvbWUoZGF0ZVZhbHVlID0+XG4gICAgICB0aGlzLm5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuRGVjYWRlXG4gICAgICAgID8gdmFsdWUuaXNTYW1lKGRhdGVWYWx1ZSwgWUVBUilcbiAgICAgICAgOiB0aGlzLm5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuWWVhclxuICAgICAgICA/IHZhbHVlLmlzU2FtZShkYXRlVmFsdWUsIE1PTlRIKVxuICAgICAgICA6IHZhbHVlLmlzU2FtZShkYXRlVmFsdWUsIERBWSksXG4gICAgKTtcbiAgfVxuXG4gIG1hdGNoVG9kYXkodmFsdWU6IERheWpzKSB7XG4gICAgcmV0dXJuIHZhbHVlLmlzU2FtZShkYXlqcygpLCBnZXRUeXBlQnlOYXZSYW5nZSh0aGlzLm5hdlJhbmdlKSk7XG4gIH1cblxuICBzZWxlY3RWYWx1ZSh2YWx1ZTogRGF5anMpIHtcbiAgICB0aGlzLnNlbGVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHRyYWNrQnlGbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZSYW5nZTtcbiAgfVxufVxuIiwiPGRpdlxuICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbnRhaW5lcicpXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdkYXktcGFuZWwtY29udGFpbmVyJzogbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aCxcbiAgICAnbW9udGgtcGFuZWwtY29udGFpbmVyJzogbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5ZZWFyLFxuICAgICd5ZWFyLXBhbmVsLWNvbnRhaW5lcic6IG5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuRGVjYWRlXG4gIH1cIlxuPlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cIltiZW0uZWxlbWVudCgncm93JyksICd3ZWVrLWhlYWRlciddLmpvaW4oJyAnKVwiXG4gICAgKm5nSWY9XCJuYXZSYW5nZSA9PT0gRGF0ZU5hdlJhbmdlLk1vbnRoXCJcbiAgPlxuICAgIDxzcGFuXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3ZWVrRGVmc1wiXG4gICAgICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NlbGwnKVwiXG4gICAgPlxuICAgICAge3sgaXRlbSB8IGF1aUkxOG4gfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdyb3cnKVwiXG4gICAgKm5nRm9yPVwibGV0IHJvdyBvZiBwYW5lbERhdGE7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gID5cbiAgICA8c3BhblxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdjZWxsJylcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBpblJhbmdlOiBpdGVtLmluUmFuZ2UgJiYgIWl0ZW0uaXNEaXNhYmxlZCxcbiAgICAgICAgaXNBY3RpdmU6IG1hdGNoKGl0ZW0udmFsdWUpLFxuICAgICAgICBpc0JhY2tncm91bmQ6IGl0ZW0uaXNCYWNrZ3JvdW5kICYmICFpdGVtLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzUmFuZ2VTdGFydDogaXRlbS5pc1JhbmdlU3RhcnQsXG4gICAgICAgIGlzUmFuZ2VFbmQ6IGl0ZW0uaXNSYW5nZUVuZCxcbiAgICAgICAgaXNUb2RheTogbWF0Y2hUb2RheShpdGVtLnZhbHVlKSAmJiAhaXRlbS5pc0JhY2tncm91bmQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGl0ZW0uaXNEaXNhYmxlZFxuICAgICAgfVwiXG4gICAgICA+PGJ1dHRvblxuICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgW3NpemVdPVwibmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aCA/ICdtaW5pJyA6ICdzbWFsbCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5pc0Rpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFZhbHVlKGl0ZW0udmFsdWUpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZC5uZXh0KGl0ZW0udmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAge3sgaXRlbS5sYWJlbFxuICAgICAgICB9fTxuZy1jb250YWluZXIgKm5nSWY9XCJuYXZSYW5nZSA9PT0gRGF0ZU5hdlJhbmdlLlllYXJcIj57e1xuICAgICAgICAgICdtb250aF9zdWZmaXgnIHwgYXVpSTE4blxuICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2NhbGVuZGFyL3BhbmVsL3BpY2tlci1wYW5lbC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9jYWxlbmRhci9wYW5lbC9waWNrZXItcGFuZWwudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFnQixNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFDTCxHQUFHLEVBQ0gsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUVuQixLQUFLLEVBQ0wsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBRUwsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsU0FBUyxHQUNWLE1BQU0sU0FBUyxDQUFDOzs7OztBQUVqQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRXhCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBU3pDLE1BQU0sT0FBTyxvQkFBb0I7SUFtRUY7SUFqRTdCLFFBQVEsQ0FBZTtJQUd2QixJQUFJLENBQWlCO0lBR3JCLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUdqQixVQUFVLENBQVU7SUFHcEIsWUFBWSxHQUFxRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFFN0UsSUFDSSxZQUFZLENBQUMsR0FBVztRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDbEMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1NBQ3RDLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFHRCxPQUFPLENBQVE7SUFHZixPQUFPLENBQVE7SUFFZixJQUFJLGNBQWM7UUFDaEIsT0FBTyxxQkFBcUIsQ0FDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLFNBQVMsQ0FBZTtJQUd4QixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUduQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUVwQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ1YsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUU1QixRQUFRLEdBQUc7UUFDVCxRQUFRO1FBQ1IsUUFBUTtRQUNSLFNBQVM7UUFDVCxXQUFXO1FBQ1gsVUFBVTtRQUNWLFFBQVE7UUFDUixVQUFVO0tBQ1gsQ0FBQztJQUVGLFlBQTZCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQUcsQ0FBQztJQUV2RCxXQUFXO1FBRVQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUlELGVBQWUsQ0FBQyxJQUFXLEVBQUUsUUFBc0I7UUFDakQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUUsUUFBUSxRQUFRLEVBQUU7WUFDaEIsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztnQkFDbkMsU0FBUyxHQUFHLG1CQUFtQixDQUFDO2dCQUVoQyxNQUFNO2FBQ1A7WUFDRCxLQUFLLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEIsU0FBUyxHQUFHLHVCQUF1QixDQUFDO2dCQUNwQyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7Z0JBRWpDLE1BQU07YUFDUDtZQUNELEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QixTQUFTLEdBQUcsd0JBQXdCLENBQUM7Z0JBQ3JDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztnQkFFbEMsTUFBTTthQUNQO1NBRUY7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxZQUFZLENBQUMsS0FBSyxFQUFFO29CQUNoRSxJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3BELENBQUMsSUFBSSxDQUFDLFlBQVksRUFDbEI7d0JBQ0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7cUJBQ3JCO29CQUNELElBQUksQ0FBQyxZQUFZO3dCQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQy9ELElBQUksQ0FBQyxVQUFVO3dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQy9ELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO3dCQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7cUJBQ3pCO2lCQUNGO2dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEI7WUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQVk7UUFDaEIsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU07WUFDMUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQzlDO1lBQ0EsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsTUFBTTtZQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxJQUFJO2dCQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQ2pDLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWTtRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO3VHQWxLVSxvQkFBb0I7MkZBQXBCLG9CQUFvQixnVUNqRGpDLDJqREFtREE7OzJGREZhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTt3R0FJL0MsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRixZQUFZO3NCQURmLEtBQUs7Z0JBZU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFnQk4sTUFBTTtzQkFETCxNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcblxuaW1wb3J0IHsgYnVpbGRCZW0gfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBEYXRlTmF2UmFuZ2UgfSBmcm9tICcuLi8uLi9kYXRlLXBpY2tlci50eXBlJztcbmltcG9ydCB7XG4gIERBWSxcbiAgREFZX1BBTkVMX0NPTFVNTl9DT1VOVCxcbiAgREFZX1BBTkVMX1JPV19DT1VOVCxcbiAgRGF0ZVBpY2tlclR5cGUsXG4gIE1PTlRILFxuICBNT05USF9QQU5FTF9DT0xVTU5fQ09VTlQsXG4gIE1PTlRIX1BBTkVMX1JPV19DT1VOVCxcbiAgWUVBUixcbiAgWUVBUl9QQU5FTF9DT0xVTU5fQ09VTlQsXG4gIFlFQVJfUEFORUxfUk9XX0NPVU5ULFxufSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQge1xuICBEYXRlQ2VsbCxcbiAgY2FsY1JhbmdlVmFsdWUsXG4gIGNvbXBvc2VEaXNhYmxlZERhdGVGbixcbiAgZm9ybWF0RGF0ZSxcbiAgZ2V0RGF0ZVBhbmVsSXRlcmFibGUsXG4gIGdldE5hdlJhbmdlQnlUeXBlLFxuICBnZXRUeXBlQnlOYXZSYW5nZSxcbiAgc29ydERhdGVzLFxufSBmcm9tICcuLi91dGlsJztcblxuZGF5anMuZXh0ZW5kKGlzQmV0d2Vlbik7XG5cbmNvbnN0IGJlbSA9IGJ1aWxkQmVtKCdhdWktcGlja2VyLXBhbmVsJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS1waWNrZXItcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGlja2VyLXBhbmVsLnRlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9waWNrZXItcGFuZWwuc3R5bGUuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGlja2VyUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBuYXZSYW5nZTogRGF0ZU5hdlJhbmdlO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGU6IERhdGVQaWNrZXJUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGFuY2hvciA9IGRheWpzKCk7XG5cbiAgQElucHV0KClcbiAgbWF0Y2hEYXRlczogRGF5anNbXTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGU6IChkYXRlOiBEYXlqcywgbmF2UmFuZ2U6IERhdGVOYXZSYW5nZSkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB3ZWVrU3RhcnREYXkoZGF5OiBudW1iZXIpIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5tYXgoTWF0aC5taW4oTWF0aC5yb3VuZChkYXkpLCA2KSwgMCk7XG4gICAgdGhpcy53ZWVrRGVmcyA9IFtcbiAgICAgIC4uLnRoaXMud2Vla0RlZnMuc2xpY2Uobm9ybWFsaXplZCksXG4gICAgICAuLi50aGlzLndlZWtEZWZzLnNsaWNlKDAsIG5vcm1hbGl6ZWQpLFxuICAgIF07XG4gICAgdGhpcy5fd2Vla1N0YXJ0RGF5ID0gbm9ybWFsaXplZDtcbiAgfVxuXG4gIGdldCB3ZWVrU3RhcnREYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dlZWtTdGFydERheTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIG1pbkRhdGU6IERheWpzO1xuXG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IERheWpzO1xuXG4gIGdldCBkaXNhYmxlZERhdGVGbigpIHtcbiAgICByZXR1cm4gY29tcG9zZURpc2FibGVkRGF0ZUZuKFxuICAgICAgZGF0ZSA9PiB0aGlzLm1pbkRhdGUgJiYgZGF0ZS5pc0JlZm9yZSh0aGlzLm1pbkRhdGUsICdkYXRlJyksXG4gICAgICBkYXRlID0+IHRoaXMubWF4RGF0ZSAmJiBkYXRlLmlzQWZ0ZXIodGhpcy5tYXhEYXRlLCAnZGF0ZScpLFxuICAgICAgdGhpcy5kaXNhYmxlZERhdGUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dlZWtTdGFydERheSA9IDA7XG5cbiAgcGFuZWxEYXRhOiBEYXRlQ2VsbFtdW107XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF5anM+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGhvdmVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERheWpzPigpO1xuXG4gIGJlbSA9IGJlbTtcbiAgRGF0ZU5hdlJhbmdlID0gRGF0ZU5hdlJhbmdlO1xuXG4gIHdlZWtEZWZzID0gW1xuICAgICdzdW5kYXknLFxuICAgICdtb25kYXknLFxuICAgICd0dWVzZGF5JyxcbiAgICAnd2VkbmVzZGF5JyxcbiAgICAndGh1cnNkYXknLFxuICAgICdmcmlkYXknLFxuICAgICdzYXR1cmRheScsXG4gIF07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIOWmguaenCBkYXRlVmFsdWUg5piv5LiA5Liq5pWw57uE77yM5b+F54S25piv5ZCM5LiA5Liq6Z2i5p2/5LiK77yM5ZCm5YiZ5bqU5b2T57uZ5LiO5LiN5ZCM55qE6Z2i5p2/5LiN5ZCM55qEZGF0ZVZhbHVl5YC8XG4gICAgY29uc3QgaGVhZGVyUmFuZ2UgPSBjYWxjUmFuZ2VWYWx1ZSh0aGlzLm5hdlJhbmdlLCB0aGlzLmFuY2hvcik7XG4gICAgdGhpcy5yZW5kZXJQYW5lbERhdGEoaGVhZGVyUmFuZ2Uuc3RhcnQsIHRoaXMubmF2UmFuZ2UpO1xuICB9XG5cbiAgLy8g5qC55o2u5b2T5YmN5pWw5o2u77yM6K6h566X5riy5p+T6KGo5qC8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gIHJlbmRlclBhbmVsRGF0YShkYXRlOiBEYXlqcywgbmF2UmFuZ2U6IERhdGVOYXZSYW5nZSkge1xuICAgIGNvbnN0IHZhbHVlID0gW107XG4gICAgbGV0IGNvbENvdW50cyA9IDA7XG4gICAgbGV0IHJvd0NvdW50cyA9IDA7XG4gICAgaWYgKCF0aGlzLnBhbmVsRGF0YSkge1xuICAgICAgdGhpcy5wYW5lbERhdGEgPSBbW11dO1xuICAgIH1cbiAgICBjb25zdCBbLi4udmFsdWVzXSA9IGdldERhdGVQYW5lbEl0ZXJhYmxlKGRhdGUsIG5hdlJhbmdlLCB0aGlzLndlZWtTdGFydERheSk7XG4gICAgc3dpdGNoIChuYXZSYW5nZSkge1xuICAgICAgY2FzZSBEYXRlTmF2UmFuZ2UuTW9udGg6IHtcbiAgICAgICAgY29sQ291bnRzID0gREFZX1BBTkVMX0NPTFVNTl9DT1VOVDtcbiAgICAgICAgcm93Q291bnRzID0gREFZX1BBTkVMX1JPV19DT1VOVDtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0ZU5hdlJhbmdlLkRlY2FkZToge1xuICAgICAgICBjb2xDb3VudHMgPSBZRUFSX1BBTkVMX0NPTFVNTl9DT1VOVDtcbiAgICAgICAgcm93Q291bnRzID0gWUVBUl9QQU5FTF9ST1dfQ09VTlQ7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIERhdGVOYXZSYW5nZS5ZZWFyOiB7XG4gICAgICAgIGNvbENvdW50cyA9IE1PTlRIX1BBTkVMX0NPTFVNTl9DT1VOVDtcbiAgICAgICAgcm93Q291bnRzID0gTU9OVEhfUEFORUxfUk9XX0NPVU5UO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTm8gZGVmYXVsdFxuICAgIH1cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHJvd0NvdW50czsgaysrKSB7XG4gICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sQ291bnRzOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IGZvcm1hdERhdGUobmF2UmFuZ2UsIHZhbHVlc1trICogY29sQ291bnRzICsgaV0sIGRhdGUpO1xuICAgICAgICBjZWxsLmlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkRGF0ZUZuKGNlbGwudmFsdWUsIG5hdlJhbmdlKTtcbiAgICAgICAgY29uc3Qgc29ydGVkRGF0ZXMgPSBzb3J0RGF0ZXModGhpcy5tYXRjaERhdGVzKTtcbiAgICAgICAgaWYgKHNvcnRlZERhdGVzPy5sZW5ndGggPT09IDIgJiYgbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNlbGwudmFsdWUuaXNCZXR3ZWVuKHNvcnRlZERhdGVzWzBdLCBzb3J0ZWREYXRlc1sxXSkgJiZcbiAgICAgICAgICAgICFjZWxsLmlzQmFja2dyb3VuZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2VsbC5pblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2VsbC5pc1JhbmdlU3RhcnQgPVxuICAgICAgICAgICAgY2VsbC52YWx1ZS5pc1NhbWUoc29ydGVkRGF0ZXNbMF0sIERBWSkgJiYgIWNlbGwuaXNCYWNrZ3JvdW5kO1xuICAgICAgICAgIGNlbGwuaXNSYW5nZUVuZCA9XG4gICAgICAgICAgICBjZWxsLnZhbHVlLmlzU2FtZShzb3J0ZWREYXRlc1sxXSwgREFZKSAmJiAhY2VsbC5pc0JhY2tncm91bmQ7XG4gICAgICAgICAgaWYgKGNlbGwuaXNSYW5nZVN0YXJ0ICYmIGNlbGwuaXNSYW5nZUVuZCkge1xuICAgICAgICAgICAgY2VsbC5pc1JhbmdlU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNlbGwuaXNSYW5nZUVuZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3cucHVzaChjZWxsKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlLnB1c2gocm93KTtcbiAgICB9XG4gICAgdGhpcy5wYW5lbERhdGEgPSB2YWx1ZS5zbGljZSgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWF0Y2godmFsdWU6IERheWpzKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubWF0Y2hEYXRlcz8uZmlsdGVyKHYgPT4gISF2KT8ubGVuZ3RoIHx8XG4gICAgICBnZXROYXZSYW5nZUJ5VHlwZSh0aGlzLnR5cGUpICE9PSB0aGlzLm5hdlJhbmdlXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hdGNoRGF0ZXM/LnNvbWUoZGF0ZVZhbHVlID0+XG4gICAgICB0aGlzLm5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuRGVjYWRlXG4gICAgICAgID8gdmFsdWUuaXNTYW1lKGRhdGVWYWx1ZSwgWUVBUilcbiAgICAgICAgOiB0aGlzLm5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuWWVhclxuICAgICAgICA/IHZhbHVlLmlzU2FtZShkYXRlVmFsdWUsIE1PTlRIKVxuICAgICAgICA6IHZhbHVlLmlzU2FtZShkYXRlVmFsdWUsIERBWSksXG4gICAgKTtcbiAgfVxuXG4gIG1hdGNoVG9kYXkodmFsdWU6IERheWpzKSB7XG4gICAgcmV0dXJuIHZhbHVlLmlzU2FtZShkYXlqcygpLCBnZXRUeXBlQnlOYXZSYW5nZSh0aGlzLm5hdlJhbmdlKSk7XG4gIH1cblxuICBzZWxlY3RWYWx1ZSh2YWx1ZTogRGF5anMpIHtcbiAgICB0aGlzLnNlbGVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHRyYWNrQnlGbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZSYW5nZTtcbiAgfVxufVxuIiwiPGRpdlxuICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbnRhaW5lcicpXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdkYXktcGFuZWwtY29udGFpbmVyJzogbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aCxcbiAgICAnbW9udGgtcGFuZWwtY29udGFpbmVyJzogbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5ZZWFyLFxuICAgICd5ZWFyLXBhbmVsLWNvbnRhaW5lcic6IG5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuRGVjYWRlXG4gIH1cIlxuPlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cIltiZW0uZWxlbWVudCgncm93JyksICd3ZWVrLWhlYWRlciddLmpvaW4oJyAnKVwiXG4gICAgKm5nSWY9XCJuYXZSYW5nZSA9PT0gRGF0ZU5hdlJhbmdlLk1vbnRoXCJcbiAgPlxuICAgIDxzcGFuXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3ZWVrRGVmc1wiXG4gICAgICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NlbGwnKVwiXG4gICAgPlxuICAgICAge3sgaXRlbSB8IGF1aUkxOG4gfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdyb3cnKVwiXG4gICAgKm5nRm9yPVwibGV0IHJvdyBvZiBwYW5lbERhdGE7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gID5cbiAgICA8c3BhblxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdjZWxsJylcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBpblJhbmdlOiBpdGVtLmluUmFuZ2UgJiYgIWl0ZW0uaXNEaXNhYmxlZCxcbiAgICAgICAgaXNBY3RpdmU6IG1hdGNoKGl0ZW0udmFsdWUpLFxuICAgICAgICBpc0JhY2tncm91bmQ6IGl0ZW0uaXNCYWNrZ3JvdW5kICYmICFpdGVtLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzUmFuZ2VTdGFydDogaXRlbS5pc1JhbmdlU3RhcnQsXG4gICAgICAgIGlzUmFuZ2VFbmQ6IGl0ZW0uaXNSYW5nZUVuZCxcbiAgICAgICAgaXNUb2RheTogbWF0Y2hUb2RheShpdGVtLnZhbHVlKSAmJiAhaXRlbS5pc0JhY2tncm91bmQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGl0ZW0uaXNEaXNhYmxlZFxuICAgICAgfVwiXG4gICAgICA+PGJ1dHRvblxuICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgW3NpemVdPVwibmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aCA/ICdtaW5pJyA6ICdzbWFsbCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5pc0Rpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFZhbHVlKGl0ZW0udmFsdWUpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZC5uZXh0KGl0ZW0udmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAge3sgaXRlbS5sYWJlbFxuICAgICAgICB9fTxuZy1jb250YWluZXIgKm5nSWY9XCJuYXZSYW5nZSA9PT0gRGF0ZU5hdlJhbmdlLlllYXJcIj57e1xuICAgICAgICAgICdtb250aF9zdWZmaXgnIHwgYXVpSTE4blxuICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -20,6 +20,7 @@ import { OverlayConfig, OverlayModule, CdkScrollable } from '@angular/cdk/overla
20
20
  import * as i2$2 from '@angular/forms';
21
21
  import { ControlContainer, NgControl, NG_VALUE_ACCESSOR, FormsModule, Validators, ReactiveFormsModule, NG_VALIDATORS } from '@angular/forms';
22
22
  import dayjs from 'dayjs';
23
+ import { HOUR_ITEMS as HOUR_ITEMS$1, MINUTE_ITEMS as MINUTE_ITEMS$1, SECOND_ITEMS as SECOND_ITEMS$1 } from 'src/time-picker';
23
24
  import customParseFormat from 'dayjs/plugin/customParseFormat';
24
25
  import isBetween from 'dayjs/plugin/isBetween';
25
26
  import * as i2$4 from '@angular/cdk/bidi';
@@ -4178,7 +4179,7 @@ class PickerPanelComponent {
4178
4179
  minDate;
4179
4180
  maxDate;
4180
4181
  get disabledDateFn() {
4181
- return composeDisabledDateFn(date => this.minDate && date.isBefore(this.minDate), date => this.maxDate && date.isAfter(this.maxDate), this.disabledDate);
4182
+ return composeDisabledDateFn(date => this.minDate && date.isBefore(this.minDate, 'date'), date => this.maxDate && date.isAfter(this.maxDate, 'date'), this.disabledDate);
4182
4183
  }
4183
4184
  _weekStartDay = 0;
4184
4185
  panelData;
@@ -4328,7 +4329,7 @@ class DatePickerPanelComponent extends CommonFormControl {
4328
4329
  _cacheDisabledTimeFn;
4329
4330
  getDisabledTimeFn(selectedDate, type) {
4330
4331
  if (selectedDate !== this._cacheSelectedDate) {
4331
- this._cacheDisabledTimeFn = this.disabledTime(selectedDate);
4332
+ this._cacheDisabledTimeFn = combineDisabledTimeFn(this._disabledTimeFn.bind(this), this.disabledTime)(selectedDate);
4332
4333
  this._cacheSelectedDate = selectedDate;
4333
4334
  }
4334
4335
  return this._cacheDisabledTimeFn?.[type];
@@ -4375,6 +4376,52 @@ class DatePickerPanelComponent extends CommonFormControl {
4375
4376
  setToday() {
4376
4377
  this.confirmValue(dayjs(), true);
4377
4378
  }
4379
+ clearValue() {
4380
+ this.selectedTime = null;
4381
+ this.clear.next();
4382
+ }
4383
+ _disabledTimeFn(selectedDate) {
4384
+ const returnFnMap = {
4385
+ hours: () => [],
4386
+ minutes: () => [],
4387
+ seconds: () => [],
4388
+ };
4389
+ if (selectedDate &&
4390
+ this.minDate &&
4391
+ selectedDate?.isSame(this.minDate, 'date')) {
4392
+ returnFnMap.hours = () => HOUR_ITEMS$1.filter(item => item < this.minDate.hour());
4393
+ returnFnMap.minutes = (hour) => {
4394
+ if (hour === this.minDate.hour()) {
4395
+ return MINUTE_ITEMS$1.filter(item => item < this.minDate.minute());
4396
+ }
4397
+ return [];
4398
+ };
4399
+ returnFnMap.seconds = (hour, minute) => {
4400
+ if (hour === this.minDate.hour() && minute === this.minDate.minute()) {
4401
+ return SECOND_ITEMS$1.filter(item => item < this.minDate.second());
4402
+ }
4403
+ return [];
4404
+ };
4405
+ }
4406
+ if (selectedDate &&
4407
+ this.maxDate &&
4408
+ selectedDate?.isSame(this.maxDate, 'date')) {
4409
+ returnFnMap.hours = () => HOUR_ITEMS$1.filter(item => item > this.maxDate.hour());
4410
+ returnFnMap.minutes = (hour) => {
4411
+ if (hour === this.maxDate.hour()) {
4412
+ return MINUTE_ITEMS$1.filter(item => item > this.maxDate.minute());
4413
+ }
4414
+ return [];
4415
+ };
4416
+ returnFnMap.seconds = (hour, minute) => {
4417
+ if (hour === this.maxDate.hour() && minute === this.maxDate.minute()) {
4418
+ return SECOND_ITEMS$1.filter(item => item > this.maxDate.second());
4419
+ }
4420
+ return [];
4421
+ };
4422
+ }
4423
+ return returnFnMap;
4424
+ }
4378
4425
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DatePickerPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
4379
4426
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: DatePickerPanelComponent, selector: "aui-date-picker-panel", inputs: { clearable: "clearable", clearText: "clearText", type: "type", showTime: "showTime", disabledDate: "disabledDate", disabledTime: "disabledTime", weekStartDay: "weekStartDay", showFooter: "showFooter", footerTemplate: "footerTemplate", extraFooter: "extraFooter", minDate: "minDate", maxDate: "maxDate" }, outputs: { confirm: "confirm", clear: "clear" }, providers: [
4380
4427
  {
@@ -4382,7 +4429,7 @@ class DatePickerPanelComponent extends CommonFormControl {
4382
4429
  useExisting: forwardRef(() => DatePickerPanelComponent),
4383
4430
  multi: true,
4384
4431
  },
4385
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TimePickerComponent, selector: "aui-time-picker", inputs: ["format", "size", "placeholder", "clearable", "showIcon", "disableHours", "disableMinutes", "disableSeconds", "hourStep", "minuteStep", "secondStep", "footerTemplate"], outputs: ["open", "close"] }, { kind: "component", type: CalendarHeaderComponent, selector: "aui-calendar-header", inputs: ["dateNavRange", "anchor", "maxAvail", "minAvail"], outputs: ["navRangeChange", "anchorChange"] }, { kind: "component", type: CalendarFooterComponent, selector: "aui-calendar-footer", inputs: ["clearable", "clearText", "customAction"], outputs: ["confirm", "clear"] }, { kind: "component", type: PickerPanelComponent, selector: "aui-picker-panel", inputs: ["navRange", "type", "anchor", "matchDates", "disabledDate", "weekStartDay", "minDate", "maxDate"], outputs: ["select", "hovered"] }, { kind: "pipe", type: I18nPipe, name: "auiI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4432
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n (clear)=\"clearValue()\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TimePickerComponent, selector: "aui-time-picker", inputs: ["format", "size", "placeholder", "clearable", "showIcon", "disableHours", "disableMinutes", "disableSeconds", "hourStep", "minuteStep", "secondStep", "footerTemplate"], outputs: ["open", "close"] }, { kind: "component", type: CalendarHeaderComponent, selector: "aui-calendar-header", inputs: ["dateNavRange", "anchor", "maxAvail", "minAvail"], outputs: ["navRangeChange", "anchorChange"] }, { kind: "component", type: CalendarFooterComponent, selector: "aui-calendar-footer", inputs: ["clearable", "clearText", "customAction"], outputs: ["confirm", "clear"] }, { kind: "component", type: PickerPanelComponent, selector: "aui-picker-panel", inputs: ["navRange", "type", "anchor", "matchDates", "disabledDate", "weekStartDay", "minDate", "maxDate"], outputs: ["select", "hovered"] }, { kind: "pipe", type: I18nPipe, name: "auiI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4386
4433
  }
4387
4434
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DatePickerPanelComponent, decorators: [{
4388
4435
  type: Component,
@@ -4392,7 +4439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
4392
4439
  useExisting: forwardRef(() => DatePickerPanelComponent),
4393
4440
  multi: true,
4394
4441
  },
4395
- ], template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"] }]
4442
+ ], template: "<div class=\"aui-date-picker-panel__wrapper\">\n <aui-calendar-header\n [dateNavRange]=\"navRange\"\n [anchor]=\"anchor\"\n [minAvail]=\"minDate\"\n [maxAvail]=\"maxDate\"\n [style.margin-inline.px]=\"4\"\n (navRangeChange)=\"navRange = $event\"\n (anchorChange)=\"anchor = $event\"\n ></aui-calendar-header>\n\n <aui-picker-panel\n [style.margin]=\"'16px 0'\"\n [anchor]=\"anchor\"\n [navRange]=\"navRange\"\n [disabledDate]=\"disabledDate\"\n [weekStartDay]=\"weekStartDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [type]=\"type\"\n [matchDates]=\"[selectedDate]\"\n (select)=\"panelValueChange($event)\"\n ></aui-picker-panel>\n\n <ng-container\n *ngIf=\"extraFooter\"\n [ngTemplateOutlet]=\"extraFooter\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-container *ngIf=\"showFooter\">\n <aui-calendar-footer\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue()\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n *ngIf=\"showTime; else today\"\n >\n <ng-container\n *ngIf=\"footerTemplate; else default\"\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ context: this }\"\n ></ng-container>\n\n <ng-template #default>\n <aui-time-picker\n *ngIf=\"currentNavType === DatePickerType.Day && showTime\"\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"selectedTime\"\n [disableHours]=\"getDisabledTimeFn(selectedDate, 'hours')\"\n [disableMinutes]=\"getDisabledTimeFn(selectedDate, 'minutes')\"\n [disableSeconds]=\"getDisabledTimeFn(selectedDate, 'seconds')\"\n tooltipPosition=\"top start\"\n (ngModelChange)=\"timeDateChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n ></aui-time-picker>\n </ng-template>\n </aui-calendar-footer>\n\n <ng-template #today>\n <aui-calendar-footer\n *ngIf=\"type === DatePickerType.Day\"\n (clear)=\"clearValue()\"\n [clearable]=\"false\"\n [customAction]=\"todayBtn\"\n >\n </aui-calendar-footer>\n <ng-template #todayBtn>\n <button\n aui-button=\"inline\"\n (click)=\"setToday()\"\n >\n {{ 'today' | auiI18n }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</div>\n", styles: [".aui-date-picker-panel__wrapper{display:flex;flex-direction:column;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-picker-panel__wrapper .aui-time-picker{width:88px}\n"] }]
4396
4443
  }], propDecorators: { clearable: [{
4397
4444
  type: Input
4398
4445
  }], clearText: [{
@@ -4422,6 +4469,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
4422
4469
  }], clear: [{
4423
4470
  type: Output
4424
4471
  }] } });
4472
+ function combineDisabledTimeFn(...disabledFnList) {
4473
+ return (date) => ({
4474
+ hours: () => Array.from(new Set(disabledFnList
4475
+ .map(fn => fn(date)?.hours?.() || [])
4476
+ .reduce((prev, cur) => [...prev, ...cur], []))),
4477
+ minutes: (hour) => Array.from(new Set(disabledFnList
4478
+ .map(fn => fn(date)?.minutes?.(hour) || [])
4479
+ .reduce((prev, cur) => [...prev, ...cur], []))),
4480
+ seconds: (hour, minute) => Array.from(new Set(disabledFnList
4481
+ .map(fn => fn(date)?.seconds?.(hour, minute) || [])
4482
+ .reduce((prev, cur) => [...prev, ...cur], []))),
4483
+ });
4484
+ }
4425
4485
 
4426
4486
  const bem$3 = buildBem('aui-date-range-picker-panel');
4427
4487
  class DateRangePickerPanelComponent extends CommonFormControl {