@porscheinformatik/clr-addons 15.0.1 → 15.2.1

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.
Files changed (51) hide show
  1. package/clr-addons.module.d.ts +2 -1
  2. package/daterangepicker/daterange.constants.d.ts +21 -0
  3. package/daterangepicker/daterangepicker.module.d.ts +17 -0
  4. package/daterangepicker/directives/abstract-container.component.d.ts +53 -0
  5. package/daterangepicker/directives/datepicker/datepicker.component.d.ts +65 -0
  6. package/daterangepicker/directives/daterangepicker/daterangepicker.directive.d.ts +127 -0
  7. package/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.d.ts +118 -0
  8. package/daterangepicker/directives/if-daterange-error.directive.d.ts +40 -0
  9. package/daterangepicker/index.d.ts +13 -0
  10. package/daterangepicker/interfaces/daterange-preset.interface.d.ts +8 -0
  11. package/daterangepicker/interfaces/daterange.interface.d.ts +12 -0
  12. package/daterangepicker/models/day.model.d.ts +80 -0
  13. package/daterangepicker/models/popover-positions.model.d.ts +20 -0
  14. package/daterangepicker/providers/daterange-control-state.service.d.ts +42 -0
  15. package/daterangepicker/providers/daterange-parsing.service.d.ts +66 -0
  16. package/daterangepicker/providers/daterange.service.d.ts +38 -0
  17. package/daterangepicker/providers/opened-datepickers-tracker.service.d.ts +20 -0
  18. package/daterangepicker/validators/daterange-max.validator.d.ts +32 -0
  19. package/daterangepicker/validators/daterange-min.validator.d.ts +32 -0
  20. package/daterangepicker/validators/daterange-order.validator.d.ts +29 -0
  21. package/daterangepicker/validators/daterange-required.validator.d.ts +29 -0
  22. package/dropdown/clr-dropdown-overflow.directive.d.ts +4 -3
  23. package/esm2020/clr-addons.module.mjs +8 -4
  24. package/esm2020/daterangepicker/daterange.constants.mjs +27 -0
  25. package/esm2020/daterangepicker/daterangepicker.module.mjs +58 -0
  26. package/esm2020/daterangepicker/directives/abstract-container.component.mjs +104 -0
  27. package/esm2020/daterangepicker/directives/datepicker/datepicker.component.mjs +97 -0
  28. package/esm2020/daterangepicker/directives/daterangepicker/daterangepicker.directive.mjs +256 -0
  29. package/esm2020/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.mjs +251 -0
  30. package/esm2020/daterangepicker/directives/if-daterange-error.directive.mjs +94 -0
  31. package/esm2020/daterangepicker/index.mjs +14 -0
  32. package/esm2020/daterangepicker/interfaces/daterange-preset.interface.mjs +2 -0
  33. package/esm2020/daterangepicker/interfaces/daterange.interface.mjs +2 -0
  34. package/esm2020/daterangepicker/models/day.model.mjs +99 -0
  35. package/esm2020/daterangepicker/models/popover-positions.model.mjs +66 -0
  36. package/esm2020/daterangepicker/providers/daterange-control-state.service.mjs +62 -0
  37. package/esm2020/daterangepicker/providers/daterange-parsing.service.mjs +206 -0
  38. package/esm2020/daterangepicker/providers/daterange.service.mjs +54 -0
  39. package/esm2020/daterangepicker/providers/opened-datepickers-tracker.service.mjs +36 -0
  40. package/esm2020/daterangepicker/validators/daterange-max.validator.mjs +85 -0
  41. package/esm2020/daterangepicker/validators/daterange-min.validator.mjs +85 -0
  42. package/esm2020/daterangepicker/validators/daterange-order.validator.mjs +75 -0
  43. package/esm2020/daterangepicker/validators/daterange-required.validator.mjs +71 -0
  44. package/esm2020/dropdown/clr-dropdown-overflow.directive.mjs +15 -11
  45. package/esm2020/index.mjs +3 -2
  46. package/fesm2015/clr-addons.mjs +1920 -264
  47. package/fesm2015/clr-addons.mjs.map +1 -1
  48. package/fesm2020/clr-addons.mjs +1900 -264
  49. package/fesm2020/clr-addons.mjs.map +1 -1
  50. package/index.d.ts +1 -0
  51. package/package.json +3 -3
