ngx-material-entity 18.0.1 → 18.2.0

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 (109) hide show
  1. package/README.md +10 -13
  2. package/components/create-page/create-page.component.d.ts +3 -0
  3. package/components/custom-table/custom-table-configuration.model.d.ts +65 -0
  4. package/components/custom-table/custom-table.component.d.ts +111 -0
  5. package/components/edit-page/edit-page.component.d.ts +8 -1
  6. package/components/input/array/array-date-input/array-date-input.component.d.ts +2 -2
  7. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +3 -3
  8. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +3 -3
  9. package/components/input/array/array-table.class.d.ts +25 -19
  10. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  11. package/components/input/file/file-image-input/file-image-input.component.d.ts +3 -0
  12. package/components/input/file/file-input/file-input.component.d.ts +8 -2
  13. package/components/input/input.component.d.ts +101 -80
  14. package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +2 -0
  15. package/components/input/relations/references-many-input/references-many-input.component.d.ts +14 -17
  16. package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +2 -0
  17. package/components/input/string/string-password-input/string-password-input.component.d.ts +3 -0
  18. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +5 -5
  19. package/components/table/table-data.d.ts +9 -4
  20. package/components/table/table.component.d.ts +15 -37
  21. package/components/tooltip/tooltip.component.d.ts +2 -0
  22. package/decorators/array/array-decorator-internal.data.d.ts +8 -3
  23. package/decorators/array/array-decorator.data.d.ts +45 -88
  24. package/decorators/base/property-decorator.data.d.ts +2 -2
  25. package/decorators/file/file-decorator-internal.data.d.ts +3 -2
  26. package/decorators/file/file-decorator.data.d.ts +4 -3
  27. package/decorators/references-many/references-many-decorator-internal.data.d.ts +3 -1
  28. package/decorators/references-many/references-many-decorator.data.d.ts +13 -1
  29. package/directives/dynamic-style-class.directive.d.ts +4 -5
  30. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +7 -8
  31. package/esm2022/components/create-page/create-page.component.mjs +17 -11
  32. package/esm2022/components/custom-table/custom-table-configuration.model.mjs +37 -0
  33. package/esm2022/components/custom-table/custom-table.component.mjs +213 -0
  34. package/esm2022/components/edit-page/edit-page.component.mjs +29 -12
  35. package/esm2022/components/form/form.component.mjs +7 -8
  36. package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +17 -21
  37. package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +28 -27
  38. package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +18 -22
  39. package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +9 -7
  40. package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +9 -7
  41. package/esm2022/components/input/array/array-table.class.mjs +53 -45
  42. package/esm2022/components/input/base-input.component.mjs +3 -3
  43. package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +4 -4
  44. package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
  45. package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +4 -4
  46. package/esm2022/components/input/custom/custom.component.mjs +3 -3
  47. package/esm2022/components/input/date/date-input/date-input.component.mjs +3 -3
  48. package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +7 -8
  49. package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +6 -6
  50. package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +5 -5
  51. package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +10 -9
  52. package/esm2022/components/input/file/file-input/file-input.component.mjs +27 -15
  53. package/esm2022/components/input/input.component.mjs +162 -114
  54. package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +11 -8
  55. package/esm2022/components/input/number/number-input/number-input.component.mjs +3 -3
  56. package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +4 -4
  57. package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +46 -57
  58. package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +6 -7
  59. package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +11 -8
  60. package/esm2022/components/input/string/string-input/string-input.component.mjs +3 -3
  61. package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +13 -8
  62. package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +3 -3
  63. package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +9 -10
  64. package/esm2022/components/table/display-column-value/base-display-column-value.component.mjs +3 -3
  65. package/esm2022/components/table/display-column-value/display-column-value.component.mjs +3 -3
  66. package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +1 -1
  67. package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +21 -16
  68. package/esm2022/components/table/table-data.builder.mjs +3 -1
  69. package/esm2022/components/table/table-data.mjs +1 -1
  70. package/esm2022/components/table/table.component.mjs +41 -114
  71. package/esm2022/components/tooltip/tooltip.component.mjs +9 -5
  72. package/esm2022/decorators/array/array-decorator-internal.data.mjs +18 -3
  73. package/esm2022/decorators/array/array-decorator.data.mjs +33 -2
  74. package/esm2022/decorators/array/array.decorator.mjs +15 -8
  75. package/esm2022/decorators/base/property-decorator.data.mjs +2 -2
  76. package/esm2022/decorators/file/file-decorator-internal.data.mjs +4 -3
  77. package/esm2022/decorators/file/file-decorator.data.mjs +3 -3
  78. package/esm2022/decorators/file/file.decorator.mjs +7 -4
  79. package/esm2022/decorators/has-many/has-many-decorator-internal.data.mjs +1 -1
  80. package/esm2022/decorators/number/number.decorator.mjs +7 -4
  81. package/esm2022/decorators/object/object.decorator.mjs +5 -3
  82. package/esm2022/decorators/references-many/references-many-decorator-internal.data.mjs +8 -1
  83. package/esm2022/decorators/references-many/references-many-decorator.data.mjs +1 -1
  84. package/esm2022/decorators/string/string-decorator-internal.data.mjs +2 -1
  85. package/esm2022/decorators/string/string.decorator.mjs +11 -6
  86. package/esm2022/directives/drag-drop.directive.mjs +3 -3
  87. package/esm2022/directives/dynamic-style-class.directive.mjs +7 -7
  88. package/esm2022/directives/included-in.directive.mjs +3 -3
  89. package/esm2022/directives/number.directive.mjs +3 -3
  90. package/esm2022/directives/password-match.directive.mjs +3 -3
  91. package/esm2022/directives/tooltip.directive.mjs +7 -4
  92. package/esm2022/functions/dropdown-values-to-function.function.mjs +2 -1
  93. package/esm2022/functions/get-changes-tooltip-content.function.mjs +23 -0
  94. package/esm2022/functions/get-validation-errors-tooltip-content.function.mjs +23 -0
  95. package/esm2022/functions/table-column-value-to-sort-value.function.mjs +33 -0
  96. package/esm2022/public-api.mjs +3 -2
  97. package/esm2022/utilities/date.utilities.mjs +7 -6
  98. package/esm2022/utilities/entity.utilities.mjs +58 -27
  99. package/esm2022/utilities/file.utilities.mjs +7 -4
  100. package/esm2022/utilities/validation.utilities.mjs +41 -21
  101. package/fesm2022/ngx-material-entity.mjs +2767 -2336
  102. package/fesm2022/ngx-material-entity.mjs.map +1 -1
  103. package/functions/get-changes-tooltip-content.function.d.ts +13 -0
  104. package/functions/table-column-value-to-sort-value.function.d.ts +9 -0
  105. package/package.json +4 -2
  106. package/public-api.d.ts +2 -1
  107. package/utilities/entity.utilities.d.ts +11 -7
  108. package/esm2022/functions/get-validation-errors-tooltip-content.function.ts.mjs +0 -23
  109. /package/functions/{get-validation-errors-tooltip-content.function.ts.d.ts → get-validation-errors-tooltip-content.function.d.ts} +0 -0
