@stemy/ngx-dynamic-form 10.2.22 → 12.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 (60) hide show
  1. package/bundles/stemy-ngx-dynamic-form.umd.js +1781 -902
  2. package/bundles/stemy-ngx-dynamic-form.umd.js.map +1 -1
  3. package/esm2015/ngx-dynamic-form/common-types.js +463 -7
  4. package/esm2015/ngx-dynamic-form/components/base/dynamic-form-base.component.js +87 -0
  5. package/esm2015/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.js +91 -0
  6. package/esm2015/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.js +112 -0
  7. package/esm2015/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.js +19 -0
  8. package/esm2015/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.js +69 -0
  9. package/esm2015/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.js +23 -0
  10. package/esm2015/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.js +73 -0
  11. package/esm2015/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.js +20 -0
  12. package/esm2015/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.js +134 -0
  13. package/esm2015/ngx-dynamic-form/directives/async-submit.directive.js +6 -17
  14. package/esm2015/ngx-dynamic-form/directives/dynamic-form-control.directive.js +32 -0
  15. package/esm2015/ngx-dynamic-form/directives/dynamic-form-group.directive.js +40 -0
  16. package/esm2015/ngx-dynamic-form/directives/dynamic-form-template.directive.js +38 -0
  17. package/esm2015/ngx-dynamic-form/ngx-dynamic-form.module.js +36 -35
  18. package/esm2015/ngx-dynamic-form/services/dynamic-form.service.js +41 -386
  19. package/esm2015/ngx-dynamic-form/services/form-utilities.js +108 -0
  20. package/esm2015/ngx-dynamic-form/services/open-api.service.js +130 -0
  21. package/esm2015/public_api.js +15 -6
  22. package/esm2015/stemy-ngx-dynamic-form.js +4 -3
  23. package/fesm2015/stemy-ngx-dynamic-form.js +1357 -594
  24. package/fesm2015/stemy-ngx-dynamic-form.js.map +1 -1
  25. package/ngx-dynamic-form/common-types.d.ts +181 -27
  26. package/ngx-dynamic-form/components/base/dynamic-form-base.component.d.ts +44 -0
  27. package/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +21 -0
  28. package/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.d.ts +16 -0
  29. package/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.d.ts +6 -0
  30. package/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.d.ts +12 -0
  31. package/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.d.ts +6 -0
  32. package/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.d.ts +9 -0
  33. package/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.d.ts +5 -0
  34. package/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.d.ts +26 -0
  35. package/ngx-dynamic-form/directives/async-submit.directive.d.ts +1 -5
  36. package/ngx-dynamic-form/directives/dynamic-form-control.directive.d.ts +12 -0
  37. package/ngx-dynamic-form/directives/dynamic-form-group.directive.d.ts +14 -0
  38. package/ngx-dynamic-form/directives/dynamic-form-template.directive.d.ts +16 -0
  39. package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +15 -5
  40. package/ngx-dynamic-form/services/dynamic-form.service.d.ts +11 -39
  41. package/ngx-dynamic-form/services/form-utilities.d.ts +19 -0
  42. package/ngx-dynamic-form/services/open-api.service.d.ts +37 -0
  43. package/package.json +16 -17
  44. package/public_api.d.ts +14 -5
  45. package/stemy-ngx-dynamic-form.d.ts +3 -2
  46. package/stemy-ngx-dynamic-form.metadata.json +1 -1
  47. package/bundles/stemy-ngx-dynamic-form.umd.min.js +0 -16
  48. package/bundles/stemy-ngx-dynamic-form.umd.min.js.map +0 -1
  49. package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.js +0 -91
  50. package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form.component.js +0 -129
  51. package/esm2015/ngx-dynamic-form/services/dynamic-form-validation.service.js +0 -11
  52. package/esm2015/ngx-dynamic-form/utils/dynamic-form-array.model.js +0 -8
  53. package/esm2015/ngx-dynamic-form/utils/form-subject.js +0 -18
  54. package/esm2015/ngx-dynamic-form/utils/validators.js +0 -28
  55. package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +0 -37
  56. package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +0 -37
  57. package/ngx-dynamic-form/services/dynamic-form-validation.service.d.ts +0 -5
  58. package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +0 -12
  59. package/ngx-dynamic-form/utils/form-subject.d.ts +0 -8
  60. package/ngx-dynamic-form/utils/validators.d.ts +0 -4
