@3kles/kles-material-dynamicforms 17.4.2 → 17.5.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 (55) hide show
  1. package/esm2022/lib/directive/dynamic-component.directive.mjs +3 -3
  2. package/esm2022/lib/directive/dynamic-field.directive.mjs +9 -5
  3. package/esm2022/lib/dynamic-form.component.mjs +31 -17
  4. package/esm2022/lib/fields/array.component.mjs +3 -3
  5. package/esm2022/lib/fields/badge.component.mjs +3 -3
  6. package/esm2022/lib/fields/button-fab.component.mjs +3 -3
  7. package/esm2022/lib/fields/button-form.component.mjs +3 -3
  8. package/esm2022/lib/fields/button-icon.component.mjs +3 -3
  9. package/esm2022/lib/fields/button-mini-fab.component.mjs +3 -3
  10. package/esm2022/lib/fields/button-toogle-group.component.mjs +3 -3
  11. package/esm2022/lib/fields/buttonchecker-form.component.mjs +3 -3
  12. package/esm2022/lib/fields/buttonfile-form.component.mjs +3 -3
  13. package/esm2022/lib/fields/checkbox.component.mjs +20 -9
  14. package/esm2022/lib/fields/chip.component.mjs +3 -3
  15. package/esm2022/lib/fields/clear.component.mjs +3 -3
  16. package/esm2022/lib/fields/color.component.mjs +3 -3
  17. package/esm2022/lib/fields/date-time.component.mjs +3 -3
  18. package/esm2022/lib/fields/date.component.mjs +3 -3
  19. package/esm2022/lib/fields/field.abstract.mjs +3 -3
  20. package/esm2022/lib/fields/group.component.mjs +3 -3
  21. package/esm2022/lib/fields/icon.component.mjs +3 -3
  22. package/esm2022/lib/fields/input.clearable.component.mjs +3 -3
  23. package/esm2022/lib/fields/input.component.mjs +3 -3
  24. package/esm2022/lib/fields/label.component.mjs +3 -3
  25. package/esm2022/lib/fields/line-break.component.mjs +3 -3
  26. package/esm2022/lib/fields/link.component.mjs +3 -3
  27. package/esm2022/lib/fields/list-field.component.mjs +3 -3
  28. package/esm2022/lib/fields/radio.component.mjs +3 -3
  29. package/esm2022/lib/fields/range.component.mjs +3 -3
  30. package/esm2022/lib/fields/select.component.mjs +3 -3
  31. package/esm2022/lib/fields/select.lazy-search.component.mjs +3 -3
  32. package/esm2022/lib/fields/select.search.component.mjs +3 -3
  33. package/esm2022/lib/fields/selection-list.component.mjs +3 -3
  34. package/esm2022/lib/fields/selection-list.search.component.mjs +3 -3
  35. package/esm2022/lib/fields/slide-toggle.component.mjs +3 -3
  36. package/esm2022/lib/fields/text.component.mjs +3 -3
  37. package/esm2022/lib/fields/textarea.component.mjs +3 -3
  38. package/esm2022/lib/forms/button-control-base.mjs +3 -3
  39. package/esm2022/lib/forms/button-control.component.mjs +3 -3
  40. package/esm2022/lib/forms/buttonchecker-control.component.mjs +3 -3
  41. package/esm2022/lib/forms/buttonfile-control.component.mjs +3 -3
  42. package/esm2022/lib/forms/fab-control.component.mjs +3 -3
  43. package/esm2022/lib/forms/icon-button-control.component.mjs +3 -3
  44. package/esm2022/lib/forms/mini-fab-control.component.mjs +3 -3
  45. package/esm2022/lib/interfaces/field.config.interface.mjs +1 -1
  46. package/esm2022/lib/kles-material-dynamicforms.module.mjs +4 -4
  47. package/esm2022/lib/matcher/form-error.matcher.mjs +3 -3
  48. package/esm2022/lib/modules/material.module.mjs +4 -4
  49. package/esm2022/lib/pipe/array.pipe.mjs +3 -3
  50. package/esm2022/lib/pipe/transform.pipe.mjs +3 -3
  51. package/fesm2022/3kles-kles-material-dynamicforms.mjs +194 -167
  52. package/fesm2022/3kles-kles-material-dynamicforms.mjs.map +1 -1
  53. package/lib/dynamic-form.component.d.ts +7 -4
  54. package/lib/interfaces/field.config.interface.d.ts +4 -1
  55. package/package.json +1 -1
