novo-elements 10.6.0 → 10.6.1-next.2

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 (25) hide show
  1. package/elements/data-table/interfaces.d.ts +26 -1
  2. package/elements/query-builder/condition-definitions/abstract-condition.definition.d.ts +14 -3
  3. package/elements/query-builder/condition-definitions/address-condition.definition.d.ts +8 -7
  4. package/elements/query-builder/condition-definitions/boolean-condition.definition.d.ts +2 -0
  5. package/elements/query-builder/condition-definitions/date-condition.definition.d.ts +2 -0
  6. package/elements/query-builder/condition-definitions/date-time-condition.definition.d.ts +2 -0
  7. package/elements/query-builder/condition-definitions/number-condition.definition.d.ts +2 -0
  8. package/elements/query-builder/condition-definitions/picker-condition.definition.d.ts +3 -1
  9. package/elements/query-builder/condition-definitions/string-condition.definition.d.ts +3 -1
  10. package/esm2022/elements/data-table/interfaces.mjs +1 -1
  11. package/esm2022/elements/field/formats/date-format.mjs +4 -1
  12. package/esm2022/elements/query-builder/condition-definitions/abstract-condition.definition.mjs +41 -4
  13. package/esm2022/elements/query-builder/condition-definitions/address-condition.definition.mjs +29 -16
  14. package/esm2022/elements/query-builder/condition-definitions/boolean-condition.definition.mjs +15 -12
  15. package/esm2022/elements/query-builder/condition-definitions/date-condition.definition.mjs +17 -14
  16. package/esm2022/elements/query-builder/condition-definitions/date-time-condition.definition.mjs +17 -14
  17. package/esm2022/elements/query-builder/condition-definitions/number-condition.definition.mjs +16 -13
  18. package/esm2022/elements/query-builder/condition-definitions/picker-condition.definition.mjs +17 -14
  19. package/esm2022/elements/query-builder/condition-definitions/string-condition.definition.mjs +20 -17
  20. package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
  21. package/fesm2022/novo-elements-elements-field.mjs +3 -0
  22. package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
  23. package/fesm2022/novo-elements-elements-query-builder.mjs +125 -71
  24. package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
  25. package/package.json +1 -1
