@3kles/kles-material-dynamicforms 16.1.5 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/esm2022/lib/directive/dynamic-component.directive.mjs +5 -5
  2. package/esm2022/lib/directive/dynamic-field.directive.mjs +5 -5
  3. package/esm2022/lib/dynamic-form.component.mjs +19 -16
  4. package/esm2022/lib/fields/array.component.mjs +25 -21
  5. package/esm2022/lib/fields/badge.component.mjs +5 -5
  6. package/esm2022/lib/fields/button-form.component.mjs +3 -3
  7. package/esm2022/lib/fields/button-submit.component.mjs +5 -5
  8. package/esm2022/lib/fields/button-toogle-group.component.mjs +17 -15
  9. package/esm2022/lib/fields/buttonchecker-form.component.mjs +3 -3
  10. package/esm2022/lib/fields/buttonfile-form.component.mjs +3 -3
  11. package/esm2022/lib/fields/checkbox.component.mjs +33 -17
  12. package/esm2022/lib/fields/chip.component.mjs +11 -7
  13. package/esm2022/lib/fields/clear.component.mjs +4 -4
  14. package/esm2022/lib/fields/color.component.mjs +43 -23
  15. package/esm2022/lib/fields/date-time.component.mjs +39 -19
  16. package/esm2022/lib/fields/date.component.mjs +39 -19
  17. package/esm2022/lib/fields/field.abstract.mjs +5 -5
  18. package/esm2022/lib/fields/group.component.mjs +17 -13
  19. package/esm2022/lib/fields/icon.component.mjs +4 -4
  20. package/esm2022/lib/fields/input.clearable.component.mjs +97 -63
  21. package/esm2022/lib/fields/input.component.mjs +95 -61
  22. package/esm2022/lib/fields/label.component.mjs +4 -4
  23. package/esm2022/lib/fields/line-break.component.mjs +4 -4
  24. package/esm2022/lib/fields/link.component.mjs +4 -4
  25. package/esm2022/lib/fields/list-field.component.mjs +59 -38
  26. package/esm2022/lib/fields/radio.component.mjs +48 -16
  27. package/esm2022/lib/fields/range.component.mjs +33 -17
  28. package/esm2022/lib/fields/select.component.mjs +192 -136
  29. package/esm2022/lib/fields/select.lazy-search.component.mjs +194 -144
  30. package/esm2022/lib/fields/select.search.component.mjs +196 -138
  31. package/esm2022/lib/fields/selection-list.component.mjs +33 -27
  32. package/esm2022/lib/fields/slide-toggle.component.mjs +35 -17
  33. package/esm2022/lib/fields/text.component.mjs +5 -5
  34. package/esm2022/lib/fields/textarea.component.mjs +51 -25
  35. package/esm2022/lib/forms/button-control.component.mjs +21 -9
  36. package/esm2022/lib/forms/buttonchecker-control.component.mjs +57 -44
  37. package/esm2022/lib/forms/buttonfile-control.component.mjs +3 -3
  38. package/esm2022/lib/kles-material-dynamicforms.module.mjs +5 -5
  39. package/esm2022/lib/matcher/form-error.matcher.mjs +4 -4
  40. package/esm2022/lib/modules/material.module.mjs +4 -4
  41. package/esm2022/lib/pipe/array.pipe.mjs +3 -3
  42. package/esm2022/lib/pipe/transform.pipe.mjs +3 -3
  43. package/fesm2022/3kles-kles-material-dynamicforms.mjs +1409 -938
  44. package/fesm2022/3kles-kles-material-dynamicforms.mjs.map +1 -1
  45. package/lib/fields/radio.component.d.ts +2 -0
  46. package/package.json +12 -12
@@ -1,5 +1,6 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { KlesFieldAbstract } from './field.abstract';
3
+ import { Observable, of } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "@angular/forms";
@@ -8,41 +9,72 @@ import * as i4 from "@angular/material/radio";
8
9
  import * as i5 from "@angular/material/tooltip";
9
10
  import * as i6 from "@ngx-translate/core";
