@spider-baby/utils-forms 2.0.0 → 2.0.1

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.
@@ -1,6 +1,8 @@
1
1
  import { NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { input, Component, inject, PLATFORM_ID, Renderer2, ElementRef, Input, Directive, Injectable } from '@angular/core';
4
+ import * as i1 from '@angular/material/form-field';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
4
6
  import '@angular/forms';
5
7
  import { filter } from 'rxjs';
6
8
  import { startWith, map } from 'rxjs/operators';
@@ -44,6 +46,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
44
46
  `, styles: [":host{display:block;--error-color: var(--mat-sys-error, #d9534f)}.error{color:var(--error-color, #d9534f );font-size:.875rem;margin-top:.25rem;display:block;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}\n"] }]
45
47
  }] });
46
48
 
49
+ class FirstErrorMatComponent {
50
+ control = input.required(...(ngDevMode ? [{ debugName: "control" }] : []));
51
+ customErrorTemplate = input(undefined, ...(ngDevMode ? [{ debugName: "customErrorTemplate" }] : []));
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FirstErrorMatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: FirstErrorMatComponent, isStandalone: true, selector: "sb-first-error-mat", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, customErrorTemplate: { classPropertyName: "customErrorTemplate", publicName: "customErrorTemplate", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
54
+ @if(control().errors?.['firstError']; as err) {
55
+ @if(customErrorTemplate(); as template){
56
+ <ng-container
57
+ [ngTemplateOutlet]="template"
58
+ [ngTemplateOutletContext]="{errorMessage: err}"/>
59
+ }@else {
60
+ <mat-error>{{err}}</mat-error>
61
+ }
62
+ }
63
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FirstErrorMatComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'sb-first-error-mat', standalone: true, imports: [NgTemplateOutlet, MatFormFieldModule], template: `
68
+ @if(control().errors?.['firstError']; as err) {
69
+ @if(customErrorTemplate(); as template){
70
+ <ng-container
71
+ [ngTemplateOutlet]="template"
72
+ [ngTemplateOutletContext]="{errorMessage: err}"/>
73
+ }@else {
74
+ <mat-error>{{err}}</mat-error>
75
+ }
76
+ }
77
+ `, styles: [":host{display:block}\n"] }]
78
+ }] });
79
+
47
80
  const errorMessageMap = new Map([
48
81
  ['required', (fieldName) => `${fieldName} is required.`],
49
82
  ['email', () => 'Please enter a valid email address.'],
@@ -332,5 +365,5 @@ function RemoveNulls(obj, iterate = true) {
332
365
  * Generated bundle index. Do not edit.
333
366
  */
334
367
 
335
- export { FirstErrorComponent, FirstErrorDirective, FormErrors, FormUtility, RemoveNulls, RemoveNullsService };
368
+ export { FirstErrorComponent, FirstErrorDirective, FirstErrorMatComponent, FormErrors, FormUtility, RemoveNulls, RemoveNullsService };
336
369
  //# sourceMappingURL=spider-baby-utils-forms.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"spider-baby-utils-forms.mjs","sources":["../tmp-esm2022/lib/first-error.component.js","../tmp-esm2022/lib/form-errors.js","../tmp-esm2022/lib/form-utility.js","../tmp-esm2022/lib/first-error.directive.js","../tmp-esm2022/lib/remove-nulls.service.js","../tmp-esm2022/spider-baby-utils-forms.js"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { Component, input } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class FirstErrorComponent {\n control = input.required(...(ngDevMode ? [{ debugName: \"control\" }] : []));\n customErrorTemplate = input(undefined, ...(ngDevMode ? [{ debugName: \"customErrorTemplate\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.2\", type: FirstErrorComponent, isStandalone: true, selector: \"sb-first-error\", inputs: { control: { classPropertyName: \"control\", publicName: \"control\", isSignal: true, isRequired: true, transformFunction: null }, customErrorTemplate: { classPropertyName: \"customErrorTemplate\", publicName: \"customErrorTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\r\n @if(control().errors?.['firstError']; as err) {\r\n @if(customErrorTemplate(); as template){\r\n <ng-container \r\n [ngTemplateOutlet]=\"template\" \r\n [ngTemplateOutletContext]=\"{errorMessage: err}\"/>\r\n }@else {\r\n <span class=\"error\" \r\n [attr.aria-live]=\"'polite'\"\r\n [attr.role]=\"'alert'\">\r\n {{err}}\r\n </span>\r\n }\r\n }\r\n `, isInline: true, styles: [\":host{display:block;--error-color: var(--mat-sys-error, #d9534f)}.error{color:var(--error-color, #d9534f );font-size:.875rem;margin-top:.25rem;display:block;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sb-first-error', standalone: true, imports: [NgTemplateOutlet], template: `\r\n @if(control().errors?.['firstError']; as err) {\r\n @if(customErrorTemplate(); as template){\r\n <ng-container \r\n [ngTemplateOutlet]=\"template\" \r\n [ngTemplateOutletContext]=\"{errorMessage: err}\"/>\r\n }@else {\r\n <span class=\"error\" \r\n [attr.aria-live]=\"'polite'\"\r\n [attr.role]=\"'alert'\">\r\n {{err}}\r\n </span>\r\n }\r\n }\r\n `, styles: [\":host{display:block;--error-color: var(--mat-sys-error, #d9534f)}.error{color:var(--error-color, #d9534f );font-size:.875rem;margin-top:.25rem;display:block;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QtZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlscy9mb3Jtcy9zcmMvbGliL2ZpcnN0LWVycm9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUF5QzlELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLGtEQUFtQixDQUFDO0lBQzVDLG1CQUFtQixHQUFHLEtBQUssQ0FBbUMsU0FBUywrREFBQyxDQUFBO3VHQUg3RCxtQkFBbUI7MkZBQW5CLG1CQUFtQixxWEFsQ3BCOzs7Ozs7Ozs7Ozs7OztHQWNULHNXQWZTLGdCQUFnQjs7MkZBbUNmLG1CQUFtQjtrQkF0Qy9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsWUFDakI7Ozs7Ozs7Ozs7Ozs7O0dBY1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ItZmlyc3QtZXJyb3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICBAaWYoY29udHJvbCgpLmVycm9ycz8uWydmaXJzdEVycm9yJ107IGFzIGVycikge1xyXG4gICAgICAgQGlmKGN1c3RvbUVycm9yVGVtcGxhdGUoKTsgYXMgdGVtcGxhdGUpe1xyXG4gICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZXJyb3JNZXNzYWdlOiBlcnJ9XCIvPlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yXCIgXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiJ3BvbGl0ZSdcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCInYWxlcnQnXCI+XHJcbiAgICAgICAgICAgIHt7ZXJyfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgIC0tZXJyb3ItY29sb3I6IHZhcigtLW1hdC1zeXMtZXJyb3IsICNkOTUzNGYpO1xyXG4gICAgfVxyXG4gICAgLmVycm9yIHtcclxuICAgICAgY29sb3I6IHZhcigtLWVycm9yLWNvbG9yLCAjZDk1MzRmICk7XHJcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBhbmltYXRpb246IGZhZGVJbiAwLjNzIGVhc2UtaW47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBrZXlmcmFtZXMgZmFkZUluIHtcclxuICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsgfVxyXG4gICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaXJzdEVycm9yQ29tcG9uZW50IHtcclxuXHJcbiAgY29udHJvbCA9IGlucHV0LnJlcXVpcmVkPEFic3RyYWN0Q29udHJvbD4oKTtcclxuICBjdXN0b21FcnJvclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcclxuXHJcbn0iXX0=","const errorMessageMap = new Map([\n ['required', (fieldName) => `${fieldName} is required.`],\n ['email', () => 'Please enter a valid email address.'],\n ['minlength', (fieldName, errorValue) => !errorValue ? 'Value is too short' : `${fieldName} must be at least ${errorValue?.requiredLength} characters.`],\n ['maxlength', (fieldName, errorValue) => !errorValue ? 'Value is too long' : `${fieldName} must be no more than ${errorValue?.requiredLength} characters.`],\n ['pattern', (fieldName) => `${fieldName} format is invalid.`],\n ['min', (fieldName, errorValue) => !errorValue ? 'Value is too small' : `${fieldName} must be at least ${errorValue?.min}.`],\n ['max', (fieldName, errorValue) => !errorValue ? 'Value is too large' : `${fieldName} must be no more than ${errorValue?.max}.`],\n ['passwordMismatch', () => 'Passwords do not match.'],\n ['mustMatch', () => 'Fields do not match.'],\n ['whitespace', (fieldName) => `${fieldName} cannot contain only whitespace.`],\n ['forbiddenValue', (fieldName, errorValue) => !errorValue ? 'This value is not allowed' : `${fieldName} cannot be \"${errorValue?.value}\".`],\n ['asyncValidation', (fieldName) => `${fieldName} validation is pending...`],\n ['invalidDate', () => 'Please enter a valid date.'],\n ['futureDate', () => 'Date must be in the future.'],\n ['pastDate', () => 'Date must be in the past.'],\n ['strongPassword', () => 'Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.'],\n ['phoneNumber', (fieldName, errorValue) => !errorValue.message ? 'Please enter a valid phone number.' : errorValue.message],\n ['url', () => 'Please enter a valid URL.'],\n ['unique', (fieldName) => `This ${fieldName.toLowerCase()} is already taken.`],\n ['fileSize', (fieldName, errorValue) => !errorValue ? 'File is too large' : `File size must be less than ${errorValue?.maxSize}.`],\n ['fileType', (fieldName, errorValue) => !errorValue ? 'Invalid file type' : `Only ${errorValue?.allowedTypes?.join(', ')} files are allowed.`]\n]);\n//##########################//\nexport class FormErrors {\n static setFirstErrors(form, customErrorMessages) {\n const controls = form.controls;\n for (const name in controls) {\n const control = controls[name];\n if (control.invalid)\n this.setFirstErrorMessage(name, control, customErrorMessages);\n }\n }\n //----------------------------// \n static setFirstErrorMessage(name, control, customErrorMessages) {\n const currentErrors = control.errors;\n const firstErrorMessage = FormErrors.getFirstErrorMessage(name, control, customErrorMessages);\n if (firstErrorMessage)\n control.setErrors({ ...currentErrors, firstError: firstErrorMessage }, { emitEvent: false } // This prevents statusChanges emission\n );\n }\n //----------------------------// \n static getFirstErrorMessage(name, control, customErrorMessages) {\n const errorKey = this.firstErrorKey(control);\n if (!errorKey)\n return null;\n const errorValue = control.errors?.[errorKey];\n const fieldName = this.toTitleCase(name);\n // Handle string error values (custom error messages)\n if (typeof errorValue === 'string')\n return errorValue;\n const errorMessageFn = customErrorMessages?.get(errorKey) ?? errorMessageMap.get(errorKey);\n // Get error message function and call it\n if (errorMessageFn)\n return errorMessageFn(fieldName, errorValue);\n // Fallback for unknown error types\n return `Invalid value for ${fieldName}.`;\n }\n //----------------------------//\n static firstErrorKey = (control) => Object.keys(control.errors || {}).length > 0 ? Object.keys(control.errors || {})[0] : null;\n //----------------------------//\n static toTitleCase(s) {\n const result = s.replace(/([A-Z])/g, ' $1');\n return result.charAt(0).toUpperCase() + result.slice(1);\n }\n} //Cls\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWxzL2Zvcm1zL3NyYy9saWIvZm9ybS1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxlQUFlLEdBQTBCLElBQUksR0FBRyxDQUErQjtJQUNqRixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQztJQUN4RCxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztJQUN0RCxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLHFCQUFxQixVQUFVLEVBQUUsY0FBYyxjQUFjLENBQUM7SUFDeEosQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyx5QkFBeUIsVUFBVSxFQUFFLGNBQWMsY0FBYyxDQUFDO0lBQzNKLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFNBQVMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxxQkFBcUIsVUFBVSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQzVILENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMs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QUFXLENBQUMsQ0FBUztRQUNoQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0VBRUosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcblxyXG4vLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLy9cclxuXHJcbmV4cG9ydCB0eXBlIEVycm9yTWVzc2FnZUZ1bmN0aW9uID0gKGZpZWxkTmFtZTogc3RyaW5nLCBlcnJvclZhbHVlOiBhbnkpID0+IHN0cmluZztcclxuZXhwb3J0IHR5cGUgQ3VzdG9tRXJyb3JNZXNzYWdlTWFwID0gTWFwPHN0cmluZywgRXJyb3JNZXNzYWdlRnVuY3Rpb24+O1xyXG5cclxuXHJcbmNvbnN0IGVycm9yTWVzc2FnZU1hcDogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwID0gbmV3IE1hcDxzdHJpbmcsIEVycm9yTWVzc2FnZUZ1bmN0aW9uPihbXHJcbiAgICBbJ3JlcXVpcmVkJywgKGZpZWxkTmFtZSkgPT4gYCR7ZmllbGROYW1lfSBpcyByZXF1aXJlZC5gXSxcclxuICAgIFsnZW1haWwnLCAoKSA9PiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4nXSxcclxuICAgIFsnbWlubGVuZ3RoJywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnVmFsdWUgaXMgdG9vIHNob3J0JyA6IGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke2Vycm9yVmFsdWU/LnJlcXVpcmVkTGVuZ3RofSBjaGFyYWN0ZXJzLmBdLFxyXG4gICAgWydtYXhsZW5ndGgnLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZSA/ICdWYWx1ZSBpcyB0b28gbG9uZycgOiBgJHtmaWVsZE5hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7ZXJyb3JWYWx1ZT8ucmVxdWlyZWRMZW5ndGh9IGNoYXJhY3RlcnMuYF0sXHJcbiAgICBbJ3BhdHRlcm4nLCAoZmllbGROYW1lKSA9PiBgJHtmaWVsZE5hbWV9IGZvcm1hdCBpcyBpbnZhbGlkLmBdLFxyXG4gICAgWydtaW4nLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZSA/ICdWYWx1ZSBpcyB0b28gc21hbGwnIDogYCR7ZmllbGROYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7ZXJyb3JWYWx1ZT8ubWlufS5gXSxcclxuICAgIFsnbWF4JywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnVmFsdWUgaXMgdG9vIGxhcmdlJyA6IGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtlcnJvclZhbHVlPy5tYXh9LmBdLFxyXG4gICAgWydwYXNzd29yZE1pc21hdGNoJywgKCkgPT4gJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJ10sXHJcbiAgICBbJ211c3RNYXRjaCcsICgpID0+ICdGaWVsZHMgZG8gbm90IG1hdGNoLiddLFxyXG4gICAgWyd3aGl0ZXNwYWNlJywgKGZpZWxkTmFtZSkgPT4gYCR7ZmllbGROYW1lfSBjYW5ub3QgY29udGFpbiBvbmx5IHdoaXRlc3BhY2UuYF0sXHJcbiAgICBbJ2ZvcmJpZGRlblZhbHVlJywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnVGhpcyB2YWx1ZSBpcyBub3QgYWxsb3dlZCcgOiBgJHtmaWVsZE5hbWV9IGNhbm5vdCBiZSBcIiR7ZXJyb3JWYWx1ZT8udmFsdWV9XCIuYF0sXHJcbiAgICBbJ2FzeW5jVmFsaWRhdGlvbicsIChmaWVsZE5hbWUpID0+IGAke2ZpZWxkTmFtZX0gdmFsaWRhdGlvbiBpcyBwZW5kaW5nLi4uYF0sXHJcbiAgICBbJ2ludmFsaWREYXRlJywgKCkgPT4gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUuJ10sXHJcbiAgICBbJ2Z1dHVyZURhdGUnLCAoKSA9PiAnRGF0ZSBtdXN0IGJlIGluIHRoZSBmdXR1cmUuJ10sXHJcbiAgICBbJ3Bhc3REYXRlJywgKCkgPT4gJ0RhdGUgbXVzdCBiZSBpbiB0aGUgcGFzdC4nXSxcclxuICAgIFsnc3Ryb25nUGFzc3dvcmQnLCAoKSA9PiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgbGV0dGVyLCBvbmUgbG93ZXJjYXNlIGxldHRlciwgb25lIG51bWJlciwgYW5kIG9uZSBzcGVjaWFsIGNoYXJhY3Rlci4nXSxcclxuICAgIFsncGhvbmVOdW1iZXInLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZS5tZXNzYWdlID8gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHBob25lIG51bWJlci4nIDogZXJyb3JWYWx1ZS5tZXNzYWdlXSxcclxuICAgIFsndXJsJywgKCkgPT4gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIFVSTC4nXSxcclxuICAgIFsndW5pcXVlJywgKGZpZWxkTmFtZSkgPT4gYFRoaXMgJHtmaWVsZE5hbWUudG9Mb3dlckNhc2UoKX0gaXMgYWxyZWFkeSB0YWtlbi5gXSxcclxuICAgIFsnZmlsZVNpemUnLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZSA/ICdGaWxlIGlzIHRvbyBsYXJnZScgOiBgRmlsZSBzaXplIG11c3QgYmUgbGVzcyB0aGFuICR7ZXJyb3JWYWx1ZT8ubWF4U2l6ZX0uYF0sXHJcbiAgICBbJ2ZpbGVUeXBlJywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnSW52YWxpZCBmaWxlIHR5cGUnIDogYE9ubHkgJHtlcnJvclZhbHVlPy5hbGxvd2VkVHlwZXM/LmpvaW4oJywgJyl9IGZpbGVzIGFyZSBhbGxvd2VkLmBdXHJcbl0pO1xyXG5cclxuXHJcbi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMvL1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JzIHtcclxuXHJcblxyXG4gICAgc3RhdGljIHNldEZpcnN0RXJyb3JzKFxyXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcclxuICAgICAgICBjdXN0b21FcnJvck1lc3NhZ2VzPzogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gZm9ybS5jb250cm9sc1xyXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjb250cm9scykge1xyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gY29udHJvbHNbbmFtZV1cclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuaW52YWxpZClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rmlyc3RFcnJvck1lc3NhZ2UobmFtZSwgY29udHJvbCwgY3VzdG9tRXJyb3JNZXNzYWdlcylcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vICAgIFxyXG5cclxuXHJcbiAgICBzdGF0aWMgc2V0Rmlyc3RFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgICAgICBjdXN0b21FcnJvck1lc3NhZ2VzPzogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFcnJvcnMgPSBjb250cm9sLmVycm9yc1xyXG4gICAgICAgIGNvbnN0IGZpcnN0RXJyb3JNZXNzYWdlID0gRm9ybUVycm9ycy5nZXRGaXJzdEVycm9yTWVzc2FnZShuYW1lLCBjb250cm9sLCBjdXN0b21FcnJvck1lc3NhZ2VzKVxyXG4gICAgICAgIGlmIChmaXJzdEVycm9yTWVzc2FnZSlcclxuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoXHJcbiAgICAgICAgICAgICAgICB7IC4uLmN1cnJlbnRFcnJvcnMsIGZpcnN0RXJyb3I6IGZpcnN0RXJyb3JNZXNzYWdlIH0sXHJcbiAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfSAgLy8gVGhpcyBwcmV2ZW50cyBzdGF0dXNDaGFuZ2VzIGVtaXNzaW9uXHJcbiAgICAgICAgICAgIClcclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAgICBcclxuXHJcblxyXG4gICAgc3RhdGljIGdldEZpcnN0RXJyb3JNZXNzYWdlKFxyXG4gICAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICAgICAgY3VzdG9tRXJyb3JNZXNzYWdlcz86IEN1c3RvbUVycm9yTWVzc2FnZU1hcCk6IHN0cmluZyB8IG51bGwge1xyXG5cclxuICAgICAgICBjb25zdCBlcnJvcktleSA9IHRoaXMuZmlyc3RFcnJvcktleShjb250cm9sKVxyXG4gICAgICAgIGlmICghZXJyb3JLZXkpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcblxyXG5cclxuICAgICAgICBjb25zdCBlcnJvclZhbHVlID0gY29udHJvbC5lcnJvcnM/LltlcnJvcktleV1cclxuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0aGlzLnRvVGl0bGVDYXNlKG5hbWUpIFxyXG5cclxuICAgICAgICAvLyBIYW5kbGUgc3RyaW5nIGVycm9yIHZhbHVlcyAoY3VzdG9tIGVycm9yIG1lc3NhZ2VzKVxyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyb3JWYWx1ZSA9PT0gJ3N0cmluZycpXHJcbiAgICAgICAgICAgIHJldHVybiBlcnJvclZhbHVlXHJcblxyXG5cclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VGbiA9IGN1c3RvbUVycm9yTWVzc2FnZXM/LmdldChlcnJvcktleSkgPz8gZXJyb3JNZXNzYWdlTWFwLmdldChlcnJvcktleSk7XHJcblxyXG5cclxuICAgICAgICAvLyBHZXQgZXJyb3IgbWVzc2FnZSBmdW5jdGlvbiBhbmQgY2FsbCBpdFxyXG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2VGbilcclxuICAgICAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZUZuKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSlcclxuXHJcbiAgICAgICAgLy8gRmFsbGJhY2sgZm9yIHVua25vd24gZXJyb3IgdHlwZXNcclxuICAgICAgICByZXR1cm4gYEludmFsaWQgdmFsdWUgZm9yICR7ZmllbGROYW1lfS5gXHJcbiAgICB9XHJcblxyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZmlyc3RFcnJvcktleSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcgfCBudWxsID0+XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMgfHwge30pLmxlbmd0aCA+IDAgPyBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyB8fCB7fSlbMF0gOiBudWxsO1xyXG5cclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHRvVGl0bGVDYXNlKHM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcy5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcmVzdWx0LnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxufS8vQ2xzIl19","//##########################//\nexport class FormUtility {\n static findInvalidControlNames(form) {\n const invalid = new Set();\n const controls = form.controls;\n for (const name in controls) {\n if (controls[name].invalid)\n invalid.add(name);\n }\n return invalid;\n }\n //----------------------------//\n static findInvalidControlInfo(form) {\n const invalid = new Set();\n const controls = form.controls;\n for (const name in controls) {\n if (controls[name].invalid)\n invalid.add(`${name}: ${this.firstErrorKey(controls[name]) || 'Invalid'}`);\n }\n return invalid;\n }\n //----------------------------//\n static findInvalidControls(form) {\n const invalid = [];\n const controls = form.controls;\n for (const name in controls) {\n if (controls[name].invalid)\n invalid.push(controls[name]);\n }\n return invalid;\n }\n //----------------------------//\n static findInvalidControlsData(form) {\n const invalid = [];\n const controls = form.controls;\n for (const name in controls) {\n const control = controls[name];\n if (control.invalid)\n invalid.push({ name, control });\n }\n return invalid;\n }\n //----------------------------//\n static replaceNullWithUndefined(obj) {\n for (const [key, value] of Object.entries(obj)) {\n if (value === null)\n obj[key] = undefined;\n }\n return obj;\n }\n //----------------------------//\n static getFirstFormError(form) {\n if (form.valid)\n return null;\n // Check form-level errors first\n if (form.errors) {\n const firstKey = Object.keys(form.errors)[0];\n return { [firstKey]: form.errors[firstKey] };\n }\n // Check control-specific errors\n for (const key of Object.keys(form.controls)) {\n const control = form.get(key);\n if (control?.errors) {\n const errorKey = Object.keys(control.errors)[0];\n return { [errorKey]: control.errors[errorKey] };\n }\n }\n return null;\n }\n //----------------------------//\n static firstErrorKey = (control) => Object.keys(control.errors || {}).length > 0 ? Object.keys(control.errors || {})[0] : null;\n} //Cls\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlscy9mb3Jtcy9zcmMvbGliL2Zvcm0tdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSw4QkFBOEI7QUFFOUIsTUFBTSxPQUFPLFdBQVc7SUFFZixNQUFNLENBQUMsdUJBQXVCLENBQUMsSUFBZTtRQUVuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFFOUIsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPO2dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsZ0NBQWdDO0lBRXpCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFlO1FBRWxELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUU5QixLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsZ0NBQWdDO0lBRXpCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFlO1FBRS9DLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FB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cm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy8vXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xEYXRhe1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbn1cclxuXHJcbi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMvL1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1VdGlsaXR5IHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaW5kSW52YWxpZENvbnRyb2xOYW1lcyhmb3JtOiBGb3JtR3JvdXApOiBTZXQ8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgaW52YWxpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXHJcbiAgICBjb25zdCBjb250cm9scyA9IGZvcm0uY29udHJvbHNcclxuXHJcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY29udHJvbHMpIHtcclxuICAgICAgaWYgKGNvbnRyb2xzW25hbWVdLmludmFsaWQpXHJcbiAgICAgICAgaW52YWxpZC5hZGQobmFtZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW52YWxpZFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaW5kSW52YWxpZENvbnRyb2xJbmZvKGZvcm06IEZvcm1Hcm91cCk6IFNldDxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBpbnZhbGlkID0gbmV3IFNldDxzdHJpbmc+KClcclxuICAgIGNvbnN0IGNvbnRyb2xzID0gZm9ybS5jb250cm9sc1xyXG5cclxuICAgIGZvciAoY29uc3QgbmFtZSBpbiBjb250cm9scykge1xyXG4gICAgICBpZiAoY29udHJvbHNbbmFtZV0uaW52YWxpZClcclxuICAgICAgICBpbnZhbGlkLmFkZChgJHtuYW1lfTogJHt0aGlzLmZpcnN0RXJyb3JLZXkoY29udHJvbHNbbmFtZV0pIHx8ICdJbnZhbGlkJ31gKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbnZhbGlkXHJcbiAgfVxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZpbmRJbnZhbGlkQ29udHJvbHMoZm9ybTogRm9ybUdyb3VwKTogQWJzdHJhY3RDb250cm9sW10ge1xyXG5cclxuICAgIGNvbnN0IGludmFsaWQgPSBbXVxyXG4gICAgY29uc3QgY29udHJvbHMgPSBmb3JtLmNvbnRyb2xzXHJcblxyXG4gICAgZm9yIChjb25zdCBuYW1lIGluIGNvbnRyb2xzKSB7XHJcbiAgICAgIGlmIChjb250cm9sc1tuYW1lXS5pbnZhbGlkKVxyXG4gICAgICAgIGludmFsaWQucHVzaChjb250cm9sc1tuYW1lXSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW52YWxpZFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaW5kSW52YWxpZENvbnRyb2xzRGF0YShmb3JtOiBGb3JtR3JvdXApOiBDb250cm9sRGF0YVtdIHtcclxuXHJcbiAgICBjb25zdCBpbnZhbGlkOiB7IG5hbWU6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sIH1bXSA9IFtdO1xyXG4gICAgY29uc3QgY29udHJvbHMgPSBmb3JtLmNvbnRyb2xzXHJcblxyXG4gICAgZm9yIChjb25zdCBuYW1lIGluIGNvbnRyb2xzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBjb250cm9sc1tuYW1lXVxyXG4gICAgICBpZiAoY29udHJvbC5pbnZhbGlkKVxyXG4gICAgICAgIGludmFsaWQucHVzaCh7IG5hbWUsIGNvbnRyb2wgfSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW52YWxpZFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcblxyXG4gIHN0YXRpYyByZXBsYWNlTnVsbFdpdGhVbmRlZmluZWQob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIFxyXG4gICAgICAgIG9ialtrZXldID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXHJcblxyXG4gIHN0YXRpYyBnZXRGaXJzdEZvcm1FcnJvcihmb3JtOiBGb3JtR3JvdXApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybS52YWxpZClcclxuICAgICAgcmV0dXJuIG51bGxcclxuXHJcbiAgICAvLyBDaGVjayBmb3JtLWxldmVsIGVycm9ycyBmaXJzdFxyXG4gICAgaWYgKGZvcm0uZXJyb3JzKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0S2V5ID0gT2JqZWN0LmtleXMoZm9ybS5lcnJvcnMpWzBdXHJcbiAgICAgIHJldHVybiB7IFtmaXJzdEtleV06IGZvcm0uZXJyb3JzW2ZpcnN0S2V5XSB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgY29udHJvbC1zcGVjaWZpYyBlcnJvcnNcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChrZXkpXHJcbiAgICAgIGlmIChjb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgICBjb25zdCBlcnJvcktleSA9IE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKVswXVxyXG4gICAgICAgIHJldHVybiB7IFtlcnJvcktleV06IGNvbnRyb2wuZXJyb3JzW2Vycm9yS2V5XSB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcbiAgc3RhdGljIGZpcnN0RXJyb3JLZXkgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHwgbnVsbCA9PlxyXG4gICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMgfHwge30pLmxlbmd0aCA+IDAgPyBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyB8fCB7fSlbMF0gOiBudWxsO1xyXG5cclxuXHJcbn0vL0NscyJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, inject, Input, PLATFORM_ID, Renderer2 } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { filter } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { FormErrors } from './form-errors';\nimport { FormUtility } from './form-utility';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive: sbFormControlFirstError\n *\n * Automatically manages and displays the first validation error for each control in a FormGroup.\n * - Shows errors only after controls are touched (unless showUntouched is true)\n * - Dynamically adds blur/focusout listeners for untouched invalid controls\n * - Supports custom error messages via CustomErrorMessageMap\n * - Cleans up all listeners and subscriptions on destroy\n * - SSR-safe: all DOM access is guarded by isPlatformBrowser\n *\n * Limitations:\n * - Dynamic form changes (adding/removing controls at runtime) are NOT automatically handled in this version.\n * If you add or remove controls after initialization, you must manually re-run error setup logic.\n * (This feature is planned for a future release.)\n */\nexport class FirstErrorDirective {\n _platformId = inject(PLATFORM_ID);\n _renderer = inject(Renderer2);\n _host = inject(ElementRef);\n set sbFormControlFirstError(form) {\n this._form = form;\n this.observeValueChanges(this._form);\n }\n /**\n * Custom error messages map to override default error messages.\n * If map returns undefined for a specific error, the default message map will be used.\n */\n customErrorMessages;\n /**\n * If true, errors will be shown immediately for untouched controls.\n * If false, errors will only be shown after the control is touched.\n * Default is false.\n */\n showUntouched = false;\n //- - - - - - - - - - - - - - //\n _form;\n _vcSub;\n blurListeners = new Map();\n //----------------------------//\n ngOnDestroy() {\n this._vcSub?.unsubscribe();\n this.removeAllBlurListeners();\n }\n //----------------------------//\n addBlurListener(controlName, control) {\n // Find the input element by formControlName\n const input = this._host.nativeElement.querySelector(`[formControlName=\"${controlName}\"]`);\n if (!input)\n return;\n // Use Renderer2 to listen for 'focusout'\n const unlisten = this._renderer.listen(input, 'focusout', () => {\n if (!control.errors?.['firstError']) {\n FormErrors.setFirstErrorMessage(controlName, control, this.customErrorMessages);\n }\n // Remove the event listener after setting the error\n unlisten();\n this.blurListeners.delete(controlName);\n });\n this.blurListeners.set(controlName, unlisten);\n }\n //- - - - - - - - - - - - - - //\n removeAllBlurListeners() {\n for (const unlisten of this.blurListeners.values())\n unlisten();\n this.blurListeners.clear();\n }\n //----------------------------//\n observeValueChanges(form) {\n if (!isPlatformBrowser(this._platformId))\n return;\n this._vcSub?.unsubscribe();\n this._vcSub = form.statusChanges\n .pipe(startWith('PENDING'), // Start with non-Invalid so the first error will be set on blur if the user clicks input without entering any data\n filter(() => form.status === 'INVALID'), map(() => FormUtility.findInvalidControlsData(form)))\n .subscribe((invalidControlData) => {\n for (const controlData of invalidControlData) {\n const control = controlData.control;\n const name = controlData.name;\n // Skip if firstError is already set\n if (control.errors?.['firstError'])\n continue;\n if (this.showUntouched || control.touched) {\n FormErrors.setFirstErrorMessage(name, control, this.customErrorMessages);\n }\n else if (!control.touched) {\n // Add blur listener if not already present\n if (!this.blurListeners.has(name))\n this.addBlurListener(name, control);\n }\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.2\", type: FirstErrorDirective, isStandalone: true, selector: \"[sbFormControlFirstError]\", inputs: { sbFormControlFirstError: \"sbFormControlFirstError\", customErrorMessages: \"customErrorMessages\", showUntouched: \"showUntouched\" }, ngImport: i0 });\n} //Cls\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[sbFormControlFirstError]',\n standalone: true\n }]\n }], propDecorators: { sbFormControlFirstError: [{\n type: Input,\n args: [{ required: true }]\n }], customErrorMessages: [{\n type: Input\n }], showUntouched: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QtZXJyb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlscy9mb3Jtcy9zcmMvbGliL2ZpcnN0LWVycm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBeUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHN0M7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBRXRCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixLQUFLLEdBQTRCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUc1RCxJQUErQix1QkFBdUIsQ0FBQyxJQUFlO1FBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNNLG1CQUFtQixDQUF5QjtJQUVyRDs7OztPQUlHO0lBQ00sYUFBYSxHQUFZLEtBQUssQ0FBQztJQUV4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QyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzt1R0E5R1UsbUJBQW1COzJGQUFuQixtQkFBbUI7RUFnSC9CLEtBQUs7MkZBaEhPLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBUWdDLHVCQUF1QjtzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBU2hCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEN1c3RvbUVycm9yTWVzc2FnZU1hcCwgRm9ybUVycm9ycyB9IGZyb20gJy4vZm9ybS1lcnJvcnMnO1xyXG5pbXBvcnQgeyBGb3JtVXRpbGl0eSB9IGZyb20gJy4vZm9ybS11dGlsaXR5JztcclxuXHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlOiBzYkZvcm1Db250cm9sRmlyc3RFcnJvclxyXG4gKlxyXG4gKiBBdXRvbWF0aWNhbGx5IG1hbmFnZXMgYW5kIGRpc3BsYXlzIHRoZSBmaXJzdCB2YWxpZGF0aW9uIGVycm9yIGZvciBlYWNoIGNvbnRyb2wgaW4gYSBGb3JtR3JvdXAuXHJcbiAqIC0gU2hvd3MgZXJyb3JzIG9ubHkgYWZ0ZXIgY29udHJvbHMgYXJlIHRvdWNoZWQgKHVubGVzcyBzaG93VW50b3VjaGVkIGlzIHRydWUpXHJcbiAqIC0gRHluYW1pY2FsbHkgYWRkcyBibHVyL2ZvY3Vzb3V0IGxpc3RlbmVycyBmb3IgdW50b3VjaGVkIGludmFsaWQgY29udHJvbHNcclxuICogLSBTdXBwb3J0cyBjdXN0b20gZXJyb3IgbWVzc2FnZXMgdmlhIEN1c3RvbUVycm9yTWVzc2FnZU1hcFxyXG4gKiAtIENsZWFucyB1cCBhbGwgbGlzdGVuZXJzIGFuZCBzdWJzY3JpcHRpb25zIG9uIGRlc3Ryb3lcclxuICogLSBTU1Itc2FmZTogYWxsIERPTSBhY2Nlc3MgaXMgZ3VhcmRlZCBieSBpc1BsYXRmb3JtQnJvd3NlclxyXG4gKlxyXG4gKiBMaW1pdGF0aW9uczpcclxuICogLSBEeW5hbWljIGZvcm0gY2hhbmdlcyAoYWRkaW5nL3JlbW92aW5nIGNvbnRyb2xzIGF0IHJ1bnRpbWUpIGFyZSBOT1QgYXV0b21hdGljYWxseSBoYW5kbGVkIGluIHRoaXMgdmVyc2lvbi5cclxuICogICBJZiB5b3UgYWRkIG9yIHJlbW92ZSBjb250cm9scyBhZnRlciBpbml0aWFsaXphdGlvbiwgeW91IG11c3QgbWFudWFsbHkgcmUtcnVuIGVycm9yIHNldHVwIGxvZ2ljLlxyXG4gKiAgIChUaGlzIGZlYXR1cmUgaXMgcGxhbm5lZCBmb3IgYSBmdXR1cmUgcmVsZWFzZS4pXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tzYkZvcm1Db250cm9sRmlyc3RFcnJvcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpcnN0RXJyb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIF9wbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICBwcml2YXRlIF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gIHByaXZhdGUgX2hvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG5cclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IHNiRm9ybUNvbnRyb2xGaXJzdEVycm9yKGZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgdGhpcy5fZm9ybSA9IGZvcm1cclxuICAgIHRoaXMub2JzZXJ2ZVZhbHVlQ2hhbmdlcyh0aGlzLl9mb3JtKVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIEN1c3RvbSBlcnJvciBtZXNzYWdlcyBtYXAgdG8gb3ZlcnJpZGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlcy5cclxuICAgKiBJZiBtYXAgcmV0dXJucyB1bmRlZmluZWQgZm9yIGEgc3BlY2lmaWMgZXJyb3IsIHRoZSBkZWZhdWx0IG1lc3NhZ2UgbWFwIHdpbGwgYmUgdXNlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBjdXN0b21FcnJvck1lc3NhZ2VzPzogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0cnVlLCBlcnJvcnMgd2lsbCBiZSBzaG93biBpbW1lZGlhdGVseSBmb3IgdW50b3VjaGVkIGNvbnRyb2xzLlxyXG4gICAqIElmIGZhbHNlLCBlcnJvcnMgd2lsbCBvbmx5IGJlIHNob3duIGFmdGVyIHRoZSBjb250cm9sIGlzIHRvdWNoZWQuXHJcbiAgICogRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93VW50b3VjaGVkOiBib29sZWFuID0gZmFsc2U7IFxyXG5cclxuICAvLy0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAvL1xyXG5cclxuICBwcml2YXRlIF9mb3JtPzogRm9ybUdyb3VwXHJcbiAgcHJpdmF0ZSBfdmNTdWI/OiBTdWJzY3JpcHRpb25cclxuICBwcml2YXRlIGJsdXJMaXN0ZW5lcnMgPSBuZXcgTWFwPHN0cmluZywgKCkgPT4gdm9pZD4oKVxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZjU3ViPy51bnN1YnNjcmliZSgpXHJcbiAgICB0aGlzLnJlbW92ZUFsbEJsdXJMaXN0ZW5lcnMoKTtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXHJcblxyXG4gIHByaXZhdGUgYWRkQmx1ckxpc3RlbmVyKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xyXG5cclxuICAgIC8vIEZpbmQgdGhlIGlucHV0IGVsZW1lbnQgYnkgZm9ybUNvbnRyb2xOYW1lXHJcbiAgICBjb25zdCBpbnB1dDogSFRNTEVsZW1lbnQgfCBudWxsID0gdGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3JtQ29udHJvbE5hbWU9XCIke2NvbnRyb2xOYW1lfVwiXWApO1xyXG5cclxuICAgIGlmICghaW5wdXQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvLyBVc2UgUmVuZGVyZXIyIHRvIGxpc3RlbiBmb3IgJ2ZvY3Vzb3V0J1xyXG4gICAgY29uc3QgdW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oaW5wdXQsICdmb2N1c291dCcsICgpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLmVycm9ycz8uWydmaXJzdEVycm9yJ10pIHtcclxuICAgICAgICBGb3JtRXJyb3JzLnNldEZpcnN0RXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgY29udHJvbE5hbWUsXHJcbiAgICAgICAgICBjb250cm9sLFxyXG4gICAgICAgICAgdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBSZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVyIGFmdGVyIHNldHRpbmcgdGhlIGVycm9yXHJcbiAgICAgIHVubGlzdGVuKCk7XHJcbiAgICAgIHRoaXMuYmx1ckxpc3RlbmVycy5kZWxldGUoY29udHJvbE5hbWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5ibHVyTGlzdGVuZXJzLnNldChjb250cm9sTmFtZSwgdW5saXN0ZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLy9cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVBbGxCbHVyTGlzdGVuZXJzKCkge1xyXG5cclxuICAgIGZvciAoY29uc3QgdW5saXN0ZW4gb2YgdGhpcy5ibHVyTGlzdGVuZXJzLnZhbHVlcygpKSBcclxuICAgICAgdW5saXN0ZW4oKVxyXG4gICAgXHJcbiAgICB0aGlzLmJsdXJMaXN0ZW5lcnMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXHJcblxyXG5cclxuICBwcml2YXRlIG9ic2VydmVWYWx1ZUNoYW5nZXMoZm9ybTogRm9ybUdyb3VwKSB7XHJcblxyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLl9wbGF0Zm9ybUlkKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX3ZjU3ViPy51bnN1YnNjcmliZSgpXHJcbiAgICB0aGlzLl92Y1N1YiA9IGZvcm0uc3RhdHVzQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoJ1BFTkRJTkcnKSwgLy8gU3RhcnQgd2l0aCBub24tSW52YWxpZCBzbyB0aGUgZmlyc3QgZXJyb3Igd2lsbCBiZSBzZXQgb24gYmx1ciBpZiB0aGUgdXNlciBjbGlja3MgaW5wdXQgd2l0aG91dCBlbnRlcmluZyBhbnkgZGF0YVxyXG4gICAgICAgIGZpbHRlcigoKSA9PiBmb3JtLnN0YXR1cyA9PT0gJ0lOVkFMSUQnKSxcclxuICAgICAgICBtYXAoKCkgPT4gRm9ybVV0aWxpdHkuZmluZEludmFsaWRDb250cm9sc0RhdGEoZm9ybSkpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoaW52YWxpZENvbnRyb2xEYXRhKSA9PiB7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgY29udHJvbERhdGEgb2YgaW52YWxpZENvbnRyb2xEYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gY29udHJvbERhdGEuY29udHJvbDtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBjb250cm9sRGF0YS5uYW1lO1xyXG5cclxuICAgICAgICAgIC8vIFNraXAgaWYgZmlyc3RFcnJvciBpcyBhbHJlYWR5IHNldFxyXG4gICAgICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzPy5bJ2ZpcnN0RXJyb3InXSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcblxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNob3dVbnRvdWNoZWQgfHwgY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICAgIEZvcm1FcnJvcnMuc2V0Rmlyc3RFcnJvck1lc3NhZ2UobmFtZSwgY29udHJvbCwgdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgICAgICAvLyBBZGQgYmx1ciBsaXN0ZW5lciBpZiBub3QgYWxyZWFkeSBwcmVzZW50XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5ibHVyTGlzdGVuZXJzLmhhcyhuYW1lKSkgXHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRCbHVyTGlzdGVuZXIobmFtZSwgY29udHJvbCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbn0vL0Nsc1xyXG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class RemoveNullsService {\n remove = (obj) => RemoveNulls(obj, true);\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: RemoveNullsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: RemoveNullsService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: RemoveNullsService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//==============================//\nexport function RemoveNulls(obj, iterate = true) {\n if (obj === null || obj === undefined)\n return obj;\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj\n .filter(item => item !== null && item !== undefined) // Remove null/undefined items\n .map(item => iterate && typeof item === 'object' ? RemoveNulls(item, iterate) : item);\n }\n // Handle non-objects (primitives)\n if (typeof obj !== 'object')\n return obj;\n const cleaned = structuredClone(obj);\n for (const key in cleaned) {\n if (cleaned[key] === null || cleaned[key] === undefined)\n delete cleaned[key];\n if (cleaned[key] instanceof Object && iterate)\n cleaned[key] = RemoveNulls(cleaned[key], iterate);\n }\n return cleaned;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLW51bGxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWxzL2Zvcm1zL3NyYy9saWIvcmVtb3ZlLW51bGxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixNQUFNLEdBQUcsQ0FBQyxHQUFNLEVBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7dUdBRm5DLGtCQUFrQjsyR0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBUUQsa0NBQWtDO0FBR2xDLE1BQU0sVUFBVSxXQUFXLENBQUksR0FBTSxFQUFFLE9BQU8sR0FBRyxJQUFJO0lBRW5ELElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUztRQUNuQyxPQUFPLEdBQUcsQ0FBQztJQUViLGdCQUFnQjtJQUNoQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEdBQUc7YUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyw4QkFBOEI7YUFDbEYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFNLENBQUM7SUFDL0YsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDekIsT0FBTyxHQUFHLENBQUM7SUFFYixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUxQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVM7WUFDckQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxJQUFJLE9BQU87WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFBO0FBRWhCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVtb3ZlTnVsbHNTZXJ2aWNlPFQ+IHtcclxuXHJcbiAgcmVtb3ZlID0gKG9iajogVCk6IFQgPT4gUmVtb3ZlTnVsbHMob2JqLCB0cnVlKVxyXG5cclxufSBcclxuXHJcblxyXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vXHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlbW92ZU51bGxzPFQ+KG9iajogVCwgaXRlcmF0ZSA9IHRydWUpOiBUIHtcclxuXHJcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZClcclxuICAgIHJldHVybiBvYmo7XHJcblxyXG4gIC8vIEhhbmRsZSBhcnJheXNcclxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICByZXR1cm4gb2JqXHJcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZCkgLy8gUmVtb3ZlIG51bGwvdW5kZWZpbmVkIGl0ZW1zXHJcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVyYXRlICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IFJlbW92ZU51bGxzKGl0ZW0sIGl0ZXJhdGUpIDogaXRlbSkgYXMgVDtcclxuICB9XHJcblxyXG4gIC8vIEhhbmRsZSBub24tb2JqZWN0cyAocHJpbWl0aXZlcylcclxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpXHJcbiAgICByZXR1cm4gb2JqO1xyXG5cclxuICBjb25zdCBjbGVhbmVkID0gc3RydWN0dXJlZENsb25lKG9iaik7XHJcblxyXG4gIGZvciAoY29uc3Qga2V5IGluIGNsZWFuZWQpIHtcclxuXHJcbiAgICBpZiAoY2xlYW5lZFtrZXldID09PSBudWxsIHx8IGNsZWFuZWRba2V5XSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICBkZWxldGUgY2xlYW5lZFtrZXldO1xyXG5cclxuICAgIGlmIChjbGVhbmVkW2tleV0gaW5zdGFuY2VvZiBPYmplY3QgJiYgaXRlcmF0ZSlcclxuICAgICAgY2xlYW5lZFtrZXldID0gUmVtb3ZlTnVsbHMoY2xlYW5lZFtrZXldLCBpdGVyYXRlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBjbGVhbmVkXHJcblxyXG59XHJcblxyXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpZGVyLWJhYnktdXRpbHMtZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3V0aWxzL2Zvcm1zL3NyYy9zcGlkZXItYmFieS11dGlscy1mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spider-baby-utils-forms.mjs","sources":["../tmp-esm2022/lib/first-error.component.js","../tmp-esm2022/lib/first-error-mat.component.js","../tmp-esm2022/lib/form-errors.js","../tmp-esm2022/lib/form-utility.js","../tmp-esm2022/lib/first-error.directive.js","../tmp-esm2022/lib/remove-nulls.service.js","../tmp-esm2022/spider-baby-utils-forms.js"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { Component, input } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class FirstErrorComponent {\n control = input.required(...(ngDevMode ? [{ debugName: \"control\" }] : []));\n customErrorTemplate = input(undefined, ...(ngDevMode ? [{ debugName: \"customErrorTemplate\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.2\", type: FirstErrorComponent, isStandalone: true, selector: \"sb-first-error\", inputs: { control: { classPropertyName: \"control\", publicName: \"control\", isSignal: true, isRequired: true, transformFunction: null }, customErrorTemplate: { classPropertyName: \"customErrorTemplate\", publicName: \"customErrorTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\r\n @if(control().errors?.['firstError']; as err) {\r\n @if(customErrorTemplate(); as template){\r\n <ng-container \r\n [ngTemplateOutlet]=\"template\" \r\n [ngTemplateOutletContext]=\"{errorMessage: err}\"/>\r\n }@else {\r\n <span class=\"error\" \r\n [attr.aria-live]=\"'polite'\"\r\n [attr.role]=\"'alert'\">\r\n {{err}}\r\n </span>\r\n }\r\n }\r\n `, isInline: true, styles: [\":host{display:block;--error-color: var(--mat-sys-error, #d9534f)}.error{color:var(--error-color, #d9534f );font-size:.875rem;margin-top:.25rem;display:block;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sb-first-error', standalone: true, imports: [NgTemplateOutlet], template: `\r\n @if(control().errors?.['firstError']; as err) {\r\n @if(customErrorTemplate(); as template){\r\n <ng-container \r\n [ngTemplateOutlet]=\"template\" \r\n [ngTemplateOutletContext]=\"{errorMessage: err}\"/>\r\n }@else {\r\n <span class=\"error\" \r\n [attr.aria-live]=\"'polite'\"\r\n [attr.role]=\"'alert'\">\r\n {{err}}\r\n </span>\r\n }\r\n }\r\n `, styles: [\":host{display:block;--error-color: var(--mat-sys-error, #d9534f)}.error{color:var(--error-color, #d9534f );font-size:.875rem;margin-top:.25rem;display:block;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QtZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlscy9mb3Jtcy9zcmMvbGliL2ZpcnN0LWVycm9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUF5QzlELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLGtEQUFtQixDQUFDO0lBQzVDLG1CQUFtQixHQUFHLEtBQUssQ0FBbUMsU0FBUywrREFBQyxDQUFBO3VHQUg3RCxtQkFBbUI7MkZBQW5CLG1CQUFtQixxWEFsQ3BCOzs7Ozs7Ozs7Ozs7OztHQWNULHNXQWZTLGdCQUFnQjs7MkZBbUNmLG1CQUFtQjtrQkF0Qy9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsWUFDakI7Ozs7Ozs7Ozs7Ozs7O0dBY1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ItZmlyc3QtZXJyb3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICBAaWYoY29udHJvbCgpLmVycm9ycz8uWydmaXJzdEVycm9yJ107IGFzIGVycikge1xyXG4gICAgICAgQGlmKGN1c3RvbUVycm9yVGVtcGxhdGUoKTsgYXMgdGVtcGxhdGUpe1xyXG4gICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZXJyb3JNZXNzYWdlOiBlcnJ9XCIvPlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yXCIgXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiJ3BvbGl0ZSdcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCInYWxlcnQnXCI+XHJcbiAgICAgICAgICAgIHt7ZXJyfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgIC0tZXJyb3ItY29sb3I6IHZhcigtLW1hdC1zeXMtZXJyb3IsICNkOTUzNGYpO1xyXG4gICAgfVxyXG4gICAgLmVycm9yIHtcclxuICAgICAgY29sb3I6IHZhcigtLWVycm9yLWNvbG9yLCAjZDk1MzRmICk7XHJcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBhbmltYXRpb246IGZhZGVJbiAwLjNzIGVhc2UtaW47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBrZXlmcmFtZXMgZmFkZUluIHtcclxuICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsgfVxyXG4gICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaXJzdEVycm9yQ29tcG9uZW50IHtcclxuXHJcbiAgY29udHJvbCA9IGlucHV0LnJlcXVpcmVkPEFic3RyYWN0Q29udHJvbD4oKTtcclxuICBjdXN0b21FcnJvclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcclxuXHJcbn0iXX0=","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, input } from \"@angular/core\";\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/form-field\";\nexport class FirstErrorMatComponent {\n control = input.required(...(ngDevMode ? [{ debugName: \"control\" }] : []));\n customErrorTemplate = input(undefined, ...(ngDevMode ? [{ debugName: \"customErrorTemplate\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorMatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.2\", type: FirstErrorMatComponent, isStandalone: true, selector: \"sb-first-error-mat\", inputs: { control: { classPropertyName: \"control\", publicName: \"control\", isSignal: true, isRequired: true, transformFunction: null }, customErrorTemplate: { classPropertyName: \"customErrorTemplate\", publicName: \"customErrorTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\r\n @if(control().errors?.['firstError']; as err) {\r\n @if(customErrorTemplate(); as template){\r\n <ng-container \r\n [ngTemplateOutlet]=\"template\" \r\n [ngTemplateOutletContext]=\"{errorMessage: err}\"/>\r\n }@else {\r\n <mat-error>{{err}}</mat-error>\r\n }\r\n }\r\n `, isInline: true, styles: [\":host{display:block}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: MatFormFieldModule }, { kind: \"directive\", type: i1.MatError, selector: \"mat-error, [matError]\", inputs: [\"id\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorMatComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sb-first-error-mat', standalone: true, imports: [NgTemplateOutlet, MatFormFieldModule], template: `\r\n @if(control().errors?.['firstError']; as err) {\r\n @if(customErrorTemplate(); as template){\r\n <ng-container \r\n [ngTemplateOutlet]=\"template\" \r\n [ngTemplateOutletContext]=\"{errorMessage: err}\"/>\r\n }@else {\r\n <mat-error>{{err}}</mat-error>\r\n }\r\n }\r\n `, styles: [\":host{display:block}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QtZXJyb3ItbWF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbHMvZm9ybXMvc3JjL2xpYi9maXJzdC1lcnJvci1tYXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7QUF1QmhFLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLGtEQUFtQixDQUFDO0lBQzVDLG1CQUFtQixHQUFHLEtBQUssQ0FBbUMsU0FBUywrREFBQyxDQUFBO3VHQUg3RCxzQkFBc0I7MkZBQXRCLHNCQUFzQix5WEFqQnZCOzs7Ozs7Ozs7O0dBVVQsZ0dBWFMsZ0JBQWdCLG1KQUFFLGtCQUFrQjs7MkZBa0JuQyxzQkFBc0I7a0JBckJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxZQUNyQzs7Ozs7Ozs7OztHQVVUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ItZmlyc3QtZXJyb3ItbWF0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBNYXRGb3JtRmllbGRNb2R1bGVdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICBAaWYoY29udHJvbCgpLmVycm9ycz8uWydmaXJzdEVycm9yJ107IGFzIGVycikge1xyXG4gICAgICAgQGlmKGN1c3RvbUVycm9yVGVtcGxhdGUoKTsgYXMgdGVtcGxhdGUpe1xyXG4gICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZXJyb3JNZXNzYWdlOiBlcnJ9XCIvPlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICA8bWF0LWVycm9yPnt7ZXJyfX08L21hdC1lcnJvcj5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaXJzdEVycm9yTWF0Q29tcG9uZW50IHtcclxuXHJcbiAgY29udHJvbCA9IGlucHV0LnJlcXVpcmVkPEFic3RyYWN0Q29udHJvbD4oKTtcclxuICBjdXN0b21FcnJvclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcclxuXHJcbn0iXX0=","const errorMessageMap = new Map([\n ['required', (fieldName) => `${fieldName} is required.`],\n ['email', () => 'Please enter a valid email address.'],\n ['minlength', (fieldName, errorValue) => !errorValue ? 'Value is too short' : `${fieldName} must be at least ${errorValue?.requiredLength} characters.`],\n ['maxlength', (fieldName, errorValue) => !errorValue ? 'Value is too long' : `${fieldName} must be no more than ${errorValue?.requiredLength} characters.`],\n ['pattern', (fieldName) => `${fieldName} format is invalid.`],\n ['min', (fieldName, errorValue) => !errorValue ? 'Value is too small' : `${fieldName} must be at least ${errorValue?.min}.`],\n ['max', (fieldName, errorValue) => !errorValue ? 'Value is too large' : `${fieldName} must be no more than ${errorValue?.max}.`],\n ['passwordMismatch', () => 'Passwords do not match.'],\n ['mustMatch', () => 'Fields do not match.'],\n ['whitespace', (fieldName) => `${fieldName} cannot contain only whitespace.`],\n ['forbiddenValue', (fieldName, errorValue) => !errorValue ? 'This value is not allowed' : `${fieldName} cannot be \"${errorValue?.value}\".`],\n ['asyncValidation', (fieldName) => `${fieldName} validation is pending...`],\n ['invalidDate', () => 'Please enter a valid date.'],\n ['futureDate', () => 'Date must be in the future.'],\n ['pastDate', () => 'Date must be in the past.'],\n ['strongPassword', () => 'Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.'],\n ['phoneNumber', (fieldName, errorValue) => !errorValue.message ? 'Please enter a valid phone number.' : errorValue.message],\n ['url', () => 'Please enter a valid URL.'],\n ['unique', (fieldName) => `This ${fieldName.toLowerCase()} is already taken.`],\n ['fileSize', (fieldName, errorValue) => !errorValue ? 'File is too large' : `File size must be less than ${errorValue?.maxSize}.`],\n ['fileType', (fieldName, errorValue) => !errorValue ? 'Invalid file type' : `Only ${errorValue?.allowedTypes?.join(', ')} files are allowed.`]\n]);\n//##########################//\nexport class FormErrors {\n static setFirstErrors(form, customErrorMessages) {\n const controls = form.controls;\n for (const name in controls) {\n const control = controls[name];\n if (control.invalid)\n this.setFirstErrorMessage(name, control, customErrorMessages);\n }\n }\n //----------------------------// \n static setFirstErrorMessage(name, control, customErrorMessages) {\n const currentErrors = control.errors;\n const firstErrorMessage = FormErrors.getFirstErrorMessage(name, control, customErrorMessages);\n if (firstErrorMessage)\n control.setErrors({ ...currentErrors, firstError: firstErrorMessage }, { emitEvent: false } // This prevents statusChanges emission\n );\n }\n //----------------------------// \n static getFirstErrorMessage(name, control, customErrorMessages) {\n const errorKey = this.firstErrorKey(control);\n if (!errorKey)\n return null;\n const errorValue = control.errors?.[errorKey];\n const fieldName = this.toTitleCase(name);\n // Handle string error values (custom error messages)\n if (typeof errorValue === 'string')\n return errorValue;\n const errorMessageFn = customErrorMessages?.get(errorKey) ?? errorMessageMap.get(errorKey);\n // Get error message function and call it\n if (errorMessageFn)\n return errorMessageFn(fieldName, errorValue);\n // Fallback for unknown error types\n return `Invalid value for ${fieldName}.`;\n }\n //----------------------------//\n static firstErrorKey = (control) => Object.keys(control.errors || {}).length > 0 ? Object.keys(control.errors || {})[0] : null;\n //----------------------------//\n static toTitleCase(s) {\n const result = s.replace(/([A-Z])/g, ' $1');\n return result.charAt(0).toUpperCase() + result.slice(1);\n }\n} //Cls\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWxzL2Zvcm1zL3NyYy9saWIvZm9ybS1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxlQUFlLEdBQTBCLElBQUksR0FBRyxDQUErQjtJQUNqRixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQztJQUN4RCxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztJQUN0RCxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLHFCQUFxQixVQUFVLEVBQUUsY0FBYyxjQUFjLENBQUM7SUFDeEosQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyx5QkFBeUIsVUFBVSxFQUFFLGNBQWMsY0FBYyxDQUFDO0lBQzNKLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFNBQVMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxxQkFBcUIsVUFBVSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQzVILENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMs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QUFXLENBQUMsQ0FBUztRQUNoQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0VBRUosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcblxyXG4vLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLy9cclxuXHJcbmV4cG9ydCB0eXBlIEVycm9yTWVzc2FnZUZ1bmN0aW9uID0gKGZpZWxkTmFtZTogc3RyaW5nLCBlcnJvclZhbHVlOiBhbnkpID0+IHN0cmluZztcclxuZXhwb3J0IHR5cGUgQ3VzdG9tRXJyb3JNZXNzYWdlTWFwID0gTWFwPHN0cmluZywgRXJyb3JNZXNzYWdlRnVuY3Rpb24+O1xyXG5cclxuXHJcbmNvbnN0IGVycm9yTWVzc2FnZU1hcDogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwID0gbmV3IE1hcDxzdHJpbmcsIEVycm9yTWVzc2FnZUZ1bmN0aW9uPihbXHJcbiAgICBbJ3JlcXVpcmVkJywgKGZpZWxkTmFtZSkgPT4gYCR7ZmllbGROYW1lfSBpcyByZXF1aXJlZC5gXSxcclxuICAgIFsnZW1haWwnLCAoKSA9PiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4nXSxcclxuICAgIFsnbWlubGVuZ3RoJywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnVmFsdWUgaXMgdG9vIHNob3J0JyA6IGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke2Vycm9yVmFsdWU/LnJlcXVpcmVkTGVuZ3RofSBjaGFyYWN0ZXJzLmBdLFxyXG4gICAgWydtYXhsZW5ndGgnLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZSA/ICdWYWx1ZSBpcyB0b28gbG9uZycgOiBgJHtmaWVsZE5hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7ZXJyb3JWYWx1ZT8ucmVxdWlyZWRMZW5ndGh9IGNoYXJhY3RlcnMuYF0sXHJcbiAgICBbJ3BhdHRlcm4nLCAoZmllbGROYW1lKSA9PiBgJHtmaWVsZE5hbWV9IGZvcm1hdCBpcyBpbnZhbGlkLmBdLFxyXG4gICAgWydtaW4nLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZSA/ICdWYWx1ZSBpcyB0b28gc21hbGwnIDogYCR7ZmllbGROYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7ZXJyb3JWYWx1ZT8ubWlufS5gXSxcclxuICAgIFsnbWF4JywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnVmFsdWUgaXMgdG9vIGxhcmdlJyA6IGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtlcnJvclZhbHVlPy5tYXh9LmBdLFxyXG4gICAgWydwYXNzd29yZE1pc21hdGNoJywgKCkgPT4gJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJ10sXHJcbiAgICBbJ211c3RNYXRjaCcsICgpID0+ICdGaWVsZHMgZG8gbm90IG1hdGNoLiddLFxyXG4gICAgWyd3aGl0ZXNwYWNlJywgKGZpZWxkTmFtZSkgPT4gYCR7ZmllbGROYW1lfSBjYW5ub3QgY29udGFpbiBvbmx5IHdoaXRlc3BhY2UuYF0sXHJcbiAgICBbJ2ZvcmJpZGRlblZhbHVlJywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnVGhpcyB2YWx1ZSBpcyBub3QgYWxsb3dlZCcgOiBgJHtmaWVsZE5hbWV9IGNhbm5vdCBiZSBcIiR7ZXJyb3JWYWx1ZT8udmFsdWV9XCIuYF0sXHJcbiAgICBbJ2FzeW5jVmFsaWRhdGlvbicsIChmaWVsZE5hbWUpID0+IGAke2ZpZWxkTmFtZX0gdmFsaWRhdGlvbiBpcyBwZW5kaW5nLi4uYF0sXHJcbiAgICBbJ2ludmFsaWREYXRlJywgKCkgPT4gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUuJ10sXHJcbiAgICBbJ2Z1dHVyZURhdGUnLCAoKSA9PiAnRGF0ZSBtdXN0IGJlIGluIHRoZSBmdXR1cmUuJ10sXHJcbiAgICBbJ3Bhc3REYXRlJywgKCkgPT4gJ0RhdGUgbXVzdCBiZSBpbiB0aGUgcGFzdC4nXSxcclxuICAgIFsnc3Ryb25nUGFzc3dvcmQnLCAoKSA9PiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgbGV0dGVyLCBvbmUgbG93ZXJjYXNlIGxldHRlciwgb25lIG51bWJlciwgYW5kIG9uZSBzcGVjaWFsIGNoYXJhY3Rlci4nXSxcclxuICAgIFsncGhvbmVOdW1iZXInLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZS5tZXNzYWdlID8gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHBob25lIG51bWJlci4nIDogZXJyb3JWYWx1ZS5tZXNzYWdlXSxcclxuICAgIFsndXJsJywgKCkgPT4gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIFVSTC4nXSxcclxuICAgIFsndW5pcXVlJywgKGZpZWxkTmFtZSkgPT4gYFRoaXMgJHtmaWVsZE5hbWUudG9Mb3dlckNhc2UoKX0gaXMgYWxyZWFkeSB0YWtlbi5gXSxcclxuICAgIFsnZmlsZVNpemUnLCAoZmllbGROYW1lLCBlcnJvclZhbHVlKSA9PiAhZXJyb3JWYWx1ZSA/ICdGaWxlIGlzIHRvbyBsYXJnZScgOiBgRmlsZSBzaXplIG11c3QgYmUgbGVzcyB0aGFuICR7ZXJyb3JWYWx1ZT8ubWF4U2l6ZX0uYF0sXHJcbiAgICBbJ2ZpbGVUeXBlJywgKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSkgPT4gIWVycm9yVmFsdWUgPyAnSW52YWxpZCBmaWxlIHR5cGUnIDogYE9ubHkgJHtlcnJvclZhbHVlPy5hbGxvd2VkVHlwZXM/LmpvaW4oJywgJyl9IGZpbGVzIGFyZSBhbGxvd2VkLmBdXHJcbl0pO1xyXG5cclxuXHJcbi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMvL1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JzIHtcclxuXHJcblxyXG4gICAgc3RhdGljIHNldEZpcnN0RXJyb3JzKFxyXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcclxuICAgICAgICBjdXN0b21FcnJvck1lc3NhZ2VzPzogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gZm9ybS5jb250cm9sc1xyXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjb250cm9scykge1xyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gY29udHJvbHNbbmFtZV1cclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuaW52YWxpZClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rmlyc3RFcnJvck1lc3NhZ2UobmFtZSwgY29udHJvbCwgY3VzdG9tRXJyb3JNZXNzYWdlcylcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vICAgIFxyXG5cclxuXHJcbiAgICBzdGF0aWMgc2V0Rmlyc3RFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgICAgICBjdXN0b21FcnJvck1lc3NhZ2VzPzogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFcnJvcnMgPSBjb250cm9sLmVycm9yc1xyXG4gICAgICAgIGNvbnN0IGZpcnN0RXJyb3JNZXNzYWdlID0gRm9ybUVycm9ycy5nZXRGaXJzdEVycm9yTWVzc2FnZShuYW1lLCBjb250cm9sLCBjdXN0b21FcnJvck1lc3NhZ2VzKVxyXG4gICAgICAgIGlmIChmaXJzdEVycm9yTWVzc2FnZSlcclxuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoXHJcbiAgICAgICAgICAgICAgICB7IC4uLmN1cnJlbnRFcnJvcnMsIGZpcnN0RXJyb3I6IGZpcnN0RXJyb3JNZXNzYWdlIH0sXHJcbiAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfSAgLy8gVGhpcyBwcmV2ZW50cyBzdGF0dXNDaGFuZ2VzIGVtaXNzaW9uXHJcbiAgICAgICAgICAgIClcclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAgICBcclxuXHJcblxyXG4gICAgc3RhdGljIGdldEZpcnN0RXJyb3JNZXNzYWdlKFxyXG4gICAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICAgICAgY3VzdG9tRXJyb3JNZXNzYWdlcz86IEN1c3RvbUVycm9yTWVzc2FnZU1hcCk6IHN0cmluZyB8IG51bGwge1xyXG5cclxuICAgICAgICBjb25zdCBlcnJvcktleSA9IHRoaXMuZmlyc3RFcnJvcktleShjb250cm9sKVxyXG4gICAgICAgIGlmICghZXJyb3JLZXkpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcblxyXG5cclxuICAgICAgICBjb25zdCBlcnJvclZhbHVlID0gY29udHJvbC5lcnJvcnM/LltlcnJvcktleV1cclxuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0aGlzLnRvVGl0bGVDYXNlKG5hbWUpIFxyXG5cclxuICAgICAgICAvLyBIYW5kbGUgc3RyaW5nIGVycm9yIHZhbHVlcyAoY3VzdG9tIGVycm9yIG1lc3NhZ2VzKVxyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyb3JWYWx1ZSA9PT0gJ3N0cmluZycpXHJcbiAgICAgICAgICAgIHJldHVybiBlcnJvclZhbHVlXHJcblxyXG5cclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VGbiA9IGN1c3RvbUVycm9yTWVzc2FnZXM/LmdldChlcnJvcktleSkgPz8gZXJyb3JNZXNzYWdlTWFwLmdldChlcnJvcktleSk7XHJcblxyXG5cclxuICAgICAgICAvLyBHZXQgZXJyb3IgbWVzc2FnZSBmdW5jdGlvbiBhbmQgY2FsbCBpdFxyXG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2VGbilcclxuICAgICAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZUZuKGZpZWxkTmFtZSwgZXJyb3JWYWx1ZSlcclxuXHJcbiAgICAgICAgLy8gRmFsbGJhY2sgZm9yIHVua25vd24gZXJyb3IgdHlwZXNcclxuICAgICAgICByZXR1cm4gYEludmFsaWQgdmFsdWUgZm9yICR7ZmllbGROYW1lfS5gXHJcbiAgICB9XHJcblxyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZmlyc3RFcnJvcktleSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcgfCBudWxsID0+XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMgfHwge30pLmxlbmd0aCA+IDAgPyBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyB8fCB7fSlbMF0gOiBudWxsO1xyXG5cclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHRvVGl0bGVDYXNlKHM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcy5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcmVzdWx0LnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxufS8vQ2xzIl19","//##########################//\nexport class FormUtility {\n static findInvalidControlNames(form) {\n const invalid = new Set();\n const controls = form.controls;\n for (const name in controls) {\n if (controls[name].invalid)\n invalid.add(name);\n }\n return invalid;\n }\n //----------------------------//\n static findInvalidControlInfo(form) {\n const invalid = new Set();\n const controls = form.controls;\n for (const name in controls) {\n if (controls[name].invalid)\n invalid.add(`${name}: ${this.firstErrorKey(controls[name]) || 'Invalid'}`);\n }\n return invalid;\n }\n //----------------------------//\n static findInvalidControls(form) {\n const invalid = [];\n const controls = form.controls;\n for (const name in controls) {\n if (controls[name].invalid)\n invalid.push(controls[name]);\n }\n return invalid;\n }\n //----------------------------//\n static findInvalidControlsData(form) {\n const invalid = [];\n const controls = form.controls;\n for (const name in controls) {\n const control = controls[name];\n if (control.invalid)\n invalid.push({ name, control });\n }\n return invalid;\n }\n //----------------------------//\n static replaceNullWithUndefined(obj) {\n for (const [key, value] of Object.entries(obj)) {\n if (value === null)\n obj[key] = undefined;\n }\n return obj;\n }\n //----------------------------//\n static getFirstFormError(form) {\n if (form.valid)\n return null;\n // Check form-level errors first\n if (form.errors) {\n const firstKey = Object.keys(form.errors)[0];\n return { [firstKey]: form.errors[firstKey] };\n }\n // Check control-specific errors\n for (const key of Object.keys(form.controls)) {\n const control = form.get(key);\n if (control?.errors) {\n const errorKey = Object.keys(control.errors)[0];\n return { [errorKey]: control.errors[errorKey] };\n }\n }\n return null;\n }\n //----------------------------//\n static firstErrorKey = (control) => Object.keys(control.errors || {}).length > 0 ? Object.keys(control.errors || {})[0] : null;\n} //Cls\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlscy9mb3Jtcy9zcmMvbGliL2Zvcm0tdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSw4QkFBOEI7QUFFOUIsTUFBTSxPQUFPLFdBQVc7SUFFZixNQUFNLENBQUMsdUJBQXVCLENBQUMsSUFBZTtRQUVuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFFOUIsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPO2dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsZ0NBQWdDO0lBRXpCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFlO1FBRWxELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUU5QixLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsZ0NBQWdDO0lBRXpCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFlO1FBRS9DLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FB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cm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy8vXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xEYXRhe1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbn1cclxuXHJcbi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMvL1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1VdGlsaXR5IHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaW5kSW52YWxpZENvbnRyb2xOYW1lcyhmb3JtOiBGb3JtR3JvdXApOiBTZXQ8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgaW52YWxpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXHJcbiAgICBjb25zdCBjb250cm9scyA9IGZvcm0uY29udHJvbHNcclxuXHJcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY29udHJvbHMpIHtcclxuICAgICAgaWYgKGNvbnRyb2xzW25hbWVdLmludmFsaWQpXHJcbiAgICAgICAgaW52YWxpZC5hZGQobmFtZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW52YWxpZFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaW5kSW52YWxpZENvbnRyb2xJbmZvKGZvcm06IEZvcm1Hcm91cCk6IFNldDxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBpbnZhbGlkID0gbmV3IFNldDxzdHJpbmc+KClcclxuICAgIGNvbnN0IGNvbnRyb2xzID0gZm9ybS5jb250cm9sc1xyXG5cclxuICAgIGZvciAoY29uc3QgbmFtZSBpbiBjb250cm9scykge1xyXG4gICAgICBpZiAoY29udHJvbHNbbmFtZV0uaW52YWxpZClcclxuICAgICAgICBpbnZhbGlkLmFkZChgJHtuYW1lfTogJHt0aGlzLmZpcnN0RXJyb3JLZXkoY29udHJvbHNbbmFtZV0pIHx8ICdJbnZhbGlkJ31gKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbnZhbGlkXHJcbiAgfVxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZpbmRJbnZhbGlkQ29udHJvbHMoZm9ybTogRm9ybUdyb3VwKTogQWJzdHJhY3RDb250cm9sW10ge1xyXG5cclxuICAgIGNvbnN0IGludmFsaWQgPSBbXVxyXG4gICAgY29uc3QgY29udHJvbHMgPSBmb3JtLmNvbnRyb2xzXHJcblxyXG4gICAgZm9yIChjb25zdCBuYW1lIGluIGNvbnRyb2xzKSB7XHJcbiAgICAgIGlmIChjb250cm9sc1tuYW1lXS5pbnZhbGlkKVxyXG4gICAgICAgIGludmFsaWQucHVzaChjb250cm9sc1tuYW1lXSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW52YWxpZFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaW5kSW52YWxpZENvbnRyb2xzRGF0YShmb3JtOiBGb3JtR3JvdXApOiBDb250cm9sRGF0YVtdIHtcclxuXHJcbiAgICBjb25zdCBpbnZhbGlkOiB7IG5hbWU6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sIH1bXSA9IFtdO1xyXG4gICAgY29uc3QgY29udHJvbHMgPSBmb3JtLmNvbnRyb2xzXHJcblxyXG4gICAgZm9yIChjb25zdCBuYW1lIGluIGNvbnRyb2xzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBjb250cm9sc1tuYW1lXVxyXG4gICAgICBpZiAoY29udHJvbC5pbnZhbGlkKVxyXG4gICAgICAgIGludmFsaWQucHVzaCh7IG5hbWUsIGNvbnRyb2wgfSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW52YWxpZFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcblxyXG4gIHN0YXRpYyByZXBsYWNlTnVsbFdpdGhVbmRlZmluZWQob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIFxyXG4gICAgICAgIG9ialtrZXldID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXHJcblxyXG4gIHN0YXRpYyBnZXRGaXJzdEZvcm1FcnJvcihmb3JtOiBGb3JtR3JvdXApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybS52YWxpZClcclxuICAgICAgcmV0dXJuIG51bGxcclxuXHJcbiAgICAvLyBDaGVjayBmb3JtLWxldmVsIGVycm9ycyBmaXJzdFxyXG4gICAgaWYgKGZvcm0uZXJyb3JzKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0S2V5ID0gT2JqZWN0LmtleXMoZm9ybS5lcnJvcnMpWzBdXHJcbiAgICAgIHJldHVybiB7IFtmaXJzdEtleV06IGZvcm0uZXJyb3JzW2ZpcnN0S2V5XSB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgY29udHJvbC1zcGVjaWZpYyBlcnJvcnNcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChrZXkpXHJcbiAgICAgIGlmIChjb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgICBjb25zdCBlcnJvcktleSA9IE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKVswXVxyXG4gICAgICAgIHJldHVybiB7IFtlcnJvcktleV06IGNvbnRyb2wuZXJyb3JzW2Vycm9yS2V5XSB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuXHJcbiAgc3RhdGljIGZpcnN0RXJyb3JLZXkgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHwgbnVsbCA9PlxyXG4gICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMgfHwge30pLmxlbmd0aCA+IDAgPyBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyB8fCB7fSlbMF0gOiBudWxsO1xyXG5cclxuXHJcbn0vL0NscyJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, inject, Input, PLATFORM_ID, Renderer2 } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { filter } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { FormErrors } from './form-errors';\nimport { FormUtility } from './form-utility';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive: sbFormControlFirstError\n *\n * Automatically manages and displays the first validation error for each control in a FormGroup.\n * - Shows errors only after controls are touched (unless showUntouched is true)\n * - Dynamically adds blur/focusout listeners for untouched invalid controls\n * - Supports custom error messages via CustomErrorMessageMap\n * - Cleans up all listeners and subscriptions on destroy\n * - SSR-safe: all DOM access is guarded by isPlatformBrowser\n *\n * Limitations:\n * - Dynamic form changes (adding/removing controls at runtime) are NOT automatically handled in this version.\n * If you add or remove controls after initialization, you must manually re-run error setup logic.\n * (This feature is planned for a future release.)\n */\nexport class FirstErrorDirective {\n _platformId = inject(PLATFORM_ID);\n _renderer = inject(Renderer2);\n _host = inject(ElementRef);\n set sbFormControlFirstError(form) {\n this._form = form;\n this.observeValueChanges(this._form);\n }\n /**\n * Custom error messages map to override default error messages.\n * If map returns undefined for a specific error, the default message map will be used.\n */\n customErrorMessages;\n /**\n * If true, errors will be shown immediately for untouched controls.\n * If false, errors will only be shown after the control is touched.\n * Default is false.\n */\n showUntouched = false;\n //- - - - - - - - - - - - - - //\n _form;\n _vcSub;\n blurListeners = new Map();\n //----------------------------//\n ngOnDestroy() {\n this._vcSub?.unsubscribe();\n this.removeAllBlurListeners();\n }\n //----------------------------//\n addBlurListener(controlName, control) {\n // Find the input element by formControlName\n const input = this._host.nativeElement.querySelector(`[formControlName=\"${controlName}\"]`);\n if (!input)\n return;\n // Use Renderer2 to listen for 'focusout'\n const unlisten = this._renderer.listen(input, 'focusout', () => {\n if (!control.errors?.['firstError']) {\n FormErrors.setFirstErrorMessage(controlName, control, this.customErrorMessages);\n }\n // Remove the event listener after setting the error\n unlisten();\n this.blurListeners.delete(controlName);\n });\n this.blurListeners.set(controlName, unlisten);\n }\n //- - - - - - - - - - - - - - //\n removeAllBlurListeners() {\n for (const unlisten of this.blurListeners.values())\n unlisten();\n this.blurListeners.clear();\n }\n //----------------------------//\n observeValueChanges(form) {\n if (!isPlatformBrowser(this._platformId))\n return;\n this._vcSub?.unsubscribe();\n this._vcSub = form.statusChanges\n .pipe(startWith('PENDING'), // Start with non-Invalid so the first error will be set on blur if the user clicks input without entering any data\n filter(() => form.status === 'INVALID'), map(() => FormUtility.findInvalidControlsData(form)))\n .subscribe((invalidControlData) => {\n for (const controlData of invalidControlData) {\n const control = controlData.control;\n const name = controlData.name;\n // Skip if firstError is already set\n if (control.errors?.['firstError'])\n continue;\n if (this.showUntouched || control.touched) {\n FormErrors.setFirstErrorMessage(name, control, this.customErrorMessages);\n }\n else if (!control.touched) {\n // Add blur listener if not already present\n if (!this.blurListeners.has(name))\n this.addBlurListener(name, control);\n }\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.2\", type: FirstErrorDirective, isStandalone: true, selector: \"[sbFormControlFirstError]\", inputs: { sbFormControlFirstError: \"sbFormControlFirstError\", customErrorMessages: \"customErrorMessages\", showUntouched: \"showUntouched\" }, ngImport: i0 });\n} //Cls\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: FirstErrorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[sbFormControlFirstError]',\n standalone: true\n }]\n }], propDecorators: { sbFormControlFirstError: [{\n type: Input,\n args: [{ required: true }]\n }], customErrorMessages: [{\n type: Input\n }], showUntouched: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QtZXJyb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlscy9mb3Jtcy9zcmMvbGliL2ZpcnN0LWVycm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBeUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHN0M7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBRXRCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixLQUFLLEdBQTRCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUc1RCxJQUErQix1QkFBdUIsQ0FBQyxJQUFlO1FBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNNLG1CQUFtQixDQUF5QjtJQUVyRDs7OztPQUlHO0lBQ00sYUFBYSxHQUFZLEtBQUssQ0FBQztJQUV4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QyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzt1R0E5R1UsbUJBQW1COzJGQUFuQixtQkFBbUI7RUFnSC9CLEtBQUs7MkZBaEhPLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBUWdDLHVCQUF1QjtzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBU2hCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEN1c3RvbUVycm9yTWVzc2FnZU1hcCwgRm9ybUVycm9ycyB9IGZyb20gJy4vZm9ybS1lcnJvcnMnO1xyXG5pbXBvcnQgeyBGb3JtVXRpbGl0eSB9IGZyb20gJy4vZm9ybS11dGlsaXR5JztcclxuXHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlOiBzYkZvcm1Db250cm9sRmlyc3RFcnJvclxyXG4gKlxyXG4gKiBBdXRvbWF0aWNhbGx5IG1hbmFnZXMgYW5kIGRpc3BsYXlzIHRoZSBmaXJzdCB2YWxpZGF0aW9uIGVycm9yIGZvciBlYWNoIGNvbnRyb2wgaW4gYSBGb3JtR3JvdXAuXHJcbiAqIC0gU2hvd3MgZXJyb3JzIG9ubHkgYWZ0ZXIgY29udHJvbHMgYXJlIHRvdWNoZWQgKHVubGVzcyBzaG93VW50b3VjaGVkIGlzIHRydWUpXHJcbiAqIC0gRHluYW1pY2FsbHkgYWRkcyBibHVyL2ZvY3Vzb3V0IGxpc3RlbmVycyBmb3IgdW50b3VjaGVkIGludmFsaWQgY29udHJvbHNcclxuICogLSBTdXBwb3J0cyBjdXN0b20gZXJyb3IgbWVzc2FnZXMgdmlhIEN1c3RvbUVycm9yTWVzc2FnZU1hcFxyXG4gKiAtIENsZWFucyB1cCBhbGwgbGlzdGVuZXJzIGFuZCBzdWJzY3JpcHRpb25zIG9uIGRlc3Ryb3lcclxuICogLSBTU1Itc2FmZTogYWxsIERPTSBhY2Nlc3MgaXMgZ3VhcmRlZCBieSBpc1BsYXRmb3JtQnJvd3NlclxyXG4gKlxyXG4gKiBMaW1pdGF0aW9uczpcclxuICogLSBEeW5hbWljIGZvcm0gY2hhbmdlcyAoYWRkaW5nL3JlbW92aW5nIGNvbnRyb2xzIGF0IHJ1bnRpbWUpIGFyZSBOT1QgYXV0b21hdGljYWxseSBoYW5kbGVkIGluIHRoaXMgdmVyc2lvbi5cclxuICogICBJZiB5b3UgYWRkIG9yIHJlbW92ZSBjb250cm9scyBhZnRlciBpbml0aWFsaXphdGlvbiwgeW91IG11c3QgbWFudWFsbHkgcmUtcnVuIGVycm9yIHNldHVwIGxvZ2ljLlxyXG4gKiAgIChUaGlzIGZlYXR1cmUgaXMgcGxhbm5lZCBmb3IgYSBmdXR1cmUgcmVsZWFzZS4pXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tzYkZvcm1Db250cm9sRmlyc3RFcnJvcl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpcnN0RXJyb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIF9wbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICBwcml2YXRlIF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gIHByaXZhdGUgX2hvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG5cclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IHNiRm9ybUNvbnRyb2xGaXJzdEVycm9yKGZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgdGhpcy5fZm9ybSA9IGZvcm1cclxuICAgIHRoaXMub2JzZXJ2ZVZhbHVlQ2hhbmdlcyh0aGlzLl9mb3JtKVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIEN1c3RvbSBlcnJvciBtZXNzYWdlcyBtYXAgdG8gb3ZlcnJpZGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlcy5cclxuICAgKiBJZiBtYXAgcmV0dXJucyB1bmRlZmluZWQgZm9yIGEgc3BlY2lmaWMgZXJyb3IsIHRoZSBkZWZhdWx0IG1lc3NhZ2UgbWFwIHdpbGwgYmUgdXNlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBjdXN0b21FcnJvck1lc3NhZ2VzPzogQ3VzdG9tRXJyb3JNZXNzYWdlTWFwO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0cnVlLCBlcnJvcnMgd2lsbCBiZSBzaG93biBpbW1lZGlhdGVseSBmb3IgdW50b3VjaGVkIGNvbnRyb2xzLlxyXG4gICAqIElmIGZhbHNlLCBlcnJvcnMgd2lsbCBvbmx5IGJlIHNob3duIGFmdGVyIHRoZSBjb250cm9sIGlzIHRvdWNoZWQuXHJcbiAgICogRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93VW50b3VjaGVkOiBib29sZWFuID0gZmFsc2U7IFxyXG5cclxuICAvLy0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAvL1xyXG5cclxuICBwcml2YXRlIF9mb3JtPzogRm9ybUdyb3VwXHJcbiAgcHJpdmF0ZSBfdmNTdWI/OiBTdWJzY3JpcHRpb25cclxuICBwcml2YXRlIGJsdXJMaXN0ZW5lcnMgPSBuZXcgTWFwPHN0cmluZywgKCkgPT4gdm9pZD4oKVxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZjU3ViPy51bnN1YnNjcmliZSgpXHJcbiAgICB0aGlzLnJlbW92ZUFsbEJsdXJMaXN0ZW5lcnMoKTtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXHJcblxyXG4gIHByaXZhdGUgYWRkQmx1ckxpc3RlbmVyKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xyXG5cclxuICAgIC8vIEZpbmQgdGhlIGlucHV0IGVsZW1lbnQgYnkgZm9ybUNvbnRyb2xOYW1lXHJcbiAgICBjb25zdCBpbnB1dDogSFRNTEVsZW1lbnQgfCBudWxsID0gdGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3JtQ29udHJvbE5hbWU9XCIke2NvbnRyb2xOYW1lfVwiXWApO1xyXG5cclxuICAgIGlmICghaW5wdXQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvLyBVc2UgUmVuZGVyZXIyIHRvIGxpc3RlbiBmb3IgJ2ZvY3Vzb3V0J1xyXG4gICAgY29uc3QgdW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oaW5wdXQsICdmb2N1c291dCcsICgpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLmVycm9ycz8uWydmaXJzdEVycm9yJ10pIHtcclxuICAgICAgICBGb3JtRXJyb3JzLnNldEZpcnN0RXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgY29udHJvbE5hbWUsXHJcbiAgICAgICAgICBjb250cm9sLFxyXG4gICAgICAgICAgdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBSZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVyIGFmdGVyIHNldHRpbmcgdGhlIGVycm9yXHJcbiAgICAgIHVubGlzdGVuKCk7XHJcbiAgICAgIHRoaXMuYmx1ckxpc3RlbmVycy5kZWxldGUoY29udHJvbE5hbWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5ibHVyTGlzdGVuZXJzLnNldChjb250cm9sTmFtZSwgdW5saXN0ZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLy9cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVBbGxCbHVyTGlzdGVuZXJzKCkge1xyXG5cclxuICAgIGZvciAoY29uc3QgdW5saXN0ZW4gb2YgdGhpcy5ibHVyTGlzdGVuZXJzLnZhbHVlcygpKSBcclxuICAgICAgdW5saXN0ZW4oKVxyXG4gICAgXHJcbiAgICB0aGlzLmJsdXJMaXN0ZW5lcnMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXHJcblxyXG5cclxuICBwcml2YXRlIG9ic2VydmVWYWx1ZUNoYW5nZXMoZm9ybTogRm9ybUdyb3VwKSB7XHJcblxyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLl9wbGF0Zm9ybUlkKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX3ZjU3ViPy51bnN1YnNjcmliZSgpXHJcbiAgICB0aGlzLl92Y1N1YiA9IGZvcm0uc3RhdHVzQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoJ1BFTkRJTkcnKSwgLy8gU3RhcnQgd2l0aCBub24tSW52YWxpZCBzbyB0aGUgZmlyc3QgZXJyb3Igd2lsbCBiZSBzZXQgb24gYmx1ciBpZiB0aGUgdXNlciBjbGlja3MgaW5wdXQgd2l0aG91dCBlbnRlcmluZyBhbnkgZGF0YVxyXG4gICAgICAgIGZpbHRlcigoKSA9PiBmb3JtLnN0YXR1cyA9PT0gJ0lOVkFMSUQnKSxcclxuICAgICAgICBtYXAoKCkgPT4gRm9ybVV0aWxpdHkuZmluZEludmFsaWRDb250cm9sc0RhdGEoZm9ybSkpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoaW52YWxpZENvbnRyb2xEYXRhKSA9PiB7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgY29udHJvbERhdGEgb2YgaW52YWxpZENvbnRyb2xEYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gY29udHJvbERhdGEuY29udHJvbDtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBjb250cm9sRGF0YS5uYW1lO1xyXG5cclxuICAgICAgICAgIC8vIFNraXAgaWYgZmlyc3RFcnJvciBpcyBhbHJlYWR5IHNldFxyXG4gICAgICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzPy5bJ2ZpcnN0RXJyb3InXSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcblxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNob3dVbnRvdWNoZWQgfHwgY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICAgIEZvcm1FcnJvcnMuc2V0Rmlyc3RFcnJvck1lc3NhZ2UobmFtZSwgY29udHJvbCwgdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgICAgICAvLyBBZGQgYmx1ciBsaXN0ZW5lciBpZiBub3QgYWxyZWFkeSBwcmVzZW50XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5ibHVyTGlzdGVuZXJzLmhhcyhuYW1lKSkgXHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRCbHVyTGlzdGVuZXIobmFtZSwgY29udHJvbCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbn0vL0Nsc1xyXG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class RemoveNullsService {\n remove = (obj) => RemoveNulls(obj, true);\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: RemoveNullsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: RemoveNullsService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: RemoveNullsService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//==============================//\nexport function RemoveNulls(obj, iterate = true) {\n if (obj === null || obj === undefined)\n return obj;\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj\n .filter(item => item !== null && item !== undefined) // Remove null/undefined items\n .map(item => iterate && typeof item === 'object' ? RemoveNulls(item, iterate) : item);\n }\n // Handle non-objects (primitives)\n if (typeof obj !== 'object')\n return obj;\n const cleaned = structuredClone(obj);\n for (const key in cleaned) {\n if (cleaned[key] === null || cleaned[key] === undefined)\n delete cleaned[key];\n if (cleaned[key] instanceof Object && iterate)\n cleaned[key] = RemoveNulls(cleaned[key], iterate);\n }\n return cleaned;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLW51bGxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWxzL2Zvcm1zL3NyYy9saWIvcmVtb3ZlLW51bGxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixNQUFNLEdBQUcsQ0FBQyxHQUFNLEVBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7dUdBRm5DLGtCQUFrQjsyR0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBUUQsa0NBQWtDO0FBR2xDLE1BQU0sVUFBVSxXQUFXLENBQUksR0FBTSxFQUFFLE9BQU8sR0FBRyxJQUFJO0lBRW5ELElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUztRQUNuQyxPQUFPLEdBQUcsQ0FBQztJQUViLGdCQUFnQjtJQUNoQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEdBQUc7YUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyw4QkFBOEI7YUFDbEYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFNLENBQUM7SUFDL0YsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDekIsT0FBTyxHQUFHLENBQUM7SUFFYixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUxQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVM7WUFDckQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxJQUFJLE9BQU87WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFBO0FBRWhCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVtb3ZlTnVsbHNTZXJ2aWNlPFQ+IHtcclxuXHJcbiAgcmVtb3ZlID0gKG9iajogVCk6IFQgPT4gUmVtb3ZlTnVsbHMob2JqLCB0cnVlKVxyXG5cclxufSBcclxuXHJcblxyXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vXHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlbW92ZU51bGxzPFQ+KG9iajogVCwgaXRlcmF0ZSA9IHRydWUpOiBUIHtcclxuXHJcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZClcclxuICAgIHJldHVybiBvYmo7XHJcblxyXG4gIC8vIEhhbmRsZSBhcnJheXNcclxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICByZXR1cm4gb2JqXHJcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZCkgLy8gUmVtb3ZlIG51bGwvdW5kZWZpbmVkIGl0ZW1zXHJcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVyYXRlICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IFJlbW92ZU51bGxzKGl0ZW0sIGl0ZXJhdGUpIDogaXRlbSkgYXMgVDtcclxuICB9XHJcblxyXG4gIC8vIEhhbmRsZSBub24tb2JqZWN0cyAocHJpbWl0aXZlcylcclxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpXHJcbiAgICByZXR1cm4gb2JqO1xyXG5cclxuICBjb25zdCBjbGVhbmVkID0gc3RydWN0dXJlZENsb25lKG9iaik7XHJcblxyXG4gIGZvciAoY29uc3Qga2V5IGluIGNsZWFuZWQpIHtcclxuXHJcbiAgICBpZiAoY2xlYW5lZFtrZXldID09PSBudWxsIHx8IGNsZWFuZWRba2V5XSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICBkZWxldGUgY2xlYW5lZFtrZXldO1xyXG5cclxuICAgIGlmIChjbGVhbmVkW2tleV0gaW5zdGFuY2VvZiBPYmplY3QgJiYgaXRlcmF0ZSlcclxuICAgICAgY2xlYW5lZFtrZXldID0gUmVtb3ZlTnVsbHMoY2xlYW5lZFtrZXldLCBpdGVyYXRlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBjbGVhbmVkXHJcblxyXG59XHJcblxyXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpZGVyLWJhYnktdXRpbHMtZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3V0aWxzL2Zvcm1zL3NyYy9zcGlkZXItYmFieS11dGlscy1mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -9,6 +9,13 @@ declare class FirstErrorComponent {
9
9
  static ɵcmp: i0.ɵɵComponentDeclaration<FirstErrorComponent, "sb-first-error", never, { "control": { "alias": "control"; "required": true; "isSignal": true; }; "customErrorTemplate": { "alias": "customErrorTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
10
  }
11
11
 
12
+ declare class FirstErrorMatComponent {
13
+ control: i0.InputSignal<AbstractControl<any, any, any>>;
14
+ customErrorTemplate: i0.InputSignal<TemplateRef<unknown> | undefined>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<FirstErrorMatComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<FirstErrorMatComponent, "sb-first-error-mat", never, { "control": { "alias": "control"; "required": true; "isSignal": true; }; "customErrorTemplate": { "alias": "customErrorTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
17
+ }
18
+
12
19
  type ErrorMessageFunction = (fieldName: string, errorValue: any) => string;
13
20
  type CustomErrorMessageMap = Map<string, ErrorMessageFunction>;
14
21
  declare class FormErrors {
@@ -82,5 +89,5 @@ declare class RemoveNullsService<T> {
82
89
  }
83
90
  declare function RemoveNulls<T>(obj: T, iterate?: boolean): T;
84
91
 
85
- export { FirstErrorComponent, FirstErrorDirective, FormErrors, FormUtility, RemoveNulls, RemoveNullsService };
92
+ export { FirstErrorComponent, FirstErrorDirective, FirstErrorMatComponent, FormErrors, FormUtility, RemoveNulls, RemoveNullsService };
86
93
  export type { ControlData, CustomErrorMessageMap, ErrorMessageFunction };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spider-baby/utils-forms",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "A comprehensive Angular forms utility library for streamlined validation, error handling, and accessible error display.",
5
5
  "keywords": [
6
6
  "angular",
@@ -50,6 +50,7 @@
50
50
  "@angular/core": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
51
51
  "@angular/forms": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
52
52
  "@angular/common": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
53
+ "@angular/material": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
53
54
  "rxjs": "~7.8.0",
54
55
  "@spider-baby/dev-console": "^1.1.2 || ^2.0.0",
55
56
  "libphonenumber-js": "^1.12.9"