@@ -0,0 +1,66 @@
1
+ import { InputDateDisplayFormat } from '../daterange.constants';
2
+ import { NullableDaterange } from '../interfaces/daterange.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Daterange parsing service.
6
+ * Heavy inspired by `date-io.service.ts` from Clarity.
7
+ * https://github.com/vmware-clarity/ng-clarity/blob/a21fe726fe91ae3c929b8f016359afe354bb89c6/projects/angular/src/forms/datepicker/providers/date-io.service.ts
8
+ */
9
+ export declare class DaterangeParsingService {
10
+ private readonly locale;
11
+ readonly localeDisplayFormat: InputDateDisplayFormat;
12
+ readonly localeDelimiter: Array<string>;
13
+ /** Locale format. */
14
+ get localeFormat(): string;
15
+ constructor(locale: string);
16
+ /**
17
+ * Convert daterange to locale friendly text.
18
+ * @param daterange - Daterange.
19
+ * @param separator - Separator between 'from' and 'to' dates.
20
+ * @returns Friendly daterange text.
21
+ */
22
+ toLocaleString(daterange: NullableDaterange, separator?: string): string;
23
+ /**
24
+ * Convert date to locale display format string.
25
+ * @param date - Javascript Date object.
26
+ * @returns Locale display format string.
27
+ */
28
+ private toLocaleDisplayFormatString;
29
+ /**
30
+ * String padding with zeros.
31
+ * @param num - Number to pad.
32
+ * @returns Padded string.
33
+ */
34
+ private pad;
35
+ /**
36
+ * Parse daterange string to daterange object.
37
+ * @param daterangeString - Daterange string.
38
+ * @param separator - Separator text.
39
+ * @returns Daterange object.
40
+ */
41
+ parse(daterangeString: string, separator?: string): NullableDaterange;
42
+ /**
43
+ * Get `DayModel` from date string.
44
+ * @param dateString - Date string.
45
+ * @returns DayModel.
46
+ */
47
+ private getDayModelFromDateString;
48
+ /**
49
+ * Get `DayModel` from date string parts.
50
+ * @param yearString - Year string.
51
+ * @param monthString - Month string.
52
+ * @param dateString - Date string.
53
+ * @returns DayModel.
54
+ */
55
+ private getDayModelFromDateParts;
56
+ /**
57
+ * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.
58
+ * Window of 80 years before and 20 years after the present year.
59
+ * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js
60
+ * @param year - Year.
61
+ * @returns Four-digit year.
62
+ */
63
+ private parseToFourDigitYear;
64
+ static ɵfac: i0.ɵɵFactoryDeclaration<DaterangeParsingService, never>;
65
+ static ɵprov: i0.ɵɵInjectableDeclaration<DaterangeParsingService>;
66
+ }
@@ -0,0 +1,38 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { NullableDaterange } from '../interfaces/daterange.interface';
3
+ import { NullableDayModel } from '../models/day.model';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Daterange service.
7
+ * Keeps track of daterange related values.
8
+ */
9
+ export declare class DaterangeService {
10
+ /** Minimum date that can be selected. */
11
+ minDate: NullableDayModel;
12
+ /** Maximum date that can be selected. */
13
+ maxDate: NullableDayModel;
14
+ private _selectedDaterange;
15
+ /**
16
+ * Selected daterange value.
17
+ * @returns Selected daterange value.
18
+ */
19
+ get selectedDaterange(): NullableDaterange;
20
+ /**
21
+ * Set selected daterange value.
22
+ * @param value - New selected daterange value.
23
+ * @param triggerEvent - Trigger change event (default true).
24
+ */
25
+ updateSelectedDaterange(value: NullableDaterange, triggerEvent?: boolean): void;
26
+ /**
27
+ * Event triggered when value changes.
28
+ */
29
+ valueChange: EventEmitter<import("../interfaces/daterange.interface").Daterange>;
30
+ /**
31
+ * Checks if daterange is valid.
32
+ * Daterange is considered invalid when it's empty, or when one of it's properties is absent.
33
+ * @returns Wether daterange is valid.
34
+ */
35
+ isValid(): boolean;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<DaterangeService, never>;
37
+ static ɵprov: i0.ɵɵInjectableDeclaration<DaterangeService>;
38
+ }
@@ -0,0 +1,20 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Keeps track of how many Clarity Datepicker there are open.
5
+ * This is needed for the ClrDaterangepickerContainerComponent, to know when to close the popover.
6
+ */
7
+ export declare class OpenedDatepickersTrackerService {
8
+ private openedDatepickersCount;
9
+ /**
10
+ * Event triggered when value changes.
11
+ */
12
+ valueChange: EventEmitter<boolean>;
13
+ /**
14
+ * Tracks an opened datepicker.
15
+ * @param opened - Opened state.
16
+ */
17
+ track(opened: boolean): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<OpenedDatepickersTrackerService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<OpenedDatepickersTrackerService>;
20
+ }
@@ -0,0 +1,32 @@
1
+ import { AbstractControl, ValidationErrors, Validator } from '@angular/forms';
2
+ import { NullableDaterange } from '../interfaces/daterange.interface';
3
+ import { DaterangeService } from '../providers/daterange.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Validator for daterangepicker to validate that 'to' date is not after 'max' value.
7
+ * Otherwise will throw corresponding `max` validation error.
8
+ *
9
+ * Validator is applied to the ClrDaterangepickerDirective with `max` attribute.
10
+ * Or when set manually with `clrDaterangeMax` attribute.
11
+ *
12
+ * Validator is active by default when applied. It can be disabled with: `[clrDaterangeMax]="false"`
13
+ */
14
+ export declare class ClrDaterangeMaxValidator implements Validator {
15
+ private readonly daterangeService;
16
+ /** Validation error name. */
17
+ static readonly validationErrorName = "max";
18
+ private _active;
19
+ constructor(daterangeService: DaterangeService);
20
+ /**
21
+ * Disable validator by setting value to `false`.
22
+ */
23
+ set active(active: boolean | string | undefined | null);
24
+ /**
25
+ * Validator method. Method that performs synchronous validation against the provided control.
26
+ * @param control - The control to validate against.
27
+ * @returns A map of validation errors if validation fails, otherwise null.
28
+ */
29
+ validate(control: AbstractControl<NullableDaterange, any>): ValidationErrors | null;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrDaterangeMaxValidator, [{ optional: true; }]>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClrDaterangeMaxValidator, "[clrDaterangepicker][max], [clrDaterangeMax]", never, { "active": "clrDaterangeMax"; }, {}, never, never, false, never>;
32
+ }
@@ -0,0 +1,32 @@
1
+ import { AbstractControl, ValidationErrors, Validator } from '@angular/forms';
2
+ import { NullableDaterange } from '../interfaces/daterange.interface';
3
+ import { DaterangeService } from '../providers/daterange.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Validator for daterangepicker to validate that 'from' date is not before 'min' value.
7
+ * Otherwise will throw corresponding `min` validation error.
8
+ *
9
+ * Validator is applied to the ClrDaterangepickerDirective with `min` attribute.
10
+ * Or when set manually with `clrDaterangeMin` attribute.
11
+ *
12
+ * Validator is active by default when applied. It can be disabled with: `[clrDaterangeMin]="false"`
13
+ */
14
+ export declare class ClrDaterangeMinValidator implements Validator {
15
+ private readonly daterangeService;
16
+ /** Validation error name. */
17
+ static readonly validationErrorName = "min";
18
+ private _active;
19
+ constructor(daterangeService: DaterangeService);
20
+ /**
21
+ * Disable validator by setting value to `false`.
22
+ */
23
+ set active(active: boolean | string | undefined | null);
24
+ /**
25
+ * Validator method. Method that performs synchronous validation against the provided control.
26
+ * @param control - The control to validate against.
27
+ * @returns A map of validation errors if validation fails, otherwise null.
28
+ */
29
+ validate(control: AbstractControl<NullableDaterange, any>): ValidationErrors | null;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrDaterangeMinValidator, [{ optional: true; }]>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClrDaterangeMinValidator, "[clrDaterangepicker][min], [clrDaterangeMin]", never, { "active": "clrDaterangeMin"; }, {}, never, never, false, never>;
32
+ }
@@ -0,0 +1,29 @@
1
+ import { AbstractControl, ValidationErrors, Validator } from '@angular/forms';
2
+ import { NullableDaterange } from '../interfaces/daterange.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Validator for daterangepicker to validate that 'from' date is before 'to' date.
6
+ * Otherwise will throw `fromIsAfterTo` validation error.
7
+ *
8
+ * This validator is applied automatically on ClrDaterangepickerDirective.
9
+ * Or when set manually with `clrDaterangeOrder` attribute.
10
+ *
11
+ * Validator is active by default when applied. It can be disabled with: `[clrDaterangeOrder]="false"`
12
+ */
13
+ export declare class ClrDaterangeOrderValidator implements Validator {
14
+ /** Validation error name. */
15
+ static readonly validationErrorName = "fromIsAfterTo";
16
+ private _active;
17
+ /**
18
+ * Disable validator by setting value to `false`.
19
+ */
20
+ set active(active: boolean | string | undefined | null);
21
+ /**
22
+ * Validator method. Method that performs synchronous validation against the provided control.
23
+ * @param control - The control to validate against.
24
+ * @returns A map of validation errors if validation fails, otherwise null.
25
+ */
26
+ validate(control: AbstractControl<NullableDaterange, any>): ValidationErrors | null;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrDaterangeOrderValidator, never>;
28
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClrDaterangeOrderValidator, "[clrDaterangepicker], [clrDaterangeOrder]", never, { "active": "clrDaterangeOrder"; }, {}, never, never, false, never>;
29
+ }
@@ -0,0 +1,29 @@
1
+ import { AbstractControl, ValidationErrors, Validator } from '@angular/forms';
2
+ import { NullableDaterange } from '../interfaces/daterange.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Validator for daterangepicker to validate that 'from' *AND* 'to' date are not `null`.
6
+ * Will throw `required` validation error.
7
+ *
8
+ * Validator is applied to the ClrDaterangepickerDirective with `required` attribute.
9
+ * Or when set manually with `clrDaterangeRequired` attribute.
10
+ *
11
+ * Validator is active by default when applied. It can be disabled with: `[clrDaterangeRequired]="false"`
12
+ */
13
+ export declare class ClrDaterangeRequiredValidator implements Validator {
14
+ /** Validation error name. */
15
+ static readonly validationErrorName = "required";
16
+ private _active;
17
+ /**
18
+ * Disable validator by setting value to `false`.
19
+ */
20
+ set active(active: boolean | string | undefined | null);
21
+ /**
22
+ * Validator method. Method that performs synchronous validation against the provided control.
23
+ * @param control - The control to validate against.
24
+ * @returns A map of validation errors if validation fails, otherwise null.
25
+ */
26
+ validate(control: AbstractControl<NullableDaterange, any>): ValidationErrors | null;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrDaterangeRequiredValidator, never>;
28
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClrDaterangeRequiredValidator, "[clrDaterangepicker][required], [clrDaterangeRequired]", never, { "active": "clrDaterangeRequired"; }, {}, never, never, false, never>;
29
+ }
@@ -1,6 +1,6 @@
1
- import { AfterContentInit, ElementRef, OnDestroy } from '@angular/core';
1
+ import { AfterContentChecked, ElementRef, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class ClrDropdownOverflowDirective implements AfterContentInit, OnDestroy {
3
+ export declare class ClrDropdownOverflowDirective implements AfterContentChecked, OnDestroy {
4
4
  private elRef;
5
5
  clrDropdownMenuMaxHeight: string | number;
6
6
  clrDropdownMenuItemMinHeight: string | number;
@@ -8,8 +8,9 @@ export declare class ClrDropdownOverflowDirective implements AfterContentInit, O
8
8
  readonly defaultItemMinHeightRem = 1.5;
9
9
  readonly marginBottomRem = 0.1;
10
10
  private destroy$;
11
+ private alreadyChecked;
11
12
  constructor(elRef: ElementRef);
12
- ngAfterContentInit(): void;
13
+ ngAfterContentChecked(): void;
13
14
  ngOnDestroy(): void;
14
15
  private applyDropdownOverflowStyles;
15
16
  private removeDropdownOverflowStyles;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2018-2022 Porsche Informatik. All Rights Reserved.
2
+ * Copyright (c) 2018-2023 Porsche Informatik. All Rights Reserved.
3
3
  * This software is released under MIT license.
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
@@ -33,6 +33,7 @@ import { ClrFormModule } from './abstract-form-component/form.module';
33
33
  import { ClrDropdownOverflowModule } from './dropdown';
34
34
  import { ClrDatagridStatePersistenceModule, ClrEnumFilterModule } from './datagrid';
35
35
  import { ClrDateFilterModule } from './datagrid/date-filter/date-filter.module';
36
+ import { ClrDaterangepickerModule } from './daterangepicker/daterangepicker.module';
36
37
  import * as i0 from "@angular/core";
37
38
  export class ClrAddonsModule {
38
39
  }
@@ -66,7 +67,8 @@ ClrAddonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
66
67
  ClrDropdownOverflowModule,
67
68
  ClrDatagridStatePersistenceModule,
68
69
  ClrEnumFilterModule,
69
- ClrDateFilterModule] });
70
+ ClrDateFilterModule,
71
+ ClrDaterangepickerModule] });
70
72
  ClrAddonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrAddonsModule, imports: [ClrViewEditSectionModule,
71
73
  ClrPagerModule,
72
74
  ClrDotPagerModule,
@@ -96,7 +98,8 @@ ClrAddonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
96
98
  ClrDropdownOverflowModule,
97
99
  ClrDatagridStatePersistenceModule,
98
100
  ClrEnumFilterModule,
99
- ClrDateFilterModule] });
101
+ ClrDateFilterModule,
102
+ ClrDaterangepickerModule] });
100
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrAddonsModule, decorators: [{
101
104
  type: NgModule,
102
105
  args: [{
@@ -131,7 +134,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
131
134
  ClrDatagridStatePersistenceModule,
132
135
  ClrEnumFilterModule,
133
136
  ClrDateFilterModule,
137
+ ClrDaterangepickerModule,
134
138
  ],
135
139
  }]
136
140
  }] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xyLWFkZG9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9jbHItYWRkb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0s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LG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLHlCQUF5Qjt3QkFDekIsaUNBQWlDO3dCQUNqQyxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xyQmFja0J1dHRvbk1vZHVsZSB9IGZyb20gJy4vYmFjay1idXR0b24vYmFjay1idXR0b24ubW9kdWxlJztcbmltcG9ydCB7IENsckJyZWFkY3J1bWJNb2R1bGUgfSBmcm9tICcuL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyQ29sbGFwc2VFeHBhbmRTZWN0aW9uTW9kdWxlIH0gZnJvbSAnLi9jb2xsYXBzZS1leHBhbmQtc2VjdGlvbi9jb2xsYXBzZS1leHBhbmQtc2VjdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyQ29udGVudFBhbmVsTW9kdWxlIH0gZnJvbSAnLi9jb250ZW50LXBhbmVsL2NvbnRlbnQtcGFuZWwubW9kdWxlJztcbmltcG9ydCB7IENsckRhdGFMaXN0VmFsaWRhdG9yTW9kdWxlIH0gZnJvbSAnLi9kYXRhLWxpc3QtdmFsaWRhdG9yL2RhdGEtbGlzdC12YWxpZGF0b3IubW9kdWxlJztcbmltcG9ydCB7IENsckRhdGVUaW1lTW9kdWxlIH0gZnJvbSAnLi9kYXRlLXRpbWUtY29udGFpbmVyL2RhdGUtdGltZS1tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyRG90UGFnZXJNb2R1bGUgfSBmcm9tICcuL2RvdC1wYWdlci9kb3QtcGFnZXIubW9kdWxlJztcbmltcG9ydCB7IENsckZsb3dCYXJNb2R1bGUgfSBmcm9tICcuL2Zsb3ctYmFyL2Zsb3ctYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJHZW5lcmljUXVpY2tMaXN0TW9kdWxlIH0gZnJvbSAnLi9nZW5lcmljLXF1aWNrLWxpc3QvZ2VuZXJpYy1xdWljay1saXN0Lm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJMZXR0ZXJBdmF0YXJNb2R1bGUgfSBmcm9tICcuL2xldHRlci1hdmF0YXIvbGV0dGVyLWF2YXRhci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyTWFpbk5hdkdyb3VwTW9kdWxlIH0gZnJvbSAnLi9tYWluLW5hdi1ncm91cC9tYWluLW5hdi1ncm91cC5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyTXVsdGlsaW5ndWFsTW9kdWxlIH0gZnJvbSAnLi9tdWx0aWxpbmd1YWwvbXVsdGlsaW5ndWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJOb3RpZmljYXRpb25Nb2R1bGUgfSBmcm9tICcuL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IENsck51bWVyaWNGaWVsZE1vZHVsZSB9IGZyb20gJy4vbnVtZXJpY2ZpZWxkL251bWVyaWMtZmllbGQubW9kdWxlJztcbmltcG9ydCB7IENsclBhZ2VkU2VhcmNoUmVzdWx0TGlzdE1vZHVsZSB9IGZyb20gJy4vcGFnZWQtc2VhcmNoLXJlc3VsdC1saXN0L3BhZ2VkLXNlYXJjaC1yZXN1bHQtbGlzdC5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyUGFnZXJNb2R1bGUgfSBmcm9tICcuL3BhZ2VyL3BhZ2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICcuL3Byb2dyZXNzLXNwaW5uZXIvcHJvZ3Jlc3Mtc3Bpbm5lci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyUXVpY2tMaXN0TW9kdWxlIH0gZnJvbSAnLi9xdWljay1saXN0L3F1aWNrLWxpc3QubW9kdWxlJztcbmltcG9ydCB7IENsclNlYXJjaEZpZWxkTW9kdWxlIH0gZnJvbSAnLi9zZWFyY2hmaWVsZC9zZWFyY2gtZmllbGQubW9kdWxlJztcbmltcG9ydCB7IENsclRyZWV0YWJsZU1vZHVsZSB9IGZyb20gJy4vdHJlZXRhYmxlL3RyZWV0YWJsZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyVmlld0VkaXRTZWN0aW9uTW9kdWxlIH0gZnJvbSAnLi92aWV3LWVkaXQtc2VjdGlvbi92aWV3LWVkaXQtc2VjdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xySGlzdG9yeU1vZHVsZSB9IGZyb20gJy4vaGlzdG9yeS9oaXN0b3J5Lm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJBdXRvY29tcGxldGVPZmZNb2R1bGUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1vZmYvYXV0b2NvbXBsZXRlLW9mZi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyQnJhbmRBdmF0YXJNb2R1bGUgfSBmcm9tICcuL2JyYW5kLWF2YXRhci9icmFuZC1hdmF0YXIubW9kdWxlJztcbmltcG9ydCB7IENsckxvY2F0aW9uQmFyTW9kdWxlIH0gZnJvbSAnLi9sb2NhdGlvbi1iYXIvbG9jYXRpb24tYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJGb3JtTW9kdWxlIH0gZnJvbSAnLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9mb3JtLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJEcm9wZG93bk92ZXJmbG93TW9kdWxlIH0gZnJvbSAnLi9kcm9wZG93bic7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2R1bGUsIENsckVudW1GaWx0ZXJNb2R1bGUgfSBmcm9tICcuL2RhdGFncmlkJztcbmltcG9ydCB7IENsckRhdGVGaWx0ZXJNb2R1bGUgfSBmcm9tICcuL2RhdGFncmlkL2RhdGUtZmlsdGVyL2RhdGUtZmlsdGVyLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtcbiAgICBDbHJWaWV3RWRpdFNlY3Rpb25Nb2R1bGUsXG4gICAgQ2xyUGFnZXJNb2R1bGUsXG4gICAgQ2xyRG90UGFnZXJNb2R1bGUsXG4gICAgQ2xyUGFnZWRTZWFyY2hSZXN1bHRMaXN0TW9kdWxlLFxuICAgIENsckNvbGxhcHNlRXhwYW5kU2VjdGlvbk1vZHVsZSxcbiAgICBDbHJCcmVhZGNydW1iTW9kdWxlLFxuICAgIENsck1haW5OYXZHcm91cE1vZHVsZSxcbiAgICBDbHJDb250ZW50UGFuZWxNb2R1bGUsXG4gICAgQ2xyTm90aWZpY2F0aW9uTW9kdWxlLFxuICAgIENsckZsb3dCYXJNb2R1bGUsXG4gICAgQ2xyQmFja0J1dHRvbk1vZHVsZSxcbiAgICBDbHJOdW1lcmljRmllbGRNb2R1bGUsXG4gICAgQ2xyU2VhcmNoRmllbGRNb2R1bGUsXG4gICAgQ2xyVHJlZXRhYmxlTW9kdWxlLFxuICAgIENsclByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBDbHJEYXRlVGltZU1vZHVsZSxcbiAgICBDbHJRdWlja0xpc3RNb2R1bGUsXG4gICAgQ2xyTGV0dGVyQXZhdGFyTW9kdWxlLFxuICAgIENsck11bHRpbGluZ3VhbE1vZHVsZSxcbiAgICBDbHJHZW5lcmljUXVpY2tMaXN0TW9kdWxlLFxuICAgIENsckRhdGFMaXN0VmFsaWRhdG9yTW9kdWxlLFxuICAgIENsckhpc3RvcnlNb2R1bGUsXG4gICAgQ2xyQXV0b2NvbXBsZXRlT2ZmTW9kdWxlLFxuICAgIENsckJyYW5kQXZhdGFyTW9kdWxlLFxuICAgIENsckxvY2F0aW9uQmFyTW9kdWxlLFxuICAgIENsckZvcm1Nb2R1bGUsXG4gICAgQ2xyRHJvcGRvd25PdmVyZmxvd01vZHVsZSxcbiAgICBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2R1bGUsXG4gICAgQ2xyRW51bUZpbHRlck1vZHVsZSxcbiAgICBDbHJEYXRlRmlsdGVyTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJBZGRvbnNNb2R1bGUge31cbiJdfQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xyLWFkZG9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9jbHItYWRkb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0s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QixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixnQkFBZ0I7d0JBQ2hCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IseUJBQXlCO3dCQUN6QixpQ0FBaUM7d0JBQ2pDLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFBvcnNjaGUgSW5mb3JtYXRpay4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsckJhY2tCdXR0b25Nb2R1bGUgfSBmcm9tICcuL2JhY2stYnV0dG9uL2JhY2stYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAnLi9icmVhZGNydW1iL2JyZWFkY3J1bWIubW9kdWxlJztcbmltcG9ydCB7IENsckNvbGxhcHNlRXhwYW5kU2VjdGlvbk1vZHVsZSB9IGZyb20gJy4vY29sbGFwc2UtZXhwYW5kLXNlY3Rpb24vY29sbGFwc2UtZXhwYW5kLXNlY3Rpb24ubW9kdWxlJztcbmltcG9ydCB7IENsckNvbnRlbnRQYW5lbE1vZHVsZSB9IGZyb20gJy4vY29udGVudC1wYW5lbC9jb250ZW50LXBhbmVsLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJEYXRhTGlzdFZhbGlkYXRvck1vZHVsZSB9IGZyb20gJy4vZGF0YS1saXN0LXZhbGlkYXRvci9kYXRhLWxpc3QtdmFsaWRhdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJEYXRlVGltZU1vZHVsZSB9IGZyb20gJy4vZGF0ZS10aW1lLWNvbnRhaW5lci9kYXRlLXRpbWUtbW9kdWxlJztcbmltcG9ydCB7IENsckRvdFBhZ2VyTW9kdWxlIH0gZnJvbSAnLi9kb3QtcGFnZXIvZG90LXBhZ2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJGbG93QmFyTW9kdWxlIH0gZnJvbSAnLi9mbG93LWJhci9mbG93LWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyR2VuZXJpY1F1aWNrTGlzdE1vZHVsZSB9IGZyb20gJy4vZ2VuZXJpYy1xdWljay1saXN0L2dlbmVyaWMtcXVpY2stbGlzdC5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyTGV0dGVyQXZhdGFyTW9kdWxlIH0gZnJvbSAnLi9sZXR0ZXItYXZhdGFyL2xldHRlci1hdmF0YXIubW9kdWxlJztcbmltcG9ydCB7IENsck1haW5OYXZHcm91cE1vZHVsZSB9IGZyb20gJy4vbWFpbi1uYXYtZ3JvdXAvbWFpbi1uYXYtZ3JvdXAubW9kdWxlJztcbmltcG9ydCB7IENsck11bHRpbGluZ3VhbE1vZHVsZSB9IGZyb20gJy4vbXVsdGlsaW5ndWFsL211bHRpbGluZ3VhbC5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyTm90aWZpY2F0aW9uTW9kdWxlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJOdW1lcmljRmllbGRNb2R1bGUgfSBmcm9tICcuL251bWVyaWNmaWVsZC9udW1lcmljLWZpZWxkLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJQYWdlZFNlYXJjaFJlc3VsdExpc3RNb2R1bGUgfSBmcm9tICcuL3BhZ2VkLXNlYXJjaC1yZXN1bHQtbGlzdC9wYWdlZC1zZWFyY2gtcmVzdWx0LWxpc3QubW9kdWxlJztcbmltcG9ydCB7IENsclBhZ2VyTW9kdWxlIH0gZnJvbSAnLi9wYWdlci9wYWdlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyUHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnLi9wcm9ncmVzcy1zcGlubmVyL3Byb2dyZXNzLXNwaW5uZXIubW9kdWxlJztcbmltcG9ydCB7IENsclF1aWNrTGlzdE1vZHVsZSB9IGZyb20gJy4vcXVpY2stbGlzdC9xdWljay1saXN0Lm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJTZWFyY2hGaWVsZE1vZHVsZSB9IGZyb20gJy4vc2VhcmNoZmllbGQvc2VhcmNoLWZpZWxkLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJUcmVldGFibGVNb2R1bGUgfSBmcm9tICcuL3RyZWV0YWJsZS90cmVldGFibGUubW9kdWxlJztcbmltcG9ydCB7IENsclZpZXdFZGl0U2VjdGlvbk1vZHVsZSB9IGZyb20gJy4vdmlldy1lZGl0LXNlY3Rpb24vdmlldy1lZGl0LXNlY3Rpb24ubW9kdWxlJztcbmltcG9ydCB7IENsckhpc3RvcnlNb2R1bGUgfSBmcm9tICcuL2hpc3RvcnkvaGlzdG9yeS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyQXV0b2NvbXBsZXRlT2ZmTW9kdWxlIH0gZnJvbSAnLi9hdXRvY29tcGxldGUtb2ZmL2F1dG9jb21wbGV0ZS1vZmYubW9kdWxlJztcbmltcG9ydCB7IENsckJyYW5kQXZhdGFyTW9kdWxlIH0gZnJvbSAnLi9icmFuZC1hdmF0YXIvYnJhbmQtYXZhdGFyLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJMb2NhdGlvbkJhck1vZHVsZSB9IGZyb20gJy4vbG9jYXRpb24tYmFyL2xvY2F0aW9uLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyRm9ybU1vZHVsZSB9IGZyb20gJy4vYWJzdHJhY3QtZm9ybS1jb21wb25lbnQvZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyRHJvcGRvd25PdmVyZmxvd01vZHVsZSB9IGZyb20gJy4vZHJvcGRvd24nO1xuaW1wb3J0IHsgQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kdWxlLCBDbHJFbnVtRmlsdGVyTW9kdWxlIH0gZnJvbSAnLi9kYXRhZ3JpZCc7XG5pbXBvcnQgeyBDbHJEYXRlRmlsdGVyTW9kdWxlIH0gZnJvbSAnLi9kYXRhZ3JpZC9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyRGF0ZXJhbmdlcGlja2VyTW9kdWxlIH0gZnJvbSAnLi9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtcbiAgICBDbHJWaWV3RWRpdFNlY3Rpb25Nb2R1bGUsXG4gICAgQ2xyUGFnZXJNb2R1bGUsXG4gICAgQ2xyRG90UGFnZXJNb2R1bGUsXG4gICAgQ2xyUGFnZWRTZWFyY2hSZXN1bHRMaXN0TW9kdWxlLFxuICAgIENsckNvbGxhcHNlRXhwYW5kU2VjdGlvbk1vZHVsZSxcbiAgICBDbHJCcmVhZGNydW1iTW9kdWxlLFxuICAgIENsck1haW5OYXZHcm91cE1vZHVsZSxcbiAgICBDbHJDb250ZW50UGFuZWxNb2R1bGUsXG4gICAgQ2xyTm90aWZpY2F0aW9uTW9kdWxlLFxuICAgIENsckZsb3dCYXJNb2R1bGUsXG4gICAgQ2xyQmFja0J1dHRvbk1vZHVsZSxcbiAgICBDbHJOdW1lcmljRmllbGRNb2R1bGUsXG4gICAgQ2xyU2VhcmNoRmllbGRNb2R1bGUsXG4gICAgQ2xyVHJlZXRhYmxlTW9kdWxlLFxuICAgIENsclByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBDbHJEYXRlVGltZU1vZHVsZSxcbiAgICBDbHJRdWlja0xpc3RNb2R1bGUsXG4gICAgQ2xyTGV0dGVyQXZhdGFyTW9kdWxlLFxuICAgIENsck11bHRpbGluZ3VhbE1vZHVsZSxcbiAgICBDbHJHZW5lcmljUXVpY2tMaXN0TW9kdWxlLFxuICAgIENsckRhdGFMaXN0VmFsaWRhdG9yTW9kdWxlLFxuICAgIENsckhpc3RvcnlNb2R1bGUsXG4gICAgQ2xyQXV0b2NvbXBsZXRlT2ZmTW9kdWxlLFxuICAgIENsckJyYW5kQXZhdGFyTW9kdWxlLFxuICAgIENsckxvY2F0aW9uQmFyTW9kdWxlLFxuICAgIENsckZvcm1Nb2R1bGUsXG4gICAgQ2xyRHJvcGRvd25PdmVyZmxvd01vZHVsZSxcbiAgICBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2R1bGUsXG4gICAgQ2xyRW51bUZpbHRlck1vZHVsZSxcbiAgICBDbHJEYXRlRmlsdGVyTW9kdWxlLFxuICAgIENsckRhdGVyYW5nZXBpY2tlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyQWRkb25zTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,27 @@