@@ -26,10 +26,10 @@ export class KlesComponentDirective {
26
26
  this.componentRef.instance.value = this.value;
27
27
  this.componentRef.instance.field = this.field;
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesComponentDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
30
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: KlesComponentDirective, selector: "[klesComponent]", inputs: { component: "component", value: "value", field: "field" }, usesOnChanges: true, ngImport: i0 }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesComponentDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: KlesComponentDirective, selector: "[klesComponent]", inputs: { component: "component", value: "value", field: "field" }, usesOnChanges: true, ngImport: i0 }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesComponentDirective, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesComponentDirective, decorators: [{
33
33
  type: Directive,
34
34
  args: [{
35
35
  selector: '[klesComponent]'
@@ -58,8 +58,12 @@ export class KlesDynamicFieldDirective {
58
58
  this.componentRef.instance.siblingFields = this.siblingFields;
59
59
  }
60
60
  createComponentRef(injector) {
61
- return this.container.createComponent(this.field.component
61
+ const componentRef = this.container.createComponent(this.field.component
62
62
  || componentMapper.find(element => element.type === this.field.type)?.component, { injector, projectableNodes: [this.subComponents.map(sub => sub.location.nativeElement)] });
63
+ if (this.field.hostClass) {
64
+ componentRef.location.nativeElement.classList.add(this.field.hostClass);
65
+ }
66
+ return componentRef;
63
67
  }
64
68
  createSubComponent(componentType) {
65
69
  const component = this.container.createComponent(componentType);
@@ -68,10 +72,10 @@ export class KlesDynamicFieldDirective {
68
72
  component.instance.siblingFields = this.siblingFields;
69
73
  return component;
70
74
  }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesDynamicFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
72
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: { field: "field", group: "group", siblingFields: "siblingFields" }, usesOnChanges: true, ngImport: i0 }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesDynamicFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: { field: "field", group: "group", siblingFields: "siblingFields" }, usesOnChanges: true, ngImport: i0 }); }
73
77
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesDynamicFieldDirective, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesDynamicFieldDirective, decorators: [{
75
79
  type: Directive,
76
80
  args: [{
77
81
  selector: '[klesDynamicField]'
@@ -83,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
83
87
  }], siblingFields: [{
84
88
  type: Input
85
89
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2RpcmVjdGl2ZS9keW5hbWljLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLEtBQUssRUFBcUYsUUFBUSxFQUNoSCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLHlCQUF5QjtJQVFsQyxZQUFzQixTQUEyQixFQUFVLFFBQWtCO1FBQXZELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUY3RSxrQkFBYSxHQUEwQixFQUFFLENBQUM7SUFFdUMsQ0FBQztJQUVsRixXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDM0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxD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R0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsYUFBd0I7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdEQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0FuRlEseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtpQkFDakM7NEdBRVksS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYsIENvbXBvbmVudFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIFR5cGUsIEluamVjdG9yLCBTdGF0aWNQcm92aWRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IGNvbXBvbmVudE1hcHBlciB9IGZyb20gJy4uL2RlY29yYXRvcnMvY29tcG9uZW50LmRlY29yYXRvcic7XG5pbXBvcnQgeyBLbGVzRm9ybUNsZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzL2NsZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJS2xlc0ZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maWVsZC5jb25maWcuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdba2xlc0R5bmFtaWNGaWVsZF0nXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNEeW5hbWljRmllbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBmaWVsZDogSUtsZXNGaWVsZENvbmZpZztcbiAgICBASW5wdXQoKSBncm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKSBzaWJsaW5nRmllbGRzOiBJS2xlc0ZpZWxkQ29uZmlnW107XG5cbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIHN1YkNvbXBvbmVudHM6IChDb21wb25lbnRSZWY8YW55PilbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwID0gY2hhbmdlcy5ncm91cC5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuZmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQgPSBjaGFuZ2VzLmZpZWxkLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkQ29tcG9uZW50KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc3ViQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4gYy5kZXN0cm95KCkpO1xuICAgICAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzID0gW107XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zOiB7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW107XG4gICAgICAgICAgICBwYXJlbnQ/OiBJbmplY3RvcjtcbiAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgIH0gPSB7XG4gICAgICAgICAgICBwcm92aWRlcnM6IHRoaXMuZmllbGQuZGF0ZU9wdGlvbnMgPyBbXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZmllbGQuZGF0ZU9wdGlvbnMuYWRhcHRlciA/IFt7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgICAgICAgICB1c2VDbGFzczogdGhpcy5maWVsZC5kYXRlT3B0aW9ucy5hZGFwdGVyLmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiB0aGlzLmZpZWxkLmRhdGVPcHRpb25zLmFkYXB0ZXIuZGVwcyB8fCBbXSxcbiAgICAgICAgICAgICAgICB9XSA6IFtdKSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6IHRoaXMuZmllbGQuZGF0ZU9wdGlvbnMubGFuZ3VhZ2UgfSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiB0aGlzLmZpZWxkLmRhdGVPcHRpb25zLmRhdGVGb3JtYXQgfSxcbiAgICAgICAgICAgIF0gOiBbXSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvclxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yOiBJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShvcHRpb25zKTtcblxuICAgICAgICBpZiAodGhpcy5maWVsZC5jbGVhcmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2FudCA9IHRoaXMuY3JlYXRlU3ViQ29tcG9uZW50KHRoaXMuZmllbGQuY2xlYXJhYmxlQ29tcG9uZW50IHx8IEtsZXNGb3JtQ2xlYXJDb21wb25lbnQpO1xuICAgICAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzLnB1c2goY29tcG9zYW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWVsZC5zdWJDb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMucHVzaCguLi50aGlzLmZpZWxkLnN1YkNvbXBvbmVudHMubWFwKChzdWJDb21wb25lbnQpID0+IHRoaXMuY3JlYXRlU3ViQ29tcG9uZW50KHN1YkNvbXBvbmVudCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVDb21wb25lbnRSZWYoaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaWJsaW5nRmllbGRzID0gdGhpcy5zaWJsaW5nRmllbGRzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDb21wb25lbnRSZWYoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy5maWVsZC5jb21wb25lbnRcbiAgICAgICAgICAgIHx8IGNvbXBvbmVudE1hcHBlci5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSB0aGlzLmZpZWxkLnR5cGUpPy5jb21wb25lbnQsXG4gICAgICAgICAgICB7IGluamVjdG9yLCBwcm9qZWN0YWJsZU5vZGVzOiBbdGhpcy5zdWJDb21wb25lbnRzLm1hcChzdWIgPT4gc3ViLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpXSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVN1YkNvbXBvbmVudChjb21wb25lbnRUeXBlOiBUeXBlPGFueT4pOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICAgICAgY29tcG9uZW50Lmluc3RhbmNlLmZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgY29tcG9uZW50Lmluc3RhbmNlLmdyb3VwID0gdGhpcy5ncm91cDtcbiAgICAgICAgY29tcG9uZW50Lmluc3RhbmNlLnNpYmxpbmdGaWVsZHMgPSB0aGlzLnNpYmxpbmdGaWVsZHM7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxufVxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2RpcmVjdGl2ZS9keW5hbWljLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLEtBQUssRUFBcUYsUUFBUSxFQUNoSCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLHlCQUF5QjtJQVFsQyxZQUFzQixTQUEyQixFQUFVLFFBQWtCO1FBQXZELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUY3RSxrQkFBYSxHQUEwQixFQUFFLENBQUM7SUFFdUMsQ0FBQztJQUVsRixXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDM0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxD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YUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUN0QixZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0U7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsYUFBd0I7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdEQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0F6RlEseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtpQkFDakM7NEdBRVksS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYsIENvbXBvbmVudFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIFR5cGUsIEluamVjdG9yLCBTdGF0aWNQcm92aWRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IGNvbXBvbmVudE1hcHBlciB9IGZyb20gJy4uL2RlY29yYXRvcnMvY29tcG9uZW50LmRlY29yYXRvcic7XG5pbXBvcnQgeyBLbGVzRm9ybUNsZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzL2NsZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJS2xlc0ZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maWVsZC5jb25maWcuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdba2xlc0R5bmFtaWNGaWVsZF0nXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNEeW5hbWljRmllbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBmaWVsZDogSUtsZXNGaWVsZENvbmZpZztcbiAgICBASW5wdXQoKSBncm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKSBzaWJsaW5nRmllbGRzOiBJS2xlc0ZpZWxkQ29uZmlnW107XG5cbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIHN1YkNvbXBvbmVudHM6IChDb21wb25lbnRSZWY8YW55PilbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwID0gY2hhbmdlcy5ncm91cC5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuZmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQgPSBjaGFuZ2VzLmZpZWxkLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkQ29tcG9uZW50KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc3ViQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4gYy5kZXN0cm95KCkpO1xuICAgICAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzID0gW107XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zOiB7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW107XG4gICAgICAgICAgICBwYXJlbnQ/OiBJbmplY3RvcjtcbiAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgIH0gPSB7XG4gICAgICAgICAgICBwcm92aWRlcnM6IHRoaXMuZmllbGQuZGF0ZU9wdGlvbnMgPyBbXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZmllbGQuZGF0ZU9wdGlvbnMuYWRhcHRlciA/IFt7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgICAgICAgICB1c2VDbGFzczogdGhpcy5maWVsZC5kYXRlT3B0aW9ucy5hZGFwdGVyLmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiB0aGlzLmZpZWxkLmRhdGVPcHRpb25zLmFkYXB0ZXIuZGVwcyB8fCBbXSxcbiAgICAgICAgICAgICAgICB9XSA6IFtdKSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6IHRoaXMuZmllbGQuZGF0ZU9wdGlvbnMubGFuZ3VhZ2UgfSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiB0aGlzLmZpZWxkLmRhdGVPcHRpb25zLmRhdGVGb3JtYXQgfSxcbiAgICAgICAgICAgIF0gOiBbXSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvclxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yOiBJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShvcHRpb25zKTtcblxuICAgICAgICBpZiAodGhpcy5maWVsZC5jbGVhcmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2FudCA9IHRoaXMuY3JlYXRlU3ViQ29tcG9uZW50KHRoaXMuZmllbGQuY2xlYXJhYmxlQ29tcG9uZW50IHx8IEtsZXNGb3JtQ2xlYXJDb21wb25lbnQpO1xuICAgICAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzLnB1c2goY29tcG9zYW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWVsZC5zdWJDb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMucHVzaCguLi50aGlzLmZpZWxkLnN1YkNvbXBvbmVudHMubWFwKChzdWJDb21wb25lbnQpID0+IHRoaXMuY3JlYXRlU3ViQ29tcG9uZW50KHN1YkNvbXBvbmVudCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVDb21wb25lbnRSZWYoaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaWJsaW5nRmllbGRzID0gdGhpcy5zaWJsaW5nRmllbGRzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDb21wb25lbnRSZWYoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmZpZWxkLmNvbXBvbmVudFxuICAgICAgICAgICAgfHwgY29tcG9uZW50TWFwcGVyLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LnR5cGUgPT09IHRoaXMuZmllbGQudHlwZSk/LmNvbXBvbmVudCxcbiAgICAgICAgICAgIHsgaW5qZWN0b3IsIHByb2plY3RhYmxlTm9kZXM6IFt0aGlzLnN1YkNvbXBvbmVudHMubWFwKHN1YiA9PiBzdWIubG9jYXRpb24ubmF0aXZlRWxlbWVudCldIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmhvc3RDbGFzcykge1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmZpZWxkLmhvc3RDbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU3ViQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFR5cGU8YW55Pik6IENvbXBvbmVudFJlZjxhbnk+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICBjb21wb25lbnQuaW5zdGFuY2UuZmllbGQgPSB0aGlzLmZpZWxkO1xuICAgICAgICBjb21wb25lbnQuaW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgICBjb21wb25lbnQuaW5zdGFuY2Uuc2libGluZ0ZpZWxkcyA9IHRoaXMuc2libGluZ0ZpZWxkcztcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9XG59XG4iXX0=
@@ -5,7 +5,8 @@ import { EnumType } from './enums/type.enum';
5
5
  import { klesFieldControlFactory } from './factories/field.factory';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/forms";
8
- import * as i2 from "./directive/dynamic-field.directive";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "./directive/dynamic-field.directive";
9
10
  const originFormControlNgOnChanges = FormControlDirective.prototype.ngOnChanges;
10
11
  FormControlDirective.prototype.ngOnChanges = function () {
11
12
  this.form.nativeElement = this.valueAccessor._elementRef?.nativeElement;
@@ -31,19 +32,15 @@ export class KlesDynamicFormComponent {
31
32
  this._onLoaded = new EventEmitter();
32
33
  this.direction = 'column';
33
34
  this.orientationClass = 'dynamic-form-column';
34
- this.orientationItemClass = 'dynamic-form-column-item';
35
35
  }
36
36
  ngOnInit() {
37
37
  this.form = this.createForm();
38
- this.orientationClass = this.direction === 'row' ? 'dynamic-form-row' : 'dynamic-form-column';
39
- this.orientationItemClass = this.direction === 'row' ? 'dynamic-form-row-item' : 'dynamic-form-column-item';
38
+ this.setOrientationClass();
40
39
  this._onLoaded.emit();
41
40
  }
42
41
  ngOnChanges(changes) {
43
42
  if (!changes.fields?.firstChange) {
44
43
  this.updateForm();
45
- // this.form = this.createControl();
46
- // this.form.controls = {};
47
44
  this._onLoaded.emit();
48
45
  }
49
46
  if (!changes.validators?.firstChange && this.form) {
@@ -54,7 +51,6 @@ export class KlesDynamicFormComponent {
54
51
  }
55
52
  if (!changes.direction?.firstChange) {
56
53
  this.orientationClass = this.direction === 'row' ? 'dynamic-form-row' : 'dynamic-form-column';
57
- this.orientationItemClass = this.direction === 'row' ? 'dynamic-form-row-item' : 'dynamic-form-column-item';
58
54
  }
59
55
  }
60
56
  onSubmit(event) {
@@ -67,6 +63,22 @@ export class KlesDynamicFormComponent {
67
63
  this.validateAllFormFields(this.form);
68
64
  }
69
65
  }
66
+ setOrientationClass() {
67
+ switch (this.direction) {
68
+ case 'column':
69
+ this.orientationClass = 'dynamic-form-column';
70
+ break;
71
+ case 'row':
72
+ this.orientationClass = 'dynamic-form-row';
73
+ break;
74
+ case 'grid':
75
+ this.orientationClass = 'dynamic-form-grid';
76
+ break;
77
+ case 'inline-grid':
78
+ this.orientationClass = 'dynamic-form-inline-grid';
79
+ break;
80
+ }
81
+ }
70
82
  updateForm() {
71
83
  Object.keys(this.form.controls).filter(key => {
72
84
  return !this.fields.map(field => field.name).includes(key);
@@ -151,30 +163,30 @@ export class KlesDynamicFormComponent {
151
163
  control.markAsTouched({ onlySelf: true });
152
164
  });
153
165
  }
154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesDynamicFormComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
155
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: KlesDynamicFormComponent, selector: "app-kles-dynamic-form", inputs: { fields: "fields", validators: "validators", asyncValidators: "asyncValidators", direction: "direction" }, outputs: { submit: "submit", _onLoaded: "_onLoaded" }, exportAs: ["klesDynamicForm"], usesOnChanges: true, ngImport: i0, template: `
156
- <form class="{{orientationClass}}" [formGroup]="form" (submit)="onSubmit($event)">
166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesDynamicFormComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: KlesDynamicFormComponent, selector: "app-kles-dynamic-form", inputs: { fields: "fields", validators: "validators", asyncValidators: "asyncValidators", direction: "direction", formClass: "formClass" }, outputs: { submit: "submit", _onLoaded: "_onLoaded" }, exportAs: ["klesDynamicForm"], usesOnChanges: true, ngImport: i0, template: `
168
+ <form class="{{orientationClass}}" [ngClass]="formClass" [formGroup]="form" (submit)="onSubmit($event)">
157
169
  @for (field of fields; track field.name) {
158
170
  @if (field.visible !== false) {
159
- <ng-container class="{{orientationItemClass}}" klesDynamicField [field]="field" [group]="form" [siblingFields]="fields">
171
+ <ng-container klesDynamicField [field]="field" [group]="form" [siblingFields]="fields">
160
172
  </ng-container>
161
173
  }
162
174
  }
163
175
  </form>
164
- `, isInline: true, styles: [".dynamic-form-column{display:flex;flex-direction:column}\n", ".dynamic-form-column>*{width:100%}\n", ".dynamic-form-row{display:inline-flex;flex-wrap:wrap;gap:10px}\n", ".dynamic-form-row>*{width:100%}\n", ".dynamic-form-row-item{margin-right:10px}\n", ".dynamic-form-column-item{margin-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: ["field", "group", "siblingFields"] }] }); }
176
+ `, isInline: true, styles: [".dynamic-form-column{display:flex;flex-direction:column}\n", ".dynamic-form-column>*{width:100%}\n", ".dynamic-form-row{display:inline-flex;flex-wrap:wrap;gap:10px}\n", ".dynamic-form-row>*{width:100%}\n", ".dynamic-form-grid{display:grid}\n", ".dynamic-form-inline-grid{display:inline-grid}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: ["field", "group", "siblingFields"] }] }); }
165
177
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesDynamicFormComponent, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesDynamicFormComponent, decorators: [{
167
179
  type: Component,
168
180
  args: [{ exportAs: 'klesDynamicForm', selector: 'app-kles-dynamic-form', template: `
169
- <form class="{{orientationClass}}" [formGroup]="form" (submit)="onSubmit($event)">
181
+ <form class="{{orientationClass}}" [ngClass]="formClass" [formGroup]="form" (submit)="onSubmit($event)">
170
182
  @for (field of fields; track field.name) {
171
183
  @if (field.visible !== false) {
172
- <ng-container class="{{orientationItemClass}}" klesDynamicField [field]="field" [group]="form" [siblingFields]="fields">
184
+ <ng-container klesDynamicField [field]="field" [group]="form" [siblingFields]="fields">
173
185
  </ng-container>
174
186
  }
175
187
  }
176
188
  </form>
177
- `, styles: [".dynamic-form-column{display:flex;flex-direction:column}\n", ".dynamic-form-column>*{width:100%}\n", ".dynamic-form-row{display:inline-flex;flex-wrap:wrap;gap:10px}\n", ".dynamic-form-row>*{width:100%}\n", ".dynamic-form-row-item{margin-right:10px}\n", ".dynamic-form-column-item{margin-bottom:10px}\n"] }]
189
+ `, styles: [".dynamic-form-column{display:flex;flex-direction:column}\n", ".dynamic-form-column>*{width:100%}\n", ".dynamic-form-row{display:inline-flex;flex-wrap:wrap;gap:10px}\n", ".dynamic-form-row>*{width:100%}\n", ".dynamic-form-grid{display:grid}\n", ".dynamic-form-inline-grid{display:inline-grid}\n"] }]
178
190
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { fields: [{
179
191
  type: Input
180
192
  }], validators: [{
@@ -187,5 +199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
187
199
  type: Output
188
200
  }], direction: [{
189
201
  type: Input
202
+ }], formClass: [{
203
+ type: Input
190
204
  }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zL3NyYy9saWIvZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQThHLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25MLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFJcEUsTUFBTSw0QkFBNEIsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0FBQ2hGLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0lBQ3hFLE9BQU8sNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUM7QUFFRixNQUFNLGdDQUFnQyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0FBQy9FLGVBQWUsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLGdDQUFnQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxX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QU8sQ0FBQyxDQUFDO2FBQ3pDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFNBQTJCO1FBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBdkpRLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDRSQXZCdkI7Ozs7Ozs7OztLQVNUOzsyRkFjUSx3QkFBd0I7a0JBMUJwQyxTQUFTOytCQUNJLGlCQUFpQixZQUNqQix1QkFBdUIsWUFDdkI7Ozs7Ozs7OztLQVNUO3VGQWVRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2xEaXJlY3RpdmUsIEZvcm1Db250cm9sTmFtZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXBvbmVudE1hcHBlciB9IGZyb20gJy4vZGVjb3JhdG9ycy9jb21wb25lbnQuZGVjb3JhdG9yJztcbmltcG9ydCB7IEVudW1UeXBlIH0gZnJvbSAnLi9lbnVtcy90eXBlLmVudW0nO1xuaW1wb3J0IHsga2xlc0ZpZWxkQ29udHJvbEZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy9maWVsZC5mYWN0b3J5JztcbmltcG9ydCB7IElLbGVzRmllbGRDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmllbGQuY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJS2xlc1ZhbGlkYXRvciB9IGZyb20gJy4vaW50ZXJmYWNlcy92YWxpZGF0b3IuaW50ZXJmYWNlJztcblxuY29uc3Qgb3JpZ2luRm9ybUNvbnRyb2xOZ09uQ2hhbmdlcyA9IEZvcm1Db250cm9sRGlyZWN0aXZlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcztcbkZvcm1Db250cm9sRGlyZWN0aXZlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZvcm0ubmF0aXZlRWxlbWVudCA9IHRoaXMudmFsdWVBY2Nlc3Nvci5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gb3JpZ2luRm9ybUNvbnRyb2xOZ09uQ2hhbmdlcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuY29uc3Qgb3JpZ2luRm9ybUNvbnRyb2xOYW1lTmdPbkNoYW5nZXMgPSBGb3JtQ29udHJvbE5hbWUucHJvdG90eXBlLm5nT25DaGFuZ2VzO1xuRm9ybUNvbnRyb2xOYW1lLnByb3RvdHlwZS5uZ09uQ2hhbmdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5Gb3JtQ29udHJvbE5hbWVOZ09uQ2hhbmdlcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHRoaXMuY29udHJvbC5uYXRpdmVFbGVtZW50ID0gdGhpcy52YWx1ZUFjY2Vzc29yLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBleHBvcnRBczogJ2tsZXNEeW5hbWljRm9ybScsXG4gICAgc2VsZWN0b3I6ICdhcHAta2xlcy1keW5hbWljLWZvcm0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGZvcm0gY2xhc3M9XCJ7e29yaWVudGF0aW9uQ2xhc3N9fVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yIChmaWVsZCBvZiBmaWVsZHM7IHRyYWNrIGZpZWxkLm5hbWUpIHtcbiAgICAgICAgICAgIEBpZiAoZmllbGQudmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwie3tvcmllbnRhdGlvbkl0ZW1DbGFzc319XCIga2xlc0R5bmFtaWNGaWVsZCBbZmllbGRdPVwiZmllbGRcIiBbZ3JvdXBdPVwiZm9ybVwiIFtzaWJsaW5nRmllbGRzXT1cImZpZWxkc1wiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9mb3JtPlxuICAgIGAsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIC8vICcuZHluYW1pYy1mb3JtIHtkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO30nLFxuICAgICAgICAvLycuZHluYW1pYy1mb3JtIHtkaXNwbGF5OiBmbGV4O30nLFxuICAgICAgICAvLycuZHluYW1pYy1mb3JtIHsgd2lkdGg6IDEwMCU7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4geyBkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4gPiAqIHsgd2lkdGg6IDEwMCU7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1yb3cgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDsgfScsXG4gICAgICAgICcuZHluYW1pYy1mb3JtLXJvdyA+ICogeyB3aWR0aDogMTAwJTsgfScsXG4gICAgICAgICcuZHluYW1pYy1mb3JtLXJvdy1pdGVtIHsgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9JyxcbiAgICAgICAgJy5keW5hbWljLWZvcm0tY29sdW1uLWl0ZW0geyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9JyxcbiAgICBdXG5cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0R5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGZpZWxkczogSUtsZXNGaWVsZENvbmZpZ1tdID0gW107XG4gICAgQElucHV0KCkgdmFsaWRhdG9yczogSUtsZXNWYWxpZGF0b3I8VmFsaWRhdG9yRm4+W10gPSBbXTtcbiAgICBASW5wdXQoKSBhc3luY1ZhbGlkYXRvcnM6IElLbGVzVmFsaWRhdG9yPEFzeW5jVmFsaWRhdG9yRm4+W10gPSBbXTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBfb25Mb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBkaXJlY3Rpb246ICdjb2x1bW4nIHwgJ3JvdycgPSAnY29sdW1uJztcblxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgb3JpZW50YXRpb25DbGFzczogJ2R5bmFtaWMtZm9ybS1jb2x1bW4nIHwgJ2R5bmFtaWMtZm9ybS1yb3cnID0gJ2R5bmFtaWMtZm9ybS1jb2x1bW4nO1xuICAgIG9yaWVudGF0aW9uSXRlbUNsYXNzOiAnZHluYW1pYy1mb3JtLWNvbHVtbi1pdGVtJyB8ICdkeW5hbWljLWZvcm0tcm93LWl0ZW0nID0gJ2R5bmFtaWMtZm9ybS1jb2x1bW4taXRlbSc7XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyKSB7IH1cblxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgICB0aGlzLm9yaWVudGF0aW9uQ2xhc3MgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ3JvdycgPyAnZHluYW1pYy1mb3JtLXJvdycgOiAnZHluYW1pYy1mb3JtLWNvbHVtbic7XG4gICAgICAgIHRoaXMub3JpZW50YXRpb25JdGVtQ2xhc3MgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ3JvdycgPyAnZHluYW1pYy1mb3JtLXJvdy1pdGVtJyA6ICdkeW5hbWljLWZvcm0tY29sdW1uLWl0ZW0nO1xuICAgICAgICB0aGlzLl9vbkxvYWRlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIWNoYW5nZXMuZmllbGRzPy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgICAgICAgICAvLyB0aGlzLmZvcm0gPSB0aGlzLmNyZWF0ZUNvbnRyb2woKTtcbiAgICAgICAgICAgIC8vIHRoaXMuZm9ybS5jb250cm9scyA9IHt9O1xuICAgICAgICAgICAgdGhpcy5fb25Mb2FkZWQuZW1pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VzLnZhbGlkYXRvcnM/LmZpcnN0Q2hhbmdlICYmIHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzLm1hcCh2ID0+IHYudmFsaWRhdG9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNoYW5nZXMuYXN5bmNWYWxpZGF0b3JzPy5maXJzdENoYW5nZSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5hc3luY1ZhbGlkYXRvcnMubWFwKHYgPT4gdi52YWxpZGF0b3IpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hhbmdlcy5kaXJlY3Rpb24/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uQ2xhc3MgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ3JvdycgPyAnZHluYW1pYy1mb3JtLXJvdycgOiAnZHluYW1pYy1mb3JtLWNvbHVtbic7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uSXRlbUNsYXNzID0gdGhpcy5kaXJlY3Rpb24gPT09ICdyb3cnID8gJ2R5bmFtaWMtZm9ybS1yb3ctaXRlbScgOiAnZHluYW1pYy1mb3JtLWNvbHVtbi1pdGVtJztcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyh0aGlzLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGb3JtKCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkuaW5jbHVkZXMoa2V5KTtcbiAgICAgICAgfSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHNcbiAgICAgICAgICAgIC8vIC5maWx0ZXIoZmllbGQgPT4gIXRoaXMuZm9ybS5jb250cm9sc1tmaWVsZC5uYW1lXSlcbiAgICAgICAgICAgIC5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRW51bVR5cGUubGluZUJyZWFrKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkLm5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnVwZGF0ZUNvbnRyb2woZmllbGQsIHRoaXMuZm9ybS5jb250cm9sc1tmaWVsZC5uYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRDb250cm9sKGZpZWxkLm5hbWUsIGNvbnRyb2wsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvbnRyb2woZmllbGQ6IElLbGVzRmllbGRDb25maWcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSBFbnVtVHlwZS5hcnJheSkge1xuICAgICAgICAgICAgY29uc3QgYXJyYXkgPSBjb250cm9sIGFzIEZvcm1BcnJheTtcbiAgICAgICAgICAgIC8qVE9ETyovXG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gRW51bVR5cGUuZ3JvdXApIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgICAgICAgICBpZiAoZmllbGQuY29sbGVjdGlvbnMgJiYgQXJyYXkuaXNBcnJheShmaWVsZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5jb2xsZWN0aW9ucy5mb3JFYWNoKHN1YmZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwLmNvbnRyb2xzW3N1YmZpZWxkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHRoaXMudXBkYXRlQ29udHJvbChzdWJmaWVsZCwgZ3JvdXAuY29udHJvbHNbc3ViZmllbGRdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2woc3ViZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cC5zZXRDb250cm9sKHN1YmZpZWxkLm5hbWUsIGNvbnRyb2wsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5iaW5kVmFsaWRhdGlvbnMoZmllbGQudmFsaWRhdGlvbnMgfHwgW10pKTtcbiAgICAgICAgICAgIC8vIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYmluZEFzeW5jVmFsaWRhdGlvbnMoZmllbGQuYXN5bmNWYWxpZGF0aW9ucyB8fCBbXSkpO1xuICAgICAgICAgICAgLy8gaWYgKGZpZWxkLnZhbHVlICYmIGNvbnRyb2wudmFsdWUgIT09IGZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyAgICAgY29udHJvbC5zZXRWYWx1ZShmaWVsZC52YWx1ZSk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb250cm9sKGZpZWxkOiBJS2xlc0ZpZWxkQ29uZmlnKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZXIuZmluZChjID0+IGMudHlwZSA9PT0gZmllbGQudHlwZSk/LmZhY3RvcnlcbiAgICAgICAgICAgICAgICA/IGNvbXBvbmVudE1hcHBlci5maW5kKGMgPT4gYy50eXBlID09PSBmaWVsZC50eXBlKT8uZmFjdG9yeShmaWVsZCkgOiBrbGVzRmllbGRDb250cm9sRmFjdG9yeShmaWVsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVyLmZpbmQoYyA9PiBjLmNvbXBvbmVudCA9PT0gZmllbGQuY29tcG9uZW50KT8uZmFjdG9yeSA/XG4gICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVyLmZpbmQoYyA9PiBjLmNvbXBvbmVudCA9PT0gZmllbGQuY29tcG9uZW50KT8uZmFjdG9yeShmaWVsZCkgOiBrbGVzRmllbGRDb250cm9sRmFjdG9yeShmaWVsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuYWRkQ29udHJvbChmaWVsZC5uYW1lLCBjb250cm9sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ3JvdXAuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRvcnMubWFwKHYgPT4gdi52YWxpZGF0b3IpKTtcbiAgICAgICAgZ3JvdXAuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzLm1hcCh2ID0+IHYudmFsaWRhdG9yKSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zL3NyYy9saWIvZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQThHLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25MLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBSXBFLE1BQU0sNEJBQTRCLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztBQUNoRixvQkFBb0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHO0lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQztJQUN4RSxPQUFPLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQ0FBZ0MsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztBQUMvRSxlQUFlLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRztJQUNwQyxNQUFNLE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMs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LENBQUMsQ0FBQzthQUN6QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxTQUEyQjtRQUNyRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXJLUSx3QkFBd0I7a0dBQXhCLHdCQUF3QixvVEFwQnZCOzs7Ozs7Ozs7S0FTVDs7MkZBV1Esd0JBQXdCO2tCQXZCcEMsU0FBUzsrQkFDSSxpQkFBaUIsWUFDakIsdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7S0FTVDt1RkFZUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2xEaXJlY3RpdmUsIEZvcm1Db250cm9sTmFtZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXBvbmVudE1hcHBlciB9IGZyb20gJy4vZGVjb3JhdG9ycy9jb21wb25lbnQuZGVjb3JhdG9yJztcbmltcG9ydCB7IEVudW1UeXBlIH0gZnJvbSAnLi9lbnVtcy90eXBlLmVudW0nO1xuaW1wb3J0IHsga2xlc0ZpZWxkQ29udHJvbEZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy9maWVsZC5mYWN0b3J5JztcbmltcG9ydCB7IElLbGVzRmllbGRDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmllbGQuY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJS2xlc1ZhbGlkYXRvciB9IGZyb20gJy4vaW50ZXJmYWNlcy92YWxpZGF0b3IuaW50ZXJmYWNlJztcblxuY29uc3Qgb3JpZ2luRm9ybUNvbnRyb2xOZ09uQ2hhbmdlcyA9IEZvcm1Db250cm9sRGlyZWN0aXZlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcztcbkZvcm1Db250cm9sRGlyZWN0aXZlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZvcm0ubmF0aXZlRWxlbWVudCA9IHRoaXMudmFsdWVBY2Nlc3Nvci5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gb3JpZ2luRm9ybUNvbnRyb2xOZ09uQ2hhbmdlcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuY29uc3Qgb3JpZ2luRm9ybUNvbnRyb2xOYW1lTmdPbkNoYW5nZXMgPSBGb3JtQ29udHJvbE5hbWUucHJvdG90eXBlLm5nT25DaGFuZ2VzO1xuRm9ybUNvbnRyb2xOYW1lLnByb3RvdHlwZS5uZ09uQ2hhbmdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5Gb3JtQ29udHJvbE5hbWVOZ09uQ2hhbmdlcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHRoaXMuY29udHJvbC5uYXRpdmVFbGVtZW50ID0gdGhpcy52YWx1ZUFjY2Vzc29yLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBleHBvcnRBczogJ2tsZXNEeW5hbWljRm9ybScsXG4gICAgc2VsZWN0b3I6ICdhcHAta2xlcy1keW5hbWljLWZvcm0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGZvcm0gY2xhc3M9XCJ7e29yaWVudGF0aW9uQ2xhc3N9fVwiIFtuZ0NsYXNzXT1cImZvcm1DbGFzc1wiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yIChmaWVsZCBvZiBmaWVsZHM7IHRyYWNrIGZpZWxkLm5hbWUpIHtcbiAgICAgICAgICAgIEBpZiAoZmllbGQudmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGtsZXNEeW5hbWljRmllbGQgW2ZpZWxkXT1cImZpZWxkXCIgW2dyb3VwXT1cImZvcm1cIiBbc2libGluZ0ZpZWxkc109XCJmaWVsZHNcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvZm9ybT5cbiAgICBgLFxuICAgIHN0eWxlczogW1xuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4geyBkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4gPiAqIHsgd2lkdGg6IDEwMCU7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1yb3cgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDoxMHB4OyB9JyxcbiAgICAgICAgJy5keW5hbWljLWZvcm0tcm93ID4gKiB7IHdpZHRoOiAxMDAlOyB9JyxcbiAgICAgICAgJy5keW5hbWljLWZvcm0tZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1pbmxpbmUtZ3JpZCB7IGRpc3BsYXk6IGlubGluZS1ncmlkOyB9JyxcbiAgICBdXG5cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0R5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGZpZWxkczogSUtsZXNGaWVsZENvbmZpZ1tdID0gW107XG4gICAgQElucHV0KCkgdmFsaWRhdG9yczogSUtsZXNWYWxpZGF0b3I8VmFsaWRhdG9yRm4+W10gPSBbXTtcbiAgICBASW5wdXQoKSBhc3luY1ZhbGlkYXRvcnM6IElLbGVzVmFsaWRhdG9yPEFzeW5jVmFsaWRhdG9yRm4+W10gPSBbXTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBfb25Mb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBkaXJlY3Rpb246ICdjb2x1bW4nIHwgJ3JvdycgfCAnZ3JpZCcgfCAnaW5saW5lLWdyaWQnID0gJ2NvbHVtbic7XG4gICAgQElucHV0KCkgZm9ybUNsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IFNldDxzdHJpbmc+IHwgeyBba2xhc3M6IHN0cmluZ106IGFueTsgfTtcblxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgb3JpZW50YXRpb25DbGFzczogJ2R5bmFtaWMtZm9ybS1jb2x1bW4nIHwgJ2R5bmFtaWMtZm9ybS1yb3cnIHwgJ2R5bmFtaWMtZm9ybS1ncmlkJyB8ICdkeW5hbWljLWZvcm0taW5saW5lLWdyaWQnID0gJ2R5bmFtaWMtZm9ybS1jb2x1bW4nO1xuXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcikgeyB9XG5cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICAgICAgdGhpcy5zZXRPcmllbnRhdGlvbkNsYXNzKCk7XG4gICAgICAgIHRoaXMuX29uTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghY2hhbmdlcy5maWVsZHM/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgIHRoaXMuX29uTG9hZGVkLmVtaXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hhbmdlcy52YWxpZGF0b3JzPy5maXJzdENoYW5nZSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9ycy5tYXAodiA9PiB2LnZhbGlkYXRvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VzLmFzeW5jVmFsaWRhdG9ycz8uZmlyc3RDaGFuZ2UgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzLm1hcCh2ID0+IHYudmFsaWRhdG9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNoYW5nZXMuZGlyZWN0aW9uPy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNsYXNzID0gdGhpcy5kaXJlY3Rpb24gPT09ICdyb3cnID8gJ2R5bmFtaWMtZm9ybS1yb3cnIDogJ2R5bmFtaWMtZm9ybS1jb2x1bW4nO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBvblN1Ym1pdChldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0LmVtaXQodGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9yaWVudGF0aW9uQ2xhc3MoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNsYXNzID0gJ2R5bmFtaWMtZm9ybS1jb2x1bW4nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uQ2xhc3MgPSAnZHluYW1pYy1mb3JtLXJvdyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmlkJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uQ2xhc3MgPSAnZHluYW1pYy1mb3JtLWdyaWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaW5saW5lLWdyaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMub3JpZW50YXRpb25DbGFzcyA9ICdkeW5hbWljLWZvcm0taW5saW5lLWdyaWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUZvcm0oKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKS5pbmNsdWRlcyhrZXkpO1xuICAgICAgICB9KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChrZXkpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZpZWxkc1xuICAgICAgICAgICAgLy8gLmZpbHRlcihmaWVsZCA9PiAhdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkLm5hbWVdKVxuICAgICAgICAgICAgLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBFbnVtVHlwZS5saW5lQnJlYWspIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbZmllbGQubmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMudXBkYXRlQ29udHJvbChmaWVsZCwgdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkLm5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldENvbnRyb2woZmllbGQubmFtZSwgY29udHJvbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2woZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgY29udHJvbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ29udHJvbChmaWVsZDogSUtsZXNGaWVsZENvbmZpZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IEVudW1UeXBlLmFycmF5KSB7XG4gICAgICAgICAgICBjb25zdCBhcnJheSA9IGNvbnRyb2wgYXMgRm9ybUFycmF5O1xuICAgICAgICAgICAgLypUT0RPKi9cbiAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBFbnVtVHlwZS5ncm91cCkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICAgIGlmIChmaWVsZC5jb2xsZWN0aW9ucyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgICAgIGZpZWxkLmNvbGxlY3Rpb25zLmZvckVhY2goc3ViZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuY29udHJvbHNbc3ViZmllbGRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sID0gdGhpcy51cGRhdGVDb250cm9sKHN1YmZpZWxkLCBncm91cC5jb250cm9sc1tzdWJmaWVsZF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHRoaXMuY3JlYXRlQ29udHJvbChzdWJmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnNldENvbnRyb2woc3ViZmllbGQubmFtZSwgY29udHJvbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLmJpbmRWYWxpZGF0aW9ucyhmaWVsZC52YWxpZGF0aW9ucyB8fCBbXSkpO1xuICAgICAgICAgICAgLy8gY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5iaW5kQXN5bmNWYWxpZGF0aW9ucyhmaWVsZC5hc3luY1ZhbGlkYXRpb25zIHx8IFtdKSk7XG4gICAgICAgICAgICAvLyBpZiAoZmllbGQudmFsdWUgJiYgY29udHJvbC52YWx1ZSAhPT0gZmllbGQudmFsdWUpIHtcbiAgICAgICAgICAgIC8vICAgICBjb250cm9sLnNldFZhbHVlKGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBjb250cm9sO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbnRyb2woZmllbGQ6IElLbGVzRmllbGRDb25maWcpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICBpZiAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlci5maW5kKGMgPT4gYy50eXBlID09PSBmaWVsZC50eXBlKT8uZmFjdG9yeVxuICAgICAgICAgICAgICAgID8gY29tcG9uZW50TWFwcGVyLmZpbmQoYyA9PiBjLnR5cGUgPT09IGZpZWxkLnR5cGUpPy5mYWN0b3J5KGZpZWxkKSA6IGtsZXNGaWVsZENvbnRyb2xGYWN0b3J5KGZpZWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZXIuZmluZChjID0+IGMuY29tcG9uZW50ID09PSBmaWVsZC5jb21wb25lbnQpPy5mYWN0b3J5ID9cbiAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZXIuZmluZChjID0+IGMuY29tcG9uZW50ID09PSBmaWVsZC5jb21wb25lbnQpPy5mYWN0b3J5KGZpZWxkKSA6IGtsZXNGaWVsZENvbnRyb2xGYWN0b3J5KGZpZWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcblxuICAgICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2woZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBncm91cC5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBncm91cC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9ycy5tYXAodiA9PiB2LnZhbGlkYXRvcikpO1xuICAgICAgICBncm91cC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5hc3luY1ZhbGlkYXRvcnMubWFwKHYgPT4gdi52YWxpZGF0b3IpKTtcblxuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -17,8 +17,8 @@ let KlesFormArrayComponent = class KlesFormArrayComponent extends KlesFieldAbstr
17
17
  ngOnDestroy() {
18
18
  super.ngOnDestroy();
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormArrayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: KlesFormArrayComponent, selector: "kles-array", usesInheritance: true, ngImport: i0, template: `
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormArrayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: KlesFormArrayComponent, selector: "kles-array", usesInheritance: true, ngImport: i0, template: `
22
22
  <div [formGroup]="group" class="container" [ngClass]="{'container-column': field.direction ==='column'}">
23
23
  <ng-container [formArrayName]="field.name">
24
24
  @for (subGroup of formArray.controls; track subGroup.value._id) {
@@ -39,7 +39,7 @@ KlesFormArrayComponent = __decorate([
39
39
  FieldMapper({ type: EnumType.array, factory: (field) => (new KlesFormArray(field).create()) })
40
40
  ], KlesFormArrayComponent);
41
41
  export { KlesFormArrayComponent };
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormArrayComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormArrayComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{ selector: 'kles-array', template: `
45
45
  <div [formGroup]="group" class="container" [ngClass]="{'container-column': field.direction ==='column'}">
@@ -14,8 +14,8 @@ let KlesFormBadgeComponent = class KlesFormBadgeComponent extends KlesFieldAbstr
14
14
  ngOnDestroy() {
15
15
  super.ngOnDestroy();
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormBadgeComponent, selector: "kles-form-badge", usesInheritance: true, ngImport: i0, template: `
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormBadgeComponent, selector: "kles-form-badge", usesInheritance: true, ngImport: i0, template: `
19
19
  <span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass"
20
20
  matBadge="{{group.controls[field.name].value}}" matBadgeOverlap="false" matBadgeColor="{{field.color}}">
21
21
  </span>
@@ -25,7 +25,7 @@ KlesFormBadgeComponent = __decorate([
25
25
  FieldMapper({ type: EnumType.badge })
26
26
  ], KlesFormBadgeComponent);
27
27
  export { KlesFormBadgeComponent };
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormBadgeComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormBadgeComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{
31
31
  selector: 'kles-form-badge',
@@ -10,8 +10,8 @@ export class KlesFormFabComponent extends KlesFieldAbstract {
10
10
  ngOnDestroy() {
11
11
  super.ngOnDestroy();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormFabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormFabComponent, selector: "kles-form-fab", usesInheritance: true, ngImport: i0, template: `
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormFabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormFabComponent, selector: "kles-form-fab", usesInheritance: true, ngImport: i0, template: `
15
15
  <div [formGroup]="group">
16
16
  <kles-fab
17
17
  [attr.id]="field.id" [classButton]="field.ngClass"
@@ -27,7 +27,7 @@ export class KlesFormFabComponent extends KlesFieldAbstract {
27
27
  </div>
28
28
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KlesFabComponent, selector: "kles-fab" }] }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormFabComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormFabComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'kles-form-fab', template: `
33
33
  <div [formGroup]="group">
@@ -10,8 +10,8 @@ export class KlesFormButtonComponent extends KlesFieldAbstract {
10
10
  ngOnDestroy() {
11
11
  super.ngOnDestroy();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormButtonComponent, selector: "kles-form-button", usesInheritance: true, ngImport: i0, template: `
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormButtonComponent, selector: "kles-form-button", usesInheritance: true, ngImport: i0, template: `
15
15
  <div [formGroup]="group">
16
16
  <kles-button
17
17
  [attr.id]="field.id" [classButton]="field.ngClass"
@@ -28,7 +28,7 @@ export class KlesFormButtonComponent extends KlesFieldAbstract {
28
28
  </div>
29
29
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KlesButtonComponent, selector: "kles-button", inputs: ["attribute"] }] }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonComponent, decorators: [{
32
32
  type: Component,
33
33
  args: [{ selector: 'kles-form-button', template: `
34
34
  <div [formGroup]="group">
@@ -10,8 +10,8 @@ export class KlesFormIconButtonComponent extends KlesFieldAbstract {
10
10
  ngOnDestroy() {
11
11
  super.ngOnDestroy();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormIconButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormIconButtonComponent, selector: "kles-form-icon-button", usesInheritance: true, ngImport: i0, template: `
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormIconButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormIconButtonComponent, selector: "kles-form-icon-button", usesInheritance: true, ngImport: i0, template: `
15
15
  <div [formGroup]="group">
16
16
  <kles-icon-button
17
17
  [attr.id]="field.id" [classButton]="field.ngClass"
@@ -27,7 +27,7 @@ export class KlesFormIconButtonComponent extends KlesFieldAbstract {
27
27
  </div>
28
28
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KlesIconButtonComponent, selector: "kles-icon-button" }] }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormIconButtonComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormIconButtonComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'kles-form-icon-button', template: `
33
33
  <div [formGroup]="group">
@@ -10,8 +10,8 @@ export class KlesFormMiniFabComponent extends KlesFieldAbstract {
10
10
  ngOnDestroy() {
11
11
  super.ngOnDestroy();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormMiniFabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormMiniFabComponent, selector: "kles-form-mini-fab", usesInheritance: true, ngImport: i0, template: `
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormMiniFabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormMiniFabComponent, selector: "kles-form-mini-fab", usesInheritance: true, ngImport: i0, template: `
15
15
  <div [formGroup]="group">
16
16
  <kles-mini-fab
17
17
  [attr.id]="field.id" [classButton]="field.ngClass"
@@ -27,7 +27,7 @@ export class KlesFormMiniFabComponent extends KlesFieldAbstract {
27
27
  </div>
28
28
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KlesMiniFabComponent, selector: "kles-mini-fab" }] }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormMiniFabComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormMiniFabComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'kles-form-mini-fab', template: `
33
33
  <div [formGroup]="group">
@@ -22,8 +22,8 @@ export class KlesFormButtonToogleGroupComponent extends KlesFieldAbstract {
22
22
  ngOnDestroy() {
23
23
  super.ngOnDestroy();
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonToogleGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: KlesFormButtonToogleGroupComponent, selector: "kles-form-button-toogle-group", usesInheritance: true, ngImport: i0, template: `
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonToogleGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: KlesFormButtonToogleGroupComponent, selector: "kles-form-button-toogle-group", usesInheritance: true, ngImport: i0, template: `
27
27
  <div [formGroup]="group" class="form-element">
28
28
  <mat-button-toggle-group [formControlName]="field.name" [multiple]="field.multiple" [attr.id]="field.id" [ngClass]="field.ngClass">
29
29
  @for (item of options$ | async; track item) {
@@ -35,7 +35,7 @@ export class KlesFormButtonToogleGroupComponent extends KlesFieldAbstract {
35
35
  </div>
36
36
  `, 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.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.KlesTransformPipe, name: "klesTransform" }] }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonToogleGroupComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonToogleGroupComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{
41
41
  selector: 'kles-form-button-toogle-group',
@@ -10,8 +10,8 @@ export class KlesFormButtonCheckerComponent extends KlesFieldAbstract {
10
10
  ngOnDestroy() {
11
11
  super.ngOnDestroy();
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonCheckerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormButtonCheckerComponent, selector: "kles-form-button-checker", usesInheritance: true, ngImport: i0, template: `
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonCheckerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormButtonCheckerComponent, selector: "kles-form-button-checker", usesInheritance: true, ngImport: i0, template: `
15
15
  <div [formGroup]="group">
16
16
  <kles-button-checker
17
17
  [attr.id]="field.id" [classButton]="field.ngClass"
@@ -27,7 +27,7 @@ export class KlesFormButtonCheckerComponent extends KlesFieldAbstract {
27
27
  </div>
28
28
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KlesButtonCheckerComponent, selector: "kles-button-checker" }] }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonCheckerComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonCheckerComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'kles-form-button-checker', template: `
33
33
  <div [formGroup]="group">
@@ -11,8 +11,8 @@ export class KlesFormButtonFileComponent extends KlesFieldAbstract {
11
11
  ngOnDestroy() {
12
12
  super.ngOnDestroy();
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: KlesFormButtonFileComponent, selector: "kles-form-button-file", usesInheritance: true, ngImport: i0, template: `
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: KlesFormButtonFileComponent, selector: "kles-form-button-file", usesInheritance: true, ngImport: i0, template: `
16
16
  <div [formGroup]="group">
17
17
  <kles-button-file
18
18
  [attr.id]="field.id" [classButton]="field.ngClass"
@@ -29,7 +29,7 @@ export class KlesFormButtonFileComponent extends KlesFieldAbstract {
29
29
  </div>
30
30
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KlesButtonFileComponent, selector: "kles-button-file", inputs: ["accept"] }] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormButtonFileComponent, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormButtonFileComponent, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'kles-form-button-file', template: `
35
35
  <div [formGroup]="group">
@@ -3,6 +3,7 @@ import { Component } from '@angular/core';
3
3
  import { FieldMapper } from '../decorators/component.decorator';
4
4
  import { EnumType } from '../enums/type.enum';
5
5
  import { KlesFieldAbstract } from './field.abstract';
6
+ import { takeUntil } from 'rxjs/operators';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/common";
8
9
  import * as i2 from "@angular/forms";
@@ -11,14 +12,22 @@ import * as i4 from "@angular/material/tooltip";
11
12
  import * as i5 from "@angular/material/checkbox";
12
13
  import * as i6 from "@ngx-translate/core";
13
14
  let KlesFormCheckboxComponent = class KlesFormCheckboxComponent extends KlesFieldAbstract {
14
- ngOnInit() { super.ngOnInit(); }
15
+ ngOnInit() {
16
+ super.ngOnInit();
17
+ this.field.indeterminate = this.group.getRawValue()[this.field.name] === -1;
18
+ this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((newVal) => {
19
+ this.field.indeterminate = (newVal === -1);
20
+ });
21
+ }
15
22
  ngOnDestroy() {
16
23
  super.ngOnDestroy();
17
24
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: KlesFormCheckboxComponent, selector: "kles-form-checkbox", usesInheritance: true, ngImport: i0, template: `
20
- <div [formGroup]="group" >
21
- <mat-checkbox matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [indeterminate]="field.indeterminate" [color]="field.color" [formControlName]="field.name">{{field.label | translate}}</mat-checkbox>
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: KlesFormCheckboxComponent, selector: "kles-form-checkbox", usesInheritance: true, ngImport: i0, template: `
27
+ <div [formGroup]="group" >
28
+ <mat-checkbox matTooltip="{{field.tooltip}}" [attr.id]="field.id"
29
+ [ngClass]="field.ngClass" [(indeterminate)]="field.indeterminate"
30
+ [color]="field.color" [formControlName]="field.name">{{field.label | translate}}</mat-checkbox>
22
31
  @for (validation of field.validations; track validation.name) {
23
32
  <ng-container ngProjectAs="mat-error">
24
33
  @if (group.get(field.name).hasError(validation.name)) {
@@ -40,11 +49,13 @@ KlesFormCheckboxComponent = __decorate([
40
49
  FieldMapper({ type: EnumType.checkbox })
41
50
  ], KlesFormCheckboxComponent);
42
51
  export { KlesFormCheckboxComponent };
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: KlesFormCheckboxComponent, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KlesFormCheckboxComponent, decorators: [{
44
53
  type: Component,
45
54
  args: [{ selector: 'kles-form-checkbox', template: `
46
- <div [formGroup]="group" >
47
- <mat-checkbox matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [indeterminate]="field.indeterminate" [color]="field.color" [formControlName]="field.name">{{field.label | translate}}</mat-checkbox>
55
+ <div [formGroup]="group" >
56
+ <mat-checkbox matTooltip="{{field.tooltip}}" [attr.id]="field.id"
57
+ [ngClass]="field.ngClass" [(indeterminate)]="field.indeterminate"
58
+ [color]="field.color" [formControlName]="field.name">{{field.label | translate}}</mat-checkbox>
48
59
  @for (validation of field.validations; track validation.name) {
49
60
  <ng-container ngProjectAs="mat-error">
50
61
  @if (group.get(field.name).hasError(validation.name)) {
@@ -62,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
62
73
  </div>
63
74
  ` }]
64
75
  }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvY2hlY2tib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7OztBQTBCOUMsSUFBTSx5QkFBeUIsR0FBL0IsTUFBTSx5QkFBMEIsU0FBUSxpQkFBaUI7SUFDNUQsUUFBUSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEMsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQUxRLHlCQUF5QjtrR0FBekIseUJBQXlCLGlGQXJCeEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCYjs7QUFHWSx5QkFBeUI7SUF4QnJDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7R0F3QjVCLHlCQUF5QixDQU1yQzs7MkZBTlkseUJBQXlCO2tCQXZCckMsU0FBUzsrQkFDSSxvQkFBb0IsWUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCYiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRNYXBwZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NvbXBvbmVudC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRW51bVR5cGUgfSBmcm9tICcuLi9lbnVtcy90eXBlLmVudW0nO1xuaW1wb3J0IHsgSUtsZXNGaWVsZENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmllbGQuY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xuXG5ARmllbGRNYXBwZXIoeyB0eXBlOiBFbnVtVHlwZS5jaGVja2JveCB9KVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tY2hlY2tib3gnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgPiAgXG4gICAgICAgIDxtYXQtY2hlY2tib3ggbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgW2luZGV0ZXJtaW5hdGVdPVwiZmllbGQuaW5kZXRlcm1pbmF0ZVwiIFtjb2xvcl09XCJmaWVsZC5jb2xvclwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiPnt7ZmllbGQubGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWNoZWNrYm94PlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uLm5hbWUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3t2YWxpZGF0aW9uLm1lc3NhZ2V9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbi5uYW1lKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7dmFsaWRhdGlvbi5tZXNzYWdlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuYCxcbiAgICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBuZ09uSW5pdCgpIHsgc3VwZXIubmdPbkluaXQoKTsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvY2hlY2tib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUE0QnBDLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQTBCLFNBQVEsaUJBQWlCO0lBQzlELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBWFUseUJBQXlCO2tHQUF6Qix5QkFBeUIsaUZBdkIxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQlg7O0FBR1kseUJBQXlCO0lBMUJyQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0dBMEI1Qix5QkFBeUIsQ0FZckM7OzJGQVpZLHlCQUF5QjtrQkF6QnJDLFNBQVM7K0JBQ0Usb0JBQW9CLFlBQ3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CWCIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRNYXBwZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NvbXBvbmVudC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRW51bVR5cGUgfSBmcm9tICcuLi9lbnVtcy90eXBlLmVudW0nO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEZpZWxkTWFwcGVyKHsgdHlwZTogRW51bVR5cGUuY2hlY2tib3ggfSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tsZXMtZm9ybS1jaGVja2JveCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgPlxuICAgICAgICA8bWF0LWNoZWNrYm94IG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiIFsoaW5kZXRlcm1pbmF0ZSldPVwiZmllbGQuaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgIFtjb2xvcl09XCJmaWVsZC5jb2xvclwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiPnt7ZmllbGQubGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWNoZWNrYm94PlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uLm5hbWUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3t2YWxpZGF0aW9uLm1lc3NhZ2V9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbi5uYW1lKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7dmFsaWRhdGlvbi5tZXNzYWdlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUNoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5maWVsZC5pbmRldGVybWluYXRlID0gdGhpcy5ncm91cC5nZXRSYXdWYWx1ZSgpW3RoaXMuZmllbGQubmFtZV0gPT09IC0xO1xuICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSkuc3Vic2NyaWJlKChuZXdWYWwpID0+IHtcbiAgICAgIHRoaXMuZmllbGQuaW5kZXRlcm1pbmF0ZSA9IChuZXdWYWwgPT09IC0xKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==