ngx-iso-form 3.0.2 → 3.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.
- package/README.md +210 -83
- package/fesm2022/ngx-iso-form.mjs +77 -16
- package/fesm2022/ngx-iso-form.mjs.map +1 -1
- package/lib/Models/IsoForm.d.ts +3 -1
- package/lib/ngx-iso-form.service.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://
|
|
3
|
-
<img src="https://raw.githubusercontent.com/pixelbyaj/ngx-form/main/anguar_logo.svg?sanitize=true" />
|
|
2
|
+
<a href="https://github.com/pixelbyaj/ngx-iso-form">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/pixelbyaj/ngx-form/main/anguar_logo.svg?sanitize=true" alt="Angular Logo" />
|
|
4
4
|
</a>
|
|
5
5
|
<br />
|
|
6
|
-
<h1>
|
|
7
|
-
XSD - JSON powered / Dynamic ISO 20022 forms in Angular v19
|
|
8
|
-
</h1>
|
|
6
|
+
<h1>XSD - JSON Powered / Dynamic ISO 20022 Forms in Angular v19</h1>
|
|
9
7
|
|
|
10
8
|

|
|
11
9
|

|
|
@@ -16,17 +14,17 @@
|
|
|
16
14
|
|
|
17
15
|
# NgxIsoForm
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
NgxIsoForm is a library for dynamically generating Angular Reactive Forms using JSON derived from XSD. It is primarily designed for ISO 20022 forms.
|
|
20
18
|
|
|
21
19
|
## Features
|
|
22
20
|
|
|
23
|
-
- 🔥 Automatic
|
|
24
|
-
- 📝
|
|
21
|
+
- 🔥 Automatic form generation
|
|
22
|
+
- 📝 Extendable with custom field types
|
|
25
23
|
- ⚡️ Supports ISO 20022 schemas:
|
|
26
|
-
- XSD
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- 💪 Built on
|
|
24
|
+
- XSD to JSON Schema conversion using XSDService NuGet
|
|
25
|
+
- Validation support: required, pattern, minlength, maxlength
|
|
26
|
+
- Translation support for labels, errors, and date formats
|
|
27
|
+
- 💪 Built on [Angular Reactive Forms](https://angular.dev/guide/forms/reactive-forms)
|
|
30
28
|
|
|
31
29
|
## [Live Demo](https://iso20022.in/#/ngx-iso-form-demo?json=pacs.009.001.10)
|
|
32
30
|
|
|
@@ -34,36 +32,36 @@ This form is used to design Angular Reactive Form using any given JSON - XSD. Th
|
|
|
34
32
|
|
|
35
33
|
## **NOTE**
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
The library does not directly execute XSD. Users must convert XSD to JSON using the [xsd-json-converter](https://www.npmjs.com/package/xsd-json-converter) npm package or the [.NET ISO20022.XSD](https://www.nuget.org/packages/iSO20022.XSD) NuGet package.
|
|
38
36
|
|
|
39
|
-
##
|
|
37
|
+
## New Version
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
**Version 3.2.0** introduces support for using ISO 20022 XML messages as a model.
|
|
42
40
|
|
|
43
|
-
|
|
41
|
+
## How to Use
|
|
42
|
+
|
|
43
|
+
### Add Angular Material v19
|
|
44
|
+
|
|
45
|
+
```bash
|
|
44
46
|
ng add @angular/material
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
### Install
|
|
49
|
+
### Install the Library
|
|
48
50
|
|
|
49
|
-
```
|
|
50
|
-
npm
|
|
51
|
+
```bash
|
|
52
|
+
npm install ngx-iso-form
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
### Import Module
|
|
55
|
+
### Import Module and SCSS
|
|
54
56
|
|
|
55
57
|
```typescript
|
|
56
58
|
import { NgxIsoFormModule } from 'ngx-iso-form';
|
|
57
59
|
import { HttpClient, provideHttpClient } from '@angular/common/http';
|
|
58
60
|
|
|
59
61
|
@NgModule({
|
|
60
|
-
...
|
|
61
62
|
imports: [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
],
|
|
65
|
-
provider:[provideHttpClient()]
|
|
66
|
-
TranslateModule.forRoot({
|
|
63
|
+
NgxIsoFormModule,
|
|
64
|
+
TranslateModule.forRoot({
|
|
67
65
|
defaultLanguage: 'en',
|
|
68
66
|
loader: {
|
|
69
67
|
provide: TranslateLoader,
|
|
@@ -71,80 +69,87 @@ import { HttpClient, provideHttpClient } from '@angular/common/http';
|
|
|
71
69
|
deps: [HttpClient]
|
|
72
70
|
}
|
|
73
71
|
})
|
|
74
|
-
|
|
72
|
+
],
|
|
73
|
+
providers: [provideHttpClient()]
|
|
75
74
|
})
|
|
76
|
-
|
|
77
75
|
export function HttpLoaderFactory(http: HttpClient) {
|
|
78
76
|
return new TranslateHttpLoader(http, '/i18n/', '.json');
|
|
79
77
|
}
|
|
80
|
-
|
|
81
78
|
```
|
|
82
79
|
|
|
83
|
-
Add style file to angular.json
|
|
80
|
+
Add the style file to `angular.json`:
|
|
84
81
|
|
|
85
82
|
```json
|
|
86
|
-
styles:[
|
|
87
|
-
|
|
83
|
+
"styles": [
|
|
84
|
+
"node_modules/ngx-iso-form/lib/styles/index.scss"
|
|
88
85
|
]
|
|
89
86
|
```
|
|
90
87
|
|
|
91
|
-
###
|
|
88
|
+
### Usage
|
|
92
89
|
|
|
93
|
-
|
|
90
|
+
#### New Option: `excludes`
|
|
94
91
|
|
|
95
92
|
```html
|
|
96
93
|
<ngx-iso-form #isoForm [schema]="schema" [form]="form" [excludes]="excludes"></ngx-iso-form>
|
|
97
94
|
```
|
|
98
95
|
|
|
99
|
-
**
|
|
96
|
+
**Note:** `excludes` (optional) accepts a `string[]` to exclude specific IDs from the form, allowing customization for business requirements.
|
|
100
97
|
|
|
101
98
|
### Public APIs
|
|
102
99
|
|
|
103
|
-
- model
|
|
104
|
-
- invalid
|
|
100
|
+
- `model`: Retrieves form data in JSON format.
|
|
101
|
+
- `invalid`: Returns the form's validation status (`true` or `false`).
|
|
105
102
|
|
|
106
|
-
```
|
|
103
|
+
```typescript
|
|
107
104
|
@ViewChild('isoForm') isoForm: NgxIsoFormComponent;
|
|
108
105
|
|
|
109
|
-
get model():string {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
get invalid():boolean {
|
|
106
|
+
get model(): string {
|
|
107
|
+
return JSON.stringify(this.isoForm.model);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
get invalid(): boolean {
|
|
114
111
|
return this.isoForm.invalid;
|
|
115
112
|
}
|
|
116
113
|
```
|
|
117
114
|
|
|
118
|
-
### Component
|
|
115
|
+
### Component Example
|
|
119
116
|
|
|
120
117
|
```typescript
|
|
121
118
|
export class AppComponent implements OnInit {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
119
|
+
@ViewChild('isoForm') isoForm: NgxIsoFormComponent;
|
|
120
|
+
|
|
121
|
+
form: IsoForm;
|
|
122
|
+
schema: SchemaElement;
|
|
123
|
+
excludes: string[] = [];
|
|
124
|
+
|
|
125
|
+
constructor(private httpClient: HttpClient) {}
|
|
126
|
+
|
|
127
|
+
ngOnInit() {
|
|
128
|
+
this.httpClient.get('path/to/schema.json').subscribe((data) => {
|
|
129
|
+
this.schema = data as SchemaElement;
|
|
131
130
|
});
|
|
131
|
+
}
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
setWithJsonModel() {
|
|
134
|
+
this.httpClient.get('path/to/model.json').subscribe((model) => {
|
|
135
|
+
this.form = new IsoForm(model);
|
|
135
136
|
});
|
|
137
|
+
}
|
|
136
138
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
this.
|
|
141
|
-
}
|
|
139
|
+
// New Support of XML Message as a model
|
|
140
|
+
setWithXmlMessage() {
|
|
141
|
+
this.httpClient.get('path/to/message.xml').subscribe((xmlMessage) => {
|
|
142
|
+
this.form = new IsoForm(null, xmlMessage);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
142
145
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
146
|
+
get model(): string {
|
|
147
|
+
return JSON.stringify(this.isoForm.model);
|
|
148
|
+
}
|
|
147
149
|
|
|
150
|
+
get invalid(): boolean {
|
|
151
|
+
return this.isoForm.invalid;
|
|
152
|
+
}
|
|
148
153
|
}
|
|
149
154
|
```
|
|
150
155
|
|
|
@@ -174,8 +179,7 @@ export interface SchemaElement {
|
|
|
174
179
|
|
|
175
180
|
### Translation Support
|
|
176
181
|
|
|
177
|
-
|
|
178
|
-
Please declare all your translation rules under 'iso' object.
|
|
182
|
+
Translation is supported for the `name` and `id` properties of `SchemaElement`. Declare translation rules under the `iso` object.
|
|
179
183
|
|
|
180
184
|
```json
|
|
181
185
|
{
|
|
@@ -199,23 +203,146 @@ Please declare all your translation rules under 'iso' object.
|
|
|
199
203
|
}
|
|
200
204
|
```
|
|
201
205
|
|
|
202
|
-
|
|
206
|
+
### Sample XML Model
|
|
207
|
+
|
|
208
|
+
```xml
|
|
209
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
210
|
+
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
|
|
211
|
+
<CstmrCdtTrfInitn>
|
|
212
|
+
<GrpHdr>
|
|
213
|
+
<MsgId>123456</MsgId>
|
|
214
|
+
<CreDtTm>2025-03-27T10:00:00</CreDtTm>
|
|
215
|
+
<NbOfTxs>1</NbOfTxs>
|
|
216
|
+
<CtrlSum>1000.00</CtrlSum>
|
|
217
|
+
<InitgPty>
|
|
218
|
+
<Nm>Sender Company</Nm>
|
|
219
|
+
</InitgPty>
|
|
220
|
+
</GrpHdr>
|
|
221
|
+
<PmtInf>
|
|
222
|
+
<PmtInfId>PAY001</PmtInfId>
|
|
223
|
+
<PmtMtd>TRF</PmtMtd>
|
|
224
|
+
<BtchBookg>false</BtchBookg>
|
|
225
|
+
<Dbtr>
|
|
226
|
+
<Nm>John Doe</Nm>
|
|
227
|
+
</Dbtr>
|
|
228
|
+
<DbtrAcct>
|
|
229
|
+
<Id>
|
|
230
|
+
<IBAN>DE89370400440532013000</IBAN>
|
|
231
|
+
</Id>
|
|
232
|
+
</DbtrAcct>
|
|
233
|
+
<DbtrAgt>
|
|
234
|
+
<FinInstnId>
|
|
235
|
+
<BICFI>DEUTDEFFXXX</BICFI>
|
|
236
|
+
</FinInstnId>
|
|
237
|
+
</DbtrAgt>
|
|
238
|
+
<CdtTrfTxInf>
|
|
239
|
+
<PmtId>
|
|
240
|
+
<EndToEndId>TX123</EndToEndId>
|
|
241
|
+
</PmtId>
|
|
242
|
+
<Amt>
|
|
243
|
+
<InstdAmt Ccy="EUR">1000.00</InstdAmt>
|
|
244
|
+
</Amt>
|
|
245
|
+
<Cdtr>
|
|
246
|
+
<Nm>Jane Smith</Nm>
|
|
247
|
+
</Cdtr>
|
|
248
|
+
<CdtrAcct>
|
|
249
|
+
<Id>
|
|
250
|
+
<IBAN>FR7630006000011234567890189</IBAN>
|
|
251
|
+
</Id>
|
|
252
|
+
</CdtrAcct>
|
|
253
|
+
<CdtrAgt>
|
|
254
|
+
<FinInstnId>
|
|
255
|
+
<BICFI>BNPAFRPPXXX</BICFI>
|
|
256
|
+
</FinInstnId>
|
|
257
|
+
</CdtrAgt>
|
|
258
|
+
</CdtTrfTxInf>
|
|
259
|
+
</PmtInf>
|
|
260
|
+
</CstmrCdtTrfInitn>
|
|
261
|
+
</Document>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Output JSON Example (pain.001.001.12)
|
|
265
|
+
|
|
266
|
+
```json
|
|
267
|
+
{
|
|
268
|
+
"Document": {
|
|
269
|
+
"CstmrCdtTrfInitn": {
|
|
270
|
+
"GrpHdr": {
|
|
271
|
+
"MsgId": "123456",
|
|
272
|
+
"CreDtTm": "2025-03-27T10:00:00",
|
|
273
|
+
"NbOfTxs": "1",
|
|
274
|
+
"CtrlSum": "1000",
|
|
275
|
+
"InitgPty": {
|
|
276
|
+
"Nm": "Sender Company",
|
|
277
|
+
"CtryOfRes": "US"
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"PmtInf": [
|
|
281
|
+
{
|
|
282
|
+
"PmtInfId": "PAY001",
|
|
283
|
+
"PmtMtd": "TRF",
|
|
284
|
+
"BtchBookg": "false",
|
|
285
|
+
"Dbtr": {
|
|
286
|
+
"Nm": "John Doe"
|
|
287
|
+
},
|
|
288
|
+
"DbtrAcct": {
|
|
289
|
+
"Nm": "DE89370400440532013000"
|
|
290
|
+
},
|
|
291
|
+
"DbtrAgt": {
|
|
292
|
+
"FinInstnId": {
|
|
293
|
+
"BICFI": "DEUTDEFFXXX"
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"CdtTrfTxInf": [
|
|
297
|
+
{
|
|
298
|
+
"PmtId": {
|
|
299
|
+
"EndToEndId": "TX123"
|
|
300
|
+
},
|
|
301
|
+
"Amt": {
|
|
302
|
+
"InstdAmt": {
|
|
303
|
+
"Ccy": "USD",
|
|
304
|
+
"Amt": "1000"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
"CdtrAgt": {
|
|
308
|
+
"FinInstnId": {
|
|
309
|
+
"BICFI": "BNPAFRPPXXX"
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"Cdtr": {
|
|
313
|
+
"Nm": "Jane Smith"
|
|
314
|
+
},
|
|
315
|
+
"CdtrAcct": {
|
|
316
|
+
"Id": {
|
|
317
|
+
"IBAN": "FR7630006000011234567890189"
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
]
|
|
322
|
+
}
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Convert XSD to JSON
|
|
203
330
|
|
|
204
|
-
Global (
|
|
331
|
+
### Global Installation (CLI)
|
|
205
332
|
|
|
206
|
-
```
|
|
207
|
-
|
|
333
|
+
```bash
|
|
334
|
+
npm install -g xsd-json-converter
|
|
208
335
|
```
|
|
209
336
|
|
|
210
|
-
Local (
|
|
337
|
+
### Local Installation (Script)
|
|
211
338
|
|
|
212
|
-
```
|
|
213
|
-
|
|
339
|
+
```bash
|
|
340
|
+
npm install xsd-json-converter
|
|
214
341
|
```
|
|
215
342
|
|
|
216
|
-
### CLI
|
|
343
|
+
### CLI Usage
|
|
217
344
|
|
|
218
|
-
```
|
|
345
|
+
```bash
|
|
219
346
|
xjc <source-path> <output-path>
|
|
220
347
|
```
|
|
221
348
|
|
|
@@ -223,21 +350,21 @@ xjc <source-path> <output-path>
|
|
|
223
350
|
|
|
224
351
|
##### Linux
|
|
225
352
|
|
|
226
|
-
```
|
|
353
|
+
```bash
|
|
227
354
|
xjc /mnt/c/source/xsd/camt.053.001.10.xsd /mnt/c/source/xsd/camt.053.json
|
|
228
355
|
```
|
|
229
356
|
|
|
230
357
|
##### Windows
|
|
231
358
|
|
|
232
|
-
```
|
|
359
|
+
```bash
|
|
233
360
|
xjc C:/source/xsd/camt.053.001.10.xsd C:/source/xsd/camt.053.json
|
|
234
361
|
```
|
|
235
362
|
|
|
236
|
-
### Script
|
|
363
|
+
### Script Usage
|
|
237
364
|
|
|
238
|
-
JavaScript
|
|
365
|
+
#### JavaScript
|
|
239
366
|
|
|
240
|
-
```
|
|
367
|
+
```javascript
|
|
241
368
|
const xsd = require("xsd-json-converter").default;
|
|
242
369
|
|
|
243
370
|
xsd
|
|
@@ -246,9 +373,9 @@ xsd
|
|
|
246
373
|
.catch((error) => console.error(error));
|
|
247
374
|
```
|
|
248
375
|
|
|
249
|
-
TypeScript
|
|
376
|
+
#### TypeScript
|
|
250
377
|
|
|
251
|
-
```
|
|
378
|
+
```typescript
|
|
252
379
|
import xsd from "xsd-json-converter";
|
|
253
380
|
|
|
254
381
|
xsd
|
|
@@ -257,4 +384,4 @@ xsd
|
|
|
257
384
|
.catch((error) => console.error(error));
|
|
258
385
|
```
|
|
259
386
|
|
|
260
|
-
**
|
|
387
|
+
**Note:** For scripts, install the package locally.
|
|
@@ -430,7 +430,9 @@ class NgxIsoService {
|
|
|
430
430
|
cleanedValue !== '' &&
|
|
431
431
|
Object.keys(cleanedValue).length > 0 &&
|
|
432
432
|
(!Array.isArray(cleanedValue) || cleanedValue.length > 0)) {
|
|
433
|
-
|
|
433
|
+
const _keys = key.split('_');
|
|
434
|
+
const newKey = _keys[_keys.length - 1];
|
|
435
|
+
cleanedObj[newKey] = cleanedValue;
|
|
434
436
|
}
|
|
435
437
|
}
|
|
436
438
|
return cleanedObj;
|
|
@@ -460,13 +462,17 @@ class NgxIsoService {
|
|
|
460
462
|
maxOccurs(maxOccurs) {
|
|
461
463
|
return maxOccurs === 'unbounded' || parseInt(maxOccurs, 10) > 1;
|
|
462
464
|
}
|
|
463
|
-
initFormModel(model, form) {
|
|
465
|
+
initFormModel(model, form, prev_key) {
|
|
464
466
|
if (typeof model === 'object') {
|
|
465
467
|
for (const key in model) {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
+
const __key = !prev_key ? key : `${prev_key}_${key}`;
|
|
469
|
+
const parentNode = this.getFormModel(this._formModel[0], __key);
|
|
470
|
+
if (parentNode && parentNode.multi || Array.isArray(model[key])) {
|
|
471
|
+
if ((!Array.isArray(model[key])) && parentNode && parentNode.multi) {
|
|
472
|
+
model[key] = [model[key]];
|
|
473
|
+
}
|
|
468
474
|
const item = model[key];
|
|
469
|
-
const formArray = form.get(
|
|
475
|
+
const formArray = form.get(__key);
|
|
470
476
|
if (formArray && formArray.length !== item.length) {
|
|
471
477
|
const newEle = structuredClone(parentNode.elements[parentNode.elements.length - 1]);
|
|
472
478
|
if (!(newEle.maxOccurs &&
|
|
@@ -485,27 +491,28 @@ class NgxIsoService {
|
|
|
485
491
|
}
|
|
486
492
|
for (let i = 0; i < item.length; i++) {
|
|
487
493
|
parentNode.elements[i].expanded = true;
|
|
488
|
-
const formArray = form.get(
|
|
494
|
+
const formArray = form.get(__key);
|
|
489
495
|
if (formArray) {
|
|
490
496
|
const frmGroup = formArray.at(i);
|
|
491
497
|
if (frmGroup) {
|
|
492
|
-
this.initFormModel(item[i], frmGroup);
|
|
498
|
+
this.initFormModel(item[i], frmGroup, __key);
|
|
493
499
|
}
|
|
494
500
|
}
|
|
495
501
|
}
|
|
496
502
|
}
|
|
497
503
|
else if (typeof model[key] === 'object') {
|
|
498
|
-
const node = this.getFormModel(this._formModel[0],
|
|
504
|
+
const node = this.getFormModel(this._formModel[0], __key);
|
|
499
505
|
node.expanded = true;
|
|
500
506
|
if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {
|
|
501
507
|
node.minOccurs = '1';
|
|
502
508
|
}
|
|
503
|
-
const _form = form.get(
|
|
509
|
+
const _form = form.get(__key);
|
|
504
510
|
if (_form) {
|
|
505
511
|
if (node.dataType === 'choice') {
|
|
506
512
|
const choiceKey = Object.keys(model[key])[0];
|
|
507
|
-
const
|
|
508
|
-
node.
|
|
513
|
+
const _choiceKey = `${__key}_${choiceKey}`;
|
|
514
|
+
const choiceEle = node.elements.find((item) => item.id === _choiceKey);
|
|
515
|
+
node.choiceKey = _choiceKey;
|
|
509
516
|
choiceEle.hidden = false;
|
|
510
517
|
choiceEle.expanded = true;
|
|
511
518
|
const newNode = structuredClone(choiceEle);
|
|
@@ -518,11 +525,11 @@ class NgxIsoService {
|
|
|
518
525
|
_form.addControl(newNode.id, control);
|
|
519
526
|
}
|
|
520
527
|
}
|
|
521
|
-
this.initFormModel(model[key], _form);
|
|
528
|
+
this.initFormModel(model[key], _form, __key);
|
|
522
529
|
}
|
|
523
530
|
}
|
|
524
531
|
else {
|
|
525
|
-
const _form = form.get(
|
|
532
|
+
const _form = form.get(__key);
|
|
526
533
|
_form.setValue(model[key]);
|
|
527
534
|
}
|
|
528
535
|
}
|
|
@@ -530,7 +537,7 @@ class NgxIsoService {
|
|
|
530
537
|
else if (Array.isArray(model)) {
|
|
531
538
|
for (let i = 0; i < model.length; i++) {
|
|
532
539
|
const frmGroup = form.at(i);
|
|
533
|
-
this.initFormModel(model[i], frmGroup);
|
|
540
|
+
this.initFormModel(model[i], frmGroup, '');
|
|
534
541
|
}
|
|
535
542
|
}
|
|
536
543
|
}
|
|
@@ -712,7 +719,7 @@ class NgxIsoFormComponent {
|
|
|
712
719
|
return this.model;
|
|
713
720
|
};
|
|
714
721
|
this._isFormInitiate = true;
|
|
715
|
-
this.service.initFormModel(this._ngModel, this._form);
|
|
722
|
+
this.service.initFormModel(this._ngModel, this._form, "");
|
|
716
723
|
}
|
|
717
724
|
}
|
|
718
725
|
onChoiceSelectionChange(id, formElement, node) {
|
|
@@ -952,16 +959,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
952
959
|
}] });
|
|
953
960
|
|
|
954
961
|
class IsoForm {
|
|
955
|
-
constructor(model) {
|
|
962
|
+
constructor(model, xmlMessage = '') {
|
|
963
|
+
this._namespace = {};
|
|
956
964
|
/**
|
|
957
965
|
* @deprecated This method is deprecated use `#isoForm.getFormModel` instead
|
|
958
966
|
*/
|
|
959
967
|
this.getFormModel = () => { };
|
|
968
|
+
if (xmlMessage) {
|
|
969
|
+
model = this.parseXML(new DOMParser().parseFromString(xmlMessage, 'text/xml').childNodes[0]);
|
|
970
|
+
}
|
|
960
971
|
this._model = model;
|
|
961
972
|
}
|
|
962
973
|
get isoFormModel() {
|
|
963
974
|
return this._model;
|
|
964
975
|
}
|
|
976
|
+
parseXML(node) {
|
|
977
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
978
|
+
const obj = {};
|
|
979
|
+
obj[node.nodeName] = {};
|
|
980
|
+
if (node.hasChildNodes()) {
|
|
981
|
+
for (let childNode of Array.from(node.childNodes)) {
|
|
982
|
+
const childObj = this.parseXML(childNode);
|
|
983
|
+
if (typeof childObj === 'object' &&
|
|
984
|
+
childNode.nodeType !== Node.TEXT_NODE &&
|
|
985
|
+
Object.keys(childObj).length > 0) {
|
|
986
|
+
if (obj[node.nodeName][childNode.nodeName]) {
|
|
987
|
+
obj[node.nodeName][childNode.nodeName] = [
|
|
988
|
+
structuredClone(obj[node.nodeName][childNode.nodeName]),
|
|
989
|
+
];
|
|
990
|
+
obj[node.nodeName][childNode.nodeName].push(childObj[childNode.nodeName]);
|
|
991
|
+
}
|
|
992
|
+
else {
|
|
993
|
+
obj[node.nodeName][childNode.nodeName] = {};
|
|
994
|
+
obj[node.nodeName][childNode.nodeName] =
|
|
995
|
+
childObj[childNode.nodeName];
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
else if (childObj && Object.keys(childObj).length > 0) {
|
|
999
|
+
obj[node.nodeName] = childObj;
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
if (node.attributes && node.attributes.length > 0) {
|
|
1004
|
+
for (const attribute of Array.from(node.attributes)) {
|
|
1005
|
+
if (attribute.nodeName === 'xmlns') {
|
|
1006
|
+
this._namespace[node.nodeName] = attribute.nodeValue;
|
|
1007
|
+
}
|
|
1008
|
+
else {
|
|
1009
|
+
if (attribute.nodeName === 'Ccy') {
|
|
1010
|
+
obj[node.nodeName] = {
|
|
1011
|
+
Amt: node.textContent,
|
|
1012
|
+
Ccy: attribute.nodeValue,
|
|
1013
|
+
};
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
return obj;
|
|
1019
|
+
}
|
|
1020
|
+
else if (node.nodeType === Node.TEXT_NODE ||
|
|
1021
|
+
node.nodeType === Node.CDATA_SECTION_NODE) {
|
|
1022
|
+
return node.nodeValue.trim();
|
|
1023
|
+
}
|
|
1024
|
+
return {};
|
|
1025
|
+
}
|
|
965
1026
|
}
|
|
966
1027
|
|
|
967
1028
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-iso-form.mjs","sources":["../../../projects/ngx-iso-form/src/lib/components/controls/iso-base-control.component.ts","../../../projects/ngx-iso-form/src/lib/shared/pipe/translate.pipe.ts","../../../projects/ngx-iso-form/src/lib/shared/pipe/error.pipe.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-date.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-date.component.html","../../../projects/ngx-iso-form/src/lib/shared/pipe/general.pipe.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-datetime.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-datetime.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-input.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-input.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-checkbox.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-checkbox.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-textarea.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-textarea.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-select.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-select.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-currency.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-currency.component.html","../../../projects/ngx-iso-form/src/lib/shared/models/component.model.ts","../../../projects/ngx-iso-form/src/lib/shared/services/control.service.ts","../../../projects/ngx-iso-form/src/lib/shared/directives/component-content.directive.ts","../../../projects/ngx-iso-form/src/lib/shared/components/dynamic/ngx-dynamic.component.ts","../../../projects/ngx-iso-form/src/lib/components/iso-control/iso-control.component.ts","../../../projects/ngx-iso-form/src/lib/components/iso-control/iso-control.component.html","../../../projects/ngx-iso-form/src/lib/shared/services/custom-date-adapter.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.service.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.component.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.component.html","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.module.ts","../../../projects/ngx-iso-form/src/lib/shared/services/component.service.ts","../../../projects/ngx-iso-form/src/lib/Models/IsoForm.ts","../../../projects/ngx-iso-form/src/public-api.ts","../../../projects/ngx-iso-form/src/ngx-iso-form.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { IControlModel } from '../../Models/Control';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'iso-base',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class IsoBaseControlComponent {\r\n\r\n @Input() control: IControlModel;\r\n @Input() formControl: FormControl;\r\n\r\n getKeys(errors: any)\r\n {\r\n if(errors)\r\n {\r\n return Object.keys(errors);\r\n }\r\n return [];\r\n }\r\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'trans',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class IsoTranslatePipe implements PipeTransform {\r\n\r\n constructor(private translateService: TranslateService) {\r\n\r\n }\r\n\r\n transform(value: string, id: string, defaultValue: string): string {\r\n let key = `iso.${value}`;\r\n let tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n key = `iso.${id}`;\r\n tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n return defaultValue;\r\n }\r\n }\r\n if(tran.label)\r\n {\r\n return tran.label;\r\n }\r\n return defaultValue;\r\n }\r\n\r\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'error',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class IsoErrorPipe implements PipeTransform {\r\n\r\n constructor(private translateService: TranslateService) {\r\n\r\n }\r\n\r\n transform(value: string, id: string,errorKey:string, defaultValue: string): string {\r\n let key = `iso.${value}`;\r\n let tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n key = `iso.${id}`;\r\n tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n return defaultValue;\r\n }\r\n }\r\n if(tran.error && tran.error[errorKey])\r\n {\r\n return tran.error[errorKey];\r\n }\r\n return defaultValue;\r\n }\r\n\r\n}","import { Component, Input } from '@angular/core';\r\nimport { IControlModel } from '../../Models/Control';\r\nimport { FormControl } from '@angular/forms';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-date',\r\n templateUrl: './iso-mat-date.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class IsoMatDate extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput [matDatepicker]=\"picker\" [formControl]=\"formControl\">\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'general',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class IsoGeneralPipe implements PipeTransform {\r\n\r\n constructor(private translateService: TranslateService) {\r\n\r\n }\r\n\r\n transform(value: string, id: string,generalKey:string, defaultValue: string): string {\r\n let key = `iso.${value}`;\r\n let tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n key = `iso.${id.toLocaleLowerCase()}`;\r\n tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n return defaultValue;\r\n }\r\n }\r\n if(tran.general && tran.general[generalKey])\r\n {\r\n return tran.general[generalKey];\r\n }\r\n return defaultValue;\r\n }\r\n\r\n}","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-datetime',\r\n templateUrl: './iso-mat-datetime.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatDateTime extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.minlength]=\"control.minLength\" [attr.maxlength]=\"control.maxLength\">\r\n <mat-hint>{{ control.id | general: control.id : \"format\" : \"YYYY-MM-DDThh:mm:ss.sss+/-hh:mm\" }}</mat-hint>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n \r\n</mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-input',\r\n templateUrl: './iso-mat-input.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatInput extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\" appearance=\"fill\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.minlength]=\"control.minLength\" [attr.maxlength]=\"control.maxLength\">\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-checkbox',\r\n templateUrl: './iso-mat-checkbox.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatCheckbox extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-checkbox [formControl]=\"formControl\">{{ control.name | trans: control.id : control.name }}</mat-checkbox>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","\r\nimport { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-textarea',\r\n templateUrl: './iso-mat-textarea.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class IsoMatTextarea extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-full\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <textarea matInput placeholder=\"{{control.name}}\" [formControl]=\"formControl\"></textarea>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","\r\nimport { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-select',\r\n templateUrl: './iso-mat-select.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class IsoMatSelect extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <mat-select [formControl]=\"formControl\">\r\n <mat-option *ngFor=\"let item of control.values\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-select>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n </mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-currency',\r\n templateUrl: './iso-mat-currency.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatCurrency extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-s\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.maxlength]=\"control.maxLength\">\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","import { Type } from \"@angular/core\";\r\n\r\nexport class ComponentModel {\r\n constructor(public component: Type<any>, public prop: any) { }\r\n}","import { FormControl } from \"@angular/forms\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\nimport { SchemaElement } from \"../../Models/Schema\";\r\nimport { IsoMatCurrency, IsoMatDate, IsoMatDateTime, IsoMatInput, IsoMatSelect, IsoMatTextarea } from \"../../components\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class ControlService {\r\n\r\n public getComponentByType(controlModel: SchemaElement, formControl: FormControl): ComponentModel {\r\n if (!controlModel.dataType) {\r\n console.log(\"controlModel name {0}\", controlModel.name);\r\n throw `Argument null exception dataType`;\r\n }\r\n switch (controlModel.dataType.toLocaleLowerCase()) {\r\n case \"string\":\r\n case \"decimal\":\r\n if(controlModel.name.toLocaleLowerCase().indexOf('ccy') > -1)\r\n {\r\n return new ComponentModel(IsoMatCurrency, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n if (controlModel.values?.length > 0) {\r\n return new ComponentModel(IsoMatSelect, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n if (controlModel.maxLength && parseInt(controlModel.maxLength, 10) > 50) {\r\n return new ComponentModel(IsoMatTextarea, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n return new ComponentModel(IsoMatInput, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"date\":\r\n return new ComponentModel(IsoMatDate, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"datetime\":\r\n return new ComponentModel(IsoMatDateTime, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"boolean\":\r\n controlModel.values = [\"true\", \"false\"];\r\n return new ComponentModel(IsoMatSelect, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"any\":\r\n return new ComponentModel(IsoMatTextarea, { \"control\": controlModel, \"formControl\": formControl });\r\n default:\r\n return new ComponentModel(IsoMatInput, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n }\r\n}","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[componentContent]',\r\n standalone: false\r\n})\r\nexport class ComponentDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}","import { Component, Input, OnInit, Type, ViewChild } from '@angular/core';\r\nimport { ComponentDirective } from '../../directives/component-content.directive';\r\nimport { ComponentModel } from '../../models/component.model';\r\n\r\n@Component({\r\n selector: 'ngx-dynamic',\r\n template: `<div><ng-template componentContent></ng-template></div>`,\r\n standalone: false\r\n})\r\nexport class NgxDynamicComponent implements OnInit {\r\n\r\n @Input() componentModel: ComponentModel;\r\n @ViewChild(ComponentDirective, { static: true }) componentContent!: ComponentDirective;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.loadComponent();\r\n }\r\n\r\n loadComponent() {\r\n const viewContainerRef = this.componentContent.viewContainerRef;\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent<any>(this.componentModel.component);\r\n if (this.componentModel.prop) {\r\n Object.assign(componentRef.instance, this.componentModel.prop);\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, forwardRef } from '@angular/core';\r\nimport { ControlService } from '../../shared/services/control.service';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\r\nimport { ComponentModel } from '../../shared/models/component.model';\r\nimport { SchemaElement } from '../../Models/Schema';\r\n\r\n@Component({\r\n selector: 'ngx-iso-control',\r\n templateUrl: './iso-control.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxIsoControlComponent),\r\n multi: true,\r\n }\r\n ],\r\n standalone: false\r\n})\r\n\r\nexport class NgxIsoControlComponent implements OnInit, ControlValueAccessor {\r\n @Input() formControl: FormControl;\r\n @Input() control: SchemaElement\r\n component: ComponentModel\r\n constructor(private controlService: ControlService) {\r\n\r\n }\r\n ngOnInit(): void {\r\n this.addValidator();\r\n this.component = this.controlService.getComponentByType(this.control, this.formControl);\r\n }\r\n\r\n writeValue(obj: any): void {\r\n }\r\n registerOnChange(fn: any): void {\r\n }\r\n registerOnTouched(fn: any): void {\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n }\r\n\r\n private addValidator = (): void => {\r\n try {\r\n const minOccurs = parseInt(this.control.minOccurs, 10);\r\n let minLength = parseInt(this.control.minLength, 10);\r\n const maxLength = parseInt(this.control.maxLength, 10);\r\n if (minOccurs) {\r\n this.formControl.addValidators(Validators.required);\r\n }\r\n if (!Number.isNaN(minLength)) {\r\n this.formControl.addValidators(Validators.minLength(minLength));\r\n }\r\n if (!Number.isNaN(maxLength)) {\r\n this.formControl.addValidators(Validators.maxLength(maxLength));\r\n }\r\n if (this.control.pattern) {\r\n this.formControl.addValidators(Validators.pattern(this.control.pattern));\r\n }\r\n if (this.control.fractionDigits) {\r\n minLength = Number.isNaN(minLength) ? 0 : minLength;\r\n const pattern = `^[\\\\d\\\\.\\\\d{0,${this.control.fractionDigits}}]{${minLength},${this.control.totalDigits}}$`\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n}","<ngx-dynamic *ngIf=\"component\" [componentModel]=\"component\"></ngx-dynamic>","import { Injectable } from '@angular/core';\r\nimport { NativeDateAdapter, MatDateFormats } from '@angular/material/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class CustomDateAdapter extends NativeDateAdapter {\r\n public override format(date: Date, displayFormat: Object): string {\r\n const day = this._to2digit(date.getDate());\r\n const month = this._to2digit(date.getMonth() + 1); // Months are zero-based\r\n const year = date.getFullYear();\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n private _to2digit(n: number) {\r\n return ('00' + n).slice(-2);\r\n }\r\n}\r\n\r\nexport const CUSTOM_DATE_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: 'YYYY-MM-DD',\r\n },\r\n display: {\r\n dateInput: 'YYYY-MM-DD',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n","import { Injectable } from '@angular/core';\nimport { FormGroup, FormControl, FormArray, FormBuilder } from '@angular/forms';\nimport { SchemaModel } from './Models/Schema';\nimport { CustomDateAdapter } from './shared/services/custom-date-adapter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxIsoService {\n public _formModel: any[] = [];\n public excludes: string[] = [];\n constructor(\n private fb: FormBuilder,\n private dateService: CustomDateAdapter\n ) {}\n\n public maxOccurs(maxOccurs: string): boolean {\n return maxOccurs === 'unbounded' || parseInt(maxOccurs, 10) > 1;\n }\n\n public initFormModel(model: any, form: FormGroup | FormArray): void {\n if (typeof model === 'object') {\n for (const key in model) {\n if (Array.isArray(model[key])) {\n const parentNode = this.getFormModel(this._formModel[0], key);\n const item = model[key];\n const formArray = form.get(key) as FormArray;\n if (formArray && formArray.length !== item.length) {\n const newEle = structuredClone(\n parentNode.elements[parentNode.elements.length - 1]\n );\n if (\n !(\n newEle.maxOccurs &&\n parseInt(newEle.maxOccurs, 10) <= parentNode.elements.length\n )\n ) {\n const newKeys: any = [];\n const groupControls = this.getFormGroupControls(\n newEle.elements,\n newKeys,\n parentNode.elements.length - 1\n );\n parentNode.elements.push(newEle);\n formArray.push(groupControls);\n parentNode.elements.forEach((element: SchemaModel) => {\n if (\n !element.minOccurs ||\n parseInt(element.minOccurs, 10) === 0\n ) {\n element.minOccurs = '1';\n }\n });\n }\n }\n\n for (let i = 0; i < item.length; i++) {\n parentNode.elements[i].expanded = true;\n const formArray = form.get(key);\n if (formArray) {\n const frmGroup = (formArray as FormArray).at(i);\n if (frmGroup) {\n this.initFormModel(item[i], frmGroup as FormGroup);\n }\n }\n }\n } else if (typeof model[key] === 'object') {\n const node = this.getFormModel(this._formModel[0], key);\n node.expanded = true;\n if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {\n node.minOccurs = '1';\n }\n const _form = form.get(key) as FormGroup;\n if (_form) {\n if (node.dataType === 'choice') {\n const choiceKey = Object.keys(model[key])[0];\n const choiceEle = node.elements.find(\n (item: SchemaModel) => item.id === choiceKey\n );\n node.choiceKey = choiceKey;\n choiceEle.hidden = false;\n choiceEle.expanded = true;\n const newNode = structuredClone(choiceEle);\n if (newNode.elements.length) {\n const group = this.getFormGroupControls(\n newNode.elements,\n [],\n 0,\n false\n );\n _form.addControl(newNode.id, group);\n } else {\n const control = this.getFormControl('');\n _form.addControl(newNode.id, control);\n }\n }\n this.initFormModel(model[key], _form);\n }\n } else {\n const _form = form.get(key) as FormControl;\n _form.setValue(model[key]);\n }\n }\n } else if (Array.isArray(model)) {\n for (let i = 0; i < model.length; i++) {\n const frmGroup = (form as FormArray).at(i);\n this.initFormModel(model[i], frmGroup as FormGroup);\n }\n }\n }\n\n public getFormGroupControls(\n json: SchemaModel[],\n keys: any,\n index: number = 0,\n choiceEle: boolean = false\n ): FormGroup {\n let control: any = {};\n let controls: any;\n let value = {};\n\n json.forEach((item: SchemaModel) => {\n if (\n (this.excludes.length > 0 && !this.excludes.includes(item.id)) ||\n this.excludes.length == 0\n ) {\n item.hidden = choiceEle;\n value = item.elements;\n const id = item.id;\n const element = { ...item, elements: [], id };\n if (item.elements.length > 0) {\n let choice = item.dataType === 'choice';\n if (choice) {\n element.choiceKey = '';\n }\n if (this.maxOccurs(item.maxOccurs)) {\n element.uniqueId = `${element.id}_${index}`;\n keys.push({\n id: element.id,\n multi: true,\n xpath: element.xpath,\n elements: [element],\n });\n const data = this.getFormGroupControls(\n item.elements,\n element.elements,\n index,\n choice\n );\n controls = this.fb.array([]);\n if (!choice) {\n controls.push(data);\n }\n control[id] = controls;\n } else if (item.multi && !item.isFormControls) {\n keys.push({\n id: element.id,\n multi: true,\n xpath: element.xpath,\n elements: element.elements,\n });\n const data = this.getFormGroupControls(\n item.elements[item.elements.length - 1].elements,\n element.elements,\n index,\n choice\n );\n controls = this.fb.array([]);\n if (!choice) {\n controls.push(data);\n }\n control[id] = controls;\n } else if (item.multi && item.isFormControls) {\n if (item.elements.length > 1) {\n item.elements.splice(1, item.elements.length - 1);\n }\n keys.push(item);\n control[id] = this.fb.array([\n this.getFormControl(item.value || ''),\n ]);\n } else {\n keys.push(element);\n const data = this.getFormGroupControls(\n item.elements,\n element.elements,\n index,\n choice\n );\n if (!choice) {\n control[id] = data;\n } else {\n control[id] = this.fb.group({});\n }\n }\n } else if (this.maxOccurs(item.maxOccurs)) {\n keys.push({\n id: element.id,\n multi: true,\n xpath: element.xpath,\n elements: [element],\n isFormControls: true,\n });\n control[id] = this.fb.array([this.getFormControl(item.value)]);\n } else if (item.isCurrency) {\n const _amountCurrency = this.getAmountCurrency(item);\n keys.push(element);\n const data = this.getFormGroupControls(\n _amountCurrency,\n element.elements,\n 0,\n false\n );\n control[item.id] = data;\n } else {\n keys.push(element);\n control[id] = this.getFormControl(item.value || '');\n }\n }\n });\n return new FormGroup(control);\n }\n\n public getFormControl(values: any): FormControl {\n return new FormControl(values || '', {\n updateOn: 'blur',\n });\n }\n\n public sanitize = (obj: any): any => {\n if (obj === null || obj === '') {\n return null;\n }\n\n if (Array.isArray(obj)) {\n const cleanedObj: any = [];\n for (const index in obj) {\n const cleanedValue = this.sanitize(obj[index]);\n if (\n cleanedValue !== null &&\n cleanedValue !== '' &&\n Object.keys(cleanedValue).length > 0 &&\n (!Array.isArray(cleanedValue) || cleanedValue.length > 0)\n ) {\n cleanedObj.push(cleanedValue);\n }\n }\n return cleanedObj;\n } else if (typeof obj === 'object' && obj instanceof Date) {\n const cleanedObj = this.dateService.format(obj, 'YYYY-MM-DD');\n return cleanedObj;\n } else if (typeof obj === 'object') {\n const cleanedObj: any = {};\n\n for (const key in obj) {\n const cleanedValue = this.sanitize(obj[key]);\n if (\n cleanedValue !== null &&\n cleanedValue !== '' &&\n Object.keys(cleanedValue).length > 0 &&\n (!Array.isArray(cleanedValue) || cleanedValue.length > 0)\n ) {\n cleanedObj[key] = cleanedValue;\n }\n }\n return cleanedObj;\n }\n\n return obj;\n };\n\n private getFormModel = (object: any, key: string): any => {\n if (object) {\n if (object.elements.length) {\n if (object.id === key) {\n return object;\n }\n for (let i = 0; i < object.elements.length; i++) {\n const obj = this.getFormModel(object.elements[i], key);\n if (obj) return obj;\n }\n } else {\n if (object.id === key) {\n return object;\n }\n }\n }\n };\n\n private getAmountCurrency(item: SchemaModel): SchemaModel[] {\n const elements: SchemaModel[] = [];\n const ccy = structuredClone(item);\n const amt = structuredClone(item);\n\n ccy.id = `${ccy.id}_Ccy`;\n ccy.name = 'Ccy';\n ccy.fractionDigits = '';\n ccy.totalDigits = '';\n ccy.maxLength = '3';\n ccy.xpath = `${ccy.xpath}@Ccy`;\n ccy.isCurrency = false;\n elements.push(ccy);\n\n amt.id = `${amt.id}_Amt`;\n amt.xpath = `${amt.xpath}/Amt`;\n amt.isCurrency = false;\n amt.pattern = '';\n elements.push(amt);\n return elements;\n }\n}\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n FormArray,\r\n AbstractControl\r\n} from '@angular/forms';\r\n\r\nimport { SchemaModel } from './Models/Schema';\r\nimport { NgxIsoService } from './ngx-iso-form.service';\r\nimport { IsoForm } from './Models/IsoForm';\r\n\r\n@Component({\r\n selector: 'ngx-iso-form',\r\n templateUrl: './ngx-iso-form.component.html',\r\n styleUrls: ['./ngx-iso-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class NgxIsoFormComponent implements OnChanges {\r\n @Input({ required: true }) form: IsoForm;\r\n @Input({ required: true }) schema: SchemaModel;\r\n @Input() excludes: string[];\r\n protected _form: FormGroup;\r\n private _isFormInitiate: boolean;\r\n private _ngModel: any;\r\n\r\n constructor(private service: NgxIsoService, private changeDetection: ChangeDetectorRef) {\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema'] && changes['schema'].currentValue) {\r\n this.initiateForm();\r\n }\r\n if (changes['form'] && changes['form'].currentValue) {\r\n this.initiateFormModel();\r\n }\r\n if (changes['excludes'] && changes['excludes'].currentValue) {\r\n this.service.excludes = this.excludes; \r\n }\r\n }\r\n\r\n public get model(): any {\r\n if (this._form)\r\n return this.service.sanitize(this._form.value);\r\n }\r\n\r\n protected get getFormModel(): any[] {\r\n return this.service._formModel;\r\n }\r\n\r\n public get invalid(): boolean {\r\n return this._form.invalid;\r\n }\r\n\r\n private initiateForm(): void {\r\n this.service._formModel = [this.structuredClone(this.schema)];\r\n this.service._formModel[0].elements = [];\r\n let group: any = {};\r\n const schemaElements = this.schema.elements.length > 0 ? this.structuredClone(this.schema.elements) : this.schema.elements;\r\n const formElements = this.service._formModel[0].elements.length > 0 ? this.structuredClone(this.service._formModel[0].elements) : this.service._formModel[0].elements;\r\n group[this.schema.id] = this.service.getFormGroupControls(schemaElements, formElements);\r\n this._form = new FormGroup(group);\r\n if (!this._isFormInitiate) {\r\n this.initiateFormModel();\r\n }\r\n }\r\n\r\n private structuredClone(data: any): any {\r\n let cloneData;\r\n try {\r\n cloneData = structuredClone(data);\r\n } catch(e) {\r\n cloneData = JSON.parse(JSON.stringify(data));\r\n }\r\n return cloneData;\r\n }\r\n\r\n private initiateFormModel(): void {\r\n if (this._form) {\r\n this._ngModel = this.form.isoFormModel; \r\n this.form.getFormModel = () => {\r\n return this.model;\r\n };\r\n\r\n \r\n this._isFormInitiate = true;\r\n this.service.initFormModel(this._ngModel, this._form);\r\n }\r\n }\r\n\r\n protected onChoiceSelectionChange(id: string, formElement: any, node: SchemaModel): void {\r\n node.elements.forEach((element: SchemaModel) => {\r\n element.hidden = true;\r\n formElement.removeControl(element.id);\r\n if (element.id === id) {\r\n node.choiceKey = id;\r\n element.hidden = false;\r\n if (element.elements.length) {\r\n // element.elements[0].hidden = false;\r\n const group = this.service.getFormGroupControls(element.elements, [], 0, false);\r\n formElement.addControl(element.id, group);\r\n } else {\r\n const control = this.service.getFormControl('');\r\n formElement.addControl(element.id, control);\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n protected maxOccurs(maxOccurs: string): boolean {\r\n return maxOccurs !== null && maxOccurs !== undefined && this.service.maxOccurs(maxOccurs);\r\n }\r\n\r\n protected expand(minOccurs: string): boolean {\r\n return minOccurs !== null && minOccurs !== undefined && parseInt(minOccurs, 10) > 0;\r\n }\r\n\r\n protected addSection($event: Event, node: SchemaModel, parentNode: SchemaModel, parentFormEle: FormGroup): void {\r\n $event.stopPropagation();\r\n const control: FormArray = parentFormEle.get(node.id) as FormArray;\r\n if (node.maxOccurs && parseInt(node.maxOccurs, 10) <= parentNode.elements.length) {\r\n return;\r\n }\r\n const newEle = this.structuredClone(parentNode.elements[0]);\r\n const newKeys: any = [];\r\n const groupControls = this.service.getFormGroupControls(newEle.elements, newKeys, parentNode.elements.length - 1);\r\n parentNode.elements.push(newEle);\r\n control.push(groupControls);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected removeSection($event: Event, parentNode: SchemaModel, parentFormEle: FormGroup, index: number): void {\r\n $event.stopPropagation();\r\n const control: FormArray = parentFormEle.get(parentNode.id) as FormArray;\r\n parentNode.elements.splice(index, 1);\r\n control.removeAt(index);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected addNewControl($event: Event, node: SchemaModel, parentNode: SchemaModel, parentFormEle: FormGroup): void {\r\n $event.stopPropagation();\r\n if (node.maxOccurs && parseInt(node.maxOccurs, 10) <= parentNode.elements.length) {\r\n return;\r\n }\r\n const control: FormArray = parentFormEle.get(node.id) as FormArray;\r\n const newControl = this.service.getFormControl('');\r\n const newEle = this.structuredClone(parentNode.elements[parentNode.elements.length - 1]);\r\n control.push(newControl);\r\n parentNode.elements.push(newEle);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected removeNewControl($event: Event, parentNode: SchemaModel, parentFormEle: FormGroup, index: number): void {\r\n $event.stopPropagation();\r\n const control: FormArray = parentFormEle.get(parentNode.id) as FormArray;\r\n parentNode.elements.splice(index, 1);\r\n control.removeAt(index);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected isArray(myKey: Object | Array<any>): boolean {\r\n if (myKey instanceof Array) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected isEmpty(formElement: FormGroup): boolean {\r\n return formElement.controls && Object.keys(formElement.controls).length === 0;\r\n }\r\n\r\n protected getElement(formElement: FormGroup, element: any): AbstractControl<any, any> | undefined {\r\n if (element.hidden) {\r\n return;\r\n }\r\n let _element;\r\n if (element.multi) {\r\n _element = element.elements[element.elements.length - 1];\r\n } else {\r\n _element = element;\r\n }\r\n\r\n let formControl = formElement.controls[_element.id];\r\n if (!formControl) {\r\n formControl = (formElement as any)[_element.id];\r\n if (!formControl)\r\n throw `FormControl not found ${_element.id}`;\r\n }\r\n if (formControl instanceof FormArray) {\r\n const formGroup = formControl.controls.find((item: any) => {\r\n if (item instanceof FormControl)\r\n return true;\r\n return Object.keys(item.controls).find((ctrl) => {\r\n return ctrl.indexOf(element.id) > -1;\r\n })\r\n });\r\n if (formGroup)\r\n return formControl.at(formControl.length - 1);\r\n }\r\n return formControl;\r\n }\r\n\r\n protected getFormControl(node: SchemaModel): FormControl {\r\n return this.service.getFormControl('');\r\n }\r\n\r\n protected getChoiceFormControl(choiceKey:string){\r\n const formControl = this.service.getFormControl('');\r\n formControl.setValue(choiceKey);\r\n return formControl;\r\n }\r\n}\r\n","<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs) || node.expanded\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(formElement,model),\r\n parentFormElement: formElement\r\n }\">\r\n </ng-template>\r\n </ng-container>\r\n <div *ngIf=\"node.elements.length === 0\">\r\n <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </div>\r\n <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n </ng-container>\r\n <ng-template #formArray>\r\n <ng-template *ngFor=\"let key of model;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: key,\r\n formElement: getElement(_form,key),\r\n parentFormElement: _form,\r\n index:i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #formObject>\r\n <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(_form,model),\r\n parentFormElement: _form,\r\n index: i,\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</form>","import { NgModule } from '@angular/core';\r\n\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\"\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MatNativeDateModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport {\r\n NgxIsoControlComponent,\r\n IsoBaseControlComponent,\r\n IsoMatInput,\r\n IsoMatDate,\r\n IsoMatTextarea,\r\n IsoMatSelect,\r\n IsoMatCheckbox,\r\n IsoMatDateTime,\r\n IsoMatCurrency,\r\n} from './components';\r\n\r\nimport { NgxIsoFormComponent } from './ngx-iso-form.component';\r\n\r\nimport { ComponentDirective } from './shared/directives/component-content.directive';\r\nimport { NgxDynamicComponent } from './shared/components/dynamic/ngx-dynamic.component';\r\nimport { IsoTranslatePipe } from './shared/pipe/translate.pipe';\r\nimport { IsoErrorPipe } from './shared/pipe/error.pipe';\r\nimport { IsoGeneralPipe } from './shared/pipe/general.pipe';\r\nimport { CUSTOM_DATE_FORMATS, CustomDateAdapter } from './shared/services/custom-date-adapter';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxIsoFormComponent,\r\n NgxIsoControlComponent,\r\n NgxDynamicComponent,\r\n IsoBaseControlComponent,\r\n IsoMatInput,\r\n IsoMatTextarea,\r\n IsoMatDate,\r\n IsoMatDateTime,\r\n IsoMatSelect,\r\n IsoMatCheckbox,\r\n IsoMatCurrency,\r\n ComponentDirective,\r\n IsoTranslatePipe,\r\n IsoErrorPipe,\r\n IsoGeneralPipe\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n TranslateModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatButtonModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n ],\r\n providers: [\r\n { provide: DateAdapter, useClass: CustomDateAdapter },\r\n { provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }\r\n ],\r\n exports: [\r\n NgxIsoFormComponent\r\n ]\r\n})\r\nexport class NgxIsoFormModule { }\r\n","import { ComponentRef, Injectable, ViewContainerRef } from \"@angular/core\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class ComponentService{\r\n public getComponent<T>(viewContainerRef: ViewContainerRef,dynamicModel: ComponentModel): ComponentRef<T> {\r\n const componentRef = viewContainerRef.createComponent<T>(dynamicModel.component);\r\n if(dynamicModel.prop){\r\n (componentRef.instance as any).prop = dynamicModel.prop;\r\n }\r\n return componentRef;\r\n }\r\n}\r\n\r\n","import { SchemaElement } from './Schema';\r\n\r\nexport class IsoForm {\r\n private _model: any;\r\n constructor(model: any) {\r\n this._model = model;\r\n }\r\n public get isoFormModel(): any{\r\n return this._model;\r\n }\r\n\r\n /**\r\n * @deprecated This method is deprecated use `#isoForm.getFormModel` instead\r\n */\r\n public getFormModel = (): any => {};\r\n}\r\n","/*\r\n * Public API Surface of ngx-iso-form\r\n */\r\n\r\nexport * from './lib/ngx-iso-form.module';\r\nexport * from './lib/ngx-iso-form.component';\r\nexport * from './lib/shared/services';\r\n\r\nexport { SchemaElement } from './lib/Models/Schema'\r\nexport * from './lib/Models/Control'\r\nexport * from './lib/Models/IsoForm'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i6.IsoTranslatePipe","i7.IsoErrorPipe","i5.IsoTranslatePipe","i6.IsoErrorPipe","i7.IsoGeneralPipe","i4.IsoTranslatePipe","i5.IsoErrorPipe","i4","i5","i1.ComponentDirective","i1.ControlService","i2","i3.NgxDynamicComponent","i2.CustomDateAdapter","i1.NgxIsoService","i3","i7","i8","i10.NgxIsoControlComponent","i11.IsoTranslatePipe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAUa,uBAAuB,CAAA;AAKhC,IAAA,OAAO,CAAC,MAAW,EAAA;QAEf,IAAG,MAAM,EACT;AACI,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;AAE9B,QAAA,OAAO,EAAE;;8GAXJ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,iIAJtB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIH,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAGY,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;;;MCLQ,gBAAgB,CAAA;AAEzB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAIpC,IAAA,SAAS,CAAC,KAAa,EAAE,EAAU,EAAE,YAAoB,EAAA;AACrD,QAAA,IAAI,GAAG,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE;QACxB,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7C,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,GAAG,GAAG,CAAA,IAAA,EAAO,EAAE,CAAA,CAAE;YACjB,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,OAAO,YAAY;;;AAG3B,QAAA,IAAG,IAAI,CAAC,KAAK,EACb;YACI,OAAO,IAAI,CAAC,KAAK;;AAErB,QAAA,OAAO,YAAY;;8GApBd,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,YAAY,CAAA;AAErB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAIpC,IAAA,SAAS,CAAC,KAAa,EAAE,EAAU,EAAC,QAAe,EAAE,YAAoB,EAAA;AACrE,QAAA,IAAI,GAAG,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE;QACxB,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7C,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,GAAG,GAAG,CAAA,IAAA,EAAO,EAAE,CAAA,CAAE;YACjB,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,OAAO,YAAY;;;QAG3B,IAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EACrC;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAE/B,QAAA,OAAO,YAAY;;8GApBd,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACIK,MAAO,UAAW,SAAQ,uBAAuB,CAAA;8GAA1C,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,gGCXvB,ipBAUiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDCJ,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAEZ,KAAK,EAAA,QAAA,EAAA,ipBAAA,EAAA;;;MEAR,cAAc,CAAA;AAEvB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAIpC,IAAA,SAAS,CAAC,KAAa,EAAE,EAAU,EAAC,UAAiB,EAAE,YAAoB,EAAA;AACvE,QAAA,IAAI,GAAG,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE;QACxB,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7C,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,GAAG,GAAG,CAAO,IAAA,EAAA,EAAE,CAAC,iBAAiB,EAAE,EAAE;YACrC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,OAAO,YAAY;;;QAG3B,IAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3C;AACI,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;;AAEnC,QAAA,OAAO,YAAY;;8GApBd,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACCK,MAAO,cAAe,SAAQ,uBAAuB,CAAA;8GAA9C,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,oGCR3B,0vBAUiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDFJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,KAAK,EAAA,QAAA,EAAA,0vBAAA,EAAA;;;AEEf,MAAO,WAAY,SAAQ,uBAAuB,CAAA;8GAA3C,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,iGCRxB,8oBAQiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAJ,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAEb,KAAK,EAAA,QAAA,EAAA,8oBAAA,EAAA;;;AEEf,MAAO,cAAe,SAAQ,uBAAuB,CAAA;8GAA9C,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,oGCR3B,+dAOiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDCJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,KAAK,EAAA,QAAA,EAAA,+dAAA,EAAA;;;AEIf,MAAO,cAAe,SAAQ,uBAAuB,CAAA;8GAA9C,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,oGCV3B,2jBAQiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDEJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,KAAK,EAAA,QAAA,EAAA,2jBAAA,EAAA;;;AEGf,MAAO,YAAa,SAAQ,uBAAuB,CAAA;8GAA5C,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,kGCVzB,4oBAYmB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDFN,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAEd,KAAK,EAAA,QAAA,EAAA,4oBAAA,EAAA;;;AECf,MAAO,cAAe,SAAQ,uBAAuB,CAAA;8GAA9C,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,oGCR3B,0jBAQiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,KAAK,EAAA,QAAA,EAAA,0jBAAA,EAAA;;;MEJR,cAAc,CAAA;IACvB,WAAmB,CAAA,SAAoB,EAAS,IAAS,EAAA;QAAtC,IAAS,CAAA,SAAA,GAAT,SAAS;QAAoB,IAAI,CAAA,IAAA,GAAJ,IAAI;;AACvD;;MCKY,cAAc,CAAA;IAEhB,kBAAkB,CAAC,YAA2B,EAAE,WAAwB,EAAA;AAC3E,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,IAAI,CAAC;AACvD,YAAA,MAAM,kCAAkC;;AAE5C,QAAA,QAAQ,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AAC7C,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,SAAS;AACV,gBAAA,IAAG,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAC5D;AACI,oBAAA,OAAO,IAAI,cAAc,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;;gBAEtG,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;AACjC,oBAAA,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;;AAEpG,gBAAA,IAAI,YAAY,CAAC,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;AACrE,oBAAA,OAAO,IAAI,cAAc,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;;AAEtG,gBAAA,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACnG,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAClG,YAAA,KAAK,UAAU;AACX,gBAAA,OAAO,IAAI,cAAc,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACtG,YAAA,KAAK,SAAS;gBACV,YAAY,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AACvC,gBAAA,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACpG,YAAA,KAAK,KAAK;AACN,gBAAA,OAAO,IAAI,cAAc,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACtG,YAAA;AACI,gBAAA,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;;;8GA/BlG,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAET,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCFU,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAmB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;8GADxB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCIY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,GAAA;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;;IAGtB,aAAa,GAAA;AACX,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;QAC/D,gBAAgB,CAAC,KAAK,EAAE;AACxB,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AACzF,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC5B,YAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;;;8GAfvD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGnB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANjB,CAAyD,uDAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,kBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG1D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAAyD,uDAAA,CAAA;AACnE,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAGU,cAAc,EAAA,CAAA;sBAAtB;gBACgD,gBAAgB,EAAA,CAAA;sBAAhE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCOpC,sBAAsB,CAAA;AAIjC,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc;QAiB1B,IAAY,CAAA,YAAA,GAAG,MAAW;AAChC,YAAA,IAAI;AACF,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACtD,gBAAA,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACpD,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gBACtD,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;;gBAErD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;gBAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;AAEjE,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACxB,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;AAE1E,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC/B,oBAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS;AACnD,oBAAA,MAAM,OAAO,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAM,GAAA,EAAA,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI;;;YAG/G,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;AAEpB,SAAC;;IAvCD,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;;AAGzF,IAAA,UAAU,CAAC,GAAQ,EAAA;;AAEnB,IAAA,gBAAgB,CAAC,EAAO,EAAA;;AAExB,IAAA,iBAAiB,CAAC,EAAO,EAAA;;AAEzB,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;8GAlB1B,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAVpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACd;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfL,gFAA0E,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDmB7D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEhB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACd;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,gFAAA,EAAA;gFAIV,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;AEfG,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;IACtC,MAAM,CAAC,IAAU,EAAE,aAAqB,EAAA;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,GAAG,EAAE;;AAG1B,IAAA,SAAS,CAAC,CAAS,EAAA;QACzB,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;;8GATlB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACb,iBAAA;;AAcI,MAAM,mBAAmB,GAAmB;AACjD,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,YAAY;AACxB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;CACF;;MCrBY,aAAa,CAAA;IAGxB,WACU,CAAA,EAAe,EACf,WAA8B,EAAA;QAD9B,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAW,CAAA,WAAA,GAAX,WAAW;QAJd,IAAU,CAAA,UAAA,GAAU,EAAE;QACtB,IAAQ,CAAA,QAAA,GAAa,EAAE;AA0NvB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,GAAQ,KAAS;YAClC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;AAC9B,gBAAA,OAAO,IAAI;;AAGb,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,MAAM,UAAU,GAAQ,EAAE;AAC1B,gBAAA,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;oBACvB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC9C,IACE,YAAY,KAAK,IAAI;AACrB,wBAAA,YAAY,KAAK,EAAE;wBACnB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC;AACpC,yBAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EACzD;AACA,wBAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;;;AAGjC,gBAAA,OAAO,UAAU;;iBACZ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,IAAI,EAAE;AACzD,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC;AAC7D,gBAAA,OAAO,UAAU;;AACZ,iBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAClC,MAAM,UAAU,GAAQ,EAAE;AAE1B,gBAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;oBACrB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC5C,IACE,YAAY,KAAK,IAAI;AACrB,wBAAA,YAAY,KAAK,EAAE;wBACnB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC;AACpC,yBAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EACzD;AACA,wBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY;;;AAGlC,gBAAA,OAAO,UAAU;;AAGnB,YAAA,OAAO,GAAG;AACZ,SAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,MAAW,EAAE,GAAW,KAAS;YACvD,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1B,oBAAA,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE;AACrB,wBAAA,OAAO,MAAM;;AAEf,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,wBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACtD,wBAAA,IAAI,GAAG;AAAE,4BAAA,OAAO,GAAG;;;qBAEhB;AACL,oBAAA,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE;AACrB,wBAAA,OAAO,MAAM;;;;AAIrB,SAAC;;AA9QM,IAAA,SAAS,CAAC,SAAiB,EAAA;AAChC,QAAA,OAAO,SAAS,KAAK,WAAW,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC;;IAG1D,aAAa,CAAC,KAAU,EAAE,IAA2B,EAAA;AAC1D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;gBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7B,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7D,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;oBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc;oBAC5C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACjD,wBAAA,MAAM,MAAM,GAAG,eAAe,CAC5B,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACpD;AACD,wBAAA,IACE,EACE,MAAM,CAAC,SAAS;AAChB,4BAAA,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAC7D,EACD;4BACA,MAAM,OAAO,GAAQ,EAAE;4BACvB,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAC7C,MAAM,CAAC,QAAQ,EACf,OAAO,EACP,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAC/B;AACD,4BAAA,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,4BAAA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;4BAC7B,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAoB,KAAI;gCACnD,IACE,CAAC,OAAO,CAAC,SAAS;oCAClB,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EACrC;AACA,oCAAA,OAAO,CAAC,SAAS,GAAG,GAAG;;AAE3B,6BAAC,CAAC;;;AAIN,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACpC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI;wBACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAC/B,IAAI,SAAS,EAAE;4BACb,MAAM,QAAQ,GAAI,SAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC/C,IAAI,QAAQ,EAAE;gCACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAqB,CAAC;;;;;qBAInD,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AACzC,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACvD,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;oBACpB,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;AACnE,wBAAA,IAAI,CAAC,SAAS,GAAG,GAAG;;oBAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc;oBACxC,IAAI,KAAK,EAAE;AACT,wBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,4BAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,4BAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,IAAiB,KAAK,IAAI,CAAC,EAAE,KAAK,SAAS,CAC7C;AACD,4BAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,4BAAA,SAAS,CAAC,MAAM,GAAG,KAAK;AACxB,4BAAA,SAAS,CAAC,QAAQ,GAAG,IAAI;AACzB,4BAAA,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC;AAC1C,4BAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC3B,gCAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CACrC,OAAO,CAAC,QAAQ,EAChB,EAAE,EACF,CAAC,EACD,KAAK,CACN;gCACD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;;iCAC9B;gCACL,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gCACvC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;;;wBAGzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;;;qBAElC;oBACL,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB;oBAC1C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;;AAGzB,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,QAAQ,GAAI,IAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAqB,CAAC;;;;IAKlD,oBAAoB,CACzB,IAAmB,EACnB,IAAS,EACT,KAAgB,GAAA,CAAC,EACjB,SAAA,GAAqB,KAAK,EAAA;QAE1B,IAAI,OAAO,GAAQ,EAAE;AACrB,QAAA,IAAI,QAAa;QACjB,IAAI,KAAK,GAAG,EAAE;AAEd,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAiB,KAAI;YACjC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EACzB;AACA,gBAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,gBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ;AACrB,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,gBAAA,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,oBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ;oBACvC,IAAI,MAAM,EAAE;AACV,wBAAA,OAAO,CAAC,SAAS,GAAG,EAAE;;oBAExB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBAClC,OAAO,CAAC,QAAQ,GAAG,CAAG,EAAA,OAAO,CAAC,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;wBAC3C,IAAI,CAAC,IAAI,CAAC;4BACR,EAAE,EAAE,OAAO,CAAC,EAAE;AACd,4BAAA,KAAK,EAAE,IAAI;4BACX,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,QAAQ,EAAE,CAAC,OAAO,CAAC;AACpB,yBAAA,CAAC;AACF,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CACpC,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,QAAQ,EAChB,KAAK,EACL,MAAM,CACP;wBACD,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5B,IAAI,CAAC,MAAM,EAAE;AACX,4BAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAErB,wBAAA,OAAO,CAAC,EAAE,CAAC,GAAG,QAAQ;;yBACjB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;wBAC7C,IAAI,CAAC,IAAI,CAAC;4BACR,EAAE,EAAE,OAAO,CAAC,EAAE;AACd,4BAAA,KAAK,EAAE,IAAI;4BACX,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC3B,yBAAA,CAAC;AACF,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAChD,OAAO,CAAC,QAAQ,EAChB,KAAK,EACL,MAAM,CACP;wBACD,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5B,IAAI,CAAC,MAAM,EAAE;AACX,4BAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAErB,wBAAA,OAAO,CAAC,EAAE,CAAC,GAAG,QAAQ;;yBACjB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;wBAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,4BAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;;AAEnD,wBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;wBACf,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;4BAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AACtC,yBAAA,CAAC;;yBACG;AACL,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClB,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CACpC,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,QAAQ,EAChB,KAAK,EACL,MAAM,CACP;wBACD,IAAI,CAAC,MAAM,EAAE;AACX,4BAAA,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI;;6BACb;AACL,4BAAA,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;;;;qBAG9B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACzC,IAAI,CAAC,IAAI,CAAC;wBACR,EAAE,EAAE,OAAO,CAAC,EAAE;AACd,wBAAA,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,QAAQ,EAAE,CAAC,OAAO,CAAC;AACnB,wBAAA,cAAc,EAAE,IAAI;AACrB,qBAAA,CAAC;oBACF,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;AACzD,qBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpD,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClB,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CACpC,eAAe,EACf,OAAO,CAAC,QAAQ,EAChB,CAAC,EACD,KAAK,CACN;AACD,oBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;;qBAClB;AACL,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClB,oBAAA,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;;;AAGzD,SAAC,CAAC;AACF,QAAA,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC;;AAGxB,IAAA,cAAc,CAAC,MAAW,EAAA;AAC/B,QAAA,OAAO,IAAI,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AACnC,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA,CAAC;;AA+DI,IAAA,iBAAiB,CAAC,IAAiB,EAAA;QACzC,MAAM,QAAQ,GAAkB,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC;QAEjC,GAAG,CAAC,EAAE,GAAG,CAAA,EAAG,GAAG,CAAC,EAAE,MAAM;AACxB,QAAA,GAAG,CAAC,IAAI,GAAG,KAAK;AAChB,QAAA,GAAG,CAAC,cAAc,GAAG,EAAE;AACvB,QAAA,GAAG,CAAC,WAAW,GAAG,EAAE;AACpB,QAAA,GAAG,CAAC,SAAS,GAAG,GAAG;QACnB,GAAG,CAAC,KAAK,GAAG,CAAA,EAAG,GAAG,CAAC,KAAK,MAAM;AAC9B,QAAA,GAAG,CAAC,UAAU,GAAG,KAAK;AACtB,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAElB,GAAG,CAAC,EAAE,GAAG,CAAA,EAAG,GAAG,CAAC,EAAE,MAAM;QACxB,GAAG,CAAC,KAAK,GAAG,CAAA,EAAG,GAAG,CAAC,KAAK,MAAM;AAC9B,QAAA,GAAG,CAAC,UAAU,GAAG,KAAK;AACtB,QAAA,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAClB,QAAA,OAAO,QAAQ;;8GA3SN,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCmBY,mBAAmB,CAAA;IAQ9B,WAAoB,CAAA,OAAsB,EAAU,eAAkC,EAAA;QAAlE,IAAO,CAAA,OAAA,GAAP,OAAO;QAAyB,IAAe,CAAA,eAAA,GAAf,eAAe;;AAG5D,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE;YACvD,IAAI,CAAC,YAAY,EAAE;;AAErB,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,iBAAiB,EAAE;;AAE1B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;;;AAIzC,IAAA,IAAW,KAAK,GAAA;QACd,IAAI,IAAI,CAAC,KAAK;AACZ,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AAGlD,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;;AAGhC,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;;IAGnB,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE;QACxC,IAAI,KAAK,GAAQ,EAAE;AACnB,QAAA,MAAM,cAAc,GAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;QAC3H,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ;AACrK,QAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,EAAE,YAAY,CAAC;QACvF,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,iBAAiB,EAAE;;;AAIpB,IAAA,eAAe,CAAC,IAAS,EAAA;AAC/B,QAAA,IAAI,SAAS;AACb,QAAA,IAAI;AACF,YAAA,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC;;QACjC,OAAM,CAAC,EAAE;AACT,YAAA,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;AAE9C,QAAA,OAAO,SAAS;;IAGV,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,MAAK;gBAC5B,OAAO,IAAI,CAAC,KAAK;AACnB,aAAC;AAGD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;;;AAI/C,IAAA,uBAAuB,CAAC,EAAU,EAAE,WAAgB,EAAE,IAAiB,EAAA;QAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAoB,KAAI;AAC7C,YAAA,OAAO,CAAC,MAAM,GAAG,IAAI;AACrB,YAAA,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAA,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;AACrB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,gBAAA,OAAO,CAAC,MAAM,GAAG,KAAK;AACtB,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAE3B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;oBAC/E,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;;qBACpC;oBACL,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC/C,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;;;AAIjD,SAAC,CAAC;;AAGM,IAAA,SAAS,CAAC,SAAiB,EAAA;AACnC,QAAA,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;;AAGjF,IAAA,MAAM,CAAC,SAAiB,EAAA;AAChC,QAAA,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC;;AAG3E,IAAA,UAAU,CAAC,MAAa,EAAE,IAAiB,EAAE,UAAuB,EAAE,aAAwB,EAAA;QACtG,MAAM,CAAC,eAAe,EAAE;QACxB,MAAM,OAAO,GAAc,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAc;AAClE,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;YAChF;;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAQ,EAAE;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACjH,QAAA,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAG5B,IAAA,aAAa,CAAC,MAAa,EAAE,UAAuB,EAAE,aAAwB,EAAE,KAAa,EAAA;QACrG,MAAM,CAAC,eAAe,EAAE;QACxB,MAAM,OAAO,GAAc,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAc;QACxE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAG5B,IAAA,aAAa,CAAC,MAAa,EAAE,IAAiB,EAAE,UAAuB,EAAE,aAAwB,EAAA;QACzG,MAAM,CAAC,eAAe,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;YAChF;;QAEF,MAAM,OAAO,GAAc,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAc;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AAClD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxF,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AACxB,QAAA,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAG5B,IAAA,gBAAgB,CAAC,MAAa,EAAE,UAAuB,EAAE,aAAwB,EAAE,KAAa,EAAA;QACxG,MAAM,CAAC,eAAe,EAAE;QACxB,MAAM,OAAO,GAAc,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAc;QACxE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAG5B,IAAA,OAAO,CAAC,KAA0B,EAAA;AAC1C,QAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AAC1B,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;AAGJ,IAAA,OAAO,CAAC,WAAsB,EAAA;AACtC,QAAA,OAAO,WAAW,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;;IAGrE,UAAU,CAAC,WAAsB,EAAE,OAAY,EAAA;AACvD,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB;;AAEF,QAAA,IAAI,QAAQ;AACZ,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;;aACnD;YACL,QAAQ,GAAG,OAAO;;QAGpB,IAAI,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,WAAW,GAAI,WAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,WAAW;AACd,gBAAA,MAAM,CAAyB,sBAAA,EAAA,QAAQ,CAAC,EAAE,EAAE;;AAEhD,QAAA,IAAI,WAAW,YAAY,SAAS,EAAE;YACpC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;gBACxD,IAAI,IAAI,YAAY,WAAW;AAC7B,oBAAA,OAAO,IAAI;AACb,gBAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;oBAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACtC,iBAAC,CAAC;AACJ,aAAC,CAAC;AACF,YAAA,IAAI,SAAS;gBACX,OAAO,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;;AAEjD,QAAA,OAAO,WAAW;;AAGV,IAAA,cAAc,CAAC,IAAiB,EAAA;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;;AAG9B,IAAA,oBAAoB,CAAC,SAAgB,EAAA;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AACnD,QAAA,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/B,QAAA,OAAO,WAAW;;8GAhMT,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,gKC1BhC,+4JAiGO,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDvEM,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGP,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,+4JAAA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA;+GAGQ,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,MAAM,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,QAAQ,EAAA,CAAA;sBAAhB;;;MEmDU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAvCzB,mBAAmB;YACnB,sBAAsB;YACtB,mBAAmB;YACnB,uBAAuB;YACvB,WAAW;YACX,cAAc;YACd,UAAU;YACV,cAAc;YACd,YAAY;YACZ,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,YAAY;AACZ,YAAA,cAAc,aAGd,aAAa;YACb,uBAAuB;YACvB,eAAe;YACf,WAAW;YACX,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnB,eAAe;YACf,eAAe;AACf,YAAA,aAAa,aAOb,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EARhB,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACrD,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB;AAC3D,SAAA,EAAA,OAAA,EAAA,CAjBC,aAAa;YACb,uBAAuB;YACvB,eAAe;YACf,WAAW;YACX,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnB,eAAe;YACf,eAAe;YACf,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAUJ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,sBAAsB;wBACtB,mBAAmB;wBACnB,uBAAuB;wBACvB,WAAW;wBACX,cAAc;wBACd,UAAU;wBACV,cAAc;wBACd,YAAY;wBACZ,cAAc;wBACd,cAAc;wBACd,kBAAkB;wBAClB,gBAAgB;wBAChB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,uBAAuB;wBACvB,eAAe;wBACf,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,aAAa;AACd,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACrD,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB;AAC3D,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;MCzEY,gBAAgB,CAAA;IAClB,YAAY,CAAI,gBAAkC,EAAC,YAA4B,EAAA;QAClF,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAI,YAAY,CAAC,SAAS,CAAC;AAChF,QAAA,IAAG,YAAY,CAAC,IAAI,EAAC;YAChB,YAAY,CAAC,QAAgB,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI;;AAE3D,QAAA,OAAO,YAAY;;8GANd,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCHU,OAAO,CAAA;AAElB,IAAA,WAAA,CAAY,KAAU,EAAA;AAOtB;;AAEG;AACI,QAAA,IAAA,CAAA,YAAY,GAAG,MAAU,GAAG;AATjC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAErB,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM;;AAOrB;;ACfD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-iso-form.mjs","sources":["../../../projects/ngx-iso-form/src/lib/components/controls/iso-base-control.component.ts","../../../projects/ngx-iso-form/src/lib/shared/pipe/translate.pipe.ts","../../../projects/ngx-iso-form/src/lib/shared/pipe/error.pipe.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-date.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-date.component.html","../../../projects/ngx-iso-form/src/lib/shared/pipe/general.pipe.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-datetime.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-datetime.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-input.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-input.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-checkbox.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-checkbox.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-textarea.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-textarea.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-select.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-select.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-currency.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-currency.component.html","../../../projects/ngx-iso-form/src/lib/shared/models/component.model.ts","../../../projects/ngx-iso-form/src/lib/shared/services/control.service.ts","../../../projects/ngx-iso-form/src/lib/shared/directives/component-content.directive.ts","../../../projects/ngx-iso-form/src/lib/shared/components/dynamic/ngx-dynamic.component.ts","../../../projects/ngx-iso-form/src/lib/components/iso-control/iso-control.component.ts","../../../projects/ngx-iso-form/src/lib/components/iso-control/iso-control.component.html","../../../projects/ngx-iso-form/src/lib/shared/services/custom-date-adapter.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.service.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.component.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.component.html","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.module.ts","../../../projects/ngx-iso-form/src/lib/shared/services/component.service.ts","../../../projects/ngx-iso-form/src/lib/Models/IsoForm.ts","../../../projects/ngx-iso-form/src/public-api.ts","../../../projects/ngx-iso-form/src/ngx-iso-form.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { IControlModel } from '../../Models/Control';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'iso-base',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class IsoBaseControlComponent {\r\n\r\n @Input() control: IControlModel;\r\n @Input() formControl: FormControl;\r\n\r\n getKeys(errors: any)\r\n {\r\n if(errors)\r\n {\r\n return Object.keys(errors);\r\n }\r\n return [];\r\n }\r\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'trans',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class IsoTranslatePipe implements PipeTransform {\r\n\r\n constructor(private translateService: TranslateService) {\r\n\r\n }\r\n\r\n transform(value: string, id: string, defaultValue: string): string {\r\n let key = `iso.${value}`;\r\n let tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n key = `iso.${id}`;\r\n tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n return defaultValue;\r\n }\r\n }\r\n if(tran.label)\r\n {\r\n return tran.label;\r\n }\r\n return defaultValue;\r\n }\r\n\r\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'error',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class IsoErrorPipe implements PipeTransform {\r\n\r\n constructor(private translateService: TranslateService) {\r\n\r\n }\r\n\r\n transform(value: string, id: string,errorKey:string, defaultValue: string): string {\r\n let key = `iso.${value}`;\r\n let tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n key = `iso.${id}`;\r\n tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n return defaultValue;\r\n }\r\n }\r\n if(tran.error && tran.error[errorKey])\r\n {\r\n return tran.error[errorKey];\r\n }\r\n return defaultValue;\r\n }\r\n\r\n}","import { Component, Input } from '@angular/core';\r\nimport { IControlModel } from '../../Models/Control';\r\nimport { FormControl } from '@angular/forms';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-date',\r\n templateUrl: './iso-mat-date.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class IsoMatDate extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput [matDatepicker]=\"picker\" [formControl]=\"formControl\">\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'general',\r\n pure: false,\r\n standalone: false\r\n})\r\nexport class IsoGeneralPipe implements PipeTransform {\r\n\r\n constructor(private translateService: TranslateService) {\r\n\r\n }\r\n\r\n transform(value: string, id: string,generalKey:string, defaultValue: string): string {\r\n let key = `iso.${value}`;\r\n let tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n key = `iso.${id.toLocaleLowerCase()}`;\r\n tran = this.translateService.instant(key);\r\n if (tran === key) {\r\n return defaultValue;\r\n }\r\n }\r\n if(tran.general && tran.general[generalKey])\r\n {\r\n return tran.general[generalKey];\r\n }\r\n return defaultValue;\r\n }\r\n\r\n}","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-datetime',\r\n templateUrl: './iso-mat-datetime.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatDateTime extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.minlength]=\"control.minLength\" [attr.maxlength]=\"control.maxLength\">\r\n <mat-hint>{{ control.id | general: control.id : \"format\" : \"YYYY-MM-DDThh:mm:ss.sss+/-hh:mm\" }}</mat-hint>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n \r\n</mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-input',\r\n templateUrl: './iso-mat-input.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatInput extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\" appearance=\"fill\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.minlength]=\"control.minLength\" [attr.maxlength]=\"control.maxLength\">\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-checkbox',\r\n templateUrl: './iso-mat-checkbox.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatCheckbox extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-checkbox [formControl]=\"formControl\">{{ control.name | trans: control.id : control.name }}</mat-checkbox>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","\r\nimport { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-textarea',\r\n templateUrl: './iso-mat-textarea.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class IsoMatTextarea extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-full\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <textarea matInput placeholder=\"{{control.name}}\" [formControl]=\"formControl\"></textarea>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","\r\nimport { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-select',\r\n templateUrl: './iso-mat-select.component.html',\r\n standalone: false\r\n})\r\n\r\nexport class IsoMatSelect extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <mat-select [formControl]=\"formControl\">\r\n <mat-option *ngFor=\"let item of control.values\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-select>\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n </div>\r\n </ng-container>\r\n </mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n selector: 'iso-mat-currency',\r\n templateUrl: './iso-mat-currency.component.html',\r\n standalone: false\r\n})\r\nexport class IsoMatCurrency extends IsoBaseControlComponent {\r\n \r\n}","<mat-form-field class=\"form-control form-control-s\">\r\n <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.maxlength]=\"control.maxLength\">\r\n <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n {{ control.name | error: control.id : item : item }}\r\n </div>\r\n </ng-container>\r\n</mat-form-field>","import { Type } from \"@angular/core\";\r\n\r\nexport class ComponentModel {\r\n constructor(public component: Type<any>, public prop: any) { }\r\n}","import { FormControl } from \"@angular/forms\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\nimport { SchemaElement } from \"../../Models/Schema\";\r\nimport { IsoMatCurrency, IsoMatDate, IsoMatDateTime, IsoMatInput, IsoMatSelect, IsoMatTextarea } from \"../../components\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class ControlService {\r\n\r\n public getComponentByType(controlModel: SchemaElement, formControl: FormControl): ComponentModel {\r\n if (!controlModel.dataType) {\r\n console.log(\"controlModel name {0}\", controlModel.name);\r\n throw `Argument null exception dataType`;\r\n }\r\n switch (controlModel.dataType.toLocaleLowerCase()) {\r\n case \"string\":\r\n case \"decimal\":\r\n if(controlModel.name.toLocaleLowerCase().indexOf('ccy') > -1)\r\n {\r\n return new ComponentModel(IsoMatCurrency, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n if (controlModel.values?.length > 0) {\r\n return new ComponentModel(IsoMatSelect, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n if (controlModel.maxLength && parseInt(controlModel.maxLength, 10) > 50) {\r\n return new ComponentModel(IsoMatTextarea, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n return new ComponentModel(IsoMatInput, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"date\":\r\n return new ComponentModel(IsoMatDate, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"datetime\":\r\n return new ComponentModel(IsoMatDateTime, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"boolean\":\r\n controlModel.values = [\"true\", \"false\"];\r\n return new ComponentModel(IsoMatSelect, { \"control\": controlModel, \"formControl\": formControl });\r\n case \"any\":\r\n return new ComponentModel(IsoMatTextarea, { \"control\": controlModel, \"formControl\": formControl });\r\n default:\r\n return new ComponentModel(IsoMatInput, { \"control\": controlModel, \"formControl\": formControl });\r\n }\r\n }\r\n}","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[componentContent]',\r\n standalone: false\r\n})\r\nexport class ComponentDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}","import { Component, Input, OnInit, Type, ViewChild } from '@angular/core';\r\nimport { ComponentDirective } from '../../directives/component-content.directive';\r\nimport { ComponentModel } from '../../models/component.model';\r\n\r\n@Component({\r\n selector: 'ngx-dynamic',\r\n template: `<div><ng-template componentContent></ng-template></div>`,\r\n standalone: false\r\n})\r\nexport class NgxDynamicComponent implements OnInit {\r\n\r\n @Input() componentModel: ComponentModel;\r\n @ViewChild(ComponentDirective, { static: true }) componentContent!: ComponentDirective;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.loadComponent();\r\n }\r\n\r\n loadComponent() {\r\n const viewContainerRef = this.componentContent.viewContainerRef;\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent<any>(this.componentModel.component);\r\n if (this.componentModel.prop) {\r\n Object.assign(componentRef.instance, this.componentModel.prop);\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, forwardRef } from '@angular/core';\r\nimport { ControlService } from '../../shared/services/control.service';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\r\nimport { ComponentModel } from '../../shared/models/component.model';\r\nimport { SchemaElement } from '../../Models/Schema';\r\n\r\n@Component({\r\n selector: 'ngx-iso-control',\r\n templateUrl: './iso-control.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxIsoControlComponent),\r\n multi: true,\r\n }\r\n ],\r\n standalone: false\r\n})\r\n\r\nexport class NgxIsoControlComponent implements OnInit, ControlValueAccessor {\r\n @Input() formControl: FormControl;\r\n @Input() control: SchemaElement\r\n component: ComponentModel\r\n constructor(private controlService: ControlService) {\r\n\r\n }\r\n ngOnInit(): void {\r\n this.addValidator();\r\n this.component = this.controlService.getComponentByType(this.control, this.formControl);\r\n }\r\n\r\n writeValue(obj: any): void {\r\n }\r\n registerOnChange(fn: any): void {\r\n }\r\n registerOnTouched(fn: any): void {\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n }\r\n\r\n private addValidator = (): void => {\r\n try {\r\n const minOccurs = parseInt(this.control.minOccurs, 10);\r\n let minLength = parseInt(this.control.minLength, 10);\r\n const maxLength = parseInt(this.control.maxLength, 10);\r\n if (minOccurs) {\r\n this.formControl.addValidators(Validators.required);\r\n }\r\n if (!Number.isNaN(minLength)) {\r\n this.formControl.addValidators(Validators.minLength(minLength));\r\n }\r\n if (!Number.isNaN(maxLength)) {\r\n this.formControl.addValidators(Validators.maxLength(maxLength));\r\n }\r\n if (this.control.pattern) {\r\n this.formControl.addValidators(Validators.pattern(this.control.pattern));\r\n }\r\n if (this.control.fractionDigits) {\r\n minLength = Number.isNaN(minLength) ? 0 : minLength;\r\n const pattern = `^[\\\\d\\\\.\\\\d{0,${this.control.fractionDigits}}]{${minLength},${this.control.totalDigits}}$`\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n}","<ngx-dynamic *ngIf=\"component\" [componentModel]=\"component\"></ngx-dynamic>","import { Injectable } from '@angular/core';\r\nimport { NativeDateAdapter, MatDateFormats } from '@angular/material/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class CustomDateAdapter extends NativeDateAdapter {\r\n public override format(date: Date, displayFormat: Object): string {\r\n const day = this._to2digit(date.getDate());\r\n const month = this._to2digit(date.getMonth() + 1); // Months are zero-based\r\n const year = date.getFullYear();\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n private _to2digit(n: number) {\r\n return ('00' + n).slice(-2);\r\n }\r\n}\r\n\r\nexport const CUSTOM_DATE_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: 'YYYY-MM-DD',\r\n },\r\n display: {\r\n dateInput: 'YYYY-MM-DD',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n","import { Injectable } from '@angular/core';\nimport { FormGroup, FormControl, FormArray, FormBuilder } from '@angular/forms';\nimport { SchemaModel } from './Models/Schema';\nimport { CustomDateAdapter } from './shared/services/custom-date-adapter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxIsoService {\n public _formModel: any[] = [];\n public excludes: string[] = [];\n constructor(\n private fb: FormBuilder,\n private dateService: CustomDateAdapter\n ) {}\n\n public maxOccurs(maxOccurs: string): boolean {\n return maxOccurs === 'unbounded' || parseInt(maxOccurs, 10) > 1;\n }\n\n public initFormModel(\n model: any,\n form: FormGroup | FormArray,\n prev_key: string\n ): void {\n if (typeof model === 'object') {\n for (const key in model) {\n const __key = !prev_key ? key : `${prev_key}_${key}`;\n const parentNode = this.getFormModel(this._formModel[0], __key);\n\n if (parentNode && parentNode.multi || Array.isArray(model[key])) {\n if ((!Array.isArray(model[key])) && parentNode && parentNode.multi) {\n model[key] = [model[key]];\n }\n const item = model[key];\n const formArray = form.get(__key) as FormArray;\n if (formArray && formArray.length !== item.length) {\n const newEle = structuredClone(\n parentNode.elements[parentNode.elements.length - 1]\n );\n if (\n !(\n newEle.maxOccurs &&\n parseInt(newEle.maxOccurs, 10) <= parentNode.elements.length\n )\n ) {\n const newKeys: any = [];\n const groupControls = this.getFormGroupControls(\n newEle.elements,\n newKeys,\n parentNode.elements.length - 1\n );\n parentNode.elements.push(newEle);\n formArray.push(groupControls);\n parentNode.elements.forEach((element: SchemaModel) => {\n if (\n !element.minOccurs ||\n parseInt(element.minOccurs, 10) === 0\n ) {\n element.minOccurs = '1';\n }\n });\n }\n }\n\n for (let i = 0; i < item.length; i++) {\n parentNode.elements[i].expanded = true;\n const formArray = form.get(__key);\n if (formArray) {\n const frmGroup = (formArray as FormArray).at(i);\n if (frmGroup) {\n this.initFormModel(item[i], frmGroup as FormGroup, __key);\n }\n }\n }\n } else if (typeof model[key] === 'object') {\n const node = this.getFormModel(this._formModel[0], __key);\n node.expanded = true;\n if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {\n node.minOccurs = '1';\n }\n const _form = form.get(__key) as FormGroup;\n if (_form) {\n if (node.dataType === 'choice') {\n const choiceKey = Object.keys(model[key])[0];\n const _choiceKey = `${__key}_${choiceKey}`;\n const choiceEle = node.elements.find(\n (item: SchemaModel) => item.id === _choiceKey\n );\n node.choiceKey = _choiceKey;\n choiceEle.hidden = false;\n choiceEle.expanded = true;\n const newNode = structuredClone(choiceEle);\n if (newNode.elements.length) {\n const group = this.getFormGroupControls(\n newNode.elements,\n [],\n 0,\n false\n );\n _form.addControl(newNode.id, group);\n } else {\n const control = this.getFormControl('');\n _form.addControl(newNode.id, control);\n }\n }\n this.initFormModel(model[key], _form, __key);\n }\n } else {\n const _form = form.get(__key) as FormControl;\n _form.setValue(model[key]);\n }\n }\n } else if (Array.isArray(model)) {\n for (let i = 0; i < model.length; i++) {\n const frmGroup = (form as FormArray).at(i);\n this.initFormModel(model[i], frmGroup as FormGroup, '');\n }\n }\n }\n\n public getFormGroupControls(\n json: SchemaModel[],\n keys: any,\n index: number = 0,\n choiceEle: boolean = false\n ): FormGroup {\n let control: any = {};\n let controls: any;\n let value = {};\n\n json.forEach((item: SchemaModel) => {\n if (\n (this.excludes.length > 0 && !this.excludes.includes(item.id)) ||\n this.excludes.length == 0\n ) {\n item.hidden = choiceEle;\n value = item.elements;\n const id = item.id;\n const element = { ...item, elements: [], id };\n if (item.elements.length > 0) {\n let choice = item.dataType === 'choice';\n if (choice) {\n element.choiceKey = '';\n }\n if (this.maxOccurs(item.maxOccurs)) {\n element.uniqueId = `${element.id}_${index}`;\n keys.push({\n id: element.id,\n multi: true,\n xpath: element.xpath,\n elements: [element],\n });\n const data = this.getFormGroupControls(\n item.elements,\n element.elements,\n index,\n choice\n );\n controls = this.fb.array([]);\n if (!choice) {\n controls.push(data);\n }\n control[id] = controls;\n } else if (item.multi && !item.isFormControls) {\n keys.push({\n id: element.id,\n multi: true,\n xpath: element.xpath,\n elements: element.elements,\n });\n const data = this.getFormGroupControls(\n item.elements[item.elements.length - 1].elements,\n element.elements,\n index,\n choice\n );\n controls = this.fb.array([]);\n if (!choice) {\n controls.push(data);\n }\n control[id] = controls;\n } else if (item.multi && item.isFormControls) {\n if (item.elements.length > 1) {\n item.elements.splice(1, item.elements.length - 1);\n }\n keys.push(item);\n control[id] = this.fb.array([\n this.getFormControl(item.value || ''),\n ]);\n } else {\n keys.push(element);\n const data = this.getFormGroupControls(\n item.elements,\n element.elements,\n index,\n choice\n );\n if (!choice) {\n control[id] = data;\n } else {\n control[id] = this.fb.group({});\n }\n }\n } else if (this.maxOccurs(item.maxOccurs)) {\n keys.push({\n id: element.id,\n multi: true,\n xpath: element.xpath,\n elements: [element],\n isFormControls: true,\n });\n control[id] = this.fb.array([this.getFormControl(item.value)]);\n } else if (item.isCurrency) {\n const _amountCurrency = this.getAmountCurrency(item);\n keys.push(element);\n const data = this.getFormGroupControls(\n _amountCurrency,\n element.elements,\n 0,\n false\n );\n control[item.id] = data;\n } else {\n keys.push(element);\n control[id] = this.getFormControl(item.value || '');\n }\n }\n });\n return new FormGroup(control);\n }\n\n public getFormControl(values: any): FormControl {\n return new FormControl(values || '', {\n updateOn: 'blur',\n });\n }\n\n public sanitize = (obj: any): any => {\n if (obj === null || obj === '') {\n return null;\n }\n\n if (Array.isArray(obj)) {\n const cleanedObj: any = [];\n for (const index in obj) {\n const cleanedValue = this.sanitize(obj[index]);\n if (\n cleanedValue !== null &&\n cleanedValue !== '' &&\n Object.keys(cleanedValue).length > 0 &&\n (!Array.isArray(cleanedValue) || cleanedValue.length > 0)\n ) {\n cleanedObj.push(cleanedValue);\n }\n }\n return cleanedObj;\n } else if (typeof obj === 'object' && obj instanceof Date) {\n const cleanedObj = this.dateService.format(obj, 'YYYY-MM-DD');\n return cleanedObj;\n } else if (typeof obj === 'object') {\n const cleanedObj: any = {};\n\n for (const key in obj) {\n const cleanedValue = this.sanitize(obj[key]);\n if (\n cleanedValue !== null &&\n cleanedValue !== '' &&\n Object.keys(cleanedValue).length > 0 &&\n (!Array.isArray(cleanedValue) || cleanedValue.length > 0)\n ) {\n const _keys = key.split('_');\n const newKey = _keys[_keys.length - 1];\n cleanedObj[newKey] = cleanedValue;\n }\n }\n return cleanedObj;\n }\n\n return obj;\n };\n\n private getFormModel = (object: any, key: string): any => {\n if (object) {\n if (object.elements.length) {\n if (object.id === key) {\n return object;\n }\n for (let i = 0; i < object.elements.length; i++) {\n const obj = this.getFormModel(object.elements[i], key);\n if (obj) return obj;\n }\n } else {\n if (object.id === key) {\n return object;\n }\n }\n }\n };\n\n private getAmountCurrency(item: SchemaModel): SchemaModel[] {\n const elements: SchemaModel[] = [];\n const ccy = structuredClone(item);\n const amt = structuredClone(item);\n\n ccy.id = `${ccy.id}_Ccy`;\n ccy.name = 'Ccy';\n ccy.fractionDigits = '';\n ccy.totalDigits = '';\n ccy.maxLength = '3';\n ccy.xpath = `${ccy.xpath}@Ccy`;\n ccy.isCurrency = false;\n elements.push(ccy);\n\n amt.id = `${amt.id}_Amt`;\n amt.xpath = `${amt.xpath}/Amt`;\n amt.isCurrency = false;\n amt.pattern = '';\n elements.push(amt);\n return elements;\n }\n}\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n FormArray,\r\n AbstractControl\r\n} from '@angular/forms';\r\n\r\nimport { SchemaModel } from './Models/Schema';\r\nimport { NgxIsoService } from './ngx-iso-form.service';\r\nimport { IsoForm } from './Models/IsoForm';\r\n\r\n@Component({\r\n selector: 'ngx-iso-form',\r\n templateUrl: './ngx-iso-form.component.html',\r\n styleUrls: ['./ngx-iso-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class NgxIsoFormComponent implements OnChanges {\r\n @Input({ required: true }) form: IsoForm;\r\n @Input({ required: true }) schema: SchemaModel;\r\n @Input() excludes: string[];\r\n protected _form: FormGroup;\r\n private _isFormInitiate: boolean;\r\n private _ngModel: any;\r\n\r\n constructor(private service: NgxIsoService, private changeDetection: ChangeDetectorRef) {\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema'] && changes['schema'].currentValue) {\r\n this.initiateForm();\r\n }\r\n if (changes['form'] && changes['form'].currentValue) {\r\n this.initiateFormModel();\r\n }\r\n if (changes['excludes'] && changes['excludes'].currentValue) {\r\n this.service.excludes = this.excludes; \r\n }\r\n }\r\n\r\n public get model(): any {\r\n if (this._form)\r\n return this.service.sanitize(this._form.value);\r\n }\r\n\r\n protected get getFormModel(): any[] {\r\n return this.service._formModel;\r\n }\r\n\r\n public get invalid(): boolean {\r\n return this._form.invalid;\r\n }\r\n\r\n private initiateForm(): void {\r\n this.service._formModel = [this.structuredClone(this.schema)];\r\n this.service._formModel[0].elements = [];\r\n let group: any = {};\r\n const schemaElements = this.schema.elements.length > 0 ? this.structuredClone(this.schema.elements) : this.schema.elements;\r\n const formElements = this.service._formModel[0].elements.length > 0 ? this.structuredClone(this.service._formModel[0].elements) : this.service._formModel[0].elements;\r\n group[this.schema.id] = this.service.getFormGroupControls(schemaElements, formElements);\r\n this._form = new FormGroup(group);\r\n if (!this._isFormInitiate) {\r\n this.initiateFormModel();\r\n }\r\n }\r\n\r\n private structuredClone(data: any): any {\r\n let cloneData;\r\n try {\r\n cloneData = structuredClone(data);\r\n } catch(e) {\r\n cloneData = JSON.parse(JSON.stringify(data));\r\n }\r\n return cloneData;\r\n }\r\n\r\n private initiateFormModel(): void {\r\n if (this._form) {\r\n this._ngModel = this.form.isoFormModel;\r\n this.form.getFormModel = () => {\r\n return this.model;\r\n };\r\n\r\n \r\n this._isFormInitiate = true;\r\n this.service.initFormModel(this._ngModel, this._form,\"\");\r\n }\r\n }\r\n\r\n protected onChoiceSelectionChange(id: string, formElement: any, node: SchemaModel): void {\r\n node.elements.forEach((element: SchemaModel) => {\r\n element.hidden = true;\r\n formElement.removeControl(element.id);\r\n if (element.id === id) {\r\n node.choiceKey = id;\r\n element.hidden = false;\r\n if (element.elements.length) {\r\n // element.elements[0].hidden = false;\r\n const group = this.service.getFormGroupControls(element.elements, [], 0, false);\r\n formElement.addControl(element.id, group);\r\n } else {\r\n const control = this.service.getFormControl('');\r\n formElement.addControl(element.id, control);\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n protected maxOccurs(maxOccurs: string): boolean {\r\n return maxOccurs !== null && maxOccurs !== undefined && this.service.maxOccurs(maxOccurs);\r\n }\r\n\r\n protected expand(minOccurs: string): boolean {\r\n return minOccurs !== null && minOccurs !== undefined && parseInt(minOccurs, 10) > 0;\r\n }\r\n\r\n protected addSection($event: Event, node: SchemaModel, parentNode: SchemaModel, parentFormEle: FormGroup): void {\r\n $event.stopPropagation();\r\n const control: FormArray = parentFormEle.get(node.id) as FormArray;\r\n if (node.maxOccurs && parseInt(node.maxOccurs, 10) <= parentNode.elements.length) {\r\n return;\r\n }\r\n const newEle = this.structuredClone(parentNode.elements[0]);\r\n const newKeys: any = [];\r\n const groupControls = this.service.getFormGroupControls(newEle.elements, newKeys, parentNode.elements.length - 1);\r\n parentNode.elements.push(newEle);\r\n control.push(groupControls);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected removeSection($event: Event, parentNode: SchemaModel, parentFormEle: FormGroup, index: number): void {\r\n $event.stopPropagation();\r\n const control: FormArray = parentFormEle.get(parentNode.id) as FormArray;\r\n parentNode.elements.splice(index, 1);\r\n control.removeAt(index);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected addNewControl($event: Event, node: SchemaModel, parentNode: SchemaModel, parentFormEle: FormGroup): void {\r\n $event.stopPropagation();\r\n if (node.maxOccurs && parseInt(node.maxOccurs, 10) <= parentNode.elements.length) {\r\n return;\r\n }\r\n const control: FormArray = parentFormEle.get(node.id) as FormArray;\r\n const newControl = this.service.getFormControl('');\r\n const newEle = this.structuredClone(parentNode.elements[parentNode.elements.length - 1]);\r\n control.push(newControl);\r\n parentNode.elements.push(newEle);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected removeNewControl($event: Event, parentNode: SchemaModel, parentFormEle: FormGroup, index: number): void {\r\n $event.stopPropagation();\r\n const control: FormArray = parentFormEle.get(parentNode.id) as FormArray;\r\n parentNode.elements.splice(index, 1);\r\n control.removeAt(index);\r\n this.changeDetection.detectChanges();\r\n }\r\n\r\n protected isArray(myKey: Object | Array<any>): boolean {\r\n if (myKey instanceof Array) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected isEmpty(formElement: FormGroup): boolean {\r\n return formElement.controls && Object.keys(formElement.controls).length === 0;\r\n }\r\n\r\n protected getElement(formElement: FormGroup, element: any): AbstractControl<any, any> | undefined {\r\n if (element.hidden) {\r\n return;\r\n }\r\n let _element;\r\n if (element.multi) {\r\n _element = element.elements[element.elements.length - 1];\r\n } else {\r\n _element = element;\r\n }\r\n\r\n let formControl = formElement.controls[_element.id];\r\n if (!formControl) {\r\n formControl = (formElement as any)[_element.id];\r\n if (!formControl)\r\n throw `FormControl not found ${_element.id}`;\r\n }\r\n if (formControl instanceof FormArray) {\r\n const formGroup = formControl.controls.find((item: any) => {\r\n if (item instanceof FormControl)\r\n return true;\r\n return Object.keys(item.controls).find((ctrl) => {\r\n return ctrl.indexOf(element.id) > -1;\r\n })\r\n });\r\n if (formGroup)\r\n return formControl.at(formControl.length - 1);\r\n }\r\n return formControl;\r\n }\r\n\r\n protected getFormControl(node: SchemaModel): FormControl {\r\n return this.service.getFormControl('');\r\n }\r\n\r\n protected getChoiceFormControl(choiceKey:string){\r\n const formControl = this.service.getFormControl('');\r\n formControl.setValue(choiceKey);\r\n return formControl;\r\n }\r\n}\r\n","<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs) || node.expanded\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(formElement,model),\r\n parentFormElement: formElement\r\n }\">\r\n </ng-template>\r\n </ng-container>\r\n <div *ngIf=\"node.elements.length === 0\">\r\n <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </div>\r\n <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n </ng-container>\r\n <ng-template #formArray>\r\n <ng-template *ngFor=\"let key of model;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: key,\r\n formElement: getElement(_form,key),\r\n parentFormElement: _form,\r\n index:i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #formObject>\r\n <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(_form,model),\r\n parentFormElement: _form,\r\n index: i,\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</form>","import { NgModule } from '@angular/core';\r\n\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\"\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MatNativeDateModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport {\r\n NgxIsoControlComponent,\r\n IsoBaseControlComponent,\r\n IsoMatInput,\r\n IsoMatDate,\r\n IsoMatTextarea,\r\n IsoMatSelect,\r\n IsoMatCheckbox,\r\n IsoMatDateTime,\r\n IsoMatCurrency,\r\n} from './components';\r\n\r\nimport { NgxIsoFormComponent } from './ngx-iso-form.component';\r\n\r\nimport { ComponentDirective } from './shared/directives/component-content.directive';\r\nimport { NgxDynamicComponent } from './shared/components/dynamic/ngx-dynamic.component';\r\nimport { IsoTranslatePipe } from './shared/pipe/translate.pipe';\r\nimport { IsoErrorPipe } from './shared/pipe/error.pipe';\r\nimport { IsoGeneralPipe } from './shared/pipe/general.pipe';\r\nimport { CUSTOM_DATE_FORMATS, CustomDateAdapter } from './shared/services/custom-date-adapter';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxIsoFormComponent,\r\n NgxIsoControlComponent,\r\n NgxDynamicComponent,\r\n IsoBaseControlComponent,\r\n IsoMatInput,\r\n IsoMatTextarea,\r\n IsoMatDate,\r\n IsoMatDateTime,\r\n IsoMatSelect,\r\n IsoMatCheckbox,\r\n IsoMatCurrency,\r\n ComponentDirective,\r\n IsoTranslatePipe,\r\n IsoErrorPipe,\r\n IsoGeneralPipe\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n TranslateModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatButtonModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n ],\r\n providers: [\r\n { provide: DateAdapter, useClass: CustomDateAdapter },\r\n { provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }\r\n ],\r\n exports: [\r\n NgxIsoFormComponent\r\n ]\r\n})\r\nexport class NgxIsoFormModule { }\r\n","import { ComponentRef, Injectable, ViewContainerRef } from \"@angular/core\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class ComponentService{\r\n public getComponent<T>(viewContainerRef: ViewContainerRef,dynamicModel: ComponentModel): ComponentRef<T> {\r\n const componentRef = viewContainerRef.createComponent<T>(dynamicModel.component);\r\n if(dynamicModel.prop){\r\n (componentRef.instance as any).prop = dynamicModel.prop;\r\n }\r\n return componentRef;\r\n }\r\n}\r\n\r\n","import { SchemaElement } from './Schema';\r\n\r\nexport class IsoForm {\r\n private _model: any;\r\n private _namespace: any = {};\r\n constructor(model: any, xmlMessage: string = '') {\r\n if (xmlMessage) {\r\n model = this.parseXML(\r\n new DOMParser().parseFromString(xmlMessage, 'text/xml').childNodes[0]\r\n );\r\n }\r\n this._model = model;\r\n }\r\n public get isoFormModel(): any {\r\n return this._model;\r\n }\r\n\r\n /**\r\n * @deprecated This method is deprecated use `#isoForm.getFormModel` instead\r\n */\r\n public getFormModel = (): any => {};\r\n\r\n private parseXML(node: any) {\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n const obj: Record<string, any> = {};\r\n obj[node.nodeName] = {};\r\n\r\n if (node.hasChildNodes()) {\r\n for (let childNode of Array.from(node.childNodes) as any) {\r\n const childObj = this.parseXML(childNode);\r\n if (\r\n typeof childObj === 'object' &&\r\n childNode.nodeType !== Node.TEXT_NODE &&\r\n Object.keys(childObj).length > 0\r\n ) {\r\n if (obj[node.nodeName][childNode.nodeName]) {\r\n obj[node.nodeName][childNode.nodeName] = [\r\n structuredClone(obj[node.nodeName][childNode.nodeName]),\r\n ];\r\n obj[node.nodeName][childNode.nodeName].push(\r\n childObj[childNode.nodeName]\r\n );\r\n } else {\r\n obj[node.nodeName][childNode.nodeName] = {};\r\n obj[node.nodeName][childNode.nodeName] =\r\n childObj[childNode.nodeName];\r\n }\r\n } else if (childObj && Object.keys(childObj).length > 0) {\r\n obj[node.nodeName] = childObj;\r\n }\r\n }\r\n }\r\n\r\n if (node.attributes && node.attributes.length > 0) {\r\n for (const attribute of Array.from(node.attributes) as any) {\r\n if (attribute.nodeName === 'xmlns') {\r\n this._namespace[node.nodeName] = attribute.nodeValue;\r\n } else {\r\n if (attribute.nodeName === 'Ccy') {\r\n obj[node.nodeName] = {\r\n Amt: node.textContent,\r\n Ccy: attribute.nodeValue,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n } else if (\r\n node.nodeType === Node.TEXT_NODE ||\r\n node.nodeType === Node.CDATA_SECTION_NODE\r\n ) {\r\n return node.nodeValue.trim();\r\n }\r\n\r\n return {};\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-iso-form\r\n */\r\n\r\nexport * from './lib/ngx-iso-form.module';\r\nexport * from './lib/ngx-iso-form.component';\r\nexport * from './lib/shared/services';\r\n\r\nexport { SchemaElement } from './lib/Models/Schema'\r\nexport * from './lib/Models/Control'\r\nexport * from './lib/Models/IsoForm'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i6.IsoTranslatePipe","i7.IsoErrorPipe","i5.IsoTranslatePipe","i6.IsoErrorPipe","i7.IsoGeneralPipe","i4.IsoTranslatePipe","i5.IsoErrorPipe","i4","i5","i1.ComponentDirective","i1.ControlService","i2","i3.NgxDynamicComponent","i2.CustomDateAdapter","i1.NgxIsoService","i3","i7","i8","i10.NgxIsoControlComponent","i11.IsoTranslatePipe"],"mappings":"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"}
|
package/lib/Models/IsoForm.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export declare class IsoForm {
|
|
2
2
|
private _model;
|
|
3
|
-
|
|
3
|
+
private _namespace;
|
|
4
|
+
constructor(model: any, xmlMessage?: string);
|
|
4
5
|
get isoFormModel(): any;
|
|
5
6
|
/**
|
|
6
7
|
* @deprecated This method is deprecated use `#isoForm.getFormModel` instead
|
|
7
8
|
*/
|
|
8
9
|
getFormModel: () => any;
|
|
10
|
+
private parseXML;
|
|
9
11
|
}
|
|
@@ -9,7 +9,7 @@ export declare class NgxIsoService {
|
|
|
9
9
|
excludes: string[];
|
|
10
10
|
constructor(fb: FormBuilder, dateService: CustomDateAdapter);
|
|
11
11
|
maxOccurs(maxOccurs: string): boolean;
|
|
12
|
-
initFormModel(model: any, form: FormGroup | FormArray): void;
|
|
12
|
+
initFormModel(model: any, form: FormGroup | FormArray, prev_key: string): void;
|
|
13
13
|
getFormGroupControls(json: SchemaModel[], keys: any, index?: number, choiceEle?: boolean): FormGroup;
|
|
14
14
|
getFormControl(values: any): FormControl;
|
|
15
15
|
sanitize: (obj: any) => any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-iso-form",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Angular component design Reactive Form using specific JSON. The primary use of this UI library is to design ISO 20022 forms dynamically.",
|
|
5
5
|
"author": "Abhishek Joshi aka PixelByAJ",
|
|
6
6
|
"repository": {
|