@stemy/ngx-dynamic-form 10.2.33 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/esm2020/ngx-dynamic-form/common-types.mjs +97 -0
  2. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-array.component.mjs +85 -0
  3. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs +109 -0
  4. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-group.component.mjs +74 -0
  5. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form.component.mjs +158 -0
  6. package/esm2020/ngx-dynamic-form/directives/async-submit.directive.mjs +111 -0
  7. package/esm2020/ngx-dynamic-form/ngx-dynamic-form.imports.mjs +22 -0
  8. package/esm2020/ngx-dynamic-form/ngx-dynamic-form.module.mjs +115 -0
  9. package/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +451 -0
  10. package/{esm2015/ngx-dynamic-form/utils/dynamic-form-array.model.js → esm2020/ngx-dynamic-form/utils/dynamic-form-array.model.mjs} +0 -0
  11. package/esm2020/ngx-dynamic-form/utils/form-select-subject.mjs +23 -0
  12. package/{esm2015/ngx-dynamic-form/utils/form-subject.js → esm2020/ngx-dynamic-form/utils/form-subject.mjs} +0 -0
  13. package/{esm2015/ngx-dynamic-form/utils/misc.js → esm2020/ngx-dynamic-form/utils/misc.mjs} +0 -0
  14. package/{esm2015/ngx-dynamic-form/utils/validators.js → esm2020/ngx-dynamic-form/utils/validators.mjs} +0 -0
  15. package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
  16. package/esm2020/stemy-ngx-dynamic-form.mjs +5 -0
  17. package/fesm2015/{stemy-ngx-dynamic-form.js → stemy-ngx-dynamic-form.mjs} +295 -189
  18. package/fesm2015/stemy-ngx-dynamic-form.mjs.map +1 -0
  19. package/fesm2020/stemy-ngx-dynamic-form.mjs +1311 -0
  20. package/fesm2020/stemy-ngx-dynamic-form.mjs.map +1 -0
  21. package/ngx-dynamic-form/common-types.d.ts +4 -0
  22. package/ngx-dynamic-form/components/base/dynamic-base-form-array.component.d.ts +3 -0
  23. package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +3 -0
  24. package/ngx-dynamic-form/components/base/dynamic-base-form-group.component.d.ts +3 -0
  25. package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +3 -0
  26. package/ngx-dynamic-form/directives/async-submit.directive.d.ts +3 -0
  27. package/ngx-dynamic-form/ngx-dynamic-form.imports.d.ts +10 -0
  28. package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +14 -9
  29. package/ngx-dynamic-form/services/dynamic-form.service.d.ts +3 -0
  30. package/package.json +42 -23
  31. package/public_api.d.ts +1 -1
  32. package/stemy-ngx-dynamic-form.d.ts +1 -1
  33. package/bundles/stemy-ngx-dynamic-form.umd.js +0 -1774
  34. package/bundles/stemy-ngx-dynamic-form.umd.js.map +0 -1
  35. package/bundles/stemy-ngx-dynamic-form.umd.min.js +0 -2
  36. package/bundles/stemy-ngx-dynamic-form.umd.min.js.map +0 -1
  37. package/esm2015/ngx-dynamic-form/common-types.js +0 -97
  38. package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form-array.component.js +0 -79
  39. package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.js +0 -102
  40. package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form-group.component.js +0 -65
  41. package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form.component.js +0 -140
  42. package/esm2015/ngx-dynamic-form/directives/async-submit.directive.js +0 -100
  43. package/esm2015/ngx-dynamic-form/ngx-dynamic-form.module.js +0 -87
  44. package/esm2015/ngx-dynamic-form/services/dynamic-form.service.js +0 -457
  45. package/esm2015/ngx-dynamic-form/utils/form-select-subject.js +0 -24
  46. package/esm2015/stemy-ngx-dynamic-form.js +0 -6
  47. package/fesm2015/stemy-ngx-dynamic-form.js.map +0 -1
  48. package/stemy-ngx-dynamic-form.metadata.json +0 -1
