@muziehdesign/forms 20.0.0-beta.995 → 20.0.0-next.1035
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/fesm2022/muziehdesign-forms.mjs +220 -49
- package/fesm2022/muziehdesign-forms.mjs.map +1 -1
- package/index.d.ts +411 -15
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Input, Component, forwardRef, Directive, Optional, SkipSelf, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, LOCALE_ID, Inject, Input, Component, forwardRef, Directive, Optional, SkipSelf, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as Yup from 'yup';
|
|
4
4
|
import { object } from 'yup';
|
|
5
5
|
import 'reflect-metadata';
|
|
@@ -11,9 +11,10 @@ import { CommonModule } from '@angular/common';
|
|
|
11
11
|
class ModelSchema {
|
|
12
12
|
// TODO: need to keep track of internal and external
|
|
13
13
|
//private definitions?: {[K in keyof T]: FieldSchema<any>};
|
|
14
|
-
constructor(metadata, schema) {
|
|
14
|
+
constructor(metadata, schema, name) {
|
|
15
15
|
this.metadata = metadata;
|
|
16
16
|
this.schema = schema;
|
|
17
|
+
this.name = name;
|
|
17
18
|
}
|
|
18
19
|
getMetadata(paths) {
|
|
19
20
|
//console.log('fetching metadata for path: ', paths);
|
|
@@ -109,9 +110,9 @@ class ModelSchemaFactory {
|
|
|
109
110
|
constructor() { }
|
|
110
111
|
build(model) {
|
|
111
112
|
const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
|
|
112
|
-
const schemaData = [...metadata.values()];
|
|
113
|
+
const schemaData = [...metadata.schemas.values()];
|
|
113
114
|
const schema = this.buildYupSchema(schemaData);
|
|
114
|
-
return new ModelSchema(schemaData, schema);
|
|
115
|
+
return new ModelSchema(schemaData, schema, metadata.name);
|
|
115
116
|
}
|
|
116
117
|
buildUntyped(raw) {
|
|
117
118
|
const schema = this.buildYupSchema(raw);
|
|
@@ -194,6 +195,12 @@ class ModelSchemaFactory {
|
|
|
194
195
|
if (original.label) {
|
|
195
196
|
schema.label(original.label);
|
|
196
197
|
}
|
|
198
|
+
schema = schema.transform(function (value, originalValue) {
|
|
199
|
+
if (originalValue === '') {
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
return value;
|
|
203
|
+
});
|
|
197
204
|
const options = original.constraints;
|
|
198
205
|
if (options.required) {
|
|
199
206
|
schema = schema.required(options.required.message);
|
|
@@ -205,12 +212,17 @@ class ModelSchemaFactory {
|
|
|
205
212
|
schema = schema.max(options.max.max, options.max.message);
|
|
206
213
|
}
|
|
207
214
|
if (options.test) {
|
|
208
|
-
schema = schema.test({
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
215
|
+
schema = schema.test(options.test.name, function (v, context) {
|
|
216
|
+
if (v && options.test?.test(v) !== true) {
|
|
217
|
+
return context.createError({
|
|
218
|
+
message: options.test?.message,
|
|
219
|
+
path: context.path,
|
|
220
|
+
params: {
|
|
221
|
+
key: options.test?.name
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return true;
|
|
214
226
|
});
|
|
215
227
|
}
|
|
216
228
|
return schema;
|
|
@@ -248,7 +260,7 @@ class ModelSchemaFactory {
|
|
|
248
260
|
}
|
|
249
261
|
buildNestedObjectSchema(original) {
|
|
250
262
|
const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, original.constraints.getInstance());
|
|
251
|
-
let nestedSchema = this.buildYupSchema([...metadata.values()]);
|
|
263
|
+
let nestedSchema = this.buildYupSchema([...metadata.schemas.values()]);
|
|
252
264
|
if (original.label) {
|
|
253
265
|
nestedSchema.label(original.label);
|
|
254
266
|
}
|
|
@@ -283,9 +295,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
283
295
|
}], ctorParameters: () => [] });
|
|
284
296
|
|
|
285
297
|
const METADATA_KEY = 'custom:muziehdesign:annotations';
|
|
286
|
-
const
|
|
287
|
-
const metadata = Reflect.getMetadata(METADATA_KEY, target) || new Map();
|
|
288
|
-
metadata.set(propertyKey, schema);
|
|
298
|
+
const registerPropertyMetadata = (target, propertyKey, schema) => {
|
|
299
|
+
const metadata = Reflect.getMetadata(METADATA_KEY, target) || { schemas: new Map() };
|
|
300
|
+
metadata.schemas.set(propertyKey, schema);
|
|
301
|
+
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
302
|
+
};
|
|
303
|
+
const registerMetadata = (target, name) => {
|
|
304
|
+
const metadata = Reflect.getMetadata(METADATA_KEY, target) || { schemas: new Map() };
|
|
305
|
+
metadata.name = name;
|
|
289
306
|
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
290
307
|
};
|
|
291
308
|
function StringType(...annotations) {
|
|
@@ -293,9 +310,9 @@ function StringType(...annotations) {
|
|
|
293
310
|
const schema = {
|
|
294
311
|
name: propertyKey,
|
|
295
312
|
type: FieldSchemaType.string,
|
|
296
|
-
constraints: Object.assign({}, ...annotations)
|
|
313
|
+
constraints: Object.assign({}, ...annotations),
|
|
297
314
|
};
|
|
298
|
-
|
|
315
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
299
316
|
};
|
|
300
317
|
}
|
|
301
318
|
function BooleanType(...annotations) {
|
|
@@ -303,9 +320,9 @@ function BooleanType(...annotations) {
|
|
|
303
320
|
const schema = {
|
|
304
321
|
name: propertyKey,
|
|
305
322
|
type: FieldSchemaType.boolean,
|
|
306
|
-
constraints: Object.assign({}, ...annotations)
|
|
323
|
+
constraints: Object.assign({}, ...annotations),
|
|
307
324
|
};
|
|
308
|
-
|
|
325
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
309
326
|
};
|
|
310
327
|
}
|
|
311
328
|
function DateType(...annotations) {
|
|
@@ -313,9 +330,9 @@ function DateType(...annotations) {
|
|
|
313
330
|
const schema = {
|
|
314
331
|
name: propertyKey,
|
|
315
332
|
type: FieldSchemaType.date,
|
|
316
|
-
constraints: Object.assign({}, ...annotations)
|
|
333
|
+
constraints: Object.assign({}, ...annotations),
|
|
317
334
|
};
|
|
318
|
-
|
|
335
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
319
336
|
};
|
|
320
337
|
}
|
|
321
338
|
function NumberType(...annotations) {
|
|
@@ -323,9 +340,9 @@ function NumberType(...annotations) {
|
|
|
323
340
|
const schema = {
|
|
324
341
|
name: propertyKey,
|
|
325
342
|
type: FieldSchemaType.number,
|
|
326
|
-
constraints: Object.assign({}, ...annotations)
|
|
343
|
+
constraints: Object.assign({}, ...annotations),
|
|
327
344
|
};
|
|
328
|
-
|
|
345
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
329
346
|
};
|
|
330
347
|
}
|
|
331
348
|
function ObjectType(type, ...annotations) {
|
|
@@ -333,9 +350,9 @@ function ObjectType(type, ...annotations) {
|
|
|
333
350
|
const schema = {
|
|
334
351
|
name: propertyKey,
|
|
335
352
|
type: FieldSchemaType.object,
|
|
336
|
-
constraints: Object.assign({}, ...annotations, { getInstance: () => new type() })
|
|
353
|
+
constraints: Object.assign({}, ...annotations, { getInstance: () => new type() }),
|
|
337
354
|
};
|
|
338
|
-
|
|
355
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
339
356
|
};
|
|
340
357
|
}
|
|
341
358
|
function ArrayType(...annotations) {
|
|
@@ -343,9 +360,9 @@ function ArrayType(...annotations) {
|
|
|
343
360
|
const schema = {
|
|
344
361
|
name: propertyKey,
|
|
345
362
|
type: FieldSchemaType.array,
|
|
346
|
-
constraints: Object.assign({}, ...annotations)
|
|
363
|
+
constraints: Object.assign({}, ...annotations),
|
|
347
364
|
};
|
|
348
|
-
|
|
365
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
349
366
|
};
|
|
350
367
|
}
|
|
351
368
|
function FileType(...annotations) {
|
|
@@ -353,9 +370,17 @@ function FileType(...annotations) {
|
|
|
353
370
|
const schema = {
|
|
354
371
|
name: propertyKey,
|
|
355
372
|
type: FieldSchemaType.file,
|
|
356
|
-
constraints: Object.assign({}, ...annotations)
|
|
373
|
+
constraints: Object.assign({}, ...annotations),
|
|
357
374
|
};
|
|
358
|
-
|
|
375
|
+
registerPropertyMetadata(target, propertyKey, schema);
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
function Model(name) {
|
|
379
|
+
return function (constructor) {
|
|
380
|
+
// Class decorators receive the constructor, but property decorators write to constructor.prototype
|
|
381
|
+
// So we need to write to constructor.prototype to share the same metadata object
|
|
382
|
+
registerMetadata(constructor.prototype, name);
|
|
383
|
+
return constructor;
|
|
359
384
|
};
|
|
360
385
|
}
|
|
361
386
|
function required(message) {
|
|
@@ -510,17 +535,101 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
510
535
|
}]
|
|
511
536
|
}], ctorParameters: () => [{ type: ModelSchemaFactory }] });
|
|
512
537
|
|
|
538
|
+
class FormMessageService {
|
|
539
|
+
constructor(localeId) {
|
|
540
|
+
this.localeId = localeId;
|
|
541
|
+
this.localeData = {};
|
|
542
|
+
}
|
|
543
|
+
getMessage(messageProps, namespace) {
|
|
544
|
+
if (typeof messageProps === 'string') {
|
|
545
|
+
return messageProps;
|
|
546
|
+
}
|
|
547
|
+
try {
|
|
548
|
+
const parts = messageProps.key.split('.');
|
|
549
|
+
// get namespaced message
|
|
550
|
+
if (namespace && namespace.length > 0 && messageProps.path && messageProps.path.length > 0) {
|
|
551
|
+
const namespaced = this.getLocaleData([namespace, messageProps.path, ...parts]);
|
|
552
|
+
if (namespaced !== undefined) {
|
|
553
|
+
return namespaced;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
// get global message
|
|
557
|
+
const message = this.getLocaleData(parts);
|
|
558
|
+
if (!message) {
|
|
559
|
+
return messageProps.key;
|
|
560
|
+
}
|
|
561
|
+
return this.formatMessage(message, messageProps);
|
|
562
|
+
}
|
|
563
|
+
catch {
|
|
564
|
+
return messageProps.key;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
formatMessage(message, params) {
|
|
568
|
+
let formatted = message;
|
|
569
|
+
// Format min parameter
|
|
570
|
+
if (params.min !== undefined) {
|
|
571
|
+
const formattedMin = params.min instanceof Date
|
|
572
|
+
? params.min.toLocaleDateString(this.localeId)
|
|
573
|
+
: params.min.toString();
|
|
574
|
+
formatted = formatted.replace('{min}', formattedMin);
|
|
575
|
+
}
|
|
576
|
+
// Format max parameter
|
|
577
|
+
if (params.max !== undefined) {
|
|
578
|
+
const formattedMax = params.max instanceof Date
|
|
579
|
+
? params.max.toLocaleDateString(this.localeId)
|
|
580
|
+
: params.max.toString();
|
|
581
|
+
formatted = formatted.replace('{max}', formattedMax);
|
|
582
|
+
}
|
|
583
|
+
// Format less parameter
|
|
584
|
+
if (params.less !== undefined) {
|
|
585
|
+
formatted = formatted.replace('{less}', params.less.toString());
|
|
586
|
+
}
|
|
587
|
+
// Format more parameter
|
|
588
|
+
if (params.more !== undefined) {
|
|
589
|
+
formatted = formatted.replace('{more}', params.more.toString());
|
|
590
|
+
}
|
|
591
|
+
// Format length parameter
|
|
592
|
+
if (params.length !== undefined) {
|
|
593
|
+
formatted = formatted.replace('{length}', params.length.toString());
|
|
594
|
+
}
|
|
595
|
+
return formatted;
|
|
596
|
+
}
|
|
597
|
+
registerLocaleMessages(data, localeId) {
|
|
598
|
+
this.localeData[localeId] = data;
|
|
599
|
+
}
|
|
600
|
+
getLocaleData(keyParts) {
|
|
601
|
+
const messages = this.localeData[this.localeId] || this.localeData['en'];
|
|
602
|
+
return keyParts.reduce((obj, part) => {
|
|
603
|
+
if (obj?.[part] === undefined) {
|
|
604
|
+
return undefined;
|
|
605
|
+
}
|
|
606
|
+
return obj[part];
|
|
607
|
+
}, messages);
|
|
608
|
+
}
|
|
609
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormMessageService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
610
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormMessageService, providedIn: 'root' }); }
|
|
611
|
+
}
|
|
612
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FormMessageService, decorators: [{
|
|
613
|
+
type: Injectable,
|
|
614
|
+
args: [{
|
|
615
|
+
providedIn: 'root',
|
|
616
|
+
}]
|
|
617
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
618
|
+
type: Inject,
|
|
619
|
+
args: [LOCALE_ID]
|
|
620
|
+
}] }] });
|
|
621
|
+
|
|
513
622
|
class FieldErrorsComponent {
|
|
514
623
|
get errorMessage() {
|
|
515
624
|
const errorKeys = Object.keys(this.field?.errors || {});
|
|
516
625
|
return errorKeys.length > 0 ? (this.field?.errors)[errorKeys[0]] : '';
|
|
517
626
|
}
|
|
518
627
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FieldErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
519
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FieldErrorsComponent, isStandalone: false, selector: "mz-field-errors", inputs: { field: "field" }, ngImport: i0, template: "@if (errorMessage) {\n <div class=\"field-error\">{{ errorMessage }}</div>\n}\n", styles: [""] }); }
|
|
628
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FieldErrorsComponent, isStandalone: false, selector: "mz-field-errors", inputs: { field: "field" }, ngImport: i0, template: "@if (errorMessage) {\n <div class=\"field-error\">{{ errorMessage }}</div>\n test test\n}\n", styles: [""] }); }
|
|
520
629
|
}
|
|
521
630
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FieldErrorsComponent, decorators: [{
|
|
522
631
|
type: Component,
|
|
523
|
-
args: [{ selector: 'mz-field-errors', standalone: false, template: "@if (errorMessage) {\n <div class=\"field-error\">{{ errorMessage }}</div>\n}\n" }]
|
|
632
|
+
args: [{ selector: 'mz-field-errors', standalone: false, template: "@if (errorMessage) {\n <div class=\"field-error\">{{ errorMessage }}</div>\n test test\n}\n" }]
|
|
524
633
|
}], propDecorators: { field: [{
|
|
525
634
|
type: Input
|
|
526
635
|
}] } });
|
|
@@ -707,34 +816,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
707
816
|
}] } });
|
|
708
817
|
|
|
709
818
|
function getControlContainer(group, form) {
|
|
710
|
-
console.log('getControlContainer', group, form);
|
|
711
819
|
return group ?? form;
|
|
712
820
|
}
|
|
713
821
|
class MzField {
|
|
714
|
-
constructor(
|
|
715
|
-
this.
|
|
822
|
+
constructor(message, form) {
|
|
823
|
+
this.message = message;
|
|
824
|
+
this.form = form;
|
|
716
825
|
this.controlType = 'other';
|
|
717
826
|
}
|
|
718
|
-
ngAfterContentInit() {
|
|
719
|
-
//this.fieldMetadata = this.form.schema.getMetadata(this.ngModel?.path || []);
|
|
720
|
-
}
|
|
721
827
|
getErrorMessage() {
|
|
722
828
|
try {
|
|
723
829
|
const list = Object.values(this.ngModel.errors);
|
|
724
|
-
return list[0];
|
|
830
|
+
return this.message.getMessage(list[0], this.form?.schema.name);
|
|
725
831
|
}
|
|
726
832
|
catch {
|
|
727
833
|
return undefined;
|
|
728
834
|
}
|
|
729
835
|
}
|
|
730
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: MzField, deps: [{ token:
|
|
731
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: MzField, isStandalone: true, selector: "mz-field", inputs: { label: "label", controlType: "controlType"
|
|
836
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: MzField, deps: [{ token: FormMessageService }, { token: MzForm, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
837
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: MzField, isStandalone: true, selector: "mz-field", inputs: { label: "label", controlType: "controlType" }, providers: [
|
|
732
838
|
{
|
|
733
839
|
provide: ControlContainer,
|
|
734
840
|
useFactory: getControlContainer,
|
|
735
|
-
deps: [
|
|
736
|
-
|
|
737
|
-
|
|
841
|
+
deps: [
|
|
842
|
+
[new Optional(), new SkipSelf(), NgModelGroup],
|
|
843
|
+
[new Optional(), new SkipSelf(), NgForm],
|
|
844
|
+
],
|
|
845
|
+
},
|
|
846
|
+
], queries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "<label class=\"field\">\n @if(label && controlType !== 'checkbox') {\n <span class=\"field-label\">\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n\n @if(controlType === 'checkbox' && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n }\n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n" }); }
|
|
738
847
|
}
|
|
739
848
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: MzField, decorators: [{
|
|
740
849
|
type: Component,
|
|
@@ -742,15 +851,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
742
851
|
{
|
|
743
852
|
provide: ControlContainer,
|
|
744
853
|
useFactory: getControlContainer,
|
|
745
|
-
deps: [
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
854
|
+
deps: [
|
|
855
|
+
[new Optional(), new SkipSelf(), NgModelGroup],
|
|
856
|
+
[new Optional(), new SkipSelf(), NgForm],
|
|
857
|
+
],
|
|
858
|
+
},
|
|
859
|
+
], template: "<label class=\"field\">\n @if(label && controlType !== 'checkbox') {\n <span class=\"field-label\">\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n\n @if(controlType === 'checkbox' && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n }\n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n" }]
|
|
860
|
+
}], ctorParameters: () => [{ type: FormMessageService }, { type: MzForm, decorators: [{
|
|
861
|
+
type: Optional
|
|
862
|
+
}] }], propDecorators: { label: [{
|
|
749
863
|
type: Input
|
|
750
864
|
}], controlType: [{
|
|
751
865
|
type: Input
|
|
752
|
-
}], schema: [{
|
|
753
|
-
type: Input
|
|
754
866
|
}], ngModel: [{
|
|
755
867
|
type: ContentChild,
|
|
756
868
|
args: [NgModel]
|
|
@@ -842,6 +954,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
842
954
|
}]
|
|
843
955
|
}] });
|
|
844
956
|
|
|
957
|
+
const YUP_DEFAULT_LOCALES = {
|
|
958
|
+
mixed: {
|
|
959
|
+
required: 'Required',
|
|
960
|
+
notType: 'Invalid value',
|
|
961
|
+
},
|
|
962
|
+
};
|
|
963
|
+
function getMessage(message, key) {
|
|
964
|
+
if (typeof message === 'string') {
|
|
965
|
+
return { key: message };
|
|
966
|
+
}
|
|
967
|
+
return { ...message, key: message.key ?? key };
|
|
968
|
+
}
|
|
969
|
+
const YUP_LOCALE_KEYS = {
|
|
970
|
+
mixed: {
|
|
971
|
+
required: (params) => getMessage(params, 'mixed.required'),
|
|
972
|
+
notType: (params) => getMessage(params, 'mixed.notType'),
|
|
973
|
+
oneOf: (params) => getMessage(params, 'mixed.oneOf'),
|
|
974
|
+
notOneOf: (params) => getMessage(params, 'mixed.notOneOf'),
|
|
975
|
+
default: (params) => getMessage(params, 'mixed.default'),
|
|
976
|
+
defined: (params) => getMessage(params, 'mixed.defined'),
|
|
977
|
+
},
|
|
978
|
+
string: {
|
|
979
|
+
min: (params) => getMessage(params, 'string.min'),
|
|
980
|
+
max: (params) => getMessage(params, 'string.max'),
|
|
981
|
+
length: (params) => getMessage(params, 'string.length'),
|
|
982
|
+
matches: (params) => getMessage(params, 'string.matches'),
|
|
983
|
+
email: (params) => getMessage(params, 'string.email'),
|
|
984
|
+
url: (params) => getMessage(params, 'string.url'),
|
|
985
|
+
uuid: (params) => getMessage(params, 'string.uuid'),
|
|
986
|
+
trim: (params) => getMessage(params, 'string.trim'),
|
|
987
|
+
lowercase: (params) => getMessage(params, 'string.lowercase'),
|
|
988
|
+
uppercase: (params) => getMessage(params, 'string.uppercase'),
|
|
989
|
+
},
|
|
990
|
+
number: {
|
|
991
|
+
min: (params) => getMessage(params, 'number.min'),
|
|
992
|
+
max: (params) => getMessage(params, 'number.max'),
|
|
993
|
+
lessThan: (params) => getMessage(params, 'number.lessThan'),
|
|
994
|
+
moreThan: (params) => getMessage(params, 'number.moreThan'),
|
|
995
|
+
positive: (params) => getMessage(params, 'number.positive'),
|
|
996
|
+
negative: (params) => getMessage(params, 'number.negative'),
|
|
997
|
+
integer: (params) => getMessage(params, 'number.integer'),
|
|
998
|
+
},
|
|
999
|
+
date: {
|
|
1000
|
+
min: (params) => getMessage(params, 'date.min'),
|
|
1001
|
+
max: (params) => getMessage(params, 'date.max')
|
|
1002
|
+
},
|
|
1003
|
+
object: {
|
|
1004
|
+
noUnknown: (params) => getMessage(params, 'object.noUnknown'),
|
|
1005
|
+
},
|
|
1006
|
+
array: {
|
|
1007
|
+
min: (params) => getMessage(params, 'array.min'),
|
|
1008
|
+
max: (params) => getMessage(params, 'array.max'),
|
|
1009
|
+
length: (params) => getMessage(params, 'array.length'),
|
|
1010
|
+
},
|
|
1011
|
+
boolean: {
|
|
1012
|
+
isValue: (params) => getMessage(params, 'boolean.isValue'),
|
|
1013
|
+
}
|
|
1014
|
+
};
|
|
1015
|
+
|
|
845
1016
|
/*
|
|
846
1017
|
* Public API Surface of forms
|
|
847
1018
|
*/
|
|
@@ -850,5 +1021,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
850
1021
|
* Generated bundle index. Do not edit.
|
|
851
1022
|
*/
|
|
852
1023
|
|
|
853
|
-
export { ArrayType, BooleanType, DateType, DateValueAccessor, FieldErrorsComponent, FieldSchemaType, FileType, FormsModule, ModelSchema, ModelSchemaFactory, MzCheckboxGroup, MzField, MzForm, MzFormsModule, NgFormModelState, NgFormModelStateFactory, NumberType, ObjectType, StringType, buildArraySchema, buildBooleanSchema, buildDateSchema, buildNumberSchema, buildStringSchema, currencyOptions, equals, integerOptions, length, max, maxLength, min, minLength, ofValues, pattern, phoneNumberOptions, required, ssnOptions, test };
|
|
1024
|
+
export { ArrayType, BooleanType, DateType, DateValueAccessor, FieldErrorsComponent, FieldSchemaType, FileType, FormMessageService, FormsModule, Model, ModelSchema, ModelSchemaFactory, MzCheckboxGroup, MzField, MzForm, MzFormsModule, NgFormModelState, NgFormModelStateFactory, NumberType, ObjectType, StringType, YUP_DEFAULT_LOCALES, YUP_LOCALE_KEYS, buildArraySchema, buildBooleanSchema, buildDateSchema, buildNumberSchema, buildStringSchema, currencyOptions, equals, getMessage, integerOptions, length, max, maxLength, min, minLength, ofValues, pattern, phoneNumberOptions, required, ssnOptions, test };
|
|
854
1025
|
//# sourceMappingURL=muziehdesign-forms.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-schema.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/field-schema.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/ngform-model-state.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/masks.ts","../../../../projects/muziehdesign/forms/src/lib/date-value-accessor.directive.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.html","../../../../projects/muziehdesign/forms/src/lib/field/field.component.ts","../../../../projects/muziehdesign/forms/src/lib/field/field.component.html","../../../../projects/muziehdesign/forms/src/lib/form/form.directive.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { AnyObjectSchema, SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\nimport { FieldSchema } from './field-schema';\nexport class ModelSchema<T> {\n // TODO: need to keep track of internal and external\n //private definitions?: {[K in keyof T]: FieldSchema<any>};\n constructor(private metadata: FieldSchema<any>[], private schema: AnyObjectSchema) {\n\n }\n \n getMetadata(paths: string[]) {\n //console.log('fetching metadata for path: ', paths);\n //console.log(this.schema.describe());\n for(var i = 0; i < paths.length; i++) {\n const field = this.metadata.find(f=>f.name === paths[i]);\n if(!field?.constraints.required || field.constraints.required.required === false) {\n return { required: false } satisfies FieldMetadata;\n }\n }\n return { required: true } satisfies FieldMetadata;\n\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n\n cast(value: any) {\n return this.schema.cast(value);\n }\n}\n\nexport type SchemaDefinition<T> = {\n //[K in keyof Required<T>]: T[K] extends object ? SchemaDefinition<T[K]>: FieldSchema<any>;\n [K in keyof Required<T>]: FieldSchema<any>\n}\n\nexport interface FieldMetadata {\n required: boolean;\n}","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import { ArrayTypeAnnotations, BooleanTypeAnnotations, ConstraintAnnotations, DateTypeAnnotations, FileTypeAnnotations, NumberTypeAnnotations, ObjectTypeAnnotations, StringTypeAnnotations } from './type-annotations';\n\nexport enum FieldSchemaType {\n string = 'string',\n boolean = 'boolean',\n date = 'date',\n object = 'object',\n number = 'number',\n array = 'array',\n file = 'file',\n}\n\nexport interface FieldSchema<T extends ConstraintAnnotations> {\n name: string;\n type: FieldSchemaType;\n label?: string;\n constraints: T;\n}\n\nexport interface StringSchema extends FieldSchema<StringTypeAnnotations> {\n type: FieldSchemaType.string;\n}\n\nexport interface NumberSchema extends FieldSchema<NumberTypeAnnotations> {\n type: FieldSchemaType.number;\n}\n\nexport interface BooleanSchema extends FieldSchema<BooleanTypeAnnotations> {\n type: FieldSchemaType.boolean;\n}\n\nexport interface DateSchema extends FieldSchema<DateTypeAnnotations> {\n type: FieldSchemaType.date;\n}\n\nexport interface ArraySchema extends FieldSchema<ArrayTypeAnnotations> {\n type: FieldSchemaType.array;\n}\n\nexport interface FileSchema extends FieldSchema<FileTypeAnnotations> {\n type: FieldSchemaType.file;\n}\n\nexport interface ObjectSchema extends FieldSchema<ObjectTypeAnnotations> {\n type: FieldSchemaType.object;\n}\n\nexport const buildStringSchema = (path: string, constraints: StringTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.string,\n constraints: { ...constraints },\n } satisfies StringSchema;\n};\n\nexport const buildBooleanSchema = (path: string, constraints: BooleanTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.boolean,\n constraints: { ...constraints },\n } satisfies BooleanSchema;\n};\n\nexport const buildNumberSchema = (path: string, constraints: NumberTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.number,\n constraints: { ...constraints },\n } satisfies NumberSchema;\n};\n\nexport const buildDateSchema = (path: string, constraints: DateTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.date,\n constraints: { ...constraints },\n } satisfies DateSchema;\n};\n\nexport const buildArraySchema = (path: string, constraints: ArrayTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.array,\n constraints: { ...constraints },\n } satisfies ArraySchema;\n};\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelSchema } from './model-schema';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport * as Yup from 'yup';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T extends object>(model: T): ModelSchema<T> {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n const schemaData = [...metadata.values()];\n const schema = this.buildYupSchema(schemaData);\n return new ModelSchema(schemaData, schema);\n }\n\n buildUntyped(raw: FieldSchema<any>[]) : ModelSchema<{[key: string]: string}> {\n const schema = this.buildYupSchema(raw);\n return new ModelSchema(raw, schema);\n }\n\n private buildYupSchema(fields: FieldSchema<any>[]) : Yup.AnyObjectSchema {\n let shape: ObjectShape = {};\n fields.forEach((value) => {\n if (value.type == FieldSchemaType.string) {\n shape[value.name] = this.buildStringSchema(value as StringSchema);\n } else if (value.type == FieldSchemaType.boolean) {\n shape[value.name] = this.buildBooleanSchema(value as BooleanSchema);\n } else if (value.type == FieldSchemaType.date) {\n shape[value.name] = this.buildDateSchema(value as DateSchema);\n } else if (value.type == FieldSchemaType.object) {\n shape[value.name] = this.buildNestedObjectSchema(value as ObjectSchema);\n } else if (value.type == FieldSchemaType.number) {\n shape[value.name] = this.buildNumberSchema(value as NumberSchema);\n } else if (value.type == FieldSchemaType.array) {\n shape[value.name] = this.buildArraySchema(value as ArraySchema);\n } else if (value.type == FieldSchemaType.file) {\n shape[value.name] = this.buildFileSchema(value as FileSchema);\n } else {\n throw new Error('Unrecognized field schema');\n }\n });\n\n return object(shape);\n }\n\n private buildStringSchema(original: StringSchema) {\n let schema = Yup.string();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, { message: options.pattern.message, excludeEmptyString: true });\n }\n\n return schema;\n }\n\n private buildBooleanSchema(original: BooleanSchema) {\n let schema = Yup.boolean();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(original: DateSchema) {\n let schema = Yup.date();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n },\n });\n }\n\n return schema;\n }\n\n private buildNumberSchema(original: NumberSchema) {\n let schema = Yup.number();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n\n return schema;\n }\n\n private buildArraySchema(original: ArraySchema) {\n let schema = Yup.array();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n\n return schema;\n }\n\n private buildNestedObjectSchema(original: ObjectSchema) {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, original.constraints.getInstance());\n\n let nestedSchema = this.buildYupSchema([...metadata.values()]);\n if(original.label) {\n nestedSchema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n nestedSchema = nestedSchema.required();\n } else {\n nestedSchema = nestedSchema.notRequired().default(undefined);\n }\n\n return nestedSchema;\n }\n\n private buildFileSchema(original: FileSchema) {\n let schema = Yup.mixed().nullable().optional();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n schema = schema.required(options.required.message);\n }\n\n return schema;\n }\n}\n","import 'reflect-metadata';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport interface ConstraintAnnotations {\n\n}\n\nexport interface StringTypeConstraints {\n required?: true;\n requiredMessage?: string;\n\n pattern?: RegExp;\n patternMessage?: string;\n\n length?: number;\n lengthMessage?: string;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation<Date>;\n}\n\nexport interface ObjectTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n getInstance: () => any;\n}\n\nexport interface NumberTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface ArrayTypeAnnotations extends ConstraintAnnotations {\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface FileTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation<T> extends ValidationAnnotation {\n test: (d: T) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, schema: FieldSchema<any>) => {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, FieldSchema<any>>();\n metadata.set(propertyKey, schema);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.string,\n constraints: Object.assign({}, ...annotations) as StringTypeAnnotations\n } satisfies StringSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.boolean,\n constraints: Object.assign({}, ...annotations) as BooleanTypeAnnotations\n } satisfies BooleanSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function DateType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.date,\n constraints: Object.assign({}, ...annotations) as DateTypeAnnotations\n } satisfies DateSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function NumberType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.number,\n constraints: Object.assign({}, ...annotations) as NumberTypeAnnotations\n } satisfies NumberSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ObjectType<T>(type: { new (): T }, ...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.object,\n constraints: Object.assign({}, ...annotations, { getInstance: () => new type() } as Partial<ObjectTypeAnnotations>) as ObjectTypeAnnotations\n } satisfies ObjectSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ArrayType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.array,\n constraints: Object.assign({}, ...annotations) as ArrayTypeAnnotations\n } satisfies ArraySchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function FileType<T>(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.file,\n constraints: Object.assign({}, ...annotations) as FileTypeAnnotations\n } satisfies FileSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport function min<T>(value: T, message?: string): { [key: string]: MinimumAnnotation<T> } {\n return { min: { min: value, message: message } };\n}\n\nexport function max<T>(value: T, message?: string): { [key: string]: MaximumAnnotation<T> } {\n return { max: { max: value, message: message } };\n}\n\nexport function test<T>(name: string, test: (d: T) => boolean, message?: string): { [key: string]: TestAnnotation<T> } {\n return { test: { name: name, test: test, message: message } };\n}\n","import { AbstractControl, FormArray, FormGroup, NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelStateOptions } from './model-state-options';\nimport { ModelStateResult } from './model-state-result';\nimport { ModelSchema } from './model-schema';\n\nexport class NgFormModelState<T> {\n private changesSubject = new BehaviorSubject<ModelStateResult<T> | undefined>(undefined);\n public readonly changes = this.changesSubject.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelSchema<T>, private options?: ModelStateOptions) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n return from(this.validate());\n })\n )\n .subscribe();\n }\n\n getCurrent(): ModelStateResult<T> | undefined {\n return this.changesSubject.value;\n }\n\n setState(model: T, errors: FieldError[]) {\n const state = {\n model: model,\n errors: errors,\n valid: errors.length === 0,\n } as ModelStateResult<T>;\n this.setStateInternal(state);\n }\n\n setErrors(errors: FieldError[]) {\n //this.errors.next(errors);\n throw new Error('needs implementation');\n }\n\n appendErrors(errors: FieldError[], skipEmit?: boolean) {\n const allErrors = [...(this.changesSubject.value?.errors || []), ...errors];\n const state = { ...this.changesSubject.value } as ModelStateResult<T>;\n state.errors = allErrors;\n this.setStateInternal(state);\n }\n\n async validate(): Promise<ModelStateResult<T>> {\n const model = this.form.value;\n const state = await this.runValidations(model, this.options?.onValidate);\n this.setStateInternal(state);\n return state;\n }\n\n\n private setStateInternal(state: ModelStateResult<T>) {\n this.deleteFormErrors();\n\n const grouped = state.errors.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n grouped.forEach((value, path) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n\n const control = this.form.form.get(path);\n if (!control) {\n // TODO: use actual logging service\n } else {\n control.setErrors(validationErrors);\n }\n });\n\n this.changesSubject.next(state);\n }\n\n private deleteFormErrors() {\n this.deleteErrors(this.form.form);\n }\n\n private deleteErrors(rootFormGroup: FormGroup) {\n Object.keys(rootFormGroup.controls).forEach((key) => {\n const control = rootFormGroup.controls[key];\n\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(key, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private deleteErrorsFromControl(key: string | number, control: AbstractControl) {\n control.setErrors(null);\n }\n\n private isParentControl(control: AbstractControl) {\n return control instanceof FormGroup || control instanceof FormArray;\n }\n\n private loopFormArray(formArray: FormArray) {\n formArray.controls.forEach((control, index) => {\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(index, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private async runValidations<T>(model: T, callback?: (list: FieldError[]) => Promise<FieldError[]>): Promise<ModelStateResult<T>> {\n const list = await this.modelValidator.validate(model);\n const final = callback ? (await callback?.(list)) : list;\n return {\n valid: final.length === 0,\n errors: final,\n model: model,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelStateOptions } from './model-state-options';\nimport { NgFormModelState } from './ngform-model-state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T extends object>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), options);\n return modelState;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n standalone: false\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","@if (errorMessage) {\n <div class=\"field-error\">{{ errorMessage }}</div>\n}\n","import { format, isValid, parse } from 'date-fns';\nimport * as IMask from 'imask';\n\nexport const phoneNumberOptions = {\n mask: '(000) 000-0000',\n};\n\nexport const ssnOptions = {\n mask: '000-00-0000',\n};\n\nexport const currencyOptions = {\n mask: Number,\n scale: 2,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\nexport const integerOptions = {\n mask: Number,\n scale: 0,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\n","import { formatDate } from '@angular/common';\nimport { Directive, ElementRef, Renderer2, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[mzDateInput]',\n standalone: true,\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateValueAccessor),\n multi: true,\n },\n ],\n})\nexport class DateValueAccessor implements ControlValueAccessor {\n onChange = (_: any) => {};\n onTouched = () => {};\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}\n\n writeValue(obj?: Date): void {\n let normalizedValue = '';\n if (!obj) {\n normalizedValue = '';\n } else if (this._elementRef.nativeElement.type === 'date') {\n normalizedValue = obj.toISOString().split('T')[0];\n } else {\n normalizedValue = obj.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' }); // TODO: support other date formats\n }\n this.setProperty('value', normalizedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = (value) => {\n const parsed = this.parseDate(value);\n fn(parsed);\n };\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n protected setProperty(key: string, value: any): void {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n\n private parseDate(value: string): Date | undefined {\n const validFormat = this._elementRef.nativeElement.type === 'date' ? /^(\\d{4}-\\d{2}-\\d{2})$/.test(value) : /^(\\d{1,2}\\/\\d{1,2}\\/\\d{4})$/.test(value);\n if (!validFormat) {\n return undefined;\n }\n\n const entry = new Date(value).toISOString().split('T')[0];\n\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = entry.split('-').map((val: string) => +val);\n return this.createDate(y, m - 1, d);\n }\n\n private createDate(year: number, month: number, date: number): Date {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n\n return newDate;\n }\n}\n","import { Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type FieldOption = {\n label: string;\n value: any;\n};\n\n@Component({\n selector: 'mz-checkbox-group',\n imports: [FormsModule],\n templateUrl: './checkbox-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MzCheckboxGroup),\n multi: true,\n },\n ]\n})\nexport class MzCheckboxGroup implements ControlValueAccessor {\n @Input({ required: true }) options!: FieldOption[];\n @Input({ required: false }) disabled = false;\n\n selections: any[] = [];\n\n onChange: (value: string[]) => void = () => {};\n onTouched: () => void = () => {};\n\n // Writes the selected values from the form model\n writeValue(values: any[]): void {\n this.selections = values || [];\n }\n\n // Registers the onChange function to propagate changes\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // Registers the onTouched function\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Checks if a checkbox is selected\n isChecked(option: FieldOption): boolean {\n return this.selections.includes(option.value);\n }\n\n // Handles changes when checkboxes are clicked\n onCheckboxChange(event: Event, option: FieldOption): void {\n const checked = (event.target as HTMLInputElement).checked;\n\n if (checked) {\n this.selections = [...this.selections, option.value];\n } else {\n this.selections = this.selections.filter((val) => val !== option.value);\n }\n\n this.onChange(this.selections);\n this.onTouched();\n }\n}\n","@for(option of options; track $index) {\n <label class=\"field-option\">\n <input type=\"checkbox\" class=\"form-checkbox\" [disabled]=\"disabled\" [value]=\"option.value\" [checked]=\"isChecked(option)\" (change)=\"onCheckboxChange($event, option)\" />\n <span class=\"checkbox-label\">{{option.label}}</span>\n </label>\n}\n","import { AfterContentInit, Component, ContentChild, ElementRef, Input, Optional, SkipSelf } from '@angular/core';\nimport { ControlContainer, NgForm, NgModel, NgModelGroup } from '@angular/forms';\nimport { FieldSchema } from '../field-schema';\nimport { FieldMetadata } from '../model-schema';\n\nfunction getControlContainer(\n group: NgModelGroup | null,\n form: NgForm | null\n ): ControlContainer {\n console.log('getControlContainer', group, form);\n return group ?? form!;\n }\n\n@Component({\n selector: 'mz-field',\n imports: [],\n templateUrl: './field.component.html',\n providers: [\n {\n provide: ControlContainer,\n useFactory: getControlContainer,\n deps: [[new Optional(), new SkipSelf(), NgModelGroup], [new Optional(), new SkipSelf(), NgForm]]\n }\n ]\n})\nexport class MzField implements AfterContentInit {\n @Input() label?: string;\n @Input() controlType: 'checkbox' | 'checkboxgroup' | 'other' = 'other';\n @Input() schema?: FieldSchema<any>;\n @ContentChild(NgModel) ngModel?: NgModel;\n\n fieldMetadata?: FieldMetadata;\n constructor(private elementRef: ElementRef) {\n }\n\n ngAfterContentInit(): void {\n //this.fieldMetadata = this.form.schema.getMetadata(this.ngModel?.path || []);\n }\n\n getErrorMessage(): string | undefined {\n try {\n const list = Object.values(this.ngModel!.errors!);\n return list[0];\n } catch {\n return undefined;\n }\n }\n}\n","<label class=\"field\">\n @if(label && controlType !== 'checkbox') {\n <span class=\"field-label\">\n {{ label }} \n </span>\n }\n <ng-content></ng-content>\n\n @if(controlType === 'checkbox' && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n","import { AfterViewInit, Directive, HostListener, Input, OnInit } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchema } from '../model-schema';\nimport { NgFormModelState } from '../ngform-model-state';\n\n@Directive({\n selector: '[mzForm]',\n standalone: true,\n})\nexport class MzForm implements AfterViewInit {\n @Input({ required: true }) schema!: ModelSchema<unknown>;\n\n private modelState!: NgFormModelState<unknown>;\n\n constructor(private ngForm: NgForm) {\n\n }\n \n ngAfterViewInit(): void {\n this.modelState = new NgFormModelState(this.ngForm, this.schema);\n }\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event) {\n this.ngForm.form.markAllAsTouched();\n if(this.ngForm.invalid) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\nimport { MzField } from './field/field.component';\nimport { MzForm } from './form/form.directive';\nimport { DateValueAccessor } from './date-value-accessor.directive';\nimport { MzCheckboxGroup } from './checkbox-group/checkbox-group.component';\n\n\n/**\n * @deprecated\n */\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n\n\n@NgModule({\n providers: [],\n exports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ],\n imports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ]\n})\nexport class MzFormsModule { }\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-state-result';\nexport * from './lib/model-schema.factory';\nexport { ModelSchema, SchemaDefinition } from './lib/model-schema';\nexport * from './lib/type-annotations';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/ngform-model-state';\nexport * from './lib/field-errors/field-errors.component';\nexport * from './lib/masks';\n\nexport { DateValueAccessor } from './lib/date-value-accessor.directive';\nexport { FieldSchema, FieldSchemaType, StringSchema, NumberSchema, DateSchema, BooleanSchema, FileSchema, ObjectSchema, buildStringSchema, buildNumberSchema, buildDateSchema, buildBooleanSchema, buildArraySchema } from './lib/field-schema';\nexport { MzCheckboxGroup, FieldOption } from './lib/checkbox-group/checkbox-group.component';\n\nexport { FormsModule, MzFormsModule } from './lib/forms.module';\nexport { MzForm } from './lib/form/form.directive';\nexport { MzField } from './lib/field/field.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory","FormsModule"],"mappings":";;;;;;;;;;MAGa,WAAW,CAAA;;;IAGpB,WAAA,CAAoB,QAA4B,EAAU,MAAuB,EAAA;QAA7D,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAA8B,IAAA,CAAA,MAAM,GAAN,MAAM;IAEhE;AAEA,IAAA,WAAW,CAAC,KAAe,EAAA;;;AAGvB,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAE,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,YAAA,IAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC9E,gBAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAA0B;YACtD;QACJ;AACA,QAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA0B;IAErD;AAEA,IAAA,QAAQ,CAAI,KAAQ,EAAA;QAChB,OAAO,IAAI,CAAC;aACP,QAAQ,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;aACrC,IAAI,CAAC,MAAK;AACP,YAAA,OAAO,EAAE;AACb,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,CAAkB,KAAI;AAC1B,YAAA,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,MAAiB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA,CAAC;AAC7G,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,IAAI,CAAC,KAAU,EAAA;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AACH;;ACrCM,MAAM,yBAAyB,GAAG,iCAAiC;;ICE9D;AAAZ,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EARW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;AA6CpB,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,WAAkC,EAAE,KAAc,KAAI;IAClG,OAAO;AACH,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,eAAe,CAAC,MAAM;AAC5B,QAAA,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE;KACX;AAC5B;AAEO,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,WAAmC,EAAE,KAAc,KAAI;IACpG,OAAO;AACH,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,eAAe,CAAC,OAAO;AAC7B,QAAA,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE;KACV;AAC7B;AAEO,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,WAAkC,EAAE,KAAc,KAAI;IAClG,OAAO;AACH,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,eAAe,CAAC,MAAM;AAC5B,QAAA,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE;KACX;AAC5B;AAEO,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,WAAgC,EAAE,KAAc,KAAI;IAC9F,OAAO;AACH,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,eAAe,CAAC,IAAI;AAC1B,QAAA,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE;KACb;AAC1B;AAEO,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,WAAiC,EAAE,KAAc,KAAI;IAChG,OAAO;AACH,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,eAAe,CAAC,KAAK;AAC3B,QAAA,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE;KACZ;AAC3B;;AClFA;;;;;;;;;;AAUE;MAKW,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,KAAK,CAAmB,KAAQ,EAAA;QAC9B,MAAM,QAAQ,GAAkC,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,KAAK,CAAC;QACrG,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAC9C,QAAA,OAAO,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5C;AAEA,IAAA,YAAY,CAAC,GAAuB,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACvC,QAAA,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;IACrC;AAEQ,IAAA,cAAc,CAAC,MAA0B,EAAA;QAC/C,IAAI,KAAK,GAAgB,EAAE;AAC3B,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACvB,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;AACxC,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAqB,CAAC;YACnE;iBAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,EAAE;AAChD,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAsB,CAAC;YACrE;iBAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE;AAC7C,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAmB,CAAC;YAC/D;iBAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;AAC/C,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAqB,CAAC;YACzE;iBAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;AAC/C,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAqB,CAAC;YACnE;iBAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE;AAC9C,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAoB,CAAC;YACjE;iBAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE;AAC7C,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAmB,CAAC;YAC/D;iBAAO;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;YAC9C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;AAEQ,IAAA,iBAAiB,CAAC,QAAsB,EAAA;AAC9C,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AACzB,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AAEpC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpD;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACvE;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7E;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7E;AAEA,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAClH;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,kBAAkB,CAAC,QAAuB,EAAA;AAChD,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AACpC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpD;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;gBACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAChD;iBAAO;gBACL,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YACjD;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,eAAe,CAAC,QAAoB,EAAA;AAC1C,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE;AACvB,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AACpC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpD;AACA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D;AACA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D;AACA,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,YAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;AACvB,gBAAA,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;AAC7B,gBAAA,IAAI,EAAE,CAAC,CAAQ,EAAE,OAAa,KAAI;oBAChC,OAAO,OAAO,CAAC,IAAK,CAAC,IAAI,CAAC,CAAE,CAAC;gBAC/B,CAAC;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,iBAAiB,CAAC,QAAsB,EAAA;AAC9C,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AACzB,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AACpC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpD;AACA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D;AACA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,gBAAgB,CAAC,QAAqB,EAAA;AAC5C,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE;AACxB,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AAEpC,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D;AACA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,uBAAuB,CAAC,QAAsB,EAAA;AACpD,QAAA,MAAM,QAAQ,GAAkC,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAElI,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9D,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AACpC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AACpB,YAAA,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE;QACxC;aAAO;YACL,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9D;AAEA,QAAA,OAAO,YAAY;IACrB;AAEQ,IAAA,eAAe,CAAC,QAAoB,EAAA;AAC1C,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AAC9C,QAAA,IAAG,QAAQ,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW;AACpC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpD;AAEA,QAAA,OAAO,MAAM;IACf;8GA5LW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,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,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACnBD,MAAM,YAAY,GAAG,iCAAiC;AAsGtD,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,WAAmB,EAAE,MAAwB,KAAI;AACzF,IAAA,MAAM,QAAQ,GAAkC,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,EAA4B;AAChI,IAAA,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC;AACxD,CAAC;AAEK,SAAU,UAAU,CAAC,GAAG,WAAsD,EAAA;IAClF,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW;SACvB;AAExB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;AAEM,SAAU,WAAW,CAAC,GAAG,WAAsD,EAAA;IACnF,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,OAAO;YAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW;SACtB;AAEzB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;AAEM,SAAU,QAAQ,CAAC,GAAG,WAAsD,EAAA;IAChF,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW;SACzB;AAEtB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;AAEM,SAAU,UAAU,CAAC,GAAG,WAAsD,EAAA;IAClF,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW;SACvB;AAExB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;SAEgB,UAAU,CAAI,IAAmB,EAAE,GAAG,WAAsD,EAAA;IAC1G,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAElD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,IAAI,IAAI,EAAE,EAAoC;SAC5F;AAExB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;AAEM,SAAU,SAAS,CAAC,GAAG,WAAsD,EAAA;IACjF,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,KAAK;YAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW;SACxB;AAEvB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;AAEM,SAAU,QAAQ,CAAI,GAAG,WAAsD,EAAA;IACnF,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,WAAW;SACzB;AAEtB,QAAA,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/C,IAAA,CAAC;AACH;AAEM,SAAU,QAAQ,CAAC,OAAgB,EAAA;AACvC,IAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAC3D;AAEM,SAAU,OAAO,CAAC,KAAa,EAAE,OAAgB,EAAA;AACrD,IAAA,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAC1D;AAEM,SAAU,MAAM,CAAC,MAAc,EAAE,OAAgB,EAAA;AACrD,IAAA,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AACzD;AAEM,SAAU,SAAS,CAAC,SAAiB,EAAE,OAAgB,EAAA;AAC3D,IAAA,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAClE;AAEM,SAAU,SAAS,CAAC,SAAiB,EAAE,OAAgB,EAAA;AAC3D,IAAA,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAClE;AAEM,SAAU,QAAQ,CAAC,MAAU,EAAE,OAAgB,EAAA;AACnD,IAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAC3D;AAEM,SAAU,MAAM,CAAI,KAAQ,EAAE,OAAgB,EAAA;AAClD,IAAA,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AACxD;AAEM,SAAU,GAAG,CAAI,KAAQ,EAAE,OAAgB,EAAA;AAC/C,IAAA,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAClD;AAEM,SAAU,GAAG,CAAI,KAAQ,EAAE,OAAgB,EAAA;AAC/C,IAAA,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAClD;SAEgB,IAAI,CAAI,IAAY,EAAE,IAAuB,EAAE,OAAgB,EAAA;AAC7E,IAAA,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAC/D;;MCnOa,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAoB,IAAY,EAAU,cAA8B,EAAU,OAA2B,EAAA;QAAzF,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAkB,IAAA,CAAA,cAAc,GAAd,cAAc;QAA0B,IAAA,CAAA,OAAO,GAAP,OAAO;AAHjF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAkC,SAAS,CAAC;AACxE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAG1D,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACZ,aAAA,IAAI,CACH,SAAS,CAAC,OAAO,CAAC,KAAI;AACpB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,EAAE;IAChB;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK;IAClC;IAEA,QAAQ,CAAC,KAAQ,EAAE,MAAoB,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;SACJ;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,SAAS,CAAC,MAAoB,EAAA;;AAE5B,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;IACzC;IAEA,YAAY,CAAC,MAAoB,EAAE,QAAkB,EAAA;AACnD,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;QAC3E,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAyB;AACrE,QAAA,KAAK,CAAC,MAAM,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AAC7B,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC5B,QAAA,OAAO,KAAK;IACd;AAGQ,IAAA,gBAAgB,CAAC,KAA0B,EAAA;QACjD,IAAI,CAAC,gBAAgB,EAAE;QAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,EAAwB,CAAC;QAC9I,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;YAC9B,IAAI,gBAAgB,GAAqB,EAAE;YAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;AAE5D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE;;YAEd;iBAAO;AACL,gBAAA,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC;YACrC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;AAEQ,IAAA,YAAY,CAAC,aAAwB,EAAA;AAC3C,QAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAClD,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC;YAC5C;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAoB,CAAC;YACzC;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAoB,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,uBAAuB,CAAC,GAAoB,EAAE,OAAwB,EAAA;AAC5E,QAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;IACzB;AAEQ,IAAA,eAAe,CAAC,OAAwB,EAAA;AAC9C,QAAA,OAAO,OAAO,YAAY,SAAS,IAAI,OAAO,YAAY,SAAS;IACrE;AAEQ,IAAA,aAAa,CAAC,SAAoB,EAAA;QACxC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;YAC5C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC;YAC9C;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAoB,CAAC;YACzC;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAoB,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,cAAc,CAAI,KAAQ,EAAE,QAAwD,EAAA;QAChG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtD,QAAA,MAAM,KAAK,GAAI,QAAQ,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI;QACzD,OAAO;AACL,YAAA,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,KAAK,EAAE,KAAK;SACb;IACH;AACD;;MC/GY,uBAAuB,CAAA;AAClC,IAAA,WAAA,CAAoB,OAA2B,EAAA;QAA3B,IAAA,CAAA,OAAO,GAAP,OAAO;IAAuB;AAElD,IAAA,MAAM,CAAmB,IAAY,EAAE,KAAQ,EAAE,OAA2B,EAAA;AAC1E,QAAA,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAI,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;AACpF,QAAA,OAAO,UAAU;IACnB;8GANW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,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,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,oBAAoB,CAAA;AAG/B,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAA2B,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;IAC3F;8GANW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wGCTjC,kFAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,kFAAA,EAAA;8BAGV,KAAK,EAAA,CAAA;sBAAb;;;AEPI,MAAM,kBAAkB,GAAG;AAChC,IAAA,IAAI,EAAE,gBAAgB;;AAGjB,MAAM,UAAU,GAAG;AACxB,IAAA,IAAI,EAAE,aAAa;;AAGd,MAAM,eAAe,GAAG;AAC7B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,kBAAkB,EAAE,GAAG;AACvB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,CAAC,GAAG,CAAC;;AAGZ,MAAM,cAAc,GAAG;AAC5B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,kBAAkB,EAAE,GAAG;AACvB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,CAAC,GAAG,CAAC;;;MCVN,iBAAiB,CAAA;IAI5B,WAAA,CAAoB,SAAoB,EAAU,WAAuB,EAAA;QAArD,IAAA,CAAA,SAAS,GAAT,SAAS;QAAqB,IAAA,CAAA,WAAW,GAAX,WAAW;AAH7D,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;IAEwD;AAE5E,IAAA,UAAU,CAAC,GAAU,EAAA;QACnB,IAAI,eAAe,GAAG,EAAE;QACxB,IAAI,CAAC,GAAG,EAAE;YACR,eAAe,GAAG,EAAE;QACtB;aAAO,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE;AACzD,YAAA,eAAe,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD;aAAO;YACL,eAAe,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3G;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;IAC5C;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAI;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACpC,EAAE,CAAC,MAAM,CAAC;AACZ,QAAA,CAAC;IACH;AACA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C;IACU,WAAW,CAAC,GAAW,EAAE,KAAU,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC;IACxE;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;QACpJ,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzD;;;;;;AAM4D;AAC5D,QAAA,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,KAAK,CAAC,GAAG,CAAC;AACrE,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;;;;;AAK1D,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;;;;;;QAQ3B,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;;;;QAItC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEzB,QAAA,OAAO,OAAO;IAChB;8GAzEW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EARjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,QAAQ,EAAE,aAAa,EAAE;AAC7E,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCKY,eAAe,CAAA;AAZ5B,IAAA,WAAA,GAAA;QAcgC,IAAA,CAAA,QAAQ,GAAG,KAAK;QAE5C,IAAA,CAAA,UAAU,GAAU,EAAE;AAEtB,QAAA,IAAA,CAAA,QAAQ,GAA8B,MAAK,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAsCnC,IAAA;;AAnCG,IAAA,UAAU,CAAC,MAAa,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,EAAE;IAClC;;AAGA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;;AAGA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AACA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC9B;;AAGA,IAAA,SAAS,CAAC,MAAmB,EAAA;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IACjD;;IAGA,gBAAgB,CAAC,KAAY,EAAE,MAAmB,EAAA;AAC9C,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;QAE1D,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC;QACxD;aAAO;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC;QAC3E;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE;IACpB;8GA5CS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EARb;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBL,4VAMA,2CDIcC,aAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAUZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EACpB,CAACA,aAAW,CAAC,EAAA,SAAA,EAEX;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,4VAAA,EAAA;8BAG0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACG,QAAQ,EAAA,CAAA;sBAAnC,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;;;AEjB9B,SAAS,mBAAmB,CACxB,KAA0B,EAC1B,IAAmB,EAAA;IAEnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC;IAC/C,OAAO,KAAK,IAAI,IAAK;AACvB;MAcW,OAAO,CAAA;AAOhB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QALrB,IAAA,CAAA,WAAW,GAA2C,OAAO;IAMtE;IAEA,kBAAkB,GAAA;;IAElB;IAEA,eAAe,GAAA;AACX,QAAA,IAAI;AACA,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAQ,CAAC,MAAO,CAAC;AACjD,YAAA,OAAO,IAAI,CAAC,CAAC,CAAC;QAClB;AAAE,QAAA,MAAM;AACJ,YAAA,OAAO,SAAS;QACpB;IACJ;8GArBS,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EARL;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,UAAU,EAAE,mBAAmB;gBAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,MAAM,CAAC;AAClG;SACJ,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMa,OAAO,gDC7BzB,mcAiBA,EAAA,CAAA,CAAA;;2FDQa,OAAO,EAAA,UAAA,EAAA,CAAA;kBAZnB,SAAS;+BACI,UAAU,EAAA,OAAA,EACX,EAAE,EAAA,SAAA,EAEA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,UAAU,EAAE,mBAAmB;4BAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,MAAM,CAAC;AAClG;AACJ,qBAAA,EAAA,QAAA,EAAA,mcAAA,EAAA;+EAGQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACsB,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO;;;MEpBZ,MAAM,CAAA;AAKf,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAE1B;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpE;AAGA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,IAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QACpC;IACJ;8GApBS,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAN,MAAM,EAAA,UAAA,EAAA,CAAA;kBAJlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;2EAE8B,MAAM,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAazB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;ACbtC;;AAEG;MAaU,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,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,WAAW,EAAA,YAAA,EAAA,CATpB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAMpB,YAAY;qBAHZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;+GAMX,WAAW,EAAA,OAAA,EAAA,CAHpB,YAAY;;;2FAGH,WAAW,EAAA,UAAA,EAAA,CAAA;kBAZvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,YAAY;AACb;AACF,iBAAA;;MAmBY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,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,aAAa,YANtB,OAAO;YACP,MAAM;YACN,iBAAiB;AACjB,YAAA,eAAe,aATf,OAAO;YACP,MAAM;YACN,iBAAiB;YACjB,eAAe,CAAA,EAAA,CAAA,CAAA;AASN,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,aAAa,YAHtB,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAGN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,OAAO,EAAE;wBACP,OAAO;wBACP,MAAM;wBACN,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,OAAO;wBACP,MAAM;wBACN,iBAAiB;wBACjB;AACD;AACF,iBAAA;;;ACzCD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-schema.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/field-schema.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/ngform-model-state.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/lib/form-message.service.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/masks.ts","../../../../projects/muziehdesign/forms/src/lib/date-value-accessor.directive.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.html","../../../../projects/muziehdesign/forms/src/lib/field/field.component.ts","../../../../projects/muziehdesign/forms/src/lib/field/field.component.html","../../../../projects/muziehdesign/forms/src/lib/form/form.directive.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/yup-locales.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { AnyObjectSchema, SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\nimport { FieldSchema } from './field-schema';\nexport class ModelSchema<T> {\n // TODO: need to keep track of internal and external\n //private definitions?: {[K in keyof T]: FieldSchema<any>};\n constructor(private metadata: FieldSchema<any>[], private schema: AnyObjectSchema, public readonly name?: string) {\n\n }\n\n getMetadata(paths: string[]) {\n //console.log('fetching metadata for path: ', paths);\n //console.log(this.schema.describe());\n for(var i = 0; i < paths.length; i++) {\n const field = this.metadata.find(f=>f.name === paths[i]);\n if(!field?.constraints.required || field.constraints.required.required === false) {\n return { required: false } satisfies FieldMetadata;\n }\n }\n return { required: true } satisfies FieldMetadata;\n\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n\n cast(value: any) {\n return this.schema.cast(value);\n }\n}\n\nexport type SchemaDefinition<T> = {\n //[K in keyof Required<T>]: T[K] extends object ? SchemaDefinition<T[K]>: FieldSchema<any>;\n [K in keyof Required<T>]: FieldSchema<any>\n}\n\nexport interface FieldMetadata {\n required: boolean;\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import { ArrayTypeAnnotations, BooleanTypeAnnotations, ConstraintAnnotations, DateTypeAnnotations, FileTypeAnnotations, NumberTypeAnnotations, ObjectTypeAnnotations, StringTypeAnnotations } from './type-annotations';\n\nexport enum FieldSchemaType {\n string = 'string',\n boolean = 'boolean',\n date = 'date',\n object = 'object',\n number = 'number',\n array = 'array',\n file = 'file',\n}\n\nexport interface FieldSchema<T extends ConstraintAnnotations> {\n name: string;\n type: FieldSchemaType;\n label?: string;\n constraints: T;\n}\n\nexport interface StringSchema extends FieldSchema<StringTypeAnnotations> {\n type: FieldSchemaType.string;\n}\n\nexport interface NumberSchema extends FieldSchema<NumberTypeAnnotations> {\n type: FieldSchemaType.number;\n}\n\nexport interface BooleanSchema extends FieldSchema<BooleanTypeAnnotations> {\n type: FieldSchemaType.boolean;\n}\n\nexport interface DateSchema extends FieldSchema<DateTypeAnnotations> {\n type: FieldSchemaType.date;\n}\n\nexport interface ArraySchema extends FieldSchema<ArrayTypeAnnotations> {\n type: FieldSchemaType.array;\n}\n\nexport interface FileSchema extends FieldSchema<FileTypeAnnotations> {\n type: FieldSchemaType.file;\n}\n\nexport interface ObjectSchema extends FieldSchema<ObjectTypeAnnotations> {\n type: FieldSchemaType.object;\n}\n\nexport const buildStringSchema = (path: string, constraints: StringTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.string,\n constraints: { ...constraints },\n } satisfies StringSchema;\n};\n\nexport const buildBooleanSchema = (path: string, constraints: BooleanTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.boolean,\n constraints: { ...constraints },\n } satisfies BooleanSchema;\n};\n\nexport const buildNumberSchema = (path: string, constraints: NumberTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.number,\n constraints: { ...constraints },\n } satisfies NumberSchema;\n};\n\nexport const buildDateSchema = (path: string, constraints: DateTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.date,\n constraints: { ...constraints },\n } satisfies DateSchema;\n};\n\nexport const buildArraySchema = (path: string, constraints: ArrayTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.array,\n constraints: { ...constraints },\n } satisfies ArraySchema;\n};\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelSchema } from './model-schema';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport * as Yup from 'yup';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\nimport { ModelMetadata } from './type-annotations';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T extends object>(model: T): ModelSchema<T> {\n const metadata: ModelMetadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n const schemaData = [...metadata.schemas.values()];\n const schema = this.buildYupSchema(schemaData);\n return new ModelSchema(schemaData, schema, metadata.name);\n }\n\n buildUntyped(raw: FieldSchema<any>[]) : ModelSchema<{[key: string]: string}> {\n const schema = this.buildYupSchema(raw);\n return new ModelSchema(raw, schema);\n }\n\n private buildYupSchema(fields: FieldSchema<any>[]) : Yup.AnyObjectSchema {\n let shape: ObjectShape = {};\n fields.forEach((value) => {\n if (value.type == FieldSchemaType.string) {\n shape[value.name] = this.buildStringSchema(value as StringSchema);\n } else if (value.type == FieldSchemaType.boolean) {\n shape[value.name] = this.buildBooleanSchema(value as BooleanSchema);\n } else if (value.type == FieldSchemaType.date) {\n shape[value.name] = this.buildDateSchema(value as DateSchema);\n } else if (value.type == FieldSchemaType.object) {\n shape[value.name] = this.buildNestedObjectSchema(value as ObjectSchema);\n } else if (value.type == FieldSchemaType.number) {\n shape[value.name] = this.buildNumberSchema(value as NumberSchema);\n } else if (value.type == FieldSchemaType.array) {\n shape[value.name] = this.buildArraySchema(value as ArraySchema);\n } else if (value.type == FieldSchemaType.file) {\n shape[value.name] = this.buildFileSchema(value as FileSchema);\n } else {\n throw new Error('Unrecognized field schema');\n }\n });\n\n return object(shape);\n }\n\n private buildStringSchema(original: StringSchema) {\n let schema = Yup.string();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints;\n\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, { message: options.pattern.message, excludeEmptyString: true });\n }\n\n return schema;\n }\n\n private buildBooleanSchema(original: BooleanSchema) {\n let schema = Yup.boolean();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints;\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(original: DateSchema) {\n let schema = Yup.date();\n if(original.label) {\n schema.label(original.label);\n }\n\n schema = schema.transform(function(value, originalValue) {\n if(originalValue === '') {\n return undefined;\n }\n\n return value;\n });\n\n const options = original.constraints;\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test(options.test.name, function(v, context){\n if(v && options.test?.test(v) !== true) {\n return context.createError({\n message: options.test?.message,\n path: context.path,\n params: {\n key: options.test?.name\n }\n });\n }\n return true;\n });\n }\n\n return schema;\n }\n\n private buildNumberSchema(original: NumberSchema) {\n let schema = Yup.number();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints;\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n\n return schema;\n }\n\n private buildArraySchema(original: ArraySchema) {\n let schema = Yup.array();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints;\n\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n\n return schema;\n }\n\n private buildNestedObjectSchema(original: ObjectSchema) {\n const metadata: ModelMetadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, original.constraints.getInstance());\n\n let nestedSchema = this.buildYupSchema([...metadata.schemas.values()]);\n if(original.label) {\n nestedSchema.label(original.label);\n }\n\n const options = original.constraints;\n if (options.required) {\n nestedSchema = nestedSchema.required();\n } else {\n nestedSchema = nestedSchema.notRequired().default(undefined);\n }\n\n return nestedSchema;\n }\n\n private buildFileSchema(original: FileSchema) {\n let schema = Yup.mixed().nullable().optional();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints;\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n\n return schema;\n }\n}\n","import 'reflect-metadata';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport interface ConstraintAnnotations {}\n\nexport interface StringTypeConstraints {\n required?: true;\n requiredMessage?: string;\n\n pattern?: RegExp;\n patternMessage?: string;\n\n length?: number;\n lengthMessage?: string;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation<Date>;\n}\n\nexport interface ObjectTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n getInstance: () => any;\n}\n\nexport interface NumberTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface ArrayTypeAnnotations extends ConstraintAnnotations {\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface FileTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation<T> extends ValidationAnnotation {\n test: (d: T) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nexport interface ModelMetadata {\n name?: string;\n schemas: Map<string, FieldSchema<any>>;\n}\n\nconst registerPropertyMetadata = (target: Object, propertyKey: string, schema: FieldSchema<any>) => {\n const metadata: ModelMetadata = Reflect.getMetadata(METADATA_KEY, target) || ({ schemas: new Map<string, FieldSchema<any>>() } satisfies ModelMetadata);\n metadata.schemas.set(propertyKey, schema);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nconst registerMetadata = (target: Object, name: string) => {\n const metadata: ModelMetadata = Reflect.getMetadata(METADATA_KEY, target) || ({ schemas: new Map<string, FieldSchema<any>>() } satisfies ModelMetadata);\n metadata.name = name;\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.string,\n constraints: Object.assign({}, ...annotations) as StringTypeAnnotations,\n } satisfies StringSchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.boolean,\n constraints: Object.assign({}, ...annotations) as BooleanTypeAnnotations,\n } satisfies BooleanSchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function DateType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.date,\n constraints: Object.assign({}, ...annotations) as DateTypeAnnotations,\n } satisfies DateSchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function NumberType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.number,\n constraints: Object.assign({}, ...annotations) as NumberTypeAnnotations,\n } satisfies NumberSchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ObjectType<T>(type: { new (): T }, ...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.object,\n constraints: Object.assign({}, ...annotations, { getInstance: () => new type() } as Partial<ObjectTypeAnnotations>) as ObjectTypeAnnotations,\n } satisfies ObjectSchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ArrayType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.array,\n constraints: Object.assign({}, ...annotations) as ArrayTypeAnnotations,\n } satisfies ArraySchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function FileType<T>(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.file,\n constraints: Object.assign({}, ...annotations) as FileTypeAnnotations,\n } satisfies FileSchema;\n\n registerPropertyMetadata(target, propertyKey, schema);\n };\n}\n\nexport function Model(name: string) {\n return function <T extends { new (...args: any[]): {} }>(constructor: T) {\n // Class decorators receive the constructor, but property decorators write to constructor.prototype\n // So we need to write to constructor.prototype to share the same metadata object\n registerMetadata(constructor.prototype, name);\n return constructor;\n }\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport function min<T>(value: T, message?: string): { [key: string]: MinimumAnnotation<T> } {\n return { min: { min: value, message: message } };\n}\n\nexport function max<T>(value: T, message?: string): { [key: string]: MaximumAnnotation<T> } {\n return { max: { max: value, message: message } };\n}\n\nexport function test<T>(name: string, test: (d: T) => boolean, message?: string): { [key: string]: TestAnnotation<T> } {\n return { test: { name: name, test: test, message: message } };\n}\n","import { AbstractControl, FormArray, FormGroup, NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelStateOptions } from './model-state-options';\nimport { ModelStateResult } from './model-state-result';\nimport { ModelSchema } from './model-schema';\n\nexport class NgFormModelState<T> {\n private changesSubject = new BehaviorSubject<ModelStateResult<T> | undefined>(undefined);\n public readonly changes = this.changesSubject.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelSchema<T>, private options?: ModelStateOptions) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n return from(this.validate());\n })\n )\n .subscribe();\n }\n\n getCurrent(): ModelStateResult<T> | undefined {\n return this.changesSubject.value;\n }\n\n setState(model: T, errors: FieldError[]) {\n const state = {\n model: model,\n errors: errors,\n valid: errors.length === 0,\n } as ModelStateResult<T>;\n this.setStateInternal(state);\n }\n\n setErrors(errors: FieldError[]) {\n //this.errors.next(errors);\n throw new Error('needs implementation');\n }\n\n appendErrors(errors: FieldError[], skipEmit?: boolean) {\n const allErrors = [...(this.changesSubject.value?.errors || []), ...errors];\n const state = { ...this.changesSubject.value } as ModelStateResult<T>;\n state.errors = allErrors;\n this.setStateInternal(state);\n }\n\n async validate(): Promise<ModelStateResult<T>> {\n const model = this.form.value;\n const state = await this.runValidations(model, this.options?.onValidate);\n this.setStateInternal(state);\n return state;\n }\n\n\n private setStateInternal(state: ModelStateResult<T>) {\n this.deleteFormErrors();\n\n const grouped = state.errors.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n grouped.forEach((value, path) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n\n const control = this.form.form.get(path);\n if (!control) {\n // TODO: use actual logging service\n } else {\n control.setErrors(validationErrors);\n }\n });\n\n this.changesSubject.next(state);\n }\n\n private deleteFormErrors() {\n this.deleteErrors(this.form.form);\n }\n\n private deleteErrors(rootFormGroup: FormGroup) {\n Object.keys(rootFormGroup.controls).forEach((key) => {\n const control = rootFormGroup.controls[key];\n\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(key, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private deleteErrorsFromControl(key: string | number, control: AbstractControl) {\n control.setErrors(null);\n }\n\n private isParentControl(control: AbstractControl) {\n return control instanceof FormGroup || control instanceof FormArray;\n }\n\n private loopFormArray(formArray: FormArray) {\n formArray.controls.forEach((control, index) => {\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(index, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private async runValidations<T>(model: T, callback?: (list: FieldError[]) => Promise<FieldError[]>): Promise<ModelStateResult<T>> {\n const list = await this.modelValidator.validate(model);\n const final = callback ? (await callback?.(list)) : list;\n return {\n valid: final.length === 0,\n errors: final,\n model: model,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelStateOptions } from './model-state-options';\nimport { NgFormModelState } from './ngform-model-state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T extends object>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), options);\n return modelState;\n }\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormMessageService {\n private localeData: { [localeId: string]: any } = {};\n constructor(@Inject(LOCALE_ID) private localeId: string) {}\n\n getMessage(messageProps: string | { key: string; path?: string; message?: string; min?: number | Date; max?: number | Date; less?: number; more?: number, length?: number }, namespace?: string): string | undefined {\n if (typeof messageProps === 'string') {\n return messageProps;\n }\n\n try {\n const parts = messageProps.key.split('.');\n\n // get namespaced message\n if (namespace && namespace.length > 0 && messageProps.path && messageProps.path.length > 0) {\n const namespaced = this.getLocaleData([namespace, messageProps.path, ...parts]);\n if (namespaced !== undefined) {\n return namespaced;\n }\n }\n\n // get global message\n const message = this.getLocaleData(parts);\n if (!message) {\n return messageProps.key;\n }\n\n return this.formatMessage(message, messageProps);\n } catch {\n return messageProps.key;\n }\n }\n\n private formatMessage(message: string, params: { min?: number | Date; max?: number | Date; less?: number; more?: number; length?: number }): string {\n let formatted = message;\n\n // Format min parameter\n if (params.min !== undefined) {\n const formattedMin = params.min instanceof Date\n ? params.min.toLocaleDateString(this.localeId)\n : params.min.toString();\n formatted = formatted.replace('{min}', formattedMin);\n }\n\n // Format max parameter\n if (params.max !== undefined) {\n const formattedMax = params.max instanceof Date\n ? params.max.toLocaleDateString(this.localeId)\n : params.max.toString();\n formatted = formatted.replace('{max}', formattedMax);\n }\n\n // Format less parameter\n if (params.less !== undefined) {\n formatted = formatted.replace('{less}', params.less.toString());\n }\n\n // Format more parameter\n if (params.more !== undefined) {\n formatted = formatted.replace('{more}', params.more.toString());\n }\n\n // Format length parameter\n if (params.length !== undefined) {\n formatted = formatted.replace('{length}', params.length.toString());\n }\n\n return formatted;\n }\n\n registerLocaleMessages(data: any, localeId: string) {\n this.localeData[localeId] = data;\n }\n\n private getLocaleData(keyParts: string[]): string | undefined {\n const messages = this.localeData[this.localeId] || this.localeData['en'];\n return keyParts.reduce((obj, part) => {\n if (obj?.[part] === undefined) {\n return undefined;\n }\n return obj[part];\n }, messages);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n standalone: false\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","@if (errorMessage) {\n <div class=\"field-error\">{{ errorMessage }}</div>\n test test\n}\n","import { format, isValid, parse } from 'date-fns';\nimport * as IMask from 'imask';\n\nexport const phoneNumberOptions = {\n mask: '(000) 000-0000',\n};\n\nexport const ssnOptions = {\n mask: '000-00-0000',\n};\n\nexport const currencyOptions = {\n mask: Number,\n scale: 2,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\nexport const integerOptions = {\n mask: Number,\n scale: 0,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\n","import { formatDate } from '@angular/common';\nimport { Directive, ElementRef, Renderer2, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[mzDateInput]',\n standalone: true,\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateValueAccessor),\n multi: true,\n },\n ],\n})\nexport class DateValueAccessor implements ControlValueAccessor {\n onChange = (_: any) => {};\n onTouched = () => {};\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}\n\n writeValue(obj?: Date): void {\n let normalizedValue = '';\n if (!obj) {\n normalizedValue = '';\n } else if (this._elementRef.nativeElement.type === 'date') {\n normalizedValue = obj.toISOString().split('T')[0];\n } else {\n normalizedValue = obj.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' }); // TODO: support other date formats\n }\n this.setProperty('value', normalizedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = (value) => {\n const parsed = this.parseDate(value);\n fn(parsed);\n };\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n protected setProperty(key: string, value: any): void {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n\n private parseDate(value: string): Date | undefined {\n const validFormat = this._elementRef.nativeElement.type === 'date' ? /^(\\d{4}-\\d{2}-\\d{2})$/.test(value) : /^(\\d{1,2}\\/\\d{1,2}\\/\\d{4})$/.test(value);\n if (!validFormat) {\n return undefined;\n }\n\n const entry = new Date(value).toISOString().split('T')[0];\n\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = entry.split('-').map((val: string) => +val);\n return this.createDate(y, m - 1, d);\n }\n\n private createDate(year: number, month: number, date: number): Date {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n\n return newDate;\n }\n}\n","import { Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type FieldOption = {\n label: string;\n value: any;\n};\n\n@Component({\n selector: 'mz-checkbox-group',\n imports: [FormsModule],\n templateUrl: './checkbox-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MzCheckboxGroup),\n multi: true,\n },\n ]\n})\nexport class MzCheckboxGroup implements ControlValueAccessor {\n @Input({ required: true }) options!: FieldOption[];\n @Input({ required: false }) disabled = false;\n\n selections: any[] = [];\n\n onChange: (value: string[]) => void = () => {};\n onTouched: () => void = () => {};\n\n // Writes the selected values from the form model\n writeValue(values: any[]): void {\n this.selections = values || [];\n }\n\n // Registers the onChange function to propagate changes\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // Registers the onTouched function\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Checks if a checkbox is selected\n isChecked(option: FieldOption): boolean {\n return this.selections.includes(option.value);\n }\n\n // Handles changes when checkboxes are clicked\n onCheckboxChange(event: Event, option: FieldOption): void {\n const checked = (event.target as HTMLInputElement).checked;\n\n if (checked) {\n this.selections = [...this.selections, option.value];\n } else {\n this.selections = this.selections.filter((val) => val !== option.value);\n }\n\n this.onChange(this.selections);\n this.onTouched();\n }\n}\n","@for(option of options; track $index) {\n <label class=\"field-option\">\n <input type=\"checkbox\" class=\"form-checkbox\" [disabled]=\"disabled\" [value]=\"option.value\" [checked]=\"isChecked(option)\" (change)=\"onCheckboxChange($event, option)\" />\n <span class=\"checkbox-label\">{{option.label}}</span>\n </label>\n}\n","import { Component, ContentChild, Input, Optional, SkipSelf } from '@angular/core';\nimport { ControlContainer, NgForm, NgModel, NgModelGroup } from '@angular/forms';\nimport { FormMessageService } from '../form-message.service';\nimport { MzForm } from '../../public-api';\n\nfunction getControlContainer(group: NgModelGroup | null, form: NgForm | null): ControlContainer {\n return group ?? form!;\n}\n\n@Component({\n selector: 'mz-field',\n imports: [],\n templateUrl: './field.component.html',\n providers: [\n {\n provide: ControlContainer,\n useFactory: getControlContainer,\n deps: [\n [new Optional(), new SkipSelf(), NgModelGroup],\n [new Optional(), new SkipSelf(), NgForm],\n ],\n },\n ],\n})\nexport class MzField {\n @Input() label?: string;\n @Input() controlType: 'checkbox' | 'checkboxgroup' | 'other' = 'other';\n @ContentChild(NgModel) ngModel?: NgModel;\n\n constructor(private message: FormMessageService, @Optional() private form?: MzForm) {}\n\n getErrorMessage(): string | undefined {\n try {\n const list = Object.values(this.ngModel!.errors!);\n return this.message.getMessage(list[0], this.form?.schema.name);\n } catch {\n return undefined;\n }\n }\n}\n","<label class=\"field\">\n @if(label && controlType !== 'checkbox') {\n <span class=\"field-label\">\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n\n @if(controlType === 'checkbox' && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n }\n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n","import { AfterViewInit, Directive, HostListener, Input, OnInit } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchema } from '../model-schema';\nimport { NgFormModelState } from '../ngform-model-state';\n\n@Directive({\n selector: '[mzForm]',\n standalone: true,\n})\nexport class MzForm implements AfterViewInit {\n @Input({ required: true }) schema!: ModelSchema<unknown>;\n\n private modelState!: NgFormModelState<unknown>;\n\n constructor(private ngForm: NgForm) {\n\n }\n \n ngAfterViewInit(): void {\n this.modelState = new NgFormModelState(this.ngForm, this.schema);\n }\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event) {\n this.ngForm.form.markAllAsTouched();\n if(this.ngForm.invalid) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\nimport { MzField } from './field/field.component';\nimport { MzForm } from './form/form.directive';\nimport { DateValueAccessor } from './date-value-accessor.directive';\nimport { MzCheckboxGroup } from './checkbox-group/checkbox-group.component';\n\n\n/**\n * @deprecated\n */\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n\n\n@NgModule({\n providers: [],\n exports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ],\n imports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ]\n})\nexport class MzFormsModule { }\n","import { LocaleObject } from 'yup/lib/locale';\nimport { MessageParams } from 'yup/lib/types';\n\nexport const YUP_DEFAULT_LOCALES: LocaleObject = {\n mixed: {\n required: 'Required',\n notType: 'Invalid value',\n },\n};\n\nexport function getMessage(message: string | {key?: string} & MessageParams, key: string) {\n if(typeof message === 'string') {\n return {key: message}\n }\n\n return {...message, key: message.key ?? key};\n}\n\nexport const YUP_LOCALE_KEYS = {\n mixed: {\n required: (params) => getMessage(params, 'mixed.required'),\n notType: (params) => getMessage(params, 'mixed.notType'),\n oneOf: (params) => getMessage(params, 'mixed.oneOf'),\n notOneOf: (params) => getMessage(params, 'mixed.notOneOf'),\n default: (params) => getMessage(params, 'mixed.default'),\n defined: (params) => getMessage(params, 'mixed.defined'),\n },\n string: {\n min: (params) => getMessage(params, 'string.min'),\n max: (params) => getMessage(params, 'string.max'),\n length: (params) => getMessage(params, 'string.length'),\n matches: (params) => getMessage(params, 'string.matches'),\n email: (params) => getMessage(params, 'string.email'),\n url: (params) => getMessage(params, 'string.url'),\n uuid: (params) => getMessage(params, 'string.uuid'),\n trim: (params) => getMessage(params, 'string.trim'),\n lowercase: (params) => getMessage(params, 'string.lowercase'),\n uppercase: (params) => getMessage(params, 'string.uppercase'),\n },\n number: {\n min: (params) => getMessage(params, 'number.min'),\n max: (params) => getMessage(params, 'number.max'),\n lessThan: (params) => getMessage(params, 'number.lessThan'),\n moreThan: (params) => getMessage(params, 'number.moreThan'),\n positive: (params) => getMessage(params, 'number.positive'),\n negative: (params) => getMessage(params, 'number.negative'),\n integer: (params) => getMessage(params, 'number.integer'),\n },\n date: {\n min: (params) => getMessage(params, 'date.min'),\n max: (params) => getMessage(params, 'date.max')\n },\n object: {\n noUnknown: (params) => getMessage(params, 'object.noUnknown'),\n },\n array: {\n min: (params) => getMessage(params, 'array.min'),\n max: (params) => getMessage(params, 'array.max'),\n length: (params) => getMessage(params, 'array.length'),\n },\n boolean: {\n isValue: (params) => getMessage(params, 'boolean.isValue'),\n }\n} satisfies LocaleObject;\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-state-result';\nexport * from './lib/model-schema.factory';\nexport { ModelSchema, SchemaDefinition } from './lib/model-schema';\nexport * from './lib/type-annotations';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/ngform-model-state';\nexport * from './lib/form-message.service';\nexport * from './lib/field-errors/field-errors.component';\nexport * from './lib/masks';\n\nexport { DateValueAccessor } from './lib/date-value-accessor.directive';\nexport { FieldSchema, FieldSchemaType, StringSchema, NumberSchema, DateSchema, BooleanSchema, FileSchema, ObjectSchema, buildStringSchema, buildNumberSchema, buildDateSchema, buildBooleanSchema, buildArraySchema } from './lib/field-schema';\nexport { MzCheckboxGroup, FieldOption } from './lib/checkbox-group/checkbox-group.component';\n\nexport { FormsModule, MzFormsModule } from './lib/forms.module';\nexport { MzForm } from './lib/form/form.directive';\nexport { MzField } from './lib/field/field.component';\n\nexport * from './lib/yup-locales';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory","FormsModule","i1.FormMessageService","i2.MzForm"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { AnyObjectSchema } from 'yup';
|
|
2
2
|
import * as _muziehdesign_forms from '@muziehdesign/forms';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Renderer2, ElementRef,
|
|
4
|
+
import { Renderer2, ElementRef, AfterViewInit } from '@angular/core';
|
|
5
5
|
import { NgForm, NgControl, ControlValueAccessor, NgModel } from '@angular/forms';
|
|
6
6
|
import * as rxjs from 'rxjs';
|
|
7
7
|
import * as i2 from '@angular/common';
|
|
8
|
+
import { LocaleObject } from 'yup/lib/locale';
|
|
9
|
+
import { MessageParams } from 'yup/lib/types';
|
|
8
10
|
|
|
9
11
|
interface FieldError {
|
|
10
12
|
path: string;
|
|
@@ -95,6 +97,10 @@ interface MaxLengthAnnotation extends ValidationAnnotation {
|
|
|
95
97
|
interface MinLengthAnnotation extends ValidationAnnotation {
|
|
96
98
|
minLength: number;
|
|
97
99
|
}
|
|
100
|
+
interface ModelMetadata {
|
|
101
|
+
name?: string;
|
|
102
|
+
schemas: Map<string, FieldSchema<any>>;
|
|
103
|
+
}
|
|
98
104
|
declare function StringType(...annotations: {
|
|
99
105
|
[key: string]: ValidationAnnotation;
|
|
100
106
|
}[]): (target: Object, propertyKey: string) => void;
|
|
@@ -118,6 +124,9 @@ declare function ArrayType(...annotations: {
|
|
|
118
124
|
declare function FileType<T>(...annotations: {
|
|
119
125
|
[key: string]: ValidationAnnotation;
|
|
120
126
|
}[]): (target: Object, propertyKey: string) => void;
|
|
127
|
+
declare function Model(name: string): <T extends {
|
|
128
|
+
new (...args: any[]): {};
|
|
129
|
+
}>(constructor: T) => T;
|
|
121
130
|
declare function required(message?: string): {
|
|
122
131
|
[key: string]: RequiredAnnotation;
|
|
123
132
|
};
|
|
@@ -237,7 +246,8 @@ declare const buildArraySchema: (path: string, constraints: ArrayTypeAnnotations
|
|
|
237
246
|
declare class ModelSchema<T> {
|
|
238
247
|
private metadata;
|
|
239
248
|
private schema;
|
|
240
|
-
|
|
249
|
+
readonly name?: string | undefined;
|
|
250
|
+
constructor(metadata: FieldSchema<any>[], schema: AnyObjectSchema, name?: string | undefined);
|
|
241
251
|
getMetadata(paths: string[]): {
|
|
242
252
|
required: false;
|
|
243
253
|
} | {
|
|
@@ -249,9 +259,6 @@ declare class ModelSchema<T> {
|
|
|
249
259
|
type SchemaDefinition<T> = {
|
|
250
260
|
[K in keyof Required<T>]: FieldSchema<any>;
|
|
251
261
|
};
|
|
252
|
-
interface FieldMetadata {
|
|
253
|
-
required: boolean;
|
|
254
|
-
}
|
|
255
262
|
|
|
256
263
|
declare class ModelSchemaFactory {
|
|
257
264
|
constructor();
|
|
@@ -304,6 +311,27 @@ declare class NgFormModelStateFactory {
|
|
|
304
311
|
static ɵprov: i0.ɵɵInjectableDeclaration<NgFormModelStateFactory>;
|
|
305
312
|
}
|
|
306
313
|
|
|
314
|
+
declare class FormMessageService {
|
|
315
|
+
private localeId;
|
|
316
|
+
private localeData;
|
|
317
|
+
constructor(localeId: string);
|
|
318
|
+
getMessage(messageProps: string | {
|
|
319
|
+
key: string;
|
|
320
|
+
path?: string;
|
|
321
|
+
message?: string;
|
|
322
|
+
min?: number | Date;
|
|
323
|
+
max?: number | Date;
|
|
324
|
+
less?: number;
|
|
325
|
+
more?: number;
|
|
326
|
+
length?: number;
|
|
327
|
+
}, namespace?: string): string | undefined;
|
|
328
|
+
private formatMessage;
|
|
329
|
+
registerLocaleMessages(data: any, localeId: string): void;
|
|
330
|
+
private getLocaleData;
|
|
331
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormMessageService, never>;
|
|
332
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FormMessageService>;
|
|
333
|
+
}
|
|
334
|
+
|
|
307
335
|
declare class FieldErrorsComponent {
|
|
308
336
|
field?: NgControl;
|
|
309
337
|
get errorMessage(): string;
|
|
@@ -371,18 +399,16 @@ declare class MzCheckboxGroup implements ControlValueAccessor {
|
|
|
371
399
|
static ɵcmp: i0.ɵɵComponentDeclaration<MzCheckboxGroup, "mz-checkbox-group", never, { "options": { "alias": "options"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
|
|
372
400
|
}
|
|
373
401
|
|
|
374
|
-
declare class MzField
|
|
375
|
-
private
|
|
402
|
+
declare class MzField {
|
|
403
|
+
private message;
|
|
404
|
+
private form?;
|
|
376
405
|
label?: string;
|
|
377
406
|
controlType: 'checkbox' | 'checkboxgroup' | 'other';
|
|
378
|
-
schema?: FieldSchema<any>;
|
|
379
407
|
ngModel?: NgModel;
|
|
380
|
-
|
|
381
|
-
constructor(elementRef: ElementRef);
|
|
382
|
-
ngAfterContentInit(): void;
|
|
408
|
+
constructor(message: FormMessageService, form?: MzForm | undefined);
|
|
383
409
|
getErrorMessage(): string | undefined;
|
|
384
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MzField,
|
|
385
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MzField, "mz-field", never, { "label": { "alias": "label"; "required": false; }; "controlType": { "alias": "controlType"; "required": false; };
|
|
410
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MzField, [null, { optional: true; }]>;
|
|
411
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MzField, "mz-field", never, { "label": { "alias": "label"; "required": false; }; "controlType": { "alias": "controlType"; "required": false; }; }, {}, ["ngModel"], ["*"], true, never>;
|
|
386
412
|
}
|
|
387
413
|
|
|
388
414
|
declare class MzForm implements AfterViewInit {
|
|
@@ -410,5 +436,375 @@ declare class MzFormsModule {
|
|
|
410
436
|
static ɵinj: i0.ɵɵInjectorDeclaration<MzFormsModule>;
|
|
411
437
|
}
|
|
412
438
|
|
|
413
|
-
|
|
414
|
-
|
|
439
|
+
declare const YUP_DEFAULT_LOCALES: LocaleObject;
|
|
440
|
+
declare function getMessage(message: string | {
|
|
441
|
+
key?: string;
|
|
442
|
+
} & MessageParams, key: string): {
|
|
443
|
+
key: string;
|
|
444
|
+
} | {
|
|
445
|
+
key: string;
|
|
446
|
+
path: string;
|
|
447
|
+
value: any;
|
|
448
|
+
originalValue: any;
|
|
449
|
+
label: string;
|
|
450
|
+
type: string;
|
|
451
|
+
};
|
|
452
|
+
declare const YUP_LOCALE_KEYS: {
|
|
453
|
+
mixed: {
|
|
454
|
+
required: (params: MessageParams) => {
|
|
455
|
+
key: string;
|
|
456
|
+
} | {
|
|
457
|
+
key: string;
|
|
458
|
+
path: string;
|
|
459
|
+
value: any;
|
|
460
|
+
originalValue: any;
|
|
461
|
+
label: string;
|
|
462
|
+
type: string;
|
|
463
|
+
};
|
|
464
|
+
notType: (params: MessageParams) => {
|
|
465
|
+
key: string;
|
|
466
|
+
} | {
|
|
467
|
+
key: string;
|
|
468
|
+
path: string;
|
|
469
|
+
value: any;
|
|
470
|
+
originalValue: any;
|
|
471
|
+
label: string;
|
|
472
|
+
type: string;
|
|
473
|
+
};
|
|
474
|
+
oneOf: (params: {
|
|
475
|
+
values: any;
|
|
476
|
+
} & MessageParams) => {
|
|
477
|
+
key: string;
|
|
478
|
+
} | {
|
|
479
|
+
key: string;
|
|
480
|
+
path: string;
|
|
481
|
+
value: any;
|
|
482
|
+
originalValue: any;
|
|
483
|
+
label: string;
|
|
484
|
+
type: string;
|
|
485
|
+
};
|
|
486
|
+
notOneOf: (params: {
|
|
487
|
+
values: any;
|
|
488
|
+
} & MessageParams) => {
|
|
489
|
+
key: string;
|
|
490
|
+
} | {
|
|
491
|
+
key: string;
|
|
492
|
+
path: string;
|
|
493
|
+
value: any;
|
|
494
|
+
originalValue: any;
|
|
495
|
+
label: string;
|
|
496
|
+
type: string;
|
|
497
|
+
};
|
|
498
|
+
default: (params: MessageParams) => {
|
|
499
|
+
key: string;
|
|
500
|
+
} | {
|
|
501
|
+
key: string;
|
|
502
|
+
path: string;
|
|
503
|
+
value: any;
|
|
504
|
+
originalValue: any;
|
|
505
|
+
label: string;
|
|
506
|
+
type: string;
|
|
507
|
+
};
|
|
508
|
+
defined: (params: MessageParams) => {
|
|
509
|
+
key: string;
|
|
510
|
+
} | {
|
|
511
|
+
key: string;
|
|
512
|
+
path: string;
|
|
513
|
+
value: any;
|
|
514
|
+
originalValue: any;
|
|
515
|
+
label: string;
|
|
516
|
+
type: string;
|
|
517
|
+
};
|
|
518
|
+
};
|
|
519
|
+
string: {
|
|
520
|
+
min: (params: {
|
|
521
|
+
min: number;
|
|
522
|
+
} & MessageParams) => {
|
|
523
|
+
key: string;
|
|
524
|
+
} | {
|
|
525
|
+
key: string;
|
|
526
|
+
path: string;
|
|
527
|
+
value: any;
|
|
528
|
+
originalValue: any;
|
|
529
|
+
label: string;
|
|
530
|
+
type: string;
|
|
531
|
+
};
|
|
532
|
+
max: (params: {
|
|
533
|
+
max: number;
|
|
534
|
+
} & MessageParams) => {
|
|
535
|
+
key: string;
|
|
536
|
+
} | {
|
|
537
|
+
key: string;
|
|
538
|
+
path: string;
|
|
539
|
+
value: any;
|
|
540
|
+
originalValue: any;
|
|
541
|
+
label: string;
|
|
542
|
+
type: string;
|
|
543
|
+
};
|
|
544
|
+
length: (params: {
|
|
545
|
+
length: number;
|
|
546
|
+
} & MessageParams) => {
|
|
547
|
+
key: string;
|
|
548
|
+
} | {
|
|
549
|
+
key: string;
|
|
550
|
+
path: string;
|
|
551
|
+
value: any;
|
|
552
|
+
originalValue: any;
|
|
553
|
+
label: string;
|
|
554
|
+
type: string;
|
|
555
|
+
};
|
|
556
|
+
matches: (params: {
|
|
557
|
+
regex: RegExp;
|
|
558
|
+
} & MessageParams) => {
|
|
559
|
+
key: string;
|
|
560
|
+
} | {
|
|
561
|
+
key: string;
|
|
562
|
+
path: string;
|
|
563
|
+
value: any;
|
|
564
|
+
originalValue: any;
|
|
565
|
+
label: string;
|
|
566
|
+
type: string;
|
|
567
|
+
};
|
|
568
|
+
email: (params: {
|
|
569
|
+
regex: RegExp;
|
|
570
|
+
} & MessageParams) => {
|
|
571
|
+
key: string;
|
|
572
|
+
} | {
|
|
573
|
+
key: string;
|
|
574
|
+
path: string;
|
|
575
|
+
value: any;
|
|
576
|
+
originalValue: any;
|
|
577
|
+
label: string;
|
|
578
|
+
type: string;
|
|
579
|
+
};
|
|
580
|
+
url: (params: {
|
|
581
|
+
regex: RegExp;
|
|
582
|
+
} & MessageParams) => {
|
|
583
|
+
key: string;
|
|
584
|
+
} | {
|
|
585
|
+
key: string;
|
|
586
|
+
path: string;
|
|
587
|
+
value: any;
|
|
588
|
+
originalValue: any;
|
|
589
|
+
label: string;
|
|
590
|
+
type: string;
|
|
591
|
+
};
|
|
592
|
+
uuid: (params: {
|
|
593
|
+
regex: RegExp;
|
|
594
|
+
} & MessageParams) => {
|
|
595
|
+
key: string;
|
|
596
|
+
} | {
|
|
597
|
+
key: string;
|
|
598
|
+
path: string;
|
|
599
|
+
value: any;
|
|
600
|
+
originalValue: any;
|
|
601
|
+
label: string;
|
|
602
|
+
type: string;
|
|
603
|
+
};
|
|
604
|
+
trim: (params: MessageParams) => {
|
|
605
|
+
key: string;
|
|
606
|
+
} | {
|
|
607
|
+
key: string;
|
|
608
|
+
path: string;
|
|
609
|
+
value: any;
|
|
610
|
+
originalValue: any;
|
|
611
|
+
label: string;
|
|
612
|
+
type: string;
|
|
613
|
+
};
|
|
614
|
+
lowercase: (params: MessageParams) => {
|
|
615
|
+
key: string;
|
|
616
|
+
} | {
|
|
617
|
+
key: string;
|
|
618
|
+
path: string;
|
|
619
|
+
value: any;
|
|
620
|
+
originalValue: any;
|
|
621
|
+
label: string;
|
|
622
|
+
type: string;
|
|
623
|
+
};
|
|
624
|
+
uppercase: (params: MessageParams) => {
|
|
625
|
+
key: string;
|
|
626
|
+
} | {
|
|
627
|
+
key: string;
|
|
628
|
+
path: string;
|
|
629
|
+
value: any;
|
|
630
|
+
originalValue: any;
|
|
631
|
+
label: string;
|
|
632
|
+
type: string;
|
|
633
|
+
};
|
|
634
|
+
};
|
|
635
|
+
number: {
|
|
636
|
+
min: (params: {
|
|
637
|
+
min: number;
|
|
638
|
+
} & MessageParams) => {
|
|
639
|
+
key: string;
|
|
640
|
+
} | {
|
|
641
|
+
key: string;
|
|
642
|
+
path: string;
|
|
643
|
+
value: any;
|
|
644
|
+
originalValue: any;
|
|
645
|
+
label: string;
|
|
646
|
+
type: string;
|
|
647
|
+
};
|
|
648
|
+
max: (params: {
|
|
649
|
+
max: number;
|
|
650
|
+
} & MessageParams) => {
|
|
651
|
+
key: string;
|
|
652
|
+
} | {
|
|
653
|
+
key: string;
|
|
654
|
+
path: string;
|
|
655
|
+
value: any;
|
|
656
|
+
originalValue: any;
|
|
657
|
+
label: string;
|
|
658
|
+
type: string;
|
|
659
|
+
};
|
|
660
|
+
lessThan: (params: {
|
|
661
|
+
less: number;
|
|
662
|
+
} & MessageParams) => {
|
|
663
|
+
key: string;
|
|
664
|
+
} | {
|
|
665
|
+
key: string;
|
|
666
|
+
path: string;
|
|
667
|
+
value: any;
|
|
668
|
+
originalValue: any;
|
|
669
|
+
label: string;
|
|
670
|
+
type: string;
|
|
671
|
+
};
|
|
672
|
+
moreThan: (params: {
|
|
673
|
+
more: number;
|
|
674
|
+
} & MessageParams) => {
|
|
675
|
+
key: string;
|
|
676
|
+
} | {
|
|
677
|
+
key: string;
|
|
678
|
+
path: string;
|
|
679
|
+
value: any;
|
|
680
|
+
originalValue: any;
|
|
681
|
+
label: string;
|
|
682
|
+
type: string;
|
|
683
|
+
};
|
|
684
|
+
positive: (params: {
|
|
685
|
+
more: number;
|
|
686
|
+
} & MessageParams) => {
|
|
687
|
+
key: string;
|
|
688
|
+
} | {
|
|
689
|
+
key: string;
|
|
690
|
+
path: string;
|
|
691
|
+
value: any;
|
|
692
|
+
originalValue: any;
|
|
693
|
+
label: string;
|
|
694
|
+
type: string;
|
|
695
|
+
};
|
|
696
|
+
negative: (params: {
|
|
697
|
+
less: number;
|
|
698
|
+
} & MessageParams) => {
|
|
699
|
+
key: string;
|
|
700
|
+
} | {
|
|
701
|
+
key: string;
|
|
702
|
+
path: string;
|
|
703
|
+
value: any;
|
|
704
|
+
originalValue: any;
|
|
705
|
+
label: string;
|
|
706
|
+
type: string;
|
|
707
|
+
};
|
|
708
|
+
integer: (params: MessageParams) => {
|
|
709
|
+
key: string;
|
|
710
|
+
} | {
|
|
711
|
+
key: string;
|
|
712
|
+
path: string;
|
|
713
|
+
value: any;
|
|
714
|
+
originalValue: any;
|
|
715
|
+
label: string;
|
|
716
|
+
type: string;
|
|
717
|
+
};
|
|
718
|
+
};
|
|
719
|
+
date: {
|
|
720
|
+
min: (params: {
|
|
721
|
+
min: Date | string;
|
|
722
|
+
} & MessageParams) => {
|
|
723
|
+
key: string;
|
|
724
|
+
} | {
|
|
725
|
+
key: string;
|
|
726
|
+
path: string;
|
|
727
|
+
value: any;
|
|
728
|
+
originalValue: any;
|
|
729
|
+
label: string;
|
|
730
|
+
type: string;
|
|
731
|
+
};
|
|
732
|
+
max: (params: {
|
|
733
|
+
max: Date | string;
|
|
734
|
+
} & MessageParams) => {
|
|
735
|
+
key: string;
|
|
736
|
+
} | {
|
|
737
|
+
key: string;
|
|
738
|
+
path: string;
|
|
739
|
+
value: any;
|
|
740
|
+
originalValue: any;
|
|
741
|
+
label: string;
|
|
742
|
+
type: string;
|
|
743
|
+
};
|
|
744
|
+
};
|
|
745
|
+
object: {
|
|
746
|
+
noUnknown: (params: MessageParams) => {
|
|
747
|
+
key: string;
|
|
748
|
+
} | {
|
|
749
|
+
key: string;
|
|
750
|
+
path: string;
|
|
751
|
+
value: any;
|
|
752
|
+
originalValue: any;
|
|
753
|
+
label: string;
|
|
754
|
+
type: string;
|
|
755
|
+
};
|
|
756
|
+
};
|
|
757
|
+
array: {
|
|
758
|
+
min: (params: {
|
|
759
|
+
min: number;
|
|
760
|
+
} & MessageParams) => {
|
|
761
|
+
key: string;
|
|
762
|
+
} | {
|
|
763
|
+
key: string;
|
|
764
|
+
path: string;
|
|
765
|
+
value: any;
|
|
766
|
+
originalValue: any;
|
|
767
|
+
label: string;
|
|
768
|
+
type: string;
|
|
769
|
+
};
|
|
770
|
+
max: (params: {
|
|
771
|
+
max: number;
|
|
772
|
+
} & MessageParams) => {
|
|
773
|
+
key: string;
|
|
774
|
+
} | {
|
|
775
|
+
key: string;
|
|
776
|
+
path: string;
|
|
777
|
+
value: any;
|
|
778
|
+
originalValue: any;
|
|
779
|
+
label: string;
|
|
780
|
+
type: string;
|
|
781
|
+
};
|
|
782
|
+
length: (params: {
|
|
783
|
+
length: number;
|
|
784
|
+
} & MessageParams) => {
|
|
785
|
+
key: string;
|
|
786
|
+
} | {
|
|
787
|
+
key: string;
|
|
788
|
+
path: string;
|
|
789
|
+
value: any;
|
|
790
|
+
originalValue: any;
|
|
791
|
+
label: string;
|
|
792
|
+
type: string;
|
|
793
|
+
};
|
|
794
|
+
};
|
|
795
|
+
boolean: {
|
|
796
|
+
isValue: (params: MessageParams) => {
|
|
797
|
+
key: string;
|
|
798
|
+
} | {
|
|
799
|
+
key: string;
|
|
800
|
+
path: string;
|
|
801
|
+
value: any;
|
|
802
|
+
originalValue: any;
|
|
803
|
+
label: string;
|
|
804
|
+
type: string;
|
|
805
|
+
};
|
|
806
|
+
};
|
|
807
|
+
};
|
|
808
|
+
|
|
809
|
+
export { ArrayType, BooleanType, DateType, DateValueAccessor, FieldErrorsComponent, FieldSchemaType, FileType, FormMessageService, FormsModule, Model, ModelSchema, ModelSchemaFactory, MzCheckboxGroup, MzField, MzForm, MzFormsModule, NgFormModelState, NgFormModelStateFactory, NumberType, ObjectType, StringType, YUP_DEFAULT_LOCALES, YUP_LOCALE_KEYS, buildArraySchema, buildBooleanSchema, buildDateSchema, buildNumberSchema, buildStringSchema, currencyOptions, equals, getMessage, integerOptions, length, max, maxLength, min, minLength, ofValues, pattern, phoneNumberOptions, required, ssnOptions, test };
|
|
810
|
+
export type { ArrayTypeAnnotations, BooleanSchema, BooleanTypeAnnotations, ConstraintAnnotations, DateSchema, DateTypeAnnotations, EqualsAnnotation, FieldError, FieldOption, FieldSchema, FileSchema, FileTypeAnnotations, LengthAnnotation, MaxLengthAnnotation, MaximumAnnotation, MinLengthAnnotation, MinimumAnnotation, ModelMetadata, ModelStateResult, NumberSchema, NumberTypeAnnotations, ObjectSchema, ObjectTypeAnnotations, OfValuesAnnotation, PatternAnnotation, RequiredAnnotation, SchemaDefinition, StringSchema, StringTypeAnnotations, StringTypeConstraints, TestAnnotation, ValidationAnnotation };
|