@@ -21,7 +21,7 @@ export interface IDataTablePreferences {
21
21
  export interface DataTableWhere {
22
22
  query: string;
23
23
  criteria?: AdaptiveCriteria;
24
- keywords?: string[];
24
+ keywords?: SearchKeywords;
25
25
  form: any;
26
26
  }
27
27
  export interface DataTableSavedSearchOwner {
@@ -227,3 +227,28 @@ export declare enum AdaptiveOperator {
227
227
  EndsWith = "endsWith",
228
228
  Radius = "radius"
229
229
  }
230
+ export interface IKeywordSearchResponse {
231
+ items: IKeywordGroup[];
232
+ meta: {
233
+ currentPage: number;
234
+ itemCount: number;
235
+ itemsPerPage: number;
236
+ totalItems: number;
237
+ totalPages: number;
238
+ };
239
+ }
240
+ export interface IKeyword {
241
+ id: number;
242
+ name: string;
243
+ }
244
+ export interface IKeywordGroup {
245
+ id: number;
246
+ name: string;
247
+ keywords: IKeyword[];
248
+ }
249
+ export interface IKeywordBlock {
250
+ exclude: boolean;
251
+ keywordGroups: IKeywordGroup[];
252
+ }
253
+ export type NestedKeywordGroups = IKeywordBlock[];
254
+ export type SearchKeywords = string[] | NestedKeywordGroups;
@@ -1,20 +1,31 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
2
- import { UntypedFormGroup } from '@angular/forms';
1
+ import { AfterViewInit, OnDestroy, OnInit, QueryList } from '@angular/core';
2
+ import { FormControlName, UntypedFormGroup } from '@angular/forms';
3
3
  import { NovoLabelService } from 'novo-elements/services';
4
4
  import { NovoConditionFieldDef } from '../query-builder.directives';
5
5
  import { Operator } from '../query-builder.types';
6
6
  import * as i0 from "@angular/core";
7
- export declare abstract class AbstractConditionFieldDef implements OnDestroy, OnInit {
7
+ export declare abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {
8
8
  labels: NovoLabelService;
9
9
  /** Column name that should be used to reference this column. */
10
10
  get name(): string;
11
11
  set name(name: string);
12
12
  _name: string;
13
13
  defaultOperator: Operator | string;
14
+ protected _previousOperatorValue: Operator;
15
+ protected operatorEditGroups: Set<Operator>[];
14
16
  fieldDef: NovoConditionFieldDef;
17
+ formControlsByName: QueryList<FormControlName>;
15
18
  constructor(labels: NovoLabelService);
16
19
  ngOnInit(): void;
20
+ ngAfterViewInit(): void;
21
+ frameAfterViewInit(): void;
17
22
  ngOnDestroy(): void;
23
+ /**
24
+ * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,
25
+ * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.
26
+ * @param operators The set of Operator values intended to share UI controls.
27
+ */
28
+ protected defineOperatorEditGroup(...operators: Operator[]): void;
18
29
  onOperatorSelect(formGroup: UntypedFormGroup): void;
19
30
  /** Synchronizes the column definition name with the text column name. */
20
31
  private _syncFieldDefName;
@@ -1,5 +1,5 @@
1
- import { AfterViewInit, ElementRef, InputSignal, OnDestroy, QueryList, Signal, WritableSignal } from '@angular/core';
2
- import { AbstractControl } from '@angular/forms';
1
+ import { ElementRef, InputSignal, OnDestroy, QueryList, Signal, WritableSignal } from '@angular/core';
2
+ import { AbstractControl, UntypedFormGroup } from '@angular/forms';
3
3
  import { NovoPickerToggleElement } from 'novo-elements/elements/field';
4
4
  import { PlacesListComponent } from 'novo-elements/elements/places';
5
5
  import { NovoLabelService } from 'novo-elements/services';
@@ -9,12 +9,11 @@ import * as i0 from "@angular/core";
9
9
  /**
10
10
  * Handle selection of field values when a list of options is provided.
11
11
  */
12
- export declare class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements AfterViewInit, OnDestroy {
13
- element: ElementRef;
14
- labels: NovoLabelService;
12
+ export declare class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef implements OnDestroy {
15
13
  overlayChildren: QueryList<NovoPickerToggleElement>;
16
14
  inputChildren: QueryList<ElementRef>;
17
15
  placesPicker: PlacesListComponent;
16
+ addressSideTest: any;
18
17
  radiusValues: number[];
19
18
  defaultRadius: number;
20
19
  defaults: AddressCriteriaConfig;
@@ -30,8 +29,9 @@ export declare class NovoDefaultAddressConditionDef extends AbstractConditionFie
30
29
  chipListModel: any;
31
30
  term: string;
32
31
  private _addressChangesSubscription;
33
- constructor(element: ElementRef, labels: NovoLabelService);
34
- ngAfterViewInit(): void;
32
+ element: ElementRef<any>;
33
+ constructor(labelService: NovoLabelService);
34
+ frameAfterViewInit(): void;
35
35
  ngOnDestroy(): void;
36
36
  onKeyup(event: any, viewIndex: any): void;
37
37
  onKeydown(event: any, viewIndex: any): void;
@@ -42,6 +42,7 @@ export declare class NovoDefaultAddressConditionDef extends AbstractConditionFie
42
42
  closePlacesList(viewIndex: any): void;
43
43
  selectPlace(event: any, formGroup: AbstractControl, viewIndex: string): void;
44
44
  remove(valueToRemove: AddressData, formGroup: AbstractControl, viewIndex: string): void;
45
+ onOperatorSelect(formGroup: UntypedFormGroup): void;
45
46
  onRadiusSelect(formGroup: AbstractControl, radius: number): void;
46
47
  private assignRadiusFromValue;
47
48
  private updateRadiusInValues;
@@ -1,11 +1,13 @@
1
1
  import { AbstractConditionFieldDef } from './abstract-condition.definition';
2
2
  import { Operator } from '../query-builder.types';
3
+ import { NovoLabelService } from 'novo-elements/services';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * When constructing a query using a field that is a boolean with only true/false as possible values.
6
7
  */
7
8
  export declare class NovoDefaultBooleanConditionDef extends AbstractConditionFieldDef {
8
9
  defaultOperator: Operator;
10
+ constructor(labelService: NovoLabelService);
9
11
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoDefaultBooleanConditionDef, never>;
10
12
  static ɵcmp: i0.ɵɵComponentDeclaration<NovoDefaultBooleanConditionDef, "novo-boolean-condition-def", never, {}, {}, never, never, false, never>;
11
13
  }
@@ -2,6 +2,7 @@ import { QueryList } from '@angular/core';
2
2
  import { NovoPickerToggleElement } from 'novo-elements/elements/field';
3
3
  import { AbstractConditionFieldDef } from './abstract-condition.definition';
4
4
  import { Operator } from '../query-builder.types';
5
+ import { NovoLabelService } from 'novo-elements/services';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * Most complicated of the default conditions defs, a date needs to provide a different
@@ -10,6 +11,7 @@ import * as i0 from "@angular/core";
10
11
  export declare class NovoDefaultDateConditionDef extends AbstractConditionFieldDef {
11
12
  overlayChildren: QueryList<NovoPickerToggleElement>;
12
13
  defaultOperator: Operator;
14
+ constructor(labelService: NovoLabelService);
13
15
  closePanel(event: any, viewIndex: any): void;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoDefaultDateConditionDef, never>;
15
17
  static ɵcmp: i0.ɵɵComponentDeclaration<NovoDefaultDateConditionDef, "novo-date-condition-def", never, {}, {}, never, never, false, never>;
@@ -2,6 +2,7 @@ import { QueryList } from '@angular/core';
2
2
  import { NovoPickerToggleElement } from 'novo-elements/elements/field';
3
3
  import { AbstractConditionFieldDef } from './abstract-condition.definition';
4
4
  import { Operator } from '../query-builder.types';
5
+ import { NovoLabelService } from 'novo-elements/services';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * Most complicated of the default conditions defs, a date needs to provide a different
@@ -10,6 +11,7 @@ import * as i0 from "@angular/core";
10
11
  export declare class NovoDefaultDateTimeConditionDef extends AbstractConditionFieldDef {
11
12
  overlayChildren: QueryList<NovoPickerToggleElement>;
12
13
  defaultOperator: Operator;
14
+ constructor(labelService: NovoLabelService);
13
15
  closePanel(event: any, viewIndex: any): void;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoDefaultDateTimeConditionDef, never>;
15
17
  static ɵcmp: i0.ɵɵComponentDeclaration<NovoDefaultDateTimeConditionDef, "novo-date-time-condition-def", never, {}, {}, never, never, false, never>;
@@ -1,5 +1,6 @@
1
1
  import { AbstractConditionFieldDef } from './abstract-condition.definition';
2
2
  import { Operator } from '../query-builder.types';
3
+ import { NovoLabelService } from 'novo-elements/services';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * When constructing a query using a field that is an Int, Double, Number ...etc.
@@ -7,6 +8,7 @@ import * as i0 from "@angular/core";
7
8
  */
8
9
  export declare class NovoDefaultNumberConditionDef extends AbstractConditionFieldDef {
9
10
  defaultOperator: Operator;
11
+ constructor(labelService: NovoLabelService);
10
12
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoDefaultNumberConditionDef, never>;
11
13
  static ɵcmp: i0.ɵɵComponentDeclaration<NovoDefaultNumberConditionDef, "novo-number-condition-def", never, {}, {}, never, never, false, never>;
12
14
  }
@@ -1,11 +1,13 @@
1
- import { AbstractConditionFieldDef } from './abstract-condition.definition';
1
+ import { NovoLabelService } from 'novo-elements/services';
2
2
  import { Operator } from '../query-builder.types';
3
+ import { AbstractConditionFieldDef } from './abstract-condition.definition';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * Handle selection of field values when a list of options is provided.
6
7
  */
7
8
  export declare class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
8
9
  defaultOperator: Operator;
10
+ constructor(labelService: NovoLabelService);
9
11
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoDefaultPickerConditionDef, never>;
10
12
  static ɵcmp: i0.ɵɵComponentDeclaration<NovoDefaultPickerConditionDef, "novo-picker-condition-def", never, {}, {}, never, never, false, never>;
11
13
  }
@@ -1,6 +1,7 @@
1
1
  import { AbstractControl } from '@angular/forms';
2
- import { AbstractConditionFieldDef } from './abstract-condition.definition';
2
+ import { NovoLabelService } from 'novo-elements/services';
3
3
  import { Operator } from '../query-builder.types';
4
+ import { AbstractConditionFieldDef } from './abstract-condition.definition';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
6
7
  * Constructing filters against String fields can be complex. Each "chip" added to the
@@ -10,6 +11,7 @@ import * as i0 from "@angular/core";
10
11
  */
11
12
  export declare class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {
12
13
  defaultOperator: Operator;
14
+ constructor(labelService: NovoLabelService);
13
15
  getValue(formGroup: AbstractControl): any[];
14
16
  add(event: any, formGroup: AbstractControl): void;
15
17
  remove(valueToRemove: string, formGroup: AbstractControl): void;
@@ -26,4 +26,4 @@ export var AdaptiveOperator;
26
26
  AdaptiveOperator["EndsWith"] = "endsWith";
27
27
  AdaptiveOperator["Radius"] = "radius";
28
28
  })(AdaptiveOperator || (AdaptiveOperator = {}));
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL2RhdGEtdGFibGUvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ0EsTUFBTSxDQUFOLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQixvQ0FBZSxDQUFBO0lBQ2Ysc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCO0FBK01ELE1BQU0sQ0FBTixJQUFZLHdCQUlYO0FBSkQsV0FBWSx3QkFBd0I7SUFDbEMsdUNBQVcsQ0FBQTtJQUNYLHFDQUFTLENBQUE7SUFDVCx1Q0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFJbkM7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFjWDtBQWRELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLDZCQUFTLENBQUE7SUFDVCw2Q0FBeUIsQ0FBQTtJQUN6Qiw2Q0FBeUIsQ0FBQTtJQUN6Qiw2QkFBUyxDQUFBO0lBQ1QsbUNBQWUsQ0FBQTtJQUNmLDBDQUFzQixDQUFBO0lBQ3RCLHNDQUFrQixDQUFBO0lBQ2xCLDZDQUF5QixDQUFBO0lBQ3pCLGlDQUFhLENBQUE7SUFDYiw2Q0FBeUIsQ0FBQTtJQUN6Qix5Q0FBcUIsQ0FBQTtJQUNyQixxQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBZFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQWMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlUHJlZmVyZW5jZXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvcnQ/OiBJRGF0YVRhYmxlU29ydDtcbiAgZmlsdGVyPzogSURhdGFUYWJsZUZpbHRlciB8IElEYXRhVGFibGVGaWx0ZXJbXTtcbiAgd2hlcmU/OiBEYXRhVGFibGVXaGVyZTtcbiAgZ2xvYmFsU2VhcmNoPzogYW55O1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZGlzcGxheWVkQ29sdW1ucz86IHN0cmluZ1tdO1xuICBjb2x1bW5XaWR0aHM/OiB7IGlkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdO1xuICBzYXZlZFNlYXJjaElkPzogbnVtYmVyO1xuICBzYXZlZFNlYXJjaE5hbWU/OiBzdHJpbmc7XG4gIHNhdmVkU2VhcmNoT3duZXI/OiBEYXRhVGFibGVTYXZlZFNlYXJjaE93bmVyO1xuICBhcHBsaWVkU2VhcmNoVHlwZT86IEFwcGxpZWRTZWFyY2hUeXBlO1xuICBoYXNVbnNhdmVkQ2hhbmdlcz86IGJvb2xlYW47XG4gIHVuc2F2ZWRDaGFuZ2VzPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUYWJsZVdoZXJlIHtcbiAgcXVlcnk6IHN0cmluZztcbiAgY3JpdGVyaWE/OiBBZGFwdGl2ZUNyaXRlcmlhO1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdO1xuICBmb3JtOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlU2F2ZWRTZWFyY2hPd25lciB7XG4gIGlkOiBudW1iZXI7XG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBBcHBsaWVkU2VhcmNoVHlwZSB7XG4gIFNhdmVkID0gJ3NhdmVkJyxcbiAgUmVjZW50ID0gJ3JlY2VudCcsXG4gIE5vbmUgPSAnbm9uZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZUNvbHVtbjxUPiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsYWJlbEljb24/OiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICB0eXBlOlxuICAgIHwgJ3RleHQnXG4gICAgfCAnbGluaydcbiAgICB8ICdsaW5rOnRlbCdcbiAgICB8ICdsaW5rOm1haWx0bydcbiAgICB8ICdkYXRlJ1xuICAgIHwgJ2RhdGV0aW1lJ1xuICAgIHwgJ3RpbWUnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAnYmlnZGVjaW1hbCdcbiAgICB8ICdudW1iZXInXG4gICAgfCAncGVyY2VudCdcbiAgICB8ICdhY3Rpb24nXG4gICAgfCAnZXhwYW5kJztcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIGZvcm1hdD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNlbGxDbGFzcz86IChyb3c6IFQpID0+IHN0cmluZztcbiAgZGlzYWJsZWRGdW5jPzogKHJvdzogVCkgPT4gYm9vbGVhbjtcbiAgaGFuZGxlcnM/OiB7XG4gICAgY2xpY2s/KGV2ZW50PzogYW55KTogYW55O1xuICB9O1xuICB3aWR0aD86IG51bWJlcjtcbiAgc29ydGFibGU/OiBib29sZWFuIHwgSURhdGFUYWJsZUNvbHVtblNvcnRDb25maWc7XG4gIGZpbHRlcmFibGU/OiBib29sZWFuIHwgSURhdGFUYWJsZUNvbHVtbkZpbHRlckNvbmZpZztcbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgYWN0aW9uPzoge1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdG9vbHRpcD86IHN0cmluZztcbiAgICBvcHRpb25zPzoge1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgIGNsaWNrPyhldmVudD86IGFueSk6IGFueTtcbiAgICAgIH07XG4gICAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICBkaXNhYmxlZEZ1bmM/OiAocm93OiBUKSA9PiBib29sZWFuO1xuICAgIH1bXTtcbiAgfTtcbiAgYXR0cmlidXRlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07IC8vIGZvciBhbnkgY3VzdG9tIGNvbmZpZyBpbiBjZWxsc1xuICBpbml0aWFsUmVzaXphYmxlPzoge1xuICAgIHJlc2l6YWJsZTogYm9vbGVhbjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICByaWdodEFsaWduQ2VsbENvbnRlbnQ/OiBib29sZWFuO1xuICBjb25maWd1cmF0aW9uPzogYW55OyAvLyBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieSBlYWNoIGNvbHVtbiB0eXBlIGlmIGFuZCBhcyBuZWVkZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlUGFnaW5hdGlvbk9wdGlvbnMge1xuICB0aGVtZTogJ2Jhc2ljJyB8ICdzdGFuZGFyZCcgfCAnYmFzaWMtd2lkZSc7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gfCB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgZXJyb3JMb2FkaW5nPzogYm9vbGVhbjtcbiAgb25Gb290ZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVDb2x1bW5Tb3J0Q29uZmlnIHtcbiAgdHJhbnNmb3JtPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZUNvbHVtbkZpbHRlckNvbmZpZyB7XG4gIHR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2RhdGUnIHwgJ3NlbGVjdCcgfCAnbXVsdGktc2VsZWN0JyB8ICdjdXN0b20nO1xuICBjdXN0b21UZW1wbGF0ZT86IHN0cmluZztcbiAgdXNlQ3VzdG9tSGVhZGVyPzogYm9vbGVhbjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdIHwgSURhdGFUYWJsZUNvbHVtbkZpbHRlck9wdGlvbltdO1xuICBhbGxvd0N1c3RvbVJhbmdlPzogYm9vbGVhbjtcbiAgdHJhbnNmb3JtPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZUNvbHVtbkZpbHRlck9wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlU2VhcmNoT3B0aW9ucyB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVTb3J0RmlsdGVyIHtcbiAgaWQ6IHN0cmluZztcbiAgZGlyZWN0aW9uPzogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBmaWx0ZXI/OiBzdHJpbmcgfCBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVDaGFuZ2VFdmVudCB7XG4gIHNvcnQ/OiBJRGF0YVRhYmxlU29ydDtcbiAgZmlsdGVyPzogSURhdGFUYWJsZUZpbHRlciB8IElEYXRhVGFibGVGaWx0ZXJbXTtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGdsb2JhbFNlYXJjaD86IHN0cmluZztcbiAgb3V0c2lkZUZpbHRlcj86IElEYXRhVGFibGVGaWx0ZXIgfCBJRGF0YVRhYmxlRmlsdGVyW107XG4gIHdoZXJlPzogeyBxdWVyeTogc3RyaW5nOyBmb3JtOiBhbnkgfTtcbiAgc2F2ZWRTZWFyY2hOYW1lPzogc3RyaW5nO1xuICBkaXNwbGF5ZWRDb2x1bW5zPzogc3RyaW5nW107XG4gIGFwcGxpZWRTZWFyY2hUeXBlPzogQXBwbGllZFNlYXJjaFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50IHtcbiAgc2VsZWN0ZWQ6IGFueVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVTZWxlY3Rpb25PcHRpb24ge1xuICBsYWJlbDogJ25vbmUnIHwgJ3BhZ2UnIHwgJ3BhZ2VTaXplJyB8ICdzb3J0JyB8ICdmaWx0ZXInIHwgJ2dsb2JhbFNlYXJjaCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVBhZ2luYXRpb25FdmVudCB7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgbGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVNvcnQge1xuICBpZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICB0cmFuc2Zvcm0/OiBGdW5jdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlRmlsdGVyIHtcbiAgaWQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICB0cmFuc2Zvcm0/OiBGdW5jdGlvbjtcbiAgdHlwZT86IHN0cmluZztcbiAgc2VsZWN0ZWRPcHRpb24/OiBPYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVNlcnZpY2U8VD4ge1xuICBnZXRUYWJsZVJlc3VsdHMoXG4gICAgc29ydDogSURhdGFUYWJsZVNvcnQsXG4gICAgZmlsdGVyOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IHRyYW5zZm9ybT86IEZ1bmN0aW9uIH0gfCBJRGF0YVRhYmxlRmlsdGVyIHwgSURhdGFUYWJsZUZpbHRlcltdLFxuICAgIHBhZ2U6IG51bWJlcixcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgIGdsb2JhbFNlYXJjaD86IHN0cmluZyxcbiAgICBvdXRzaWRlRmlsdGVyPzogYW55LFxuICAgIHdoZXJlPzogeyBxdWVyeTogc3RyaW5nOyBmb3JtOiBhbnkgfSxcbiAgKTogT2JzZXJ2YWJsZTx7IHJlc3VsdHM6IFRbXTsgdG90YWw6IG51bWJlciB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlQ2VsbDxUPiB7fVxuXG4vKipcbiAqIEFkYXB0aXZlIGNyaXRlcmlhIHN5bnRheCBpcyBhIGpzb24gcmVwcmVzZW50YXRpb24gb2YgYSBzZWFyY2ggb3IgcXVlcnkgc3RyaW5nIHRoYXQgc3VwcG9ydHMgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBzZWFyY2ggZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZVF1ZXJ5IHtcbiAgY3JpdGVyaWE6IEFkYXB0aXZlQ3JpdGVyaWE7XG5cbiAgLy8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmaWVsZHMgdG8gcmVxdWVzdHNcbiAgZmllbGRzPzogc3RyaW5nO1xuXG4gIC8vIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZywgb3IgYSBzdHJpbmcgYXJyYXkgd2l0aCB0aGUgc2FtZSBkYXRhXG4gIG9yZGVyQnk/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uT2JqZWN0IHtcbiAgcGFnZTogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBBZGFwdGl2ZUNyaXRlcmlhID0gQWRhcHRpdmVDb25kaXRpb24gfCBBZGFwdGl2ZUNvbmp1bmN0aW9uO1xuXG4vKipcbiAqIE9ubHkgYSBzaW5nbGUgZmllbGQgaXMgdmFsaWQuXG4gKiBDb21iaW5lIG11bHRpcGxlIGZpZWxkcyB3aXRoIGNvbmp1bmN0aW9ucywgbm90IHNpYmxpbmcgcHJvcGVydGllcy5cbiAqIElmIG11bHRpcGxlIHNpYmxpbmcgcHJvcGVydGllcyBhcmUgdXNlZCBpbiBhIGNvbmRpdGlvbiwgZXJyb3JzIG1heSBvY2N1ciBpbiB0cmFuc2xhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUNvbmRpdGlvbiB7XG4gIFtmaWVsZE5hbWU6IHN0cmluZ106IEFkYXB0aXZlQ29uZGl0aW9uT3BlcmF0b3JPYmplY3Q7XG59XG5cbi8qKlxuICogT25seSBhIHNpbmdsZSBvcGVyYXRvciBmb3IgYSBjb25kaXRpb24gaXMgdmFsaWQuXG4gKiBDb21iaW5lIG11bHRpcGxlIG9wZXJhdG9ycyB3aXRoIGNvbmp1bmN0aW9ucywgbm90IHNpYmxpbmcgcHJvcGVydGllcy5cbiAqIElmIG11bHRpcGxlIHNpYmxpbmcgb3BlcmF0b3JzIGFyZSB1c2VkIGluIGEgY29uZGl0aW9uLCBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHVzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEFkYXB0aXZlQ29uZGl0aW9uT3BlcmF0b3JPYmplY3QgPSB7XG4gIFtLIGluIEFkYXB0aXZlT3BlcmF0b3IgYXMgYCR7S31gXT86IEFkYXB0aXZlVmFsdWU7XG59O1xuXG5leHBvcnQgdHlwZSBBZGFwdGl2ZVZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgYm9vbGVhbltdIHwgbnVtYmVyIHwgbnVtYmVyW107XG5cbmV4cG9ydCB0eXBlIEFkYXB0aXZlQ29uanVuY3Rpb24gPSBBZGFwdGl2ZUFuZCB8IEFkYXB0aXZlT3IgfCBBZGFwdGl2ZU5vdDtcblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUFuZCB7XG4gIGFuZDogQXJyYXk8QWRhcHRpdmVDcml0ZXJpYT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRpdmVPciB7XG4gIG9yOiBBcnJheTxBZGFwdGl2ZUNyaXRlcmlhPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZU5vdCB7XG4gIG5vdDogQWRhcHRpdmVDcml0ZXJpYTtcbn1cblxuZXhwb3J0IGVudW0gQWRhcHRpdmVDb25qdW5jdGlvbk5hbWVzIHtcbiAgQU5EID0gJ2FuZCcsXG4gIE9SID0gJ29yJyxcbiAgTk9UID0gJ25vdCcsXG59XG5cbmV4cG9ydCBlbnVtIEFkYXB0aXZlT3BlcmF0b3Ige1xuICBFcXVhbFRvID0gJ2VxdWFsVG8nLFxuICBJbiA9ICdpbicsXG4gIEluY2x1ZGVBbnkgPSAnaW5jbHVkZUFueScsXG4gIEluY2x1ZGVBbGwgPSAnaW5jbHVkZUFsbCcsXG4gIElzID0gJ2lzJyxcbiAgTGVzc1RoYW4gPSAnbHQnLFxuICBMZXNzVGhhbkVxdWFscyA9ICdsdGUnLFxuICBHcmVhdGVyVGhhbiA9ICdndCcsXG4gIEdyZWF0ZXJUaGFuRXF1YWxzID0gJ2d0ZScsXG4gIExpa2UgPSAnbGlrZScsXG4gIFN0YXJ0c1dpdGggPSAnc3RhcnRzV2l0aCcsXG4gIEVuZHNXaXRoID0gJ2VuZHNXaXRoJyxcbiAgUmFkaXVzID0gJ3JhZGl1cycsXG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL2RhdGEtdGFibGUvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ0EsTUFBTSxDQUFOLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQixvQ0FBZSxDQUFBO0lBQ2Ysc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCO0FBK01ELE1BQU0sQ0FBTixJQUFZLHdCQUlYO0FBSkQsV0FBWSx3QkFBd0I7SUFDbEMsdUNBQVcsQ0FBQTtJQUNYLHFDQUFTLENBQUE7SUFDVCx1Q0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFJbkM7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFjWDtBQWRELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLDZCQUFTLENBQUE7SUFDVCw2Q0FBeUIsQ0FBQTtJQUN6Qiw2Q0FBeUIsQ0FBQTtJQUN6Qiw2QkFBUyxDQUFBO0lBQ1QsbUNBQWUsQ0FBQTtJQUNmLDBDQUFzQixDQUFBO0lBQ3RCLHNDQUFrQixDQUFBO0lBQ2xCLDZDQUF5QixDQUFBO0lBQ3pCLGlDQUFhLENBQUE7SUFDYiw2Q0FBeUIsQ0FBQTtJQUN6Qix5Q0FBcUIsQ0FBQTtJQUNyQixxQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBZFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQWMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlUHJlZmVyZW5jZXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvcnQ/OiBJRGF0YVRhYmxlU29ydDtcbiAgZmlsdGVyPzogSURhdGFUYWJsZUZpbHRlciB8IElEYXRhVGFibGVGaWx0ZXJbXTtcbiAgd2hlcmU/OiBEYXRhVGFibGVXaGVyZTtcbiAgZ2xvYmFsU2VhcmNoPzogYW55O1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZGlzcGxheWVkQ29sdW1ucz86IHN0cmluZ1tdO1xuICBjb2x1bW5XaWR0aHM/OiB7IGlkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdO1xuICBzYXZlZFNlYXJjaElkPzogbnVtYmVyO1xuICBzYXZlZFNlYXJjaE5hbWU/OiBzdHJpbmc7XG4gIHNhdmVkU2VhcmNoT3duZXI/OiBEYXRhVGFibGVTYXZlZFNlYXJjaE93bmVyO1xuICBhcHBsaWVkU2VhcmNoVHlwZT86IEFwcGxpZWRTZWFyY2hUeXBlO1xuICBoYXNVbnNhdmVkQ2hhbmdlcz86IGJvb2xlYW47XG4gIHVuc2F2ZWRDaGFuZ2VzPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUYWJsZVdoZXJlIHtcbiAgcXVlcnk6IHN0cmluZztcbiAgY3JpdGVyaWE/OiBBZGFwdGl2ZUNyaXRlcmlhO1xuICBrZXl3b3Jkcz86IFNlYXJjaEtleXdvcmRzO1xuICBmb3JtOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlU2F2ZWRTZWFyY2hPd25lciB7XG4gIGlkOiBudW1iZXI7XG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBBcHBsaWVkU2VhcmNoVHlwZSB7XG4gIFNhdmVkID0gJ3NhdmVkJyxcbiAgUmVjZW50ID0gJ3JlY2VudCcsXG4gIE5vbmUgPSAnbm9uZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZUNvbHVtbjxUPiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsYWJlbEljb24/OiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICB0eXBlOlxuICAgIHwgJ3RleHQnXG4gICAgfCAnbGluaydcbiAgICB8ICdsaW5rOnRlbCdcbiAgICB8ICdsaW5rOm1haWx0bydcbiAgICB8ICdkYXRlJ1xuICAgIHwgJ2RhdGV0aW1lJ1xuICAgIHwgJ3RpbWUnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAnYmlnZGVjaW1hbCdcbiAgICB8ICdudW1iZXInXG4gICAgfCAncGVyY2VudCdcbiAgICB8ICdhY3Rpb24nXG4gICAgfCAnZXhwYW5kJztcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIGZvcm1hdD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNlbGxDbGFzcz86IChyb3c6IFQpID0+IHN0cmluZztcbiAgZGlzYWJsZWRGdW5jPzogKHJvdzogVCkgPT4gYm9vbGVhbjtcbiAgaGFuZGxlcnM/OiB7XG4gICAgY2xpY2s/KGV2ZW50PzogYW55KTogYW55O1xuICB9O1xuICB3aWR0aD86IG51bWJlcjtcbiAgc29ydGFibGU/OiBib29sZWFuIHwgSURhdGFUYWJsZUNvbHVtblNvcnRDb25maWc7XG4gIGZpbHRlcmFibGU/OiBib29sZWFuIHwgSURhdGFUYWJsZUNvbHVtbkZpbHRlckNvbmZpZztcbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgYWN0aW9uPzoge1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdG9vbHRpcD86IHN0cmluZztcbiAgICBvcHRpb25zPzoge1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgIGNsaWNrPyhldmVudD86IGFueSk6IGFueTtcbiAgICAgIH07XG4gICAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICBkaXNhYmxlZEZ1bmM/OiAocm93OiBUKSA9PiBib29sZWFuO1xuICAgIH1bXTtcbiAgfTtcbiAgYXR0cmlidXRlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07IC8vIGZvciBhbnkgY3VzdG9tIGNvbmZpZyBpbiBjZWxsc1xuICBpbml0aWFsUmVzaXphYmxlPzoge1xuICAgIHJlc2l6YWJsZTogYm9vbGVhbjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICByaWdodEFsaWduQ2VsbENvbnRlbnQ/OiBib29sZWFuO1xuICBjb25maWd1cmF0aW9uPzogYW55OyAvLyBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieSBlYWNoIGNvbHVtbiB0eXBlIGlmIGFuZCBhcyBuZWVkZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlUGFnaW5hdGlvbk9wdGlvbnMge1xuICB0aGVtZTogJ2Jhc2ljJyB8ICdzdGFuZGFyZCcgfCAnYmFzaWMtd2lkZSc7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gfCB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgZXJyb3JMb2FkaW5nPzogYm9vbGVhbjtcbiAgb25Gb290ZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVDb2x1bW5Tb3J0Q29uZmlnIHtcbiAgdHJhbnNmb3JtPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZUNvbHVtbkZpbHRlckNvbmZpZyB7XG4gIHR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2RhdGUnIHwgJ3NlbGVjdCcgfCAnbXVsdGktc2VsZWN0JyB8ICdjdXN0b20nO1xuICBjdXN0b21UZW1wbGF0ZT86IHN0cmluZztcbiAgdXNlQ3VzdG9tSGVhZGVyPzogYm9vbGVhbjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdIHwgSURhdGFUYWJsZUNvbHVtbkZpbHRlck9wdGlvbltdO1xuICBhbGxvd0N1c3RvbVJhbmdlPzogYm9vbGVhbjtcbiAgdHJhbnNmb3JtPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZUNvbHVtbkZpbHRlck9wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlU2VhcmNoT3B0aW9ucyB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVTb3J0RmlsdGVyIHtcbiAgaWQ6IHN0cmluZztcbiAgZGlyZWN0aW9uPzogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBmaWx0ZXI/OiBzdHJpbmcgfCBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVDaGFuZ2VFdmVudCB7XG4gIHNvcnQ/OiBJRGF0YVRhYmxlU29ydDtcbiAgZmlsdGVyPzogSURhdGFUYWJsZUZpbHRlciB8IElEYXRhVGFibGVGaWx0ZXJbXTtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGdsb2JhbFNlYXJjaD86IHN0cmluZztcbiAgb3V0c2lkZUZpbHRlcj86IElEYXRhVGFibGVGaWx0ZXIgfCBJRGF0YVRhYmxlRmlsdGVyW107XG4gIHdoZXJlPzogeyBxdWVyeTogc3RyaW5nOyBmb3JtOiBhbnkgfTtcbiAgc2F2ZWRTZWFyY2hOYW1lPzogc3RyaW5nO1xuICBkaXNwbGF5ZWRDb2x1bW5zPzogc3RyaW5nW107XG4gIGFwcGxpZWRTZWFyY2hUeXBlPzogQXBwbGllZFNlYXJjaFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50IHtcbiAgc2VsZWN0ZWQ6IGFueVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhVGFibGVTZWxlY3Rpb25PcHRpb24ge1xuICBsYWJlbDogJ25vbmUnIHwgJ3BhZ2UnIHwgJ3BhZ2VTaXplJyB8ICdzb3J0JyB8ICdmaWx0ZXInIHwgJ2dsb2JhbFNlYXJjaCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVBhZ2luYXRpb25FdmVudCB7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgbGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVNvcnQge1xuICBpZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICB0cmFuc2Zvcm0/OiBGdW5jdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlRmlsdGVyIHtcbiAgaWQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICB0cmFuc2Zvcm0/OiBGdW5jdGlvbjtcbiAgdHlwZT86IHN0cmluZztcbiAgc2VsZWN0ZWRPcHRpb24/OiBPYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFUYWJsZVNlcnZpY2U8VD4ge1xuICBnZXRUYWJsZVJlc3VsdHMoXG4gICAgc29ydDogSURhdGFUYWJsZVNvcnQsXG4gICAgZmlsdGVyOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IHRyYW5zZm9ybT86IEZ1bmN0aW9uIH0gfCBJRGF0YVRhYmxlRmlsdGVyIHwgSURhdGFUYWJsZUZpbHRlcltdLFxuICAgIHBhZ2U6IG51bWJlcixcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgIGdsb2JhbFNlYXJjaD86IHN0cmluZyxcbiAgICBvdXRzaWRlRmlsdGVyPzogYW55LFxuICAgIHdoZXJlPzogeyBxdWVyeTogc3RyaW5nOyBmb3JtOiBhbnkgfSxcbiAgKTogT2JzZXJ2YWJsZTx7IHJlc3VsdHM6IFRbXTsgdG90YWw6IG51bWJlciB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YVRhYmxlQ2VsbDxUPiB7fVxuXG4vKipcbiAqIEFkYXB0aXZlIGNyaXRlcmlhIHN5bnRheCBpcyBhIGpzb24gcmVwcmVzZW50YXRpb24gb2YgYSBzZWFyY2ggb3IgcXVlcnkgc3RyaW5nIHRoYXQgc3VwcG9ydHMgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBzZWFyY2ggZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZVF1ZXJ5IHtcbiAgY3JpdGVyaWE6IEFkYXB0aXZlQ3JpdGVyaWE7XG5cbiAgLy8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmaWVsZHMgdG8gcmVxdWVzdHNcbiAgZmllbGRzPzogc3RyaW5nO1xuXG4gIC8vIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZywgb3IgYSBzdHJpbmcgYXJyYXkgd2l0aCB0aGUgc2FtZSBkYXRhXG4gIG9yZGVyQnk/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uT2JqZWN0IHtcbiAgcGFnZTogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBBZGFwdGl2ZUNyaXRlcmlhID0gQWRhcHRpdmVDb25kaXRpb24gfCBBZGFwdGl2ZUNvbmp1bmN0aW9uO1xuXG4vKipcbiAqIE9ubHkgYSBzaW5nbGUgZmllbGQgaXMgdmFsaWQuXG4gKiBDb21iaW5lIG11bHRpcGxlIGZpZWxkcyB3aXRoIGNvbmp1bmN0aW9ucywgbm90IHNpYmxpbmcgcHJvcGVydGllcy5cbiAqIElmIG11bHRpcGxlIHNpYmxpbmcgcHJvcGVydGllcyBhcmUgdXNlZCBpbiBhIGNvbmRpdGlvbiwgZXJyb3JzIG1heSBvY2N1ciBpbiB0cmFuc2xhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUNvbmRpdGlvbiB7XG4gIFtmaWVsZE5hbWU6IHN0cmluZ106IEFkYXB0aXZlQ29uZGl0aW9uT3BlcmF0b3JPYmplY3Q7XG59XG5cbi8qKlxuICogT25seSBhIHNpbmdsZSBvcGVyYXRvciBmb3IgYSBjb25kaXRpb24gaXMgdmFsaWQuXG4gKiBDb21iaW5lIG11bHRpcGxlIG9wZXJhdG9ycyB3aXRoIGNvbmp1bmN0aW9ucywgbm90IHNpYmxpbmcgcHJvcGVydGllcy5cbiAqIElmIG11bHRpcGxlIHNpYmxpbmcgb3BlcmF0b3JzIGFyZSB1c2VkIGluIGEgY29uZGl0aW9uLCBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHVzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEFkYXB0aXZlQ29uZGl0aW9uT3BlcmF0b3JPYmplY3QgPSB7XG4gIFtLIGluIEFkYXB0aXZlT3BlcmF0b3IgYXMgYCR7S31gXT86IEFkYXB0aXZlVmFsdWU7XG59O1xuXG5leHBvcnQgdHlwZSBBZGFwdGl2ZVZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgYm9vbGVhbltdIHwgbnVtYmVyIHwgbnVtYmVyW107XG5cbmV4cG9ydCB0eXBlIEFkYXB0aXZlQ29uanVuY3Rpb24gPSBBZGFwdGl2ZUFuZCB8IEFkYXB0aXZlT3IgfCBBZGFwdGl2ZU5vdDtcblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUFuZCB7XG4gIGFuZDogQXJyYXk8QWRhcHRpdmVDcml0ZXJpYT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRpdmVPciB7XG4gIG9yOiBBcnJheTxBZGFwdGl2ZUNyaXRlcmlhPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZU5vdCB7XG4gIG5vdDogQWRhcHRpdmVDcml0ZXJpYTtcbn1cblxuZXhwb3J0IGVudW0gQWRhcHRpdmVDb25qdW5jdGlvbk5hbWVzIHtcbiAgQU5EID0gJ2FuZCcsXG4gIE9SID0gJ29yJyxcbiAgTk9UID0gJ25vdCcsXG59XG5cbmV4cG9ydCBlbnVtIEFkYXB0aXZlT3BlcmF0b3Ige1xuICBFcXVhbFRvID0gJ2VxdWFsVG8nLFxuICBJbiA9ICdpbicsXG4gIEluY2x1ZGVBbnkgPSAnaW5jbHVkZUFueScsXG4gIEluY2x1ZGVBbGwgPSAnaW5jbHVkZUFsbCcsXG4gIElzID0gJ2lzJyxcbiAgTGVzc1RoYW4gPSAnbHQnLFxuICBMZXNzVGhhbkVxdWFscyA9ICdsdGUnLFxuICBHcmVhdGVyVGhhbiA9ICdndCcsXG4gIEdyZWF0ZXJUaGFuRXF1YWxzID0gJ2d0ZScsXG4gIExpa2UgPSAnbGlrZScsXG4gIFN0YXJ0c1dpdGggPSAnc3RhcnRzV2l0aCcsXG4gIEVuZHNXaXRoID0gJ2VuZHNXaXRoJyxcbiAgUmFkaXVzID0gJ3JhZGl1cycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtleXdvcmRTZWFyY2hSZXNwb25zZSB7XG4gIGl0ZW1zOiBJS2V5d29yZEdyb3VwW107XG4gIG1ldGE6IHtcbiAgICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICAgIGl0ZW1Db3VudDogbnVtYmVyO1xuICAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICAgIHRvdGFsSXRlbXM6IG51bWJlcjtcbiAgICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtleXdvcmQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtleXdvcmRHcm91cCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAga2V5d29yZHM6IElLZXl3b3JkW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtleXdvcmRCbG9jayB7XG4gIGV4Y2x1ZGU6IGJvb2xlYW47XG4gIGtleXdvcmRHcm91cHM6IElLZXl3b3JkR3JvdXBbXTtcbn1cblxuZXhwb3J0IHR5cGUgTmVzdGVkS2V5d29yZEdyb3VwcyA9IElLZXl3b3JkQmxvY2tbXTtcblxuZXhwb3J0IHR5cGUgU2VhcmNoS2V5d29yZHMgPSBzdHJpbmdbXSB8IE5lc3RlZEtleXdvcmRHcm91cHM7XG4iXX0=
@@ -58,6 +58,9 @@ export class NovoDateFormatDirective extends IMaskDirective {
58
58
  }
59
59
  normalize(value) {
60
60
  const pattern = this.labels.dateFormat.toUpperCase();
61
+ if (!value) {
62
+ return "";
63
+ }
61
64
  return DateUtil.format(DateUtil.parse(value), pattern);
62
65
  }
63
66
  formatAsIso(date) {
@@ -113,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
113
116
  }], ctorParameters: () => [{ type: i1.NovoLabelService }], propDecorators: { dateFormat: [{
114
117
  type: Input
115
118
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9maWVsZC9mb3JtYXRzL2RhdGUtZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBVSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBMkIsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUVoRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQW1CO0lBSzlELFlBQW9CLE1BQXdCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFKNUMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzQyxlQUFVLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFJcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFD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Q0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM1QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssWUFBWSxDQUFDLE9BQU87b0JBQ3ZCLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLE1BQU07b0JBQ3RCLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBekZVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGdJQUZ2QixDQUFDLHlCQUF5QixFQUFFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDOzsyRkFFakcsdUJBQXVCO2tCQVBuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsa0JBQWtCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLHlCQUF5QixFQUFFLENBQUM7aUJBQzdHO3FGQUlVLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09NUE9TSVRJT05fQlVGRkVSX01PREUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmUsIElNYXNrRmFjdG9yeSB9IGZyb20gJ2FuZ3VsYXItaW1hc2snO1xuaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IE1hc2tlZFJhbmdlIH0gZnJvbSAnaW1hc2snO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IERBVEVfRk9STUFUUywgTk9WT19JTlBVVF9GT1JNQVQgfSBmcm9tICcuL2Jhc2UtZm9ybWF0JztcblxuZXhwb3J0IGNvbnN0IERBVEVGT1JNQVRfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvRGF0ZUZvcm1hdERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbZGF0ZUZvcm1hdF0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdub3ZvLWRhdGUtZm9ybWF0JyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbREFURUZPUk1BVF9WQUxVRV9BQ0NFU1NPUiwgeyBwcm92aWRlOiBOT1ZPX0lOUFVUX0ZPUk1BVCwgdXNlRXhpc3Rpbmc6IE5vdm9EYXRlRm9ybWF0RGlyZWN0aXZlIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvRGF0ZUZvcm1hdERpcmVjdGl2ZSBleHRlbmRzIElNYXNrRGlyZWN0aXZlPGFueT4ge1xuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogREFURV9GT1JNQVRTID0gREFURV9GT1JNQVRTLkRBVEU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmxhYmVscy5kYXRlRm9ybWF0LnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy51bm1hc2sgPSAndHlwZWQnIGFzIHVua25vd24gYXMgZmFsc2U7IC8vIHR5cGluZyBpcyB0byB3b3JrIGFyb3VuZCBhbmd1bGFyLWltYXNrIGJ1Z1xuICAgIHRoaXMuaW1hc2sgPSB7XG4gICAgICBtYXNrOiBEYXRlLFxuICAgICAgcGF0dGVybjogJ217L31gZHsvfWBZJyxcbiAgICAgIG92ZXJ3cml0ZTogdHJ1ZSxcbiAgICAgIGF1dG9maXg6IHRydWUsXG4gICAgICBsYXp5OiBmYWxzZSxcbiAgICAgIG1pbjogbmV3IERhdGUoMTkwMCwgMCwgMSksXG4gICAgICBtYXg6IG5ldyBEYXRlKDIxMDAsIDAsIDEpLFxuICAgICAgcHJlcGFyZTogKHN0cikgPT4gc3RyLnRvVXBwZXJDYXNlKCksXG4gICAgICBmb3JtYXQ6IChkYXRlKSA9PiB0aGlzLmZvcm1hdFZhbHVlKGRhdGUpLFxuICAgICAgcGFyc2U6IChzdHIpID0+IERhdGVVdGlsLnBhcnNlKHN0ciksXG4gICAgICBibG9ja3M6IHtcbiAgICAgICAgZDoge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ0QnLFxuICAgICAgICAgIGZyb206IDEsXG4gICAgICAgICAgdG86IDMxLFxuICAgICAgICAgIG1heExlbmd0aDogMixcbiAgICAgICAgfSxcbiAgICAgICAgbToge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ00nLFxuICAgICAgICAgIGZyb206IDEsXG4gICAgICAgICAgdG86IDEyLFxuICAgICAgICAgIG1heExlbmd0aDogMixcbiAgICAgICAgfSxcbiAgICAgICAgWToge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ1knLFxuICAgICAgICAgIGZyb206IDE5MDAsXG4gICAgICAgICAgdG86IDk5OTksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBub3JtYWxpemUodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB0aGlzLmxhYmVscy5kYXRlRm9ybWF0LnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuIERhdGVVdGlsLmZvcm1hdChEYXRlVXRpbC5wYXJzZSh2YWx1ZSksIHBhdHRlcm4pO1xuICB9XG5cbiAgZm9ybWF0QXNJc28oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGUgJiYgaXNWYWxpZChkYXRlKSkge1xuICAgICAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0VmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJztcbiAgICAvLyBVc2UgYHBhcnNlYCBiZWNhdXNlIGl0IGtlZXBzIGRhdGVzIGluIGxvY2FsZVxuICAgIGNvbnN0IGRhdGUgPSBEYXRlVXRpbC5wYXJzZSh2YWx1ZSk7XG4gICAgaWYgKGlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmxhYmVscy5kYXRlRm9ybWF0LnRvVXBwZXJDYXNlKCk7XG4gICAgICByZXR1cm4gRGF0ZVV0aWwuZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUodmFsdWUpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgc3VwZXIud3JpdGVWYWx1ZSh0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IChkYXRlOiBhbnkpID0+IHtcbiAgICAgIGxldCBmb3JtYXR0ZWQgPSBkYXRlO1xuICAgICAgc3dpdGNoICh0aGlzLmRhdGVGb3JtYXQpIHtcbiAgICAgICAgY2FzZSBEQVRFX0ZPUk1BVFMuSVNPODYwMTpcbiAgICAgICAgICBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdEFzSXNvKGRhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERBVEVfRk9STUFUUy5TVFJJTkc6XG4gICAgICAgICAgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXRWYWx1ZShkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBmb3JtYXR0ZWQgPSBkYXRlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgICAgZm4oZm9ybWF0dGVkKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9maWVsZC9mb3JtYXRzL2RhdGUtZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBVSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBMkIsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUVoRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQW1CO0lBSzlELFlBQW9CLE1BQXdCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFKNUMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzQyxlQUFVLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFJcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFD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Q0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQW9CO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM1QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssWUFBWSxDQUFDLE9BQU87b0JBQ3ZCLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLE1BQU07b0JBQ3RCLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBNUZVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGdJQUZ2QixDQUFDLHlCQUF5QixFQUFFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDOzsyRkFFakcsdUJBQXVCO2tCQVBuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsa0JBQWtCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLHlCQUF5QixFQUFFLENBQUM7aUJBQzdHO3FGQUlVLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09NUE9TSVRJT05fQlVGRkVSX01PREUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmUsIElNYXNrRmFjdG9yeSB9IGZyb20gJ2FuZ3VsYXItaW1hc2snO1xuaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IE1hc2tlZFJhbmdlIH0gZnJvbSAnaW1hc2snO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IERBVEVfRk9STUFUUywgTk9WT19JTlBVVF9GT1JNQVQgfSBmcm9tICcuL2Jhc2UtZm9ybWF0JztcblxuZXhwb3J0IGNvbnN0IERBVEVGT1JNQVRfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvRGF0ZUZvcm1hdERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbZGF0ZUZvcm1hdF0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdub3ZvLWRhdGUtZm9ybWF0JyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbREFURUZPUk1BVF9WQUxVRV9BQ0NFU1NPUiwgeyBwcm92aWRlOiBOT1ZPX0lOUFVUX0ZPUk1BVCwgdXNlRXhpc3Rpbmc6IE5vdm9EYXRlRm9ybWF0RGlyZWN0aXZlIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvRGF0ZUZvcm1hdERpcmVjdGl2ZSBleHRlbmRzIElNYXNrRGlyZWN0aXZlPGFueT4ge1xuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogREFURV9GT1JNQVRTID0gREFURV9GT1JNQVRTLkRBVEU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmxhYmVscy5kYXRlRm9ybWF0LnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy51bm1hc2sgPSAndHlwZWQnIGFzIHVua25vd24gYXMgZmFsc2U7IC8vIHR5cGluZyBpcyB0byB3b3JrIGFyb3VuZCBhbmd1bGFyLWltYXNrIGJ1Z1xuICAgIHRoaXMuaW1hc2sgPSB7XG4gICAgICBtYXNrOiBEYXRlLFxuICAgICAgcGF0dGVybjogJ217L31gZHsvfWBZJyxcbiAgICAgIG92ZXJ3cml0ZTogdHJ1ZSxcbiAgICAgIGF1dG9maXg6IHRydWUsXG4gICAgICBsYXp5OiBmYWxzZSxcbiAgICAgIG1pbjogbmV3IERhdGUoMTkwMCwgMCwgMSksXG4gICAgICBtYXg6IG5ldyBEYXRlKDIxMDAsIDAsIDEpLFxuICAgICAgcHJlcGFyZTogKHN0cikgPT4gc3RyLnRvVXBwZXJDYXNlKCksXG4gICAgICBmb3JtYXQ6IChkYXRlKSA9PiB0aGlzLmZvcm1hdFZhbHVlKGRhdGUpLFxuICAgICAgcGFyc2U6IChzdHIpID0+IERhdGVVdGlsLnBhcnNlKHN0ciksXG4gICAgICBibG9ja3M6IHtcbiAgICAgICAgZDoge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ0QnLFxuICAgICAgICAgIGZyb206IDEsXG4gICAgICAgICAgdG86IDMxLFxuICAgICAgICAgIG1heExlbmd0aDogMixcbiAgICAgICAgfSxcbiAgICAgICAgbToge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ00nLFxuICAgICAgICAgIGZyb206IDEsXG4gICAgICAgICAgdG86IDEyLFxuICAgICAgICAgIG1heExlbmd0aDogMixcbiAgICAgICAgfSxcbiAgICAgICAgWToge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ1knLFxuICAgICAgICAgIGZyb206IDE5MDAsXG4gICAgICAgICAgdG86IDk5OTksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBub3JtYWxpemUodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB0aGlzLmxhYmVscy5kYXRlRm9ybWF0LnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBEYXRlVXRpbC5mb3JtYXQoRGF0ZVV0aWwucGFyc2UodmFsdWUpLCBwYXR0ZXJuKTtcbiAgfVxuXG4gIGZvcm1hdEFzSXNvKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGlmIChkYXRlICYmIGlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XG4gICAgLy8gVXNlIGBwYXJzZWAgYmVjYXVzZSBpdCBrZWVwcyBkYXRlcyBpbiBsb2NhbGVcbiAgICBjb25zdCBkYXRlID0gRGF0ZVV0aWwucGFyc2UodmFsdWUpO1xuICAgIGlmIChpc1ZhbGlkKGRhdGUpKSB7XG4gICAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5sYWJlbHMuZGF0ZUZvcm1hdC50b1VwcGVyQ2FzZSgpO1xuICAgICAgcmV0dXJuIERhdGVVdGlsLmZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubm9ybWFsaXplKHZhbHVlKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHN1cGVyLndyaXRlVmFsdWUodGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSAoZGF0ZTogYW55KSA9PiB7XG4gICAgICBsZXQgZm9ybWF0dGVkID0gZGF0ZTtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRlRm9ybWF0KSB7XG4gICAgICAgIGNhc2UgREFURV9GT1JNQVRTLklTTzg2MDE6XG4gICAgICAgICAgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXRBc0lzbyhkYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBEQVRFX0ZPUk1BVFMuU1RSSU5HOlxuICAgICAgICAgIGZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0VmFsdWUoZGF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgZm9ybWF0dGVkID0gZGF0ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgICAgIGZuKGZvcm1hdHRlZCk7XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
- import { Directive, Input, ViewChild } from '@angular/core';
1
+ import { Directive, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';
2
+ import { FormControlName } from '@angular/forms';
2
3
  import { NovoLabelService } from 'novo-elements/services';
3
4
  import { NovoConditionFieldDef } from '../query-builder.directives';
4
5
  import * as i0 from "@angular/core";
@@ -16,18 +17,51 @@ export class AbstractConditionFieldDef {
16
17
  }
17
18
  constructor(labels) {
18
19
  this.labels = labels;
20
+ this.operatorEditGroups = [];
19
21
  }
20
22
  ngOnInit() {
21
23
  this._syncFieldDefName();
22
24
  this._syncFieldDefOperatorValue();
25
+ this._previousOperatorValue = this.defaultOperator;
23
26
  // Need to add self to FilterBuilder because "ContentChildren won't find it"
24
27
  this.fieldDef?.register();
25
28
  }
29
+ ngAfterViewInit() {
30
+ setTimeout(() => {
31
+ this.frameAfterViewInit();
32
+ });
33
+ }
34
+ frameAfterViewInit() {
35
+ const operatorField = this.formControlsByName.find(formControlDirective => formControlDirective.name === 'operator')?.control;
36
+ if (operatorField) {
37
+ this._previousOperatorValue = operatorField.value;
38
+ }
39
+ }
26
40
  ngOnDestroy() {
27
41
  this.fieldDef?.unregister();
28
42
  }
43
+ /**
44
+ * Define an edit group of operators. Once defined, if the user switches from one of these operators to another,
45
+ * then the condition value will not be cleared. This makes sense if both operators use the same UI controls for editing.
46
+ * @param operators The set of Operator values intended to share UI controls.
47
+ */
48
+ defineOperatorEditGroup(...operators) {
49
+ this.operatorEditGroups.push(new Set(operators));
50
+ }
29
51
  onOperatorSelect(formGroup) {
30
- formGroup.get('value').setValue(null);
52
+ let clearVal = true;
53
+ if (this._previousOperatorValue && this.operatorEditGroups?.length) {
54
+ const previousOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(this._previousOperatorValue));
55
+ const newOperatorValue = formGroup.get('operator').getRawValue();
56
+ const newOperatorGroupIndex = this.operatorEditGroups.findIndex(grp => grp.has(newOperatorValue));
57
+ if (previousOperatorGroupIndex !== -1 && newOperatorGroupIndex !== -1 && previousOperatorGroupIndex === newOperatorGroupIndex) {
58
+ clearVal = false;
59
+ }
60
+ }
61
+ this._previousOperatorValue = formGroup.get('operator').value;
62
+ if (clearVal) {
63
+ formGroup.get('value').setValue(null);
64
+ }
31
65
  }
32
66
  /** Synchronizes the column definition name with the text column name. */
33
67
  _syncFieldDefName() {
@@ -41,7 +75,7 @@ export class AbstractConditionFieldDef {
41
75
  }
42
76
  }
43
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AbstractConditionFieldDef, deps: [{ token: i1.NovoLabelService }], target: i0.ɵɵFactoryTarget.Directive }); }
44
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.3", type: AbstractConditionFieldDef, inputs: { name: "name" }, viewQueries: [{ propertyName: "fieldDef", first: true, predicate: NovoConditionFieldDef, descendants: true, static: true }], ngImport: i0 }); }
78
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.3", type: AbstractConditionFieldDef, inputs: { name: "name" }, viewQueries: [{ propertyName: "fieldDef", first: true, predicate: NovoConditionFieldDef, descendants: true, static: true }, { propertyName: "formControlsByName", predicate: FormControlName, descendants: true }], ngImport: i0 }); }
45
79
  }
46
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AbstractConditionFieldDef, decorators: [{
47
81
  type: Directive
@@ -50,5 +84,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
50
84
  }], fieldDef: [{
51
85
  type: ViewChild,
52
86
  args: [NovoConditionFieldDef, { static: true }]
87
+ }], formControlsByName: [{
88
+ type: ViewChildren,
89
+ args: [FormControlName]
53
90
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1kZWZpbml0aW9ucy9hYnN0cmFjdC1jb25kaXRpb24uZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFJcEUsTUFBTSxPQUFnQix5QkFBeUI7SUFDN0MsZ0VBQWdFO0lBQ2hFLElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixzRUFBc0U7UUFDdEUsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFPRCxZQUFtQixNQUF3QjtRQUF4QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUFHLENBQUM7SUFFL0MsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBMkI7UUFDMUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELHlFQUF5RTtJQUNqRSxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDOzhHQTlDbUIseUJBQXlCO2tHQUF6Qix5QkFBeUIsOEZBZ0JsQyxxQkFBcUI7OzJGQWhCWix5QkFBeUI7a0JBRDlDLFNBQVM7cUZBSUosSUFBSTtzQkFEUCxLQUFLO2dCQWM4QyxRQUFRO3NCQUEzRCxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnbm92by1lbGVtZW50cy9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBOb3ZvQ29uZGl0aW9uRmllbGREZWYgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLnR5cGVzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RDb25kaXRpb25GaWVsZERlZiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqIENvbHVtbiBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgY29sdW1uLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIC8vIFdpdGggSXZ5LCBpbnB1dHMgY2FuIGJlIGluaXRpYWxpemVkIGJlZm9yZSBzdGF0aWMgcXVlcnkgcmVzdWx0cyBhcmVcbiAgICAvLyBhdmFpbGFibGUuIEluIHRoYXQgY2FzZSwgd2UgZGVmZXIgdGhlIHN5bmNocm9uaXphdGlvbiB1bnRpbCBcIm5nT25Jbml0XCIgZmlyZXMuXG4gICAgdGhpcy5fc3luY0ZpZWxkRGVmTmFtZSgpO1xuICB9XG4gIF9uYW1lOiBzdHJpbmc7XG5cbiAgZGVmYXVsdE9wZXJhdG9yOiBPcGVyYXRvciB8IHN0cmluZztcblxuICBAVmlld0NoaWxkKE5vdm9Db25kaXRpb25GaWVsZERlZiwgeyBzdGF0aWM6IHRydWUgfSkgZmllbGREZWY6IE5vdm9Db25kaXRpb25GaWVsZERlZjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbGFiZWxzOiBOb3ZvTGFiZWxTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3N5bmNGaWVsZERlZk5hbWUoKTtcbiAgICB0aGlzLl9zeW5jRmllbGREZWZPcGVyYXRvclZhbHVlKCk7XG4gICAgLy8gTmVlZCB0byBhZGQgc2VsZiB0byBGaWx0ZXJCdWlsZGVyIGJlY2F1c2UgXCJDb250ZW50Q2hpbGRyZW4gd29uJ3QgZmluZCBpdFwiXG4gICAgdGhpcy5maWVsZERlZj8ucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZmllbGREZWY/LnVucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIG9uT3BlcmF0b3JTZWxlY3QoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgZm9ybUdyb3VwLmdldCgndmFsdWUnKS5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIC8qKiBTeW5jaHJvbml6ZXMgdGhlIGNvbHVtbiBkZWZpbml0aW9uIG5hbWUgd2l0aCB0aGUgdGV4dCBjb2x1bW4gbmFtZS4gKi9cbiAgcHJpdmF0ZSBfc3luY0ZpZWxkRGVmTmFtZSgpIHtcbiAgICBpZiAodGhpcy5maWVsZERlZikge1xuICAgICAgdGhpcy5maWVsZERlZi5uYW1lID0gdGhpcy5uYW1lO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNGaWVsZERlZk9wZXJhdG9yVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZmllbGREZWYpIHtcbiAgICAgIHRoaXMuZmllbGREZWYuZGVmYXVsdE9wZXJhdG9yID0gdGhpcy5kZWZhdWx0T3BlcmF0b3I7XG4gICAgfVxuICB9XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29uZGl0aW9uLmRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1kZWZpbml0aW9ucy9hYnN0cmFjdC1jb25kaXRpb24uZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBd0IsZUFBZSxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBNkIsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBSS9GLE1BQU0sT0FBZ0IseUJBQXlCO0lBQzdDLGdFQUFnRTtJQUNoRSxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsc0VBQXNFO1FBQ3RFLGdGQUFnRjtRQUNoRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBV0QsWUFBbUIsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFMakMsdUJBQWtCLEdBQW9CLEVBQUUsQ0FBQztJQUtMLENBQUM7SUFFL0MsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZUFBMkIsQ0FBQztRQUMvRCw0RUFBNEU7UUFD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ZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgTm92b0NvbmRpdGlvbkZpZWxkRGVmLCBOb3ZvQ29uZGl0aW9uT3BlcmF0b3JzRGVmIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci5kaXJlY3RpdmVzJztcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci50eXBlcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29uZGl0aW9uRmllbGREZWYgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKiBDb2x1bW4gbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIGNvbHVtbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuICBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAvLyBXaXRoIEl2eSwgaW5wdXRzIGNhbiBiZSBpbml0aWFsaXplZCBiZWZvcmUgc3RhdGljIHF1ZXJ5IHJlc3VsdHMgYXJlXG4gICAgLy8gYXZhaWxhYmxlLiBJbiB0aGF0IGNhc2UsIHdlIGRlZmVyIHRoZSBzeW5jaHJvbml6YXRpb24gdW50aWwgXCJuZ09uSW5pdFwiIGZpcmVzLlxuICAgIHRoaXMuX3N5bmNGaWVsZERlZk5hbWUoKTtcbiAgfVxuICBfbmFtZTogc3RyaW5nO1xuXG4gIGRlZmF1bHRPcGVyYXRvcjogT3BlcmF0b3IgfCBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcHJldmlvdXNPcGVyYXRvclZhbHVlOiBPcGVyYXRvcjtcblxuICBwcm90ZWN0ZWQgb3BlcmF0b3JFZGl0R3JvdXBzOiBTZXQ8T3BlcmF0b3I+W10gPSBbXTtcblxuICBAVmlld0NoaWxkKE5vdm9Db25kaXRpb25GaWVsZERlZiwgeyBzdGF0aWM6IHRydWUgfSkgZmllbGREZWY6IE5vdm9Db25kaXRpb25GaWVsZERlZjtcbiAgQFZpZXdDaGlsZHJlbihGb3JtQ29udHJvbE5hbWUpIGZvcm1Db250cm9sc0J5TmFtZTogUXVlcnlMaXN0PEZvcm1Db250cm9sTmFtZT47XG5cbiAgY29uc3RydWN0b3IocHVibGljIGxhYmVsczogTm92b0xhYmVsU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zeW5jRmllbGREZWZOYW1lKCk7XG4gICAgdGhpcy5fc3luY0ZpZWxkRGVmT3BlcmF0b3JWYWx1ZSgpO1xuICAgIHRoaXMuX3ByZXZpb3VzT3BlcmF0b3JWYWx1ZSA9IHRoaXMuZGVmYXVsdE9wZXJhdG9yIGFzIE9wZXJhdG9yO1xuICAgIC8vIE5lZWQgdG8gYWRkIHNlbGYgdG8gRmlsdGVyQnVpbGRlciBiZWNhdXNlIFwiQ29udGVudENoaWxkcmVuIHdvbid0IGZpbmQgaXRcIlxuICAgIHRoaXMuZmllbGREZWY/LnJlZ2lzdGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZyYW1lQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnJhbWVBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IG9wZXJhdG9yRmllbGQgPSB0aGlzLmZvcm1Db250cm9sc0J5TmFtZS5maW5kKGZvcm1Db250cm9sRGlyZWN0aXZlID0+IGZvcm1Db250cm9sRGlyZWN0aXZlLm5hbWUgPT09ICdvcGVyYXRvcicpPy5jb250cm9sO1xuICAgIGlmIChvcGVyYXRvckZpZWxkKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c09wZXJhdG9yVmFsdWUgPSBvcGVyYXRvckZpZWxkLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZmllbGREZWY/LnVucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgYW4gZWRpdCBncm91cCBvZiBvcGVyYXRvcnMuIE9uY2UgZGVmaW5lZCwgaWYgdGhlIHVzZXIgc3dpdGNoZXMgZnJvbSBvbmUgb2YgdGhlc2Ugb3BlcmF0b3JzIHRvIGFub3RoZXIsXG4gICAqIHRoZW4gdGhlIGNvbmRpdGlvbiB2YWx1ZSB3aWxsIG5vdCBiZSBjbGVhcmVkLiBUaGlzIG1ha2VzIHNlbnNlIGlmIGJvdGggb3BlcmF0b3JzIHVzZSB0aGUgc2FtZSBVSSBjb250cm9scyBmb3IgZWRpdGluZy5cbiAgICogQHBhcmFtIG9wZXJhdG9ycyBUaGUgc2V0IG9mIE9wZXJhdG9yIHZhbHVlcyBpbnRlbmRlZCB0byBzaGFyZSBVSSBjb250cm9scy5cbiAgICovXG4gIHByb3RlY3RlZCBkZWZpbmVPcGVyYXRvckVkaXRHcm91cCguLi5vcGVyYXRvcnM6IE9wZXJhdG9yW10pOiB2b2lkIHtcbiAgICB0aGlzLm9wZXJhdG9yRWRpdEdyb3Vwcy5wdXNoKG5ldyBTZXQob3BlcmF0b3JzKSk7XG4gIH1cblxuICBvbk9wZXJhdG9yU2VsZWN0KGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGxldCBjbGVhclZhbCA9IHRydWU7XG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzT3BlcmF0b3JWYWx1ZSAmJiB0aGlzLm9wZXJhdG9yRWRpdEdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwcmV2aW91c09wZXJhdG9yR3JvdXBJbmRleCA9IHRoaXMub3BlcmF0b3JFZGl0R3JvdXBzLmZpbmRJbmRleChncnAgPT4gZ3JwLmhhcyh0aGlzLl9wcmV2aW91c09wZXJhdG9yVmFsdWUpKTtcbiAgICAgIGNvbnN0IG5ld09wZXJhdG9yVmFsdWUgPSBmb3JtR3JvdXAuZ2V0KCdvcGVyYXRvcicpLmdldFJhd1ZhbHVlKCk7XG4gICAgICBjb25zdCBuZXdPcGVyYXRvckdyb3VwSW5kZXggPSB0aGlzLm9wZXJhdG9yRWRpdEdyb3Vwcy5maW5kSW5kZXgoZ3JwID0+IGdycC5oYXMobmV3T3BlcmF0b3JWYWx1ZSkpO1xuICAgICAgaWYgKHByZXZpb3VzT3BlcmF0b3JHcm91cEluZGV4ICE9PSAtMSAmJiBuZXdPcGVyYXRvckdyb3VwSW5kZXggIT09IC0xICYmIHByZXZpb3VzT3BlcmF0b3JHcm91cEluZGV4ID09PSBuZXdPcGVyYXRvckdyb3VwSW5kZXgpIHtcbiAgICAgICAgY2xlYXJWYWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcHJldmlvdXNPcGVyYXRvclZhbHVlID0gZm9ybUdyb3VwLmdldCgnb3BlcmF0b3InKS52YWx1ZTtcbiAgICBpZiAoY2xlYXJWYWwpIHtcbiAgICAgIGZvcm1Hcm91cC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN5bmNocm9uaXplcyB0aGUgY29sdW1uIGRlZmluaXRpb24gbmFtZSB3aXRoIHRoZSB0ZXh0IGNvbHVtbiBuYW1lLiAqL1xuICBwcml2YXRlIF9zeW5jRmllbGREZWZOYW1lKCkge1xuICAgIGlmICh0aGlzLmZpZWxkRGVmKSB7XG4gICAgICB0aGlzLmZpZWxkRGVmLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0ZpZWxkRGVmT3BlcmF0b3JWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5maWVsZERlZikge1xuICAgICAgdGhpcy5maWVsZERlZi5kZWZhdWx0T3BlcmF0b3IgPSB0aGlzLmRlZmF1bHRPcGVyYXRvcjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==