@fagon/ngx-intellitoolx 16.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.
Files changed (49) hide show
  1. package/LICENSE +5 -0
  2. package/README.md +959 -0
  3. package/esm2022/fagon-ngx-intellitoolx.mjs +5 -0
  4. package/esm2022/lib/directives/required-marker/required-marker.config.mjs +2 -0
  5. package/esm2022/lib/directives/required-marker/required-marker.defaults.mjs +9 -0
  6. package/esm2022/lib/directives/required-marker/required-marker.directive.mjs +79 -0
  7. package/esm2022/lib/directives/required-marker/required-marker.token.mjs +3 -0
  8. package/esm2022/lib/form-errors/form-errors.component.mjs +110 -0
  9. package/esm2022/lib/form-update/confirm-handler.type.mjs +2 -0
  10. package/esm2022/lib/form-update/form-update-message-config.interface.mjs +2 -0
  11. package/esm2022/lib/form-update/form-update-message.component.mjs +53 -0
  12. package/esm2022/lib/form-update/unsaved-changes.guard.mjs +19 -0
  13. package/esm2022/lib/form-validators/index.mjs +6 -0
  14. package/esm2022/lib/form-validators/max-amount.validator.mjs +18 -0
  15. package/esm2022/lib/form-validators/max-words.validator.mjs +11 -0
  16. package/esm2022/lib/form-validators/min-amount.validator.mjs +18 -0
  17. package/esm2022/lib/form-validators/password-mismatch.validator.mjs +16 -0
  18. package/esm2022/lib/form-validators/unique-email.validators.mjs +40 -0
  19. package/esm2022/lib/helpers/intellitoolx.helper.mjs +156 -0
  20. package/esm2022/lib/ngx-intellitoolx.component.mjs +11 -0
  21. package/esm2022/lib/ngx-intellitoolx.module.mjs +17 -0
  22. package/esm2022/lib/pipes/json-parse.pipe.mjs +18 -0
  23. package/esm2022/lib/regex/regex.utils.mjs +7 -0
  24. package/esm2022/public-api.mjs +27 -0
  25. package/fesm2022/fagon-ngx-intellitoolx.mjs +576 -0
  26. package/fesm2022/fagon-ngx-intellitoolx.mjs.map +1 -0
  27. package/index.d.ts +5 -0
  28. package/lib/directives/required-marker/required-marker.config.d.ts +9 -0
  29. package/lib/directives/required-marker/required-marker.defaults.d.ts +2 -0
  30. package/lib/directives/required-marker/required-marker.directive.d.ts +17 -0
  31. package/lib/directives/required-marker/required-marker.token.d.ts +3 -0
  32. package/lib/form-errors/form-errors.component.d.ts +29 -0
  33. package/lib/form-update/confirm-handler.type.d.ts +1 -0
  34. package/lib/form-update/form-update-message-config.interface.d.ts +11 -0
  35. package/lib/form-update/form-update-message.component.d.ts +14 -0
  36. package/lib/form-update/unsaved-changes.guard.d.ts +11 -0
  37. package/lib/form-validators/index.d.ts +5 -0
  38. package/lib/form-validators/max-amount.validator.d.ts +2 -0
  39. package/lib/form-validators/max-words.validator.d.ts +2 -0
  40. package/lib/form-validators/min-amount.validator.d.ts +2 -0
  41. package/lib/form-validators/password-mismatch.validator.d.ts +2 -0
  42. package/lib/form-validators/unique-email.validators.d.ts +2 -0
  43. package/lib/helpers/intellitoolx.helper.d.ts +16 -0
  44. package/lib/ngx-intellitoolx.component.d.ts +5 -0
  45. package/lib/ngx-intellitoolx.module.d.ts +7 -0
  46. package/lib/pipes/json-parse.pipe.d.ts +7 -0
  47. package/lib/regex/regex.utils.d.ts +6 -0
  48. package/package.json +29 -0
  49. package/public-api.d.ts +14 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFnb24tbmd4LWludGVsbGl0b29seC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWdvbi1uZ3gtaW50ZWxsaXRvb2x4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9yZXF1aXJlZC1tYXJrZXIvcmVxdWlyZWQtbWFya2VyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlZE1hcmtlckNvbmZpZyB7XG4gIHNpZ24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBwb3NpdGlvbj86ICdiZWZvcmUnIHwgJ2FmdGVyJztcbiAgc3BhY2luZz86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93SWZPcHRpb25hbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkUmVxdWlyZWRNYXJrZXJDb25maWcgPSBSZXF1aXJlZDxSZXF1aXJlZE1hcmtlckNvbmZpZz47XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export const DEFAULT_REQUIRED_MARKER_CONFIG = {
2
+ sign: '*',
3
+ color: 'red',
4
+ position: 'after',
5
+ spacing: '2px',
6
+ className: '',
7
+ showIfOptional: false,
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLmRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL3JlcXVpcmVkLW1hcmtlci9yZXF1aXJlZC1tYXJrZXIuZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQWlDO0lBQzFFLElBQUksRUFBRSxHQUFHO0lBQ1QsS0FBSyxFQUFFLEtBQUs7SUFDWixRQUFRLEVBQUUsT0FBTztJQUNqQixPQUFPLEVBQUUsS0FBSztJQUNkLFNBQVMsRUFBRSxFQUFFO0lBQ2IsY0FBYyxFQUFFLEtBQUs7Q0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc29sdmVkUmVxdWlyZWRNYXJrZXJDb25maWcgfSBmcm9tICcuL3JlcXVpcmVkLW1hcmtlci5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVFVSVJFRF9NQVJLRVJfQ09ORklHOiBSZXNvbHZlZFJlcXVpcmVkTWFya2VyQ29uZmlnID0ge1xuICBzaWduOiAnKicsXG4gIGNvbG9yOiAncmVkJyxcbiAgcG9zaXRpb246ICdhZnRlcicsXG4gIHNwYWNpbmc6ICcycHgnLFxuICBjbGFzc05hbWU6ICcnLFxuICBzaG93SWZPcHRpb25hbDogZmFsc2UsXG59O1xuIl19
@@ -0,0 +1,79 @@
1
+ import { Directive, inject, } from '@angular/core';
2
+ import { Validators, } from '@angular/forms';
3
+ import { merge } from 'rxjs';
4
+ import { REQUIRED_MARKER_GLOBAL_CONFIG } from './required-marker.token';
5
+ import { DEFAULT_REQUIRED_MARKER_CONFIG } from './required-marker.defaults';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ export class RequiredMarkerDirective {
9
+ constructor(el, renderer, parentForm) {
10
+ this.el = el;
11
+ this.renderer = renderer;
12
+ this.parentForm = parentForm;
13
+ this.globalConfig = inject(REQUIRED_MARKER_GLOBAL_CONFIG, {
14
+ optional: true,
15
+ });
16
+ }
17
+ resolveConfig() {
18
+ return {
19
+ ...DEFAULT_REQUIRED_MARKER_CONFIG,
20
+ ...this.globalConfig,
21
+ };
22
+ }
23
+ ngAfterViewInit() {
24
+ const label = this.el.nativeElement;
25
+ const controlId = label.getAttribute('for');
26
+ if (!controlId)
27
+ return;
28
+ const control = this.parentForm.form.get(controlId);
29
+ if (!control)
30
+ return;
31
+ this.updateLabel(label, control);
32
+ this.subscription = merge(control.valueChanges, control.statusChanges).subscribe(() => this.updateLabel(label, control));
33
+ }
34
+ updateLabel(label, control) {
35
+ const config = this.resolveConfig();
36
+ const isRequired = control.hasValidator?.(Validators.required);
37
+ const original = label.getAttribute('data-original') || label.textContent || '';
38
+ if (!label.getAttribute('data-original')) {
39
+ label.setAttribute('data-original', original.trim());
40
+ }
41
+ const match = original.match(/^([^\(]+)(.*)$/);
42
+ const mainText = match ? match[1].trim() : original;
43
+ const extraText = match ? match[2] : '';
44
+ this.renderer.setProperty(label, 'textContent', '');
45
+ const main = this.renderer.createText(mainText);
46
+ const marker = this.renderer.createElement('span');
47
+ this.renderer.setStyle(marker, 'color', config.color);
48
+ this.renderer.setStyle(marker, 'margin-left', config.spacing);
49
+ this.renderer.appendChild(marker, this.renderer.createText(config.sign));
50
+ if (isRequired) {
51
+ if (config.position === 'before') {
52
+ this.renderer.appendChild(label, marker);
53
+ this.renderer.appendChild(label, main);
54
+ }
55
+ else {
56
+ this.renderer.appendChild(label, main);
57
+ this.renderer.appendChild(label, marker);
58
+ }
59
+ }
60
+ else {
61
+ this.renderer.appendChild(label, main);
62
+ }
63
+ const extra = this.renderer.createText(extraText);
64
+ this.renderer.appendChild(label, extra);
65
+ }
66
+ ngOnDestroy() {
67
+ this.subscription?.unsubscribe();
68
+ }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RequiredMarkerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RequiredMarkerDirective, isStandalone: true, selector: "label[itxRequired]", ngImport: i0 }); }
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RequiredMarkerDirective, decorators: [{
73
+ type: Directive,
74
+ args: [{
75
+ selector: 'label[itxRequired]',
76
+ standalone: true,
77
+ }]
78
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.FormGroupDirective }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9yZXF1aXJlZC1tYXJrZXIvcmVxdWlyZWQtbWFya2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUtULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU01RSxNQUFNLE9BQU8sdUJBQXVCO0lBT2xDLFlBQ1UsRUFBZ0MsRUFDaEMsUUFBbUIsRUFDbkIsVUFBOEI7UUFGOUIsT0FBRSxHQUFGLEVBQUUsQ0FBOEI7UUFDaEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQVBoQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRTtZQUMzRCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQU1BLENBQUM7SUFFSSxhQUFhO1FBQ25CLE9BQU87WUFDTCxHQUFHLDhCQUE4QjtZQUNqQyxHQUFHLElBQUksQ0FBQyxZQUFZO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FB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QUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOytHQS9FVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzb2x2ZWRSZXF1aXJlZE1hcmtlckNvbmZpZyB9IGZyb20gJy4vcmVxdWlyZWQtbWFya2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBSRVFVSVJFRF9NQVJLRVJfR0xPQkFMX0NPTkZJRyB9IGZyb20gJy4vcmVxdWlyZWQtbWFya2VyLnRva2VuJztcbmltcG9ydCB7IERFRkFVTFRfUkVRVUlSRURfTUFSS0VSX0NPTkZJRyB9IGZyb20gJy4vcmVxdWlyZWQtbWFya2VyLmRlZmF1bHRzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbGFiZWxbaXR4UmVxdWlyZWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmVxdWlyZWRNYXJrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGdsb2JhbENvbmZpZyA9IGluamVjdChSRVFVSVJFRF9NQVJLRVJfR0xPQkFMX0NPTkZJRywge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmPEhUTUxMYWJlbEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHBhcmVudEZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbmZpZygpOiBSZXNvbHZlZFJlcXVpcmVkTWFya2VyQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uREVGQVVMVF9SRVFVSVJFRF9NQVJLRVJfQ09ORklHLFxuICAgICAgLi4udGhpcy5nbG9iYWxDb25maWcsXG4gICAgfTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBjb250cm9sSWQgPSBsYWJlbC5nZXRBdHRyaWJ1dGUoJ2ZvcicpO1xuICAgIGlmICghY29udHJvbElkKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5wYXJlbnRGb3JtLmZvcm0uZ2V0KGNvbnRyb2xJZCk7XG4gICAgaWYgKCFjb250cm9sKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZUxhYmVsKGxhYmVsLCBjb250cm9sKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbWVyZ2UoXG4gICAgICBjb250cm9sLnZhbHVlQ2hhbmdlcyxcbiAgICAgIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcyxcbiAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUxhYmVsKGxhYmVsLCBjb250cm9sKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxhYmVsKGxhYmVsOiBIVE1MTGFiZWxFbGVtZW50LCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnJlc29sdmVDb25maWcoKTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gY29udHJvbC5oYXNWYWxpZGF0b3I/LihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsID1cbiAgICAgIGxhYmVsLmdldEF0dHJpYnV0ZSgnZGF0YS1vcmlnaW5hbCcpIHx8IGxhYmVsLnRleHRDb250ZW50IHx8ICcnO1xuXG4gICAgaWYgKCFsYWJlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZ2luYWwnKSkge1xuICAgICAgbGFiZWwuc2V0QXR0cmlidXRlKCdkYXRhLW9yaWdpbmFsJywgb3JpZ2luYWwudHJpbSgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IG9yaWdpbmFsLm1hdGNoKC9eKFteXFwoXSspKC4qKSQvKTtcbiAgICBjb25zdCBtYWluVGV4dCA9IG1hdGNoID8gbWF0Y2hbMV0udHJpbSgpIDogb3JpZ2luYWw7XG4gICAgY29uc3QgZXh0cmFUZXh0ID0gbWF0Y2ggPyBtYXRjaFsyXSA6ICcnO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShsYWJlbCwgJ3RleHRDb250ZW50JywgJycpO1xuXG4gICAgY29uc3QgbWFpbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChtYWluVGV4dCk7XG5cbiAgICBjb25zdCBtYXJrZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1hcmtlciwgJ2NvbG9yJywgY29uZmlnLmNvbG9yKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1hcmtlciwgJ21hcmdpbi1sZWZ0JywgY29uZmlnLnNwYWNpbmcpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChtYXJrZXIsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChjb25maWcuc2lnbikpO1xuXG4gICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgIGlmIChjb25maWcucG9zaXRpb24gPT09ICdiZWZvcmUnKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1hcmtlcik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1haW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChsYWJlbCwgbWFpbik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1hcmtlcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWwsIG1haW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dHJhID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KGV4dHJhVGV4dCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChsYWJlbCwgZXh0cmEpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const REQUIRED_MARKER_GLOBAL_CONFIG = new InjectionToken('Required Marker Global Config');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtbWFya2VyLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL3JlcXVpcmVkLW1hcmtlci9yZXF1aXJlZC1tYXJrZXIudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQXVCLCtCQUErQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVxdWlyZWRNYXJrZXJDb25maWcgfSBmcm9tICcuL3JlcXVpcmVkLW1hcmtlci5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgUkVRVUlSRURfTUFSS0VSX0dMT0JBTF9DT05GSUcgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWlyZWRNYXJrZXJDb25maWc+KCdSZXF1aXJlZCBNYXJrZXIgR2xvYmFsIENvbmZpZycpO1xuIl19
@@ -0,0 +1,110 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class IntellitoolxFormErrors {
6
+ constructor() {
7
+ this.control = null;
8
+ this.componentValidation = {};
9
+ this.controlLabel = null;
10
+ this.errorMessages = {
11
+ required: 'This field is required',
12
+ email: 'The email entered is invalid',
13
+ minlength: 'You must enter at least {length} characters',
14
+ maxlength: 'You must not enter more than {length} characters',
15
+ pattern: 'Your entry must match the required pattern',
16
+ passwordMismatch: 'Password and confirm password do not match.',
17
+ futureDate: 'Future date is not allowed.',
18
+ exceededAllowedDateDifference: 'Date difference can only be one month.',
19
+ exceededLeastDateAllowed: 'Start date cannot be greater than end date',
20
+ duplicateEmail: 'Each email must be unique.',
21
+ maxWords: 'Exceeded maximum number of words.',
22
+ maxMonthYear: 'Date is later than allowed.',
23
+ minMonthYear: 'Date is earlier than allowed.',
24
+ };
25
+ }
26
+ getErrorMessage(key, value) {
27
+ if (!this.control)
28
+ return '';
29
+ const customMessage = this.componentValidation?.[key]?.message;
30
+ if (typeof value === 'boolean') {
31
+ return customMessage || this.errorMessages[key] || '';
32
+ }
33
+ if (typeof value === 'string') {
34
+ return customMessage || value;
35
+ }
36
+ if (typeof value === 'object') {
37
+ switch (key) {
38
+ case 'pattern':
39
+ return (customMessage ||
40
+ `Please provide a valid ${this.controlLabel || 'data'}.`);
41
+ case 'min':
42
+ return customMessage
43
+ ? customMessage
44
+ : this.controlLabel
45
+ ? `${this.controlLabel} cannot be less than ${value.min}.`
46
+ : `Number cannot be less than ${value.min}`;
47
+ case 'max':
48
+ return customMessage
49
+ ? customMessage
50
+ : this.controlLabel
51
+ ? `${this.controlLabel} cannot be greater than ${value.max}.`
52
+ : `Number cannot be greater than ${value.max}`;
53
+ case 'minlength':
54
+ return (customMessage ||
55
+ this.errorMessages.minlength.replace('{length}', value?.requiredLength || ''));
56
+ case 'maxlength':
57
+ return (customMessage ||
58
+ this.errorMessages.maxlength.replace('{length}', value?.requiredLength || ''));
59
+ case 'customMinValue':
60
+ case 'customMaxValue':
61
+ return customMessage || value?.message || '';
62
+ case 'ngbDate':
63
+ return (customMessage ||
64
+ (this.control.value ? 'Invalid date format provided' : ''));
65
+ case 'passwordMismatch':
66
+ case 'futureDate':
67
+ case 'duplicateEmail':
68
+ case 'maxWords':
69
+ case 'maxMonthYear':
70
+ case 'minMonthYear':
71
+ case 'exceededAllowedDateDifference':
72
+ case 'exceededLeastDateAllowed':
73
+ return customMessage || this.errorMessages[key];
74
+ default:
75
+ return customMessage || '';
76
+ }
77
+ }
78
+ return '';
79
+ }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormErrors, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IntellitoolxFormErrors, isStandalone: true, selector: "itx-form-errors", inputs: { control: "control", componentValidation: "componentValidation", controlLabel: "controlLabel" }, ngImport: i0, template: `
82
+ <ng-container *ngIf="control?.touched && control?.invalid">
83
+ <ng-container *ngFor="let error of control?.errors | keyvalue">
84
+ {{ getErrorMessage(error?.key ?? '', error?.value) }}
85
+ </ng-container>
86
+ </ng-container>
87
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] }); }
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormErrors, decorators: [{
90
+ type: Component,
91
+ args: [{
92
+ selector: 'itx-form-errors',
93
+ standalone: true,
94
+ imports: [CommonModule],
95
+ template: `
96
+ <ng-container *ngIf="control?.touched && control?.invalid">
97
+ <ng-container *ngFor="let error of control?.errors | keyvalue">
98
+ {{ getErrorMessage(error?.key ?? '', error?.value) }}
99
+ </ng-container>
100
+ </ng-container>
101
+ `,
102
+ }]
103
+ }], propDecorators: { control: [{
104
+ type: Input
105
+ }], componentValidation: [{
106
+ type: Input
107
+ }], controlLabel: [{
108
+ type: Input
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLWVycm9ycy9mb3JtLWVycm9ycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFvQ2pELE1BQU0sT0FBTyxzQkFBc0I7SUFabkM7UUFhVyxZQUFPLEdBQ2QsSUFBSSxDQUFDO1FBQ0Usd0JBQW1CLEdBQXdDLEVBQUUsQ0FBQztRQUM5RCxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFNUMsa0JBQWEsR0FBa0I7WUFDN0IsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLFNBQVMsRUFBRSw2Q0FBNkM7WUFDeEQsU0FBUyxFQUFFLGtEQUFrRDtZQUM3RCxPQUFPLEVBQUUsNENBQTRDO1lBQ3JELGdCQUFnQixFQUFFLDZDQUE2QztZQUMvRCxVQUFVLEVBQUUsNkJBQTZCO1lBQ3pDLDZCQUE2QixFQUFFLHdDQUF3QztZQUN2RSx3QkFBd0IsRUFBRSw0Q0FBNEM7WUFDdEUsY0FBYyxFQUFFLDRCQUE0QjtZQUM1QyxRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLFlBQVksRUFBRSw2QkFBNkI7WUFDM0MsWUFBWSxFQUFFLCtCQUErQjtTQUM5QyxDQUFDO0tBMEVIO0lBeEVDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7UUFFL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIs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bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlcyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgcmVxdWlyZWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbWlubGVuZ3RoOiBzdHJpbmc7XG4gIG1heGxlbmd0aDogc3RyaW5nO1xuICBwYXR0ZXJuOiBzdHJpbmc7XG4gIHBhc3N3b3JkTWlzbWF0Y2g6IHN0cmluZztcbiAgZnV0dXJlRGF0ZTogc3RyaW5nO1xuICBleGNlZWRlZEFsbG93ZWREYXRlRGlmZmVyZW5jZTogc3RyaW5nO1xuICBleGNlZWRlZExlYXN0RGF0ZUFsbG93ZWQ6IHN0cmluZztcbiAgZHVwbGljYXRlRW1haWw6IHN0cmluZztcbiAgbWF4V29yZHM6IHN0cmluZztcbiAgbWF4TW9udGhZZWFyOiBzdHJpbmc7XG4gIG1pbk1vbnRoWWVhcjogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdHgtZm9ybS1lcnJvcnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbD8udG91Y2hlZCAmJiBjb250cm9sPy5pbnZhbGlkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBjb250cm9sPy5lcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoZXJyb3I/LmtleSA/PyAnJywgZXJyb3I/LnZhbHVlKSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEludGVsbGl0b29seEZvcm1FcnJvcnMge1xuICBASW5wdXQoKSBjb250cm9sOiBGb3JtQ29udHJvbCB8IFVudHlwZWRGb3JtQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPVxuICAgIG51bGw7XG4gIEBJbnB1dCgpIGNvbXBvbmVudFZhbGlkYXRpb246IFJlY29yZDxzdHJpbmcsIHsgbWVzc2FnZTogc3RyaW5nIH0+ID0ge307XG4gIEBJbnB1dCgpIGNvbnRyb2xMYWJlbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlcyA9IHtcbiAgICByZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuICAgIGVtYWlsOiAnVGhlIGVtYWlsIGVudGVyZWQgaXMgaW52YWxpZCcsXG4gICAgbWlubGVuZ3RoOiAnWW91IG11c3QgZW50ZXIgYXQgbGVhc3Qge2xlbmd0aH0gY2hhcmFjdGVycycsXG4gICAgbWF4bGVuZ3RoOiAnWW91IG11c3Qgbm90IGVudGVyIG1vcmUgdGhhbiB7bGVuZ3RofSBjaGFyYWN0ZXJzJyxcbiAgICBwYXR0ZXJuOiAnWW91ciBlbnRyeSBtdXN0IG1hdGNoIHRoZSByZXF1aXJlZCBwYXR0ZXJuJyxcbiAgICBwYXNzd29yZE1pc21hdGNoOiAnUGFzc3dvcmQgYW5kIGNvbmZpcm0gcGFzc3dvcmQgZG8gbm90IG1hdGNoLicsXG4gICAgZnV0dXJlRGF0ZTogJ0Z1dHVyZSBkYXRlIGlzIG5vdCBhbGxvd2VkLicsXG4gICAgZXhjZWVkZWRBbGxvd2VkRGF0ZURpZmZlcmVuY2U6ICdEYXRlIGRpZmZlcmVuY2UgY2FuIG9ubHkgYmUgb25lIG1vbnRoLicsXG4gICAgZXhjZWVkZWRMZWFzdERhdGVBbGxvd2VkOiAnU3RhcnQgZGF0ZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGVuZCBkYXRlJyxcbiAgICBkdXBsaWNhdGVFbWFpbDogJ0VhY2ggZW1haWwgbXVzdCBiZSB1bmlxdWUuJyxcbiAgICBtYXhXb3JkczogJ0V4Y2VlZGVkIG1heGltdW0gbnVtYmVyIG9mIHdvcmRzLicsXG4gICAgbWF4TW9udGhZZWFyOiAnRGF0ZSBpcyBsYXRlciB0aGFuIGFsbG93ZWQuJyxcbiAgICBtaW5Nb250aFllYXI6ICdEYXRlIGlzIGVhcmxpZXIgdGhhbiBhbGxvd2VkLicsXG4gIH07XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgY3VzdG9tTWVzc2FnZSA9IHRoaXMuY29tcG9uZW50VmFsaWRhdGlvbj8uW2tleV0/Lm1lc3NhZ2U7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlIHx8IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldIHx8ICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZSB8fCB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAncGF0dGVybic6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGN1c3RvbU1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkICR7dGhpcy5jb250cm9sTGFiZWwgfHwgJ2RhdGEnfS5gXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZVxuICAgICAgICAgICAgPyBjdXN0b21NZXNzYWdlXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbExhYmVsXG4gICAgICAgICAgICAgID8gYCR7dGhpcy5jb250cm9sTGFiZWx9IGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt2YWx1ZS5taW59LmBcbiAgICAgICAgICAgICAgOiBgTnVtYmVyIGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt2YWx1ZS5taW59YDtcbiAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZVxuICAgICAgICAgICAgPyBjdXN0b21NZXNzYWdlXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbExhYmVsXG4gICAgICAgICAgICAgID8gYCR7dGhpcy5jb250cm9sTGFiZWx9IGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHt2YWx1ZS5tYXh9LmBcbiAgICAgICAgICAgICAgOiBgTnVtYmVyIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJHt2YWx1ZS5tYXh9YDtcbiAgICAgICAgY2FzZSAnbWlubGVuZ3RoJzpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY3VzdG9tTWVzc2FnZSB8fFxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLm1pbmxlbmd0aC5yZXBsYWNlKFxuICAgICAgICAgICAgICAne2xlbmd0aH0nLFxuICAgICAgICAgICAgICB2YWx1ZT8ucmVxdWlyZWRMZW5ndGggfHwgJycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY3VzdG9tTWVzc2FnZSB8fFxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLm1heGxlbmd0aC5yZXBsYWNlKFxuICAgICAgICAgICAgICAne2xlbmd0aH0nLFxuICAgICAgICAgICAgICB2YWx1ZT8ucmVxdWlyZWRMZW5ndGggfHwgJycsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnY3VzdG9tTWluVmFsdWUnOlxuICAgICAgICBjYXNlICdjdXN0b21NYXhWYWx1ZSc6XG4gICAgICAgICAgcmV0dXJuIGN1c3RvbU1lc3NhZ2UgfHwgdmFsdWU/Lm1lc3NhZ2UgfHwgJyc7XG4gICAgICAgIGNhc2UgJ25nYkRhdGUnOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjdXN0b21NZXNzYWdlIHx8XG4gICAgICAgICAgICAodGhpcy5jb250cm9sLnZhbHVlID8gJ0ludmFsaWQgZGF0ZSBmb3JtYXQgcHJvdmlkZWQnIDogJycpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAncGFzc3dvcmRNaXNtYXRjaCc6XG4gICAgICAgIGNhc2UgJ2Z1dHVyZURhdGUnOlxuICAgICAgICBjYXNlICdkdXBsaWNhdGVFbWFpbCc6XG4gICAgICAgIGNhc2UgJ21heFdvcmRzJzpcbiAgICAgICAgY2FzZSAnbWF4TW9udGhZZWFyJzpcbiAgICAgICAgY2FzZSAnbWluTW9udGhZZWFyJzpcbiAgICAgICAgY2FzZSAnZXhjZWVkZWRBbGxvd2VkRGF0ZURpZmZlcmVuY2UnOlxuICAgICAgICBjYXNlICdleGNlZWRlZExlYXN0RGF0ZUFsbG93ZWQnOlxuICAgICAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlIHx8IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlIHx8ICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1oYW5kbGVyLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdXBkYXRlL2NvbmZpcm0taGFuZGxlci50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDb25maXJtSGFuZGxlciA9ICgpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11cGRhdGUtbWVzc2FnZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXVwZGF0ZS9mb3JtLXVwZGF0ZS1tZXNzYWdlLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSW50ZWxsaXRvb2x4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWcge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHRleHRDb2xvcj86IHN0cmluZztcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ/OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgcGFkZGluZz86IHN0cmluZztcbiAgaWNvbkFuZE1lc3NhZ2VHYXA/OiBzdHJpbmc7XG4gIGljb25TaXplPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,53 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class IntellitoolxFormUpdateMessage {
6
+ constructor() {
7
+ this.defaultMessage = 'There are no changes to save. Please modify a field to continue.';
8
+ }
9
+ get containerStyles() {
10
+ return {
11
+ padding: this.itxFormUpdateMessageConfig?.padding || '1rem',
12
+ gap: this.itxFormUpdateMessageConfig?.iconAndMessageGap || '0.5rem',
13
+ color: this.itxFormUpdateMessageConfig?.textColor || '#963C00',
14
+ border: '1px solid ' +
15
+ (this.itxFormUpdateMessageConfig?.borderColor || '#f3cd5a'),
16
+ 'background-color': this.itxFormUpdateMessageConfig?.backgroundColor || '#fff3cd',
17
+ 'font-weight': String(this.itxFormUpdateMessageConfig?.fontWeight || 400),
18
+ 'border-radius': this.itxFormUpdateMessageConfig?.borderRadius || '0.5rem',
19
+ };
20
+ }
21
+ get iconStyles() {
22
+ return {
23
+ 'font-size': this.itxFormUpdateMessageConfig?.iconSize || '1rem',
24
+ };
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormUpdateMessage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IntellitoolxFormUpdateMessage, isStandalone: true, selector: "itx-form-update-message", inputs: { itxFormUpdateMessageConfig: "itxFormUpdateMessageConfig" }, ngImport: i0, template: `
28
+ <div class="form-update-message" role="alert" [ngStyle]="containerStyles">
29
+ <span class="form-update-icon" aria-hidden="true" [ngStyle]="iconStyles"
30
+ >⚠</span
31
+ >
32
+ <span>
33
+ {{ itxFormUpdateMessageConfig?.message || defaultMessage }}
34
+ </span>
35
+ </div>
36
+ `, isInline: true, styles: [".form-update-message{display:flex;margin-top:.5rem}.form-update-icon{flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IntellitoolxFormUpdateMessage, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'itx-form-update-message', standalone: true, imports: [CommonModule], template: `
41
+ <div class="form-update-message" role="alert" [ngStyle]="containerStyles">
42
+ <span class="form-update-icon" aria-hidden="true" [ngStyle]="iconStyles"
43
+ >⚠</span
44
+ >
45
+ <span>
46
+ {{ itxFormUpdateMessageConfig?.message || defaultMessage }}
47
+ </span>
48
+ </div>
49
+ `, styles: [".form-update-message{display:flex;margin-top:.5rem}.form-update-icon{flex-shrink:0}\n"] }]
50
+ }], propDecorators: { itxFormUpdateMessageConfig: [{
51
+ type: Input
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11cGRhdGUtbWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdXBkYXRlL2Zvcm0tdXBkYXRlLW1lc3NhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBa0IvQyxNQUFNLE9BQU8sNkJBQTZCO0lBaEIxQztRQWtCRSxtQkFBYyxHQUNaLGtFQUFrRSxDQUFDO0tBdUJ0RTtJQXJCQyxJQUFJLGVBQWU7UUFDakIsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxJQUFJLE1BQU07WUFDM0QsR0FBRyxFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxpQkFBaUIsSUFBSSxRQUFRO1lBQ25FLEtBQUssRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxJQUFJLFNBQVM7WUFDOUQsTUFBTSxFQUNKLFlBQVk7Z0JBQ1osQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQztZQUM3RCxrQkFBa0IsRUFDaEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLGVBQWUsSUFBSSxTQUFTO1lBQy9ELGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekUsZUFBZSxFQUNiLElBQUksQ0FBQywwQkFBMEIsRUFBRSxZQUFZLElBQUksUUFBUTtTQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFFBQVEsSUFBSSxNQUFNO1NBQ2pFLENBQUM7SUFDSixDQUFDOytHQXpCVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix5SkFYOUI7Ozs7Ozs7OztHQVNULDhKQVhTLFlBQVk7OzRGQWFYLDZCQUE2QjtrQkFoQnpDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUViOzs7Ozs7Ozs7R0FTVDs4QkFHUSwwQkFBMEI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnRlbGxpdG9vbHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4vZm9ybS11cGRhdGUtbWVzc2FnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0eC1mb3JtLXVwZGF0ZS1tZXNzYWdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tdXBkYXRlLW1lc3NhZ2UuY29tcG9uZW50LmNzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXVwZGF0ZS1tZXNzYWdlXCIgcm9sZT1cImFsZXJ0XCIgW25nU3R5bGVdPVwiY29udGFpbmVyU3R5bGVzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvcm0tdXBkYXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdTdHlsZV09XCJpY29uU3R5bGVzXCJcbiAgICAgICAgPuKaoDwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7IGl0eEZvcm1VcGRhdGVNZXNzYWdlQ29uZmlnPy5tZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEludGVsbGl0b29seEZvcm1VcGRhdGVNZXNzYWdlIHtcbiAgQElucHV0KCkgaXR4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWc/OiBJbnRlbGxpdG9vbHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZztcbiAgZGVmYXVsdE1lc3NhZ2UgPVxuICAgICdUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBzYXZlLiBQbGVhc2UgbW9kaWZ5IGEgZmllbGQgdG8gY29udGludWUuJztcblxuICBnZXQgY29udGFpbmVyU3R5bGVzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBwYWRkaW5nOiB0aGlzLml0eEZvcm1VcGRhdGVNZXNzYWdlQ29uZmlnPy5wYWRkaW5nIHx8ICcxcmVtJyxcbiAgICAgIGdhcDogdGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8uaWNvbkFuZE1lc3NhZ2VHYXAgfHwgJzAuNXJlbScsXG4gICAgICBjb2xvcjogdGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8udGV4dENvbG9yIHx8ICcjOTYzQzAwJyxcbiAgICAgIGJvcmRlcjpcbiAgICAgICAgJzFweCBzb2xpZCAnICtcbiAgICAgICAgKHRoaXMuaXR4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWc/LmJvcmRlckNvbG9yIHx8ICcjZjNjZDVhJyksXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6XG4gICAgICAgIHRoaXMuaXR4Rm9ybVVwZGF0ZU1lc3NhZ2VDb25maWc/LmJhY2tncm91bmRDb2xvciB8fCAnI2ZmZjNjZCcsXG4gICAgICAnZm9udC13ZWlnaHQnOiBTdHJpbmcodGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8uZm9udFdlaWdodCB8fCA0MDApLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOlxuICAgICAgICB0aGlzLml0eEZvcm1VcGRhdGVNZXNzYWdlQ29uZmlnPy5ib3JkZXJSYWRpdXMgfHwgJzAuNXJlbScsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBpY29uU3R5bGVzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAnZm9udC1zaXplJzogdGhpcy5pdHhGb3JtVXBkYXRlTWVzc2FnZUNvbmZpZz8uaWNvblNpemUgfHwgJzFyZW0nLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class UnsavedChangesGuard {
4
+ canDeactivate(component) {
5
+ if (!component.hasUnsavedChanges()) {
6
+ return true;
7
+ }
8
+ const message = component.getUnsavedMessage?.() ||
9
+ 'You have unsaved changes. Leave without saving?';
10
+ return confirm(message);
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnsavedChangesGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnsavedChangesGuard, providedIn: 'root' }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnsavedChangesGuard, decorators: [{
16
+ type: Injectable,
17
+ args: [{ providedIn: 'root' }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zYXZlZC1jaGFuZ2VzLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXVwZGF0ZS91bnNhdmVkLWNoYW5nZXMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixhQUFhLENBQUMsU0FBaUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE9BQU8sR0FDWCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUMvQixpREFBaUQsQ0FBQztRQUVwRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQVhVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBDYW5Db21wb25lbnREZWFjdGl2YXRlIHtcbiAgaGFzVW5zYXZlZENoYW5nZXM6ICgpID0+IGJvb2xlYW47XG4gIGdldFVuc2F2ZWRNZXNzYWdlPzogKCkgPT4gc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFVuc2F2ZWRDaGFuZ2VzR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPENhbkNvbXBvbmVudERlYWN0aXZhdGU+IHtcbiAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IENhbkNvbXBvbmVudERlYWN0aXZhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbXBvbmVudC5oYXNVbnNhdmVkQ2hhbmdlcygpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgIGNvbXBvbmVudC5nZXRVbnNhdmVkTWVzc2FnZT8uKCkgfHxcbiAgICAgICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMuIExlYXZlIHdpdGhvdXQgc2F2aW5nPyc7XG5cbiAgICByZXR1cm4gY29uZmlybShtZXNzYWdlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ export * from './max-amount.validator';
2
+ export * from './max-words.validator';
3
+ export * from './min-amount.validator';
4
+ export * from './password-mismatch.validator';
5
+ export * from './unique-email.validators';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21heC1hbW91bnQudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWF4LXdvcmRzLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL21pbi1hbW91bnQudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdW5pcXVlLWVtYWlsLnZhbGlkYXRvcnMnO1xuIl19
@@ -0,0 +1,18 @@
1
+ export function customMaxAmountValidator(maxValue) {
2
+ return (control) => {
3
+ if (control.value !== null && control.value > maxValue) {
4
+ control.setErrors({ exceededMaximumValue: true });
5
+ const maxValueToFloat = maxValue.toFixed(2);
6
+ return {
7
+ customMaxValue: {
8
+ requiredMin: maxValue,
9
+ actual: control.value,
10
+ message: `The value must not exceed ${maxValueToFloat}`,
11
+ },
12
+ };
13
+ }
14
+ control.setErrors(null);
15
+ return null;
16
+ };
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWFtb3VudC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9tYXgtYW1vdW50LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBZ0I7SUFDdkQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRTtZQUN0RCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsY0FBYyxFQUFFO29CQUNkLFdBQVcsRUFBRSxRQUFRO29CQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3JCLE9BQU8sRUFBRSw2QkFBNkIsZUFBZSxFQUFFO2lCQUN4RDthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tTWF4QW1vdW50VmFsaWRhdG9yKG1heFZhbHVlOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmIChjb250cm9sLnZhbHVlICE9PSBudWxsICYmIGNvbnRyb2wudmFsdWUgPiBtYXhWYWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBleGNlZWRlZE1heGltdW1WYWx1ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IG1heFZhbHVlVG9GbG9hdCA9IG1heFZhbHVlLnRvRml4ZWQoMik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXN0b21NYXhWYWx1ZToge1xuICAgICAgICAgIHJlcXVpcmVkTWluOiBtYXhWYWx1ZSxcbiAgICAgICAgICBhY3R1YWw6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSB2YWx1ZSBtdXN0IG5vdCBleGNlZWQgJHttYXhWYWx1ZVRvRmxvYXR9YCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ export function MaxWordsValidator(maxWords) {
2
+ return (control) => {
3
+ if (!control.value)
4
+ return null;
5
+ const wordCount = control.value.trim().split(/\s+/).length;
6
+ return wordCount > maxWords
7
+ ? { maxWords: { actual: wordCount, max: maxWords } }
8
+ : null;
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXdvcmRzLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL21heC13b3Jkcy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQWdCO0lBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzRCxPQUFPLFNBQVMsR0FBRyxRQUFRO1lBQ3pCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gTWF4V29yZHNWYWxpZGF0b3IobWF4V29yZHM6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHdvcmRDb3VudCA9IGNvbnRyb2wudmFsdWUudHJpbSgpLnNwbGl0KC9cXHMrLykubGVuZ3RoO1xuICAgIHJldHVybiB3b3JkQ291bnQgPiBtYXhXb3Jkc1xuICAgICAgPyB7IG1heFdvcmRzOiB7IGFjdHVhbDogd29yZENvdW50LCBtYXg6IG1heFdvcmRzIH0gfVxuICAgICAgOiBudWxsO1xuICB9O1xufVxuIl19
@@ -0,0 +1,18 @@
1
+ export function customMinAmountValidator(minValue) {
2
+ return (control) => {
3
+ if (control.value !== null && control.value < minValue) {
4
+ control.setErrors({ exceededMinimumValue: true });
5
+ const minValueToFloat = minValue.toFixed(2);
6
+ return {
7
+ customMinValue: {
8
+ requiredMin: minValue,
9
+ actual: control.value,
10
+ message: `The value must be at least ${minValueToFloat}`,
11
+ },
12
+ };
13
+ }
14
+ control.setErrors(null);
15
+ return null;
16
+ };
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLWFtb3VudC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9taW4tYW1vdW50LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBZ0I7SUFDdkQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRTtZQUN0RCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsY0FBYyxFQUFFO29CQUNkLFdBQVcsRUFBRSxRQUFRO29CQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3JCLE9BQU8sRUFBRSw4QkFBOEIsZUFBZSxFQUFFO2lCQUN6RDthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tTWluQW1vdW50VmFsaWRhdG9yKG1pblZhbHVlOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmIChjb250cm9sLnZhbHVlICE9PSBudWxsICYmIGNvbnRyb2wudmFsdWUgPCBtaW5WYWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBleGNlZWRlZE1pbmltdW1WYWx1ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IG1pblZhbHVlVG9GbG9hdCA9IG1pblZhbHVlLnRvRml4ZWQoMik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXN0b21NaW5WYWx1ZToge1xuICAgICAgICAgIHJlcXVpcmVkTWluOiBtaW5WYWx1ZSxcbiAgICAgICAgICBhY3R1YWw6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0ICR7bWluVmFsdWVUb0Zsb2F0fWAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ export function PasswordMismatchValidator(controlName, matchingControlName) {
2
+ return (formGroup) => {
3
+ const control = formGroup.controls[controlName];
4
+ const matchingControl = formGroup.controls[matchingControlName];
5
+ if (matchingControl.errors && !matchingControl.errors['passwordMismatch']) {
6
+ return;
7
+ }
8
+ if (control.value !== matchingControl.value) {
9
+ matchingControl.setErrors({ passwordMismatch: true });
10
+ }
11
+ else {
12
+ matchingControl.setErrors(null);
13
+ }
14
+ };
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvcGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsV0FBbUIsRUFDbkIsbUJBQTJCO0lBRTNCLE9BQU8sQ0FBQyxTQUEyQixFQUFFLEVBQUU7UUFDckMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3pFLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQzNDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBQYXNzd29yZE1pc21hdGNoVmFsaWRhdG9yKFxuICBjb250cm9sTmFtZTogc3RyaW5nLFxuICBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXTtcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XG4gICAgaWYgKG1hdGNoaW5nQ29udHJvbC5lcnJvcnMgJiYgIW1hdGNoaW5nQ29udHJvbC5lcnJvcnNbJ3Bhc3N3b3JkTWlzbWF0Y2gnXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHsgcGFzc3dvcmRNaXNtYXRjaDogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { FormArray, } from '@angular/forms';
2
+ export function uniqueEmailsValidator() {
3
+ return (formArray) => {
4
+ if (!(formArray instanceof FormArray)) {
5
+ return null;
6
+ }
7
+ const controls = formArray.controls;
8
+ // Collect all email values safely
9
+ const emails = controls.map((control) => {
10
+ const value = control.get('email')?.value;
11
+ return typeof value === 'string' ? value.toLowerCase().trim() : '';
12
+ });
13
+ // Count occurrences
14
+ const emailCounts = {};
15
+ emails.forEach((email) => {
16
+ if (email) {
17
+ emailCounts[email] = (emailCounts[email] || 0) + 1;
18
+ }
19
+ });
20
+ // Update each control's errors
21
+ controls.forEach((control) => {
22
+ const emailControl = control.get('email');
23
+ const email = emailControl?.value?.toLowerCase()?.trim();
24
+ if (emailControl) {
25
+ const currentErrors = emailControl.errors || {};
26
+ if (email && emailCounts[email] > 1) {
27
+ emailControl.setErrors({ ...currentErrors, duplicateEmail: true });
28
+ }
29
+ else if (currentErrors?.['duplicateEmail']) {
30
+ delete currentErrors['duplicateEmail'];
31
+ const hasOtherErrors = Object.keys(currentErrors)?.length > 0;
32
+ emailControl.setErrors(hasOtherErrors ? currentErrors : null);
33
+ }
34
+ }
35
+ });
36
+ const hasDuplicates = Object.values(emailCounts)?.some((count) => count > 1);
37
+ return hasDuplicates ? { duplicateEmails: true } : null;
38
+ };
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLWVtYWlsLnZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy91bmlxdWUtZW1haWwudmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLENBQUMsU0FBMEIsRUFBMkIsRUFBRTtRQUM3RCxJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksU0FBUyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUF1QixDQUFDO1FBRW5ELGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBa0IsRUFBRSxFQUFFO1lBQ2pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQzFDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVILG9CQUFvQjtRQUNwQixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMvQixJQUFJLEtBQUssRUFBRTtnQkFDVCxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWtCLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFekQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUVoRCxJQUFJLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ3BFO3FCQUFNLElBQUksYUFBYSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtvQkFDNUMsT0FBTyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDdkMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUM5RCxZQUFZLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQ3BELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUNyQixDQUFDO1FBQ0YsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIEZvcm1BcnJheSxcbiAgRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVFbWFpbHNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGZvcm1BcnJheTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmICghKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzID0gZm9ybUFycmF5LmNvbnRyb2xzIGFzIEZvcm1Hcm91cFtdO1xuXG4gICAgLy8gQ29sbGVjdCBhbGwgZW1haWwgdmFsdWVzIHNhZmVseVxuICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2xzLm1hcCgoY29udHJvbDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wuZ2V0KCdlbWFpbCcpPy52YWx1ZTtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCkgOiAnJztcbiAgICB9KTtcblxuICAgIC8vIENvdW50IG9jY3VycmVuY2VzXG4gICAgY29uc3QgZW1haWxDb3VudHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBlbWFpbHMuZm9yRWFjaCgoZW1haWw6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGVtYWlsKSB7XG4gICAgICAgIGVtYWlsQ291bnRzW2VtYWlsXSA9IChlbWFpbENvdW50c1tlbWFpbF0gfHwgMCkgKyAxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIGVhY2ggY29udHJvbCdzIGVycm9yc1xuICAgIGNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2w6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgY29uc3QgZW1haWxDb250cm9sID0gY29udHJvbC5nZXQoJ2VtYWlsJyk7XG4gICAgICBjb25zdCBlbWFpbCA9IGVtYWlsQ29udHJvbD8udmFsdWU/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKTtcblxuICAgICAgaWYgKGVtYWlsQ29udHJvbCkge1xuICAgICAgICBjb25zdCBjdXJyZW50RXJyb3JzID0gZW1haWxDb250cm9sLmVycm9ycyB8fCB7fTtcblxuICAgICAgICBpZiAoZW1haWwgJiYgZW1haWxDb3VudHNbZW1haWxdID4gMSkge1xuICAgICAgICAgIGVtYWlsQ29udHJvbC5zZXRFcnJvcnMoeyAuLi5jdXJyZW50RXJyb3JzLCBkdXBsaWNhdGVFbWFpbDogdHJ1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXJyb3JzPy5bJ2R1cGxpY2F0ZUVtYWlsJ10pIHtcbiAgICAgICAgICBkZWxldGUgY3VycmVudEVycm9yc1snZHVwbGljYXRlRW1haWwnXTtcbiAgICAgICAgICBjb25zdCBoYXNPdGhlckVycm9ycyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFcnJvcnMpPy5sZW5ndGggPiAwO1xuICAgICAgICAgIGVtYWlsQ29udHJvbC5zZXRFcnJvcnMoaGFzT3RoZXJFcnJvcnMgPyBjdXJyZW50RXJyb3JzIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGhhc0R1cGxpY2F0ZXMgPSBPYmplY3QudmFsdWVzKGVtYWlsQ291bnRzKT8uc29tZShcbiAgICAgIChjb3VudCkgPT4gY291bnQgPiAxLFxuICAgICk7XG4gICAgcmV0dXJuIGhhc0R1cGxpY2F0ZXMgPyB7IGR1cGxpY2F0ZUVtYWlsczogdHJ1ZSB9IDogbnVsbDtcbiAgfTtcbn1cbiJdfQ==