@olafvv/ngx-dynamic-form 0.2.0 → 0.3.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.
- package/README.md +326 -3
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +6 -15
- package/esm2022/lib/components/dynamic-form-field/dynamic-form-field.component.mjs +5 -5
- package/esm2022/lib/controls/button/dynamic-button.component.mjs +5 -5
- package/esm2022/lib/controls/button/dynamic-button.model.mjs +2 -3
- package/esm2022/lib/controls/button-toggles/dynamic-button-toggles.component.mjs +6 -6
- package/esm2022/lib/controls/checkbox/dynamic-checkbox.component.mjs +3 -3
- package/esm2022/lib/controls/input/dynamic-input.component.mjs +6 -6
- package/esm2022/lib/controls/input/dynamic-input.model.mjs +2 -1
- package/esm2022/lib/controls/radio-group/dynamic-radio-group.component.mjs +6 -6
- package/esm2022/lib/controls/readonly/dynamic-readonly.component.mjs +3 -3
- package/esm2022/lib/controls/select/dynamic-select.component.mjs +6 -9
- package/esm2022/lib/controls/textarea/dynamic-textarea.component.mjs +6 -6
- package/esm2022/lib/controls/textarea/dynamic-textarea.model.mjs +2 -1
- package/esm2022/lib/models/classes/dynamic-form-field-base.mjs +1 -1
- package/esm2022/lib/models/classes/dynamic-form-field-model.mjs +9 -2
- package/esm2022/lib/models/classes/dynamic-form-field-option-model.mjs +1 -1
- package/esm2022/lib/models/classes/dynamic-form-validators.mjs +21 -21
- package/esm2022/lib/models/constants/dynamic-relations.const.mjs +1 -1
- package/esm2022/lib/models/interfaces/dynamic-form-field-config.interface.mjs +1 -1
- package/esm2022/lib/models/interfaces/dynamic-form-field-relation.interface.mjs +1 -1
- package/esm2022/lib/services/dynamic-form-relations.service.mjs +13 -9
- package/esm2022/lib/services/dynamic-form.service.mjs +5 -5
- package/esm2022/lib/services/dynamic-validations.service.mjs +4 -4
- package/fesm2022/olafvv-ngx-dynamic-form.mjs +90 -91
- package/fesm2022/olafvv-ngx-dynamic-form.mjs.map +1 -1
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +0 -7
- package/lib/components/dynamic-form-field/dynamic-form-field.component.d.ts +2 -2
- package/lib/controls/button/dynamic-button.model.d.ts +2 -4
- package/lib/controls/input/dynamic-input.model.d.ts +2 -0
- package/lib/controls/select/dynamic-select.component.d.ts +0 -2
- package/lib/controls/textarea/dynamic-textarea.model.d.ts +2 -0
- package/lib/models/classes/dynamic-form-field-model.d.ts +3 -1
- package/lib/models/classes/dynamic-form-validators.d.ts +12 -12
- package/lib/models/constants/dynamic-relations.const.d.ts +9 -1
- package/lib/models/interfaces/dynamic-form-field-config.interface.d.ts +7 -2
- package/lib/models/interfaces/dynamic-form-field-relation.interface.d.ts +9 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,329 @@
|
|
|
1
1
|
# NgxDynamicForm
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This library is to create a form based on a JSON model. The forms is based on the `ReactiveFormsModule` from Angular and contains a set of pre-built form controls using the Angular Material library. Using the built-in form controls is optional, you can use your own components to use as form controls inside the dynamic form. See [Custom Form Controls](#custom-form-controls) form more information.
|
|
4
|
+
|
|
5
|
+
## Table of contents
|
|
6
|
+
|
|
7
|
+
- [Getting Started](#getting-started)
|
|
8
|
+
- [Usage](#usage)
|
|
9
|
+
- [Validators](#validators)
|
|
10
|
+
- [Built-in validators](#built-in-validators)
|
|
11
|
+
- [Custom validators](#custom-validators)
|
|
12
|
+
- [Relations](#relations)
|
|
13
|
+
- [Action type](#action-type)
|
|
14
|
+
- [Conditions](#conditions)
|
|
15
|
+
- [Operator](#operator)
|
|
16
|
+
- [Custom Form Controls](#custom-form-controls)
|
|
17
|
+
|
|
18
|
+
## Getting started
|
|
19
|
+
|
|
20
|
+
##### 1. Make sure to install and configure [Angular Material](https://material.angular.io/guide/getting-started) if you want to use the built-in form controls
|
|
21
|
+
|
|
22
|
+
##### 2. Install the library using npm:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
npm i --save @olafvv/ngx-dynamic-form
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
##### 1. Import the (standalone) component
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
import { DynamicFormComponent } from 'olafvv/ngx-dynamic-form';
|
|
34
|
+
|
|
35
|
+
@NgModule({
|
|
36
|
+
//...
|
|
37
|
+
imports: [DynamicFormComponent]
|
|
38
|
+
//...
|
|
39
|
+
})
|
|
40
|
+
export class AppModule {}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Or when using a standalone application/components:**
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import { DynamicFormComponent } from '@olafvv/ngx-dynamic-form';
|
|
47
|
+
|
|
48
|
+
@Component({
|
|
49
|
+
standalone: true,
|
|
50
|
+
imports: [DynamicFormComponent]
|
|
51
|
+
//...
|
|
52
|
+
})
|
|
53
|
+
export class AppComponent {
|
|
54
|
+
//...
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
##### 2. Define your form configuration
|
|
59
|
+
|
|
60
|
+
Create the JSON configuration for the form. This is a two-dimensional array where each array is a row in the form. So if you want multiple fields next to each other, define them in a single array. See [Form layout](#form-layout) for more information.
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import { DynamicInput, DynamicTextarea, DynamicFormValidators } from '@olafvv/ngx-dynamic-form';
|
|
64
|
+
|
|
65
|
+
export const SAMPLE_FORM: DynamicFormConfig = [
|
|
66
|
+
[
|
|
67
|
+
new DynamicInput({
|
|
68
|
+
name: 'name',
|
|
69
|
+
inputType: 'text',
|
|
70
|
+
label: 'Name'
|
|
71
|
+
})
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
new DynamicInput({
|
|
75
|
+
name: 'email',
|
|
76
|
+
inputType: 'email',
|
|
77
|
+
label: 'Email address'
|
|
78
|
+
})
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
new DynamicTextarea({
|
|
82
|
+
name: 'message',
|
|
83
|
+
label: 'Your message',
|
|
84
|
+
maxLength: 200,
|
|
85
|
+
rows: 5
|
|
86
|
+
})
|
|
87
|
+
]
|
|
88
|
+
];
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
##### 3. Create a FormGroup
|
|
92
|
+
|
|
93
|
+
This library provides the service `DynamicFormService` which you can use to create a FormGroup based on the created form configuration.
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
import { SAMPLE_FORM } from './sample-form.ts';
|
|
97
|
+
import { DynamicFormService } from '@olafvv/ngx-dynamic-form;
|
|
98
|
+
|
|
99
|
+
@Component({
|
|
100
|
+
//...
|
|
101
|
+
})
|
|
102
|
+
export class AppComponent {
|
|
103
|
+
sampleFormConfig: DynamicFormConfig = SAMPLE_FORM;
|
|
104
|
+
sampleFormGroup: FormGroup<SampleFormModel> = this.dynamicFormService.createFormGroup(this.sampleFormConfig);
|
|
105
|
+
|
|
106
|
+
constructor(private dynamicFormService: DynamicFormService) {}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
##### 4. Add the `dynamic-form` inside the template
|
|
111
|
+
|
|
112
|
+
To add the form to your template, you have to use the selector `<dynamic-form></dynamic-form>` and pass the FormGroup and configuration as inputs:
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<form [formGroup]="sampleFormGroup">
|
|
116
|
+
<dynamic-form [group]="sampleFormGroup" [formConfig]="sampleFormConfig">
|
|
117
|
+
</form>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Validators
|
|
121
|
+
|
|
122
|
+
This library comes with a set of built-in validators, based on the [Angular Validators](https://angular.dev/api/forms/Validators). All provided validators are static methods inside the class `DynamicFormValidators`, each returning a `DynamicFormValidator` (e.g. `DynamicFormValidators.required()`).
|
|
123
|
+
|
|
124
|
+
To use the validators, pass them inside the validators array of the field configuration:
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
import { DynamicFormValidators } from '@olafvv/ngx-dynamic-form';
|
|
128
|
+
|
|
129
|
+
export const SAMPLE_FORM = [
|
|
130
|
+
[
|
|
131
|
+
new DynamicFormInput({
|
|
132
|
+
//..
|
|
133
|
+
validators: [DynamicFormValidators.required('Custom error message')]
|
|
134
|
+
})
|
|
135
|
+
]
|
|
136
|
+
];
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### Built-in validators
|
|
140
|
+
|
|
141
|
+
Each validator has at least the optional parameter for a custom error message. If you don't provided one, the library will place a generic error message (e.g. for required: 'This field is required').
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
class DynamicFormValidators {
|
|
145
|
+
// Validator that requires the control's value to be less than or equal to the provided number.
|
|
146
|
+
static email(errorMessage?: string): DynamicFormValidator;
|
|
147
|
+
// Validator that requires the control's value to be greater than or equal to the provided number.
|
|
148
|
+
static min(min: number, errorMessage?: string): DynamicFormValidator;
|
|
149
|
+
// Validator that requires the control's value to be less than or equal to the provided number.
|
|
150
|
+
static max(max: number, errorMessage?: string): DynamicFormValidator;
|
|
151
|
+
// Validator that requires the length of control's value to be greater than or equal to the provided number.
|
|
152
|
+
static minLength(min: number, errorMessage?: string): DynamicFormValidator;
|
|
153
|
+
// Validator that requires the length of control's value to be less than or equal to the provided number.
|
|
154
|
+
static maxLength(max: number, errorMessage?: string): DynamicFormValidator;
|
|
155
|
+
// Validator that requires the control's value to match the provided pattern.
|
|
156
|
+
static pattern(pattern: string | RexExp, errorMessage?: string): DynamicFormValidator;
|
|
157
|
+
// Validator that requires the control to have a non-empty value.
|
|
158
|
+
static required(errorMessage?: string): DynamicFormValidator;
|
|
159
|
+
// Validator that requires the control's value to be true.
|
|
160
|
+
static requiredTrue(errorMessage?: string): DynamicFormValidator;
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### Custom Validators
|
|
165
|
+
|
|
166
|
+
Adding a custom validator is quite straightforward. All you have to do is to provide an object of the type `DynamicFormValidator` to the validators array of a field with a (unique) name, validatorFn and errorMessage.
|
|
167
|
+
|
|
168
|
+
Read more about creating custom Angular validators on the following page:
|
|
169
|
+
|
|
170
|
+
> https://blog.angular-university.io/angular-custom-validators/
|
|
171
|
+
|
|
172
|
+
E.g. a validator to require a minimum time:
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
function minTimeValidatorFn(minTime: string): ValidatorFn {
|
|
176
|
+
return (control: AbstractControl): ValidationErrors | null => {
|
|
177
|
+
const inputTime = control.value as string;
|
|
178
|
+
|
|
179
|
+
if (!inputTime) return null;
|
|
180
|
+
|
|
181
|
+
const minTimeObj = new Date(`2000-01-01T${minTime}`);
|
|
182
|
+
const inputTimeObj = new Date(`2000-01-01T${inputTime}`);
|
|
183
|
+
|
|
184
|
+
return inputTimeObj >= minTimeObj ? null : { minTime: true };
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export const minTimeValidator: (minTime: string, msg?: string) => DynamicFormValidator = (minTime: string, msg?: string) => ({
|
|
189
|
+
name: 'minTime',
|
|
190
|
+
validator: minTimeValidatorFn(minTime),
|
|
191
|
+
message: msg ?? `Minimale tijd is ${minTime}`
|
|
192
|
+
});
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
import { minTimeValidator } from './min-time-validator.ts';
|
|
197
|
+
|
|
198
|
+
//..
|
|
199
|
+
|
|
200
|
+
const formConfig: DynamicFormConfig = [
|
|
201
|
+
[
|
|
202
|
+
new DynamicInput({
|
|
203
|
+
name: 'time',
|
|
204
|
+
inputType: 'time',
|
|
205
|
+
validators: [minTimeValidator('11:00')]
|
|
206
|
+
})
|
|
207
|
+
]
|
|
208
|
+
];
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Relations
|
|
212
|
+
|
|
213
|
+
Sometimes you want to create certain connections between fields in a form to control their state, based on the value of the other field. This library provides a way to configure these connections,called relations.
|
|
214
|
+
|
|
215
|
+
Each relation is defined on the field that requires a specific state based on one or more conditions. Each relation, a `DynamicFormFieldRelation`, contains an actionType, one or more condition(s) and optionally an operator.
|
|
216
|
+
|
|
217
|
+
```ts
|
|
218
|
+
interface DynamicFormFieldRelation {
|
|
219
|
+
actionType: RelationActionType;
|
|
220
|
+
conditions: RelationCondition[];
|
|
221
|
+
operator?: RelationOperator;
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
##### Action type
|
|
226
|
+
|
|
227
|
+
The action type is the type of state the field should be when the conditions are met. Right now the library contains three different action types:
|
|
228
|
+
|
|
229
|
+
- Disable/Enable
|
|
230
|
+
- Visible/Hidden
|
|
231
|
+
- Required/Optional
|
|
232
|
+
|
|
233
|
+
To set the type you have to use one of the provided enums:
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
enum RelationActionType {
|
|
237
|
+
DISABLED = 'DISABLED',
|
|
238
|
+
ENABLED = 'ENABLED',
|
|
239
|
+
HIDDEN = 'HIDDEN',
|
|
240
|
+
VISIBLE = 'VISIBLE',
|
|
241
|
+
REQUIRED = 'REQUIRED',
|
|
242
|
+
OPTIONAL = 'OPTIONAL'
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
##### Conditions
|
|
247
|
+
|
|
248
|
+
The conditions is an array of `RelationCondition` objects. Each condition contains the name of the field the related field is depended on and a value when the condition is met:
|
|
249
|
+
|
|
250
|
+
```ts
|
|
251
|
+
interface RelationCondition {
|
|
252
|
+
// The name of the field this field is related to
|
|
253
|
+
fieldName: string;
|
|
254
|
+
// A method which has to return a boolean. Returning true means the condition is met
|
|
255
|
+
value: (val: any) => boolean;
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
##### Operator
|
|
260
|
+
|
|
261
|
+
The operator is an optional property and determines if all or any one of the conditions have to return true to trigger the required state of the field. By default the value of this property is `RelationOperator.AND` and is only used when there are more than 1 conditions.
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
enum RelationOperator {
|
|
265
|
+
// All conditions have to equal true
|
|
266
|
+
AND = 'AND',
|
|
267
|
+
// On of the conditions have to equal true
|
|
268
|
+
OR = 'OR'
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
##### Example
|
|
273
|
+
|
|
274
|
+
Here is an example of a field called 'passportNumber' which has to be visible when the value of the field named 'documentType' equals to 'passport':
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
const formConfig = [
|
|
278
|
+
[
|
|
279
|
+
new DynamicSelect({
|
|
280
|
+
name: 'documentType',
|
|
281
|
+
label: 'Document type',
|
|
282
|
+
options: [
|
|
283
|
+
{ label: 'Passport', value: 'passport' }
|
|
284
|
+
//..
|
|
285
|
+
]
|
|
286
|
+
})
|
|
287
|
+
][
|
|
288
|
+
new DymamicInput({
|
|
289
|
+
name: 'passportNumber',
|
|
290
|
+
label: 'Passport number',
|
|
291
|
+
relations: [
|
|
292
|
+
{
|
|
293
|
+
actionType: RelationActionType.VISIBLE,
|
|
294
|
+
conditions: [
|
|
295
|
+
{
|
|
296
|
+
fieldName: 'documentType',
|
|
297
|
+
value: (val: string) => val === 'passport'
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
]
|
|
302
|
+
})
|
|
303
|
+
]
|
|
304
|
+
];
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## Built-in form controls
|
|
308
|
+
|
|
309
|
+
The library comes with a set of built-in form controls, using the Angular Material library. To make use of these you have to make sure to install and configure [Angular Material](https://material.angular.io).
|
|
310
|
+
|
|
311
|
+
The library comes with the following form controls:
|
|
312
|
+
|
|
313
|
+
| Form control name | Description |
|
|
314
|
+
| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
315
|
+
| Button | Shows a button inside the form. Can be provided with a label and/or icon. You also provide a callback method for what happens when the button is clicked |
|
|
316
|
+
| Button toggle | Based on the Angular Material component which shows a row of buttons, each holding a value (can be compared to radio buttons). It is possible to select one or multiple options |
|
|
317
|
+
| Checkbox | Shows a checkbox, indicating a true or false value |
|
|
318
|
+
| Input | Text based input using the HTML5 input element with Angular Material styling and animations. |
|
|
319
|
+
| Radio group | Uses the `mat-radio-group` of Angular Material to show a group of radio buttons to select a single option |
|
|
320
|
+
| Readonly | Shows the value of the control without the possibility to interact with it. |
|
|
321
|
+
| Select | Uses the `mat-select` of Angular Material to show a list of options inside a dropdown. |
|
|
322
|
+
| Textarea | The HTML5 `<textarea>` element with enchanced Angular Material styling and animations. |
|
|
323
|
+
|
|
324
|
+
Each control has a basic set of properties (see `DynamicFormFieldConfig`) that can be passed to the control's model. They also have a specific set of properties that only apply to the selected control.
|
|
325
|
+
|
|
326
|
+
## Custom Form Controls
|
|
4
327
|
|
|
5
328
|
Other than the build-in form controls, it is possible to plug in you own custom controls. Start out with creating a custom form control component:
|
|
6
329
|
|
|
@@ -8,14 +331,14 @@ Other than the build-in form controls, it is possible to plug in you own custom
|
|
|
8
331
|
|
|
9
332
|
After that follow the following steps.
|
|
10
333
|
|
|
11
|
-
|
|
334
|
+
#### 1. Create a model
|
|
12
335
|
|
|
13
336
|
First step is to create a model and interface for the custom control containing the control specific properties for the configuration definitions, extending the base interface/model from the library.
|
|
14
337
|
Also, you need to create an (unique) name for the type of the model/.
|
|
15
338
|
|
|
16
339
|
For example if you're creating a control with a slider to select a value between 0 and 10:
|
|
17
340
|
|
|
18
|
-
|
|
341
|
+
##### Interface:
|
|
19
342
|
|
|
20
343
|
The interface extends the base interface `DynamicFormFieldValueConfig` and expects a generic type describing the possible value(s) of the field. In this case that would be a number or null value.
|
|
21
344
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NgClass
|
|
1
|
+
import { NgClass } from '@angular/common';
|
|
2
2
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { DynamicFormService } from '../../services/dynamic-form.service';
|
|
@@ -14,15 +14,6 @@ export class DynamicFormComponent {
|
|
|
14
14
|
get flatFormConfig() {
|
|
15
15
|
return this.formConfig.reduce((acc, curr) => acc.concat(curr), []);
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
18
|
-
* TrackBy Function for performance optimization
|
|
19
|
-
* @param _index
|
|
20
|
-
* @param field
|
|
21
|
-
* @returns
|
|
22
|
-
*/
|
|
23
|
-
trackByFn(_index, field) {
|
|
24
|
-
return field.id;
|
|
25
|
-
}
|
|
26
17
|
/**
|
|
27
18
|
* Get the current value of the form.
|
|
28
19
|
* @param includeDisabledFields Include the disabled fields of the form, is enabled by default
|
|
@@ -47,12 +38,12 @@ export class DynamicFormComponent {
|
|
|
47
38
|
onChange(event) {
|
|
48
39
|
this.change.emit(event);
|
|
49
40
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
51
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DynamicFormComponent, isStandalone: true, selector: "dynamic-form", inputs: { group: "group", formConfig: "formConfig" }, outputs: { change: "change" }, providers: [DynamicFormService], ngImport: i0, template: "@for(row of formConfig; track $index) {\n<div class=\"dynamic-form-row\">\n @for(field of row; track field.id) {\n <dynamic-form-field class=\"dynamic-form-field\"\n [id]=\"field.id\"\n [hidden]=\"field.hidden\"\n [ngClass]=\"[field.type, 'form-field-width-' + field.width]\"\n [group]=\"group\"\n [model]=\"field\"\n (change)=\"onChange($event)\">\n </dynamic-form-field>\n }\n</div>\n}", styles: [".dynamic-form-row{display:flex}.dynamic-form-row .dynamic-form-field{width:100%;margin:4px 0}.dynamic-form-row .dynamic-form-field:not(:last-of-type){margin-right:12px}.dynamic-form-row .dynamic-form-field.button{flex:0}.dynamic-form-row .form-field-width-1{width:1%}.dynamic-form-row .form-field-width-2{width:2%}.dynamic-form-row .form-field-width-3{width:3%}.dynamic-form-row .form-field-width-4{width:4%}.dynamic-form-row .form-field-width-5{width:5%}.dynamic-form-row .form-field-width-6{width:6%}.dynamic-form-row .form-field-width-7{width:7%}.dynamic-form-row .form-field-width-8{width:8%}.dynamic-form-row .form-field-width-9{width:9%}.dynamic-form-row .form-field-width-10{width:10%}.dynamic-form-row .form-field-width-11{width:11%}.dynamic-form-row .form-field-width-12{width:12%}.dynamic-form-row .form-field-width-13{width:13%}.dynamic-form-row .form-field-width-14{width:14%}.dynamic-form-row .form-field-width-15{width:15%}.dynamic-form-row .form-field-width-16{width:16%}.dynamic-form-row .form-field-width-17{width:17%}.dynamic-form-row .form-field-width-18{width:18%}.dynamic-form-row .form-field-width-19{width:19%}.dynamic-form-row .form-field-width-20{width:20%}.dynamic-form-row .form-field-width-21{width:21%}.dynamic-form-row .form-field-width-22{width:22%}.dynamic-form-row .form-field-width-23{width:23%}.dynamic-form-row .form-field-width-24{width:24%}.dynamic-form-row .form-field-width-25{width:25%}.dynamic-form-row .form-field-width-26{width:26%}.dynamic-form-row .form-field-width-27{width:27%}.dynamic-form-row .form-field-width-28{width:28%}.dynamic-form-row .form-field-width-29{width:29%}.dynamic-form-row .form-field-width-30{width:30%}.dynamic-form-row .form-field-width-31{width:31%}.dynamic-form-row .form-field-width-32{width:32%}.dynamic-form-row .form-field-width-33{width:33%}.dynamic-form-row .form-field-width-34{width:34%}.dynamic-form-row .form-field-width-35{width:35%}.dynamic-form-row .form-field-width-36{width:36%}.dynamic-form-row .form-field-width-37{width:37%}.dynamic-form-row .form-field-width-38{width:38%}.dynamic-form-row .form-field-width-39{width:39%}.dynamic-form-row .form-field-width-40{width:40%}.dynamic-form-row .form-field-width-41{width:41%}.dynamic-form-row .form-field-width-42{width:42%}.dynamic-form-row .form-field-width-43{width:43%}.dynamic-form-row .form-field-width-44{width:44%}.dynamic-form-row .form-field-width-45{width:45%}.dynamic-form-row .form-field-width-46{width:46%}.dynamic-form-row .form-field-width-47{width:47%}.dynamic-form-row .form-field-width-48{width:48%}.dynamic-form-row .form-field-width-49{width:49%}.dynamic-form-row .form-field-width-50{width:50%}.dynamic-form-row .form-field-width-51{width:51%}.dynamic-form-row .form-field-width-52{width:52%}.dynamic-form-row .form-field-width-53{width:53%}.dynamic-form-row .form-field-width-54{width:54%}.dynamic-form-row .form-field-width-55{width:55%}.dynamic-form-row .form-field-width-56{width:56%}.dynamic-form-row .form-field-width-57{width:57%}.dynamic-form-row .form-field-width-58{width:58%}.dynamic-form-row .form-field-width-59{width:59%}.dynamic-form-row .form-field-width-60{width:60%}.dynamic-form-row .form-field-width-61{width:61%}.dynamic-form-row .form-field-width-62{width:62%}.dynamic-form-row .form-field-width-63{width:63%}.dynamic-form-row .form-field-width-64{width:64%}.dynamic-form-row .form-field-width-65{width:65%}.dynamic-form-row .form-field-width-66{width:66%}.dynamic-form-row .form-field-width-67{width:67%}.dynamic-form-row .form-field-width-68{width:68%}.dynamic-form-row .form-field-width-69{width:69%}.dynamic-form-row .form-field-width-70{width:70%}.dynamic-form-row .form-field-width-71{width:71%}.dynamic-form-row .form-field-width-72{width:72%}.dynamic-form-row .form-field-width-73{width:73%}.dynamic-form-row .form-field-width-74{width:74%}.dynamic-form-row .form-field-width-75{width:75%}.dynamic-form-row .form-field-width-76{width:76%}.dynamic-form-row .form-field-width-77{width:77%}.dynamic-form-row .form-field-width-78{width:78%}.dynamic-form-row .form-field-width-79{width:79%}.dynamic-form-row .form-field-width-80{width:80%}.dynamic-form-row .form-field-width-81{width:81%}.dynamic-form-row .form-field-width-82{width:82%}.dynamic-form-row .form-field-width-83{width:83%}.dynamic-form-row .form-field-width-84{width:84%}.dynamic-form-row .form-field-width-85{width:85%}.dynamic-form-row .form-field-width-86{width:86%}.dynamic-form-row .form-field-width-87{width:87%}.dynamic-form-row .form-field-width-88{width:88%}.dynamic-form-row .form-field-width-89{width:89%}.dynamic-form-row .form-field-width-90{width:90%}.dynamic-form-row .form-field-width-91{width:91%}.dynamic-form-row .form-field-width-92{width:92%}.dynamic-form-row .form-field-width-93{width:93%}.dynamic-form-row .form-field-width-94{width:94%}.dynamic-form-row .form-field-width-95{width:95%}.dynamic-form-row .form-field-width-96{width:96%}.dynamic-form-row .form-field-width-97{width:97%}.dynamic-form-row .form-field-width-98{width:98%}.dynamic-form-row .form-field-width-99{width:99%}.dynamic-form-row .form-field-width-100{width:100%}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: DynamicFormFieldComponent, selector: "dynamic-form-field", inputs: ["model", "group"], outputs: ["change"] }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
52
43
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFormComponent, decorators: [{
|
|
54
45
|
type: Component,
|
|
55
|
-
args: [{ standalone: true, imports: [
|
|
46
|
+
args: [{ standalone: true, imports: [NgClass, DynamicFormFieldComponent, ReactiveFormsModule], selector: 'dynamic-form', providers: [DynamicFormService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@for(row of formConfig; track $index) {\n<div class=\"dynamic-form-row\">\n @for(field of row; track field.id) {\n <dynamic-form-field class=\"dynamic-form-field\"\n [id]=\"field.id\"\n [hidden]=\"field.hidden\"\n [ngClass]=\"[field.type, 'form-field-width-' + field.width]\"\n [group]=\"group\"\n [model]=\"field\"\n (change)=\"onChange($event)\">\n </dynamic-form-field>\n }\n</div>\n}", styles: [".dynamic-form-row{display:flex}.dynamic-form-row .dynamic-form-field{width:100%;margin:4px 0}.dynamic-form-row .dynamic-form-field:not(:last-of-type){margin-right:12px}.dynamic-form-row .dynamic-form-field.button{flex:0}.dynamic-form-row .form-field-width-1{width:1%}.dynamic-form-row .form-field-width-2{width:2%}.dynamic-form-row .form-field-width-3{width:3%}.dynamic-form-row .form-field-width-4{width:4%}.dynamic-form-row .form-field-width-5{width:5%}.dynamic-form-row .form-field-width-6{width:6%}.dynamic-form-row .form-field-width-7{width:7%}.dynamic-form-row .form-field-width-8{width:8%}.dynamic-form-row .form-field-width-9{width:9%}.dynamic-form-row .form-field-width-10{width:10%}.dynamic-form-row .form-field-width-11{width:11%}.dynamic-form-row .form-field-width-12{width:12%}.dynamic-form-row .form-field-width-13{width:13%}.dynamic-form-row .form-field-width-14{width:14%}.dynamic-form-row .form-field-width-15{width:15%}.dynamic-form-row .form-field-width-16{width:16%}.dynamic-form-row .form-field-width-17{width:17%}.dynamic-form-row .form-field-width-18{width:18%}.dynamic-form-row .form-field-width-19{width:19%}.dynamic-form-row .form-field-width-20{width:20%}.dynamic-form-row .form-field-width-21{width:21%}.dynamic-form-row .form-field-width-22{width:22%}.dynamic-form-row .form-field-width-23{width:23%}.dynamic-form-row .form-field-width-24{width:24%}.dynamic-form-row .form-field-width-25{width:25%}.dynamic-form-row .form-field-width-26{width:26%}.dynamic-form-row .form-field-width-27{width:27%}.dynamic-form-row .form-field-width-28{width:28%}.dynamic-form-row .form-field-width-29{width:29%}.dynamic-form-row .form-field-width-30{width:30%}.dynamic-form-row .form-field-width-31{width:31%}.dynamic-form-row .form-field-width-32{width:32%}.dynamic-form-row .form-field-width-33{width:33%}.dynamic-form-row .form-field-width-34{width:34%}.dynamic-form-row .form-field-width-35{width:35%}.dynamic-form-row .form-field-width-36{width:36%}.dynamic-form-row .form-field-width-37{width:37%}.dynamic-form-row .form-field-width-38{width:38%}.dynamic-form-row .form-field-width-39{width:39%}.dynamic-form-row .form-field-width-40{width:40%}.dynamic-form-row .form-field-width-41{width:41%}.dynamic-form-row .form-field-width-42{width:42%}.dynamic-form-row .form-field-width-43{width:43%}.dynamic-form-row .form-field-width-44{width:44%}.dynamic-form-row .form-field-width-45{width:45%}.dynamic-form-row .form-field-width-46{width:46%}.dynamic-form-row .form-field-width-47{width:47%}.dynamic-form-row .form-field-width-48{width:48%}.dynamic-form-row .form-field-width-49{width:49%}.dynamic-form-row .form-field-width-50{width:50%}.dynamic-form-row .form-field-width-51{width:51%}.dynamic-form-row .form-field-width-52{width:52%}.dynamic-form-row .form-field-width-53{width:53%}.dynamic-form-row .form-field-width-54{width:54%}.dynamic-form-row .form-field-width-55{width:55%}.dynamic-form-row .form-field-width-56{width:56%}.dynamic-form-row .form-field-width-57{width:57%}.dynamic-form-row .form-field-width-58{width:58%}.dynamic-form-row .form-field-width-59{width:59%}.dynamic-form-row .form-field-width-60{width:60%}.dynamic-form-row .form-field-width-61{width:61%}.dynamic-form-row .form-field-width-62{width:62%}.dynamic-form-row .form-field-width-63{width:63%}.dynamic-form-row .form-field-width-64{width:64%}.dynamic-form-row .form-field-width-65{width:65%}.dynamic-form-row .form-field-width-66{width:66%}.dynamic-form-row .form-field-width-67{width:67%}.dynamic-form-row .form-field-width-68{width:68%}.dynamic-form-row .form-field-width-69{width:69%}.dynamic-form-row .form-field-width-70{width:70%}.dynamic-form-row .form-field-width-71{width:71%}.dynamic-form-row .form-field-width-72{width:72%}.dynamic-form-row .form-field-width-73{width:73%}.dynamic-form-row .form-field-width-74{width:74%}.dynamic-form-row .form-field-width-75{width:75%}.dynamic-form-row .form-field-width-76{width:76%}.dynamic-form-row .form-field-width-77{width:77%}.dynamic-form-row .form-field-width-78{width:78%}.dynamic-form-row .form-field-width-79{width:79%}.dynamic-form-row .form-field-width-80{width:80%}.dynamic-form-row .form-field-width-81{width:81%}.dynamic-form-row .form-field-width-82{width:82%}.dynamic-form-row .form-field-width-83{width:83%}.dynamic-form-row .form-field-width-84{width:84%}.dynamic-form-row .form-field-width-85{width:85%}.dynamic-form-row .form-field-width-86{width:86%}.dynamic-form-row .form-field-width-87{width:87%}.dynamic-form-row .form-field-width-88{width:88%}.dynamic-form-row .form-field-width-89{width:89%}.dynamic-form-row .form-field-width-90{width:90%}.dynamic-form-row .form-field-width-91{width:91%}.dynamic-form-row .form-field-width-92{width:92%}.dynamic-form-row .form-field-width-93{width:93%}.dynamic-form-row .form-field-width-94{width:94%}.dynamic-form-row .form-field-width-95{width:95%}.dynamic-form-row .form-field-width-96{width:96%}.dynamic-form-row .form-field-width-97{width:97%}.dynamic-form-row .form-field-width-98{width:98%}.dynamic-form-row .form-field-width-99{width:99%}.dynamic-form-row .form-field-width-100{width:100%}\n"] }]
|
|
56
47
|
}], propDecorators: { group: [{
|
|
57
48
|
type: Input,
|
|
58
49
|
args: [{ required: true }]
|
|
@@ -62,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
62
53
|
}], change: [{
|
|
63
54
|
type: Output
|
|
64
55
|
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFLdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBVy9GLE1BQU0sT0FBTyxvQkFBb0I7SUFUakM7UUFhWSxXQUFNLEdBQXdDLElBQUksWUFBWSxFQUFFLENBQUM7S0FzQzVFO0lBcENDOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQWMscUJBQXFCLEdBQUcsSUFBSTtRQUMzRCxNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFdEYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLElBQVk7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDNUIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUE0QjtRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQXpDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnSkFIcEIsQ0FBQyxrQkFBa0IsQ0FBQywwQkNoQmpDLDJaQWFDLDRpS0REVyxPQUFPLG9GQUFFLHlCQUF5QiwrR0FBRSxtQkFBbUI7OzRGQU90RCxvQkFBb0I7a0JBVGhDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLG1CQUFtQixDQUFDLFlBQ3hELGNBQWMsYUFHYixDQUFDLGtCQUFrQixDQUFDLG1CQUNkLHVCQUF1QixDQUFDLE1BQU07OEJBR3BCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFVBQVU7c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVmLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLW1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1maWVsZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHlwZXMvZHluYW1pYy1mb3JtLWNvbmZpZy50eXBlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZvcm0tZmllbGQvZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzcywgRHluYW1pY0Zvcm1GaWVsZENvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICdkeW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRHluYW1pY0Zvcm1TZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZvcm1Db25maWchOiBEeW5hbWljRm9ybUNvbmZpZztcblxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1GaWVsZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogR2V0IHRoZSBmb3JtQ29uZmlnIGFzIGZsYXQgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZsYXRGb3JtQ29uZmlnKCk6IER5bmFtaWNGb3JtRmllbGRNb2RlbFtdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MuY29uY2F0KGN1cnIpLCBbXSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtLlxuICAgKiBAcGFyYW0gaW5jbHVkZURpc2FibGVkRmllbGRzIEluY2x1ZGUgdGhlIGRpc2FibGVkIGZpZWxkcyBvZiB0aGUgZm9ybSwgaXMgZW5hYmxlZCBieSBkZWZhdWx0XG4gICAqL1xuICBwdWJsaWMgZ2V0Rm9ybVZhbHVlPFQgPSB1bmtub3duPihpbmNsdWRlRGlzYWJsZWRGaWVsZHMgPSB0cnVlKTogVCB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gaW5jbHVkZURpc2FibGVkRmllbGRzID8gdGhpcy5ncm91cC5nZXRSYXdWYWx1ZSgpIDogdGhpcy5ncm91cC52YWx1ZTtcblxuICAgIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgYW4gT2JzZXJ2YWJsZSB0byBsaXN0ZW4gdG8gY2hhbmdlcyBvZiBhIHNwZWNpZmljIGZpZWxkIGluIHRoZSBmb3JtLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBmaWVsZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHVua25vd24+XG4gICAqL1xuICBwdWJsaWMgb25Db250cm9sQ2hhbmdlKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5ncm91cC5nZXQobmFtZSk7XG5cbiAgICBpZiAoIWZpZWxkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZmllbGQgd2l0aCB0aGUgbmFtZSAke25hbWV9IGluIHRoZSBGb3JtR3JvdXBgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGQudmFsdWVDaGFuZ2VzO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlKGV2ZW50OiBEeW5hbWljRm9ybUZpZWxkRXZlbnQpIHtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiQGZvcihyb3cgb2YgZm9ybUNvbmZpZzsgdHJhY2sgJGluZGV4KSB7XG48ZGl2IGNsYXNzPVwiZHluYW1pYy1mb3JtLXJvd1wiPlxuICBAZm9yKGZpZWxkIG9mIHJvdzsgdHJhY2sgZmllbGQuaWQpIHtcbiAgPGR5bmFtaWMtZm9ybS1maWVsZCBjbGFzcz1cImR5bmFtaWMtZm9ybS1maWVsZFwiXG4gICAgW2lkXT1cImZpZWxkLmlkXCJcbiAgICBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgW25nQ2xhc3NdPVwiW2ZpZWxkLnR5cGUsICdmb3JtLWZpZWxkLXdpZHRoLScgKyBmaWVsZC53aWR0aF1cIlxuICAgIFtncm91cF09XCJncm91cFwiXG4gICAgW21vZGVsXT1cImZpZWxkXCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cbiAgPC9keW5hbWljLWZvcm0tZmllbGQ+XG4gIH1cbjwvZGl2PlxufSJdfQ==
|
|
@@ -26,9 +26,9 @@ import * as i1 from "@angular/forms";
|
|
|
26
26
|
export class DynamicFormFieldComponent {
|
|
27
27
|
constructor() {
|
|
28
28
|
this.change = new EventEmitter();
|
|
29
|
-
this._subs = new Subscription();
|
|
30
29
|
this.dynamicFormService = inject(DynamicFormService);
|
|
31
30
|
this.relationService = inject(DynamicFormRelationsService);
|
|
31
|
+
this._subs = new Subscription();
|
|
32
32
|
}
|
|
33
33
|
/** Get the instance of a control component using the injected custom method or local method */
|
|
34
34
|
get componentType() {
|
|
@@ -128,10 +128,10 @@ export class DynamicFormFieldComponent {
|
|
|
128
128
|
createDynamicFormEvent(event, type) {
|
|
129
129
|
return { event, type, control: this._control, form: this.group, model: this.model };
|
|
130
130
|
}
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicFormFieldComponent, isStandalone: true, selector: "dynamic-form-field", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "componentViewContainer", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div [formGroup]=\"group\"\n [ngClass]=\"['dynamic-form-field-container', 'dynamic-form-field-' + model.type]\">\n <ng-container #componentViewContainer></ng-container>\n</div>", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
133
133
|
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFormFieldComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
136
136
|
args: [{ standalone: true, imports: [NgClass, ReactiveFormsModule], selector: 'dynamic-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [formGroup]=\"group\"\n [ngClass]=\"['dynamic-form-field-container', 'dynamic-form-field-' + model.type]\">\n <ng-container #componentViewContainer></ng-container>\n</div>" }]
|
|
137
137
|
}], propDecorators: { componentViewContainer: [{
|
|
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
144
144
|
}], change: [{
|
|
145
145
|
type: Output
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDL0csT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7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LHlCQUF5QjttR0FBekIseUJBQXlCLHNRQUNTLGdCQUFnQiwyQ0NoRC9ELG9MQUdNLDRDRHVDTSxPQUFPLG1GQUFFLG1CQUFtQjs7NEZBSzNCLHlCQUF5QjtrQkFQckMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsWUFDN0Isb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU07OEJBR2dDLHNCQUFzQjtzQkFBcEcsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNCdXR0b25Ub2dnbGVzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTl9UT0dHTEVTIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9DSEVDS0JPWCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3gubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0lOUFVUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBEeW1hbWljUmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3JhZGlvLWdyb3VwL2R5bmFtaWMtcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9SQURJT19HUk9VUCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3JhZGlvLWdyb3VwL2R5bmFtaWMtcmFkaW8tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlYWRvbmx5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfU0VMRUNUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkRXZlbnQsIER5bmFtaWNGb3JtRmllbGRFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW50ZXJmYWNlcy9keW5hbWljLWZvcm0tZmllbGQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlbGF0ZWRGb3JtQ29udHJvbHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHlwZXMvcmVsYXRlZC1mb3JtLWNvbnRyb2xzLnR5cGUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1SZWxhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLXJlbGF0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWZvcm0tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJ2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudFZpZXdDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBjb21wb25lbnRWaWV3Q29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBtb2RlbCE6IER5bmFtaWNGb3JtRmllbGRNb2RlbDtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtRmllbGRFdmVudD4oKTtcblxuICBwcml2YXRlIF9jb250cm9sITogVW50eXBlZEZvcm1Db250cm9sO1xuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlID0gaW5qZWN0KER5bmFtaWNGb3JtU2VydmljZSk7XG4gIHByaXZhdGUgcmVsYXRpb25TZXJ2aWNlID0gaW5qZWN0KER5bmFtaWNGb3JtUmVsYXRpb25zU2VydmljZSk7XG5cbiAgLyoqIEdldCB0aGUgaW5zdGFuY2Ugb2YgYSBjb250cm9sIGNvbXBvbmVudCB1c2luZyB0aGUgaW5qZWN0ZWQgY3VzdG9tIG1ldGhvZCBvciBsb2NhbCBtZXRob2QgKi9cbiAgcHJpdmF0ZSBnZXQgY29tcG9uZW50VHlwZSgpOiBUeXBlPER5bmFtaWNGb3JtRmllbGQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmdldEN1c3RvbUNvbnRyb2xDb21wb25lbnRUeXBlKHRoaXMubW9kZWwpIHx8IHRoaXMuZ2V0Q29udHJvbENvbXBvbmVudFR5cGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLl9jb250cm9sID0gdGhpcy5ncm91cC5nZXQodGhpcy5tb2RlbC5uYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cbiAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xDb21wb25lbnQoKTtcbiAgICAgIHRoaXMuc2V0U3Vic2NyaXB0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgaW5zdGFuY2Ugb2YgYSBjb250cm9sIGNvbXBvbmVudCBieSB0eXBlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyb2xDb21wb25lbnRUeXBlKCk6IFR5cGU8RHluYW1pY0Zvcm1GaWVsZD4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZWwudHlwZSkge1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfQ0hFQ0tCT1g6XG4gICAgICAgIHJldHVybiBEeW5hbWljQ2hlY2tib3hDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9JTlBVVDpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNJbnB1dENvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX1RFWFRBUkVBOlxuICAgICAgICByZXR1cm4gRHluYW1pY1RleHRhcmVhQ29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfUkVBRE9OTFk6XG4gICAgICAgIHJldHVybiBEeW5hbWljUmVhZG9ubHlDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9TRUxFQ1Q6XG4gICAgICAgIHJldHVybiBEeW5hbWljU2VsZWN0Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OOlxuICAgICAgICByZXR1cm4gRHluYW1pY0J1dHRvbkNvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTl9UT0dHTEVTOlxuICAgICAgICByZXR1cm4gRHluYW1pY0J1dHRvblRvZ2dsZXNDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9SQURJT19HUk9VUDpcbiAgICAgICAgcmV0dXJuIER5bWFtaWNSYWRpb0dyb3VwQ29tcG9uZW50O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBNb2RlbCBvZiB0eXBlICdkeW5hbWljLSR7dGhpcy5tb2RlbC50eXBlfScgaXMgbm90IGltcGxlbWVudGVkIHlldC4gQWRkIHRoaXMgdHlwZSB0byBkeW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIHRvIGFkZCBzdXBwb3J0YFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm1Db250cm9sQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50VHlwZTtcblxuICAgIGlmIChjb21wb25lbnQgIT0gbnVsbCkge1xuICAgICAgbGV0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Vmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcblxuICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICAgIHRoaXMuX3N1YnMuYWRkKGNvbXBvbmVudEluc3RhbmNlLmNoYW5nZT8uc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNoYW5nZShldmVudCkpKTtcblxuICAgICAgY29tcG9uZW50SW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR1cCBhbGwgbmVjZXNzYXJ5IHN1YnNjcmlwdGlvbnMgb2YgdGhlIEZvcm1Db250cm9sXG4gICAqL1xuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm1vZGVsIGFzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPHVua25vd24+O1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSB2YWx1ZSBjaGFuZ2UgaW5zaWRlIHRoZSBjb250cm9sIHRvIGNoYW5nZSB0aGUgdmFsdWUgaW5zaWRlIHRoZSBtb2RlbCBhcyB3ZWxsXG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlKSkpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNhYmxlZCBjaGFuZ2UgaW5zaWRlIHRoZSBtb2RlbCB0byBjaGFuZ2UgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBGb3JtQ29udHJvbFxuICAgIHRoaXMuX3N1YnMuYWRkKG1vZGVsLmRpc2FibGVkQ2hhbmdlLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHRoaXMub25EaXNhYmxlZENoYW5nZShkaXNhYmxlZCkpKTtcblxuICAgIC8vIFNldHVwIHN1YnNjcmlwdGlvbnMgZm9yIGFueSBwb3NzaWJsZSByZWxhdGlvblxuICAgIGlmICh0aGlzLm1vZGVsLnJlbGF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldFVwUmVsYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhbGwgcmVsYXRpb25zIG9mIHRoZSBjdXJyZW50IG1vZGVsXG4gICAqL1xuICBwcml2YXRlIHNldFVwUmVsYXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEFycmF5IG9mIGFsbCBGb3JtQ29udHJvbHMgdGhlIGN1cnJlbnQgbW9kZWwgaGFzIGEgcmVsYXRpb24gdG9cbiAgICBjb25zdCByZWxhdGVkRm9ybUNvbnRyb2xzOiBSZWxhdGVkRm9ybUNvbnRyb2xzID0gdGhpcy5yZWxhdGlvblNlcnZpY2UuZmluZFJlbGF0ZWRGb3JtRmllbGQodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XG4gICAgY29uc3Qgc3VicyA9IHRoaXMucmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uU3Vic2NyaXB0aW9ucyhyZWxhdGVkRm9ybUNvbnRyb2xzLCB0aGlzLm1vZGVsLCB0aGlzLl9jb250cm9sKTtcblxuICAgIC8vIEFkZCBhbGwgcmVsYXRpb25zIGFzIHN1YnNjcmlwdGlvbiB0byB0aGUgbWFpbiBTdWJzY3JpcHRpb24gb2JqZWN0XG4gICAgc3Vicy5mb3JFYWNoKChzdWIpID0+IHRoaXMuX3N1YnMuYWRkKHN1YikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgb2YgdGhlIGNvbnRyb2wgYW5kIHVwZGF0ZXMgdGhlIHZhbHVlIGluc2lkZSB0aGUgbW9kZWxcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsICYmIHRoaXMubW9kZWwudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLm1vZGVsLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMvZGlzYWJsZWQgdGhlIGNvbnRyb2wgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlci5cbiAgICogSXMgZmlyZWQgd2hlbiBkaXNhYmxlZCBzdGF0ZSBpcyBjaGFuZ2VkIGluc2lkZSB0aGUgbW9kZWwgYW5kIHNob3VsZCBub3QgYmUgZGlyZWN0bHkgdXNlZCBvdXRzaWRlIHRoaXMgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gZGlzYWJsZWRcbiAgICovXG4gIHByaXZhdGUgb25EaXNhYmxlZENoYW5nZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGRpc2FibGVkID8gdGhpcy5fY29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLl9jb250cm9sLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZShldjogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5jcmVhdGVEeW5hbWljRm9ybUV2ZW50KGV2LCAnY2hhbmdlJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEeW5hbWljRm9ybUV2ZW50KGV2ZW50OiB1bmtub3duLCB0eXBlOiBEeW5hbWljRm9ybUZpZWxkRXZlbnRUeXBlKTogRHluYW1pY0Zvcm1GaWVsZEV2ZW50IHtcbiAgICByZXR1cm4geyBldmVudCwgdHlwZSwgY29udHJvbDogdGhpcy5fY29udHJvbCwgZm9ybTogdGhpcy5ncm91cCwgbW9kZWw6IHRoaXMubW9kZWwgfTtcbiAgfVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCJcbiAgW25nQ2xhc3NdPVwiWydkeW5hbWljLWZvcm0tZmllbGQtY29udGFpbmVyJywgJ2R5bmFtaWMtZm9ybS1maWVsZC0nICsgbW9kZWwudHlwZV1cIj5cbiAgPG5nLWNvbnRhaW5lciAjY29tcG9uZW50Vmlld0NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDL0csT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7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QUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RGLENBQUM7K0dBcklVLHlCQUF5QjttR0FBekIseUJBQXlCLHNRQUNTLGdCQUFnQiwyQ0NoRC9ELG9MQUdNLDRDRHVDTSxPQUFPLG1GQUFFLG1CQUFtQjs7NEZBSzNCLHlCQUF5QjtrQkFQckMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsWUFDN0Isb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU07OEJBR2dDLHNCQUFzQjtzQkFBcEcsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNCdXR0b25Ub2dnbGVzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTl9UT0dHTEVTIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9DSEVDS0JPWCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3gubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0lOUFVUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBEeW1hbWljUmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3JhZGlvLWdyb3VwL2R5bmFtaWMtcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9SQURJT19HUk9VUCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3JhZGlvLWdyb3VwL2R5bmFtaWMtcmFkaW8tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlYWRvbmx5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfU0VMRUNUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkRXZlbnQsIER5bmFtaWNGb3JtRmllbGRFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW50ZXJmYWNlcy9keW5hbWljLWZvcm0tZmllbGQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlbGF0ZWRGb3JtQ29udHJvbHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHlwZXMvcmVsYXRlZC1mb3JtLWNvbnRyb2xzLnR5cGUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1SZWxhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLXJlbGF0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWZvcm0tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJ2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudFZpZXdDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBjb21wb25lbnRWaWV3Q29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBtb2RlbCE6IER5bmFtaWNGb3JtRmllbGRNb2RlbDtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtRmllbGRFdmVudD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtaWNGb3JtU2VydmljZSA9IGluamVjdChEeW5hbWljRm9ybVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGF0aW9uU2VydmljZSA9IGluamVjdChEeW5hbWljRm9ybVJlbGF0aW9uc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgX2NvbnRyb2whOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgLyoqIEdldCB0aGUgaW5zdGFuY2Ugb2YgYSBjb250cm9sIGNvbXBvbmVudCB1c2luZyB0aGUgaW5qZWN0ZWQgY3VzdG9tIG1ldGhvZCBvciBsb2NhbCBtZXRob2QgKi9cbiAgcHJpdmF0ZSBnZXQgY29tcG9uZW50VHlwZSgpOiBUeXBlPER5bmFtaWNGb3JtRmllbGQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmdldEN1c3RvbUNvbnRyb2xDb21wb25lbnRUeXBlKHRoaXMubW9kZWwpIHx8IHRoaXMuZ2V0Q29udHJvbENvbXBvbmVudFR5cGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLl9jb250cm9sID0gdGhpcy5ncm91cC5nZXQodGhpcy5tb2RlbC5uYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cbiAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xDb21wb25lbnQoKTtcbiAgICAgIHRoaXMuc2V0U3Vic2NyaXB0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgaW5zdGFuY2Ugb2YgYSBjb250cm9sIGNvbXBvbmVudCBieSB0eXBlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyb2xDb21wb25lbnRUeXBlKCk6IFR5cGU8RHluYW1pY0Zvcm1GaWVsZD4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZWwudHlwZSkge1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfQ0hFQ0tCT1g6XG4gICAgICAgIHJldHVybiBEeW5hbWljQ2hlY2tib3hDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9JTlBVVDpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNJbnB1dENvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX1RFWFRBUkVBOlxuICAgICAgICByZXR1cm4gRHluYW1pY1RleHRhcmVhQ29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfUkVBRE9OTFk6XG4gICAgICAgIHJldHVybiBEeW5hbWljUmVhZG9ubHlDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9TRUxFQ1Q6XG4gICAgICAgIHJldHVybiBEeW5hbWljU2VsZWN0Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OOlxuICAgICAgICByZXR1cm4gRHluYW1pY0J1dHRvbkNvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTl9UT0dHTEVTOlxuICAgICAgICByZXR1cm4gRHluYW1pY0J1dHRvblRvZ2dsZXNDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9SQURJT19HUk9VUDpcbiAgICAgICAgcmV0dXJuIER5bWFtaWNSYWRpb0dyb3VwQ29tcG9uZW50O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBNb2RlbCBvZiB0eXBlICdkeW5hbWljLSR7dGhpcy5tb2RlbC50eXBlfScgaXMgbm90IGltcGxlbWVudGVkIHlldC4gQWRkIHRoaXMgdHlwZSB0byBkeW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIHRvIGFkZCBzdXBwb3J0YFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm1Db250cm9sQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50VHlwZTtcblxuICAgIGlmIChjb21wb25lbnQgIT0gbnVsbCkge1xuICAgICAgbGV0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Vmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcblxuICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICAgIHRoaXMuX3N1YnMuYWRkKGNvbXBvbmVudEluc3RhbmNlLmNoYW5nZT8uc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNoYW5nZShldmVudCkpKTtcblxuICAgICAgY29tcG9uZW50SW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR1cCBhbGwgbmVjZXNzYXJ5IHN1YnNjcmlwdGlvbnMgb2YgdGhlIEZvcm1Db250cm9sXG4gICAqL1xuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm1vZGVsIGFzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPHVua25vd24+O1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSB2YWx1ZSBjaGFuZ2UgaW5zaWRlIHRoZSBjb250cm9sIHRvIGNoYW5nZSB0aGUgdmFsdWUgaW5zaWRlIHRoZSBtb2RlbCBhcyB3ZWxsXG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlKSkpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNhYmxlZCBjaGFuZ2UgaW5zaWRlIHRoZSBtb2RlbCB0byBjaGFuZ2UgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBGb3JtQ29udHJvbFxuICAgIHRoaXMuX3N1YnMuYWRkKG1vZGVsLmRpc2FibGVkQ2hhbmdlLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHRoaXMub25EaXNhYmxlZENoYW5nZShkaXNhYmxlZCkpKTtcblxuICAgIC8vIFNldHVwIHN1YnNjcmlwdGlvbnMgZm9yIGFueSBwb3NzaWJsZSByZWxhdGlvblxuICAgIGlmICh0aGlzLm1vZGVsLnJlbGF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldFVwUmVsYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhbGwgcmVsYXRpb25zIG9mIHRoZSBjdXJyZW50IG1vZGVsXG4gICAqL1xuICBwcml2YXRlIHNldFVwUmVsYXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEFycmF5IG9mIGFsbCBGb3JtQ29udHJvbHMgdGhlIGN1cnJlbnQgbW9kZWwgaGFzIGEgcmVsYXRpb24gdG9cbiAgICBjb25zdCByZWxhdGVkRm9ybUNvbnRyb2xzOiBSZWxhdGVkRm9ybUNvbnRyb2xzID0gdGhpcy5yZWxhdGlvblNlcnZpY2UuZmluZFJlbGF0ZWRGb3JtRmllbGQodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XG5cbiAgICBjb25zdCBzdWJzID0gdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb25TdWJzY3JpcHRpb25zKHJlbGF0ZWRGb3JtQ29udHJvbHMsIHRoaXMubW9kZWwsIHRoaXMuX2NvbnRyb2wpO1xuXG4gICAgLy8gQWRkIGFsbCByZWxhdGlvbnMgYXMgc3Vic2NyaXB0aW9uIHRvIHRoZSBtYWluIFN1YnNjcmlwdGlvbiBvYmplY3RcbiAgICBzdWJzLmZvckVhY2goKHN1YikgPT4gdGhpcy5fc3Vicy5hZGQoc3ViKSk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyBvZiB0aGUgY29udHJvbCBhbmQgdXBkYXRlcyB0aGUgdmFsdWUgaW5zaWRlIHRoZSBtb2RlbFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIHByaXZhdGUgb25WYWx1ZUNoYW5nZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgJiYgdGhpcy5tb2RlbC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMubW9kZWwudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcy9kaXNhYmxlZCB0aGUgY29udHJvbCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyLlxuICAgKiBJcyBmaXJlZCB3aGVuIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQgaW5zaWRlIHRoZSBtb2RlbCBhbmQgc2hvdWxkIG5vdCBiZSBkaXJlY3RseSB1c2VkIG91dHNpZGUgdGhpcyBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBkaXNhYmxlZFxuICAgKi9cbiAgcHJpdmF0ZSBvbkRpc2FibGVkQ2hhbmdlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgZGlzYWJsZWQgPyB0aGlzLl9jb250cm9sLmRpc2FibGUoKSA6IHRoaXMuX2NvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlKGV2OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmNyZWF0ZUR5bmFtaWNGb3JtRXZlbnQoZXYsICdjaGFuZ2UnKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUR5bmFtaWNGb3JtRXZlbnQoZXZlbnQ6IHVua25vd24sIHR5cGU6IER5bmFtaWNGb3JtRmllbGRFdmVudFR5cGUpOiBEeW5hbWljRm9ybUZpZWxkRXZlbnQge1xuICAgIHJldHVybiB7IGV2ZW50LCB0eXBlLCBjb250cm9sOiB0aGlzLl9jb250cm9sLCBmb3JtOiB0aGlzLmdyb3VwLCBtb2RlbDogdGhpcy5tb2RlbCB9O1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbbmdDbGFzc109XCJbJ2R5bmFtaWMtZm9ybS1maWVsZC1jb250YWluZXInLCAnZHluYW1pYy1mb3JtLWZpZWxkLScgKyBtb2RlbC50eXBlXVwiPlxuICA8bmctY29udGFpbmVyICNjb21wb25lbnRWaWV3Q29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
@@ -8,15 +8,15 @@ export class DynamicButtonComponent extends DynamicFormFieldBase {
|
|
|
8
8
|
onClick() {
|
|
9
9
|
this.model.onClick();
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicButtonComponent, isStandalone: true, selector: "dynamic-button", inputs: { model: "model", group: "group" }, usesInheritance: true, ngImport: i0, template: "<button mat-button\n [id]=\"id\"\n (click)=\"onClick()\">\n <span>{{model.label}}</span>\n</button>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicButtonComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
|
-
args: [{ standalone: true, imports: [NgIf, MatButtonModule], selector: 'dynamic-button', template: "<
|
|
16
|
+
args: [{ standalone: true, imports: [NgIf, MatButtonModule], selector: 'dynamic-button', template: "<button mat-button\n [id]=\"id\"\n (click)=\"onClick()\">\n <span>{{model.label}}</span>\n</button>" }]
|
|
17
17
|
}], propDecorators: { model: [{
|
|
18
18
|
type: Input
|
|
19
19
|
}], group: [{
|
|
20
20
|
type: Input
|
|
21
21
|
}] } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQVNwRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsb0JBQW9CO0lBSXZELE9BQU87UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0dBTlUsc0JBQXNCO21HQUF0QixzQkFBc0IsNklDYm5DLHdHQUlTLDJDREtTLGVBQWU7OzRGQUlwQixzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxZQUN0QixnQkFBZ0I7OEJBSWpCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEJhc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtYmFzZSc7XG5pbXBvcnQgeyBEeW5hbWljQnV0dG9uIH0gZnJvbSAnLi9keW5hbWljLWJ1dHRvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTWF0QnV0dG9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0J1dHRvbkNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQElucHV0KCkgbW9kZWwhOiBEeW5hbWljQnV0dG9uO1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIG9uQ2xpY2soKSB7XG4gICAgdGhpcy5tb2RlbC5vbkNsaWNrKCk7XG4gIH1cbn1cbiIsIjxidXR0b24gbWF0LWJ1dHRvblxuICBbaWRdPVwiaWRcIlxuICAoY2xpY2spPVwib25DbGljaygpXCI+XG4gIDxzcGFuPnt7bW9kZWwubGFiZWx9fTwvc3Bhbj5cbjwvYnV0dG9uPiJdfQ==
|
|
@@ -4,9 +4,8 @@ export class DynamicButton extends DynamicFormFieldModel {
|
|
|
4
4
|
constructor(config) {
|
|
5
5
|
super(config);
|
|
6
6
|
this.type = DYNAMIC_FORM_FIELD_BUTTON;
|
|
7
|
-
this.
|
|
8
|
-
this.raised = config.raised ?? false;
|
|
7
|
+
this.label = config.label ?? null;
|
|
9
8
|
this.onClick = config.onClick;
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3RGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQztBQU9sRCxNQUFNLE9BQU8sYUFBYyxTQUFRLHFCQUFxQjtJQU10RCxZQUFZLE1BQTJCO1FBQ3JDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUhBLFNBQUksR0FBRyx5QkFBeUIsQ0FBQztRQUsvQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtbW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1maWVsZC1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9GSUVMRF9CVVRUT04gPSAnYnV0dG9uJztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljQnV0dG9uQ29uZmlnIGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9uQ2xpY2s6ICgpID0+IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNCdXR0b24gZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkTW9kZWwge1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBvbkNsaWNrOiAoKSA9PiBhbnk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0J1dHRvbkNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG5cbiAgICB0aGlzLmxhYmVsID0gY29uZmlnLmxhYmVsID8/IG51bGw7XG4gICAgdGhpcy5vbkNsaWNrID0gY29uZmlnLm9uQ2xpY2s7XG4gIH1cbn1cbiJdfQ==
|