1
+ export const USER_INPUT_REGEX = /\d+/g;
2
+ // https://en.wikipedia.org/wiki/Date_format_by_country
3
+ export const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;
4
+ export const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;
5
+ export const DELIMITER_REGEX = /d+|m+|y+/i;
6
+ export const YEAR = 'YYYY';
7
+ export const MONTH = 'MM';
8
+ export const DATE = 'DD';
9
+ export const LITTLE_ENDIAN = {
10
+ name: 'LITTLE_ENDIAN',
11
+ format: [DATE, MONTH, YEAR],
12
+ };
13
+ export const MIDDLE_ENDIAN = {
14
+ name: 'MIDDLE_ENDIAN',
15
+ format: [MONTH, DATE, YEAR],
16
+ };
17
+ export const BIG_ENDIAN = {
18
+ name: 'BIG_ENDIAN',
19
+ format: [YEAR, MONTH, DATE],
20
+ };
21
+ /** Default separator text. */
22
+ export const SEPARATOR_TEXT_DEFAULT = ' - ';
23
+ export const TRANSLATIONS = {
24
+ from: 'From',
25
+ to: 'To',
26
+ };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2UuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztBQUV2Qyx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQztBQUMxQixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBU3pCLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMkI7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMkI7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBMkI7SUFDaEQsSUFBSSxFQUFFLFlBQVk7SUFDbEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7Q0FDNUIsQ0FBQztBQUVGLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLElBQUksRUFBRSxNQUFNO0lBQ1osRUFBRSxFQUFFLElBQUk7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFVTRVJfSU5QVVRfUkVHRVggPSAvXFxkKy9nO1xuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG5leHBvcnQgY29uc3QgTElUVExFX0VORElBTl9SRUdFWCA9IC9kKy4rbSsuK3krL2k7XG5leHBvcnQgY29uc3QgTUlERExFX0VORElBTl9SRUdFWCA9IC9tKy4rZCsuK3krL2k7XG5cbmV4cG9ydCBjb25zdCBERUxJTUlURVJfUkVHRVggPSAvZCt8bSt8eSsvaTtcblxuZXhwb3J0IGNvbnN0IFlFQVIgPSAnWVlZWSc7XG5leHBvcnQgY29uc3QgTU9OVEggPSAnTU0nO1xuZXhwb3J0IGNvbnN0IERBVEUgPSAnREQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXRUeXBlID0gJ0xJVFRMRV9FTkRJQU4nIHwgJ01JRERMRV9FTkRJQU4nIHwgJ0JJR19FTkRJQU4nO1xuXG5leHBvcnQgdHlwZSBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICByZWFkb25seSBuYW1lOiBGb3JtYXRUeXBlO1xuICByZWFkb25seSBmb3JtYXQ6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXTtcbn07XG5cbmV4cG9ydCBjb25zdCBMSVRUTEVfRU5ESUFOOiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICBuYW1lOiAnTElUVExFX0VORElBTicsXG4gIGZvcm1hdDogW0RBVEUsIE1PTlRILCBZRUFSXSxcbn07XG5cbmV4cG9ydCBjb25zdCBNSURETEVfRU5ESUFOOiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICBuYW1lOiAnTUlERExFX0VORElBTicsXG4gIGZvcm1hdDogW01PTlRILCBEQVRFLCBZRUFSXSxcbn07XG5cbmV4cG9ydCBjb25zdCBCSUdfRU5ESUFOOiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICBuYW1lOiAnQklHX0VORElBTicsXG4gIGZvcm1hdDogW1lFQVIsIE1PTlRILCBEQVRFXSxcbn07XG5cbi8qKiBEZWZhdWx0IHNlcGFyYXRvciB0ZXh0LiAqL1xuZXhwb3J0IGNvbnN0IFNFUEFSQVRPUl9URVhUX0RFRkFVTFQgPSAnIC0gJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TTEFUSU9OUyA9IHtcbiAgZnJvbTogJ0Zyb20nLFxuICB0bzogJ1RvJyxcbn07XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ClarityModule, ClrDatepickerModule, ClrIconModule } from '@clr/angular';
5
+ import { ClrDatepickerComponent } from './directives/datepicker/datepicker.component';
6
+ import { ClrDaterangepickerContainerComponent } from './directives/daterangepicker-container/daterangepicker-container.component';
7
+ import { ClrDaterangepickerDirective } from './directives/daterangepicker/daterangepicker.directive';
8
+ import { ClrIfDaterangeErrorDirective } from './directives/if-daterange-error.directive';
9
+ import { ClrDaterangeMaxValidator } from './validators/daterange-max.validator';
10
+ import { ClrDaterangeMinValidator } from './validators/daterange-min.validator';
11
+ import { ClrDaterangeOrderValidator } from './validators/daterange-order.validator';
12
+ import { ClrDaterangeRequiredValidator } from './validators/daterange-required.validator';
13
+ import * as i0 from "@angular/core";
14
+ export class ClrDaterangepickerModule {
15
+ }
16
+ ClrDaterangepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
+ ClrDaterangepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, declarations: [ClrDatepickerComponent,
18
+ ClrDaterangeMaxValidator,
19
+ ClrDaterangeMinValidator,
20
+ ClrDaterangeOrderValidator,
21
+ ClrDaterangepickerContainerComponent,
22
+ ClrDaterangepickerDirective,
23
+ ClrDaterangeRequiredValidator,
24
+ ClrIfDaterangeErrorDirective], imports: [CommonModule, FormsModule, ClarityModule, ClrDatepickerModule, ClrIconModule], exports: [ClrDaterangeMaxValidator,
25
+ ClrDaterangeMinValidator,
26
+ ClrDaterangeOrderValidator,
27
+ ClrDaterangepickerContainerComponent,
28
+ ClrDaterangepickerDirective,
29
+ ClrDaterangeRequiredValidator,
30
+ ClrIfDaterangeErrorDirective] });
31
+ ClrDaterangepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, imports: [CommonModule, FormsModule, ClarityModule, ClrDatepickerModule, ClrIconModule] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, decorators: [{
33
+ type: NgModule,
34
+ args: [{
35
+ imports: [CommonModule, FormsModule, ClarityModule, ClrDatepickerModule, ClrIconModule],
36
+ declarations: [
37
+ ClrDatepickerComponent,
38
+ ClrDaterangeMaxValidator,
39
+ ClrDaterangeMinValidator,
40
+ ClrDaterangeOrderValidator,
41
+ ClrDaterangepickerContainerComponent,
42
+ ClrDaterangepickerDirective,
43
+ ClrDaterangeRequiredValidator,
44
+ ClrIfDaterangeErrorDirective,
45
+ ],
46
+ entryComponents: [ClrDatepickerComponent],
47
+ exports: [
48
+ ClrDaterangeMaxValidator,
49
+ ClrDaterangeMinValidator,
50
+ ClrDaterangeOrderValidator,
51
+ ClrDaterangepickerContainerComponent,
52
+ ClrDaterangepickerDirective,
53
+ ClrDaterangeRequiredValidator,
54
+ ClrIfDaterangeErrorDirective,
55
+ ],
56
+ }]
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUF5QjFGLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFwQmpDLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDBCQUEwQjtRQUMxQixvQ0FBb0M7UUFDcEMsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3Qiw0QkFBNEIsYUFUcEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxhQWFwRix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDBCQUEwQjtRQUMxQixvQ0FBb0M7UUFDcEMsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3Qiw0QkFBNEI7c0hBR25CLHdCQUF3QixZQXRCekIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYTsyRkFzQjNFLHdCQUF3QjtrQkF2QnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxDQUFDO29CQUN2RixZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQixvQ0FBb0M7d0JBQ3BDLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7cUJBQzdCO29CQUNELGVBQWUsRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUN6QyxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLDBCQUEwQjt3QkFDMUIsb0NBQW9DO3dCQUNwQywyQkFBMkI7d0JBQzNCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3FCQUM3QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDbGFyaXR5TW9kdWxlLCBDbHJEYXRlcGlja2VyTW9kdWxlLCBDbHJJY29uTW9kdWxlIH0gZnJvbSAnQGNsci9hbmd1bGFyJztcblxuaW1wb3J0IHsgQ2xyRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aXZlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENsckRhdGVyYW5nZXBpY2tlckNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aXZlcy9kYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyL2RhdGVyYW5nZXBpY2tlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENsckRhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbHJJZkRhdGVyYW5nZUVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2lmLWRhdGVyYW5nZS1lcnJvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xyRGF0ZXJhbmdlTWF4VmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2RhdGVyYW5nZS1tYXgudmFsaWRhdG9yJztcbmltcG9ydCB7IENsckRhdGVyYW5nZU1pblZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9kYXRlcmFuZ2UtbWluLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBDbHJEYXRlcmFuZ2VPcmRlclZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9kYXRlcmFuZ2Utb3JkZXIudmFsaWRhdG9yJztcbmltcG9ydCB7IENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2RhdGVyYW5nZS1yZXF1aXJlZC52YWxpZGF0b3InO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ2xhcml0eU1vZHVsZSwgQ2xyRGF0ZXBpY2tlck1vZHVsZSwgQ2xySWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENsckRhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgQ2xyRGF0ZXJhbmdlTWF4VmFsaWRhdG9yLFxuICAgIENsckRhdGVyYW5nZU1pblZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VPcmRlclZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VwaWNrZXJDb250YWluZXJDb21wb25lbnQsXG4gICAgQ2xyRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgIENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yLFxuICAgIENscklmRGF0ZXJhbmdlRXJyb3JEaXJlY3RpdmUsXG4gIF0sXG4gIGVudHJ5Q29tcG9uZW50czogW0NsckRhdGVwaWNrZXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbXG4gICAgQ2xyRGF0ZXJhbmdlTWF4VmFsaWRhdG9yLFxuICAgIENsckRhdGVyYW5nZU1pblZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VPcmRlclZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VwaWNrZXJDb250YWluZXJDb21wb25lbnQsXG4gICAgQ2xyRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgIENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yLFxuICAgIENscklmRGF0ZXJhbmdlRXJyb3JEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVyYW5nZXBpY2tlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,104 @@
1
+ import { ContentChild, Directive, HostBinding, Optional } from '@angular/core';
2
+ import { ClrControlError, ClrControlHelper, ClrControlSuccess, ClrLabel, ClrLayout } from '@clr/angular';
3
+ import { DaterangeControlStateService } from '../providers/daterange-control-state.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@clr/angular";
6
+ import * as i2 from "../providers/daterange-control-state.service";
7
+ export class ClrAbstractContainer {
8
+ constructor(clrLayout, daterangeControlStateService) {
9
+ this.clrLayout = clrLayout;
10
+ this.daterangeControlStateService = daterangeControlStateService;
11
+ this.isFormControl = true;
12
+ }
13
+ /**
14
+ * Detect if container is not part of an vertical form to apply correct grid classes.
15
+ */
16
+ get addLayoutGrid() {
17
+ return !this.clrLayout?.layoutService?.isVertical();
18
+ }
19
+ /**
20
+ * Wether to show the helper control.
21
+ * @returns Wether to show the helper control.
22
+ */
23
+ get showHelper() {
24
+ if (this.controlHelperComponent == null) {
25
+ return false;
26
+ }
27
+ // Helper Component exist and the state of the form is NONE (not touched).
28
+ if (!this.daterangeControlStateService.touched) {
29
+ return true;
30
+ }
31
+ // Or there is no success component but the state of the form is VALID - show helper information.
32
+ if (this.controlSuccessComponent == null &&
33
+ this.daterangeControlStateService.touched &&
34
+ !this.daterangeControlStateService.invalid) {
35
+ return true;
36
+ }
37
+ // Or there is no error component but the state of the form is INVALID - show helper information.
38
+ if (this.controlErrorComponent == null && this.daterangeControlStateService.invalid) {
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+ /**
44
+ * Wether to show the valid control.
45
+ * @returns Wether to show the valid control.
46
+ */
47
+ get showValid() {
48
+ return !this.daterangeControlStateService.invalid && !!this.controlSuccessComponent;
49
+ }
50
+ /**
51
+ * Wether to show the invalid control.
52
+ * @returns Wether to show the invalid control.
53
+ */
54
+ get showInvalid() {
55
+ return this.daterangeControlStateService.invalid && !!this.controlErrorComponent;
56
+ }
57
+ /**
58
+ * Disabled state.
59
+ * @returns Disabled state.
60
+ */
61
+ get disabled() {
62
+ return this.daterangeControlStateService.disabled;
63
+ }
64
+ /**
65
+ * If control is focused.
66
+ * @returns Wether control is focused.
67
+ */
68
+ get focus() {
69
+ return this.daterangeControlStateService.focused;
70
+ }
71
+ /**
72
+ * Wether control is invalid.
73
+ * @returns Wether control is invalid.
74
+ */
75
+ get isInvalid() {
76
+ return this.daterangeControlStateService.invalid;
77
+ }
78
+ }
79
+ ClrAbstractContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrAbstractContainer, deps: [{ token: i1.ClrLayout, optional: true }, { token: i2.DaterangeControlStateService }], target: i0.ɵɵFactoryTarget.Directive });
80
+ ClrAbstractContainer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ClrAbstractContainer, host: { properties: { "class.clr-form-control": "this.isFormControl", "class.clr-row": "this.addLayoutGrid" } }, queries: [{ propertyName: "labelComponent", first: true, predicate: ClrLabel, descendants: true }, { propertyName: "controlHelperComponent", first: true, predicate: ClrControlHelper, descendants: true }, { propertyName: "controlErrorComponent", first: true, predicate: ClrControlError, descendants: true }, { propertyName: "controlSuccessComponent", first: true, predicate: ClrControlSuccess, descendants: true }], ngImport: i0 });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrAbstractContainer, decorators: [{
82
+ type: Directive
83
+ }], ctorParameters: function () { return [{ type: i1.ClrLayout, decorators: [{
84
+ type: Optional
85
+ }] }, { type: i2.DaterangeControlStateService }]; }, propDecorators: { isFormControl: [{
86
+ type: HostBinding,
87
+ args: ['class.clr-form-control']
88
+ }], addLayoutGrid: [{
89
+ type: HostBinding,
90
+ args: ['class.clr-row']
91
+ }], labelComponent: [{
92
+ type: ContentChild,
93
+ args: [ClrLabel]
94
+ }], controlHelperComponent: [{
95
+ type: ContentChild,
96
+ args: [ClrControlHelper]
97
+ }], controlErrorComponent: [{
98
+ type: ContentChild,
99
+ args: [ClrControlError]
100
+ }], controlSuccessComponent: [{
101
+ type: ContentChild,
102
+ args: [ClrControlSuccess]
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kaXJlY3RpdmVzL2Fic3RyYWN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFHNUYsTUFBTSxPQUFnQixvQkFBb0I7SUE0RnhDLFlBQ2lDLFNBQW9CLEVBQ2hDLDRCQUEwRDtRQUQ5QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2hDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUE3RnJCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBOEY1RSxDQUFDO0lBNUZKOztPQUVHO0lBQ0gsSUFDVyxhQUFhO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBWUQ7OztPQUdHO0lBQ0gsSUFBYyxVQUFVO1FBQ3RCLElBQUksSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxpR0FBaUc7UUFDakcsSUFDRSxJQUFJLENBQUMsdUJBQXVCLElBQUksSUFBSTtZQUNwQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTztZQUN6QyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQzFDO1lBQ0EsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELGlHQUFpRztRQUNqRyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRTtZQUNuRixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxTQUFTO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNuRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxLQUFLO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxTQUFTO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztJQUNuRCxDQUFDOztpSEExRm1CLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHVMQVkxQixRQUFRLHlGQUdSLGdCQUFnQix3RkFFaEIsZUFBZSwwRkFFZixpQkFBaUI7MkZBbkJYLG9CQUFvQjtrQkFEekMsU0FBUzs7MEJBOEZMLFFBQVE7dUZBNUYrQyxhQUFhO3NCQUF0RSxXQUFXO3VCQUFDLHdCQUF3QjtnQkFNMUIsYUFBYTtzQkFEdkIsV0FBVzt1QkFBQyxlQUFlO2dCQU1NLGNBQWM7c0JBQS9DLFlBQVk7dUJBQUMsUUFBUTtnQkFHb0Isc0JBQXNCO3NCQUEvRCxZQUFZO3VCQUFDLGdCQUFnQjtnQkFFVyxxQkFBcUI7c0JBQTdELFlBQVk7dUJBQUMsZUFBZTtnQkFFYyx1QkFBdUI7c0JBQWpFLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xyQ29udHJvbEVycm9yLCBDbHJDb250cm9sSGVscGVyLCBDbHJDb250cm9sU3VjY2VzcywgQ2xyTGFiZWwsIENsckxheW91dCB9IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5pbXBvcnQgeyBEYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGVyYW5nZS1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbHJBYnN0cmFjdENvbnRhaW5lciB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2xyLWZvcm0tY29udHJvbCcpIHByb3RlY3RlZCByZWFkb25seSBpc0Zvcm1Db250cm9sID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZWN0IGlmIGNvbnRhaW5lciBpcyBub3QgcGFydCBvZiBhbiB2ZXJ0aWNhbCBmb3JtIHRvIGFwcGx5IGNvcnJlY3QgZ3JpZCBjbGFzc2VzLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jbHItcm93JylcbiAgcHVibGljIGdldCBhZGRMYXlvdXRHcmlkKCkge1xuICAgIHJldHVybiAhdGhpcy5jbHJMYXlvdXQ/LmxheW91dFNlcnZpY2U/LmlzVmVydGljYWwoKTtcbiAgfVxuXG4gIC8qKiBMYWJlbCBjb21wb25lbnQuICovXG4gIEBDb250ZW50Q2hpbGQoQ2xyTGFiZWwpIHByb3RlY3RlZCBsYWJlbENvbXBvbmVudDogQ2xyTGFiZWw7XG5cbiAgLyoqIEhlbHBlciBjb250cm9sIGNvbXBvbmVudC4gKi9cbiAgQENvbnRlbnRDaGlsZChDbHJDb250cm9sSGVscGVyKSBwcm90ZWN0ZWQgY29udHJvbEhlbHBlckNvbXBvbmVudDogQ2xyQ29udHJvbEhlbHBlcjtcbiAgLyoqIEVycm9yIGNvbnRyb2wgY29tcG9uZW50LiAqL1xuICBAQ29udGVudENoaWxkKENsckNvbnRyb2xFcnJvcikgcHJvdGVjdGVkIGNvbnRyb2xFcnJvckNvbXBvbmVudDogQ2xyQ29udHJvbEVycm9yO1xuICAvKiogU3VjY2VzcyBjb250cm9sIGNvbXBvbmVudC4gKi9cbiAgQENvbnRlbnRDaGlsZChDbHJDb250cm9sU3VjY2VzcykgcHJvdGVjdGVkIGNvbnRyb2xTdWNjZXNzQ29tcG9uZW50OiBDbHJDb250cm9sU3VjY2VzcztcblxuICAvKipcbiAgICogV2V0aGVyIHRvIHNob3cgdGhlIGhlbHBlciBjb250cm9sLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgdG8gc2hvdyB0aGUgaGVscGVyIGNvbnRyb2wuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3dIZWxwZXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29udHJvbEhlbHBlckNvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIENvbXBvbmVudCBleGlzdCBhbmQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtIGlzIE5PTkUgKG5vdCB0b3VjaGVkKS5cbiAgICBpZiAoIXRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS50b3VjaGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBPciB0aGVyZSBpcyBubyBzdWNjZXNzIGNvbXBvbmVudCBidXQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtIGlzIFZBTElEIC0gc2hvdyBoZWxwZXIgaW5mb3JtYXRpb24uXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudCA9PSBudWxsICYmXG4gICAgICB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UudG91Y2hlZCAmJlxuICAgICAgIXRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5pbnZhbGlkXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBPciB0aGVyZSBpcyBubyBlcnJvciBjb21wb25lbnQgYnV0IHRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBpcyBJTlZBTElEIC0gc2hvdyBoZWxwZXIgaW5mb3JtYXRpb24uXG4gICAgaWYgKHRoaXMuY29udHJvbEVycm9yQ29tcG9uZW50ID09IG51bGwgJiYgdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmludmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZXRoZXIgdG8gc2hvdyB0aGUgdmFsaWQgY29udHJvbC5cbiAgICogQHJldHVybnMgV2V0aGVyIHRvIHNob3cgdGhlIHZhbGlkIGNvbnRyb2wuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3dWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5pbnZhbGlkICYmICEhdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZXRoZXIgdG8gc2hvdyB0aGUgaW52YWxpZCBjb250cm9sLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgdG8gc2hvdyB0aGUgaW52YWxpZCBjb250cm9sLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBzaG93SW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmludmFsaWQgJiYgISF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlZCBzdGF0ZS5cbiAgICogQHJldHVybnMgRGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSWYgY29udHJvbCBpcyBmb2N1c2VkLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgY29udHJvbCBpcyBmb2N1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmb2N1cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmZvY3VzZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2V0aGVyIGNvbnRyb2wgaXMgaW52YWxpZC5cbiAgICogQHJldHVybnMgV2V0aGVyIGNvbnRyb2wgaXMgaW52YWxpZC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuaW52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xyTGF5b3V0OiBDbHJMYXlvdXQsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2U6IERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2VcbiAgKSB7fVxufVxuIl19