@@ -1,7 +1,8 @@
1
1
  import { DateFilterFn } from '@angular/material/datepicker';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
3
4
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
4
- import { CreateData, DisplayColumn } from '../../components/table/table-data';
5
+ import { CreateData, DisplayColumn, DynamicStyleClasses } from '../../components/table/table-data';
5
6
  import { Time } from '../../utilities/date.utilities';
6
7
  import { DecoratorTypes } from '../base/decorator-types.enum';
7
8
  import { DropdownValue } from '../base/dropdown-value.interface';
@@ -9,7 +10,7 @@ import { PropertyDecoratorConfig } from '../base/property-decorator.data';
9
10
  import { DateRange } from '../date/date-decorator.data';
10
11
  import { StringAutocompleteValues } from '../string/string-decorator.data';
11
12
  /**
12
- * Interface definition for the @array metadata.
13
+ * Base definition for the @array metadata.
13
14
  */
14
15
  export declare abstract class ArrayDecoratorConfig<ValueType> extends PropertyDecoratorConfig<ValueType> {
15
16
  /**
@@ -26,6 +27,37 @@ export declare abstract class ArrayDecoratorConfig<ValueType> extends PropertyDe
26
27
  */
27
28
  duplicatesErrorDialog?: ConfirmDialogData;
28
29
  }
30
+ /**
31
+ * Base definition for the @array table metadata.
32
+ */
33
+ declare abstract class ArrayTableDecoratorConfig<ValueType> extends ArrayDecoratorConfig<ValueType[]> {
34
+ /**
35
+ * The definition of the columns to display. Consists of the displayName to show in the header of the row
36
+ * and the value, which is a function that generates the value to display inside a column.
37
+ */
38
+ displayColumns: DisplayColumn<ValueType>[];
39
+ /**
40
+ * Configuration for css classes that should be applied to table rows based on a condition.
41
+ * This could be used to eg. Set the background color to green when an item has the status completed etc.
42
+ * INFO: You need to use ng-deep or apply the styling in the styles.scss.
43
+ * @default () => []
44
+ */
45
+ dynamicRowStyleClasses?: DynamicStyleClasses<ValueType>;
46
+ /**
47
+ * The error-message to display when the array is required but contains no values.
48
+ */
49
+ missingErrorMessage?: string;
50
+ /**
51
+ * The label for the add button.
52
+ * @default 'Add'
53
+ */
54
+ addButtonLabel?: string;
55
+ /**
56
+ * The label for the remove button.
57
+ * @default 'Remove'
58
+ */
59
+ removeButtonLabel?: string;
60
+ }
29
61
  /**
30
62
  * The dialog data for the entities array edit dialog.
31
63
  */