@@ -0,0 +1,134 @@
1
+ import { ChangeDetectorRef, Component, ContentChild, Input, ViewChildren } from "@angular/core";
2
+ import { ObjectUtils, UniqueUtils } from "@stemy/ngx-utils";
3
+ import { DynamicFormGroup } from "../../common-types";
4
+ import { DynamicFormBaseComponent } from "../base/dynamic-form-base.component";
5
+ import { DynamicFormService } from "../../services/dynamic-form.service";
6
+ const statusPriority = ["LOADING", "PENDING", "DISABLED", "INVALID"];
7
+ export class DynamicFormsComponent extends DynamicFormBaseComponent {
8
+ constructor(cdr, formService) {
9
+ super(cdr, formService);
10
+ this.formPrefixTemplates = {};
11
+ this.formSuffixTemplates = {};
12
+ this.innerFormPrefixTemplates = {};
13
+ this.innerFormSuffixTemplates = {};
14
+ }
15
+ get status() {
16
+ for (let i = 0; i < statusPriority.length; i++) {
17
+ const status = statusPriority[i];
18
+ if (this.checkForms(f => f.status == status))
19
+ return status;
20
+ }
21
+ return "VALID";
22
+ }
23
+ // --- Lifecycle hooks
24
+ ngAfterContentInit() {
25
+ super.ngAfterContentInit();
26
+ this.containerTemplate = this.containerTemplate || this.cContainerTemplate;
27
+ this.formPrefixTemplates = this.filterTemplates(this.formPrefixTemplates, "formPrefix");
28
+ this.formSuffixTemplates = this.filterTemplates(this.formSuffixTemplates, "formSuffix");
29
+ this.innerFormPrefixTemplates = this.filterTemplates(this.innerFormPrefixTemplates, "innerFormPrefix");
30
+ this.innerFormSuffixTemplates = this.filterTemplates(this.innerFormSuffixTemplates, "innerFormSuffix");
31
+ }
32
+ ngOnChanges(changes) {
33
+ this.configs = this.createFormGroups(this.data);
34
+ }
35
+ // --- IDynamicFormBase ---
36
+ validate(showErrors = true) {
37
+ if (!this.forms)
38
+ return Promise.reject(null);
39
+ return Promise.all(this.forms.map(f => f.validate(showErrors)));
40
+ }
41
+ serialize(validate) {
42
+ if (!this.forms)
43
+ return validate ? Promise.reject(null) : Promise.resolve({});
44
+ return new Promise((resolve, reject) => {
45
+ const promises = this.forms.map(f => f.serialize(validate));
46
+ Promise.all(promises).then(results => {
47
+ let result = {};
48
+ results.forEach((data, ix) => {
49
+ const config = this.data[ix];
50
+ let path = null;
51
+ if (ObjectUtils.isArray(config.path) && config.path.length > 0) {
52
+ path = config.path;
53
+ }
54
+ else if (ObjectUtils.isString(config.path) && config.path.length > 0) {
55
+ path = config.path.split(".");
56
+ }
57
+ else if (ObjectUtils.isNumber(config.path)) {
58
+ path = [config.path];
59
+ }
60
+ if (!path) {
61
+ result = ObjectUtils.assign(result, data);
62
+ return;
63
+ }
64
+ result = ObjectUtils.mapToPath(result, data, path.map(p => `${p}`));
65
+ });
66
+ resolve(result);
67
+ }, reject);
68
+ });
69
+ }
70
+ check() {
71
+ if (!this.forms)
72
+ return Promise.resolve(null);
73
+ return Promise.all(this.forms.map(t => t.check()));
74
+ }
75
+ getControl(id) {
76
+ return this.getFromValue(f => f.getControl(id));
77
+ }
78
+ checkForms(check) {
79
+ this.cdr.detectChanges();
80
+ if (!this.forms)
81
+ return false;
82
+ return ObjectUtils.isDefined(this.forms.find(check));
83
+ }
84
+ getFromValue(check) {
85
+ if (!this.forms)
86
+ return null;
87
+ let value = null;
88
+ this.forms.find(f => {
89
+ value = check(f);
90
+ return ObjectUtils.isDefined(value);
91
+ });
92
+ return value;
93
+ }
94
+ createFormGroups(configs) {
95
+ return (configs || []).map((c) => {
96
+ if (c.multi)
97
+ return c;
98
+ const config = c;
99
+ const group = new DynamicFormGroup(this, {
100
+ id: config.id || UniqueUtils.uuid(),
101
+ type: "model",
102
+ data: config.controlData
103
+ });
104
+ config.group = group;
105
+ config.name = config.name || this.name;
106
+ group.setup(config.data, config);
107
+ group.reloadControls();
108
+ return config;
109
+ });
110
+ }
111
+ }
112
+ DynamicFormsComponent.decorators = [
113
+ { type: Component, args: [{
114
+ moduleId: module.id,
115
+ selector: "dynamic-forms, [dynamic-forms]",
116
+ template: "<ng-template #configTemplate let-formTemplate=\"formTemplate\" let-form=\"form\" let-config=\"config\" let-configTemplate>\r\n <div [ngClass]=\"config.classes || ''\">\r\n <ng-container [ngTemplateOutlet]=\"formPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: form}\"></ng-container>\r\n <ng-template #singleFormTemplate>\r\n <div dynamic-form\r\n [hidden]=\"!config.group?.visible\"\r\n [ngClass]=\"config.formClasses || ''\"\r\n [name]=\"config.name || form.name\"\r\n [readonly]=\"form.readonly\"\r\n [updateOn]=\"form.updateOn\"\r\n [classes]=\"config.innerFormClasses\"\r\n [parent]=\"form\"\r\n\r\n [wrapperTemplate]=\"form.wrapperTemplate\"\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n [group]=\"config.group\"\r\n [fieldSets]=\"config.fieldSets\">\r\n <ng-template #prefixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n <ng-template #suffixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n <div dynamic-forms\r\n [ngClass]=\"config.formClasses || ''\"\r\n [name]=\"config.name || name\"\r\n [readonly]=\"form.readonly\"\r\n [updateOn]=\"form.updateOn\"\r\n [classes]=\"config.innerFormClasses\"\r\n [parent]=\"form\"\r\n\r\n [wrapperTemplate]=\"form.wrapperTemplate\"\r\n [fieldSetTemplate]=\"form.fieldSetTemplate\"\r\n [controlTemplates]=\"form.controlTemplates\"\r\n\r\n [controlTemplate]=\"form.controlTemplate\"\r\n [labelTemplates]=\"form.labelTemplates\"\r\n [inputTemplates]=\"form.inputTemplates\"\r\n [prefixTemplates]=\"form.prefixTemplates\"\r\n [suffixTemplates]=\"form.suffixTemplates\"\r\n [setPrefixTemplates]=\"form.setPrefixTemplates\"\r\n [setSuffixTemplates]=\"form.setSuffixTemplates\"\r\n\r\n [data]=\"config.data\"\r\n [containerTemplate]=\"form.containerTemplate\"\r\n [formPrefixTemplates]=\"form.formPrefixTemplates\"\r\n [formSuffixTemplates]=\"form.formSuffixTemplates\"\r\n [innerFormPrefixTemplates]=\"form.innerFormPrefixTemplates\"\r\n [innerFormSuffixTemplates]=\"form.innerFormSuffixTemplates\"\r\n\r\n *ngIf=\"config.multi; else singleFormTemplate\">\r\n <ng-template #prefixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormPrefixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n <ng-template #suffixTemplate let-subForm=\"form\">\r\n <ng-container [ngTemplateOutlet]=\"form.innerFormSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: subForm}\"></ng-container>\r\n </ng-template>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"formSuffixTemplates[config.id]\"\r\n [ngTemplateOutletContext]=\"{config: config, form: form}\"></ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template let-form=\"form\" let-configTemplate=\"configTemplate\" #defaultContainerTemplate>\r\n <div class=\"dynamic-forms\" [ngClass]=\"classes || ''\">\r\n <ng-container *ngFor=\"let config of form.configs\"\r\n [ngTemplateOutlet]=\"configTemplate\"\r\n [ngTemplateOutletContext]=\"{form: form, config: config}\"></ng-container>\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"prefixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this}\"></ng-container>\r\n<ng-container [ngTemplateOutlet]=\"containerTemplate || defaultContainerTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this, configTemplate: configTemplate, defaultContainerTemplate: defaultContainerTemplate}\">\r\n</ng-container>\r\n<ng-container [ngTemplateOutlet]=\"suffixTemplate\"\r\n [ngTemplateOutletContext]=\"{form: this}\"></ng-container>\r\n",
117
+ providers: [{ provide: DynamicFormBaseComponent, useExisting: DynamicFormsComponent }]
118
+ },] }
119
+ ];
120
+ DynamicFormsComponent.ctorParameters = () => [
121
+ { type: ChangeDetectorRef },
122
+ { type: DynamicFormService }
123
+ ];
124
+ DynamicFormsComponent.propDecorators = {
125
+ data: [{ type: Input }],
126
+ containerTemplate: [{ type: Input }],
127
+ formPrefixTemplates: [{ type: Input }],
128
+ formSuffixTemplates: [{ type: Input }],
129
+ innerFormPrefixTemplates: [{ type: Input }],
130
+ innerFormSuffixTemplates: [{ type: Input }],
131
+ cContainerTemplate: [{ type: ContentChild, args: ["containerTemplate",] }],
132
+ forms: [{ type: ViewChildren, args: [DynamicFormBaseComponent,] }]
133
+ };
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3Jtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybXMvZHluYW1pYy1mb3Jtcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNlLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUN0RCxZQUFZLEVBQzVCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUNILGdCQUFnQixFQUVuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXZFLE1BQU0sY0FBYyxHQUF1QixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBUXpGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx3QkFBd0I7SUEyQi9ELFlBQVksR0FBc0IsRUFBRSxXQUErQjtRQUMvRCxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQXRCRCxJQUFJLE1BQU07UUFDTixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZ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LE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBbElKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSxnQ0FBZ0M7Z0JBQzFDLGcwS0FBNkM7Z0JBQzdDLFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBQyxDQUFDO2FBQ3ZGOzs7WUFsQnFCLGlCQUFpQjtZQVMvQixrQkFBa0I7OzttQkFZckIsS0FBSztnQ0FFTCxLQUFLO2tDQUVMLEtBQUs7a0NBQ0wsS0FBSzt1Q0FDTCxLQUFLO3VDQUNMLEtBQUs7aUNBWUwsWUFBWSxTQUFDLG1CQUFtQjtvQkFHaEMsWUFBWSxTQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGRyZW5cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzLCBVbmlxdWVVdGlsc30gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICAgIER5bmFtaWNGb3JtR3JvdXAsIER5bmFtaWNGb3JtU3RhdGUsIElEeW5hbWljRm9ybUJhc2UsIElEeW5hbWljRm9ybUNvbnRyb2wsIElEeW5hbWljRm9ybXNDb25maWdzLFxyXG4gICAgSUR5bmFtaWNGb3JtVGVtcGxhdGVzLCBJRHluYW1pY1NpbmdsZUZvcm1Db25maWdcclxufSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1CYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9keW5hbWljLWZvcm0tYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZVwiO1xyXG5cclxuY29uc3Qgc3RhdHVzUHJpb3JpdHk6IER5bmFtaWNGb3JtU3RhdGVbXSA9IFtcIkxPQURJTkdcIiwgXCJQRU5ESU5HXCIsIFwiRElTQUJMRURcIiwgXCJJTlZBTElEXCJdO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBtb2R1bGVJZDogbW9kdWxlLmlkLFxyXG4gICAgc2VsZWN0b3I6IFwiZHluYW1pYy1mb3JtcywgW2R5bmFtaWMtZm9ybXNdXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybXMuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHByb3ZpZGVyczogW3twcm92aWRlOiBEeW5hbWljRm9ybUJhc2VDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBEeW5hbWljRm9ybXNDb21wb25lbnR9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1zQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUR5bmFtaWNGb3JtQmFzZSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhOiBJRHluYW1pY0Zvcm1zQ29uZmlncztcclxuXHJcbiAgICBASW5wdXQoKSBjb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBASW5wdXQoKSBmb3JtUHJlZml4VGVtcGxhdGVzOiBJRHluYW1pY0Zvcm1UZW1wbGF0ZXM7XHJcbiAgICBASW5wdXQoKSBmb3JtU3VmZml4VGVtcGxhdGVzOiBJRHluYW1pY0Zvcm1UZW1wbGF0ZXM7XHJcbiAgICBASW5wdXQoKSBpbm5lckZvcm1QcmVmaXhUZW1wbGF0ZXM6IElEeW5hbWljRm9ybVRlbXBsYXRlcztcclxuICAgIEBJbnB1dCgpIGlubmVyRm9ybVN1ZmZpeFRlbXBsYXRlczogSUR5bmFtaWNGb3JtVGVtcGxhdGVzO1xyXG5cclxuICAgIGdldCBzdGF0dXMoKTogRHluYW1pY0Zvcm1TdGF0ZSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0dXNQcmlvcml0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNQcmlvcml0eVtpXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tGb3JtcyhmID0+IGYuc3RhdHVzID09IHN0YXR1cykpIHJldHVybiBzdGF0dXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlZBTElEXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbmZpZ3M6IElEeW5hbWljRm9ybXNDb25maWdzO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoXCJjb250YWluZXJUZW1wbGF0ZVwiKVxyXG4gICAgcHJvdGVjdGVkIGNDb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAVmlld0NoaWxkcmVuKER5bmFtaWNGb3JtQmFzZUNvbXBvbmVudClcclxuICAgIHByaXZhdGUgZm9ybXM6IFF1ZXJ5TGlzdDxJRHluYW1pY0Zvcm1CYXNlPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBmb3JtU2VydmljZTogRHluYW1pY0Zvcm1TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBmb3JtU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtUHJlZml4VGVtcGxhdGVzID0ge307XHJcbiAgICAgICAgdGhpcy5mb3JtU3VmZml4VGVtcGxhdGVzID0ge307XHJcbiAgICAgICAgdGhpcy5pbm5lckZvcm1QcmVmaXhUZW1wbGF0ZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmlubmVyRm9ybVN1ZmZpeFRlbXBsYXRlcyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLSBMaWZlY3ljbGUgaG9va3NcclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJUZW1wbGF0ZSA9IHRoaXMuY29udGFpbmVyVGVtcGxhdGUgfHwgdGhpcy5jQ29udGFpbmVyVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5mb3JtUHJlZml4VGVtcGxhdGVzID0gdGhpcy5maWx0ZXJUZW1wbGF0ZXModGhpcy5mb3JtUHJlZml4VGVtcGxhdGVzLCBcImZvcm1QcmVmaXhcIik7XHJcbiAgICAgICAgdGhpcy5mb3JtU3VmZml4VGVtcGxhdGVzID0gdGhpcy5maWx0ZXJUZW1wbGF0ZXModGhpcy5mb3JtU3VmZml4VGVtcGxhdGVzLCBcImZvcm1TdWZmaXhcIik7XHJcbiAgICAgICAgdGhpcy5pbm5lckZvcm1QcmVmaXhUZW1wbGF0ZXMgPSB0aGlzLmZpbHRlclRlbXBsYXRlcyh0aGlzLmlubmVyRm9ybVByZWZpeFRlbXBsYXRlcywgXCJpbm5lckZvcm1QcmVmaXhcIik7XHJcbiAgICAgICAgdGhpcy5pbm5lckZvcm1TdWZmaXhUZW1wbGF0ZXMgPSB0aGlzLmZpbHRlclRlbXBsYXRlcyh0aGlzLmlubmVyRm9ybVN1ZmZpeFRlbXBsYXRlcywgXCJpbm5lckZvcm1TdWZmaXhcIik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29uZmlncyA9IHRoaXMuY3JlYXRlRm9ybUdyb3Vwcyh0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLSBJRHluYW1pY0Zvcm1CYXNlIC0tLVxyXG5cclxuICAgIHZhbGlkYXRlKHNob3dFcnJvcnM6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybXMpIHJldHVybiBQcm9taXNlLnJlamVjdChudWxsKTtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5mb3Jtcy5tYXAoZiA9PiBmLnZhbGlkYXRlKHNob3dFcnJvcnMpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VyaWFsaXplKHZhbGlkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1zKSByZXR1cm4gdmFsaWRhdGUgPyBQcm9taXNlLnJlamVjdChudWxsKSA6IFByb21pc2UucmVzb2x2ZSh7fSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuZm9ybXMubWFwKGYgPT4gZi5zZXJpYWxpemUodmFsaWRhdGUpKTtcclxuICAgICAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4ocmVzdWx0cyA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKGRhdGEsIGl4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kYXRhW2l4XTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aDogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoY29uZmlnLnBhdGgpICYmIGNvbmZpZy5wYXRoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGNvbmZpZy5wYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0VXRpbHMuaXNTdHJpbmcoY29uZmlnLnBhdGgpICYmIGNvbmZpZy5wYXRoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGNvbmZpZy5wYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE9iamVjdFV0aWxzLmlzTnVtYmVyKGNvbmZpZy5wYXRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gW2NvbmZpZy5wYXRoXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdFV0aWxzLmFzc2lnbihyZXN1bHQsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdFV0aWxzLm1hcFRvUGF0aChyZXN1bHQsIGRhdGEsIHBhdGgubWFwKHAgPT4gYCR7cH1gKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgICAgfSwgcmVqZWN0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVjaygpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtcykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5mb3Jtcy5tYXAodCA9PiB0LmNoZWNrKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb250cm9sKGlkOiBzdHJpbmcpOiBJRHluYW1pY0Zvcm1Db250cm9sIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRGcm9tVmFsdWUoZiA9PiBmLmdldENvbnRyb2woaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrRm9ybXMoY2hlY2s6IChmb3JtOiBJRHluYW1pY0Zvcm1CYXNlKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtcykgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc0RlZmluZWQodGhpcy5mb3Jtcy5maW5kKGNoZWNrKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRGcm9tVmFsdWU8VD4oY2hlY2s6IChmb3JtOiBJRHluYW1pY0Zvcm1CYXNlKSA9PiBUKTogVCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1zKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBsZXQgdmFsdWU6IFQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmluZChmID0+IHtcclxuICAgICAgICAgICAgdmFsdWUgPSBjaGVjayhmKTtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzRGVmaW5lZCh2YWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3Vwcyhjb25maWdzOiBJRHluYW1pY0Zvcm1zQ29uZmlncyk6IElEeW5hbWljRm9ybXNDb25maWdzIHtcclxuICAgICAgICByZXR1cm4gKGNvbmZpZ3MgfHwgW10pLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjLm11bHRpKSByZXR1cm4gYztcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gPElEeW5hbWljU2luZ2xlRm9ybUNvbmZpZz5jO1xyXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IG5ldyBEeW5hbWljRm9ybUdyb3VwKHRoaXMsIHtcclxuICAgICAgICAgICAgICAgIGlkOiBjb25maWcuaWQgfHwgVW5pcXVlVXRpbHMudXVpZCgpLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJtb2RlbFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogY29uZmlnLmNvbnRyb2xEYXRhXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25maWcuZ3JvdXAgPSBncm91cDtcclxuICAgICAgICAgICAgY29uZmlnLm5hbWUgPSBjb25maWcubmFtZSB8fCB0aGlzLm5hbWU7XHJcbiAgICAgICAgICAgIGdyb3VwLnNldHVwKGNvbmZpZy5kYXRhLCBjb25maWcpO1xyXG4gICAgICAgICAgICBncm91cC5yZWxvYWRDb250cm9scygpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -4,8 +4,6 @@ export class AsyncSubmitDirective {
4
4
  constructor(toaster, cdr, elem, renderer) {
5
5
  this.toaster = toaster;
6
6
  this.cdr = cdr;
7
- this.elem = elem;
8
- this.renderer = renderer;
9
7
  this.onSuccess = new EventEmitter();
10
8
  this.onError = new EventEmitter();
11
9
  if (elem.nativeElement.tagName !== "BUTTON")
@@ -15,26 +13,18 @@ export class AsyncSubmitDirective {
15
13
  get isDisabled() {
16
14
  return this.disabled;
17
15
  }
18
- set isDisabled(value) {
19
- this.disabled = value;
20
- if (value) {
21
- this.renderer.setAttribute(this.elem.nativeElement, "disabled", "disabled");
22
- return;
23
- }
24
- this.renderer.removeAttribute(this.elem.nativeElement, "disabled");
25
- }
26
16
  get isLoading() {
27
17
  return this.loading;
28
18
  }
29
19
  ngOnInit() {
30
20
  if (!this.form)
31
21
  return;
32
- this.isDisabled = this.form.status !== "VALID";
22
+ this.disabled = this.form.status !== "VALID";
33
23
  this.cdr.detectChanges();
34
- this.onStatusChange = this.form.onStatusChange.subscribe(() => {
35
- this.isDisabled = this.form.status !== "VALID";
24
+ this.onStatusChange = this.form.onStatusChange.subscribe(form => {
25
+ this.disabled = form.status !== "VALID";
36
26
  this.cdr.detectChanges();
37
- if (!this.callback || this.form.status == "PENDING")
27
+ if (!this.callback || form.status == "PENDING")
38
28
  return;
39
29
  if (!this.disabled) {
40
30
  this.callback();
@@ -60,7 +50,7 @@ export class AsyncSubmitDirective {
60
50
  if (this.loading)
61
51
  return;
62
52
  this.loading = true;
63
- this.method(this.form, this.context).then(result => {
53
+ this.method(this.form).then(result => {
64
54
  this.loading = false;
65
55
  if (result) {
66
56
  this.onSuccess.emit(result);
@@ -90,11 +80,10 @@ AsyncSubmitDirective.ctorParameters = () => [
90
80
  AsyncSubmitDirective.propDecorators = {
91
81
  method: [{ type: Input, args: ["async-submit",] }],
92
82
  form: [{ type: Input }],
93
- context: [{ type: Input }],
94
83
  onSuccess: [{ type: Output }],
95
84
  onError: [{ type: Output }],
96
85
  isDisabled: [{ type: HostBinding, args: ["class.disabled",] }],
97
86
  isLoading: [{ type: HostBinding, args: ["class.loading",] }],
98
87
  click: [{ type: HostListener, args: ["click",] }]
99
88
  };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc3VibWl0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL2RpcmVjdGl2ZXMvYXN5bmMtc3VibWl0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBaUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFPakYsTUFBTSxPQUFPLG9CQUFvQjtJQWtDN0IsWUFBNkMsT0FBd0IsRUFDaEQsR0FBc0IsRUFDdEIsSUFBZ0IsRUFDaEIsUUFBbUI7UUFISyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNoRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU87UUFDcEQsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBM0JELElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLEtBQUssRUFB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QUFDLCtDQUErQyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUE3RkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRSxjQUFjO2FBQzNCOzs7NENBbUNnQixNQUFNLFNBQUMsZUFBZTtZQXZEbkMsaUJBQWlCO1lBRWpCLFVBQVU7WUFTVixTQUFTOzs7cUJBWVIsS0FBSyxTQUFDLGNBQWM7bUJBQ3BCLEtBQUs7c0JBQ0wsS0FBSzt3QkFFTCxNQUFNO3NCQUNOLE1BQU07eUJBUU4sV0FBVyxTQUFDLGdCQUFnQjt3QkFjNUIsV0FBVyxTQUFDLGVBQWU7b0JBb0MzQixZQUFZLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7SUFzeW5jTWVzc2FnZSwgSVRvYXN0ZXJTZXJ2aWNlLCBUT0FTVEVSX1NFUlZJQ0V9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcbmltcG9ydCB7QXN5bmNTdWJtaXRNZXRob2QsIElEeW5hbWljRm9ybUJhc2V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2FzeW5jLXN1Ym1pdF1cIixcclxuICAgIGV4cG9ydEFzOiBcImFzeW5jLXN1Ym1pdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3luY1N1Ym1pdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBASW5wdXQoXCJhc3luYy1zdWJtaXRcIikgbWV0aG9kOiBBc3luY1N1Ym1pdE1ldGhvZDtcclxuICAgIEBJbnB1dCgpIGZvcm06IElEeW5hbWljRm9ybUJhc2U7XHJcbiAgICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uU3VjY2VzczogRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+O1xyXG4gICAgQE91dHB1dCgpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxJQXN5bmNNZXNzYWdlPjtcclxuXHJcbiAgICBwcml2YXRlIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBjYWxsYmFjazogRnVuY3Rpb247XHJcbiAgICBwcml2YXRlIG9uU3RhdHVzQ2hhbmdlOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIG9uU3VibWl0OiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZGlzYWJsZWRcIilcclxuICAgIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBpc0Rpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW0ubmF0aXZlRWxlbWVudCwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LCBcImRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmxvYWRpbmdcIilcclxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFRPQVNURVJfU0VSVklDRSkgcHJpdmF0ZSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgZWxlbTogRWxlbWVudFJlZixcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgICAgICB0aGlzLm9uU3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8SUFzeW5jTWVzc2FnZT4oKTtcclxuICAgICAgICB0aGlzLm9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+KCk7XHJcbiAgICAgICAgaWYgKGVsZW0ubmF0aXZlRWxlbWVudC50YWdOYW1lICE9PSBcIkJVVFRPTlwiKSByZXR1cm47XHJcbiAgICAgICAgcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW0ubmF0aXZlRWxlbWVudCwgXCJ0eXBlXCIsIFwiYnV0dG9uXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdGhpcy5mb3JtLnN0YXR1cyAhPT0gXCJWQUxJRFwiO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlID0gdGhpcy5mb3JtLm9uU3RhdHVzQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuZm9ybS5zdGF0dXMgIT09IFwiVkFMSURcIjtcclxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGJhY2sgfHwgdGhpcy5mb3JtLnN0YXR1cyA9PSBcIlBFTkRJTkdcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm9uU3VibWl0ID0gdGhpcy5mb3JtLm9uU3VibWl0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmNhbGxNZXRob2QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub25TdGF0dXNDaGFuZ2UpIHRoaXMub25TdGF0dXNDaGFuZ2UudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICBpZiAodGhpcy5vblN1Ym1pdCkgdGhpcy5vblN1Ym1pdC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxyXG4gICAgY2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9ICgpID0+IHRoaXMuY2FsbE1ldGhvZCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uc3RhdHVzICE9PSBcIlZBTElEXCIgJiYgdGhpcy5mb3JtLnN0YXR1cyAhPT0gXCJJTlZBTElEXCIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrKCk7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbE1ldGhvZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1ldGhvZCh0aGlzLmZvcm0sIHRoaXMuY29udGV4dCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3MuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MocmVzdWx0Lm1lc3NhZ2UsIHJlc3VsdC5jb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHJlYXNvbiA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVhc29uIHx8ICFyZWFzb24ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYXNvbiBtdXN0IGltcGxlbWVudCBJQXN5bmNNZXNzYWdlIGludGVyZmFjZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KHJlYXNvbik7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcihyZWFzb24ubWVzc2FnZSwgcmVhc29uLmNvbnRleHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc3VibWl0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL2RpcmVjdGl2ZXMvYXN5bmMtc3VibWl0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBaUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFPakYsTUFBTSxPQUFPLG9CQUFvQjtJQXdCN0IsWUFBNkMsT0FBd0IsRUFBVSxHQUFzQixFQUFFLElBQWdCLEVBQUUsUUFBbUI7UUFBL0YsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNqRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQUUsT0FBTztRQUNwRCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFmRCxJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBU0QsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJ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YzttQkFDcEIsS0FBSzt3QkFFTCxNQUFNO3NCQUNOLE1BQU07eUJBUU4sV0FBVyxTQUFDLGdCQUFnQjt3QkFLNUIsV0FBVyxTQUFDLGVBQWU7b0JBaUMzQixZQUFZLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7SUFzeW5jTWVzc2FnZSwgSVRvYXN0ZXJTZXJ2aWNlLCBUT0FTVEVSX1NFUlZJQ0V9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcbmltcG9ydCB7QXN5bmNTdWJtaXRNZXRob2QsIElEeW5hbWljRm9ybUJhc2V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2FzeW5jLXN1Ym1pdF1cIixcclxuICAgIGV4cG9ydEFzOiBcImFzeW5jLXN1Ym1pdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3luY1N1Ym1pdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBASW5wdXQoXCJhc3luYy1zdWJtaXRcIikgbWV0aG9kOiBBc3luY1N1Ym1pdE1ldGhvZDtcclxuICAgIEBJbnB1dCgpIGZvcm06IElEeW5hbWljRm9ybUJhc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uU3VjY2VzczogRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+O1xyXG4gICAgQE91dHB1dCgpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxJQXN5bmNNZXNzYWdlPjtcclxuXHJcbiAgICBwcml2YXRlIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBjYWxsYmFjazogRnVuY3Rpb247XHJcbiAgICBwcml2YXRlIG9uU3RhdHVzQ2hhbmdlOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIG9uU3VibWl0OiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZGlzYWJsZWRcIilcclxuICAgIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmxvYWRpbmdcIilcclxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFRPQVNURVJfU0VSVklDRSkgcHJpdmF0ZSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgZWxlbTogRWxlbWVudFJlZiwgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgICAgIHRoaXMub25TdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxJQXN5bmNNZXNzYWdlPigpO1xyXG4gICAgICAgIHRoaXMub25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8SUFzeW5jTWVzc2FnZT4oKTtcclxuICAgICAgICBpZiAoZWxlbS5uYXRpdmVFbGVtZW50LnRhZ05hbWUgIT09IFwiQlVUVE9OXCIpIHJldHVybjtcclxuICAgICAgICByZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbS5uYXRpdmVFbGVtZW50LCBcInR5cGVcIiwgXCJidXR0b25cIik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0pIHJldHVybjtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5mb3JtLnN0YXR1cyAhPT0gXCJWQUxJRFwiO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlID0gdGhpcy5mb3JtLm9uU3RhdHVzQ2hhbmdlLnN1YnNjcmliZShmb3JtID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZvcm0uc3RhdHVzICE9PSBcIlZBTElEXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNhbGxiYWNrIHx8IGZvcm0uc3RhdHVzID09IFwiUEVORElOR1wiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub25TdWJtaXQgPSB0aGlzLmZvcm0ub25TdWJtaXQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2FsbE1ldGhvZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5vblN0YXR1c0NoYW5nZSkgdGhpcy5vblN0YXR1c0NoYW5nZS51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLm9uU3VibWl0KSB0aGlzLm9uU3VibWl0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXHJcbiAgICBjbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gKCkgPT4gdGhpcy5jYWxsTWV0aG9kKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5zdGF0dXMgIT09IFwiVkFMSURcIiAmJiB0aGlzLmZvcm0uc3RhdHVzICE9PSBcIklOVkFMSURcIikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FsbGJhY2soKTtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjYWxsTWV0aG9kKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHJldHVybjtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWV0aG9kKHRoaXMuZm9ybSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3MuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MocmVzdWx0Lm1lc3NhZ2UsIHJlc3VsdC5jb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHJlYXNvbiA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVhc29uIHx8ICFyZWFzb24ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYXNvbiBtdXN0IGltcGxlbWVudCBJQXN5bmNNZXNzYWdlIGludGVyZmFjZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KHJlYXNvbik7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcihyZWFzb24ubWVzc2FnZSwgcmVhc29uLmNvbnRleHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Directive, Input, ViewContainerRef } from "@angular/core";
2
+ import { DynamicFormService } from "../services/dynamic-form.service";
3
+ export class DynamicFormControlDirective {
4
+ constructor(vcr, forms) {
5
+ this.vcr = vcr;
6
+ this.forms = forms;
7
+ }
8
+ get component() {
9
+ return this.comp;
10
+ }
11
+ ngOnChanges(changes) {
12
+ if (changes.control) {
13
+ this.comp = this.forms.createComponent(this.vcr, this.control.provider);
14
+ }
15
+ if (!this.comp)
16
+ return;
17
+ this.comp.control = this.control;
18
+ }
19
+ }
20
+ DynamicFormControlDirective.decorators = [
21
+ { type: Directive, args: [{
22
+ selector: "[form-control]",
23
+ },] }
24
+ ];
25
+ DynamicFormControlDirective.ctorParameters = () => [
26
+ { type: ViewContainerRef },
27
+ { type: DynamicFormService }
28
+ ];
29
+ DynamicFormControlDirective.propDecorators = {
30
+ control: [{ type: Input, args: ["form-control",] }]
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vZGlyZWN0aXZlcy9keW5hbWljLWZvcm0tY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQTRCLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBS3BFLE1BQU0sT0FBTywyQkFBMkI7SUFVcEMsWUFBb0IsR0FBcUIsRUFBVSxLQUF5QjtRQUF4RCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQW9CO0lBQzVFLENBQUM7SUFQRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQU9ELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQzs7O1lBdEJKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2FBQzdCOzs7WUFObUQsZ0JBQWdCO1lBRTVELGtCQUFrQjs7O3NCQU9yQixLQUFLLFNBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lEeW5hbWljRm9ybUNvbnRyb2wsIElGb3JtQ29udHJvbENvbXBvbmVudH0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIltmb3JtLWNvbnRyb2xdXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAgIEBJbnB1dChcImZvcm0tY29udHJvbFwiKSBjb250cm9sOiBJRHluYW1pY0Zvcm1Db250cm9sO1xyXG5cclxuICAgIGdldCBjb21wb25lbnQoKTogSUZvcm1Db250cm9sQ29tcG9uZW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29tcDogSUZvcm1Db250cm9sQ29tcG9uZW50O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmNyOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIGZvcm1zOiBEeW5hbWljRm9ybVNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbXAgPSB0aGlzLmZvcm1zLmNyZWF0ZUNvbXBvbmVudCh0aGlzLnZjciwgdGhpcy5jb250cm9sLnByb3ZpZGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbXApIHJldHVybjtcclxuICAgICAgICB0aGlzLmNvbXAuY29udHJvbCA9IHRoaXMuY29udHJvbDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { Directive, Input, ViewContainerRef } from "@angular/core";
2
+ import { DynamicFormService } from "../services/dynamic-form.service";
3
+ export class DynamicFormGroupDirective {
4
+ constructor(vcr, forms) {
5
+ this.vcr = vcr;
6
+ this.forms = forms;
7
+ }
8
+ get component() {
9
+ return this.comp;
10
+ }
11
+ ngOnChanges(changes) {
12
+ if (changes.control || changes.form || changes.visible) {
13
+ if (!this.visible) {
14
+ this.vcr.clear();
15
+ this.comp = null;
16
+ return;
17
+ }
18
+ this.comp = this.forms.createGroup(this.vcr);
19
+ }
20
+ if (!this.comp)
21
+ return;
22
+ this.comp.form = this.form;
23
+ this.comp.control = this.control;
24
+ }
25
+ }
26
+ DynamicFormGroupDirective.decorators = [
27
+ { type: Directive, args: [{
28
+ selector: "[form-group]",
29
+ },] }
30
+ ];
31
+ DynamicFormGroupDirective.ctorParameters = () => [
32
+ { type: ViewContainerRef },
33
+ { type: DynamicFormService }
34
+ ];
35
+ DynamicFormGroupDirective.propDecorators = {
36
+ control: [{ type: Input, args: ["form-group",] }],
37
+ form: [{ type: Input }],
38
+ visible: [{ type: Input }]
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL2RpcmVjdGl2ZXMvZHluYW1pYy1mb3JtLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBNEIsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFLcEUsTUFBTSxPQUFPLHlCQUF5QjtJQVlsQyxZQUFvQixHQUFxQixFQUFVLEtBQXlCO1FBQXhELFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBb0I7SUFDNUUsQ0FBQztJQVBELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBT0QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQzs7O1lBOUJKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYzthQUMzQjs7O1lBTm1ELGdCQUFnQjtZQUU1RCxrQkFBa0I7OztzQkFPckIsS0FBSyxTQUFDLFlBQVk7bUJBQ2xCLEtBQUs7c0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lEeW5hbWljRm9ybSwgSUR5bmFtaWNGb3JtQ29udHJvbCwgSUZvcm1Db250cm9sQ29tcG9uZW50LCBJRm9ybUdyb3VwQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2VcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2Zvcm0tZ3JvdXBdXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUdyb3VwRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgICBASW5wdXQoXCJmb3JtLWdyb3VwXCIpIGNvbnRyb2w6IElEeW5hbWljRm9ybUNvbnRyb2w7XHJcbiAgICBASW5wdXQoKSBmb3JtOiBJRHluYW1pY0Zvcm07XHJcbiAgICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuO1xyXG5cclxuICAgIGdldCBjb21wb25lbnQoKTogSUZvcm1Db250cm9sQ29tcG9uZW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29tcDogSUZvcm1Hcm91cENvbXBvbmVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZjcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBmb3JtczogRHluYW1pY0Zvcm1TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbnRyb2wgfHwgY2hhbmdlcy5mb3JtIHx8IGNoYW5nZXMudmlzaWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52Y3IuY2xlYXIoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb21wID0gdGhpcy5mb3Jtcy5jcmVhdGVHcm91cCh0aGlzLnZjcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21wKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jb21wLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICAgICAgdGhpcy5jb21wLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2w7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,38 @@
1
+ import { Directive, Input, TemplateRef } from "@angular/core";
2
+ export class DynamicFormTemplateDirective {
3
+ constructor(template) {
4
+ this.template = template;
5
+ }
6
+ }
7
+ DynamicFormTemplateDirective.decorators = [
8
+ { type: Directive, args: [{
9
+ selector: `ng-template[control],
10
+ ng-template[label],
11
+ ng-template[input],
12
+ ng-template[prefix],
13
+ ng-template[suffix],
14
+ ng-template[setPrefix],
15
+ ng-template[setSuffix],
16
+ ng-template[formPrefix],
17
+ ng-template[formSuffix],
18
+ ng-template[innerFormPrefix],
19
+ ng-template[innerFormSuffix]`
20
+ },] }
21
+ ];
22
+ DynamicFormTemplateDirective.ctorParameters = () => [
23
+ { type: TemplateRef }
24
+ ];
25
+ DynamicFormTemplateDirective.propDecorators = {
26
+ control: [{ type: Input }],
27
+ label: [{ type: Input }],
28
+ input: [{ type: Input }],
29
+ prefix: [{ type: Input }],
30
+ suffix: [{ type: Input }],
31
+ setPrefix: [{ type: Input }],
32
+ setSuffix: [{ type: Input }],
33
+ formPrefix: [{ type: Input }],
34
+ formSuffix: [{ type: Input }],
35
+ innerFormPrefix: [{ type: Input }],
36
+ innerFormSuffix: [{ type: Input }]
37
+ };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL2RpcmVjdGl2ZXMvZHluYW1pYy1mb3JtLXRlbXBsYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFlNUQsTUFBTSxPQUFPLDRCQUE0QjtJQWNyQyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUM3QyxDQUFDOzs7WUE1QkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs2Q0FVK0I7YUFDNUM7OztZQWR5QixXQUFXOzs7c0JBaUJoQyxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSztxQkFDTCxLQUFLO3FCQUNMLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSzs4QkFDTCxLQUFLOzhCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogYG5nLXRlbXBsYXRlW2NvbnRyb2xdLFxyXG4gICAgICAgICAgICAgICAgbmctdGVtcGxhdGVbbGFiZWxdLFxyXG4gICAgICAgICAgICAgICAgbmctdGVtcGxhdGVbaW5wdXRdLFxyXG4gICAgICAgICAgICAgICAgbmctdGVtcGxhdGVbcHJlZml4XSxcclxuICAgICAgICAgICAgICAgIG5nLXRlbXBsYXRlW3N1ZmZpeF0sXHJcbiAgICAgICAgICAgICAgICBuZy10ZW1wbGF0ZVtzZXRQcmVmaXhdLFxyXG4gICAgICAgICAgICAgICAgbmctdGVtcGxhdGVbc2V0U3VmZml4XSxcclxuICAgICAgICAgICAgICAgIG5nLXRlbXBsYXRlW2Zvcm1QcmVmaXhdLFxyXG4gICAgICAgICAgICAgICAgbmctdGVtcGxhdGVbZm9ybVN1ZmZpeF0sXHJcbiAgICAgICAgICAgICAgICBuZy10ZW1wbGF0ZVtpbm5lckZvcm1QcmVmaXhdLFxyXG4gICAgICAgICAgICAgICAgbmctdGVtcGxhdGVbaW5uZXJGb3JtU3VmZml4XWBcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtVGVtcGxhdGVEaXJlY3RpdmUge1xyXG5cclxuICAgIEBJbnB1dCgpIGNvbnRyb2w6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbnB1dDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHJlZml4OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHNldFByZWZpeDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2V0U3VmZml4OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBmb3JtUHJlZml4OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBmb3JtU3VmZml4OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbm5lckZvcm1QcmVmaXg6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGlubmVyRm9ybVN1ZmZpeDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,45 +1,56 @@
1
1
  import { NgModule } from "@angular/core";
2
2
  import { CommonModule } from "@angular/common";
3
- import { FormsModule, NG_VALIDATORS, ReactiveFormsModule } from "@angular/forms";
4
- import { DYNAMIC_VALIDATORS, DynamicFormService as BaseDynamicFormService, DynamicFormValidationService as BaseDynamicFormValidationService } from "@ng-dynamic-forms/core";
3
+ import { FormsModule, ReactiveFormsModule } from "@angular/forms";
5
4
  import { NgxUtilsModule } from "@stemy/ngx-utils";
5
+ import { provideFormControl, provideFormGroup } from "./common-types";
6
6
  import { DynamicFormService } from "./services/dynamic-form.service";
7
+ import { OpenApiService } from "./services/open-api.service";
7
8
  import { AsyncSubmitDirective } from "./directives/async-submit.directive";
8
- import { validateJSON, validatePhone, validateRequiredTranslation } from "./utils/validators";
9
- import { DynamicBaseFormComponent } from "./components/base/dynamic-base-form.component";
10
- import { DynamicBaseFormControlContainerComponent } from "./components/base/dynamic-base-form-control-container.component";
11
- import { DynamicFormValidationService } from "./services/dynamic-form-validation.service";
9
+ import { DynamicFormControlDirective } from "./directives/dynamic-form-control.directive";
10
+ import { DynamicFormGroupDirective } from "./directives/dynamic-form-group.directive";
11
+ import { DynamicFormTemplateDirective } from "./directives/dynamic-form-template.directive";
12
+ import { DynamicFormsComponent } from "./components/dynamic-forms/dynamic-forms.component";
13
+ import { DynamicFormComponent } from "./components/dynamic-form/dynamic-form.component";
14
+ import { DynamicFormGroupComponent } from "./components/dynamic-form-group/dynamic-form-group.component";
15
+ import { DynamicFormFileComponent } from "./components/dynamic-form-file/dynamic-form-file.component";
16
+ import { DynamicFormInputComponent } from "./components/dynamic-form-input/dynamic-form-input.component";
17
+ import { DynamicFormSelectComponent } from "./components/dynamic-form-select/dynamic-form-select.component";
18
+ import { DynamicFormStaticComponent } from "./components/dynamic-form-static/dynamic-form-static.component";
19
+ import { DynamicFormModelComponent } from "./components/dynamic-form-model/dynamic-form-model.component";
12
20
  // --- Components ---
13
21
  export const components = [
14
- DynamicBaseFormComponent,
15
- DynamicBaseFormControlContainerComponent
22
+ DynamicFormsComponent,
23
+ DynamicFormComponent,
24
+ DynamicFormGroupComponent,
25
+ DynamicFormFileComponent,
26
+ DynamicFormInputComponent,
27
+ DynamicFormSelectComponent,
28
+ DynamicFormStaticComponent,
29
+ DynamicFormModelComponent
16
30
  ];
17
31
  // --- Directives ---
18
32
  export const directives = [
19
33
  AsyncSubmitDirective,
34
+ DynamicFormControlDirective,
35
+ DynamicFormGroupDirective,
36
+ DynamicFormTemplateDirective
20
37
  ];
21
38
  // --- Pipes ---
22
39
  export const pipes = [];
23
- const ɵ0 = validateJSON, ɵ1 = validateRequiredTranslation, ɵ2 = validatePhone, ɵ3 = new Map([
24
- ["validateJSON", validateJSON],
25
- ["validateRequiredTranslation", validateRequiredTranslation],
26
- ["validatePhone", validatePhone],
27
- ]);
28
40
  export class NgxDynamicFormModule {
29
- static forRoot() {
41
+ static forRoot(controlProviders, groupProvider) {
30
42
  return {
31
43
  ngModule: NgxDynamicFormModule,
32
44
  providers: [
33
45
  DynamicFormService,
34
- DynamicFormValidationService,
35
- {
36
- provide: BaseDynamicFormService,
37
- useExisting: DynamicFormService
38
- },
39
- {
40
- provide: BaseDynamicFormValidationService,
41
- useExisting: DynamicFormValidationService
42
- }
46
+ OpenApiService,
47
+ provideFormControl(DynamicFormFileComponent, DynamicFormFileComponent.acceptor, DynamicFormFileComponent.loader),
48
+ provideFormControl(DynamicFormInputComponent, DynamicFormInputComponent.acceptor, DynamicFormInputComponent.loader),
49
+ provideFormControl(DynamicFormSelectComponent, DynamicFormSelectComponent.acceptor, DynamicFormSelectComponent.loader),
50
+ provideFormControl(DynamicFormStaticComponent, DynamicFormStaticComponent.acceptor, DynamicFormStaticComponent.loader),
51
+ provideFormControl(DynamicFormModelComponent, DynamicFormModelComponent.acceptor, DynamicFormModelComponent.loader),
52
+ ...(controlProviders || []),
53
+ groupProvider || provideFormGroup(DynamicFormGroupComponent)
43
54
  ]
44
55
  };
45
56
  }
@@ -66,17 +77,7 @@ NgxDynamicFormModule.decorators = [
66
77
  NgxUtilsModule
67
78
  ],
68
79
  entryComponents: components,
69
- providers: [
70
- ...pipes,
71
- { provide: NG_VALIDATORS, useValue: ɵ0, multi: true },
72
- { provide: NG_VALIDATORS, useValue: ɵ1, multi: true },
73
- { provide: NG_VALIDATORS, useValue: ɵ2, multi: true },
74
- {
75
- provide: DYNAMIC_VALIDATORS,
76
- useValue: ɵ3
77
- }
78
- ]
80
+ providers: pipes
79
81
  },] }
80
82
  ];
81
- export { ɵ0, ɵ1, ɵ2, ɵ3 };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWR5bmFtaWMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9uZ3gtZHluYW1pYy1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGtCQUFrQixJQUFJLHNCQUFzQixFQUM1Qyw0QkFBNEIsSUFBSSxnQ0FBZ0MsRUFHbkUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsMkJBQTJCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUN6SCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RixxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLHdCQUF3QjtJQUN4Qix3Q0FBd0M7Q0FDM0MsQ0FBQztBQUVGLHFCQUFxQjtBQUNyQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsb0JBQW9CO0NBQ3ZCLENBQUM7QUFFRixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztXQXlCbUIsWUFBWSxPQUNaLDJCQUEyQixPQUMzQixhQUFhLE9BR2xDLElBQUksR0FBRyxDQUF1QztJQUNwRCxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUM7SUFDOUIsQ0FBQyw2QkFBNkIsRUFBRSwyQkFBMkIsQ0FBQztJQUM1RCxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUM7Q0FDbkMsQ0FBQztBQUlkLE1BQU0sT0FBTyxvQkFBb0I7SUFFN0IsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPO1lBQ0gsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUU7Z0JBQ1Asa0JBQWtCO2dCQUNsQiw0QkFBNEI7Z0JBQzVCO29CQUNJLE9BQU8sRUFBRSxzQkFBc0I7b0JBQy9CLFdBQVcsRUFBRSxrQkFBa0I7aUJBQ2xDO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7b0JBQ3pDLFdBQVcsRUFBRSw0QkFBNEI7aUJBQzVDO2FBQ0o7U0FDSixDQUFBO0lBQ0wsQ0FBQzs7O1lBdERKLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUU7b0JBQ1YsR0FBRyxVQUFVO29CQUNiLEdBQUcsVUFBVTtvQkFDYixHQUFHLEtBQUs7aUJBQ1g7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLGNBQWM7aUJBQ2pCO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxHQUFHLFVBQVU7b0JBQ2IsR0FBRyxVQUFVO29CQUNiLEdBQUcsS0FBSztvQkFDUixXQUFXO29CQUNYLG1CQUFtQjtvQkFDbkIsY0FBYztpQkFDakI7Z0JBQ0QsZUFBZSxFQUFFLFVBQVU7Z0JBQzNCLFNBQVMsRUFBRTtvQkFDUCxHQUFHLEtBQUs7b0JBQ1IsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsSUFBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7b0JBQzdELEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLElBQTZCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztvQkFDNUUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsSUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7b0JBQzlEO3dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLFFBQVEsSUFJTjtxQkFDTDtpQkFDSjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEWU5BTUlDX1ZBTElEQVRPUlMsXHJcbiAgICBEeW5hbWljRm9ybVNlcnZpY2UgYXMgQmFzZUR5bmFtaWNGb3JtU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UgYXMgQmFzZUR5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBWYWxpZGF0b3IsXHJcbiAgICBWYWxpZGF0b3JGYWN0b3J5XHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtOZ3hVdGlsc01vZHVsZX0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuXHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHtBc3luY1N1Ym1pdERpcmVjdGl2ZX0gZnJvbSBcIi4vZGlyZWN0aXZlcy9hc3luYy1zdWJtaXQuZGlyZWN0aXZlXCI7XHJcblxyXG5pbXBvcnQge3ZhbGlkYXRlSlNPTiwgdmFsaWRhdGVQaG9uZSwgdmFsaWRhdGVSZXF1aXJlZFRyYW5zbGF0aW9ufSBmcm9tIFwiLi91dGlscy92YWxpZGF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0R5bmFtaWNCYXNlRm9ybUNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYmFzZS9keW5hbWljLWJhc2UtZm9ybS1jb250cm9sLWNvbnRhaW5lci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG4vLyAtLS0gQ29tcG9uZW50cyAtLS1cclxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudHMgPSBbXHJcbiAgICBEeW5hbWljQmFzZUZvcm1Db21wb25lbnQsXHJcbiAgICBEeW5hbWljQmFzZUZvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50XHJcbl07XHJcblxyXG4vLyAtLS0gRGlyZWN0aXZlcyAtLS1cclxuZXhwb3J0IGNvbnN0IGRpcmVjdGl2ZXMgPSBbXHJcbiAgICBBc3luY1N1Ym1pdERpcmVjdGl2ZSxcclxuXTtcclxuXHJcbi8vIC0tLSBQaXBlcyAtLS1cclxuZXhwb3J0IGNvbnN0IHBpcGVzID0gW107XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgLi4uY29tcG9uZW50cyxcclxuICAgICAgICAuLi5kaXJlY3RpdmVzLFxyXG4gICAgICAgIC4uLnBpcGVzXHJcbiAgICBdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE5neFV0aWxzTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIC4uLmNvbXBvbmVudHMsXHJcbiAgICAgICAgLi4uZGlyZWN0aXZlcyxcclxuICAgICAgICAuLi5waXBlcyxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE5neFV0aWxzTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZW50cnlDb21wb25lbnRzOiBjb21wb25lbnRzLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLi4ucGlwZXMsXHJcbiAgICAgICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZVZhbHVlOiB2YWxpZGF0ZUpTT04sIG11bHRpOiB0cnVlfSxcclxuICAgICAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlVmFsdWU6IHZhbGlkYXRlUmVxdWlyZWRUcmFuc2xhdGlvbiwgbXVsdGk6IHRydWV9LFxyXG4gICAgICAgIHtwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VWYWx1ZTogdmFsaWRhdGVQaG9uZSwgbXVsdGk6IHRydWV9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRFlOQU1JQ19WQUxJREFUT1JTLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogbmV3IE1hcDxzdHJpbmcsIFZhbGlkYXRvciB8IFZhbGlkYXRvckZhY3Rvcnk+KFtcclxuICAgICAgICAgICAgICAgIFtcInZhbGlkYXRlSlNPTlwiLCB2YWxpZGF0ZUpTT05dLFxyXG4gICAgICAgICAgICAgICAgW1widmFsaWRhdGVSZXF1aXJlZFRyYW5zbGF0aW9uXCIsIHZhbGlkYXRlUmVxdWlyZWRUcmFuc2xhdGlvbl0sXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWxpZGF0ZVBob25lXCIsIHZhbGlkYXRlUGhvbmVdLFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neER5bmFtaWNGb3JtTW9kdWxlIHtcclxuXHJcbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neER5bmFtaWNGb3JtTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IE5neER5bmFtaWNGb3JtTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIER5bmFtaWNGb3JtU2VydmljZSxcclxuICAgICAgICAgICAgICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQmFzZUR5bmFtaWNGb3JtU2VydmljZSxcclxuICAgICAgICAgICAgICAgICAgICB1c2VFeGlzdGluZzogRHluYW1pY0Zvcm1TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEJhc2VEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWR5bmFtaWMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9uZ3gtZHluYW1pYy1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQXlDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBRXRGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzFHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzFHLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRXZHLHFCQUFxQjtBQUNyQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQix5QkFBeUI7SUFDekIsd0JBQXdCO0lBQ3hCLHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLHlCQUF5QjtDQUM1QixDQUFDO0FBRUYscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN0QixvQkFBb0I7SUFDcEIsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6Qiw0QkFBNEI7Q0FDL0IsQ0FBQztBQUVGLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBeUJ4QixNQUFNLE9BQU8sb0JBQW9CO0lBRTdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQTZDLEVBQUUsYUFBaUM7UUFDM0YsT0FBTztZQUNILFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNQLGtCQUFrQjtnQkFDbEIsY0FBYztnQkFDZCxrQkFBa0IsQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUMsTUFBTSxDQUFDO2dCQUNoSCxrQkFBa0IsQ0FBQyx5QkFBeUIsRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDO2dCQUNuSCxrQkFBa0IsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDO2dCQUN0SCxrQkFBa0IsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDO2dCQUN0SCxrQkFBa0IsQ0FBQyx5QkFBeUIsRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDO2dCQUNuSCxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO2dCQUMzQixhQUFhLElBQUksZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7YUFDL0Q7U0FDSixDQUFBO0lBQ0wsQ0FBQzs7O1lBeENKLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUU7b0JBQ1YsR0FBRyxVQUFVO29CQUNiLEdBQUcsVUFBVTtvQkFDYixHQUFHLEtBQUs7aUJBQ1g7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLGNBQWM7aUJBQ2pCO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxHQUFHLFVBQVU7b0JBQ2IsR0FBRyxVQUFVO29CQUNiLEdBQUcsS0FBSztvQkFDUixXQUFXO29CQUNYLG1CQUFtQjtvQkFDbkIsY0FBYztpQkFDakI7Z0JBQ0QsZUFBZSxFQUFFLFVBQVU7Z0JBQzNCLFNBQVMsRUFBRSxLQUFLO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Tmd4VXRpbHNNb2R1bGV9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2xQcm92aWRlciwgRm9ybUdyb3VwUHJvdmlkZXIsIHByb3ZpZGVGb3JtQ29udHJvbCwgcHJvdmlkZUZvcm1Hcm91cH0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtPcGVuQXBpU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvb3Blbi1hcGkuc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHtBc3luY1N1Ym1pdERpcmVjdGl2ZX0gZnJvbSBcIi4vZGlyZWN0aXZlcy9hc3luYy1zdWJtaXQuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1Db250cm9sRGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2R5bmFtaWMtZm9ybS1jb250cm9sLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtR3JvdXBEaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvZHluYW1pYy1mb3JtLWdyb3VwLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvZHluYW1pYy1mb3JtLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3Jtc0NvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9keW5hbWljLWZvcm1zL2R5bmFtaWMtZm9ybXMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1Db21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnRcIjtcclxuXHJcbmltcG9ydCB7RHluYW1pY0Zvcm1Hcm91cENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZ3JvdXAvZHluYW1pYy1mb3JtLWdyb3VwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtRmlsZUNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZmlsZS9keW5hbWljLWZvcm0tZmlsZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1pbnB1dC9keW5hbWljLWZvcm0taW5wdXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TZWxlY3RDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdC9keW5hbWljLWZvcm0tc2VsZWN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU3RhdGljQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zdGF0aWMvZHluYW1pYy1mb3JtLXN0YXRpYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybU1vZGVsQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1tb2RlbC9keW5hbWljLWZvcm0tbW9kZWwuY29tcG9uZW50XCI7XHJcblxyXG4vLyAtLS0gQ29tcG9uZW50cyAtLS1cclxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudHMgPSBbXHJcbiAgICBEeW5hbWljRm9ybXNDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtR3JvdXBDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUZpbGVDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUlucHV0Q29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1TZWxlY3RDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybVN0YXRpY0NvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtTW9kZWxDb21wb25lbnRcclxuXTtcclxuXHJcbi8vIC0tLSBEaXJlY3RpdmVzIC0tLVxyXG5leHBvcnQgY29uc3QgZGlyZWN0aXZlcyA9IFtcclxuICAgIEFzeW5jU3VibWl0RGlyZWN0aXZlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sRGlyZWN0aXZlLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIER5bmFtaWNGb3JtVGVtcGxhdGVEaXJlY3RpdmVcclxuXTtcclxuXHJcbi8vIC0tLSBQaXBlcyAtLS1cclxuZXhwb3J0IGNvbnN0IHBpcGVzID0gW107XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgLi4uY29tcG9uZW50cyxcclxuICAgICAgICAuLi5kaXJlY3RpdmVzLFxyXG4gICAgICAgIC4uLnBpcGVzXHJcbiAgICBdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE5neFV0aWxzTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIC4uLmNvbXBvbmVudHMsXHJcbiAgICAgICAgLi4uZGlyZWN0aXZlcyxcclxuICAgICAgICAuLi5waXBlcyxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE5neFV0aWxzTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZW50cnlDb21wb25lbnRzOiBjb21wb25lbnRzLFxyXG4gICAgcHJvdmlkZXJzOiBwaXBlc1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RHluYW1pY0Zvcm1Nb2R1bGUge1xyXG5cclxuICAgIHN0YXRpYyBmb3JSb290KGNvbnRyb2xQcm92aWRlcnM/OiBBcnJheTxGb3JtQ29udHJvbFByb3ZpZGVyPiwgZ3JvdXBQcm92aWRlcj86IEZvcm1Hcm91cFByb3ZpZGVyKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hEeW5hbWljRm9ybU1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hEeW5hbWljRm9ybU1vZHVsZSxcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICAgICAgICBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBPcGVuQXBpU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByb3ZpZGVGb3JtQ29udHJvbChEeW5hbWljRm9ybUZpbGVDb21wb25lbnQsIER5bmFtaWNGb3JtRmlsZUNvbXBvbmVudC5hY2NlcHRvciwgRHluYW1pY0Zvcm1GaWxlQ29tcG9uZW50LmxvYWRlciksXHJcbiAgICAgICAgICAgICAgICBwcm92aWRlRm9ybUNvbnRyb2woRHluYW1pY0Zvcm1JbnB1dENvbXBvbmVudCwgRHluYW1pY0Zvcm1JbnB1dENvbXBvbmVudC5hY2NlcHRvciwgRHluYW1pY0Zvcm1JbnB1dENvbXBvbmVudC5sb2FkZXIpLFxyXG4gICAgICAgICAgICAgICAgcHJvdmlkZUZvcm1Db250cm9sKER5bmFtaWNGb3JtU2VsZWN0Q29tcG9uZW50LCBEeW5hbWljRm9ybVNlbGVjdENvbXBvbmVudC5hY2NlcHRvciwgRHluYW1pY0Zvcm1TZWxlY3RDb21wb25lbnQubG9hZGVyKSxcclxuICAgICAgICAgICAgICAgIHByb3ZpZGVGb3JtQ29udHJvbChEeW5hbWljRm9ybVN0YXRpY0NvbXBvbmVudCwgRHluYW1pY0Zvcm1TdGF0aWNDb21wb25lbnQuYWNjZXB0b3IsIER5bmFtaWNGb3JtU3RhdGljQ29tcG9uZW50LmxvYWRlciksXHJcbiAgICAgICAgICAgICAgICBwcm92aWRlRm9ybUNvbnRyb2woRHluYW1pY0Zvcm1Nb2RlbENvbXBvbmVudCwgRHluYW1pY0Zvcm1Nb2RlbENvbXBvbmVudC5hY2NlcHRvciwgRHluYW1pY0Zvcm1Nb2RlbENvbXBvbmVudC5sb2FkZXIpLFxyXG4gICAgICAgICAgICAgICAgLi4uKGNvbnRyb2xQcm92aWRlcnMgfHwgW10pLFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBQcm92aWRlciB8fCBwcm92aWRlRm9ybUdyb3VwKER5bmFtaWNGb3JtR3JvdXBDb21wb25lbnQpXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19