@skyux/datetime 10.0.0-alpha.2 → 10.0.0-alpha.3
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.
- package/documentation.json +1242 -1170
- package/esm2022/lib/modules/date-range-picker/date-range-picker.component.mjs +1 -1
- package/esm2022/lib/modules/date-range-picker/date-range-picker.module.mjs +2 -4
- package/esm2022/lib/modules/date-range-picker/date-range.service.mjs +6 -3
- package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +12 -2
- package/esm2022/lib/modules/datepicker/datepicker-calendar-label.pipe.mjs +39 -0
- package/esm2022/lib/modules/datepicker/datepicker-calendar.component.mjs +3 -4
- package/esm2022/lib/modules/datepicker/datepicker-input.directive.mjs +11 -30
- package/esm2022/lib/modules/datepicker/datepicker.component.mjs +45 -4
- package/esm2022/lib/modules/datepicker/datepicker.module.mjs +4 -1
- package/esm2022/lib/modules/datepicker/daypicker-button.component.mjs +4 -3
- package/esm2022/lib/modules/datepicker/daypicker.component.mjs +2 -1
- package/esm2022/lib/modules/datepicker/monthpicker.component.mjs +5 -3
- package/esm2022/lib/modules/datepicker/yearpicker.component.mjs +5 -3
- package/esm2022/lib/modules/shared/sky-datetime-resources.module.mjs +2 -1
- package/esm2022/lib/modules/timepicker/timepicker.component.mjs +3 -3
- package/fesm2022/skyux-datetime.mjs +113 -58
- package/fesm2022/skyux-datetime.mjs.map +1 -1
- package/lib/modules/datepicker/datepicker-calendar-inner.component.d.ts +4 -0
- package/lib/modules/datepicker/datepicker-calendar-label.pipe.d.ts +23 -0
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +2 -3
- package/lib/modules/datepicker/datepicker.component.d.ts +7 -1
- package/lib/modules/datepicker/datepicker.module.d.ts +6 -5
- package/package.json +8 -8
- package/esm2022/lib/modules/datepicker/datepicker-adapter.service.mjs +0 -23
- package/lib/modules/datepicker/datepicker-adapter.service.d.ts +0 -13
@@ -492,7 +492,7 @@ export class SkyDateRangePickerComponent {
|
|
492
492
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: SkyDateRangePickerComponent, selector: "sky-date-range-picker", inputs: { calculatorIds: "calculatorIds", dateFormat: "dateFormat", disabled: "disabled", label: "label", startDateRequired: "startDateRequired", endDateRequired: "endDateRequired" }, providers: [
|
493
493
|
SKY_DATE_RANGE_PICKER_VALUE_ACCESSOR,
|
494
494
|
SKY_DATE_RANGE_PICKER_VALIDATOR,
|
495
|
-
], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"isReady && formGroup\"\n class=\"sky-date-range-picker\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker && !showEndDatePicker\n }\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-select-calculator'\"\n >\n {{\n label || ('skyux_date_range_picker_default_label' | skyLibResources)\n }}\n </label>\n <select\n class=\"sky-form-control\"\n formControlName=\"calculatorId\"\n [attr.id]=\"dateRangePickerId + '-select-calculator'\"\n (blur)=\"onFieldBlur()\"\n >\n <option\n *ngFor=\"let calculator of calculators\"\n [value]=\"calculator.calculatorId\"\n >\n {{ calculator.shortDescription }}\n </option>\n </select>\n </sky-input-box>\n </div>\n\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker && !showEndDatePicker\n }\"\n [hidden]=\"!showStartDatePicker\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-start-date'\"\n [ngClass]=\"{ 'sky-control-label-required': startDateRequired }\"\n >\n {{\n selectedCalculator?.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n }}\n </label>\n\n <sky-datepicker>\n <input\n class=\"sky-form-control\"\n formControlName=\"startDate\"\n [attr.aria-label]=\"\n label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator?.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : label)\n : (selectedCalculator?.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [attr.id]=\"dateRangePickerId + '-start-date'\"\n [attr.placeholder]=\"dateFormatOrDefault\"\n [required]=\"!!startDateRequired\"\n [dateFormat]=\"dateFormatOrDefault\"\n (blur)=\"onFieldBlur()\"\n skyDatepickerInput\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input': showEndDatePicker\n }\"\n [hidden]=\"!showEndDatePicker\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-end-date'\"\n [ngClass]=\"{ 'sky-control-label-required': endDateRequired }\"\n >\n {{\n selectedCalculator?.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n }}\n </label>\n\n <sky-datepicker>\n <input\n class=\"sky-form-control\"\n formControlName=\"endDate\"\n skyDatepickerInput\n [attr.aria-label]=\"\n label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator?.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : label)\n : (selectedCalculator?.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [attr.id]=\"dateRangePickerId + '-end-date'\"\n [attr.placeholder]=\"dateFormatOrDefault\"\n [dateFormat]=\"dateFormatOrDefault\"\n [required]=\"!!endDateRequired\"\n (blur)=\"onFieldBlur()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [":host{display:block}.sky-date-range-picker{display:flex}@media (max-width: 768px){.sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-margin-stacked-lg)}}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:5px}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:5px}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:5px}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:5px}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-theme-modern) .sky-date-range-picker-form-group{padding:0}@media (max-width: 768px){:host-context(.sky-theme-modern) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-margin-stacked-lg)}}@media (min-width: 768px){:host-context(.sky-theme-modern) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-right:20px}}.sky-theme-modern .sky-date-range-picker-form-group{padding:0}@media (max-width: 768px){.sky-theme-modern .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-margin-stacked-lg)}}@media (min-width: 768px){.sky-theme-modern .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-right:20px}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "openChange"] }, { kind: "directive", type: i7.SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "component", type: i8.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "hintText"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: i9.SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: i10.SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
495
|
+
], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"isReady && formGroup\"\n class=\"sky-date-range-picker\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker && !showEndDatePicker\n }\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-select-calculator'\"\n >\n {{\n label || ('skyux_date_range_picker_default_label' | skyLibResources)\n }}\n </label>\n <select\n class=\"sky-form-control\"\n formControlName=\"calculatorId\"\n [attr.id]=\"dateRangePickerId + '-select-calculator'\"\n (blur)=\"onFieldBlur()\"\n >\n <option\n *ngFor=\"let calculator of calculators\"\n [value]=\"calculator.calculatorId\"\n >\n {{ calculator.shortDescription }}\n </option>\n </select>\n </sky-input-box>\n </div>\n\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker && !showEndDatePicker\n }\"\n [hidden]=\"!showStartDatePicker\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-start-date'\"\n [ngClass]=\"{ 'sky-control-label-required': startDateRequired }\"\n >\n {{\n selectedCalculator?.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n }}\n </label>\n\n <sky-datepicker>\n <input\n class=\"sky-form-control\"\n formControlName=\"startDate\"\n [attr.aria-label]=\"\n label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator?.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : label)\n : (selectedCalculator?.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [attr.id]=\"dateRangePickerId + '-start-date'\"\n [attr.placeholder]=\"dateFormatOrDefault\"\n [required]=\"!!startDateRequired\"\n [dateFormat]=\"dateFormatOrDefault\"\n (blur)=\"onFieldBlur()\"\n skyDatepickerInput\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input': showEndDatePicker\n }\"\n [hidden]=\"!showEndDatePicker\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <label\n class=\"sky-control-label\"\n [attr.for]=\"dateRangePickerId + '-end-date'\"\n [ngClass]=\"{ 'sky-control-label-required': endDateRequired }\"\n >\n {{\n selectedCalculator?.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n }}\n </label>\n\n <sky-datepicker>\n <input\n class=\"sky-form-control\"\n formControlName=\"endDate\"\n skyDatepickerInput\n [attr.aria-label]=\"\n label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator?.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : label)\n : (selectedCalculator?.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [attr.id]=\"dateRangePickerId + '-end-date'\"\n [attr.placeholder]=\"dateFormatOrDefault\"\n [dateFormat]=\"dateFormatOrDefault\"\n [required]=\"!!endDateRequired\"\n (blur)=\"onFieldBlur()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [":host{display:block}.sky-date-range-picker{display:flex}@media (max-width: 768px){.sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-margin-stacked-lg)}}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:5px}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:5px}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:5px}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:5px}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-theme-modern) .sky-date-range-picker-form-group{padding:0}@media (max-width: 768px){:host-context(.sky-theme-modern) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-margin-stacked-lg)}}@media (min-width: 768px){:host-context(.sky-theme-modern) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-right:20px}}.sky-theme-modern .sky-date-range-picker-form-group{padding:0}@media (max-width: 768px){.sky-theme-modern .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-margin-stacked-lg)}}@media (min-width: 768px){.sky-theme-modern .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-right:20px}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange"] }, { kind: "directive", type: i7.SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "component", type: i8.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "hintText"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: i9.SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: i10.SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
496
496
|
}
|
497
497
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{
|
498
498
|
type: Component,
|
@@ -7,7 +7,6 @@ import { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.mod
|
|
7
7
|
import { SkyDateRangePickerEndDateResourceKeyPipe } from './date-range-picker-end-date-resource-key.pipe';
|
8
8
|
import { SkyDateRangePickerStartDateResourceKeyPipe } from './date-range-picker-start-date-resource-key.pipe';
|
9
9
|
import { SkyDateRangePickerComponent } from './date-range-picker.component';
|
10
|
-
import { SkyDateRangeService } from './date-range.service';
|
11
10
|
import * as i0 from "@angular/core";
|
12
11
|
export class SkyDateRangePickerModule {
|
13
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
@@ -19,7 +18,7 @@ export class SkyDateRangePickerModule {
|
|
19
18
|
SkyDatepickerModule,
|
20
19
|
SkyDatetimeResourcesModule,
|
21
20
|
SkyInputBoxModule], exports: [SkyDateRangePickerComponent] }); }
|
22
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangePickerModule,
|
21
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangePickerModule, imports: [CommonModule,
|
23
22
|
FormsModule,
|
24
23
|
ReactiveFormsModule,
|
25
24
|
SkyDatepickerModule,
|
@@ -43,7 +42,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
43
42
|
SkyInputBoxModule,
|
44
43
|
],
|
45
44
|
exports: [SkyDateRangePickerComponent],
|
46
|
-
providers: [SkyDateRangeService],
|
47
45
|
}]
|
48
46
|
}] });
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM5RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFrQjVFLE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLGlCQWRqQywyQkFBMkI7WUFDM0Isd0NBQXdDO1lBQ3hDLDBDQUEwQyxhQUcxQyxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLGlCQUFpQixhQUVULDJCQUEyQjsrR0FFMUIsd0JBQXdCLFlBVGpDLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQiwwQkFBMEI7WUFDMUIsaUJBQWlCOzsyRkFJUix3QkFBd0I7a0JBaEJwQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLHdDQUF3Qzt3QkFDeEMsMENBQTBDO3FCQUMzQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUlucHV0Qm94TW9kdWxlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5UGlwZSxcbiAgICBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTa3lEYXRlcGlja2VyTW9kdWxlLFxuICAgIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUlucHV0Qm94TW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlUGlja2VyTW9kdWxlIHt9XG4iXX0=
|
@@ -89,9 +89,12 @@ export class SkyDateRangeService {
|
|
89
89
|
});
|
90
90
|
}
|
91
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangeService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
92
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangeService }); }
|
92
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangeService, providedIn: 'root' }); }
|
93
93
|
}
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDateRangeService, decorators: [{
|
95
|
-
type: Injectable
|
95
|
+
type: Injectable,
|
96
|
+
args: [{
|
97
|
+
providedIn: 'root',
|
98
|
+
}]
|
96
99
|
}], ctorParameters: () => [{ type: i1.SkyLibResourcesService }] });
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFjLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3ZFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7QUFFL0Y7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLDZEQUE2RDtJQUM3RCxpREFBaUQ7YUFDbEMsV0FBTSxHQUFHLElBQUksQUFBUCxDQUFRO0lBRTdCLHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTdELGtCQUFrQixHQUFpRCxFQUFFLENBQUM7SUFFdEUsWUFBWSxHQUE2QixFQUFFLENBQUM7SUFFNUMsaUJBQWlCLENBQXlCO0lBRTFDLFlBQVksZ0JBQXdDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCLENBQ3JCLE1BQW9DO1FBRXBDLE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFD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R0FBRyxXQUFXLENBQUM7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBN0dVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvckNvbmZpZyB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0NPTkZJR1MgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZ3MnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIG1hbmFnZXMgYFNreURhdGVSYW5nZUNhbGN1bGF0b3JgIGluc3RhbmNlcy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVSYW5nZVNlcnZpY2Uge1xuICAvLyBTdGFydCB0aGUgY291bnQgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZiBhdmFpbGFibGUgdmFsdWVzXG4gIC8vIHByb3ZpZGVkIGluIHRoZSBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgZW51bS5cbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdElkID0gMTAwMDtcblxuICAjY2FsY3VsYXRvclJlYWR5U3RyZWFtID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgI2NhbGN1bGF0b3JDb25maWdzOiBSZWNvcmQ8bnVtYmVyLCBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yQ29uZmlnPiA9IHt9O1xuXG4gICNjYWxjdWxhdG9yczogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdID0gW107XG5cbiAgI3Jlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IocmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSkge1xuICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UgPSByZXNvdXJjZXNTZXJ2aWNlO1xuICAgIHRoaXMuI2NyZWF0ZURlZmF1bHRDYWxjdWxhdG9ycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjdXN0b20gZGF0ZSByYW5nZSBjYWxjdWxhdG9yLlxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjYWxjdWxhdG9yIGNvbmZpZy5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVDYWxjdWxhdG9yKFxuICAgIGNvbmZpZzogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvckNvbmZpZyxcbiAgKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICAgY29uc3QgbmV3SWQgPSBTa3lEYXRlUmFuZ2VTZXJ2aWNlLmxhc3RJZCsrO1xuICAgIGNvbnN0IGNhbGN1bGF0b3IgPSBuZXcgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcihuZXdJZCwgY29uZmlnKTtcblxuICAgIHRoaXMuI2NhbGN1bGF0b3JzLnB1c2goY2FsY3VsYXRvcik7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNhbGN1bGF0b3JzIGZyb20gYW4gYXJyYXkgb2YgY2FsY3VsYXRvciBJRHMuXG4gICAqIEBwYXJhbSBpZHMgVGhlIGFycmF5IG9mIGNhbGN1bGF0b3IgSURzLlxuICAgKi9cbiAgcHVibGljIGdldENhbGN1bGF0b3JzKFxuICAgIGlkczogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkW10sXG4gICk6IFByb21pc2U8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdPiB7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBpZHMubWFwKChpZCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FsY3VsYXRvckJ5SWQoaWQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2FsY3VsYXRvciBmcm9tIGEgY2FsY3VsYXRvciBJRC5cbiAgICogQHBhcmFtIGlkIFRoZSBjYWxjdWxhdG9yIElELlxuICAgKi9cbiAgcHVibGljIGdldENhbGN1bGF0b3JCeUlkKFxuICAgIGlkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQsXG4gICk6IFByb21pc2U8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcj4ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JJZCA9IHBhcnNlSW50KGlkIGFzIGFueSwgMTApO1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy4jY2FsY3VsYXRvcnMuZmluZCgoY2FsY3VsYXRvcikgPT4ge1xuICAgICAgcmV0dXJuIGNhbGN1bGF0b3IuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBBIGNhbGN1bGF0b3Igd2l0aCB0aGUgSUQgJHtpZH0gd2FzIG5vdCBmb3VuZC5gKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jY2FsY3VsYXRvclJlYWR5U3RyZWFtLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZShmb3VuZCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gICNjcmVhdGVEZWZhdWx0Q2FsY3VsYXRvcnMoKTogdm9pZCB7XG4gICAgY29uc3QgdGFza3M6IE9ic2VydmFibGU8dm9pZD5bXSA9IFtdO1xuXG4gICAgLy8gR2V0IHJlc291cmNlIHN0cmluZ3MgZm9yIHNob3J0IGRlc2NyaXB0aW9ucy5cbiAgICBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0NPTkZJR1MuZm9yRWFjaCgoZGVmYXVsdENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICBnZXRWYWx1ZTogZGVmYXVsdENvbmZpZy5nZXRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGU6IGRlZmF1bHRDb25maWcudmFsaWRhdGUsXG4gICAgICAgIHNob3J0RGVzY3JpcHRpb246ICcnLFxuICAgICAgICB0eXBlOiBkZWZhdWx0Q29uZmlnLnR5cGUsXG4gICAgICB9O1xuXG4gICAgICB0YXNrcy5wdXNoKFxuICAgICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlXG4gICAgICAgICAgLmdldFN0cmluZyhkZWZhdWx0Q29uZmlnLnNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpZy5zaG9ydERlc2NyaXB0aW9uID0gdmFsdWU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgdGhpcy4jY2FsY3VsYXRvckNvbmZpZ3NbZGVmYXVsdENvbmZpZy5jYWxjdWxhdG9ySWRdID0gY29uZmlnO1xuICAgIH0pO1xuXG4gICAgZm9ya0pvaW4odGFza3MpXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0b3JJZHMgPSBPYmplY3Qua2V5cyh0aGlzLiNjYWxjdWxhdG9yQ29uZmlncyk7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0b3JzID0gY2FsY3VsYXRvcklkcy5tYXAoKGNhbGN1bGF0b3JJZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gcGFyc2VJbnQoY2FsY3VsYXRvcklkLCAxMCk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yKGlkLCB0aGlzLiNjYWxjdWxhdG9yQ29uZmlnc1tpZF0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNjYWxjdWxhdG9ycyA9IGNhbGN1bGF0b3JzO1xuICAgICAgICB0aGlzLiNjYWxjdWxhdG9yUmVhZHlTdHJlYW0ubmV4dCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';
|
2
|
+
import { SkyLiveAnnouncerService } from '@skyux/core';
|
2
3
|
import { SkyLibResourcesService } from '@skyux/i18n';
|
3
4
|
import { Subject, takeUntil } from 'rxjs';
|
4
5
|
import { SkyDateFormatter } from './date-formatter';
|
@@ -29,6 +30,9 @@ export class SkyDatepickerCalendarInnerComponent {
|
|
29
30
|
this.formatDayHeader = 'dd';
|
30
31
|
this.formatDayTitle = 'MMMM YYYY';
|
31
32
|
this.formatMonthTitle = 'YYYY';
|
33
|
+
this.formatDayLabel = 'dddd, MMMM Do YYYY';
|
34
|
+
this.formatMonthLabel = 'MMMM YYYY';
|
35
|
+
this.formatYearLabel = 'YYYY';
|
32
36
|
this.datepickerId = `sky-datepicker-${++nextDatepickerId}`;
|
33
37
|
this.stepDay = {};
|
34
38
|
this.stepMonth = {};
|
@@ -51,6 +55,7 @@ export class SkyDatepickerCalendarInnerComponent {
|
|
51
55
|
this.#ngUnsubscribe = new Subject();
|
52
56
|
this.#_startingDay = 0;
|
53
57
|
this.#resourcesSvc = inject(SkyLibResourcesService);
|
58
|
+
this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);
|
54
59
|
}
|
55
60
|
set startingDay(value) {
|
56
61
|
this.#_startingDay = value || 0;
|
@@ -81,6 +86,7 @@ export class SkyDatepickerCalendarInnerComponent {
|
|
81
86
|
#_selectedDate;
|
82
87
|
#_startingDay;
|
83
88
|
#resourcesSvc;
|
89
|
+
#liveAnnouncerSvc;
|
84
90
|
ngOnInit() {
|
85
91
|
if (this.selectedDate) {
|
86
92
|
this.activeDate = new Date(this.selectedDate);
|
@@ -206,7 +212,7 @@ export class SkyDatepickerCalendarInnerComponent {
|
|
206
212
|
}
|
207
213
|
onKeydown(event) {
|
208
214
|
const key = event.key?.toLowerCase();
|
209
|
-
if (!this.keys.includes(key) || event.shiftKey
|
215
|
+
if (!this.keys.includes(key) || event.shiftKey) {
|
210
216
|
return;
|
211
217
|
}
|
212
218
|
event.preventDefault();
|
@@ -324,6 +330,10 @@ export class SkyDatepickerCalendarInnerComponent {
|
|
324
330
|
this.refreshView();
|
325
331
|
}
|
326
332
|
}
|
333
|
+
announceDate(date, format) {
|
334
|
+
const caption = this.dateFilter(date, format);
|
335
|
+
this.#liveAnnouncerSvc.announce(caption);
|
336
|
+
}
|
327
337
|
/**
|
328
338
|
* Date is disabled if it meets any of these criteria:
|
329
339
|
* 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.
|
@@ -366,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
366
376
|
}], calendarModeChange: [{
|
367
377
|
type: Output
|
368
378
|
}] } });
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBT3BELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXpCOztHQUVHO0FBT0gsTUFBTSxPQUFPLG1DQUFtQztJQU5oRDtRQTJDUyx1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLENBQzlELFNBQVMsQ0FDVixDQUFDO1FBR0ssdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFN0UsaU1BQWlNO1FBQzFMLGVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxNQUFNLENBQUM7UUFD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QUksY0FBYyxHQUFHLENBQUMsQ0FBQztZQUNwRCxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBVTtRQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBbUMsRUFBRSxFQUFFO2dCQUNuRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBamNVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDRUQ2xDaEQsbzNDQXVDQTs7MkZETGEsbUNBQW1DO2tCQU4vQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSTs4QkFNOUIsV0FBVztzQkFEakIsS0FBSztnQkFJSyxXQUFXO3NCQURyQixLQUFLO2dCQVVDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUssWUFBWTtzQkFEdEIsS0FBSztnQkFnQkMsa0JBQWtCO3NCQUR4QixNQUFNO2dCQU1BLGtCQUFrQjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxudHlwZSBEYXRlQ29tcGFyYXRvciA9IChkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbnR5cGUgS2V5Ym9hcmRFdmVudEhhbmRsZXIgPSAoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuXG5sZXQgbmV4dERhdGVwaWNrZXJJZCA9IDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyLWlubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgdGhpcy4jX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19zZWxlY3RlZERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIFRPRE86IGBhY3RpdmVEYXRlYCBpcyB2ZXJ5IHNpbWlsYXIgdG8gYHNlbGVjdGVkRGF0ZWAgYW5kIGF0IHRoZSB2ZXJ5IGxlYXN0IHNob3VsZCBiZSBhYmxlIHRvIGJlIHVuZGVmaW5lZC4gSG93ZXZlciwgdGhpcyB3b3VsZCB0YWtlIGNvbnNpZGVyYWJsZSByZWZhY3RvcmluZyB0byBkbyBhbmQgdGh1cyBoYXMgYmVlbiBkZWZlcnJlZC5cbiAgcHVibGljIGFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICBwdWJsaWMgYWN0aXZlRGF0ZUlkID0gJyc7XG5cbiAgcHVibGljIHRpdGxlID0gJyc7XG5cbiAgcHVibGljIG1pbk1vZGUgPSAnZGF5JztcbiAgcHVibGljIG1heE1vZGUgPSAneWVhcic7XG4gIHB1YmxpYyBtb250aENvbExpbWl0ID0gMztcbiAgcHVibGljIHllYXJDb2xMaW1pdCA9IDU7XG4gIHB1YmxpYyBkYXRlcGlja2VyTW9kZSA9ICdkYXknO1xuICBwdWJsaWMgeWVhclJhbmdlID0gMjA7XG5cbiAgcHVibGljIGZvcm1hdERheSA9ICdERCc7XG4gIHB1YmxpYyBmb3JtYXRNb250aCA9ICdNTU1NJztcbiAgcHVibGljIGZvcm1hdFllYXIgPSAnWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXREYXlIZWFkZXIgPSAnZGQnO1xuICBwdWJsaWMgZm9ybWF0RGF5VGl0bGUgPSAnTU1NTSBZWVlZJztcbiAgcHVibGljIGZvcm1hdE1vbnRoVGl0bGUgPSAnWVlZWSc7XG5cbiAgcHVibGljIHByZXZpb3VzTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIG5leHRMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBkYXRlcGlja2VySWQgPSBgc2t5LWRhdGVwaWNrZXItJHsrK25leHREYXRlcGlja2VySWR9YDtcblxuICBwdWJsaWMgc3RlcERheTogYW55ID0ge307XG4gIHB1YmxpYyBzdGVwTW9udGg6IGFueSA9IHt9O1xuICBwdWJsaWMgc3RlcFllYXI6IGFueSA9IHt9O1xuXG4gIHByb3RlY3RlZCBtb2Rlczogc3RyaW5nW10gPSBbJ2RheScsICdtb250aCcsICd5ZWFyJ107XG4gIHByb3RlY3RlZCBkYXRlRm9ybWF0dGVyOiBTa3lEYXRlRm9ybWF0dGVyID0gbmV3IFNreURhdGVGb3JtYXR0ZXIoKTtcblxuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyRGF5OiAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyRGF5OiBEYXRlQ29tcGFyYXRvciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlZnJlc2hWaWV3SGFuZGxlck1vbnRoOiAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyTW9udGg6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyWWVhcjogKCgpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjb21wYXJlSGFuZGxlclllYXI6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duRGF5OiBLZXlib2FyZEV2ZW50SGFuZGxlciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGhhbmRsZUtleWRvd25Nb250aDogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duWWVhcjogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGtleXMgPSBbXG4gICAgJ2VudGVyJyxcbiAgICAnICcsXG4gICAgJ3NwYWNlYmFyJyxcbiAgICAncGFnZXVwJyxcbiAgICAncGFnZWRvd24nLFxuICAgICdlbmQnLFxuICAgICdob21lJyxcbiAgICAnYXJyb3dsZWZ0JyxcbiAgICAnYXJyb3d1cCcsXG4gICAgJ2Fycm93cmlnaHQnLFxuICAgICdhcnJvd2Rvd24nLFxuICBdO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3ByZXZEYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI25leHREYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI3ByZXZNb250aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmV4dE1vbnRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNwcmV2WWVhcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmV4dFllYXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX3NlbGVjdGVkRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgI19zdGFydGluZ0RheSA9IDA7XG5cbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjXG4gICAgICAuZ2V0U3RyaW5ncyh7XG4gICAgICAgIHByZXZEYXk6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfZGF5JyxcbiAgICAgICAgbmV4dERheTogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X2RheScsXG4gICAgICAgIHByZXZNb250aDogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19tb250aCcsXG4gICAgICAgIG5leHRNb250aDogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X21vbnRoJyxcbiAgICAgICAgcHJldlllYXI6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfeWVhcicsXG4gICAgICAgIG5leHRZZWFyOiAnc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfeWVhcicsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzKSA9PiB7XG4gICAgICAgIHRoaXMuI3ByZXZEYXkgPSByZXNvdXJjZXMucHJldkRheTtcbiAgICAgICAgdGhpcy4jbmV4dERheSA9IHJlc291cmNlcy5uZXh0RGF5O1xuICAgICAgICB0aGlzLiNwcmV2TW9udGggPSByZXNvdXJjZXMucHJldk1vbnRoO1xuICAgICAgICB0aGlzLiNuZXh0TW9udGggPSByZXNvdXJjZXMubmV4dE1vbnRoO1xuICAgICAgICB0aGlzLiNwcmV2WWVhciA9IHJlc291cmNlcy5wcmV2WWVhcjtcbiAgICAgICAgdGhpcy4jbmV4dFllYXIgPSByZXNvdXJjZXMubmV4dFllYXI7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcGFyZUhhbmRsZXIoaGFuZGxlcjogRGF0ZUNvbXBhcmF0b3IsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlclllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJlKFxuICAgIGRhdGUxOiBEYXRlIHwgdW5kZWZpbmVkLFxuICAgIGRhdGUyOiBEYXRlIHwgdW5kZWZpbmVkLFxuICApOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChkYXRlMSA9PT0gdW5kZWZpbmVkIHx8IGRhdGUyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknICYmIHRoaXMuY29tcGFyZUhhbmRsZXJEYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVIYW5kbGVyRGF5KGRhdGUxLCBkYXRlMik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdtb250aCcgJiYgdGhpcy5jb21wYXJlSGFuZGxlck1vbnRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlSGFuZGxlck1vbnRoKGRhdGUxLCBkYXRlMik7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMuY29tcGFyZUhhbmRsZXJZZWFyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlSGFuZGxlclllYXIoZGF0ZTEsIGRhdGUyKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVmcmVzaFZpZXdIYW5kbGVyKGhhbmRsZXI6ICgpID0+IHN0cmluZywgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2hWaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSkge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyRGF5KCk7XG4gICAgICB0aGlzLnByZXZpb3VzTGFiZWwgPSB0aGlzLiNwcmV2RGF5O1xuICAgICAgdGhpcy5uZXh0TGFiZWwgPSB0aGlzLiNuZXh0RGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyTW9udGgpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKCk7XG4gICAgICB0aGlzLnByZXZpb3VzTGFiZWwgPSB0aGlzLiNwcmV2TW9udGg7XG4gICAgICB0aGlzLm5leHRMYWJlbCA9IHRoaXMuI25leHRNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhcikge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhcigpO1xuICAgICAgdGhpcy5wcmV2aW91c0xhYmVsID0gdGhpcy4jcHJldlllYXI7XG4gICAgICB0aGlzLm5leHRMYWJlbCA9IHRoaXMuI25leHRZZWFyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRLZXlkb3duSGFuZGxlcihoYW5kbGVyOiBLZXlib2FyZEV2ZW50SGFuZGxlciwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25EYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknICYmIHRoaXMuaGFuZGxlS2V5ZG93bkRheSkge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRGF5KGtleSwgZXZlbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMuaGFuZGxlS2V5ZG93bk1vbnRoKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aChrZXksIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMuaGFuZGxlS2V5ZG93blllYXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93blllYXIoa2V5LCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRhdGVGaWx0ZXIoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXR0ZXIuZm9ybWF0KGRhdGUsIGZvcm1hdCk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmUoZGF0ZU9iamVjdDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29tcGFyZShkYXRlT2JqZWN0LmRhdGUsIHRoaXMuYWN0aXZlRGF0ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZUlkID0gZGF0ZU9iamVjdC51aWQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKCF0aGlzLmtleXMuaW5jbHVkZXMoa2V5KSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGtleSA9PT0gJ2VudGVyJyB8fCBrZXkgPT09ICdzcGFjZWJhcicgfHwga2V5ID09PSAnICcpIHtcbiAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQodGhpcy5hY3RpdmVEYXRlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdCh0aGlzLmFjdGl2ZURhdGUpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSAmJiAoa2V5ID09PSAnYXJyb3d1cCcgfHwga2V5ID09PSAnYXJyb3dkb3duJykpIHtcbiAgICAgIHRoaXMudG9nZ2xlTW9kZShrZXkgPT09ICdhcnJvd3VwJyA/IDEgOiAtMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bihrZXksIGV2ZW50KTtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlRGF0ZU9iamVjdChcbiAgICBkYXRlOiBEYXRlLFxuICAgIGZvcm1hdDogc3RyaW5nLFxuICAgIGlzU2Vjb25kYXJ5OiBib29sZWFuLFxuICAgIGlkOiBzdHJpbmcsXG4gICk6IFNreURhdGVwaWNrZXJEYXRlIHtcbiAgICBjb25zdCBjdXN0b21EYXRlTWF0Y2ggPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuXG4gICAgY29uc3QgZGF0ZU9iamVjdDogU2t5RGF0ZXBpY2tlckRhdGUgPSB7XG4gICAgICBkYXRlOiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgbGFiZWw6IHRoaXMuZGF0ZUZpbHRlcihkYXRlLCBmb3JtYXQpLFxuICAgICAgc2VsZWN0ZWQ6XG4gICAgICAgICEhdGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMuc2VsZWN0ZWREYXRlKSA9PT0gMCxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQoZGF0ZSksXG4gICAgICBjdXJyZW50OiB0aGlzLmNvbXBhcmUoZGF0ZSwgbmV3IERhdGUoKSkgPT09IDAsXG4gICAgICBzZWNvbmRhcnk6IGlzU2Vjb25kYXJ5LFxuICAgICAgdWlkOiBpZCxcbiAgICAgIGtleURhdGU6IGN1c3RvbURhdGVNYXRjaCA/IGN1c3RvbURhdGVNYXRjaC5rZXlEYXRlIDogdW5kZWZpbmVkLFxuICAgICAga2V5RGF0ZVRleHQ6IGN1c3RvbURhdGVNYXRjaCA/IGN1c3RvbURhdGVNYXRjaC5rZXlEYXRlVGV4dCA6IFtdLFxuICAgIH07XG5cbiAgICByZXR1cm4gZGF0ZU9iamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVDYWxlbmRhclJvd3MoXG4gICAgZGF0ZXM6IFNreURhdGVwaWNrZXJEYXRlW10sXG4gICAgc2l6ZTogbnVtYmVyLFxuICApOiBTa3lEYXRlcGlja2VyRGF0ZVtdW10ge1xuICAgIGNvbnN0IHJvd3M6IFNreURhdGVwaWNrZXJEYXRlW11bXSA9IFtdO1xuICAgIHdoaWxlIChkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICByb3dzLnB1c2goZGF0ZXMuc3BsaWNlKDAsIHNpemUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICAvKlxuICAgIFRoaXMgaXMgZW5zdXJlcyB0aGF0IG5vIHN0cmFuZ2VuZXNzIGhhcHBlbnMgd2hlbiBjb252ZXJ0aW5nIGEgZGF0ZSB0byBsb2NhbCB0aW1lLlxuICAqL1xuICBwdWJsaWMgZml4VGltZVpvbmUoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG5cbiAgICByZXR1cm4gbmV3RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDYWxlbmRhcihldmVudDogRXZlbnQsIGRhdGU6IERhdGUsIGNsb3NlUGlja2VyID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIWNsb3NlUGlja2VyKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0KGRhdGUpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdChkYXRlOiBEYXRlLCBpc01hbnVhbCA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICk7XG5cbiAgICAvKlxuICAgICAgICBPbmx5IGFjdHVhbGx5IHNlbGVjdCBkYXRlIGlmIGluIG1pbk1vZGUgKGRheSBwaWNrZXIgbW9kZSkuXG4gICAgICAgIE90aGVyd2lzZSwganVzdCBjaGFuZ2UgdGhlIGFjdGl2ZSB2aWV3IGZvciB0aGUgZGF0ZXBpY2tlci5cbiAgICAqL1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1pbk1vZGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5hY3RpdmVEYXRlKTtcbiAgICAgIGlmIChpc01hbnVhbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlcGlja2VyTW9kZSA9XG4gICAgICAgIHRoaXMubW9kZXNbdGhpcy5tb2Rlcy5pbmRleE9mKHRoaXMuZGF0ZXBpY2tlck1vZGUpIC0gMV07XG4gICAgICB0aGlzLmNhbGVuZGFyTW9kZUNoYW5nZS5lbWl0KHRoaXMuZGF0ZXBpY2tlck1vZGUpO1xuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlQ2FsZW5kYXIoZXZlbnQ6IEV2ZW50LCBkaXJlY3Rpb246IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5tb3ZlKGRpcmVjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgbW92ZShkaXJlY3Rpb246IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBleHBlY3RlZFN0ZXA6IGFueTtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScpIHtcbiAgICAgIGV4cGVjdGVkU3RlcCA9IHRoaXMuc3RlcERheTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwTW9udGg7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwWWVhcjtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChleHBlY3RlZFN0ZXApIHtcbiAgICAgIGNvbnN0IHllYXIgPVxuICAgICAgICB0aGlzLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSArIGRpcmVjdGlvbiAqIChleHBlY3RlZFN0ZXAueWVhcnMgfHwgMCk7XG4gICAgICBjb25zdCBtb250aCA9XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5nZXRNb250aCgpICsgZGlyZWN0aW9uICogKGV4cGVjdGVkU3RlcC5tb250aHMgfHwgMCk7XG5cbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcblxuICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb2RlQ2FsZW5kYXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRvZ2dsZU1vZGUoMSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTW9kZShkaXJlY3Rpb246IG51bWJlcik6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgMTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKFxuICAgICAgIShkaXJlY3Rpb24gPT09IDEgJiYgdGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gdGhpcy5tYXhNb2RlKSAmJlxuICAgICAgISh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1pbk1vZGUgJiYgZGlyZWN0aW9uID09PSAtMSlcbiAgICApIHtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlck1vZGUgPVxuICAgICAgICB0aGlzLm1vZGVzW3RoaXMubW9kZXMuaW5kZXhPZih0aGlzLmRhdGVwaWNrZXJNb2RlKSArIGRpcmVjdGlvbl07XG4gICAgICB0aGlzLmNhbGVuZGFyTW9kZUNoYW5nZS5lbWl0KHRoaXMuZGF0ZXBpY2tlck1vZGUpO1xuICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEYXRlIGlzIGRpc2FibGVkIGlmIGl0IG1lZXRzIGFueSBvZiB0aGVzZSBjcml0ZXJpYTpcbiAgICogMS4gRGF0ZSBmYWxscyBvdXRzaWRlIHRoZSBtaW4gb3IgbWF4IGRhdGVzIHNldCBieSB0aGUgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UuXG4gICAqIDIuIERhdGUgaXMgbWFya2VkIGFzIGRpc2FibGVkIGluIHRoZSBjdXN0b21EYXRlcyBhcnJheS5cbiAgICovXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXN0b21EYXRlID0gdGhpcy4jZ2V0Q3VzdG9tRGF0ZShkYXRlKTtcbiAgICBjb25zdCBtaW5EYXRlQ29tcGFyZSA9IHRoaXMuY29tcGFyZShkYXRlLCB0aGlzLm1pbkRhdGUpO1xuICAgIGNvbnN0IG1heERhdGVDb21wYXJlID0gdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMubWF4RGF0ZSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG1pbkRhdGVDb21wYXJlICE9PSB1bmRlZmluZWQgJiYgbWluRGF0ZUNvbXBhcmUgPCAwKSB8fFxuICAgICAgKG1heERhdGVDb21wYXJlICE9PSB1bmRlZmluZWQgJiYgbWF4RGF0ZUNvbXBhcmUgPiAwKSB8fFxuICAgICAgISFjdXN0b21EYXRlPy5kaXNhYmxlZFxuICAgICk7XG4gIH1cblxuICAjZ2V0Q3VzdG9tRGF0ZShkYXRlOiBEYXRlKTogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmN1c3RvbURhdGVzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXN0b21EYXRlcy5maW5kKChjdXN0b21EYXRlOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gY3VzdG9tRGF0ZS5kYXRlLmdldFRpbWUoKSA9PT0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImRhdGVwaWNrZXJNb2RlXCIgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lclwiPlxuICA8ZGl2IGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1oZWFkZXItbGVmdFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLXNtIHNreS1kYXRlcGlja2VyLWJ0bi1wcmV2aW91c1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJldmlvdXNMYWJlbFwiXG4gICAgICAgIChjbGljayk9XCJtb3ZlQ2FsZW5kYXIoJGV2ZW50LCAtMSlcIlxuICAgICAgPlxuICAgICAgICA8c2t5LWljb24gY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uXCIgaWNvbj1cImNoZXZyb24tbGVmdFwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1oZWFkZXItY2VudGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtpZF09XCJkYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItY2FsZW5kYXItdGl0bGVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kZUNhbGVuZGFyKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGF0ZXBpY2tlck1vZGUgPT09IG1heE1vZGVcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1idG4tZGlzYWJsZWQnOiBkYXRlcGlja2VyTW9kZSA9PT0gbWF4TW9kZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPHN0cm9uZz57eyB0aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLXJpZ2h0XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItYnRuLW5leHRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm5leHRMYWJlbFwiXG4gICAgICAgIChjbGljayk9XCJtb3ZlQ2FsZW5kYXIoJGV2ZW50LCAxKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNoZXZyb25cIiBpY29uPVwiY2hldnJvbi1yaWdodFwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCAvPlxuPC9kaXY+XG4iXX0=
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQU9wRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUV6Qjs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQ0FBbUM7SUFOaEQ7UUEyQ1MsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxDQUM5RCxTQUFTLENBQ1YsQ0FBQztRQUdLLHVCQUFrQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdFLGlNQUFpTTtRQUMxTCxlQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsWUFBTyxH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YixLQUFLO2dCQUlLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBZ0JDLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFNQSxrQkFBa0I7c0JBRHhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxudHlwZSBEYXRlQ29tcGFyYXRvciA9IChkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbnR5cGUgS2V5Ym9hcmRFdmVudEhhbmRsZXIgPSAoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuXG5sZXQgbmV4dERhdGVwaWNrZXJJZCA9IDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyLWlubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgdGhpcy4jX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19zZWxlY3RlZERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIFRPRE86IGBhY3RpdmVEYXRlYCBpcyB2ZXJ5IHNpbWlsYXIgdG8gYHNlbGVjdGVkRGF0ZWAgYW5kIGF0IHRoZSB2ZXJ5IGxlYXN0IHNob3VsZCBiZSBhYmxlIHRvIGJlIHVuZGVmaW5lZC4gSG93ZXZlciwgdGhpcyB3b3VsZCB0YWtlIGNvbnNpZGVyYWJsZSByZWZhY3RvcmluZyB0byBkbyBhbmQgdGh1cyBoYXMgYmVlbiBkZWZlcnJlZC5cbiAgcHVibGljIGFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICBwdWJsaWMgYWN0aXZlRGF0ZUlkID0gJyc7XG5cbiAgcHVibGljIHRpdGxlID0gJyc7XG5cbiAgcHVibGljIG1pbk1vZGUgPSAnZGF5JztcbiAgcHVibGljIG1heE1vZGUgPSAneWVhcic7XG4gIHB1YmxpYyBtb250aENvbExpbWl0ID0gMztcbiAgcHVibGljIHllYXJDb2xMaW1pdCA9IDU7XG4gIHB1YmxpYyBkYXRlcGlja2VyTW9kZSA9ICdkYXknO1xuICBwdWJsaWMgeWVhclJhbmdlID0gMjA7XG5cbiAgcHVibGljIGZvcm1hdERheSA9ICdERCc7XG4gIHB1YmxpYyBmb3JtYXRNb250aCA9ICdNTU1NJztcbiAgcHVibGljIGZvcm1hdFllYXIgPSAnWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXREYXlIZWFkZXIgPSAnZGQnO1xuICBwdWJsaWMgZm9ybWF0RGF5VGl0bGUgPSAnTU1NTSBZWVlZJztcbiAgcHVibGljIGZvcm1hdE1vbnRoVGl0bGUgPSAnWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXREYXlMYWJlbCA9ICdkZGRkLCBNTU1NIERvIFlZWVknO1xuICBwdWJsaWMgZm9ybWF0TW9udGhMYWJlbCA9ICdNTU1NIFlZWVknO1xuICBwdWJsaWMgZm9ybWF0WWVhckxhYmVsID0gJ1lZWVknO1xuXG4gIHB1YmxpYyBwcmV2aW91c0xhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBuZXh0TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZGF0ZXBpY2tlcklkID0gYHNreS1kYXRlcGlja2VyLSR7KytuZXh0RGF0ZXBpY2tlcklkfWA7XG5cbiAgcHVibGljIHN0ZXBEYXk6IGFueSA9IHt9O1xuICBwdWJsaWMgc3RlcE1vbnRoOiBhbnkgPSB7fTtcbiAgcHVibGljIHN0ZXBZZWFyOiBhbnkgPSB7fTtcblxuICBwcm90ZWN0ZWQgbW9kZXM6IHN0cmluZ1tdID0gWydkYXknLCAnbW9udGgnLCAneWVhciddO1xuICBwcm90ZWN0ZWQgZGF0ZUZvcm1hdHRlcjogU2t5RGF0ZUZvcm1hdHRlciA9IG5ldyBTa3lEYXRlRm9ybWF0dGVyKCk7XG5cbiAgcHVibGljIHJlZnJlc2hWaWV3SGFuZGxlckRheTogKCgpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjb21wYXJlSGFuZGxlckRheTogRGF0ZUNvbXBhcmF0b3IgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWZyZXNoVmlld0hhbmRsZXJNb250aDogKCgpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjb21wYXJlSGFuZGxlck1vbnRoOiBEYXRlQ29tcGFyYXRvciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlZnJlc2hWaWV3SGFuZGxlclllYXI6ICgoKSA9PiBzdHJpbmcpIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgY29tcGFyZUhhbmRsZXJZZWFyOiBEYXRlQ29tcGFyYXRvciB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bkRheTogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duTW9udGg6IEtleWJvYXJkRXZlbnRIYW5kbGVyIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgaGFuZGxlS2V5ZG93blllYXI6IEtleWJvYXJkRXZlbnRIYW5kbGVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBrZXlzID0gW1xuICAgICdlbnRlcicsXG4gICAgJyAnLFxuICAgICdzcGFjZWJhcicsXG4gICAgJ3BhZ2V1cCcsXG4gICAgJ3BhZ2Vkb3duJyxcbiAgICAnZW5kJyxcbiAgICAnaG9tZScsXG4gICAgJ2Fycm93bGVmdCcsXG4gICAgJ2Fycm93dXAnLFxuICAgICdhcnJvd3JpZ2h0JyxcbiAgICAnYXJyb3dkb3duJyxcbiAgXTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNwcmV2RGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNuZXh0RGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNwcmV2TW9udGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI25leHRNb250aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjcHJldlllYXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI25leHRZZWFyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI19zZWxlY3RlZERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gICNfc3RhcnRpbmdEYXkgPSAwO1xuXG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyU3ZjID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjXG4gICAgICAuZ2V0U3RyaW5ncyh7XG4gICAgICAgIHByZXZEYXk6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfZGF5JyxcbiAgICAgICAgbmV4dERheTogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X2RheScsXG4gICAgICAgIHByZXZNb250aDogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19tb250aCcsXG4gICAgICAgIG5leHRNb250aDogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X21vbnRoJyxcbiAgICAgICAgcHJldlllYXI6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfeWVhcicsXG4gICAgICAgIG5leHRZZWFyOiAnc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfeWVhcicsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzKSA9PiB7XG4gICAgICAgIHRoaXMuI3ByZXZEYXkgPSByZXNvdXJjZXMucHJldkRheTtcbiAgICAgICAgdGhpcy4jbmV4dERheSA9IHJlc291cmNlcy5uZXh0RGF5O1xuICAgICAgICB0aGlzLiNwcmV2TW9udGggPSByZXNvdXJjZXMucHJldk1vbnRoO1xuICAgICAgICB0aGlzLiNuZXh0TW9udGggPSByZXNvdXJjZXMubmV4dE1vbnRoO1xuICAgICAgICB0aGlzLiNwcmV2WWVhciA9IHJlc291cmNlcy5wcmV2WWVhcjtcbiAgICAgICAgdGhpcy4jbmV4dFllYXIgPSByZXNvdXJjZXMubmV4dFllYXI7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcGFyZUhhbmRsZXIoaGFuZGxlcjogRGF0ZUNvbXBhcmF0b3IsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5jb21wYXJlSGFuZGxlclllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJlKFxuICAgIGRhdGUxOiBEYXRlIHwgdW5kZWZpbmVkLFxuICAgIGRhdGUyOiBEYXRlIHwgdW5kZWZpbmVkLFxuICApOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChkYXRlMSA9PT0gdW5kZWZpbmVkIHx8IGRhdGUyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknICYmIHRoaXMuY29tcGFyZUhhbmRsZXJEYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVIYW5kbGVyRGF5KGRhdGUxLCBkYXRlMik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdtb250aCcgJiYgdGhpcy5jb21wYXJlSGFuZGxlck1vbnRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlSGFuZGxlck1vbnRoKGRhdGUxLCBkYXRlMik7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMuY29tcGFyZUhhbmRsZXJZZWFyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlSGFuZGxlclllYXIoZGF0ZTEsIGRhdGUyKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVmcmVzaFZpZXdIYW5kbGVyKGhhbmRsZXI6ICgpID0+IHN0cmluZywgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2hWaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSkge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyRGF5KCk7XG4gICAgICB0aGlzLnByZXZpb3VzTGFiZWwgPSB0aGlzLiNwcmV2RGF5O1xuICAgICAgdGhpcy5uZXh0TGFiZWwgPSB0aGlzLiNuZXh0RGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyTW9udGgpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKCk7XG4gICAgICB0aGlzLnByZXZpb3VzTGFiZWwgPSB0aGlzLiNwcmV2TW9udGg7XG4gICAgICB0aGlzLm5leHRMYWJlbCA9IHRoaXMuI25leHRNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhcikge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMucmVmcmVzaFZpZXdIYW5kbGVyWWVhcigpO1xuICAgICAgdGhpcy5wcmV2aW91c0xhYmVsID0gdGhpcy4jcHJldlllYXI7XG4gICAgICB0aGlzLm5leHRMYWJlbCA9IHRoaXMuI25leHRZZWFyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRLZXlkb3duSGFuZGxlcihoYW5kbGVyOiBLZXlib2FyZEV2ZW50SGFuZGxlciwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25EYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aCA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duWWVhciA9IGhhbmRsZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknICYmIHRoaXMuaGFuZGxlS2V5ZG93bkRheSkge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRGF5KGtleSwgZXZlbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMuaGFuZGxlS2V5ZG93bk1vbnRoKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25Nb250aChrZXksIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInICYmIHRoaXMuaGFuZGxlS2V5ZG93blllYXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93blllYXIoa2V5LCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRhdGVGaWx0ZXIoZGF0ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXR0ZXIuZm9ybWF0KGRhdGUsIGZvcm1hdCk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmUoZGF0ZU9iamVjdDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29tcGFyZShkYXRlT2JqZWN0LmRhdGUsIHRoaXMuYWN0aXZlRGF0ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZUlkID0gZGF0ZU9iamVjdC51aWQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKCF0aGlzLmtleXMuaW5jbHVkZXMoa2V5KSB8fCBldmVudC5zaGlmdEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoa2V5ID09PSAnZW50ZXInIHx8IGtleSA9PT0gJ3NwYWNlYmFyJyB8fCBrZXkgPT09ICcgJykge1xuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh0aGlzLmFjdGl2ZURhdGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5ICYmIChrZXkgPT09ICdhcnJvd3VwJyB8fCBrZXkgPT09ICdhcnJvd2Rvd24nKSkge1xuICAgICAgdGhpcy50b2dnbGVNb2RlKGtleSA9PT0gJ2Fycm93dXAnID8gMSA6IC0xKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGtleSwgZXZlbnQpO1xuICAgICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXRlT2JqZWN0KFxuICAgIGRhdGU6IERhdGUsXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICAgaXNTZWNvbmRhcnk6IGJvb2xlYW4sXG4gICAgaWQ6IHN0cmluZyxcbiAgKTogU2t5RGF0ZXBpY2tlckRhdGUge1xuICAgIGNvbnN0IGN1c3RvbURhdGVNYXRjaCA9IHRoaXMuI2dldEN1c3RvbURhdGUoZGF0ZSk7XG5cbiAgICBjb25zdCBkYXRlT2JqZWN0OiBTa3lEYXRlcGlja2VyRGF0ZSA9IHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSksXG4gICAgICBsYWJlbDogdGhpcy5kYXRlRmlsdGVyKGRhdGUsIGZvcm1hdCksXG4gICAgICBzZWxlY3RlZDpcbiAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5zZWxlY3RlZERhdGUpID09PSAwLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChkYXRlKSxcbiAgICAgIGN1cnJlbnQ6IHRoaXMuY29tcGFyZShkYXRlLCBuZXcgRGF0ZSgpKSA9PT0gMCxcbiAgICAgIHNlY29uZGFyeTogaXNTZWNvbmRhcnksXG4gICAgICB1aWQ6IGlkLFxuICAgICAga2V5RGF0ZTogY3VzdG9tRGF0ZU1hdGNoID8gY3VzdG9tRGF0ZU1hdGNoLmtleURhdGUgOiB1bmRlZmluZWQsXG4gICAgICBrZXlEYXRlVGV4dDogY3VzdG9tRGF0ZU1hdGNoID8gY3VzdG9tRGF0ZU1hdGNoLmtleURhdGVUZXh0IDogW10sXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRlT2JqZWN0O1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNhbGVuZGFyUm93cyhcbiAgICBkYXRlczogU2t5RGF0ZXBpY2tlckRhdGVbXSxcbiAgICBzaXplOiBudW1iZXIsXG4gICk6IFNreURhdGVwaWNrZXJEYXRlW11bXSB7XG4gICAgY29uc3Qgcm93czogU2t5RGF0ZXBpY2tlckRhdGVbXVtdID0gW107XG4gICAgd2hpbGUgKGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MucHVzaChkYXRlcy5zcGxpY2UoMCwgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyBlbnN1cmVzIHRoYXQgbm8gc3RyYW5nZW5lc3MgaGFwcGVucyB3aGVuIGNvbnZlcnRpbmcgYSBkYXRlIHRvIGxvY2FsIHRpbWUuXG4gICovXG4gIHB1YmxpYyBmaXhUaW1lWm9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcblxuICAgIHJldHVybiBuZXdEYXRlO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENhbGVuZGFyKGV2ZW50OiBFdmVudCwgZGF0ZTogRGF0ZSwgY2xvc2VQaWNrZXIgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghY2xvc2VQaWNrZXIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGRhdGU6IERhdGUsIGlzTWFudWFsID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgKTtcblxuICAgIC8qXG4gICAgICAgIE9ubHkgYWN0dWFsbHkgc2VsZWN0IGRhdGUgaWYgaW4gbWluTW9kZSAoZGF5IHBpY2tlciBtb2RlKS5cbiAgICAgICAgT3RoZXJ3aXNlLCBqdXN0IGNoYW5nZSB0aGUgYWN0aXZlIHZpZXcgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJNb2RlID1cbiAgICAgICAgdGhpcy5tb2Rlc1t0aGlzLm1vZGVzLmluZGV4T2YodGhpcy5kYXRlcGlja2VyTW9kZSkgLSAxXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG1vdmVDYWxlbmRhcihldmVudDogRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm1vdmUoZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGV4cGVjdGVkU3RlcDogYW55O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5Jykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwRGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBZZWFyO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKGV4cGVjdGVkU3RlcCkge1xuICAgICAgY29uc3QgeWVhciA9XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgZGlyZWN0aW9uICogKGV4cGVjdGVkU3RlcC55ZWFycyB8fCAwKTtcbiAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyBkaXJlY3Rpb24gKiAoZXhwZWN0ZWRTdGVwLm1vbnRocyB8fCAwKTtcblxuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1vZGVDYWxlbmRhcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlTW9kZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb2RlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAxO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoXG4gICAgICAhKGRpcmVjdGlvbiA9PT0gMSAmJiB0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1heE1vZGUpICYmXG4gICAgICAhKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSAmJiBkaXJlY3Rpb24gPT09IC0xKVxuICAgICkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyTW9kZSA9XG4gICAgICAgIHRoaXMubW9kZXNbdGhpcy5tb2Rlcy5pbmRleE9mKHRoaXMuZGF0ZXBpY2tlck1vZGUpICsgZGlyZWN0aW9uXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFubm91bmNlRGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNhcHRpb24gPSB0aGlzLmRhdGVGaWx0ZXIoZGF0ZSwgZm9ybWF0KTtcbiAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKGNhcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERhdGUgaXMgZGlzYWJsZWQgaWYgaXQgbWVldHMgYW55IG9mIHRoZXNlIGNyaXRlcmlhOlxuICAgKiAxLiBEYXRlIGZhbGxzIG91dHNpZGUgdGhlIG1pbiBvciBtYXggZGF0ZXMgc2V0IGJ5IHRoZSBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZS5cbiAgICogMi4gRGF0ZSBpcyBtYXJrZWQgYXMgZGlzYWJsZWQgaW4gdGhlIGN1c3RvbURhdGVzIGFycmF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1c3RvbURhdGUgPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuICAgIGNvbnN0IG1pbkRhdGVDb21wYXJlID0gdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMubWluRGF0ZSk7XG4gICAgY29uc3QgbWF4RGF0ZUNvbXBhcmUgPSB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5tYXhEYXRlKTtcblxuICAgIHJldHVybiAoXG4gICAgICAobWluRGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtaW5EYXRlQ29tcGFyZSA8IDApIHx8XG4gICAgICAobWF4RGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtYXhEYXRlQ29tcGFyZSA+IDApIHx8XG4gICAgICAhIWN1c3RvbURhdGU/LmRpc2FibGVkXG4gICAgKTtcbiAgfVxuXG4gICNnZXRDdXN0b21EYXRlKGRhdGU6IERhdGUpOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbURhdGVzLmZpbmQoKGN1c3RvbURhdGU6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGF0ZXBpY2tlck1vZGVcIiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWhlYWRlci1sZWZ0XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItYnRuLXByZXZpb3VzXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwcmV2aW91c0xhYmVsXCJcbiAgICAgICAgKGNsaWNrKT1cIm1vdmVDYWxlbmRhcigkZXZlbnQsIC0xKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNoZXZyb25cIiBpY29uPVwiY2hldnJvbi1sZWZ0XCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWhlYWRlci1jZW50ZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2lkXT1cImRhdGVwaWNrZXJJZCArICctdGl0bGUnXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci10aXRsZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVNb2RlQ2FsZW5kYXIoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXRlcGlja2VyTW9kZSA9PT0gbWF4TW9kZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LWJ0bi1kaXNhYmxlZCc6IGRhdGVwaWNrZXJNb2RlID09PSBtYXhNb2RlXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8c3Ryb25nPnt7IHRpdGxlIH19PC9zdHJvbmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1oZWFkZXItcmlnaHRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tbmV4dFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibmV4dExhYmVsXCJcbiAgICAgICAgKGNsaWNrKT1cIm1vdmVDYWxlbmRhcigkZXZlbnQsIDEpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvblwiIGljb249XCJjaGV2cm9uLXJpZ2h0XCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IC8+XG48L2Rpdj5cbiJdfQ==
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { Pipe, inject } from '@angular/core';
|
2
|
+
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
/**
|
5
|
+
* Formats date values according to formatting rules.
|
6
|
+
* @example
|
7
|
+
* ```markup
|
8
|
+
* {{ myDate | skyDatepickerCalendarLabel }}
|
9
|
+
* {{ myDate | skyDatepickerCalendarLabel:'YYYY' }}
|
10
|
+
* ```
|
11
|
+
* @internal
|
12
|
+
*/
|
13
|
+
export class SkyDatepickerCalendarLabelPipe {
|
14
|
+
#datepicker = inject(SkyDatepickerCalendarInnerComponent);
|
15
|
+
#defaultFormat = this.#datepicker.formatDayLabel;
|
16
|
+
/**
|
17
|
+
* Transforms a date value using locale and format rules.
|
18
|
+
* @param value Specifies the date value to transform.
|
19
|
+
* @param format Specifies the format to apply to the transform. The format string is
|
20
|
+
* constructed by a series of symbols that represent date-time values.
|
21
|
+
*/
|
22
|
+
transform(value, format) {
|
23
|
+
let formattedValue = '';
|
24
|
+
if (value && value instanceof Date) {
|
25
|
+
formattedValue = this.#datepicker.dateFilter(value, format || this.#defaultFormat);
|
26
|
+
}
|
27
|
+
return formattedValue;
|
28
|
+
}
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
30
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, isStandalone: true, name: "skyDatepickerCalendarLabel" }); }
|
31
|
+
}
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, decorators: [{
|
33
|
+
type: Pipe,
|
34
|
+
args: [{
|
35
|
+
name: 'skyDatepickerCalendarLabel',
|
36
|
+
standalone: true,
|
37
|
+
}]
|
38
|
+
}] });
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1sYWJlbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXItY2FsZW5kYXItbGFiZWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBRTVGOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxXQUFXLEdBQUcsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDMUQsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBRWpEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLEtBQWMsRUFBRSxNQUFlO1FBQzlDLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLEtBQUssSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDbkMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUMxQyxLQUFLLEVBQ0wsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQzlCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzs4R0FyQlUsOEJBQThCOzRHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBSjFDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDRCQUE0QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRm9ybWF0cyBkYXRlIHZhbHVlcyBhY2NvcmRpbmcgdG8gZm9ybWF0dGluZyBydWxlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBtYXJrdXBcbiAqIHt7IG15RGF0ZSB8IHNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsIH19XG4gKiB7eyBteURhdGUgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbDonWVlZWScgfX1cbiAqIGBgYFxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICNkYXRlcGlja2VyID0gaW5qZWN0KFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50KTtcbiAgI2RlZmF1bHRGb3JtYXQgPSB0aGlzLiNkYXRlcGlja2VyLmZvcm1hdERheUxhYmVsO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgZGF0ZSB2YWx1ZSB1c2luZyBsb2NhbGUgYW5kIGZvcm1hdCBydWxlcy5cbiAgICogQHBhcmFtIHZhbHVlIFNwZWNpZmllcyB0aGUgZGF0ZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBmb3JtYXQgU3BlY2lmaWVzIHRoZSBmb3JtYXQgdG8gYXBwbHkgdG8gdGhlIHRyYW5zZm9ybS4gVGhlIGZvcm1hdCBzdHJpbmcgaXNcbiAgICogY29uc3RydWN0ZWQgYnkgYSBzZXJpZXMgb2Ygc3ltYm9scyB0aGF0IHJlcHJlc2VudCBkYXRlLXRpbWUgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogdW5rbm93biwgZm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSAnJztcblxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gdGhpcy4jZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRWYWx1ZTtcbiAgfVxufVxuIl19
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
2
2
|
import { SkyDateFormatter } from './date-formatter';
|
3
|
-
import { SkyDatepickerAdapterService } from './datepicker-adapter.service';
|
4
3
|
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
5
4
|
import * as i0 from "@angular/core";
|
6
5
|
import * as i1 from "./datepicker-config.service";
|
@@ -63,11 +62,11 @@ export class SkyDatepickerCalendarComponent {
|
|
63
62
|
}
|
64
63
|
}
|
65
64
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: i1.SkyDatepickerConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: { customDates: "customDates", isDaypickerWaiting: "isDaypickerWaiting", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate", startingDay: "startingDay" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange", calendarModeChange: "calendarModeChange", selectedDateChange: "selectedDateChange" },
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: SkyDatepickerCalendarComponent, selector: "sky-datepicker-calendar", inputs: { customDates: "customDates", isDaypickerWaiting: "isDaypickerWaiting", minDate: "minDate", maxDate: "maxDate", selectedDate: "selectedDate", startingDay: "startingDay" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange", calendarModeChange: "calendarModeChange", selectedDateChange: "selectedDateChange" }, viewQueries: [{ propertyName: "datepicker", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [customDates]=\"customDates\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectedDate]=\"selectedDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange($event)\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n <div\n class=\"sky-datepicker-calendar-table-container\"\n autofocus\n tabindex=\"0\"\n (keydown)=\"datepicker?.onKeydown($event)\"\n >\n <sky-daypicker\n *ngIf=\"datepicker?.datepickerMode === 'day'\"\n [customDates]=\"customDates\"\n [isWaiting]=\"isDaypickerWaiting\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n ></sky-daypicker>\n <sky-monthpicker\n *ngIf=\"datepicker?.datepickerMode === 'month'\"\n ></sky-monthpicker>\n <sky-yearpicker\n *ngIf=\"datepicker?.datepickerMode === 'year'\"\n ></sky-yearpicker>\n </div>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: ["customDates", "startingDay", "minDate", "maxDate", "selectedDate"], outputs: ["selectedDateChange", "calendarModeChange"] }, { kind: "component", type: i4.SkyDayPickerComponent, selector: "sky-daypicker", inputs: ["customDates", "isWaiting"], outputs: ["calendarDateRangeChange"] }, { kind: "component", type: i5.SkyMonthPickerComponent, selector: "sky-monthpicker" }, { kind: "component", type: i6.SkyYearPickerComponent, selector: "sky-yearpicker" }] }); }
|
67
66
|
}
|
68
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{
|
69
68
|
type: Component,
|
70
|
-
args: [{ selector: 'sky-datepicker-calendar',
|
69
|
+
args: [{ selector: 'sky-datepicker-calendar', template: "<div class=\"sky-datepicker-calendar\">\n <sky-datepicker-inner\n [customDates]=\"customDates\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selectedDate]=\"selectedDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange($event)\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n <div\n class=\"sky-datepicker-calendar-table-container\"\n autofocus\n tabindex=\"0\"\n (keydown)=\"datepicker?.onKeydown($event)\"\n >\n <sky-daypicker\n *ngIf=\"datepicker?.datepickerMode === 'day'\"\n [customDates]=\"customDates\"\n [isWaiting]=\"isDaypickerWaiting\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n ></sky-daypicker>\n <sky-monthpicker\n *ngIf=\"datepicker?.datepickerMode === 'month'\"\n ></sky-monthpicker>\n <sky-yearpicker\n *ngIf=\"datepicker?.datepickerMode === 'year'\"\n ></sky-yearpicker>\n </div>\n </sky-datepicker-inner>\n</div>\n", styles: [".sky-datepicker-calendar{display:block}\n"] }]
|
71
70
|
}], ctorParameters: () => [{ type: i1.SkyDatepickerConfigService }], propDecorators: { customDates: [{
|
72
71
|
type: Input
|
73
72
|
}], isDaypickerWaiting: [{
|
@@ -93,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
93
92
|
static: true,
|
94
93
|
}]
|
95
94
|
}] } });
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7QUFJNUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sOEJBQThCO0lBaUJ6QyxvRUFBb0U7SUFDcEUsSUFDVyxXQUFXLENBQUMsS0FBeUI7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFxQkQsVUFBVSxDQUEwQjtJQUVwQyxhQUFhLENBQUs7SUFFbEIsT0FBTyxDQUE2QjtJQUVwQyxZQUFZLE1BQWtDO1FBeEJ2Qyw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFFOUMsQ0FBQztRQUdHLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHaEQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLENBQU8sU0FBUyxDQUFDLENBQUM7UUFRcEQsU0FBSSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEMsZUFBVSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUVwQyxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUtoQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0seUJBQXlCLENBQzlCLEtBQThDO1FBRTlDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEtBQWE7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsS0FBVztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBdUI7UUFDdkMsSUFDRSxLQUFLLEtBQUssU0FBUztZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQy9CLElBQUksQ0FBQyxVQUFVLEVBQUUsaUJBQWlCO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQ2pFLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7OEdBN0ZVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG9iQXNDOUIsbUNBQW1DLDJCQUN0QyxtQ0FBbUMsMkNDN0Q3Qyw2Z0NBK0JBOzsyRkRUYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UseUJBQXlCOytGQU01QixXQUFXO3NCQURqQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUtDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBS0ssV0FBVztzQkFEckIsS0FBSztnQkFVQyx1QkFBdUI7c0JBRDdCLE1BQU07Z0JBTUEsa0JBQWtCO3NCQUR4QixNQUFNO2dCQUlBLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFPQSxVQUFVO3NCQUpoQixTQUFTO3VCQUFDLG1DQUFtQyxFQUFFO3dCQUM5QyxJQUFJLEVBQUUsbUNBQW1DO3dCQUN6QyxNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNEYXlwaWNrZXJXYWl0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgZnJvbSAwLTYgKDA9U3VuZGF5LCAuLi4sIDY9U2F0dXJkYXkpICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RhcnRpbmdEYXkoc3RhcnQ6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zdGFydGluZ0RheSA9IHN0YXJ0ID8/IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nRGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydGluZ0RheTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB8IHVuZGVmaW5lZFxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhck1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4odW5kZWZpbmVkKTtcblxuICBAVmlld0NoaWxkKFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50LCB7XG4gICAgcmVhZDogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIF9ub3c6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICNmb3JtYXR0ZXIgPSBuZXcgU2t5RGF0ZUZvcm1hdHRlcigpO1xuXG4gICNfc3RhcnRpbmdEYXkgPSAwO1xuXG4gICNjb25maWc6IFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLiNjb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jb25maWd1cmVPcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlT3B0aW9ucygpOiB2b2lkIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRoaXMuI2NvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhckRhdGVSYW5nZUNoYW5nZShcbiAgICBldmVudDogU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJNb2RlQ2hhbmdlKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyTW9kZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkRGF0ZUNoYW5nZShldmVudDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLiNmb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXI/LmNvbXBhcmVIYW5kbGVyRGF5ICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY29tcGFyZUhhbmRsZXJEYXkodmFsdWUsIHRoaXMuc2VsZWN0ZWREYXRlKSA9PT0gMFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLiNmb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5kYXRlcGlja2VyPy5zZWxlY3QodmFsdWUsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyPy5zZWxlY3QobmV3IERhdGUoKSwgZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyXCI+XG4gIDxza3ktZGF0ZXBpY2tlci1pbm5lclxuICAgIFtjdXN0b21EYXRlc109XCJjdXN0b21EYXRlc1wiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVcIlxuICAgIFtzdGFydGluZ0RheV09XCJzdGFydGluZ0RheVwiXG4gICAgKGNhbGVuZGFyTW9kZUNoYW5nZSk9XCJvbkNhbGVuZGFyTW9kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoc2VsZWN0ZWREYXRlQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRlQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci10YWJsZS1jb250YWluZXJcIlxuICAgICAgYXV0b2ZvY3VzXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgKGtleWRvd24pPVwiZGF0ZXBpY2tlcj8ub25LZXlkb3duKCRldmVudClcIlxuICAgID5cbiAgICAgIDxza3ktZGF5cGlja2VyXG4gICAgICAgICpuZ0lmPVwiZGF0ZXBpY2tlcj8uZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknXCJcbiAgICAgICAgW2N1c3RvbURhdGVzXT1cImN1c3RvbURhdGVzXCJcbiAgICAgICAgW2lzV2FpdGluZ109XCJpc0RheXBpY2tlcldhaXRpbmdcIlxuICAgICAgICAoY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UpPVwib25DYWxlbmRhckRhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3NreS1kYXlwaWNrZXI+XG4gICAgICA8c2t5LW1vbnRocGlja2VyXG4gICAgICAgICpuZ0lmPVwiZGF0ZXBpY2tlcj8uZGF0ZXBpY2tlck1vZGUgPT09ICdtb250aCdcIlxuICAgICAgPjwvc2t5LW1vbnRocGlja2VyPlxuICAgICAgPHNreS15ZWFycGlja2VyXG4gICAgICAgICpuZ0lmPVwiZGF0ZXBpY2tlcj8uZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJ1wiXG4gICAgICA+PC9za3kteWVhcnBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9za3ktZGF0ZXBpY2tlci1pbm5lcj5cbjwvZGl2PlxuIl19
|