@@ -0,0 +1,97 @@
1
+ import { ObjectUtils, ReflectUtils } from "@stemy/ngx-utils";
2
+ // --- Decorator functions ---
3
+ export function defaultSerializer(id, parent) {
4
+ const control = parent.get(id);
5
+ return !control ? null : control.value;
6
+ }
7
+ export function FormSerializable(serializer) {
8
+ return (target, propertyKey) => {
9
+ ReflectUtils.defineMetadata("dynamicFormSerializer", serializer || defaultSerializer, target, propertyKey);
10
+ };
11
+ }
12
+ export function FormInput(data) {
13
+ return (target, propertyKey) => {
14
+ const meta = ReflectUtils.getOwnMetadata("design:type", target, propertyKey);
15
+ const type = meta ? meta.name : "";
16
+ let inputType = propertyKey.indexOf("password") < 0 ? "text" : "password";
17
+ switch (type) {
18
+ case "Number":
19
+ inputType = "number";
20
+ break;
21
+ case "Boolean":
22
+ inputType = "checkbox";
23
+ break;
24
+ }
25
+ defineFormControl(target, propertyKey, createFormInput(propertyKey, data, inputType));
26
+ };
27
+ }
28
+ export function FormSelect(data) {
29
+ return (target, propertyKey) => {
30
+ defineFormControl(target, propertyKey, createFormSelect(propertyKey, data));
31
+ };
32
+ }
33
+ export function FormStatic(data) {
34
+ return (target, propertyKey) => {
35
+ defineFormControl(target, propertyKey, createFormStatic(propertyKey, data));
36
+ };
37
+ }
38
+ export function FormModel(data) {
39
+ return (target, propertyKey) => {
40
+ defineFormControl(target, propertyKey, createFormModel(propertyKey, data));
41
+ };
42
+ }
43
+ export function FormFile(data) {
44
+ return (target, propertyKey) => {
45
+ defineFormControl(target, propertyKey, createFormFile(propertyKey, data));
46
+ };
47
+ }
48
+ export function defineFormControl(target, propertyKey, control) {
49
+ ReflectUtils.defineMetadata("dynamicFormControl", control, target, propertyKey);
50
+ }
51
+ export function getFormControl(target, propertyKey) {
52
+ return ReflectUtils.getMetadata("dynamicFormControl", target, propertyKey);
53
+ }
54
+ export function getFormSerializer(target, propertyKey) {
55
+ return ReflectUtils.getMetadata("dynamicFormSerializer", target, propertyKey);
56
+ }
57
+ export function createFormControl(id, type, config) {
58
+ config = config || { id };
59
+ config.id = id;
60
+ config.label = ObjectUtils.isNullOrUndefined(config.label) ? id : config.label;
61
+ config.disabled = config.disabled || false;
62
+ config.hidden = config.hidden || false;
63
+ return { id, type, config };
64
+ }
65
+ export function createFormInput(id, config, type = "text") {
66
+ const control = createFormControl(id, "input", config);
67
+ config = control.config;
68
+ config.inputType = config.inputType || type;
69
+ config.placeholder = config.placeholder || (config.inputType == "mask" ? "_" : "");
70
+ config.step = config.step || 1;
71
+ config.mask = config.mask || null;
72
+ return control;
73
+ }
74
+ export function createFormSelect(id, data) {
75
+ const control = createFormControl(id, "select", data);
76
+ data = control.config;
77
+ data.options = data.options || [];
78
+ return control;
79
+ }
80
+ export function createFormStatic(id, config) {
81
+ return createFormControl(id, "static", config);
82
+ }
83
+ export function createFormModel(id, data) {
84
+ const control = createFormControl(id, "group", data);
85
+ data = control.config;
86
+ data.name = data.name || "";
87
+ return control;
88
+ }
89
+ export function createFormFile(id, data) {
90
+ const control = createFormControl(id, "file", data);
91
+ data = control.config;
92
+ data.accept = data.accept || ["jpg", "jpeg", "png"];
93
+ data.multiple = data.multiple || false;
94
+ data.url = ObjectUtils.isString(data.url) ? data.url : "assets";
95
+ return control;
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tbW9uLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFLSCxXQUFXLEVBQ1gsWUFBWSxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUF3RjFCLDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBVSxFQUFFLE1BQWlCO0lBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBb0Q7SUFDakYsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLElBQUksaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9HLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQThCO0lBQ3BELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FB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TyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDNUIsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBVSxFQUFFLElBQWtDO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoRSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBUZW1wbGF0ZVJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljRmlsZVVwbG9hZE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sLCBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljU2VsZWN0TW9kZWxDb25maWdcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSUFzeW5jTWVzc2FnZSxcclxuICAgIElPcGVuQXBpU2NoZW1hLFxyXG4gICAgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSxcclxuICAgIElSZXNvbHZlRmFjdG9yeSxcclxuICAgIE9iamVjdFV0aWxzLFxyXG4gICAgUmVmbGVjdFV0aWxzXHJcbn0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUNvbnRyb2xNYXBGbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmUvbGliL3NlcnZpY2UvZHluYW1pYy1mb3JtLWNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG4vLyAtLS0gQmFzaWMgZm9ybSBjb250cm9sIGludGVyZmFjZXMgLS0tXHJcblxyXG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybVN0YXRlID0gXCJWQUxJRFwiIHwgXCJJTlZBTElEXCIgfCBcIlBFTkRJTkdcIiB8IFwiRElTQUJMRURcIiB8IFwiTE9BRElOR1wiO1xyXG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybVVwZGF0ZU9uID0gXCJjaGFuZ2VcIiB8IFwiYmx1clwiIHwgXCJzdWJtaXRcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtRXZlbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCB7XHJcbiAgICBmb3JtOiBJRHluYW1pY0Zvcm07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtIHtcclxuICAgIHN0YXR1czogRHluYW1pY0Zvcm1TdGF0ZTtcclxuXHJcbiAgICBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtRXZlbnQ+O1xyXG4gICAgb25TdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+O1xyXG4gICAgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+O1xyXG5cclxuICAgIHZhbGlkYXRlKCk6IFByb21pc2U8YW55PjtcclxuICAgIHNlcmlhbGl6ZSh2YWxpZGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT25DcmVhdGVkRm9ybUNvbnRyb2wgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2wge1xyXG4gICAgb25DcmVhdGVkKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZGVsVHlwZSBleHRlbmRzIEZ1bmN0aW9uIHtcclxuICAgIG5ldyAoY29uZmlnOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZyk6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtQ29udHJvbFNlcmlhbGl6ZXIgPSAobW9kZWw6IER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWw8YW55PiwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBQcm9taXNlPGFueT47XHJcbmV4cG9ydCB0eXBlIEZvcm1Nb2RlbEN1c3RvbWl6ZXIgPSAoXHJcbiAgICBwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSxcclxuICAgIG1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgY29uZmlnOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZywgaW5qZWN0b3I6IEluamVjdG9yXHJcbikgPT4gRHluYW1pY0Zvcm1Db250cm9sTW9kZWwgfCBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdO1xyXG5leHBvcnQgdHlwZSBGb3JtTW9kZWxDdXN0b21pemVyV3JhcCA9IChcclxuICAgIHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hLFxyXG4gICAgbW9kZWxUeXBlOiBNb2RlbFR5cGUsIGNvbmZpZzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWdcclxuKSA9PiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHR5cGU6IHN0cmluZztcclxuICAgIGNvbmZpZz86IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbE9wdGlvbiB7XHJcbiAgICBpZDogYW55O1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHNlbGVjdGFibGU/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyAtLS0gQmFzaWMgZm9ybSBpbnRlcmZhY2VzIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm1UZW1wbGF0ZXMge1xyXG4gICAgW2lkOiBzdHJpbmddOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEeW5hbWljRm9ybUNvbmZpZyB7XHJcbiAgICBwYXRoPzogc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBjbGFzc2VzPzogc3RyaW5nO1xyXG4gICAgZm9ybUNsYXNzZXM/OiBzdHJpbmc7XHJcbiAgICBpbm5lckZvcm1DbGFzc2VzPzogc3RyaW5nO1xyXG4gICAgaWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY1NpbmdsZUZvcm1Db25maWcgZXh0ZW5kcyBJRHluYW1pY0Zvcm1Db25maWcsIElEeW5hbWljRm9ybUluZm8ge1xyXG4gICAgZGF0YTogYW55O1xyXG4gICAgY29udHJvbERhdGE/OiBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWc7XHJcbiAgICBtdWx0aT86IGZhbHNlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEeW5hbWljTXVsdGlGb3JtQ29uZmlnIGV4dGVuZHMgSUR5bmFtaWNGb3JtQ29uZmlnIHtcclxuICAgIGRhdGE6IElEeW5hbWljRm9ybXNDb25maWdzO1xyXG4gICAgbXVsdGk6IHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElEeW5hbWljRm9ybXNDb25maWdzID0gQXJyYXk8SUR5bmFtaWNTaW5nbGVGb3JtQ29uZmlnIHwgSUR5bmFtaWNNdWx0aUZvcm1Db25maWc+O1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBBc3luY1N1Ym1pdE1ldGhvZCA9IChmb3JtOiBJRHluYW1pY0Zvcm0sIGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEeW5hbWljRm9ybUluZm8ge1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICAgIGNvbnRyb2xzPzogSUZvcm1Db250cm9sW107XHJcbn1cclxuXHJcbi8vIC0tLSBEZWNvcmF0b3IgZnVuY3Rpb25zIC0tLVxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFNlcmlhbGl6ZXIoaWQ6IHN0cmluZywgcGFyZW50OiBGb3JtQXJyYXkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHBhcmVudC5nZXQoaWQpO1xyXG4gICAgcmV0dXJuICFjb250cm9sID8gbnVsbDogY29udHJvbC52YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1TZXJpYWxpemFibGUoc2VyaWFsaXplcj86IEZvcm1Db250cm9sU2VyaWFsaXplciB8IElSZXNvbHZlRmFjdG9yeSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJkeW5hbWljRm9ybVNlcmlhbGl6ZXJcIiwgc2VyaWFsaXplciB8fCBkZWZhdWx0U2VyaWFsaXplciwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUlucHV0KGRhdGE/OiBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBjb25zdCBtZXRhID0gUmVmbGVjdFV0aWxzLmdldE93bk1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IG1ldGEgPyBtZXRhLm5hbWUgOiBcIlwiO1xyXG4gICAgICAgIGxldCBpbnB1dFR5cGUgPSBwcm9wZXJ0eUtleS5pbmRleE9mKFwicGFzc3dvcmRcIikgPCAwID8gXCJ0ZXh0XCIgOiBcInBhc3N3b3JkXCI7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJOdW1iZXJcIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwibnVtYmVyXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIkJvb2xlYW5cIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwiY2hlY2tib3hcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQsIHByb3BlcnR5S2V5LCBjcmVhdGVGb3JtSW5wdXQocHJvcGVydHlLZXksIGRhdGEsIGlucHV0VHlwZSkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1TZWxlY3QoZGF0YT86IER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZzxhbnk+KTogUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGRlZmluZUZvcm1Db250cm9sKHRhcmdldCwgcHJvcGVydHlLZXksIGNyZWF0ZUZvcm1TZWxlY3QocHJvcGVydHlLZXksIGRhdGEpKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtU3RhdGljKGRhdGE/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQsIHByb3BlcnR5S2V5LCBjcmVhdGVGb3JtU3RhdGljKHByb3BlcnR5S2V5LCBkYXRhKSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybU1vZGVsKGRhdGE/OiBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcpOiBQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZGVmaW5lRm9ybUNvbnRyb2wodGFyZ2V0LCBwcm9wZXJ0eUtleSwgY3JlYXRlRm9ybU1vZGVsKHByb3BlcnR5S2V5LCBkYXRhKSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUZpbGUoZGF0YT86IER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcpOiBQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZGVmaW5lRm9ybUNvbnRyb2wodGFyZ2V0LCBwcm9wZXJ0eUtleSwgY3JlYXRlRm9ybUZpbGUocHJvcGVydHlLZXksIGRhdGEpKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgY29udHJvbDogSUZvcm1Db250cm9sKTogdm9pZCB7XHJcbiAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJkeW5hbWljRm9ybUNvbnRyb2xcIiwgY29udHJvbCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udHJvbCh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IElGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gUmVmbGVjdFV0aWxzLmdldE1ldGFkYXRhKFwiZHluYW1pY0Zvcm1Db250cm9sXCIsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVNlcmlhbGl6ZXIodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBGb3JtQ29udHJvbFNlcmlhbGl6ZXIgfCBJUmVzb2x2ZUZhY3Rvcnkge1xyXG4gICAgcmV0dXJuIFJlZmxlY3RVdGlscy5nZXRNZXRhZGF0YShcImR5bmFtaWNGb3JtU2VyaWFsaXplclwiLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1Db250cm9sKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgY29uZmlnPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uZmlnID0gY29uZmlnIHx8IHtpZH07XHJcbiAgICBjb25maWcuaWQgPSBpZDtcclxuICAgIGNvbmZpZy5sYWJlbCA9IE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKGNvbmZpZy5sYWJlbCkgPyBpZCA6IGNvbmZpZy5sYWJlbDtcclxuICAgIGNvbmZpZy5kaXNhYmxlZCA9IGNvbmZpZy5kaXNhYmxlZCB8fCBmYWxzZTtcclxuICAgIGNvbmZpZy5oaWRkZW4gPSBjb25maWcuaGlkZGVuIHx8IGZhbHNlO1xyXG4gICAgcmV0dXJuIHtpZCwgdHlwZSwgY29uZmlnfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1JbnB1dChpZDogc3RyaW5nLCBjb25maWc6IER5bmFtaWNJbnB1dE1vZGVsQ29uZmlnLCB0eXBlOiBzdHJpbmcgPSBcInRleHRcIik6IElGb3JtQ29udHJvbCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woaWQsIFwiaW5wdXRcIiwgY29uZmlnKTtcclxuICAgIGNvbmZpZyA9IGNvbnRyb2wuY29uZmlnO1xyXG4gICAgY29uZmlnLmlucHV0VHlwZSA9IGNvbmZpZy5pbnB1dFR5cGUgfHwgdHlwZTtcclxuICAgIGNvbmZpZy5wbGFjZWhvbGRlciA9IGNvbmZpZy5wbGFjZWhvbGRlciB8fCAoY29uZmlnLmlucHV0VHlwZSA9PSBcIm1hc2tcIiA/IFwiX1wiIDogXCJcIik7XHJcbiAgICBjb25maWcuc3RlcCA9IGNvbmZpZy5zdGVwIHx8IDE7XHJcbiAgICBjb25maWcubWFzayA9IGNvbmZpZy5tYXNrIHx8IG51bGw7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1TZWxlY3QoaWQ6IHN0cmluZywgZGF0YTogRHluYW1pY1NlbGVjdE1vZGVsQ29uZmlnPGFueT4pOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcInNlbGVjdFwiLCBkYXRhKTtcclxuICAgIGRhdGEgPSBjb250cm9sLmNvbmZpZztcclxuICAgIGRhdGEub3B0aW9ucyA9IGRhdGEub3B0aW9ucyB8fCBbXTtcclxuICAgIHJldHVybiBjb250cm9sO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybVN0YXRpYyhpZDogc3RyaW5nLCBjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnKTogSUZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiBjcmVhdGVGb3JtQ29udHJvbChpZCwgXCJzdGF0aWNcIiwgY29uZmlnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1Nb2RlbChpZDogc3RyaW5nLCBkYXRhOiBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcImdyb3VwXCIsIGRhdGEpO1xyXG4gICAgZGF0YSA9IGNvbnRyb2wuY29uZmlnO1xyXG4gICAgZGF0YS5uYW1lID0gZGF0YS5uYW1lIHx8IFwiXCI7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1GaWxlKGlkOiBzdHJpbmcsIGRhdGE6IER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcImZpbGVcIiwgZGF0YSk7XHJcbiAgICBkYXRhID0gY29udHJvbC5jb25maWc7XHJcbiAgICBkYXRhLmFjY2VwdCA9IGRhdGEuYWNjZXB0IHx8IFtcImpwZ1wiLCBcImpwZWdcIiwgXCJwbmdcIl07XHJcbiAgICBkYXRhLm11bHRpcGxlID0gZGF0YS5tdWx0aXBsZSB8fCBmYWxzZTtcclxuICAgIGRhdGEudXJsID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcoZGF0YS51cmwpID8gZGF0YS51cmwgOiBcImFzc2V0c1wiO1xyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtTW9kdWxlQ29uZmlnIHtcclxuICAgIGNvbnRyb2xQcm92aWRlcj86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IER5bmFtaWNGb3JtQ29udHJvbE1hcEZuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,85 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChildren } from "@angular/core";
2
+ import { DynamicFormArrayComponent, DynamicFormControlContainerComponent, DynamicFormGroupModel, DynamicFormValueControlModel } from "@ng-dynamic-forms/core";
3
+ import { DynamicFormArrayModel } from "../../utils/dynamic-form-array.model";
4
+ import { collectPathAble } from "../../utils/misc";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ng-dynamic-forms/core";
7
+ export class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent {
8
+ constructor(layoutService, validationService, injector) {
9
+ super(layoutService, validationService);
10
+ this.layoutService = layoutService;
11
+ this.validationService = validationService;
12
+ this.injector = injector;
13
+ this.blur = new EventEmitter();
14
+ this.change = new EventEmitter();
15
+ this.customEvent = new EventEmitter();
16
+ this.focus = new EventEmitter();
17
+ }
18
+ get useTabs() {
19
+ return this.model?.useTabs;
20
+ }
21
+ saveTab(index) {
22
+ this.model.saveTab(index, this.model, this.injector);
23
+ }
24
+ restoreTab() {
25
+ return this.model.restoreTab(this.model, this.injector);
26
+ }
27
+ getClass(context, place, model) {
28
+ return [
29
+ context == "element" ? this.getModelClass(model) : null,
30
+ context == "element" ? this.getAdditionalClass(model) : null,
31
+ super.getClass(context, place, model),
32
+ model instanceof DynamicFormValueControlModel ? model.additional?.classes : null
33
+ ].filter(cls => !!cls).join(" ");
34
+ }
35
+ getModelClass(model) {
36
+ const parts = collectPathAble(model, p => p.id);
37
+ if (parts.length == 0)
38
+ return "";
39
+ if (model instanceof DynamicFormGroupModel) {
40
+ return `form-group-${parts.join("-")}`;
41
+ }
42
+ return `form-control-${parts.join("-")}`;
43
+ }
44
+ getAdditionalClass(model) {
45
+ if (model instanceof DynamicFormArrayModel) {
46
+ return model.additional?.classes;
47
+ }
48
+ if (model instanceof DynamicFormValueControlModel) {
49
+ return model.additional?.classes;
50
+ }
51
+ return null;
52
+ }
53
+ }
54
+ DynamicBaseFormArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, deps: [{ token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
55
+ DynamicBaseFormArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormArrayComponent, selector: "dynamic-base-form-array", inputs: { formLayout: "formLayout", group: "group", layout: "layout", model: "model", templates: "templates" }, outputs: { blur: "blur", change: "change", customEvent: "customEvent", focus: "focus" }, viewQueries: [{ propertyName: "components", predicate: i0.forwardRef(function () { return DynamicFormControlContainerComponent; }), descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, decorators: [{
57
+ type: Component,
58
+ args: [{
59
+ selector: "dynamic-base-form-array",
60
+ template: "",
61
+ changeDetection: ChangeDetectionStrategy.OnPush
62
+ }]
63
+ }], ctorParameters: function () { return [{ type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }, { type: i0.Injector }]; }, propDecorators: { formLayout: [{
64
+ type: Input
65
+ }], group: [{
66
+ type: Input
67
+ }], layout: [{
68
+ type: Input
69
+ }], model: [{
70
+ type: Input
71
+ }], templates: [{
72
+ type: Input
73
+ }], blur: [{
74
+ type: Output
75
+ }], change: [{
76
+ type: Output
77
+ }], customEvent: [{
78
+ type: Output
79
+ }], focus: [{
80
+ type: Output
81
+ }], components: [{
82
+ type: ViewChildren,
83
+ args: [forwardRef(() => DynamicFormControlContainerComponent)]
84
+ }] } });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tYXJyYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWFycmF5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsb0NBQW9DLEVBTXBDLHFCQUFxQixFQUlyQiw0QkFBNEIsRUFFL0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEseUJBQXlCO0lBb0J4RSxZQUFzQixhQUF1QyxFQUN2QyxpQkFBK0MsRUFDL0MsUUFBa0I7UUFFcEMsS0FBSyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBSnRCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQThCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQVU7UUFkOUIsU0FBSSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxnQkFBVyxHQUFnRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlFLFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQWN4RCxDQUFDO0lBVEQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBU0QsT0FBTyxDQUFDLEtBQWE7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdDLEVBQUUsS0FBb0MsRUFBRSxLQUErQjtRQUNwSCxPQUFPO1lBQ0gsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUN2RCxPQUFPLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDNUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUNyQyxLQUFLLFlBQVksNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ25GLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRVMsYUFBYSxDQUFDLEtBQStCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEtBQUssWUFBWSxxQkFBcUIsRUFBRTtZQUN4QyxPQUFPLGNBQWMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxnQkFBZ0IsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxLQUErQjtRQUN4RCxJQUFJLEtBQUssWUFBWSxxQkFBcUIsRUFBRTtZQUN4QyxPQUFPLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxLQUFLLFlBQVksNEJBQTRCLEVBQUU7WUFDL0MsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztTQUNwQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OzBIQTdEUSw2QkFBNkI7OEdBQTdCLDZCQUE2QiwwVUFhUCxvQ0FBb0MsMkVBaEJ6RCxFQUFFOzJGQUdILDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7aUxBR1ksVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbEN1c3RvbUV2ZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0Q29udGV4dCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbExheW91dFBsYWNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5TW9kZWx9IGZyb20gXCIuLi8uLi91dGlscy9keW5hbWljLWZvcm0tYXJyYXkubW9kZWxcIjtcclxuaW1wb3J0IHtjb2xsZWN0UGF0aEFibGV9IGZyb20gXCIuLi8uLi91dGlscy9taXNjXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtLWFycmF5XCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQmFzZUZvcm1BcnJheUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtQXJyYXlDb21wb25lbnQge1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm1MYXlvdXQ6IER5bmFtaWNGb3JtTGF5b3V0O1xyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0O1xyXG4gICAgQElucHV0KCkgbW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbDtcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY3VzdG9tRXZlbnQ6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xDdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQpKVxyXG4gICAgY29tcG9uZW50czogUXVlcnlMaXN0PER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudD47XHJcblxyXG4gICAgZ2V0IHVzZVRhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw/LnVzZVRhYnM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxheW91dFNlcnZpY2U6IER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uU2VydmljZTogRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHJcbiAgICAgICAgc3VwZXIobGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubW9kZWwuc2F2ZVRhYihpbmRleCwgdGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZVRhYigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnJlc3RvcmVUYWIodGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2xhc3MoY29udGV4dDogRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0Q29udGV4dCwgcGxhY2U6IER5bmFtaWNGb3JtQ29udHJvbExheW91dFBsYWNlLCBtb2RlbD86IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICBjb250ZXh0ID09IFwiZWxlbWVudFwiID8gdGhpcy5nZXRNb2RlbENsYXNzKG1vZGVsKSA6IG51bGwsXHJcbiAgICAgICAgICAgIGNvbnRleHQgPT0gXCJlbGVtZW50XCIgPyB0aGlzLmdldEFkZGl0aW9uYWxDbGFzcyhtb2RlbCkgOiBudWxsLFxyXG4gICAgICAgICAgICBzdXBlci5nZXRDbGFzcyhjb250ZXh0LCBwbGFjZSwgbW9kZWwpLFxyXG4gICAgICAgICAgICBtb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWwgPyBtb2RlbC5hZGRpdGlvbmFsPy5jbGFzc2VzIDogbnVsbFxyXG4gICAgICAgIF0uZmlsdGVyKGNscyA9PiAhIWNscykuam9pbihcIiBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldE1vZGVsQ2xhc3MobW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcGFydHMgPSBjb2xsZWN0UGF0aEFibGUobW9kZWwsIHAgPT4gcC5pZCk7XHJcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAwKSByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAobW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBmb3JtLWdyb3VwLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBmb3JtLWNvbnRyb2wtJHtwYXJ0cy5qb2luKFwiLVwiKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRBZGRpdGlvbmFsQ2xhc3MobW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5hZGRpdGlvbmFsPy5jbGFzc2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5hZGRpdGlvbmFsPy5jbGFzc2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,109 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Input, Output, ViewChild, ViewContainerRef } from "@angular/core";
2
+ import { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DynamicFormControlContainerComponent, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
3
+ import { ObjectUtils } from "@stemy/ngx-utils";
4
+ import { collectPathAble } from "../../utils/misc";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./dynamic-base-form.component";
7
+ import * as i2 from "@ng-dynamic-forms/core";
8
+ export class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent {
9
+ constructor(form, changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService) {
10
+ super(changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService);
11
+ this.form = form;
12
+ this.changeDetectorRef = changeDetectorRef;
13
+ this.componentFactoryResolver = componentFactoryResolver;
14
+ this.layoutService = layoutService;
15
+ this.validationService = validationService;
16
+ this.componentService = componentService;
17
+ this.relationService = relationService;
18
+ this.context = null;
19
+ this.blur = new EventEmitter();
20
+ this.change = new EventEmitter();
21
+ this.focus = new EventEmitter();
22
+ }
23
+ get componentType() {
24
+ return this.componentService.getCustomComponentType(this.model) ?? this.getComponentType(this.model);
25
+ }
26
+ get startTemplate() {
27
+ return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)
28
+ ? this.layoutService.getAlignedTemplate(this.model, this.templates, "ARRAY_START")
29
+ : this.layoutService.getStartTemplate(this.model, this.templates);
30
+ }
31
+ get endTemplate() {
32
+ return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)
33
+ ? this.layoutService.getAlignedTemplate(this.model, this.templates, "ARRAY_END")
34
+ : this.layoutService.getEndTemplate(this.model, this.templates);
35
+ }
36
+ get formService() {
37
+ return this.form.formService;
38
+ }
39
+ ngOnInit() {
40
+ this.onDetectChanges = this.formService.onDetectChanges.subscribe(form => {
41
+ if (form !== this.form)
42
+ return;
43
+ this.changeDetectorRef.detectChanges();
44
+ this.formService.updateSelectOptions(this.model, this.control, this.form.model);
45
+ });
46
+ }
47
+ ngOnDestroy() {
48
+ super.ngOnDestroy();
49
+ this.onDetectChanges.unsubscribe();
50
+ }
51
+ getLabel() {
52
+ const label = collectPathAble(this.model, p => p.label);
53
+ if (label.length == 0)
54
+ return "";
55
+ if (this.form?.labelPrefix) {
56
+ label.unshift(this.form.labelPrefix);
57
+ }
58
+ return label.join(".");
59
+ }
60
+ createFormControlComponent() {
61
+ super.createFormControlComponent();
62
+ const component = this.componentRef?.instance;
63
+ if (!component || !ObjectUtils.isFunction(component.onCreated))
64
+ return;
65
+ component.onCreated();
66
+ }
67
+ getComponentType(model) {
68
+ return null;
69
+ }
70
+ }
71
+ DynamicBaseFormControlContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlContainerComponent, deps: [{ token: i1.DynamicBaseFormComponent }, { token: i0.ChangeDetectorRef }, { token: i0.ComponentFactoryResolver }, { token: i2.DynamicFormLayoutService }, { token: i2.DynamicFormValidationService }, { token: i2.DynamicFormComponentService }, { token: i2.DynamicFormRelationService }], target: i0.ɵɵFactoryTarget.Component });
72
+ DynamicBaseFormControlContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormControlContainerComponent, selector: "dynamic-base-form-control", inputs: { context: "context", group: "group", hostClass: "hostClass", inputTemplateList: ["templates", "inputTemplateList"], layout: "layout", model: "model" }, outputs: { blur: "blur", change: "change", focus: "focus" }, host: { properties: { "class": "this.klass" } }, queries: [{ propertyName: "contentTemplateList", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "componentViewContainerRef", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlContainerComponent, decorators: [{
74
+ type: Component,
75
+ args: [{
76
+ selector: "dynamic-base-form-control",
77
+ template: "",
78
+ changeDetection: ChangeDetectionStrategy.OnPush
79
+ }]
80
+ }], ctorParameters: function () { return [{ type: i1.DynamicBaseFormComponent }, { type: i0.ChangeDetectorRef }, { type: i0.ComponentFactoryResolver }, { type: i2.DynamicFormLayoutService }, { type: i2.DynamicFormValidationService }, { type: i2.DynamicFormComponentService }, { type: i2.DynamicFormRelationService }]; }, propDecorators: { contentTemplateList: [{
81
+ type: ContentChildren,
82
+ args: [DynamicTemplateDirective]
83
+ }], klass: [{
84
+ type: HostBinding,
85
+ args: ["class"]
86
+ }], context: [{
87
+ type: Input
88
+ }], group: [{
89
+ type: Input
90
+ }], hostClass: [{
91
+ type: Input
92
+ }], inputTemplateList: [{
93
+ type: Input,
94
+ args: ["templates"]
95
+ }], layout: [{
96
+ type: Input
97
+ }], model: [{
98
+ type: Input
99
+ }], blur: [{
100
+ type: Output
101
+ }], change: [{
102
+ type: Output
103
+ }], focus: [{
104
+ type: Output
105
+ }], componentViewContainerRef: [{
106
+ type: ViewChild,
107
+ args: ["componentViewContainer", { read: ViewContainerRef, static: true }]
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNILCtCQUErQixFQUkvQixvQ0FBb0MsRUFPcEMsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQVNqRCxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsb0NBQW9DO0lBeUM5RixZQUFxQixJQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGFBQXVDLEVBQ3ZDLGlCQUErQyxFQUMvQyxnQkFBNkMsRUFDN0MsZUFBMkM7UUFDNUQsS0FBSyxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQVB2RyxTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBOEI7UUFDL0MscUJBQWdCLEdBQWhC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SSxDQUFDLFNBQVMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU87UUFDdkUsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUE4QjtRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOztxSUFsRlEsd0NBQXdDO3lIQUF4Qyx3Q0FBd0Msb1hBRWhDLHdCQUF3Qiw2SUFlRyxnQkFBZ0Isa0VBcEJsRCxFQUFFOzJGQUdILHdDQUF3QztrQkFMcEQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7MlZBRzhDLG1CQUFtQjtzQkFBN0QsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBRW5CLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFFWCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ2MsaUJBQWlCO3NCQUFwQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ1QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFFc0UseUJBQXlCO3NCQUFyRyxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBUeXBlLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Rm9ybUdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0FSUkFZLFxyXG4gICAgRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2wsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVJlbGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmVcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtPbkNyZWF0ZWRGb3JtQ29udHJvbH0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2NvbGxlY3RQYXRoQWJsZX0gZnJvbSBcIi4uLy4uL3V0aWxzL21pc2NcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2xcIixcclxuICAgIHRlbXBsYXRlOiBcIlwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlKSBjb250ZW50VGVtcGxhdGVMaXN0OiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBrbGFzcztcclxuXHJcbiAgICBASW5wdXQoKSBjb250ZXh0OiBEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbCB8IG51bGwgPSBudWxsO1xyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGhvc3RDbGFzczogc3RyaW5nW107XHJcbiAgICBASW5wdXQoXCJ0ZW1wbGF0ZXNcIikgaW5wdXRUZW1wbGF0ZUxpc3Q6IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+O1xyXG4gICAgQElucHV0KCkgbGF5b3V0OiBEeW5hbWljRm9ybUxheW91dDtcclxuICAgIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBmb2N1czogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImNvbXBvbmVudFZpZXdDb250YWluZXJcIiwge3JlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZX0pIGNvbXBvbmVudFZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRGV0ZWN0Q2hhbmdlczogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGdldCBjb21wb25lbnRUeXBlKCk6IFR5cGU8RHluYW1pY0Zvcm1Db250cm9sPiB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2V0Q3VzdG9tQ29tcG9uZW50VHlwZSh0aGlzLm1vZGVsKSA/PyB0aGlzLmdldENvbXBvbmVudFR5cGUodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0YXJ0VGVtcGxhdGUoKTogRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kZWwudHlwZSA9PSBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0FSUkFZKVxyXG4gICAgICAgICAgICA/IHRoaXMubGF5b3V0U2VydmljZS5nZXRBbGlnbmVkVGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMsIFwiQVJSQVlfU1RBUlRcIiBhcyBhbnkpXHJcbiAgICAgICAgICAgIDogdGhpcy5sYXlvdXRTZXJ2aWNlLmdldFN0YXJ0VGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlbmRUZW1wbGF0ZSgpOiBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC50eXBlID09IERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQVJSQVkpXHJcbiAgICAgICAgICAgID8gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEFsaWduZWRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcywgXCJBUlJBWV9FTkRcIiBhcyBhbnkpXHJcbiAgICAgICAgICAgIDogdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEVuZFRlbXBsYXRlKHRoaXMubW9kZWwsIHRoaXMudGVtcGxhdGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZm9ybVNlcnZpY2UoKTogRHluYW1pY0Zvcm1TZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmZvcm1TZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZvcm06IER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgbGF5b3V0U2VydmljZTogRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdmFsaWRhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBjb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSByZWxhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtUmVsYXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3JSZWYsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgbGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UsIGNvbXBvbmVudFNlcnZpY2UsIHJlbGF0aW9uU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMgPSB0aGlzLmZvcm1TZXJ2aWNlLm9uRGV0ZWN0Q2hhbmdlcy5zdWJzY3JpYmUoZm9ybSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtICE9PSB0aGlzLmZvcm0pIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlU2VsZWN0T3B0aW9ucyh0aGlzLm1vZGVsLCB0aGlzLmNvbnRyb2wsIHRoaXMuZm9ybS5tb2RlbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExhYmVsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBjb2xsZWN0UGF0aEFibGUodGhpcy5tb2RlbCwgcCA9PiBwLmxhYmVsKTtcclxuICAgICAgICBpZiAobGFiZWwubGVuZ3RoID09IDApIHJldHVybiBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0/LmxhYmVsUHJlZml4KSB7XHJcbiAgICAgICAgICAgIGxhYmVsLnVuc2hpZnQodGhpcy5mb3JtLmxhYmVsUHJlZml4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsLmpvaW4oXCIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpIHtcclxuICAgICAgICBzdXBlci5jcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSBhcyBPbkNyZWF0ZWRGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudCB8fCAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihjb21wb25lbnQub25DcmVhdGVkKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbXBvbmVudC5vbkNyZWF0ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Q29tcG9uZW50VHlwZShtb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBUeXBlPER5bmFtaWNGb3JtQ29udHJvbD4gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,74 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChildren } from "@angular/core";
2
+ import { DynamicFormControlContainerComponent, DynamicFormGroupComponent, DynamicFormGroupModel, DynamicFormValueControlModel } from "@ng-dynamic-forms/core";
3
+ import { DynamicFormArrayModel } from "../../utils/dynamic-form-array.model";
4
+ import { collectPathAble } from "../../utils/misc";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ng-dynamic-forms/core";
7
+ export class DynamicBaseFormGroupComponent extends DynamicFormGroupComponent {
8
+ constructor(layoutService, validationService) {
9
+ super(layoutService, validationService);
10
+ this.layoutService = layoutService;
11
+ this.validationService = validationService;
12
+ this.blur = new EventEmitter();
13
+ this.change = new EventEmitter();
14
+ this.customEvent = new EventEmitter();
15
+ this.focus = new EventEmitter();
16
+ }
17
+ getClass(context, place, model) {
18
+ return [
19
+ context == "element" ? this.getModelClass(model) : null,
20
+ context == "element" ? this.getAdditionalClass(model) : null,
21
+ super.getClass(context, place, model)
22
+ ].filter(cls => !!cls).join(" ");
23
+ }
24
+ getModelClass(model) {
25
+ const parts = collectPathAble(model, p => p.id);
26
+ if (parts.length == 0)
27
+ return "";
28
+ if (model instanceof DynamicFormGroupModel) {
29
+ return `form-group-${parts.join("-")}`;
30
+ }
31
+ return `form-control-${parts.join("-")}`;
32
+ }
33
+ getAdditionalClass(model) {
34
+ if (model instanceof DynamicFormArrayModel) {
35
+ return model.additional?.classes;
36
+ }
37
+ if (model instanceof DynamicFormValueControlModel) {
38
+ return model.additional?.classes;
39
+ }
40
+ return null;
41
+ }
42
+ }
43
+ DynamicBaseFormGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormGroupComponent, deps: [{ token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }], target: i0.ɵɵFactoryTarget.Component });
44
+ DynamicBaseFormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormGroupComponent, selector: "dynamic-base-form-group", inputs: { formLayout: "formLayout", group: "group", layout: "layout", model: "model", templates: "templates" }, outputs: { blur: "blur", change: "change", customEvent: "customEvent", focus: "focus" }, viewQueries: [{ propertyName: "components", predicate: i0.forwardRef(function () { return DynamicFormControlContainerComponent; }), descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormGroupComponent, decorators: [{
46
+ type: Component,
47
+ args: [{
48
+ selector: "dynamic-base-form-group",
49
+ template: "",
50
+ changeDetection: ChangeDetectionStrategy.OnPush
51
+ }]
52
+ }], ctorParameters: function () { return [{ type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }]; }, propDecorators: { formLayout: [{
53
+ type: Input
54
+ }], group: [{
55
+ type: Input
56
+ }], layout: [{
57
+ type: Input
58
+ }], model: [{
59
+ type: Input
60
+ }], templates: [{
61
+ type: Input
62
+ }], blur: [{
63
+ type: Output
64
+ }], change: [{
65
+ type: Output
66
+ }], customEvent: [{
67
+ type: Output
68
+ }], focus: [{
69
+ type: Output
70
+ }], components: [{
71
+ type: ViewChildren,
72
+ args: [forwardRef(() => DynamicFormControlContainerComponent)]
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxvQ0FBb0MsRUFNcEMseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUlyQiw0QkFBNEIsRUFFL0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEseUJBQXlCO0lBZ0J4RSxZQUFzQixhQUF1QyxFQUN2QyxpQkFBK0M7UUFDakUsS0FBSyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRnRCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQThCO1FBVDNELFNBQUksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QyxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsZ0JBQVcsR0FBZ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5RSxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFReEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUF3QyxFQUFFLEtBQW9DLEVBQUUsS0FBK0I7UUFDcEgsT0FBTztZQUNILE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDdkQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzVELEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7U0FDeEMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxhQUFhLENBQUMsS0FBK0I7UUFDbkQsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLElBQUksS0FBSyxZQUFZLHFCQUFxQixFQUFFO1lBQ3hDLE9BQU8sY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDMUM7UUFDRCxPQUFPLGdCQUFnQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVTLGtCQUFrQixDQUFDLEtBQStCO1FBQ3hELElBQUksS0FBSyxZQUFZLHFCQUFxQixFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7U0FDcEM7UUFDRCxJQUFJLEtBQUssWUFBWSw0QkFBNEIsRUFBRTtZQUMvQyxPQUFPLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7MEhBOUNRLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLDBVQWFQLG9DQUFvQywyRUFoQnpELEVBQUU7MkZBR0gsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDswSkFHWSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFHUCxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sQ3VzdG9tRXZlbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXRDb250ZXh0LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0UGxhY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtR3JvdXBDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5TW9kZWx9IGZyb20gXCIuLi8uLi91dGlscy9keW5hbWljLWZvcm0tYXJyYXkubW9kZWxcIjtcclxuaW1wb3J0IHtjb2xsZWN0UGF0aEFibGV9IGZyb20gXCIuLi8uLi91dGlscy9taXNjXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtLWdyb3VwXCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQmFzZUZvcm1Hcm91cENvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtR3JvdXBDb21wb25lbnQge1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm1MYXlvdXQ6IER5bmFtaWNGb3JtTGF5b3V0O1xyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0O1xyXG4gICAgQElucHV0KCkgbW9kZWw6IER5bmFtaWNGb3JtR3JvdXBNb2RlbDtcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT4gfCBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmVbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjdXN0b21FdmVudDogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCkpXHJcbiAgICBjb21wb25lbnRzOiBRdWVyeUxpc3Q8RHluYW1pY0Zvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50PjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbGF5b3V0U2VydmljZTogRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIHZhbGlkYXRpb25TZXJ2aWNlOiBEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIobGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENsYXNzKGNvbnRleHQ6IER5bmFtaWNGb3JtQ29udHJvbExheW91dENvbnRleHQsIHBsYWNlOiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXRQbGFjZSwgbW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgY29udGV4dCA9PSBcImVsZW1lbnRcIiA/IHRoaXMuZ2V0TW9kZWxDbGFzcyhtb2RlbCkgOiBudWxsLFxyXG4gICAgICAgICAgICBjb250ZXh0ID09IFwiZWxlbWVudFwiID8gdGhpcy5nZXRBZGRpdGlvbmFsQ2xhc3MobW9kZWwpIDogbnVsbCxcclxuICAgICAgICAgICAgc3VwZXIuZ2V0Q2xhc3MoY29udGV4dCwgcGxhY2UsIG1vZGVsKVxyXG4gICAgICAgIF0uZmlsdGVyKGNscyA9PiAhIWNscykuam9pbihcIiBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldE1vZGVsQ2xhc3MobW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcGFydHMgPSBjb2xsZWN0UGF0aEFibGUobW9kZWwsIHAgPT4gcC5pZCk7XHJcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAwKSByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAobW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBmb3JtLWdyb3VwLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBmb3JtLWNvbnRyb2wtJHtwYXJ0cy5qb2luKFwiLVwiKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRBZGRpdGlvbmFsQ2xhc3MobW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5hZGRpdGlvbmFsPy5jbGFzc2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5hZGRpdGlvbmFsPy5jbGFzc2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=