kwikid-forms 0.0.0-watch

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 (87) hide show
  1. package/README.md +44 -0
  2. package/assets/done1.png +0 -0
  3. package/assets/edit.png +0 -0
  4. package/assets/lock.png +0 -0
  5. package/esm2015/kwikid-forms.js +5 -0
  6. package/esm2015/lib/builder/builder.component.js +138 -0
  7. package/esm2015/lib/builder/builder.module.js +21 -0
  8. package/esm2015/lib/kwikid-forms.module.js +53 -0
  9. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.js +16 -0
  10. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.js +2 -0
  11. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.js +8 -0
  12. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.js +2 -0
  13. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.js +47 -0
  14. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.js +2 -0
  15. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.js +15 -0
  16. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.js +2 -0
  17. package/esm2015/lib/renderer/form-view/definitions/rules/form-view.rules.enum.definitions.js +7 -0
  18. package/esm2015/lib/renderer/form-view/definitions/rules/form-view.rules.type.definitions.js +2 -0
  19. package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.enum.definitions.js +16 -0
  20. package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.js +2 -0
  21. package/esm2015/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.js +2 -0
  22. package/esm2015/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.js +2 -0
  23. package/esm2015/lib/renderer/form-view/form-view.component.js +654 -0
  24. package/esm2015/lib/renderer/form-view/form-view.decorators.js +93 -0
  25. package/esm2015/lib/renderer/form-view/form-view.module.js +37 -0
  26. package/esm2015/lib/renderer/form-view/form-view.service.js +27 -0
  27. package/esm2015/lib/renderer/form-view/helpers/form-view.actions.helper.js +27 -0
  28. package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +105 -0
  29. package/esm2015/lib/renderer/form-view/helpers/form-view.common.helper.js +136 -0
  30. package/esm2015/lib/renderer/form-view/helpers/form-view.condition.helper.js +46 -0
  31. package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +52 -0
  32. package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +146 -0
  33. package/esm2015/lib/renderer/form-view/helpers/form-view.rules.helper.js +86 -0
  34. package/esm2015/lib/renderer/form-view/helpers/form-view.sources.helper.js +161 -0
  35. package/esm2015/lib/renderer/form-view/helpers/form-view.validations.helper.js +156 -0
  36. package/esm2015/lib/renderer/forms-list/forms-list.component.js +61 -0
  37. package/esm2015/lib/renderer/forms-list/forms-list.helper.js +4 -0
  38. package/esm2015/lib/renderer/forms-list/forms-list.module.js +37 -0
  39. package/esm2015/lib/renderer/renderer.component.js +201 -0
  40. package/esm2015/lib/renderer/renderer.config-converter.helper.js +530 -0
  41. package/esm2015/lib/renderer/renderer.helper.js +50 -0
  42. package/esm2015/lib/renderer/renderer.module.js +39 -0
  43. package/esm2015/lib/renderer/renderer.service.js +115 -0
  44. package/esm2015/public_api.js +17 -0
  45. package/fesm2015/kwikid-forms.js +2970 -0
  46. package/fesm2015/kwikid-forms.js.map +1 -0
  47. package/kwikid-forms.d.ts +5 -0
  48. package/lib/builder/builder.component.d.ts +68 -0
  49. package/lib/builder/builder.module.d.ts +10 -0
  50. package/lib/kwikid-forms.module.d.ts +13 -0
  51. package/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.d.ts +14 -0
  52. package/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.d.ts +91 -0
  53. package/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.d.ts +6 -0
  54. package/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.d.ts +40 -0
  55. package/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.d.ts +43 -0
  56. package/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.d.ts +7 -0
  57. package/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.d.ts +13 -0
  58. package/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.d.ts +137 -0
  59. package/lib/renderer/form-view/definitions/rules/form-view.rules.enum.definitions.d.ts +5 -0
  60. package/lib/renderer/form-view/definitions/rules/form-view.rules.type.definitions.d.ts +41 -0
  61. package/lib/renderer/form-view/definitions/sources/form-view.sources.enum.definitions.d.ts +13 -0
  62. package/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.d.ts +16 -0
  63. package/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.d.ts +1 -0
  64. package/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.d.ts +17 -0
  65. package/lib/renderer/form-view/form-view.component.d.ts +66 -0
  66. package/lib/renderer/form-view/form-view.decorators.d.ts +7 -0
  67. package/lib/renderer/form-view/form-view.module.d.ts +11 -0
  68. package/lib/renderer/form-view/form-view.service.d.ts +5 -0
  69. package/lib/renderer/form-view/helpers/form-view.actions.helper.d.ts +13 -0
  70. package/lib/renderer/form-view/helpers/form-view.apis.helper.d.ts +17 -0
  71. package/lib/renderer/form-view/helpers/form-view.common.helper.d.ts +19 -0
  72. package/lib/renderer/form-view/helpers/form-view.condition.helper.d.ts +8 -0
  73. package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +10 -0
  74. package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +20 -0
  75. package/lib/renderer/form-view/helpers/form-view.rules.helper.d.ts +12 -0
  76. package/lib/renderer/form-view/helpers/form-view.sources.helper.d.ts +29 -0
  77. package/lib/renderer/form-view/helpers/form-view.validations.helper.d.ts +25 -0
  78. package/lib/renderer/forms-list/forms-list.component.d.ts +18 -0
  79. package/lib/renderer/forms-list/forms-list.helper.d.ts +1 -0
  80. package/lib/renderer/forms-list/forms-list.module.d.ts +11 -0
  81. package/lib/renderer/renderer.component.d.ts +30 -0
  82. package/lib/renderer/renderer.config-converter.helper.d.ts +7 -0
  83. package/lib/renderer/renderer.helper.d.ts +6 -0
  84. package/lib/renderer/renderer.module.d.ts +12 -0
  85. package/lib/renderer/renderer.service.d.ts +27 -0
  86. package/package.json +47 -0
  87. package/public_api.d.ts +9 -0