10
11
  export class KlesFormRadioComponent extends KlesFieldAbstract {
11
- ngOnInit() { super.ngOnInit(); }
12
+ ngOnInit() {
13
+ super.ngOnInit();
14
+ if (this.field.options instanceof Observable) {
15
+ this.options$ = this.field.options;
16
+ }
17
+ else if (this.field.options instanceof Function) {
18
+ this.options$ = this.field.options();
19
+ }
20
+ else {
21
+ this.options$ = of(this.field.options);
22
+ }
23
+ }
12
24
  ngOnDestroy() {
13
25
  super.ngOnDestroy();
14
26
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: KlesFormRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: KlesFormRadioComponent, selector: "kles-form-radiobutton", usesInheritance: true, ngImport: i0, template: `
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: KlesFormRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.2", type: KlesFormRadioComponent, selector: "kles-form-radiobutton", usesInheritance: true, ngImport: i0, template: `
17
29
  <div [formGroup]="group">
18
30
  <label class="radio-label-padding">{{field.label}}</label>
19
31
  <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
20
- <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
32
+ @for (item of options$ | async; track item) {
33
+ <mat-radio-button [value]="item">{{item}}</mat-radio-button>
34
+ }
21
35
  </mat-radio-group>
22
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
23
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
36
+ @for (validation of field.validations; track validation.name) {
37
+ <ng-container ngProjectAs="mat-error">
38
+ @if (group.get(field.name).hasError(validation.name)) {
39
+ <mat-error>{{validation.message | translate}}</mat-error>
40
+ }
24
41
  </ng-container>
25
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
26
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
42
+ }
43
+ @for (validation of field.asyncValidations; track validation.name) {
44
+ <ng-container ngProjectAs="mat-error">
45
+ @if (group.get(field.name).hasError(validation.name)) {
46
+ <mat-error>{{validation.message | translate}}</mat-error>
47
+ }
27
48
  </ng-container>
49
+ }
28
50
  </div>
29
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
51
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex", "id", "name", "aria-label", "aria-labelledby", "aria-describedby", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
30
52
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: KlesFormRadioComponent, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: KlesFormRadioComponent, decorators: [{
32
54
  type: Component,
33
55
  args: [{ selector: 'kles-form-radiobutton', template: `
34
56
  <div [formGroup]="group">
35
57
  <label class="radio-label-padding">{{field.label}}</label>
36
58
  <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
37
- <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
59
+ @for (item of options$ | async; track item) {
60
+ <mat-radio-button [value]="item">{{item}}</mat-radio-button>
61
+ }
38
62
  </mat-radio-group>
39
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
40
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
63
+ @for (validation of field.validations; track validation.name) {
64
+ <ng-container ngProjectAs="mat-error">
65
+ @if (group.get(field.name).hasError(validation.name)) {
66
+ <mat-error>{{validation.message | translate}}</mat-error>
67
+ }
41
68
  </ng-container>
42
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
43
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
69
+ }
70
+ @for (validation of field.asyncValidations; track validation.name) {
71
+ <ng-container ngProjectAs="mat-error">
72
+ @if (group.get(field.name).hasError(validation.name)) {
73
+ <mat-error>{{validation.message | translate}}</mat-error>
74
+ }
44
75
  </ng-container>
76
+ }
45
77
  </div>
46
78
  ` }]
47
79
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvcmFkaW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7OztBQW9CckQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQUV6RCxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoQyxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBTlEsc0JBQXNCO2tHQUF0QixzQkFBc0Isb0ZBaEJyQjs7Ozs7Ozs7Ozs7OztDQWFiOzsyRkFHWSxzQkFBc0I7a0JBbEJsQyxTQUFTOytCQUNJLHVCQUF1QixZQUN2Qjs7Ozs7Ozs7Ozs7OztDQWFiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tcmFkaW9idXR0b24nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInJhZGlvLWxhYmVsLXBhZGRpbmdcIj57e2ZpZWxkLmxhYmVsfX08L2xhYmVsPlxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQub3B0aW9uc1wiIFt2YWx1ZV09XCJpdGVtXCI+e3tpdGVtfX08L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLmFzeW5jVmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbmAsXG4gICAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybVJhZGlvQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBuZ09uSW5pdCgpIHsgc3VwZXIubmdPbkluaXQoKTsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufSJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvcmFkaW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQThCdEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQUd6RCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLFlBQVksVUFBVSxFQUFFO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEM7YUFDSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxZQUFZLFFBQVEsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEM7YUFDSTtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQW5CUSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvRkExQnJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXVCYjs7MkZBR1ksc0JBQXNCO2tCQTVCbEMsU0FBUzsrQkFDSSx1QkFBdUIsWUFDdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBdUJiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLXJhZGlvYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJyYWRpby1sYWJlbC1wYWRkaW5nXCI+e3tmaWVsZC5sYWJlbH19PC9sYWJlbD5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygb3B0aW9ucyQgfCBhc3luYzsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJpdGVtXCI+e3tpdGVtfX08L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uLm5hbWUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbi5uYW1lKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuYCxcbiAgICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAodGhpcy5maWVsZC5vcHRpb25zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IHRoaXMuZmllbGQub3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmZpZWxkLm9wdGlvbnMgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IHRoaXMuZmllbGQub3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IG9mKHRoaXMuZmllbGQub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59Il19
@@ -20,8 +20,8 @@ let KlesFormRangeComponent = class KlesFormRangeComponent extends KlesFieldAbstr
20
20
  ngOnDestroy() {
21
21
  super.ngOnDestroy();
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: KlesFormRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: KlesFormRangeComponent, selector: "kles-form-rangepicker", usesInheritance: true, ngImport: i0, template: `
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: KlesFormRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.2", type: KlesFormRangeComponent, selector: "kles-form-rangepicker", usesInheritance: true, ngImport: i0, template: `
25
25
  <mat-form-field [color]="field.color" [formGroup]="group">
26
26
 
27
27
  <mat-label>{{field.label}}</mat-label>
@@ -40,20 +40,28 @@ let KlesFormRangeComponent = class KlesFormRangeComponent extends KlesFieldAbstr
40
40
  <mat-date-range-picker #picker></mat-date-range-picker>
41
41
  <mat-hint>{{field.hint}}</mat-hint>
42
42
 
43
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
44
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
45
- </ng-container>
46
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
47
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
48
- </ng-container>
43
+ @for (validation of field.validations; track validation.name) {
44
+ <ng-container ngProjectAs="mat-error">
45
+ @if (group.get(field.name).hasError(validation.name)) {
46
+ <mat-error>{{validation.message | translate}}</mat-error>
47
+ }
48
+ </ng-container>
49
+ }
50
+ @for (validation of field.asyncValidations; track validation.name) {
51
+ <ng-container ngProjectAs="mat-error">
52
+ @if (group.get(field.name).hasError(validation.name)) {
53
+ <mat-error>{{validation.message | translate}}</mat-error>
54
+ }
55
+ </ng-container>
56
+ }
49
57
  </mat-form-field>
50
- `, isInline: true, styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i4.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i4.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
58
+ `, isInline: true, styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i4.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i4.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
51
59
  };
52
60
  KlesFormRangeComponent = __decorate([
53
61
  FieldMapper({ type: EnumType.range, factory: (field) => (new KlesFormRange(field).create()) })
54
62
  ], KlesFormRangeComponent);
55
63
  export { KlesFormRangeComponent };
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: KlesFormRangeComponent, decorators: [{
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: KlesFormRangeComponent, decorators: [{
57
65
  type: Component,
58
66
  args: [{ selector: "kles-form-rangepicker", template: `
59
67
  <mat-form-field [color]="field.color" [formGroup]="group">
@@ -74,13 +82,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
74
82
  <mat-date-range-picker #picker></mat-date-range-picker>
75
83
  <mat-hint>{{field.hint}}</mat-hint>
76
84
 
77
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
78
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
79
- </ng-container>
80
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
81
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
82
- </ng-container>
85
+ @for (validation of field.validations; track validation.name) {
86
+ <ng-container ngProjectAs="mat-error">
87
+ @if (group.get(field.name).hasError(validation.name)) {
88
+ <mat-error>{{validation.message | translate}}</mat-error>
89
+ }
90
+ </ng-container>
91
+ }
92
+ @for (validation of field.asyncValidations; track validation.name) {
93
+ <ng-container ngProjectAs="mat-error">
94
+ @if (group.get(field.name).hasError(validation.name)) {
95
+ <mat-error>{{validation.message | translate}}</mat-error>
96
+ }
97
+ </ng-container>
98
+ }
83
99
  </mat-form-field>
84
100
  `, styles: ["mat-form-field{width:100%}\n"] }]
85
101
  }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvcmFuZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFrQzlDLElBQU0sc0JBQXNCLEdBQTVCLE1BQU0sc0JBQXVCLFNBQVEsaUJBQWlCO0lBRXpELDBCQUEwQjtJQUMxQixpREFBaUQ7SUFDakQsK0NBQStDO0lBQy9DLE1BQU07SUFFTixRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoQyxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBWFEsc0JBQXNCO2tHQUF0QixzQkFBc0Isb0ZBN0JyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EwQlQ7O0FBR1Esc0JBQXNCO0lBaENsQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0dBZ0NsRixzQkFBc0IsQ0FZbEM7U0FaWSxzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkEvQmxDLFNBQVM7K0JBQ0ksdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgS2xlc0Zvcm1SYW5nZSB9IGZyb20gXCIuLi9jb250cm9scy9yYW5nZS5jb250cm9sXCI7XG5pbXBvcnQgeyBGaWVsZE1hcHBlciB9IGZyb20gXCIuLi9kZWNvcmF0b3JzL2NvbXBvbmVudC5kZWNvcmF0b3JcIjtcbmltcG9ydCB7IEVudW1UeXBlIH0gZnJvbSBcIi4uL2VudW1zL3R5cGUuZW51bVwiO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcblxuQEZpZWxkTWFwcGVyKHsgdHlwZTogRW51bVR5cGUucmFuZ2UsIGZhY3Rvcnk6IChmaWVsZCkgPT4gKG5ldyBLbGVzRm9ybVJhbmdlKGZpZWxkKS5jcmVhdGUoKSkgfSlcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcImtsZXMtZm9ybS1yYW5nZXBpY2tlclwiLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1mb3JtLWZpZWxkIFtjb2xvcl09XCJmaWVsZC5jb2xvclwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cblxuICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxuXG4gICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCBbZm9ybUdyb3VwTmFtZV09XCJmaWVsZC5uYW1lXCIgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiXG4gICAgICAgIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiA+XG4gICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cIihmaWVsZC5wbGFjZWhvbGRlcj8uc3RhcnQgPyBmaWVsZC5wbGFjZWhvbGRlcj8uc3RhcnQgOiAnJykgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIFtwbGFjZWhvbGRlcl09XCIoZmllbGQucGxhY2Vob2xkZXI/LmVuZCA/IGZpZWxkLnBsYWNlaG9sZGVyPy5lbmQgOiAnJykgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBbZm9yXT1cInBpY2tlclwiIG1hdFN1ZmZpeD48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuICAgICAgICA8bWF0LWhpbnQ+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICBgLFxuICAgIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IGNhbGMoMTAwJSl9J11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1SYW5nZUNvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8gcmFuZ2UgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAvLyAgICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbDxEYXRlIHwgbnVsbD4obnVsbCksXG4gICAgLy8gICAgIGVuZDogbmV3IEZvcm1Db250cm9sPERhdGUgfCBudWxsPihudWxsKSxcbiAgICAvLyB9KTtcblxuICAgIG5nT25Jbml0KCkgeyBzdXBlci5uZ09uSW5pdCgpOyB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvcmFuZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUEwQzlDLElBQU0sc0JBQXNCLEdBQTVCLE1BQU0sc0JBQXVCLFNBQVEsaUJBQWlCO0lBRXpELDBCQUEwQjtJQUMxQixpREFBaUQ7SUFDakQsK0NBQStDO0lBQy9DLE1BQU07SUFFTixRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoQyxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBWFEsc0JBQXNCO2tHQUF0QixzQkFBc0Isb0ZBckNyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWtDVDs7QUFHUSxzQkFBc0I7SUF4Q2xDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7R0F3Q2xGLHNCQUFzQixDQVlsQzs7MkZBWlksc0JBQXNCO2tCQXZDbEMsU0FBUzsrQkFDSSx1QkFBdUIsWUFDdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FrQ1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEtsZXNGb3JtUmFuZ2UgfSBmcm9tIFwiLi4vY29udHJvbHMvcmFuZ2UuY29udHJvbFwiO1xuaW1wb3J0IHsgRmllbGRNYXBwZXIgfSBmcm9tIFwiLi4vZGVjb3JhdG9ycy9jb21wb25lbnQuZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBFbnVtVHlwZSB9IGZyb20gXCIuLi9lbnVtcy90eXBlLmVudW1cIjtcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cbkBGaWVsZE1hcHBlcih7IHR5cGU6IEVudW1UeXBlLnJhbmdlLCBmYWN0b3J5OiAoZmllbGQpID0+IChuZXcgS2xlc0Zvcm1SYW5nZShmaWVsZCkuY3JlYXRlKCkpIH0pXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJrbGVzLWZvcm0tcmFuZ2VwaWNrZXJcIixcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtZm9ybS1maWVsZCBbY29sb3JdPVwiZmllbGQuY29sb3JcIiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG5cbiAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cblxuICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW2Zvcm1Hcm91cE5hbWVdPVwiZmllbGQubmFtZVwiIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIiBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIlxuICAgICAgICBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgPlxuICAgICAgICAgICAgPGlucHV0IG1hdFN0YXJ0RGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIFtwbGFjZWhvbGRlcl09XCIoZmllbGQucGxhY2Vob2xkZXI/LnN0YXJ0ID8gZmllbGQucGxhY2Vob2xkZXI/LnN0YXJ0IDogJycpIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiKGZpZWxkLnBsYWNlaG9sZGVyPy5lbmQgPyBmaWVsZC5wbGFjZWhvbGRlcj8uZW5kIDogJycpIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJwaWNrZXJcIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlcj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgPG1hdC1oaW50Pnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cblxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uLm5hbWUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbi5uYW1lKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIGAsXG4gICAgc3R5bGVzOiBbJ21hdC1mb3JtLWZpZWxkIHt3aWR0aDogY2FsYygxMDAlKX0nXVxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybVJhbmdlQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvLyByYW5nZSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIC8vICAgICBzdGFydDogbmV3IEZvcm1Db250cm9sPERhdGUgfCBudWxsPihudWxsKSxcbiAgICAvLyAgICAgZW5kOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpLFxuICAgIC8vIH0pO1xuXG4gICAgbmdPbkluaXQoKSB7IHN1cGVyLm5nT25Jbml0KCk7IH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==