ngx-material-entity 15.2.0 → 15.2.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 (56) hide show
  1. package/README.md +3 -3
  2. package/components/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  3. package/components/input/array/array-table.class.d.ts +13 -2
  4. package/components/input/input.component.d.ts +18 -1
  5. package/components/input/relations/references-many-input/references-many-input.component.d.ts +10 -0
  6. package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +1 -1
  7. package/components/table/create-dialog/create-entity-dialog.component.d.ts +1 -1
  8. package/components/table/default.actions.d.ts +8 -0
  9. package/components/table/display-column-value/base-display-column-value.component.d.ts +15 -0
  10. package/components/table/display-column-value/display-column-value.component.d.ts +17 -0
  11. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +1 -1
  12. package/components/table/table-data.d.ts +13 -1
  13. package/components/table/table.component.d.ts +15 -5
  14. package/decorators/object/object-decorator-internal.data.d.ts +1 -0
  15. package/decorators/object/object-decorator.data.d.ts +4 -0
  16. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +18 -8
  17. package/esm2020/components/edit-page/edit-page.component.mjs +11 -4
  18. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +3 -3
  19. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +3 -3
  20. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +3 -3
  21. package/esm2020/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +3 -5
  22. package/esm2020/components/input/array/array-table.class.mjs +19 -5
  23. package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +3 -3
  24. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +4 -3
  25. package/esm2020/components/input/input.component.mjs +41 -8
  26. package/esm2020/components/input/relations/references-many-input/references-many-input.component.mjs +17 -3
  27. package/esm2020/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +3 -4
  28. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +21 -9
  29. package/esm2020/components/table/default.actions.mjs +22 -1
  30. package/esm2020/components/table/display-column-value/base-display-column-value.component.mjs +27 -0
  31. package/esm2020/components/table/display-column-value/display-column-value.component.mjs +33 -0
  32. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +22 -9
  33. package/esm2020/components/table/table-data.mjs +1 -1
  34. package/esm2020/components/table/table.component.mjs +77 -29
  35. package/esm2020/decorators/object/object-decorator-internal.data.mjs +2 -1
  36. package/esm2020/decorators/object/object-decorator.data.mjs +1 -1
  37. package/esm2020/public-api.mjs +5 -8
  38. package/esm2020/services/entity.service.mjs +7 -3
  39. package/esm2020/utilities/date.utilities.mjs +1 -1
  40. package/esm2020/utilities/entity.utilities.mjs +19 -10
  41. package/fesm2015/ngx-material-entity.mjs +426 -336
  42. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  43. package/fesm2020/ngx-material-entity.mjs +421 -333
  44. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  45. package/package.json +1 -1
  46. package/public-api.d.ts +4 -7
  47. package/services/entity.service.d.ts +7 -3
  48. package/utilities/entity.utilities.d.ts +2 -1
  49. package/components/confirm-dialog/confirm-dialog.module.d.ts +0 -12
  50. package/components/table/create-dialog/create-entity-dialog.module.d.ts +0 -13
  51. package/components/table/edit-dialog/edit-entity-dialog.module.d.ts +0 -14
  52. package/components/table/table.module.d.ts +0 -20
  53. package/esm2020/components/confirm-dialog/confirm-dialog.module.mjs +0 -22
  54. package/esm2020/components/table/create-dialog/create-entity-dialog.module.mjs +0 -40
  55. package/esm2020/components/table/edit-dialog/edit-entity-dialog.module.mjs +0 -44
  56. package/esm2020/components/table/table.module.mjs +0 -68