@@ -46,17 +78,12 @@ export interface EditArrayItemDialogData<EntityType extends BaseEntityType<Entit
46
78
  /**
47
79
  * Definition for an array of Entities.
48
80
  */
49
- export interface EntityArrayDecoratorConfig<EntityType extends BaseEntityType<EntityType>> extends ArrayDecoratorConfig<EntityType[]> {
81
+ export interface EntityArrayDecoratorConfig<EntityType extends BaseEntityType<EntityType>> extends ArrayTableDecoratorConfig<EntityType> {
50
82
  itemType: DecoratorTypes.OBJECT;
51
83
  /**
52
84
  * The EntityClass used for generating the create inputs.
53
85
  */
54
86
  EntityClass: EntityClassNewable<EntityType>;
55
- /**
56
- * The definition of the columns to display. Consists of the displayName to show in the header of the row
57
- * and the value, which is a function that generates the value to display inside a column.
58
- */
59
- displayColumns: DisplayColumn<EntityType>[];
60
87
  /**
61
88
  * The data for the add-item-dialog.
62
89
  * Can be omitted when adding items inline.
@@ -73,45 +100,12 @@ export interface EntityArrayDecoratorConfig<EntityType extends BaseEntityType<En
73
100
  * @default true
74
101
  */
75
102
  createInline?: boolean;
76
- /**
77
- * The label for the add button when createInline is true.
78
- * @default 'Add'
79
- */
80
- addButtonLabel?: string;
81
- /**
82
- * The label for the remove button when createInline is true.
83
- * @default 'Remove'
84
- */
85
- removeButtonLabel?: string;
86
- /**
87
- * The error-message to display when the array is required but contains no values.
88
- */
89
- missingErrorMessage?: string;
90
103
  }
91
104
  /**
92
105
  * Definition for an array of Dates.
93
106
  */
94
- export interface DateArrayDecoratorConfig extends ArrayDecoratorConfig<Date[]> {
107
+ export interface DateArrayDecoratorConfig extends ArrayTableDecoratorConfig<Date> {
95
108
  itemType: DecoratorTypes.DATE;
96
- /**
97
- * The definition of the columns to display. Consists of the displayName to show in the header of the row
98
- * and the value, which is a function that generates the value to display inside a column.
99
- */
100
- displayColumns: DisplayColumn<Date>[];
101
- /**
102
- * The label for the add button.
103
- * @default 'Add'
104
- */
105
- addButtonLabel?: string;
106
- /**
107
- * The label for the remove button.
108
- * @default 'Remove'
109
- */
110
- removeButtonLabel?: string;
111
- /**
112
- * The error-message to display when the array is required but contains no values.
113
- */
114
- missingErrorMessage?: string;
115
109
  /**
116
110
  * A function to get the minimum value of the date.
117
111
  */
@@ -128,27 +122,8 @@ export interface DateArrayDecoratorConfig extends ArrayDecoratorConfig<Date[]> {
128
122
  /**
129
123
  * Definition for an array of DateTimes.
130
124
  */
131
- export interface DateTimeArrayDecoratorConfig extends ArrayDecoratorConfig<Date[]> {
125
+ export interface DateTimeArrayDecoratorConfig extends ArrayTableDecoratorConfig<Date> {
132
126
  itemType: DecoratorTypes.DATE_TIME;
133
- /**
134
- * The definition of the columns to display. Consists of the displayName to show in the header of the row
135
- * and the value, which is a function that generates the value to display inside a column.
136
- */
137
- displayColumns: DisplayColumn<Date>[];
138
- /**
139
- * The label for the add button.
140
- * @default 'Add'
141
- */
142
- addButtonLabel?: string;
143
- /**
144
- * The label for the remove button.
145
- * @default 'Remove'
146
- */
147
- removeButtonLabel?: string;
148
- /**
149
- * The error-message to display when the array is required but contains no values.
150
- */
151
- missingErrorMessage?: string;
152
127
  /**
153
128
  * The selectable times.
154
129
  */
@@ -186,27 +161,8 @@ export interface DateTimeArrayDecoratorConfig extends ArrayDecoratorConfig<Date[
186
161
  /**
187
162
  * Definition for an array of DateRanges.
188
163
  */
189
- export interface DateRangeArrayDecoratorConfig extends ArrayDecoratorConfig<DateRange[]> {
164
+ export interface DateRangeArrayDecoratorConfig extends ArrayTableDecoratorConfig<DateRange> {
190
165
  itemType: DecoratorTypes.DATE_RANGE;
191
- /**
192
- * The definition of the columns to display. Consists of the displayName to show in the header of the row
193
- * and the value, which is a function that generates the value to display inside a column.
194
- */
195
- displayColumns: DisplayColumn<DateRange>[];
196
- /**
197
- * The label for the add button.
198
- * @default 'Add'
199
- */
200
- addButtonLabel?: string;
201
- /**
202
- * The label for the remove button.
203
- * @default 'Remove'
204
- */
205
- removeButtonLabel?: string;
206
- /**
207
- * The error-message to display when the array is required but contains no values.
208
- */
209
- missingErrorMessage?: string;
210
166
  /**
211
167
  * A function to get the minimum value of the start date.
212
168
  */
@@ -244,10 +200,10 @@ export interface DateRangeArrayDecoratorConfig extends ArrayDecoratorConfig<Date
244
200
  export interface StringChipsArrayDecoratorConfig extends ArrayDecoratorConfig<string[]> {
245
201
  itemType: DecoratorTypes.STRING;
246
202
  /**
247
- * The class for the <i> tag used to remove an entry from the array.
248
- * @default 'fas fa-circle-minus'
203
+ * The font awesome icon used to remove an entry from the array.
204
+ * @default faCircleMinus
249
205
  */
250
- deleteIcon?: string;
206
+ deleteIcon?: IconDefinition;
251
207
  /**
252
208
  * The minimum required length of the string.
253
209
  */
@@ -267,10 +223,10 @@ export interface StringChipsArrayDecoratorConfig extends ArrayDecoratorConfig<st
267
223
  export interface AutocompleteStringChipsArrayDecoratorConfig extends ArrayDecoratorConfig<string[]> {
268
224
  itemType: DecoratorTypes.STRING_AUTOCOMPLETE;
269
225
  /**
270
- * The class for the <i> tag used to remove an entry from the array.
271
- * @default 'fas fa-circle-minus'
226
+ * The icon used to remove an entry from the array.
227
+ * @default faCircleMinus
272
228
  */
273
- deleteIcon?: string;
229
+ deleteIcon?: IconDefinition;
274
230
  /**
275
231
  * The autocomplete values.
276
232
  */
@@ -293,3 +249,4 @@ export interface AutocompleteStringChipsArrayDecoratorConfig extends ArrayDecora
293
249
  */
294
250
  restrictToOptions?: boolean;
295
251
  }
252
+ export {};
@@ -32,7 +32,7 @@ export declare abstract class PropertyDecoratorConfig<ValueType> {
32
32
  omitForUpdate?: boolean;
33
33
  /**
34
34
  * Defines the width of the input property when used inside the default create or edit dialog.
35
- * Has 3 bootstrap values for different breakpoints for simple responsive design.
35
+ * Has 3 values for different breakpoints for simple responsive design based on bootstrap (1-12).
36
36
  * The first value sets the columns for the screen size lg, the second for md and the third for sm.
37
37
  * @default [6, 6, 12]
38
38
  */
@@ -74,7 +74,7 @@ export interface Position {
74
74
  */
75
75
  tabName?: string;
76
76
  /**
77
- * Specifies the (bootstrap)-row in which this property is displayed.
77
+ * Specifies the row in which this property is displayed.
78
78
  * Ordering is ascending.
79
79
  * @default -1 (sets this property after the last row)
80
80
  */
@@ -1,3 +1,4 @@
1
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
1
2
  import { DefaultFileDecoratorConfig, FileData, ImageFileDecoratorConfig } from './file-decorator.data';
2
3
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
3
4
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
@@ -63,7 +64,7 @@ export declare class DefaultFileDecoratorConfigInternal extends PropertyDecorato
63
64
  preview: false;
64
65
  multiple: boolean;
65
66
  allowedMimeTypes: string[];
66
- deleteIcon: string;
67
+ deleteIcon: IconDefinition;
67
68
  maxSize: number;
68
69
  maxSizeTotal: number;
69
70
  mimeTypeErrorDialog: ConfirmDialogData;
@@ -81,7 +82,7 @@ export declare class ImageFileDecoratorConfigInternal extends PropertyDecoratorC
81
82
  multiple: boolean;
82
83
  preview: boolean;
83
84
  previewPlaceholderUrl?: string;
84
- deleteIcon: string;
85
+ deleteIcon: IconDefinition;
85
86
  maxSize: number;
86
87
  maxSizeTotal: number;
87
88
  mimeTypeErrorDialog: ConfirmDialogData;
@@ -1,3 +1,4 @@
1
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
1
2
  import { FileDataWithFile, FileDataWithUrl } from './file-decorator-internal.data';
2
3
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
3
4
  import { PropertyDecoratorConfig } from '../base/property-decorator.data';
@@ -18,10 +19,10 @@ declare abstract class FileDecoratorConfig extends PropertyDecoratorConfig<FileD
18
19
  */
19
20
  type: 'image' | 'other';
20
21
  /**
21
- * The class for the <i> tag used to remove a file from the input.
22
- * @default 'fas fa-circle-minus'
22
+ * The icon used to remove a file from the input.
23
+ * @default faCircleMinus
23
24
  */
24
- deleteIcon?: string;
25
+ deleteIcon?: IconDefinition;
25
26
  /**
26
27
  * Whether or not the file should be displayed inside a preview.
27
28
  * @default true
@@ -1,6 +1,6 @@
1
1
  import { ReferencesManyDecoratorConfig } from './references-many-decorator.data';
2
2
  import { BaseEntityType } from '../../classes/entity.model';
3
- import { DisplayColumn } from '../../components/table/table-data';
3
+ import { DisplayColumn, DynamicStyleClasses } from '../../components/table/table-data';
4
4
  import { NgxGlobalDefaultValues } from '../../global-configuration-values';
5
5
  import { DropdownValue } from '../base/dropdown-value.interface';
6
6
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
@@ -11,6 +11,8 @@ export declare class ReferencesManyDecoratorConfigInternal<EntityType extends Ba
11
11
  getReferencedEntities: () => Promise<EntityType[]>;
12
12
  getDropdownValues: (referencedEntities: EntityType[]) => DropdownValue<string>[];
13
13
  getEntityForId: (entityId: string, allReferencedEntities: EntityType[]) => EntityType;
14
+ emptyErrorMessage: string;
15
+ dynamicRowStyleClasses: DynamicStyleClasses<EntityType>;
14
16
  displayColumns: DisplayColumn<EntityType>[];
15
17
  addButtonLabel: string;
16
18
  removeButtonLabel: string;
@@ -1,5 +1,5 @@
1
1
  import { BaseEntityType } from '../../classes/entity.model';
2
- import { DisplayColumn } from '../../components/table/table-data';
2
+ import { DisplayColumn, DynamicStyleClasses } from '../../components/table/table-data';
3
3
  import { DropdownValue } from '../base/dropdown-value.interface';
4
4
  import { PropertyDecoratorConfig } from '../base/property-decorator.data';
5
5
  /**
@@ -18,6 +18,18 @@ export interface ReferencesManyDecoratorConfig<EntityType extends BaseEntityType
18
18
  * Gets the referenced entity for the given id.
19
19
  */
20
20
  getEntityForId?: (entityId: string, allReferencedEntities: EntityType[]) => EntityType;
21
+ /**
22
+ * The error message to display when an array property is required and empty.
23
+ * @default 'Needs to contain at least one value'
24
+ */
25
+ emptyErrorMessage?: string;
26
+ /**
27
+ * Configuration for css classes that should be applied to table rows based on a condition.
28
+ * This could be used to eg. Set the background color to green when an item has the status completed etc.
29
+ * INFO: You need to use ng-deep or apply the styling in the styles.scss.
30
+ * @default () => []
31
+ */
32
+ dynamicRowStyleClasses?: DynamicStyleClasses<EntityType>;
21
33
  /**
22
34
  * The definition of the columns to display. Consists of the displayName to show in the header of the row
23
35
  * and the value, which is a function that generates the value to display inside a column.
@@ -1,25 +1,24 @@
1
1
  import { ElementRef, OnChanges, Renderer2 } from '@angular/core';
2
- import { BaseEntityType } from '../classes/entity.model';
3
2
  import { DynamicStyleClasses } from '../components/table/table-data';
4
3
  import * as i0 from "@angular/core";
5
4
  /**
6
5
  * Dynamically applies css classes based on a provided function.
7
6
  */
8
- export declare class DynamicStyleClassDirective<EntityType extends BaseEntityType<EntityType>> implements OnChanges {
7
+ export declare class DynamicStyleClassDirective<T> implements OnChanges {
9
8
  private readonly element;
10
9
  private readonly renderer;
11
10
  private styleClassesApplied;
12
11
  /**
13
12
  * The function that gets the css classes to dynamically apply.
14
13
  */
15
- dynamicStyleClasses: DynamicStyleClasses<EntityType>;
14
+ dynamicStyleClasses: DynamicStyleClasses<T>;
16
15
  /**
17
16
  * The input for the dynamic style classes function.
18
17
  */
19
- entity: EntityType;
18
+ value: T;
20
19
  constructor(element: ElementRef, renderer: Renderer2);
21
20
  ngOnChanges(): void;
22
21
  private applyDynamicClasses;
23
22
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicStyleClassDirective<any>, never>;
24
- static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicStyleClassDirective<any>, "[dynamicStyleClasses]", never, { "dynamicStyleClasses": { "alias": "dynamicStyleClasses"; "required": true; }; "entity": { "alias": "entity"; "required": true; }; }, {}, never, never, true, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicStyleClassDirective<any>, "[dynamicStyleClasses]", never, { "dynamicStyleClasses": { "alias": "dynamicStyleClasses"; "required": true; }; "value": { "alias": "value"; "required": true; }; }, {}, never, never, true, never>;
25
24
  }
@@ -1,4 +1,4 @@
1
- import { NgFor, NgIf } from '@angular/common';
1
+ import { CommonModule } from '@angular/common';
2
2
  import { Component, Inject } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { MatButtonModule } from '@angular/material/button';
@@ -49,19 +49,18 @@ export class NgxMatEntityConfirmDialogComponent {
49
49
  cancel() {
50
50
  this.dialogRef.close(false);
51
51
  }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
53
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgxMatEntityConfirmDialogComponent, isStandalone: true, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{data.title}}</h2>\n}\n\n<mat-dialog-content>\n @for (paragraph of data.text; track $index) {\n <p>{{paragraph}}</p>\n }\n @if (data.requireConfirmation) {\n <div class=\"checkbox-wrapper\">\n <mat-checkbox name=\"confirm\" [(ngModel)]=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (data.type === 'delete') {\n <button type=\"button\" mat-raised-button color=\"warn\" class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'delete') {\n <button type=\"button\" mat-raised-button class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'info-only') {\n <button type=\"button\" mat-raised-button class=\"cancel-button\" (click)=\"cancel()\">\n {{data.cancelButtonLabel}}\n </button>\n }\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: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], 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] ", exportAs: ["matButton"] }] });
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.7", type: NgxMatEntityConfirmDialogComponent, isStandalone: true, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{data.title}}</h2>\n}\n\n<mat-dialog-content>\n @for (paragraph of data.text; track $index) {\n <p>{{paragraph}}</p>\n }\n @if (data.requireConfirmation) {\n <div class=\"checkbox-wrapper\">\n <mat-checkbox name=\"confirm\" [(ngModel)]=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (data.type === 'delete') {\n <button type=\"button\" mat-raised-button color=\"warn\" class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'delete') {\n <button type=\"button\" mat-raised-button class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'info-only') {\n <button type=\"button\" mat-raised-button class=\"cancel-button\" (click)=\"cancel()\">\n {{data.cancelButtonLabel}}\n </button>\n }\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}\n", "::ng-deep .mdc-dialog .mdc-dialog__content{padding:6px 20px!important}mat-dialog-actions{justify-content:space-between;align-items:center;padding-left:20px;padding-right:20px}.mat-dialog-title{padding:12px 20px;display:flex;justify-content:space-between;align-items:center}.mat-dialog-title div{font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], 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] ", exportAs: ["matButton"] }] });
54
54
  }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, decorators: [{
56
56
  type: Component,
57
57
  args: [{ selector: 'ngx-mat-entity-confirm-dialog', standalone: true, imports: [
58
- NgIf,
59
- NgFor,
58
+ CommonModule,
60
59
  MatDialogModule,
61
60
  FormsModule,
62
61
  MatCheckboxModule,
63
62
  MatButtonModule
64
- ], template: "@if (data.title) {\n <h2 mat-dialog-title>{{data.title}}</h2>\n}\n\n<mat-dialog-content>\n @for (paragraph of data.text; track $index) {\n <p>{{paragraph}}</p>\n }\n @if (data.requireConfirmation) {\n <div class=\"checkbox-wrapper\">\n <mat-checkbox name=\"confirm\" [(ngModel)]=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (data.type === 'delete') {\n <button type=\"button\" mat-raised-button color=\"warn\" class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'delete') {\n <button type=\"button\" mat-raised-button class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'info-only') {\n <button type=\"button\" mat-raised-button class=\"cancel-button\" (click)=\"cancel()\">\n {{data.cancelButtonLabel}}\n </button>\n }\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"] }]
63
+ ], template: "@if (data.title) {\n <h2 mat-dialog-title>{{data.title}}</h2>\n}\n\n<mat-dialog-content>\n @for (paragraph of data.text; track $index) {\n <p>{{paragraph}}</p>\n }\n @if (data.requireConfirmation) {\n <div class=\"checkbox-wrapper\">\n <mat-checkbox name=\"confirm\" [(ngModel)]=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (data.type === 'delete') {\n <button type=\"button\" mat-raised-button color=\"warn\" class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'delete') {\n <button type=\"button\" mat-raised-button class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'info-only') {\n <button type=\"button\" mat-raised-button class=\"cancel-button\" (click)=\"cancel()\">\n {{data.cancelButtonLabel}}\n </button>\n }\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}\n", "::ng-deep .mdc-dialog .mdc-dialog__content{padding:6px 20px!important}mat-dialog-actions{justify-content:space-between;align-items:center;padding-left:20px;padding-right:20px}.mat-dialog-title{padding:12px 20px;display:flex;justify-content:space-between;align-items:center}.mat-dialog-title div{font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500)}\n"] }]
65
64
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
66
65
  type: Inject,
67
66
  args: [MAT_DIALOG_DATA]
@@ -69,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
69
68
  type: Inject,
70
69
  args: [NGX_COMPLETE_GLOBAL_DEFAULT_VALUES]
71
70
  }] }] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcxRixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0JBQStCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGtDQUFrQyxFQUEwQixNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFFL0c7Ozs7R0FJRztBQWVILE1BQU0sT0FBTyxrQ0FBa0M7SUFhdEI7SUFFQTtJQUVFO0lBZnZCOztPQUVHO0lBQ0gsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6Qjs7T0FFRztJQUNILElBQUksQ0FBNkI7SUFFakMsWUFDcUIsU0FBMkQsRUFFM0QsU0FBNEIsRUFFMUIsWUFBb0M7UUFKdEMsY0FBUyxHQUFULFNBQVMsQ0FBa0Q7UUFFM0QsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFFMUIsaUJBQVksR0FBWixZQUFZLENBQXdCO0lBQ3hELENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7dUdBckNRLGtDQUFrQyw4Q0FjL0IsZUFBZSxhQUVmLGtDQUFrQzsyRkFoQnJDLGtDQUFrQyx5RkM5Qi9DLGd0Q0FpQ3FCLDRNRFRiLGVBQWUseWJBQ2YsV0FBVyw4VkFDWCxpQkFBaUIsNldBQ2pCLGVBQWU7OzJGQUdWLGtDQUFrQztrQkFkOUMsU0FBUzsrQkFDSSwrQkFBK0IsY0FHN0IsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNsQjs7MEJBZ0JJLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUywgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5cbi8qKlxuICogVGhlIERpYWxvZyB1c2VkIHdoZW5ldmVyIGNvbmZpcm1hdGlvbiBieSB0aGUgdXNlciBpcyByZXF1aXJlZCAoZS5nLiBXaGVuIHRoZSB1c2VyIHRyaWVzIHRvIGRlbGV0ZSBhbiBlbnRpdHkpLlxuICpcbiAqIENhbiBiZSBjdXN0b21pemVkIHdpdGggdGhlIE1BVF9ESUFMT0dfREFUQSBcImlucHV0RGF0YVwiLiBDdXN0b21pemF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQgaW4gXCJDb25maXJtRGlhbG9nRGF0YVwiLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXQtZW50aXR5LWNvbmZpcm0tZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIG5lZWRzIHRvIHRpY2sgYSBjaGVja2JveCB0byBlbmFibGUgdGhlIGNvbmZpcm0gYnV0dG9uLlxuICAgICAqL1xuICAgIGNvbmZpcm06IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjb25maWd1cmF0aW9uIGRhdGEgb2YgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBkYXRhITogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dERhdGE6IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICBASW5qZWN0KE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXNcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgdGhpcy5pbnB1dERhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgZGlhbG9nIHdpdGggdHJ1ZSB0byBzaWduYWwgdGhhdCB0aGUgYWN0aW9uIHNob3VsZCBiZSBydW4uXG4gICAgICovXG4gICAgY29uZmlybUFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgfVxufSIsIkBpZiAoZGF0YS50aXRsZSkge1xuICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPnt7ZGF0YS50aXRsZX19PC9oMj5cbn1cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICBAZm9yIChwYXJhZ3JhcGggb2YgZGF0YS50ZXh0OyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHA+e3twYXJhZ3JhcGh9fTwvcD5cbiAgICB9XG4gICAgQGlmIChkYXRhLnJlcXVpcmVDb25maXJtYXRpb24pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggbmFtZT1cImNvbmZpcm1cIiBbKG5nTW9kZWwpXT1cImNvbmZpcm1cIj5cbiAgICAgICAgICAgICAgICB7e2RhdGEuY29uZmlybWF0aW9uVGV4dH19XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgQGlmIChkYXRhLnR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwid2FyblwiIGNsYXNzPVwiY29uZmlybS1idXR0b25cIiBbZGlzYWJsZWRdPVwiZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uICYmICFjb25maXJtXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oKVwiPlxuICAgICAgICAgICAge3tkYXRhLmNvbmZpcm1CdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKGRhdGEudHlwZSAhPT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gJiYgIWNvbmZpcm1cIiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCI+XG4gICAgICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZGF0YS50eXBlICE9PSAnaW5mby1vbmx5Jykge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgICAgICAgIHt7ZGF0YS5jYW5jZWxCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0NBQWtDLEVBQTBCLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUUvRzs7OztHQUlHO0FBY0gsTUFBTSxPQUFPLGtDQUFrQztJQWF0QjtJQUVBO0lBRUU7SUFmdkI7O09BRUc7SUFDSCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRXpCOztPQUVHO0lBQ0gsSUFBSSxDQUE2QjtJQUVqQyxZQUNxQixTQUEyRCxFQUUzRCxTQUE0QixFQUUxQixZQUFvQztRQUp0QyxjQUFTLEdBQVQsU0FBUyxDQUFrRDtRQUUzRCxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUUxQixpQkFBWSxHQUFaLFlBQVksQ0FBd0I7SUFDeEQsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0FyQ1Esa0NBQWtDLDhDQWMvQixlQUFlLGFBRWYsa0NBQWtDOzJGQWhCckMsa0NBQWtDLHlGQzdCL0MsZ3RDQWlDcUIseWlCRFhiLFlBQVksOEJBQ1osZUFBZSx5YkFDZixXQUFXLDhWQUNYLGlCQUFpQixvWUFDakIsZUFBZTs7MkZBR1Ysa0NBQWtDO2tCQWI5QyxTQUFTOytCQUNJLCtCQUErQixjQUc3QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNsQjs7MEJBZ0JJLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMsIE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuXG4vKipcbiAqIFRoZSBEaWFsb2cgdXNlZCB3aGVuZXZlciBjb25maXJtYXRpb24gYnkgdGhlIHVzZXIgaXMgcmVxdWlyZWQgKGUuZy4gV2hlbiB0aGUgdXNlciB0cmllcyB0byBkZWxldGUgYW4gZW50aXR5KS5cbiAqXG4gKiBDYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi4gQ3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIFwiQ29uZmlybURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcycsICcuLi8uLi9zY3NzL2RpYWxvZy1zdHlsZXMuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgbmVlZHMgdG8gdGljayBhIGNoZWNrYm94IHRvIGVuYWJsZSB0aGUgY29uZmlybSBidXR0b24uXG4gICAgICovXG4gICAgY29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZGF0YSBvZiB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGRhdGEhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICAgIEBJbmplY3QoTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmlucHV0RGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cgd2l0aCB0cnVlIHRvIHNpZ25hbCB0aGF0IHRoZSBhY3Rpb24gc2hvdWxkIGJlIHJ1bi5cbiAgICAgKi9cbiAgICBjb25maXJtQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcbiAgICB9XG59IiwiQGlmIChkYXRhLnRpdGxlKSB7XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gyPlxufVxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIEBmb3IgKHBhcmFncmFwaCBvZiBkYXRhLnRleHQ7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cD57e3BhcmFncmFwaH19PC9wPlxuICAgIH1cbiAgICBAaWYgKGRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBuYW1lPVwiY29uZmlybVwiIFsobmdNb2RlbCldPVwiY29uZmlybVwiPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtYXRpb25UZXh0fX1cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICBAaWYgKGRhdGEudHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gJiYgIWNvbmZpcm1cIiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCI+XG4gICAgICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZGF0YS50eXBlICE9PSAnZGVsZXRlJykge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNvbmZpcm0tYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbiAmJiAhY29uZmlybVwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKClcIj5cbiAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgQGlmIChkYXRhLnR5cGUgIT09ICdpbmZvLW9ubHknKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICAgICAge3tkYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19