@@ -0,0 +1,146 @@
1
+ import { __awaiter } from "tslib";
2
+ import { hasKey, isNotEmpty } from "./form-view.common.helper";
3
+ export const findFieldFromKey = (fields, key) => {
4
+ const field = fields.find((field) => {
5
+ if (field.key === key) {
6
+ return field;
7
+ }
8
+ });
9
+ return field;
10
+ };
11
+ export const findFieldIndexFromKey = (fields, key) => {
12
+ let fieldIndex;
13
+ fieldIndex = fields.findIndex((_) => {
14
+ return key === _.key;
15
+ });
16
+ return fieldIndex;
17
+ };
18
+ export const getSearchTextOptionsFromRemoteFile = (field, childField, formGroup) => __awaiter(void 0, void 0, void 0, function* () {
19
+ const parentFieldValue = formGroup.controls[field.key].value;
20
+ // Determine the URL of the remote file to fetch
21
+ let fileUrl;
22
+ if (childField.regexToGetJsonRemoteUrlKey) {
23
+ const fileKey = parentFieldValue.match(childField.regexToGetJsonRemoteUrlKey)[0];
24
+ fileUrl = childField.jsonRemoteUrlMapping[fileKey];
25
+ }
26
+ else {
27
+ fileUrl = childField.fileUrl;
28
+ }
29
+ // Return early if there is no file URL
30
+ if (!fileUrl)
31
+ return;
32
+ // Fetch the remote file and parse its JSON data
33
+ const response = yield fetch(fileUrl);
34
+ const data = yield response.json();
35
+ // Return the data for the given parent field value
36
+ return data[parentFieldValue];
37
+ });
38
+ export const getSearchTextOptionsFromFieldConfig = (field, childField, formGroup) => {
39
+ let options;
40
+ const fieldValue = formGroup.controls[field.key].value;
41
+ if (isNotEmpty(childField["json"])) {
42
+ options = childField["json"][fieldValue];
43
+ }
44
+ return options;
45
+ };
46
+ export const formatSearchTextOptions = (options) => {
47
+ return options.map(({ title }) => title);
48
+ };
49
+ export const formatDateToStandardFormat = (date) => {
50
+ let formattedDate;
51
+ let year = date.year;
52
+ let month = date.month;
53
+ let day = date.day;
54
+ formattedDate = `${day}-${month + 1}-${year}`;
55
+ return formattedDate;
56
+ };
57
+ export function highlightFieldError(field, error) {
58
+ field.invalid = error;
59
+ field.focus = error;
60
+ // if (!error) {
61
+ // field["messages"] = field["messages"].filter(function (fieldMessage: {
62
+ // type: string;
63
+ // message: string;
64
+ // }) {
65
+ // return fieldMessage.type === "error";
66
+ // });
67
+ // }
68
+ return field;
69
+ }
70
+ export const addMessage = (field, message) => {
71
+ const isDuplicateMessage = (messages, message) => {
72
+ return messages.some((fieldMessage) => {
73
+ return (fieldMessage.type === message.type &&
74
+ fieldMessage.message === message.message);
75
+ });
76
+ };
77
+ field["messages"] = [];
78
+ if (hasKey(field, "messages")) {
79
+ if (!isDuplicateMessage(field["messages"], message)) {
80
+ field["messages"].push({
81
+ type: message.type,
82
+ message: message.message
83
+ });
84
+ }
85
+ }
86
+ else {
87
+ field["messages"] = [{ type: message.type, message: message.message }];
88
+ }
89
+ return field;
90
+ };
91
+ export const removeMessage = (field, message) => {
92
+ field["messages"] = field["messages"].filter(function (fieldMessage) {
93
+ return fieldMessage.type !== message.type;
94
+ });
95
+ return field;
96
+ };
97
+ export function setFieldError(fields, errors, key, error) {
98
+ const fieldIndex = fields.findIndex((field) => {
99
+ return field.key === key;
100
+ });
101
+ const setErrorMessages = (field, errors) => {
102
+ const getErrorMessage = (fieldLabel, errorType) => {
103
+ let errorMessage = "";
104
+ switch (errorType) {
105
+ case "required":
106
+ errorMessage = `${fieldLabel} is required!`;
107
+ break;
108
+ case "pattern":
109
+ errorMessage = `${fieldLabel} has wrong pattern!`;
110
+ break;
111
+ case "email":
112
+ errorMessage = `${fieldLabel} has wrong email format!`;
113
+ break;
114
+ case "minlength":
115
+ errorMessage = `${fieldLabel} has wrong length! Required minimum length: ${field.validators.minLength}`;
116
+ break;
117
+ case "maxlength":
118
+ errorMessage = `${fieldLabel} has wrong length! Required maximum length: ${field.validators.maxLength}`;
119
+ break;
120
+ case "areEqual":
121
+ errorMessage = `${fieldLabel} must be equal!`;
122
+ break;
123
+ default:
124
+ errorMessage = `${fieldLabel}: ${"error.error_name"}: ${"error.error_value"}`;
125
+ break;
126
+ }
127
+ return errorMessage;
128
+ };
129
+ Object.keys(errors).forEach((error) => {
130
+ field = addMessage(field, {
131
+ type: "error",
132
+ message: getErrorMessage(field.label, error)
133
+ });
134
+ });
135
+ return field;
136
+ };
137
+ if (error) {
138
+ fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors);
139
+ }
140
+ else {
141
+ fields[fieldIndex]["messages"] = [];
142
+ }
143
+ fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);
144
+ return fields;
145
+ }
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmZpZWxkcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUM3RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDbEMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUNyQixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBYSxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQ2xFLElBQUksVUFBa0IsQ0FBQztJQUV2QixVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQ3ZDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUNoRCxLQUFVLEVBQ1YsVUFBZSxFQUNmLFNBQWMsRUFDQSxFQUFFO0lBQ2hCLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRTdE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QUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ25FO1NBQU07UUFDTCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ3JDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVwRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHVpRGF5IH0gZnJvbSBcIkB0YWlnYS11aS9jZGtcIjtcclxuaW1wb3J0IHsgaGFzS2V5LCBpc05vdEVtcHR5IH0gZnJvbSBcIi4vZm9ybS12aWV3LmNvbW1vbi5oZWxwZXJcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBmaW5kRmllbGRGcm9tS2V5ID0gKGZpZWxkczogYW55W10sIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IHtcclxuICAgIGlmIChmaWVsZC5rZXkgPT09IGtleSkge1xyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBmaWVsZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBmaW5kRmllbGRJbmRleEZyb21LZXkgPSAoZmllbGRzOiBhbnlbXSwga2V5OiBzdHJpbmcpID0+IHtcclxuICBsZXQgZmllbGRJbmRleDogbnVtYmVyO1xyXG5cclxuICBmaWVsZEluZGV4ID0gZmllbGRzLmZpbmRJbmRleCgoXzogYW55KSA9PiB7XHJcbiAgICByZXR1cm4ga2V5ID09PSBfLmtleTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZpZWxkSW5kZXg7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoVGV4dE9wdGlvbnNGcm9tUmVtb3RlRmlsZSA9IGFzeW5jIChcclxuICBmaWVsZDogYW55LFxyXG4gIGNoaWxkRmllbGQ6IGFueSxcclxuICBmb3JtR3JvdXA6IGFueVxyXG4pOiBQcm9taXNlPGFueT4gPT4ge1xyXG4gIGNvbnN0IHBhcmVudEZpZWxkVmFsdWUgPSBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQua2V5XS52YWx1ZTtcclxuXHJcbiAgLy8gRGV0ZXJtaW5lIHRoZSBVUkwgb2YgdGhlIHJlbW90ZSBmaWxlIHRvIGZldGNoXHJcbiAgbGV0IGZpbGVVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBpZiAoY2hpbGRGaWVsZC5yZWdleFRvR2V0SnNvblJlbW90ZVVybEtleSkge1xyXG4gICAgY29uc3QgZmlsZUtleSA9IHBhcmVudEZpZWxkVmFsdWUubWF0Y2goXHJcbiAgICAgIGNoaWxkRmllbGQucmVnZXhUb0dldEpzb25SZW1vdGVVcmxLZXlcclxuICAgIClbMF07XHJcbiAgICBmaWxlVXJsID0gY2hpbGRGaWVsZC5qc29uUmVtb3RlVXJsTWFwcGluZ1tmaWxlS2V5XTtcclxuICB9IGVsc2Uge1xyXG4gICAgZmlsZVVybCA9IGNoaWxkRmllbGQuZmlsZVVybDtcclxuICB9XHJcblxyXG4gIC8vIFJldHVybiBlYXJseSBpZiB0aGVyZSBpcyBubyBmaWxlIFVSTFxyXG4gIGlmICghZmlsZVVybCkgcmV0dXJuO1xyXG5cclxuICAvLyBGZXRjaCB0aGUgcmVtb3RlIGZpbGUgYW5kIHBhcnNlIGl0cyBKU09OIGRhdGFcclxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZpbGVVcmwpO1xyXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcblxyXG4gIC8vIFJldHVybiB0aGUgZGF0YSBmb3IgdGhlIGdpdmVuIHBhcmVudCBmaWVsZCB2YWx1ZVxyXG4gIHJldHVybiBkYXRhW3BhcmVudEZpZWxkVmFsdWVdO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaFRleHRPcHRpb25zRnJvbUZpZWxkQ29uZmlnID0gKFxyXG4gIGZpZWxkOiBhbnksXHJcbiAgY2hpbGRGaWVsZDogYW55LFxyXG4gIGZvcm1Hcm91cDogYW55XHJcbik6IGFueSA9PiB7XHJcbiAgbGV0IG9wdGlvbnM6IGFueTtcclxuXHJcbiAgY29uc3QgZmllbGRWYWx1ZSA9IGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5rZXldLnZhbHVlO1xyXG5cclxuICBpZiAoaXNOb3RFbXB0eShjaGlsZEZpZWxkW1wianNvblwiXSkpIHtcclxuICAgIG9wdGlvbnMgPSBjaGlsZEZpZWxkW1wianNvblwiXVtmaWVsZFZhbHVlXTtcclxuICB9XHJcblxyXG4gIHJldHVybiBvcHRpb25zO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGZvcm1hdFNlYXJjaFRleHRPcHRpb25zID0gKFxyXG4gIG9wdGlvbnM6IHsgdGl0bGU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cclxuKTogc3RyaW5nW10gPT4ge1xyXG4gIHJldHVybiBvcHRpb25zLm1hcCgoeyB0aXRsZSB9KSA9PiB0aXRsZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZm9ybWF0RGF0ZVRvU3RhbmRhcmRGb3JtYXQgPSAoZGF0ZTogVHVpRGF5KTogc3RyaW5nID0+IHtcclxuICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nO1xyXG4gIGxldCB5ZWFyID0gZGF0ZS55ZWFyO1xyXG4gIGxldCBtb250aCA9IGRhdGUubW9udGg7XHJcbiAgbGV0IGRheSA9IGRhdGUuZGF5O1xyXG5cclxuICBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS0ke21vbnRoICsgMX0tJHt5ZWFyfWA7XHJcblxyXG4gIHJldHVybiBmb3JtYXR0ZWREYXRlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEZpZWxkRXJyb3IoZmllbGQ6IGFueSwgZXJyb3I6IGFueSk6IGFueSB7XHJcbiAgZmllbGQuaW52YWxpZCA9IGVycm9yO1xyXG4gIGZpZWxkLmZvY3VzID0gZXJyb3I7XHJcblxyXG4gIC8vIGlmICghZXJyb3IpIHtcclxuICAvLyAgIGZpZWxkW1wibWVzc2FnZXNcIl0gPSBmaWVsZFtcIm1lc3NhZ2VzXCJdLmZpbHRlcihmdW5jdGlvbiAoZmllbGRNZXNzYWdlOiB7XHJcbiAgLy8gICAgIHR5cGU6IHN0cmluZztcclxuICAvLyAgICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIC8vICAgfSkge1xyXG4gIC8vICAgICByZXR1cm4gZmllbGRNZXNzYWdlLnR5cGUgPT09IFwiZXJyb3JcIjtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgcmV0dXJuIGZpZWxkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYWRkTWVzc2FnZSA9IChcclxuICBmaWVsZDogYW55LFxyXG4gIG1lc3NhZ2U6IHsgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVxyXG4pOiBhbnkgPT4ge1xyXG4gIGNvbnN0IGlzRHVwbGljYXRlTWVzc2FnZSA9IChcclxuICAgIG1lc3NhZ2VzOiB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1bXSxcclxuICAgIG1lc3NhZ2U6IHsgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVxyXG4gICkgPT4ge1xyXG4gICAgcmV0dXJuIG1lc3NhZ2VzLnNvbWUoKGZpZWxkTWVzc2FnZTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgZmllbGRNZXNzYWdlLnR5cGUgPT09IG1lc3NhZ2UudHlwZSAmJlxyXG4gICAgICAgIGZpZWxkTWVzc2FnZS5tZXNzYWdlID09PSBtZXNzYWdlLm1lc3NhZ2VcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGZpZWxkW1wibWVzc2FnZXNcIl0gPSBbXTtcclxuXHJcbiAgaWYgKGhhc0tleShmaWVsZCwgXCJtZXNzYWdlc1wiKSkge1xyXG4gICAgaWYgKCFpc0R1cGxpY2F0ZU1lc3NhZ2UoZmllbGRbXCJtZXNzYWdlc1wiXSwgbWVzc2FnZSkpIHtcclxuICAgICAgZmllbGRbXCJtZXNzYWdlc1wiXS5wdXNoKHtcclxuICAgICAgICB0eXBlOiBtZXNzYWdlLnR5cGUsXHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZS5tZXNzYWdlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBmaWVsZFtcIm1lc3NhZ2VzXCJdID0gW3sgdHlwZTogbWVzc2FnZS50eXBlLCBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2UgfV07XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmllbGQ7XHJcbn07XHJcbmV4cG9ydCBjb25zdCByZW1vdmVNZXNzYWdlID0gKFxyXG4gIGZpZWxkOiBhbnksXHJcbiAgbWVzc2FnZTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9XHJcbik6IGFueSA9PiB7XHJcbiAgZmllbGRbXCJtZXNzYWdlc1wiXSA9IGZpZWxkW1wibWVzc2FnZXNcIl0uZmlsdGVyKGZ1bmN0aW9uIChmaWVsZE1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBmaWVsZE1lc3NhZ2UudHlwZSAhPT0gbWVzc2FnZS50eXBlO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZmllbGQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0RmllbGRFcnJvcihcclxuICBmaWVsZHM6IGFueSxcclxuICBlcnJvcnM6IGFueSxcclxuICBrZXk6IHN0cmluZyxcclxuICBlcnJvcjogYm9vbGVhblxyXG4pIHtcclxuICBjb25zdCBmaWVsZEluZGV4ID0gZmllbGRzLmZpbmRJbmRleCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGZpZWxkLmtleSA9PT0ga2V5O1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBzZXRFcnJvck1lc3NhZ2VzID0gKGZpZWxkOiBhbnksIGVycm9yczogYW55KSA9PiB7XHJcbiAgICBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZmllbGRMYWJlbDogc3RyaW5nLCBlcnJvclR5cGU6IHN0cmluZykgPT4ge1xyXG4gICAgICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgICAgc3dpdGNoIChlcnJvclR5cGUpIHtcclxuICAgICAgICBjYXNlIFwicmVxdWlyZWRcIjpcclxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGlzIHJlcXVpcmVkIWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwicGF0dGVyblwiOlxyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIHBhdHRlcm4hYDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJlbWFpbFwiOlxyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIGVtYWlsIGZvcm1hdCFgO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcIm1pbmxlbmd0aFwiOlxyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIGxlbmd0aCEgUmVxdWlyZWQgbWluaW11bSBsZW5ndGg6ICR7ZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGh9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJtYXhsZW5ndGhcIjpcclxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGhhcyB3cm9uZyBsZW5ndGghIFJlcXVpcmVkIG1heGltdW0gbGVuZ3RoOiAke2ZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RofWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiYXJlRXF1YWxcIjpcclxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IG11c3QgYmUgZXF1YWwhYDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgJHtmaWVsZExhYmVsfTogJHtcImVycm9yLmVycm9yX25hbWVcIn06ICR7XCJlcnJvci5lcnJvcl92YWx1ZVwifWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICAgIH07XHJcblxyXG4gICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChlcnJvcikgPT4ge1xyXG4gICAgICBmaWVsZCA9IGFkZE1lc3NhZ2UoZmllbGQsIHtcclxuICAgICAgICB0eXBlOiBcImVycm9yXCIsXHJcbiAgICAgICAgbWVzc2FnZTogZ2V0RXJyb3JNZXNzYWdlKGZpZWxkLmxhYmVsLCBlcnJvcilcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfTtcclxuXHJcbiAgaWYgKGVycm9yKSB7XHJcbiAgICBmaWVsZHNbZmllbGRJbmRleF0gPSBzZXRFcnJvck1lc3NhZ2VzKGZpZWxkc1tmaWVsZEluZGV4XSwgZXJyb3JzKTtcclxuICB9IGVsc2Uge1xyXG4gICAgZmllbGRzW2ZpZWxkSW5kZXhdW1wibWVzc2FnZXNcIl0gPSBbXTtcclxuICB9XHJcblxyXG4gIGZpZWxkc1tmaWVsZEluZGV4XSA9IGhpZ2hsaWdodEZpZWxkRXJyb3IoZmllbGRzW2ZpZWxkSW5kZXhdLCBlcnJvcik7XHJcblxyXG4gIHJldHVybiBmaWVsZHM7XHJcbn1cclxuIl19
@@ -0,0 +1,86 @@
1
+ import { __decorate } from "tslib";
2
+ import { EPattern, EPatternKey } from "../definitions/common/form-view.common.enum.definitions";
3
+ import { ERuleKey } from "../definitions/rules/form-view.rules.enum.definitions";
4
+ import { ESourceKey } from "../definitions/sources/form-view.sources.enum.definitions";
5
+ import { log } from "../form-view.decorators";
6
+ import { hasPath } from "./form-view.common.helper";
7
+ import { Sources } from "./form-view.sources.helper";
8
+ export class Rules {
9
+ constructor(rules, field, formData, previousFormData, allFormsData) {
10
+ this._field = field;
11
+ this._formData = formData;
12
+ this._previousFormData = previousFormData;
13
+ this._allFormsData = allFormsData;
14
+ this._rules = rules;
15
+ }
16
+ evaluate(rule) {
17
+ let ruleType = rule.key;
18
+ let ruleEvaluationStatus = false;
19
+ if (this._field.type === "radio") {
20
+ this._formData[this._field.key] = this._formData[this._field.key].label;
21
+ }
22
+ const source = new Sources(this._field, this._formData, this._previousFormData, this._allFormsData);
23
+ switch (ruleType) {
24
+ case ERuleKey.OBJECT_PATH_EXISTS:
25
+ const ruleObjectPathExists = rule;
26
+ const ruleObjectPathExistsObject = ruleObjectPathExists.props.object;
27
+ const ruleObjectPathExistsPath = ruleObjectPathExists.props.path;
28
+ switch (ruleObjectPathExistsObject) {
29
+ case ESourceKey.ALL_FORMS_DATA:
30
+ ruleEvaluationStatus = hasPath(this._allFormsData, ruleObjectPathExistsPath);
31
+ break;
32
+ case ESourceKey.FORM_DATA:
33
+ ruleEvaluationStatus = hasPath(this._formData, ruleObjectPathExistsPath);
34
+ break;
35
+ case ESourceKey.PREVIOUS_FORM_DATA:
36
+ ruleEvaluationStatus = hasPath(this._previousFormData, ruleObjectPathExistsPath);
37
+ break;
38
+ case ESourceKey.FIELD_CONFIG:
39
+ ruleEvaluationStatus = hasPath(this._field, ruleObjectPathExistsPath);
40
+ break;
41
+ default:
42
+ ruleEvaluationStatus = false;
43
+ break;
44
+ }
45
+ break;
46
+ case ERuleKey.VALUE_CHECK:
47
+ const ruleValueCheck = rule;
48
+ const ruleValueCheckSource = ruleValueCheck.props.value.source;
49
+ const ruleValueCheckValue = source.getValueFromSource(ruleValueCheckSource);
50
+ if (ruleValueCheck.props.pattern.key === EPatternKey.CUSTOM) {
51
+ var re = new RegExp(ruleValueCheck.props.pattern.pattern);
52
+ }
53
+ else {
54
+ var re = new RegExp(EPattern[ruleValueCheck.props.pattern.key]);
55
+ }
56
+ ruleEvaluationStatus = re.test(ruleValueCheckValue);
57
+ break;
58
+ case ERuleKey.VALUE_CHANGE:
59
+ const ruleValueChange = rule;
60
+ const ruleValueChangeCurrentSource = ruleValueChange.props.value.current.source;
61
+ const ruleValueChangePreviousSource = ruleValueChange.props.value.previous.source;
62
+ const previousValue = source.getValueFromSource(ruleValueChangePreviousSource);
63
+ const currentValue = source.getValueFromSource(ruleValueChangeCurrentSource);
64
+ ruleEvaluationStatus = previousValue === currentValue;
65
+ break;
66
+ default:
67
+ break;
68
+ }
69
+ return ruleEvaluationStatus;
70
+ }
71
+ mapping() {
72
+ let rulesEvaluationMapping = {};
73
+ for (const rule of this._rules) {
74
+ const ruleEvaluationStatus = this.evaluate(rule);
75
+ rulesEvaluationMapping = Object.assign(Object.assign({}, rulesEvaluationMapping), { [rule.id]: ruleEvaluationStatus });
76
+ }
77
+ return rulesEvaluationMapping;
78
+ }
79
+ }
80
+ __decorate([
81
+ log
82
+ ], Rules.prototype, "evaluate", null);
83
+ __decorate([
84
+ log
85
+ ], Rules.prototype, "mapping", null);
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnJ1bGVzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5ydWxlcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNaLE1BQU0seURBQXlELENBQUM7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBUWpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUV2RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxNQUFNLE9BQU8sS0FBSztJQU9oQixZQUNFLEtBQW1CLEVBQ25CLEtBQWEsRUFDYixRQUFhLEVBQ2IsZ0JBQXFCLEVBQ3JCLFlBQWlCO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBR08sUUFBUSxDQUFDLElBQVc7UUFDMUIsSUFBSSxRQUFRLEdBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQyxJQUFJLG9CQUFvQixHQUFZLEtBQUssQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtZQUNo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NEJBQTRCLENBQzdCLENBQUM7Z0JBRUYsb0JBQW9CLEdBQUcsYUFBYSxLQUFLLFlBQVksQ0FBQztnQkFDdEQsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtRQUVELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUdNLE9BQU87UUFDWixJQUFJLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUVoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDOUIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWpELHNCQUFzQixtQ0FDakIsc0JBQXNCLEtBQ3pCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixHQUNoQyxDQUFDO1NBQ0g7UUFFRCxPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQXZHQztJQURDLEdBQUc7cUNBdUZIO0FBR0Q7SUFEQyxHQUFHO29DQWNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBFUGF0dGVybixcclxuICBFUGF0dGVybktleVxyXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9jb21tb24vZm9ybS12aWV3LmNvbW1vbi5lbnVtLmRlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7IFRGaWVsZCB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy9maWVsZHMvZm9ybS12aWV3LmZpZWxkcy50eXBlLmRlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7IEVSdWxlS2V5IH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL3J1bGVzL2Zvcm0tdmlldy5ydWxlcy5lbnVtLmRlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7XHJcbiAgVFJ1bGUsXHJcbiAgVFJ1bGVPYmplY3RQYXRoRXhpc3RzLFxyXG4gIFRSdWxlVHlwZSxcclxuICBUUnVsZVZhbHVlQ2hhbmdlLFxyXG4gIFRSdWxlVmFsdWVDaGVja1xyXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9ydWxlcy9mb3JtLXZpZXcucnVsZXMudHlwZS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBFU291cmNlS2V5IH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL3NvdXJjZXMvZm9ybS12aWV3LnNvdXJjZXMuZW51bS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBUU291cmNlIH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL3NvdXJjZXMvZm9ybS12aWV3LnNvdXJjZXMudHlwZS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi4vZm9ybS12aWV3LmRlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgaGFzUGF0aCB9IGZyb20gXCIuL2Zvcm0tdmlldy5jb21tb24uaGVscGVyXCI7XHJcbmltcG9ydCB7IFNvdXJjZXMgfSBmcm9tIFwiLi9mb3JtLXZpZXcuc291cmNlcy5oZWxwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSdWxlcyB7XHJcbiAgcHJpdmF0ZSBfZm9ybURhdGE6IGFueTtcclxuICBwcml2YXRlIF9wcmV2aW91c0Zvcm1EYXRhOiBhbnk7XHJcbiAgcHJpdmF0ZSBfYWxsRm9ybXNEYXRhOiBhbnk7XHJcbiAgcHJpdmF0ZSBfZmllbGQ6IFRGaWVsZDtcclxuICBwcml2YXRlIF9ydWxlczogQXJyYXk8VFJ1bGU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJ1bGVzOiBBcnJheTxUUnVsZT4sXHJcbiAgICBmaWVsZDogVEZpZWxkLFxyXG4gICAgZm9ybURhdGE6IGFueSxcclxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcclxuICAgIGFsbEZvcm1zRGF0YTogYW55XHJcbiAgKSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IGZpZWxkO1xyXG4gICAgdGhpcy5fZm9ybURhdGEgPSBmb3JtRGF0YTtcclxuICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEgPSBwcmV2aW91c0Zvcm1EYXRhO1xyXG4gICAgdGhpcy5fYWxsRm9ybXNEYXRhID0gYWxsRm9ybXNEYXRhO1xyXG4gICAgdGhpcy5fcnVsZXMgPSBydWxlcztcclxuICB9XHJcblxyXG4gIEBsb2dcclxuICBwcml2YXRlIGV2YWx1YXRlKHJ1bGU6IFRSdWxlKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcnVsZVR5cGU6IFRSdWxlVHlwZSA9IHJ1bGUua2V5O1xyXG4gICAgbGV0IHJ1bGVFdmFsdWF0aW9uU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuX2ZpZWxkLnR5cGUgPT09IFwicmFkaW9cIikge1xyXG4gICAgICB0aGlzLl9mb3JtRGF0YVt0aGlzLl9maWVsZC5rZXldID0gdGhpcy5fZm9ybURhdGFbdGhpcy5fZmllbGQua2V5XS5sYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzb3VyY2UgPSBuZXcgU291cmNlcyhcclxuICAgICAgdGhpcy5fZmllbGQsXHJcbiAgICAgIHRoaXMuX2Zvcm1EYXRhLFxyXG4gICAgICB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICB0aGlzLl9hbGxGb3Jtc0RhdGFcclxuICAgICk7XHJcblxyXG4gICAgc3dpdGNoIChydWxlVHlwZSkge1xyXG4gICAgICBjYXNlIEVSdWxlS2V5Lk9CSkVDVF9QQVRIX0VYSVNUUzpcclxuICAgICAgICBjb25zdCBydWxlT2JqZWN0UGF0aEV4aXN0cyA9IHJ1bGUgYXMgVFJ1bGVPYmplY3RQYXRoRXhpc3RzO1xyXG4gICAgICAgIGNvbnN0IHJ1bGVPYmplY3RQYXRoRXhpc3RzT2JqZWN0ID0gcnVsZU9iamVjdFBhdGhFeGlzdHMucHJvcHMub2JqZWN0O1xyXG4gICAgICAgIGNvbnN0IHJ1bGVPYmplY3RQYXRoRXhpc3RzUGF0aCA9IHJ1bGVPYmplY3RQYXRoRXhpc3RzLnByb3BzLnBhdGg7XHJcblxyXG4gICAgICAgIHN3aXRjaCAocnVsZU9iamVjdFBhdGhFeGlzdHNPYmplY3QpIHtcclxuICAgICAgICAgIGNhc2UgRVNvdXJjZUtleS5BTExfRk9STVNfREFUQTpcclxuICAgICAgICAgICAgcnVsZUV2YWx1YXRpb25TdGF0dXMgPSBoYXNQYXRoKFxyXG4gICAgICAgICAgICAgIHRoaXMuX2FsbEZvcm1zRGF0YSxcclxuICAgICAgICAgICAgICBydWxlT2JqZWN0UGF0aEV4aXN0c1BhdGhcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEVTb3VyY2VLZXkuRk9STV9EQVRBOlxyXG4gICAgICAgICAgICBydWxlRXZhbHVhdGlvblN0YXR1cyA9IGhhc1BhdGgoXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybURhdGEsXHJcbiAgICAgICAgICAgICAgcnVsZU9iamVjdFBhdGhFeGlzdHNQYXRoXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBFU291cmNlS2V5LlBSRVZJT1VTX0ZPUk1fREFUQTpcclxuICAgICAgICAgICAgcnVsZUV2YWx1YXRpb25TdGF0dXMgPSBoYXNQYXRoKFxyXG4gICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXHJcbiAgICAgICAgICAgICAgcnVsZU9iamVjdFBhdGhFeGlzdHNQYXRoXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBFU291cmNlS2V5LkZJRUxEX0NPTkZJRzpcclxuICAgICAgICAgICAgcnVsZUV2YWx1YXRpb25TdGF0dXMgPSBoYXNQYXRoKFxyXG4gICAgICAgICAgICAgIHRoaXMuX2ZpZWxkLFxyXG4gICAgICAgICAgICAgIHJ1bGVPYmplY3RQYXRoRXhpc3RzUGF0aFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJ1bGVFdmFsdWF0aW9uU3RhdHVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFUnVsZUtleS5WQUxVRV9DSEVDSzpcclxuICAgICAgICBjb25zdCBydWxlVmFsdWVDaGVjayA9IHJ1bGUgYXMgVFJ1bGVWYWx1ZUNoZWNrO1xyXG4gICAgICAgIGNvbnN0IHJ1bGVWYWx1ZUNoZWNrU291cmNlOiBUU291cmNlID0gcnVsZVZhbHVlQ2hlY2sucHJvcHMudmFsdWUuc291cmNlO1xyXG4gICAgICAgIGNvbnN0IHJ1bGVWYWx1ZUNoZWNrVmFsdWUgPVxyXG4gICAgICAgICAgc291cmNlLmdldFZhbHVlRnJvbVNvdXJjZShydWxlVmFsdWVDaGVja1NvdXJjZSk7XHJcblxyXG4gICAgICAgIGlmIChydWxlVmFsdWVDaGVjay5wcm9wcy5wYXR0ZXJuLmtleSA9PT0gRVBhdHRlcm5LZXkuQ1VTVE9NKSB7XHJcbiAgICAgICAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKHJ1bGVWYWx1ZUNoZWNrLnByb3BzLnBhdHRlcm4ucGF0dGVybik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAoRVBhdHRlcm5bcnVsZVZhbHVlQ2hlY2sucHJvcHMucGF0dGVybi5rZXldKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJ1bGVFdmFsdWF0aW9uU3RhdHVzID0gcmUudGVzdChydWxlVmFsdWVDaGVja1ZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFUnVsZUtleS5WQUxVRV9DSEFOR0U6XHJcbiAgICAgICAgY29uc3QgcnVsZVZhbHVlQ2hhbmdlID0gcnVsZSBhcyBUUnVsZVZhbHVlQ2hhbmdlO1xyXG4gICAgICAgIGNvbnN0IHJ1bGVWYWx1ZUNoYW5nZUN1cnJlbnRTb3VyY2U6IFRTb3VyY2UgPVxyXG4gICAgICAgICAgcnVsZVZhbHVlQ2hhbmdlLnByb3BzLnZhbHVlLmN1cnJlbnQuc291cmNlO1xyXG4gICAgICAgIGNvbnN0IHJ1bGVWYWx1ZUNoYW5nZVByZXZpb3VzU291cmNlOiBUU291cmNlID1cclxuICAgICAgICAgIHJ1bGVWYWx1ZUNoYW5nZS5wcm9wcy52YWx1ZS5wcmV2aW91cy5zb3VyY2U7XHJcblxyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBzb3VyY2UuZ2V0VmFsdWVGcm9tU291cmNlKFxyXG4gICAgICAgICAgcnVsZVZhbHVlQ2hhbmdlUHJldmlvdXNTb3VyY2VcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHNvdXJjZS5nZXRWYWx1ZUZyb21Tb3VyY2UoXHJcbiAgICAgICAgICBydWxlVmFsdWVDaGFuZ2VDdXJyZW50U291cmNlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcnVsZUV2YWx1YXRpb25TdGF0dXMgPSBwcmV2aW91c1ZhbHVlID09PSBjdXJyZW50VmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJ1bGVFdmFsdWF0aW9uU3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgQGxvZ1xyXG4gIHB1YmxpYyBtYXBwaW5nKCk6IGFueSB7XHJcbiAgICBsZXQgcnVsZXNFdmFsdWF0aW9uTWFwcGluZyA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xyXG4gICAgICBjb25zdCBydWxlRXZhbHVhdGlvblN0YXR1cyA9IHRoaXMuZXZhbHVhdGUocnVsZSk7XHJcblxyXG4gICAgICBydWxlc0V2YWx1YXRpb25NYXBwaW5nID0ge1xyXG4gICAgICAgIC4uLnJ1bGVzRXZhbHVhdGlvbk1hcHBpbmcsXHJcbiAgICAgICAgW3J1bGUuaWRdOiBydWxlRXZhbHVhdGlvblN0YXR1c1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBydWxlc0V2YWx1YXRpb25NYXBwaW5nO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,161 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { EBrowserStorageType, ESourceKey } from "../definitions/sources/form-view.sources.enum.definitions";
3
+ import { log } from "../form-view.decorators";
4
+ import { isNotEmpty, isNotEmptyBrowserStorageValue, jpQueryWrapper, setEmptyValue, setValueToObject } from "./form-view.common.helper";
5
+ export class Sources {
6
+ constructor(field, formData, previousFormData, allFormsData) {
7
+ this._field = field;
8
+ this._formData = formData;
9
+ this._previousFormData = previousFormData;
10
+ this._allFormsData = allFormsData;
11
+ }
12
+ get formData() {
13
+ return this._formData;
14
+ }
15
+ set formData(value) {
16
+ this._formData = value;
17
+ }
18
+ get previousFormData() {
19
+ return this._previousFormData;
20
+ }
21
+ set previousFormData(value) {
22
+ this._previousFormData = value;
23
+ }
24
+ get allFormsData() {
25
+ return this._allFormsData;
26
+ }
27
+ set allFormsData(value) {
28
+ this._allFormsData = value;
29
+ }
30
+ get field() {
31
+ return this._field;
32
+ }
33
+ set field(value) {
34
+ this._field = value;
35
+ }
36
+ getValueFromFieldConfig(path) {
37
+ let value = "";
38
+ if (isNotEmpty(path)) {
39
+ value = jpQueryWrapper(this._field, path);
40
+ }
41
+ else {
42
+ value = setEmptyValue(this._field);
43
+ }
44
+ return value;
45
+ }
46
+ getValueFromFormData(path) {
47
+ let value;
48
+ value = jpQueryWrapper(this._formData, path);
49
+ return value;
50
+ }
51
+ getValueFromPreviousFormData(path) {
52
+ let value;
53
+ value = jpQueryWrapper(this._previousFormData, path);
54
+ return value;
55
+ }
56
+ getValueFromAllFormsData(path) {
57
+ let value;
58
+ value = jpQueryWrapper(this._allFormsData, path);
59
+ return value;
60
+ }
61
+ getValueFromBrowserStorage(type, key) {
62
+ let value = "";
63
+ switch (type) {
64
+ case EBrowserStorageType.LOCAL_STORAGE:
65
+ value = isNotEmptyBrowserStorageValue(localStorage.getItem(key))
66
+ ? localStorage.getItem(key)
67
+ : "";
68
+ break;
69
+ case EBrowserStorageType.SESSION_STORAGE:
70
+ value = isNotEmptyBrowserStorageValue(sessionStorage.getItem(key))
71
+ ? sessionStorage.getItem(key)
72
+ : "";
73
+ break;
74
+ default:
75
+ value = "";
76
+ break;
77
+ }
78
+ return value;
79
+ }
80
+ getValueFromSource(source) {
81
+ let value = "";
82
+ switch (source.key) {
83
+ case ESourceKey.FIELD_CONFIG:
84
+ value = this.getValueFromFieldConfig(source.props.path);
85
+ break;
86
+ case ESourceKey.FORM_DATA:
87
+ value = this.getValueFromFormData(source.props.path);
88
+ break;
89
+ case ESourceKey.ALL_FORMS_DATA:
90
+ value = this.getValueFromAllFormsData(source.props.path);
91
+ break;
92
+ case ESourceKey.PREVIOUS_FORM_DATA:
93
+ value = this.getValueFromPreviousFormData(source.props.path);
94
+ break;
95
+ case ESourceKey.BROWSER_STORAGE:
96
+ value = this.getValueFromBrowserStorage(source.props.browserStorage.type, source.props.browserStorage.key);
97
+ break;
98
+ case ESourceKey.PREDEFINED:
99
+ value = source.value;
100
+ break;
101
+ default:
102
+ value = "";
103
+ break;
104
+ }
105
+ return value;
106
+ }
107
+ setValueToFieldConfig(path, value) {
108
+ this._field = setValueToObject(this._field, path, value);
109
+ }
110
+ setValueToFormData(path, value) {
111
+ this._formData = setValueToObject(this._formData, path, value);
112
+ }
113
+ setValueToAllFormsData(path, value) {
114
+ this._allFormsData = setValueToObject(this._allFormsData, path, value);
115
+ }
116
+ setValueToPreviousFromData(path, value) {
117
+ this._previousFormData = setValueToObject(this._previousFormData, path, value);
118
+ }
119
+ setValueToBrowserStorage(type, key, value) {
120
+ switch (type) {
121
+ case EBrowserStorageType.LOCAL_STORAGE:
122
+ localStorage.setItem(key, value);
123
+ break;
124
+ case EBrowserStorageType.SESSION_STORAGE:
125
+ sessionStorage.setItem(key, value);
126
+ break;
127
+ default:
128
+ break;
129
+ }
130
+ }
131
+ setValueToSource(source, value) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ switch (source.key) {
134
+ case ESourceKey.FIELD_CONFIG:
135
+ this._field = this.setValueToFieldConfig(source.props.path, value);
136
+ break;
137
+ case ESourceKey.FORM_DATA:
138
+ this._formData = this.setValueToFormData(source.props.path, value);
139
+ break;
140
+ case ESourceKey.ALL_FORMS_DATA:
141
+ this._allFormsData = this.setValueToAllFormsData(source.props.path, value);
142
+ break;
143
+ case ESourceKey.PREVIOUS_FORM_DATA:
144
+ this._previousFormData = this.setValueToPreviousFromData(source.props.path, value);
145
+ break;
146
+ case ESourceKey.BROWSER_STORAGE:
147
+ yield this.setValueToBrowserStorage(source.props.browserStorage.type, source.props.browserStorage.key, value);
148
+ break;
149
+ default:
150
+ break;
151
+ }
152
+ });
153
+ }
154
+ }
155
+ __decorate([
156
+ log
157
+ ], Sources.prototype, "getValueFromSource", null);
158
+ __decorate([
159
+ log
160
+ ], Sources.prototype, "setValueToSource", null);
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnNvdXJjZXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LnNvdXJjZXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLDJEQUEyRCxDQUFDO0FBS25FLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLDZCQUE2QixFQUM3QixjQUFjLEVBQ2QsYUFBYSxFQUNiLGdCQUFnQixFQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE1BQU0sT0FBTyxPQUFPO0lBaUNsQixZQUNFLEtBQWEsRUFDYixRQUFhLEVBQ2IsZ0JBQXFCLEVBQ3JCLFlBQWlCO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBekNELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksZ0JBQWdCLENBQUMsS0FBVTtRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFHRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUdELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBY08sdUJBQXVCLENBQUMsSUFBWTtRQUMxQyxJQUFJLEtBQUssR0FBUSxFQUFFLENBQUM7UUFDcEIsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEIsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDTCxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVk7UUFDdkMsSUFBSSxLQUFVLENBQUM7UUFDZixLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ08sNEJBQTRCLENBQUMsSUFBWTtRQUMvQyxJQUFJLEtBQVUsQ0FBQztRQUNmLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNPLHdCQUF3QixDQUFDLElBQVk7UUFDM0MsSUFBSSxLQUFVLENBQUM7UUFDZixLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ08sMEJBQTBCLENBQ2hDLElBQXlCLEVBQ3pCLEdBQVc7UUFFWCxJQUFJLEtBQUssR0FBUSxFQUFFLENBQUM7UUFDcEIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLG1CQUFtQixDQUFDLGFBQWE7Z0JBQ3BDLEtBQUssR0FBRyw2QkFBNkIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5RCxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsTUFBTTtZQUNSLEtBQUssbUJBQW1CLENBQUMsZUFBZTtnQkFDdEMsS0FBSyxHQUFHLDZCQUE2QixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2hFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUCxNQUFNO1lBQ1I7Z0JBQ0UsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxNQUFNO1NBQ1Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxNQUFlO1FBQ2hDLElBQUksS0FBSyxHQUFRLEVBQUUsQ0FBQztRQUVwQixRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDbEIsS0FBSyxVQUFVLENBQUMsWUFBWTtnQkFDMUIsS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxNQUFNO1lBQ1IsS0FBSyxVQUFVLENBQUMsU0FBUztnQkFDdkIsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyRCxNQUFNO1lBQ1IsS0FBSyxVQUFVLENBQUMsY0FBYztnQkFDNUIsS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1lBQ1IsS0FBSyxVQUFVLENBQUMsa0JBQWtCO2dCQUNoQyxLQUFLLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdELE1BQU07WUFDUixLQUFLLFVBQVUsQ0FBQyxlQUFlO2dCQUM3QixLQUFLLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDaEMsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxVQUFVLENBQUMsVUFBVTtnQkFDeEIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3JCLE1BQU07WUFDUjtnQkFDRSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNYLE1BQU07U0FDVDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNPLGtCQUFrQixDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNPLHNCQUFzQixDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNPLDBCQUEwQixDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLEVBQ0osS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBQ08sd0JBQXdCLENBQUMsSUFBWSxFQUFFLEdBQVcsRUFBRSxLQUFVO1FBQ3BFLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxtQkFBbUIsQ0FBQyxhQUFhO2dCQUNwQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDakMsTUFBTTtZQUNSLEtBQUssbUJBQW1CLENBQUMsZUFBZTtnQkFDdEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBR0ssZ0JBQWdCLENBQUMsTUFBZSxFQUFFLEtBQVU7O1lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsS0FBSyxVQUFVLENBQUMsWUFBWTtvQkFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ25FLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsU0FBUztvQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ25FLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsY0FBYztvQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUNqQixLQUFLLENBQ04sQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLGtCQUFrQjtvQkFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQ2pCLEtBQUssQ0FDTixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsZUFBZTtvQkFDN0IsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUMvQixLQUFLLENBQ04sQ0FBQztvQkFDRixNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtRQUNILENBQUM7S0FBQTtDQUNGO0FBOUZDO0lBREMsR0FBRztpREFnQ0g7QUFnQ0Q7SUFEQyxHQUFHOytDQStCSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRGaWVsZCB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy9maWVsZHMvZm9ybS12aWV3LmZpZWxkcy50eXBlLmRlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7XHJcbiAgRUJyb3dzZXJTdG9yYWdlVHlwZSxcclxuICBFU291cmNlS2V5XHJcbn0gZnJvbSBcIi4uL2RlZmluaXRpb25zL3NvdXJjZXMvZm9ybS12aWV3LnNvdXJjZXMuZW51bS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQge1xyXG4gIFRCcm93c2VyU3RvcmFnZVR5cGUsXHJcbiAgVFNvdXJjZVxyXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9zb3VyY2VzL2Zvcm0tdmlldy5zb3VyY2VzLnR5cGUuZGVmaW5pdGlvbnNcIjtcclxuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIi4uL2Zvcm0tdmlldy5kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgaXNOb3RFbXB0eSxcclxuICBpc05vdEVtcHR5QnJvd3NlclN0b3JhZ2VWYWx1ZSxcclxuICBqcFF1ZXJ5V3JhcHBlcixcclxuICBzZXRFbXB0eVZhbHVlLFxyXG4gIHNldFZhbHVlVG9PYmplY3RcclxufSBmcm9tIFwiLi9mb3JtLXZpZXcuY29tbW9uLmhlbHBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNvdXJjZXMge1xyXG4gIHByaXZhdGUgX2Zvcm1EYXRhOiBhbnk7XHJcbiAgZ2V0IGZvcm1EYXRhKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybURhdGE7XHJcbiAgfVxyXG4gIHNldCBmb3JtRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9mb3JtRGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJldmlvdXNGb3JtRGF0YTogYW55O1xyXG4gIGdldCBwcmV2aW91c0Zvcm1EYXRhKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNGb3JtRGF0YTtcclxuICB9XHJcbiAgc2V0IHByZXZpb3VzRm9ybURhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fcHJldmlvdXNGb3JtRGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWxsRm9ybXNEYXRhOiBhbnk7XHJcbiAgZ2V0IGFsbEZvcm1zRGF0YSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FsbEZvcm1zRGF0YTtcclxuICB9XHJcbiAgc2V0IGFsbEZvcm1zRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9hbGxGb3Jtc0RhdGEgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpZWxkOiBURmllbGQ7XHJcbiAgZ2V0IGZpZWxkKCk6IFRGaWVsZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGQ7XHJcbiAgfVxyXG4gIHNldCBmaWVsZCh2YWx1ZTogVEZpZWxkKSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmaWVsZDogVEZpZWxkLFxyXG4gICAgZm9ybURhdGE6IGFueSxcclxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcclxuICAgIGFsbEZvcm1zRGF0YTogYW55XHJcbiAgKSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IGZpZWxkO1xyXG4gICAgdGhpcy5fZm9ybURhdGEgPSBmb3JtRGF0YTtcclxuICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEgPSBwcmV2aW91c0Zvcm1EYXRhO1xyXG4gICAgdGhpcy5fYWxsRm9ybXNEYXRhID0gYWxsRm9ybXNEYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21GaWVsZENvbmZpZyhwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IHZhbHVlOiBhbnkgPSBcIlwiO1xyXG4gICAgaWYgKGlzTm90RW1wdHkocGF0aCkpIHtcclxuICAgICAgdmFsdWUgPSBqcFF1ZXJ5V3JhcHBlcih0aGlzLl9maWVsZCwgcGF0aCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWx1ZSA9IHNldEVtcHR5VmFsdWUodGhpcy5fZmllbGQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21Gb3JtRGF0YShwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICB2YWx1ZSA9IGpwUXVlcnlXcmFwcGVyKHRoaXMuX2Zvcm1EYXRhLCBwYXRoKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21QcmV2aW91c0Zvcm1EYXRhKHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgIHZhbHVlID0ganBRdWVyeVdyYXBwZXIodGhpcy5fcHJldmlvdXNGb3JtRGF0YSwgcGF0aCk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tQWxsRm9ybXNEYXRhKHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgIHZhbHVlID0ganBRdWVyeVdyYXBwZXIodGhpcy5fYWxsRm9ybXNEYXRhLCBwYXRoKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21Ccm93c2VyU3RvcmFnZShcclxuICAgIHR5cGU6IFRCcm93c2VyU3RvcmFnZVR5cGUsXHJcbiAgICBrZXk6IHN0cmluZ1xyXG4gICk6IGFueSB7XHJcbiAgICBsZXQgdmFsdWU6IGFueSA9IFwiXCI7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBFQnJvd3NlclN0b3JhZ2VUeXBlLkxPQ0FMX1NUT1JBR0U6XHJcbiAgICAgICAgdmFsdWUgPSBpc05vdEVtcHR5QnJvd3NlclN0b3JhZ2VWYWx1ZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKVxyXG4gICAgICAgICAgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRUJyb3dzZXJTdG9yYWdlVHlwZS5TRVNTSU9OX1NUT1JBR0U6XHJcbiAgICAgICAgdmFsdWUgPSBpc05vdEVtcHR5QnJvd3NlclN0b3JhZ2VWYWx1ZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSkpXHJcbiAgICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oa2V5KVxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBsb2dcclxuICBnZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlOiBUU291cmNlKTogYW55IHtcclxuICAgIGxldCB2YWx1ZTogYW55ID0gXCJcIjtcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZS5rZXkpIHtcclxuICAgICAgY2FzZSBFU291cmNlS2V5LkZJRUxEX0NPTkZJRzpcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRmllbGRDb25maWcoc291cmNlLnByb3BzLnBhdGgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVTb3VyY2VLZXkuRk9STV9EQVRBOlxyXG4gICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21Gb3JtRGF0YShzb3VyY2UucHJvcHMucGF0aCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRVNvdXJjZUtleS5BTExfRk9STVNfREFUQTpcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tQWxsRm9ybXNEYXRhKHNvdXJjZS5wcm9wcy5wYXRoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFU291cmNlS2V5LlBSRVZJT1VTX0ZPUk1fREFUQTpcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tUHJldmlvdXNGb3JtRGF0YShzb3VyY2UucHJvcHMucGF0aCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRVNvdXJjZUtleS5CUk9XU0VSX1NUT1JBR0U6XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbUJyb3dzZXJTdG9yYWdlKFxyXG4gICAgICAgICAgc291cmNlLnByb3BzLmJyb3dzZXJTdG9yYWdlLnR5cGUsXHJcbiAgICAgICAgICBzb3VyY2UucHJvcHMuYnJvd3NlclN0b3JhZ2Uua2V5XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFU291cmNlS2V5LlBSRURFRklORUQ6XHJcbiAgICAgICAgdmFsdWUgPSBzb3VyY2UudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsdWVUb0ZpZWxkQ29uZmlnKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IHNldFZhbHVlVG9PYmplY3QodGhpcy5fZmllbGQsIHBhdGgsIHZhbHVlKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZVRvRm9ybURhdGEocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgIHRoaXMuX2Zvcm1EYXRhID0gc2V0VmFsdWVUb09iamVjdCh0aGlzLl9mb3JtRGF0YSwgcGF0aCwgdmFsdWUpO1xyXG4gIH1cclxuICBwcml2YXRlIHNldFZhbHVlVG9BbGxGb3Jtc0RhdGEocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgIHRoaXMuX2FsbEZvcm1zRGF0YSA9IHNldFZhbHVlVG9PYmplY3QodGhpcy5fYWxsRm9ybXNEYXRhLCBwYXRoLCB2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0VmFsdWVUb1ByZXZpb3VzRnJvbURhdGEocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEgPSBzZXRWYWx1ZVRvT2JqZWN0KFxyXG4gICAgICB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICBwYXRoLFxyXG4gICAgICB2YWx1ZVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZVRvQnJvd3NlclN0b3JhZ2UodHlwZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBFQnJvd3NlclN0b3JhZ2VUeXBlLkxPQ0FMX1NUT1JBR0U6XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRUJyb3dzZXJTdG9yYWdlVHlwZS5TRVNTSU9OX1NUT1JBR0U6XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBsb2dcclxuICBhc3luYyBzZXRWYWx1ZVRvU291cmNlKHNvdXJjZTogVFNvdXJjZSwgdmFsdWU6IGFueSkge1xyXG4gICAgc3dpdGNoIChzb3VyY2Uua2V5KSB7XHJcbiAgICAgIGNhc2UgRVNvdXJjZUtleS5GSUVMRF9DT05GSUc6XHJcbiAgICAgICAgdGhpcy5fZmllbGQgPSB0aGlzLnNldFZhbHVlVG9GaWVsZENvbmZpZyhzb3VyY2UucHJvcHMucGF0aCwgdmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVTb3VyY2VLZXkuRk9STV9EQVRBOlxyXG4gICAgICAgIHRoaXMuX2Zvcm1EYXRhID0gdGhpcy5zZXRWYWx1ZVRvRm9ybURhdGEoc291cmNlLnByb3BzLnBhdGgsIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFU291cmNlS2V5LkFMTF9GT1JNU19EQVRBOlxyXG4gICAgICAgIHRoaXMuX2FsbEZvcm1zRGF0YSA9IHRoaXMuc2V0VmFsdWVUb0FsbEZvcm1zRGF0YShcclxuICAgICAgICAgIHNvdXJjZS5wcm9wcy5wYXRoLFxyXG4gICAgICAgICAgdmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVTb3VyY2VLZXkuUFJFVklPVVNfRk9STV9EQVRBOlxyXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEgPSB0aGlzLnNldFZhbHVlVG9QcmV2aW91c0Zyb21EYXRhKFxyXG4gICAgICAgICAgc291cmNlLnByb3BzLnBhdGgsXHJcbiAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRVNvdXJjZUtleS5CUk9XU0VSX1NUT1JBR0U6XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRWYWx1ZVRvQnJvd3NlclN0b3JhZ2UoXHJcbiAgICAgICAgICBzb3VyY2UucHJvcHMuYnJvd3NlclN0b3JhZ2UudHlwZSxcclxuICAgICAgICAgIHNvdXJjZS5wcm9wcy5icm93c2VyU3RvcmFnZS5rZXksXHJcbiAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,156 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { FormArray, FormGroup, Validators } from "@angular/forms";
3
+ import { EPattern, EPatternKey } from "../definitions/common/form-view.common.enum.definitions";
4
+ import { log } from "../form-view.decorators";
5
+ import { Actions } from "./form-view.actions.helper";
6
+ import { hasKey, isNotEmpty } from "./form-view.common.helper";
7
+ import { Condition } from "./form-view.condition.helper";
8
+ import { Rules } from "./form-view.rules.helper";
9
+ export class Validations {
10
+ constructor(field, formData, previousFormData, allFormsData, takeAction) {
11
+ this._field = field;
12
+ this._formData = formData;
13
+ this._previousFormData = previousFormData;
14
+ this._allFormsData = allFormsData;
15
+ this._takeAction = takeAction;
16
+ }
17
+ get formData() {
18
+ return this._formData;
19
+ }
20
+ set formData(value) {
21
+ this._formData = value;
22
+ }
23
+ get previousFormData() {
24
+ return this._previousFormData;
25
+ }
26
+ set previousFormData(value) {
27
+ this._previousFormData = value;
28
+ }
29
+ get allFormsData() {
30
+ return this._allFormsData;
31
+ }
32
+ set allFormsData(value) {
33
+ this._allFormsData = value;
34
+ }
35
+ get field() {
36
+ return this._field;
37
+ }
38
+ set field(value) {
39
+ this._field = value;
40
+ }
41
+ getFieldValidators(field) {
42
+ let validators = [];
43
+ if (hasKey(field, "validators") &&
44
+ hasKey(field.validators, "min") &&
45
+ isNotEmpty(field.validators.min)) {
46
+ validators.push(Validators.min(field.validators.min));
47
+ }
48
+ if (hasKey(field, "validators") &&
49
+ hasKey(field.validators, "max") &&
50
+ isNotEmpty(field.validators.max)) {
51
+ validators.push(Validators.max(field.validators.max));
52
+ }
53
+ if (hasKey(field, "required") ||
54
+ (hasKey(field, "validators") && hasKey(field.validators, "required"))) {
55
+ validators.push(Validators.required);
56
+ }
57
+ if (hasKey(field, "validators") &&
58
+ hasKey(field.validators, "minLength") &&
59
+ isNotEmpty(field.validators.minLength)) {
60
+ validators.push(Validators.minLength(field.validators.minLength));
61
+ }
62
+ if (hasKey(field, "validators") &&
63
+ hasKey(field.validators, "maxLength") &&
64
+ isNotEmpty(field.validators.maxLength)) {
65
+ validators.push(Validators.maxLength(field.validators.maxLength));
66
+ }
67
+ if (hasKey(field, "validators") &&
68
+ hasKey(field.validators, "pattern") &&
69
+ isNotEmpty(field.validators.pattern)) {
70
+ if (field.validators.pattern.key === EPatternKey.CUSTOM) {
71
+ validators.push(Validators.pattern(field.validators.pattern.pattern));
72
+ }
73
+ else {
74
+ validators.push(Validators.pattern(EPattern[field.validators.pattern.key]));
75
+ }
76
+ }
77
+ if (hasKey(field, "validators") &&
78
+ hasKey(field.validators, "nullValidator") &&
79
+ isNotEmpty(field.validators.nullValidator)) {
80
+ validators.push(Validators.nullValidator(field.validators.nullValidator));
81
+ }
82
+ return validators;
83
+ }
84
+ getFormValidationErrors(control) {
85
+ let errors = [];
86
+ for (const key in control.controls) {
87
+ const controlErrors = control.controls[key].errors;
88
+ if (controlErrors !== null && controlErrors !== undefined) {
89
+ Object.keys(controlErrors).forEach((keyError) => {
90
+ errors.push({
91
+ name: keyError,
92
+ value: controlErrors[keyError]
93
+ });
94
+ });
95
+ }
96
+ }
97
+ return errors;
98
+ }
99
+ findInvalidControlsRecursive(formToInvestigate) {
100
+ var controls = [];
101
+ let recursiveFunc = (form) => {
102
+ Object.keys(form.controls).forEach((field) => {
103
+ const control = form.get(field);
104
+ if (control.invalid) {
105
+ controls.push({
106
+ key: field,
107
+ invalid: true
108
+ });
109
+ }
110
+ else {
111
+ controls.push({
112
+ key: field,
113
+ invalid: false
114
+ });
115
+ }
116
+ if (control instanceof FormGroup) {
117
+ recursiveFunc(control);
118
+ }
119
+ else if (control instanceof FormArray) {
120
+ recursiveFunc(control);
121
+ }
122
+ });
123
+ };
124
+ recursiveFunc(formToInvestigate);
125
+ return controls;
126
+ }
127
+ validateField() {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ const validations = this._field.validation;
130
+ const triggers = validations.triggers;
131
+ const rules = validations.rules;
132
+ const actions = validations.actions;
133
+ const rulesMapping = new Rules(rules, this._field, this._formData, this._previousFormData, this._allFormsData).mapping();
134
+ for (let action of actions) {
135
+ const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
136
+ if (conditionEvaluation) {
137
+ const actions = new Actions(action, this._field, rulesMapping, this._allFormsData, this._formData, this._previousFormData, this._takeAction);
138
+ yield actions.execute();
139
+ }
140
+ }
141
+ });
142
+ }
143
+ }
144
+ __decorate([
145
+ log
146
+ ], Validations.prototype, "getFieldValidators", null);
147
+ __decorate([
148
+ log
149
+ ], Validations.prototype, "getFormValidationErrors", null);
150
+ __decorate([
151
+ log
152
+ ], Validations.prototype, "findInvalidControlsRecursive", null);
153
+ __decorate([
154
+ log
155
+ ], Validations.prototype, "validateField", null);
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnZhbGlkYXRpb25zLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy52YWxpZGF0aW9ucy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNaLE1BQU0seURBQXlELENBQUM7QUFFakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakQsTUFBTSxPQUFPLFdBQVc7SUFtQ3RCLFlBQ0UsS0FBYSxFQUNiLFFBQWEsRUFDYixnQkFBcUIsRUFDckIsWUFBaUIsRUFDakIsVUFBZTtRQUVmLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBN0NELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFB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QyxLQUFLLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUVwQyxNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FDNUIsS0FBSyxFQUNMLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFWixLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FDdkMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsWUFBWSxDQUNiLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRWIsSUFBSSxtQkFBbUIsRUFBRTtvQkFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQ3pCLE1BQU0sRUFDTixJQUFJLENBQUMsTUFBTSxFQUNYLFlBQVksRUFDWixJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztvQkFFRixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDekI7YUFDRjtRQUNILENBQUM7S0FBQTtDQUNGO0FBdEpDO0lBREMsR0FBRztxREE0REg7QUFHRDtJQURDLEdBQUc7MERBbUJIO0FBR0Q7SUFEQyxHQUFHOytEQTZCSDtBQUdEO0lBREMsR0FBRztnREFvQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JzXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgRVBhdHRlcm4sXHJcbiAgRVBhdHRlcm5LZXlcclxufSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvY29tbW9uL2Zvcm0tdmlldy5jb21tb24uZW51bS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBURmllbGQgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZmllbGRzL2Zvcm0tdmlldy5maWVsZHMudHlwZS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi4vZm9ybS12aWV3LmRlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gXCIuL2Zvcm0tdmlldy5hY3Rpb25zLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBoYXNLZXksIGlzTm90RW1wdHkgfSBmcm9tIFwiLi9mb3JtLXZpZXcuY29tbW9uLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tIFwiLi9mb3JtLXZpZXcuY29uZGl0aW9uLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBSdWxlcyB9IGZyb20gXCIuL2Zvcm0tdmlldy5ydWxlcy5oZWxwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9ucyB7XHJcbiAgcHJpdmF0ZSBfZm9ybURhdGE6IGFueTtcclxuICBnZXQgZm9ybURhdGEoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcclxuICB9XHJcbiAgc2V0IGZvcm1EYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX2Zvcm1EYXRhID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmV2aW91c0Zvcm1EYXRhOiBhbnk7XHJcbiAgZ2V0IHByZXZpb3VzRm9ybURhdGEoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhO1xyXG4gIH1cclxuICBzZXQgcHJldmlvdXNGb3JtRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hbGxGb3Jtc0RhdGE6IGFueTtcclxuICBnZXQgYWxsRm9ybXNEYXRhKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWxsRm9ybXNEYXRhO1xyXG4gIH1cclxuICBzZXQgYWxsRm9ybXNEYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX2FsbEZvcm1zRGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmllbGQ6IFRGaWVsZDtcclxuICBnZXQgZmllbGQoKTogVEZpZWxkIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZDtcclxuICB9XHJcbiAgc2V0IGZpZWxkKHZhbHVlOiBURmllbGQpIHtcclxuICAgIHRoaXMuX2ZpZWxkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90YWtlQWN0aW9uOiBGdW5jdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmaWVsZDogVEZpZWxkLFxyXG4gICAgZm9ybURhdGE6IGFueSxcclxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcclxuICAgIGFsbEZvcm1zRGF0YTogYW55LFxyXG4gICAgdGFrZUFjdGlvbjogYW55XHJcbiAgKSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IGZpZWxkO1xyXG4gICAgdGhpcy5fZm9ybURhdGEgPSBmb3JtRGF0YTtcclxuICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEgPSBwcmV2aW91c0Zvcm1EYXRhO1xyXG4gICAgdGhpcy5fYWxsRm9ybXNEYXRhID0gYWxsRm9ybXNEYXRhO1xyXG4gICAgdGhpcy5fdGFrZUFjdGlvbiA9IHRha2VBY3Rpb247XHJcbiAgfVxyXG5cclxuICBAbG9nXHJcbiAgZ2V0RmllbGRWYWxpZGF0b3JzKGZpZWxkOiBhbnkpIHtcclxuICAgIGxldCB2YWxpZGF0b3JzID0gW107XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBoYXNLZXkoZmllbGQsIFwidmFsaWRhdG9yc1wiKSAmJlxyXG4gICAgICBoYXNLZXkoZmllbGQudmFsaWRhdG9ycywgXCJtaW5cIikgJiZcclxuICAgICAgaXNOb3RFbXB0eShmaWVsZC52YWxpZGF0b3JzLm1pbilcclxuICAgICkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4oZmllbGQudmFsaWRhdG9ycy5taW4pKTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgaGFzS2V5KGZpZWxkLCBcInZhbGlkYXRvcnNcIikgJiZcclxuICAgICAgaGFzS2V5KGZpZWxkLnZhbGlkYXRvcnMsIFwibWF4XCIpICYmXHJcbiAgICAgIGlzTm90RW1wdHkoZmllbGQudmFsaWRhdG9ycy5tYXgpXHJcbiAgICApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGZpZWxkLnZhbGlkYXRvcnMubWF4KSk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGhhc0tleShmaWVsZCwgXCJyZXF1aXJlZFwiKSB8fFxyXG4gICAgICAoaGFzS2V5KGZpZWxkLCBcInZhbGlkYXRvcnNcIikgJiYgaGFzS2V5KGZpZWxkLnZhbGlkYXRvcnMsIFwicmVxdWlyZWRcIikpXHJcbiAgICApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBoYXNLZXkoZmllbGQsIFwidmFsaWRhdG9yc1wiKSAmJlxyXG4gICAgICBoYXNLZXkoZmllbGQudmFsaWRhdG9ycywgXCJtaW5MZW5ndGhcIikgJiZcclxuICAgICAgaXNOb3RFbXB0eShmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aClcclxuICAgICkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgaGFzS2V5KGZpZWxkLCBcInZhbGlkYXRvcnNcIikgJiZcclxuICAgICAgaGFzS2V5KGZpZWxkLnZhbGlkYXRvcnMsIFwibWF4TGVuZ3RoXCIpICYmXHJcbiAgICAgIGlzTm90RW1wdHkoZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGgpXHJcbiAgICApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGhhc0tleShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpICYmXHJcbiAgICAgIGhhc0tleShmaWVsZC52YWxpZGF0b3JzLCBcInBhdHRlcm5cIikgJiZcclxuICAgICAgaXNOb3RFbXB0eShmaWVsZC52YWxpZGF0b3JzLnBhdHRlcm4pXHJcbiAgICApIHtcclxuICAgICAgaWYgKGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybi5rZXkgPT09IEVQYXR0ZXJuS2V5LkNVU1RPTSkge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuLnBhdHRlcm4pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oRVBhdHRlcm5bZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuLmtleV0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBoYXNLZXkoZmllbGQsIFwidmFsaWRhdG9yc1wiKSAmJlxyXG4gICAgICBoYXNLZXkoZmllbGQudmFsaWRhdG9ycywgXCJudWxsVmFsaWRhdG9yXCIpICYmXHJcbiAgICAgIGlzTm90RW1wdHkoZmllbGQudmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yKVxyXG4gICAgKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm51bGxWYWxpZGF0b3IoZmllbGQudmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICBAbG9nXHJcbiAgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoXHJcbiAgICBjb250cm9sOiBGb3JtR3JvdXBcclxuICApOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10ge1xyXG4gICAgbGV0IGVycm9yczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xyXG4gICAgICBjb25zdCBjb250cm9sRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gY29udHJvbC5jb250cm9sc1trZXldLmVycm9ycztcclxuICAgICAgaWYgKGNvbnRyb2xFcnJvcnMgIT09IG51bGwgJiYgY29udHJvbEVycm9ycyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbEVycm9ycykuZm9yRWFjaCgoa2V5RXJyb3IpID0+IHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZToga2V5RXJyb3IsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb250cm9sRXJyb3JzW2tleUVycm9yXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgQGxvZ1xyXG4gIGZpbmRJbnZhbGlkQ29udHJvbHNSZWN1cnNpdmUoZm9ybVRvSW52ZXN0aWdhdGU6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSkge1xyXG4gICAgdmFyIGNvbnRyb2xzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCByZWN1cnNpdmVGdW5jID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkKTtcclxuICAgICAgICBpZiAoY29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgICAgICBjb250cm9scy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiBmaWVsZCxcclxuICAgICAgICAgICAgaW52YWxpZDogdHJ1ZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRyb2xzLnB1c2goe1xyXG4gICAgICAgICAgICBrZXk6IGZpZWxkLFxyXG4gICAgICAgICAgICBpbnZhbGlkOiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICByZWN1cnNpdmVGdW5jKGNvbnRyb2wpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgcmVjdXJzaXZlRnVuYyhjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICByZWN1cnNpdmVGdW5jKGZvcm1Ub0ludmVzdGlnYXRlKTtcclxuXHJcbiAgICByZXR1cm4gY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBAbG9nXHJcbiAgYXN5bmMgdmFsaWRhdGVGaWVsZCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGlvbnMgPSB0aGlzLl9maWVsZC52YWxpZGF0aW9uO1xyXG5cclxuICAgIGNvbnN0IHRyaWdnZXJzID0gdmFsaWRhdGlvbnMudHJpZ2dlcnM7XHJcbiAgICBjb25zdCBydWxlcyA9IHZhbGlkYXRpb25zLnJ1bGVzO1xyXG4gICAgY29uc3QgYWN0aW9ucyA9IHZhbGlkYXRpb25zLmFjdGlvbnM7XHJcblxyXG4gICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGVzKFxyXG4gICAgICBydWxlcyxcclxuICAgICAgdGhpcy5fZmllbGQsXHJcbiAgICAgIHRoaXMuX2Zvcm1EYXRhLFxyXG4gICAgICB0aGlzLl9wcmV2aW91c0Zvcm1EYXRhLFxyXG4gICAgICB0aGlzLl9hbGxGb3Jtc0RhdGFcclxuICAgICkubWFwcGluZygpO1xyXG5cclxuICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XHJcbiAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxyXG4gICAgICAgIGFjdGlvbi5jb25kaXRpb24sXHJcbiAgICAgICAgcnVsZXNNYXBwaW5nXHJcbiAgICAgICkuZXZhbHVhdGUoKTtcclxuXHJcbiAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb25zKFxyXG4gICAgICAgICAgYWN0aW9uLFxyXG4gICAgICAgICAgdGhpcy5fZmllbGQsXHJcbiAgICAgICAgICBydWxlc01hcHBpbmcsXHJcbiAgICAgICAgICB0aGlzLl9hbGxGb3Jtc0RhdGEsXHJcbiAgICAgICAgICB0aGlzLl9mb3JtRGF0YSxcclxuICAgICAgICAgIHRoaXMuX3ByZXZpb3VzRm9ybURhdGEsXHJcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19