package/README.md CHANGED
@@ -163,14 +163,14 @@ export class MyEntityService extends EntityService<MyEntity> {
163
163
  ```
164
164
 
165
165
  ### Define the Table-Element
166
- Import the `NgxMatEntityTableModule` anywhere in your code:
166
+ Import the `NgxMatEntityTableComponent` anywhere in your code:
167
167
 
168
168
  ```typescript
169
- import { NgxMatEntityTableModule } from 'ngx-material-entity';
169
+ import { NgxMatEntityTableComponent } from 'ngx-material-entity';
170
170
 
171
171
  ...
172
172
  imports: [
173
- NgxMatEntityTableModule
173
+ NgxMatEntityTableComponent
174
174
  ]
175
175
  ...
176
176
  ```
@@ -24,5 +24,5 @@ export declare class NgxMatEntityConfirmDialogComponent implements OnInit {
24
24
  */
25
25
  cancel(): void;
26
26
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityConfirmDialogComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityConfirmDialogComponent, "ngx-mat-entity-confirm-dialog", never, {}, {}, never, never, false, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityConfirmDialogComponent, "ngx-mat-entity-confirm-dialog", never, {}, {}, never, never, true, never>;
28
28
  }
@@ -1,10 +1,11 @@
1
1
  import { SelectionModel } from '@angular/cdk/collections';
2
- import { OnInit } from '@angular/core';
2
+ import { EnvironmentInjector, OnInit } from '@angular/core';
3
3
  import { MatDialog } from '@angular/material/dialog';
4
4
  import { MatTableDataSource } from '@angular/material/table';
5
5
  import { BaseEntityType } from '../../../classes/entity.model';
6
6
  import { DecoratorTypes } from '../../../decorators/base/decorator-types.enum';
7
7
  import { SelectionUtilities } from '../../../utilities/selection.utilities';
8
+ import { DisplayColumn } from '../../table/table-data';
8
9
  import { NgxMatEntityBaseInputComponent } from '../base-input.component';
9
10
  import * as i0 from "@angular/core";
10
11
  declare type ArrayTableType = DecoratorTypes.ARRAY | DecoratorTypes.ARRAY_DATE | DecoratorTypes.ARRAY_DATE_RANGE | DecoratorTypes.ARRAY_DATE_TIME;
@@ -13,13 +14,23 @@ declare type ArrayTableType = DecoratorTypes.ARRAY | DecoratorTypes.ARRAY_DATE |
13
14
  */
14
15
  export declare abstract class ArrayTableComponent<ValueType, EntityType extends BaseEntityType<EntityType>, ArrayType extends ArrayTableType> extends NgxMatEntityBaseInputComponent<EntityType, ArrayType, ValueType[]> implements OnInit {
15
16
  private readonly matDialog;
17
+ private readonly injector;
16
18
  input?: ValueType;
17
19
  dataSource: MatTableDataSource<ValueType>;
18
20
  selection: SelectionModel<ValueType>;
19
21
  displayedColumns: string[];
20
22
  SelectionUtilities: typeof SelectionUtilities;
21
- constructor(matDialog: MatDialog);
23
+ constructor(matDialog: MatDialog, injector: EnvironmentInjector);
22
24
  ngOnInit(): void;
25
+ /**
26
+ * Gets the value to display in the column.
27
+ * Runs in environment context to enable injection.
28
+ *
29
+ * @param entity - The entity to get the value from.
30
+ * @param displayColumn - The display column to get the value from.
31
+ * @returns The value of the display column.
32
+ */
33
+ getDisplayColumnValue(entity: ValueType, displayColumn: DisplayColumn<ValueType>): unknown;
23
34
  /**
24
35
  * Tries to add an item to the array.
25
36
  */
@@ -16,6 +16,7 @@ import { DateUtilities } from '../../utilities/date.utilities';
16
16
  import { EntityTab, EntityUtilities } from '../../utilities/entity.utilities';
17
17
  import { SelectionUtilities } from '../../utilities/selection.utilities';
18
18
  import { CreateDialogDataInternal } from '../table/create-dialog/create-dialog-data.builder';
19
+ import { DisplayColumn } from '../table/table-data';
19
20
  import { BaseTableActionInternal, TableActionInternal } from '../table/table-data.builder';
20
21
  import * as i0 from "@angular/core";
21
22
  /**
@@ -61,6 +62,13 @@ export declare class NgxMatEntityInputComponent<EntityType extends BaseEntityTyp
61
62
  * @default false
62
63
  */
63
64
  hideOmitForEdit?: boolean;
65
+ /**
66
+ * Whether or not an empty value should be valid.
67
+ * Is used internally for the object property.
68
+ *
69
+ * @default undefined
70
+ */
71
+ validEmpty?: boolean;
64
72
  /**
65
73
  * Whether or not the input should be readonly.
66
74
  * In that case it is disabled, but most of the default styling is overwritten.
@@ -134,6 +142,15 @@ export declare class NgxMatEntityInputComponent<EntityType extends BaseEntityTyp
134
142
  * @returns The index.
135
143
  */
136
144
  trackByFn(index: unknown): unknown;
145
+ /**
146
+ * Gets the value to display in the column.
147
+ * Runs in environment context to enable injection.
148
+ *
149
+ * @param entity - The entity to get the value from.
150
+ * @param displayColumn - The display column to get the value from.
151
+ * @returns The value of the display column.
152
+ */
153
+ getDisplayColumnValue(entity: EntityType, displayColumn: DisplayColumn<EntityType>): unknown;
137
154
  ngOnInit(): void;
138
155
  private initHasMany;
139
156
  private initEntityArray;
@@ -261,5 +278,5 @@ export declare class NgxMatEntityInputComponent<EntityType extends BaseEntityTyp
261
278
  */
262
279
  removeFromEntityArray(): void;
263
280
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityInputComponent<any>, never>;
264
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityInputComponent<any>, "ngx-mat-entity-input", never, { "entity": "entity"; "propertyKey": "propertyKey"; "getValidationErrorMessage": "getValidationErrorMessage"; "hideOmitForCreate": "hideOmitForCreate"; "hideOmitForEdit": "hideOmitForEdit"; "isReadOnly": "isReadOnly"; }, { "inputChangeEvent": "inputChangeEvent"; }, never, never, false, never>;
281
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityInputComponent<any>, "ngx-mat-entity-input", never, { "entity": "entity"; "propertyKey": "propertyKey"; "getValidationErrorMessage": "getValidationErrorMessage"; "hideOmitForCreate": "hideOmitForCreate"; "hideOmitForEdit": "hideOmitForEdit"; "validEmpty": "validEmpty"; "isReadOnly": "isReadOnly"; }, { "inputChangeEvent": "inputChangeEvent"; }, never, never, false, never>;
265
282
  }
@@ -5,6 +5,7 @@ import { BaseEntityType } from '../../../../classes/entity.model';
5
5
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
6
6
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
7
7
  import { SelectionUtilities } from '../../../../utilities/selection.utilities';
8
+ import { DisplayColumn } from '../../../table/table-data';
8
9
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
9
10
  import * as i0 from "@angular/core";
10
11
  export declare class ReferencesManyInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.REFERENCES_MANY, string[]> implements OnInit {
@@ -19,6 +20,15 @@ export declare class ReferencesManyInputComponent<EntityType extends BaseEntityT
19
20
  SelectionUtilities: typeof SelectionUtilities;
20
21
  constructor(injector: EnvironmentInjector);
21
22
  ngOnInit(): Promise<void>;
23
+ /**
24
+ * Gets the value to display in the column.
25
+ * Runs in environment context to enable injection.
26
+ *
27
+ * @param entityId - The id of the entity to get the value from.
28
+ * @param displayColumn - The display column to get the value from.
29
+ * @returns The value of the display column.
30
+ */
31
+ getDisplayColumnValue(entityId: string, displayColumn: DisplayColumn<EntityType>): unknown;
22
32
  add(): Promise<void>;
23
33
  addAll(): void;
24
34
  remove(): void;
@@ -1,6 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
3
2
  import { BaseEntityType } from '../../../../classes/entity.model';
3
+ import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
4
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class StringAutocompleteInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.STRING_AUTOCOMPLETE, string> implements OnInit {
@@ -39,5 +39,5 @@ export declare class NgxMatEntityCreateDialogComponent<EntityType extends BaseEn
39
39
  */
40
40
  cancel(): void;
41
41
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityCreateDialogComponent<any>, never>;
42
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityCreateDialogComponent<any>, "ngx-mat-entity-create-dialog", never, {}, {}, never, never, false, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityCreateDialogComponent<any>, "ngx-mat-entity-create-dialog", never, {}, {}, never, never, true, never>;
43
43
  }
@@ -1,4 +1,12 @@
1
+ import { Type } from '@angular/core';
1
2
  import { BaseEntityType } from '../../classes/entity.model';
3
+ import { EntityService } from '../../services/entity.service';
4
+ /**
5
+ * A multi select action that imports the data from a json file.
6
+ *
7
+ * @param EntityServiceClass - The entity class that handles importing the file.
8
+ */
9
+ export declare function importFromJsonMultiAction<EntityType extends BaseEntityType<EntityType>>(EntityServiceClass: Type<EntityService<EntityType>>): void;
2
10
  /**
3
11
  * A multi select action that exports the data as a json file.
4
12
  *
@@ -0,0 +1,15 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { BaseEntityType } from '../../../classes/entity.model';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * The base component for custom display values.
6
+ *
7
+ * Contains the entity for which the component gets displayed.
8
+ */
9
+ export declare abstract class NgxMatEntityBaseDisplayColumnValueComponent<EntityType extends BaseEntityType<EntityType>> implements OnInit {
10
+ entity: EntityType;
11
+ constructor();
12
+ ngOnInit(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityBaseDisplayColumnValueComponent<any>, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityBaseDisplayColumnValueComponent<any>, "ngx-mat-entity-base-display-column-value", never, { "entity": "entity"; }, {}, never, never, false, never>;
15
+ }
@@ -0,0 +1,17 @@
1
+ import { ComponentRef, OnInit, Type, ViewContainerRef } from '@angular/core';
2
+ import { BaseEntityType } from '../../../classes/entity.model';
3
+ import { NgxMatEntityBaseDisplayColumnValueComponent } from './base-display-column-value.component';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * The component that displays the custom display column value.
7
+ */
8
+ export declare class DisplayColumnValueComponent<EntityType extends BaseEntityType<EntityType>> implements OnInit {
9
+ private readonly viewContainerRef;
10
+ entity: EntityType;
11
+ ComponentClass: Type<NgxMatEntityBaseDisplayColumnValueComponent<EntityType>>;
12
+ component: ComponentRef<NgxMatEntityBaseDisplayColumnValueComponent<EntityType>>;
13
+ constructor(viewContainerRef: ViewContainerRef);
14
+ ngOnInit(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<DisplayColumnValueComponent<any>, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<DisplayColumnValueComponent<any>, "display-column-value", never, { "entity": "entity"; "ComponentClass": "ComponentClass"; }, {}, never, never, true, never>;
17
+ }
@@ -55,5 +55,5 @@ export declare class NgxMatEntityEditDialogComponent<EntityType extends BaseEnti
55
55
  */
56
56
  cancel(): void;
57
57
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityEditDialogComponent<any>, never>;
58
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityEditDialogComponent<any>, "ngx-mat-entity-edit-dialog", never, {}, {}, never, never, false, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityEditDialogComponent<any>, "ngx-mat-entity-edit-dialog", never, {}, {}, never, never, true, never>;
59
59
  }
@@ -1,7 +1,9 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
+ import { Type } from '@angular/core';
2
3
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
3
4
  import { EntityService } from '../../services/entity.service';
4
5
  import { ConfirmDialogData } from '../confirm-dialog/confirm-dialog-data';
6
+ import { NgxMatEntityBaseDisplayColumnValueComponent } from './display-column-value/base-display-column-value.component';
5
7
  /**
6
8
  * The Definition of a Column inside the table.
7
9
  */
@@ -11,9 +13,19 @@ export interface DisplayColumn<EntityType extends BaseEntityType<EntityType>> {
11
13
  */
12
14
  displayName: string;
13
15
  /**
14
- * A method to get the value inside an row.
16
+ * What to display inside the row.
15
17
  */
16
18
  value: (entity: EntityType) => string;
19
+ /**
20
+ * A custom component to use instead of the value.
21
+ * You still need to provide a value function for the sorting by header to work.
22
+ */
23
+ Component?: Type<NgxMatEntityBaseDisplayColumnValueComponent<EntityType>>;
24
+ /**
25
+ * Whether or not the click event should be disabled.
26
+ * This can be useful if your component has a custom way to handle clicks.
27
+ */
28
+ disableClick?: boolean;
17
29
  }
18
30
  /**
19
31
  * A table action that will run regardless if something has been selected in the table.
@@ -1,5 +1,5 @@
1
1
  import { SelectionModel } from '@angular/cdk/collections';
2
- import { Injector, OnDestroy, OnInit } from '@angular/core';
2
+ import { EnvironmentInjector, OnDestroy, OnInit } from '@angular/core';
3
3
  import { MatDialog } from '@angular/material/dialog';
4
4
  import { MatPaginator } from '@angular/material/paginator';
5
5
  import { MatSort } from '@angular/material/sort';
@@ -7,7 +7,7 @@ import { MatTableDataSource } from '@angular/material/table';
7
7
  import { Router } from '@angular/router';
8
8
  import { BaseEntityType, Entity } from '../../classes/entity.model';
9
9
  import { SelectionUtilities } from '../../utilities/selection.utilities';
10
- import { TableData } from './table-data';
10
+ import { DisplayColumn, TableData } from './table-data';
11
11
  import { BaseTableActionInternal, TableActionInternal, TableDataInternal } from './table-data.builder';
12
12
  import * as i0 from "@angular/core";
13
13
  /**
@@ -36,20 +36,30 @@ export declare class NgxMatEntityTableComponent<EntityType extends BaseEntityTyp
36
36
  selection: SelectionModel<EntityType>;
37
37
  SelectionUtilities: typeof SelectionUtilities;
38
38
  importAction: BaseTableActionInternal;
39
- constructor(dialog: MatDialog, injector: Injector, router: Router);
39
+ constructor(dialog: MatDialog, injector: EnvironmentInjector, router: Router);
40
40
  /**
41
41
  * Sets up all the configuration for the table and the EntityService.
42
42
  */
43
43
  ngOnInit(): void;
44
+ /**
45
+ * Gets the value to display in the column.
46
+ * Runs in environment context to enable injection.
47
+ *
48
+ * @param entity - The entity to get the value from.
49
+ * @param displayColumn - The display column to get the value from.
50
+ * @returns The value of the display column.
51
+ */
52
+ getDisplayColumnValue(entity: EntityType, displayColumn: DisplayColumn<EntityType>): unknown;
44
53
  private startImportJson;
45
54
  private importJson;
46
55
  /**
47
56
  * Edits an entity. This either calls the edit-Method provided by the user or uses a default edit-dialog.
48
57
  *
49
58
  * @param entity - The entity that should be updated.
59
+ * @param dCol - The display column. Is needed if a custom component was used that handles the click event differently.
50
60
  * @throws When no EntityClass was provided, as a new call is needed to initialize metadata.
51
61
  */
52
- editEntity(entity: EntityType): void;
62
+ editEntity(entity: EntityType, dCol: DisplayColumn<EntityType>): void;
53
63
  private editDefaultPage;
54
64
  private editDefaultDialog;
55
65
  /**
@@ -82,5 +92,5 @@ export declare class NgxMatEntityTableComponent<EntityType extends BaseEntityTyp
82
92
  */
83
93
  applyFilter(event: Event): void;
84
94
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityTableComponent<any>, never>;
85
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityTableComponent<any>, "ngx-mat-entity-table", never, { "tableData": "tableData"; }, {}, never, never, false, never>;
95
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityTableComponent<any>, "ngx-mat-entity-table", never, { "tableData": "tableData"; }, {}, never, never, true, never>;
86
96
  }
@@ -7,5 +7,6 @@ import { DefaultObjectDecoratorConfig } from './object-decorator.data';
7
7
  export declare class DefaultObjectDecoratorConfigInternal<EntityType extends BaseEntityType<EntityType>> extends PropertyDecoratorConfigInternal implements DefaultObjectDecoratorConfig<EntityType> {
8
8
  displayStyle: 'inline';
9
9
  EntityClass: EntityClassNewable<EntityType>;
10
+ omit: (keyof EntityType)[];
10
11
  constructor(data: DefaultObjectDecoratorConfig<EntityType>);
11
12
  }
@@ -15,6 +15,10 @@ declare abstract class ObjectDecoratorConfig<EntityType extends BaseEntityType<E
15
15
  * Useful if the object only contains a few properties (e.g. A address on a user).
16
16
  */
17
17
  displayStyle: 'inline';
18
+ /**
19
+ * Some properties of the objects entity class that should be omitted.
20
+ */
21
+ omit?: (keyof EntityType)[];
18
22
  }
19
23
  /**
20
24
  * The configuration options for a object property.
@@ -1,12 +1,15 @@
1
1
  import { Component, Inject } from '@angular/core';
2
- import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
2
+ import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
3
3
  import { ConfirmDialogDataBuilder } from './confirm-dialog-data.builder';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatCheckboxModule } from '@angular/material/checkbox';
7
+ import { NgFor, NgIf } from '@angular/common';
4
8
  import * as i0 from "@angular/core";
5
9
  import * as i1 from "@angular/material/dialog";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "@angular/material/checkbox";
9
- import * as i5 from "@angular/material/button";
10
+ import * as i2 from "@angular/forms";
11
+ import * as i3 from "@angular/material/checkbox";
12
+ import * as i4 from "@angular/material/button";
10
13
  /**
11
14
  * The Dialog used whenever confirmation by the user is required (e.g. When the user tries to delete an entity).
12
15
  *
@@ -36,12 +39,19 @@ export class NgxMatEntityConfirmDialogComponent {
36
39
  }
37
40
  }
38
41
  NgxMatEntityConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
39
- NgxMatEntityConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxMatEntityConfirmDialogComponent, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "<h2 mat-dialog-title *ngIf=\"data.title\">{{data.title}}</h2>\n\n<mat-dialog-content>\n <p *ngFor=\"let paragraph of data.text\">{{paragraph}}</p>\n <div *ngIf=\"data.requireConfirmation\" class=\"checkbox-wrapper\">\n <mat-checkbox [(ngModel)]=\"confirm\" name=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button type=\"button\" *ngIf=\"data.type === 'delete'\" mat-raised-button color=\"warn\" (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'delete'\" mat-raised-button (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'info-only'\" mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}mat-dialog-actions{justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
42
+ NgxMatEntityConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxMatEntityConfirmDialogComponent, isStandalone: true, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "<h2 mat-dialog-title *ngIf=\"data.title\">{{data.title}}</h2>\n\n<mat-dialog-content>\n <p *ngFor=\"let paragraph of data.text\">{{paragraph}}</p>\n <div *ngIf=\"data.requireConfirmation\" class=\"checkbox-wrapper\">\n <mat-checkbox [(ngModel)]=\"confirm\" name=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button type=\"button\" *ngIf=\"data.type === 'delete'\" mat-raised-button color=\"warn\" (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'delete'\" mat-raised-button (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'info-only'\" mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}mat-dialog-actions{justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
40
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, decorators: [{
41
44
  type: Component,
42
- args: [{ selector: 'ngx-mat-entity-confirm-dialog', template: "<h2 mat-dialog-title *ngIf=\"data.title\">{{data.title}}</h2>\n\n<mat-dialog-content>\n <p *ngFor=\"let paragraph of data.text\">{{paragraph}}</p>\n <div *ngIf=\"data.requireConfirmation\" class=\"checkbox-wrapper\">\n <mat-checkbox [(ngModel)]=\"confirm\" name=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button type=\"button\" *ngIf=\"data.type === 'delete'\" mat-raised-button color=\"warn\" (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'delete'\" mat-raised-button (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'info-only'\" mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}mat-dialog-actions{justify-content:space-between}\n"] }]
45
+ args: [{ selector: 'ngx-mat-entity-confirm-dialog', standalone: true, imports: [
46
+ NgIf,
47
+ NgFor,
48
+ MatDialogModule,
49
+ FormsModule,
50
+ MatCheckboxModule,
51
+ MatButtonModule
52
+ ], template: "<h2 mat-dialog-title *ngIf=\"data.title\">{{data.title}}</h2>\n\n<mat-dialog-content>\n <p *ngFor=\"let paragraph of data.text\">{{paragraph}}</p>\n <div *ngIf=\"data.requireConfirmation\" class=\"checkbox-wrapper\">\n <mat-checkbox [(ngModel)]=\"confirm\" name=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button type=\"button\" *ngIf=\"data.type === 'delete'\" mat-raised-button color=\"warn\" (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'delete'\" mat-raised-button (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'info-only'\" mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}mat-dialog-actions{justify-content:space-between}\n"] }]
43
53
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
44
54
  type: Inject,
45
55
  args: [MAT_DIALOG_DATA]
46
56
  }] }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBRXBHOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sa0NBQWtDO0lBTTNDLFlBQ3FCLFNBQTJELEVBRTNELFNBQTRCO1FBRjVCLGNBQVMsR0FBVCxTQUFTLENBQWtEO1FBRTNELGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBUGpELFlBQU8sR0FBWSxLQUFLLENBQUM7SUFRdEIsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OytIQTdCUSxrQ0FBa0MsOENBUS9CLGVBQWU7bUhBUmxCLGtDQUFrQyxxRUNmL0Msb2xDQXNCQTsyRkRQYSxrQ0FBa0M7a0JBTDlDLFNBQVM7K0JBQ0ksK0JBQStCOzswQkFZcEMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuXG4vKipcbiAqIFRoZSBEaWFsb2cgdXNlZCB3aGVuZXZlciBjb25maXJtYXRpb24gYnkgdGhlIHVzZXIgaXMgcmVxdWlyZWQgKGUuZy4gV2hlbiB0aGUgdXNlciB0cmllcyB0byBkZWxldGUgYW4gZW50aXR5KS5cbiAqXG4gKiBDYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi4gQ3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIFwiQ29uZmlybURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZGF0YSE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBDb25maXJtRGlhbG9nRGF0YVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuaW5wdXREYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZyB3aXRoIHRydWUgdG8gc2lnbmFsIHRoYXQgdGhlIGFjdGlvbiBzaG91bGQgYmUgcnVuLlxuICAgICAqL1xuICAgIGNvbmZpcm1BY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICAgIH1cbn0iLCI8aDIgbWF0LWRpYWxvZy10aXRsZSAqbmdJZj1cImRhdGEudGl0bGVcIj57e2RhdGEudGl0bGV9fTwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPHAgKm5nRm9yPVwibGV0IHBhcmFncmFwaCBvZiBkYXRhLnRleHRcIj57e3BhcmFncmFwaH19PC9wPlxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb25cIiBjbGFzcz1cImNoZWNrYm94LXdyYXBwZXJcIj5cbiAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImNvbmZpcm1cIiBuYW1lPVwiY29uZmlybVwiPlxuICAgICAgICAgICAge3tkYXRhLmNvbmZpcm1hdGlvblRleHR9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGF0YS50eXBlID09PSAnZGVsZXRlJ1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKClcIiBbZGlzYWJsZWRdPVwiZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uICYmICFjb25maXJtXCIgY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiPlxuICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEudHlwZSAhPT0gJ2RlbGV0ZSdcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCIgW2Rpc2FibGVkXT1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbiAmJiAhY29uZmlybVwiIGNsYXNzPVwiY29uZmlybS1idXR0b25cIj5cbiAgICAgICAge3tkYXRhLmNvbmZpcm1CdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLnR5cGUgIT09ICdpbmZvLW9ubHknXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5jYW5jZWxCdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUU5Qzs7OztHQUlHO0FBZUgsTUFBTSxPQUFPLGtDQUFrQztJQU0zQyxZQUNxQixTQUEyRCxFQUUzRCxTQUE0QjtRQUY1QixjQUFTLEdBQVQsU0FBUyxDQUFrRDtRQUUzRCxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQVBqRCxZQUFPLEdBQVksS0FBSyxDQUFDO0lBUXRCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOzsrSEE3QlEsa0NBQWtDLDhDQVEvQixlQUFlO21IQVJsQixrQ0FBa0MseUZDNUIvQyxrbENBcUJxQiw2TUREYixJQUFJLDZGQUNKLEtBQUssa0hBQ0wsZUFBZSx5YkFDZixXQUFXLDhWQUNYLGlCQUFpQixnTEFDakIsZUFBZTsyRkFHVixrQ0FBa0M7a0JBZDlDLFNBQVM7K0JBQ0ksK0JBQStCLGNBRzdCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDbEI7OzBCQVVJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogVGhlIERpYWxvZyB1c2VkIHdoZW5ldmVyIGNvbmZpcm1hdGlvbiBieSB0aGUgdXNlciBpcyByZXF1aXJlZCAoZS5nLiBXaGVuIHRoZSB1c2VyIHRyaWVzIHRvIGRlbGV0ZSBhbiBlbnRpdHkpLlxuICpcbiAqIENhbiBiZSBjdXN0b21pemVkIHdpdGggdGhlIE1BVF9ESUFMT0dfREFUQSBcImlucHV0RGF0YVwiLiBDdXN0b21pemF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQgaW4gXCJDb25maXJtRGlhbG9nRGF0YVwiLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXQtZW50aXR5LWNvbmZpcm0tZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGNvbmZpcm06IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGRhdGEhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogQ29uZmlybURpYWxvZ0RhdGFcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmlucHV0RGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cgd2l0aCB0cnVlIHRvIHNpZ25hbCB0aGF0IHRoZSBhY3Rpb24gc2hvdWxkIGJlIHJ1bi5cbiAgICAgKi9cbiAgICBjb25maXJtQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcbiAgICB9XG59IiwiPGgyIG1hdC1kaWFsb2ctdGl0bGUgKm5nSWY9XCJkYXRhLnRpdGxlXCI+e3tkYXRhLnRpdGxlfX08L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxwICpuZ0Zvcj1cImxldCBwYXJhZ3JhcGggb2YgZGF0YS50ZXh0XCI+e3twYXJhZ3JhcGh9fTwvcD5cbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uXCIgY2xhc3M9XCJjaGVja2JveC13cmFwcGVyXCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjb25maXJtXCIgbmFtZT1cImNvbmZpcm1cIj5cbiAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtYXRpb25UZXh0fX1cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEudHlwZSA9PT0gJ2RlbGV0ZSdcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCIgW2Rpc2FibGVkXT1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbiAmJiAhY29uZmlybVwiIGNsYXNzPVwiY29uZmlybS1idXR0b25cIj5cbiAgICAgICAge3tkYXRhLmNvbmZpcm1CdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLnR5cGUgIT09ICdkZWxldGUnXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oKVwiIFtkaXNhYmxlZF09XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gJiYgIWNvbmZpcm1cIiBjbGFzcz1cImNvbmZpcm0tYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGF0YS50eXBlICE9PSAnaW5mby1vbmx5J1wiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPlxuICAgICAgICB7e2RhdGEuY2FuY2VsQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19