@messaia/cdk 13.3.4 → 13.3.5-rc01

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.
@@ -2,7 +2,7 @@ import { headerMetadataKey } from "../../common/constants/constants";
2
2
  import { formFieldGroupMetadataKey } from "../constants/constants";
3
3
  import { FormFieldType } from "../enums/form-field-type";
4
4
  import { FormFieldDefinition } from "../models/form-field-definition";
5
- import { FormFieldGroup } from "../models/form-field-group";
5
+ import { FormFieldGroupDefinition } from "../models/form-field-group-definition";
6
6
  import { getFormGroups } from "./functions";
7
7
  /**
8
8
  * Property decorator to create form fields
@@ -70,7 +70,7 @@ export function FormFieldOld(args) {
70
70
  }
71
71
  /* Create a new group */
72
72
  else {
73
- group = new FormFieldGroup({ name: formField.groupName || null, header: formField.groupHeader, fields: [formField] });
73
+ group = new FormFieldGroupDefinition({ name: formField.groupName || null, header: formField.groupHeader, fields: [formField] });
74
74
  formFieldGroups.push(group);
75
75
  }
76
76
  /* Sort the fields by row */
@@ -151,41 +151,31 @@ export function FormField(args) {
151
151
  }
152
152
  /**
153
153
  * Property decorator to create form fields
154
- * @param args
154
+ * @param type
155
+ * @param header
156
+ * @param init
155
157
  * @returns
156
158
  */
157
- export function FormGroup(type, header, name) {
159
+ export function FormFieldGroup(type, header, init) {
158
160
  return function (target, propertyKey) {
159
- /* Set proprety name as group name, if empty */
160
- name || (name = propertyKey);
161
+ /* Create an instance of the group object */
162
+ var instance = Reflect.construct(type, []);
161
163
  /* Get from groups */
162
- var groups = getFormGroups(Reflect.construct(type, []));
163
- /* Get all fields */
164
- var fields = groups.map(x => x.fields).reduce((a, b) => a.concat(b), []) || [];
165
- /* Get existing table groups */
166
- let formFieldGroups = Reflect.getMetadata(formFieldGroupMetadataKey, target) || [];
167
- /* Get the group */
168
- var group = formFieldGroups.filter(x => x.name?.trim() == name?.trim())[0];
169
- /* The group already exist, add the fields to it */
170
- if (group) {
171
- fields.forEach(x => x.groupName = name);
172
- group.fields.push(...fields);
173
- }
174
- /* Create the new group */
175
- else {
176
- group = new FormFieldGroup({ name: name, header: header, fields: fields });
177
- formFieldGroups.push(group);
178
- }
179
- /* Sort the fields by row */
180
- group.fields = group?.fields?.sort((a, b) => (a.row || 0 > b.row || 0) ? 1 : ((b.row || 0 > a.row || 0) ? -1 : 0)) || [];
181
- /* Group the fields */
182
- group.groups = Object.values((group.fields).reduce(function (r, a) {
183
- r[a.row] = r[a.row] || [];
184
- r[a.row].push(a);
185
- return r;
186
- }, Object.create(null)));
187
- /* Add new table column */
188
- Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);
164
+ var groups = getFormGroups(instance);
165
+ /* Get old form fields */
166
+ const previousFormFields = Reflect.getMetadata(formFieldGroupMetadataKey, target);
167
+ /* Get the fields from the groups */
168
+ groups?.map(x => x.fields)?.forEach(x => {
169
+ /* Set the name of the group in the fields */
170
+ x.forEach(y => {
171
+ y.groupName = propertyKey;
172
+ y.groupHeader = header;
173
+ y.groupObjectType = type;
174
+ y.groupObjectInstance = init || instance;
175
+ });
176
+ /* Create a copy of the result and override the result in the metadata */
177
+ Reflect.defineMetadata(formFieldGroupMetadataKey, (previousFormFields ? previousFormFields.concat(x) : x), target);
178
+ });
189
179
  };
190
180
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2Z1bmN0aW9ucy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFrQztJQUMzRCxPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CO1FBQzdDLHVCQUF1QjtRQUN2QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQztRQUU1Qyx1QkFBdUI7UUFDdkIsSUFBSSxZQUFZLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUV6Rix5QkFBeUI7UUFDekIsSUFBSSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBdUI7WUFDN0UsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVztZQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxZQUFZO1lBQ2xHLG9CQUFvQixFQUFFLElB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SSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBNEIsQ0FBQztRQUVwRCwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0UsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBoZWFkZXJNZXRhZGF0YUtleSB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5IH0gZnJvbSBcIi4uL2NvbnN0YW50cy9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZSB9IGZyb20gXCIuLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGVcIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS1maWVsZC1kZWZpbml0aW9uXCI7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwXCI7XHJcbmltcG9ydCB7IGdldEZvcm1Hcm91cHMgfSBmcm9tIFwiLi9mdW5jdGlvbnNcIjtcclxuXHJcbi8qKlxyXG4gKiBQcm9wZXJ0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGZvcm0gZmllbGRzXHJcbiAqIEBwYXJhbSBhcmdzIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtRmllbGRPbGQoYXJnczogUGFydGlhbDxGb3JtRmllbGREZWZpbml0aW9uPik6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBHZXQgcHJvcGVydHkgbmFtZSAqL1xyXG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBhcmdzLm5hbWUgfHwgcHJvcGVydHlLZXk7XHJcblxyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSB0eXBlICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5VHlwZTogc3RyaW5nID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIHRhcmdldCwgcHJvcGVydHlLZXkpPy5uYW1lO1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgdmFyIGZvcm1GaWVsZCA9IG5ldyBGb3JtRmllbGREZWZpbml0aW9uKE9iamVjdC5hc3NpZ24oYXJncywgPEZvcm1GaWVsZERlZmluaXRpb24+e1xyXG4gICAgICAgICAgICBuYW1lOiBhcmdzLm5hbWUgfHwgcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIGhlYWRlcjogYXJncy5oZWFkZXIgfHwgUmVmbGVjdC5nZXRNZXRhZGF0YShoZWFkZXJNZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkgfHwgcHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgICBhdXRvY29tcGxldGVUZW1wbGF0ZTogYXJncy5hdXRvY29tcGxldGVUZW1wbGF0ZSB8fCAoKG9wdGlvbjogYW55KSA9PiBvcHRpb25bZm9ybUZpZWxkLmF1dG9jb21wbGV0ZVRleHRdKSxcclxuICAgICAgICAgICAgY2hpcFRlbXBsYXRlOiBhcmdzLmNoaXBUZW1wbGF0ZSB8fCAoKGNoaXA6IGFueSkgPT4gY2hpcFtmb3JtRmllbGQuY2hpcFRleHRdKVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgLyogVHlwZSBlbnVtICovXHJcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5lbnVtVHlwZSkge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5FbnVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBWZFNlbGVjdCAqL1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5lbmRwb2ludCkge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5WZFNlbGVjdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFR5cGUgU2VsZWN0ICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuU2VsZWN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBUZXh0QXJlYSAqL1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5yb3dzKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlRleHRBcmVhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBGaWxlICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpbGVQYXRoKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkZpbGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBPdGhlciB0eXBlcyAqL1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5VHlwZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLmlucHV0VHlwZSB8fD0gJ251bWJlcic7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5DaGVja2JveDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEdldCBleGlzdGluZyB0YWJsZSBncm91cHMgKi9cclxuICAgICAgICBsZXQgZm9ybUZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cFtdID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCB0YXJnZXQpIHx8IFtdO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGdyb3VwICovXHJcbiAgICAgICAgdmFyIGdyb3VwID0gZm9ybUZpZWxkR3JvdXBzLmZpbHRlcih4ID0+IHgubmFtZT8udHJpbSgpID09IGZvcm1GaWVsZC5ncm91cE5hbWU/LnRyaW0oKSlbMF07XHJcblxyXG4gICAgICAgIC8qIFRoZSBncm91cCBhbHJlYWR5IGV4aXN0cywgYWRkIHRoZSBuZXcgZm9ybSBmaWVsZCAqL1xyXG4gICAgICAgIGlmIChncm91cCkge1xyXG4gICAgICAgICAgICBncm91cC5maWVsZHMucHVzaChmb3JtRmllbGQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIGEgbmV3IGdyb3VwICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdyb3VwID0gbmV3IEZvcm1GaWVsZEdyb3VwKHsgbmFtZTogZm9ybUZpZWxkLmdyb3VwTmFtZSB8fCBudWxsLCBoZWFkZXI6IGZvcm1GaWVsZC5ncm91cEhlYWRlciwgZmllbGRzOiBbZm9ybUZpZWxkXSB9KTtcclxuICAgICAgICAgICAgZm9ybUZpZWxkR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU29ydCB0aGUgZmllbGRzIGJ5IHJvdyAqL1xyXG4gICAgICAgIGdyb3VwLmZpZWxkcyA9IGdyb3VwLmZpZWxkcz8uc29ydCgoYSwgYikgPT4gKGEucm93IHx8IDAgPiBiLnJvdyB8fCAwKSA/IDEgOiAoKGIucm93IHx8IDAgPiBhLnJvdyB8fCAwKSA/IC0xIDogMCkpIHx8IFtdO1xyXG5cclxuICAgICAgICAvKiBHcm91cCB0aGUgZmllbGRzICovXHJcbiAgICAgICAgZ3JvdXAuZ3JvdXBzID0gT2JqZWN0LnZhbHVlcygoZ3JvdXAuZmllbGRzKS5yZWR1Y2UoZnVuY3Rpb24gKHIsIGEpIHtcclxuICAgICAgICAgICAgclthLnJvd10gPSByW2Eucm93XSB8fCBbXTtcclxuICAgICAgICAgICAgclthLnJvd10ucHVzaChhKTtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSkpIGFzIFtGb3JtRmllbGREZWZpbml0aW9uW11dO1xyXG5cclxuICAgICAgICAvKiBBZGQgbmV3IHRhYmxlIGNvbHVtbiAqL1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgZm9ybUZpZWxkR3JvdXBzLCB0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3BlcnR5IGRlY29yYXRvciB0byBjcmVhdGUgZm9ybSBmaWVsZHNcclxuICogQHBhcmFtIGFyZ3MgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1GaWVsZChhcmdzOiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb24+KTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSBuYW1lICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleTtcclxuXHJcbiAgICAgICAgLyogR2V0IHByb3BlcnR5IHR5cGUgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlUeXBlOiBzdHJpbmcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk/Lm5hbWU7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICB2YXIgZm9ybUZpZWxkID0gbmV3IEZvcm1GaWVsZERlZmluaXRpb24oT2JqZWN0LmFzc2lnbihhcmdzLCA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XHJcbiAgICAgICAgICAgIG5hbWU6IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgaGVhZGVyOiBhcmdzLmhlYWRlciB8fCBSZWZsZWN0LmdldE1ldGFkYXRhKGhlYWRlck1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB8fCBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZVRlbXBsYXRlOiBhcmdzLmF1dG9jb21wbGV0ZVRlbXBsYXRlIHx8ICgob3B0aW9uOiBhbnkpID0+IG9wdGlvbltmb3JtRmllbGQuYXV0b2NvbXBsZXRlVGV4dF0pLFxyXG4gICAgICAgICAgICBjaGlwVGVtcGxhdGU6IGFyZ3MuY2hpcFRlbXBsYXRlIHx8ICgoY2hpcDogYW55KSA9PiBjaGlwW2Zvcm1GaWVsZC5jaGlwVGV4dF0pXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAvKiBUeXBlIGVudW0gKi9cclxuICAgICAgICBpZiAoZm9ybUZpZWxkLmVudW1UeXBlKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkVudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFZkU2VsZWN0ICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlZkU2VsZWN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBTZWxlY3QgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQub3B0aW9ucykge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5TZWxlY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFRleHRBcmVhICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLnJvd3MpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dEFyZWE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIEZpbGUgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmlsZVBhdGgpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRmlsZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE90aGVyIHR5cGVzICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuaW5wdXRUeXBlIHx8PSAnbnVtYmVyJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5EYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkNoZWNrYm94O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IG9sZCBmb3JtIGZpZWxkcyAqL1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzRm9ybUZpZWxkcyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgdGFyZ2V0KTtcclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIGEgY29weSBvZiB0aGUgcmVzdWx0ICovXHJcbiAgICAgICAgbGV0IGZvcm1GaWVsZHMgPSBwcmV2aW91c0Zvcm1GaWVsZHMgPyBwcmV2aW91c0Zvcm1GaWVsZHMuY29uY2F0KFtmb3JtRmllbGRdKSA6IFtmb3JtRmllbGRdO1xyXG5cclxuICAgICAgICAvKiBPdmVycmlkZSB0aGUgcmVzdWx0IGluIHRoZSBtZXRhZGF0YSAqL1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgZm9ybUZpZWxkcywgdGFyZ2V0KTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcm9wZXJ0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGZvcm0gZmllbGRzXHJcbiAqIEBwYXJhbSBhcmdzIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtR3JvdXA8VD4odHlwZTogVHlwZTxUPiwgaGVhZGVyOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcpOiBGdW5jdGlvbiB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogU2V0IHByb3ByZXR5IG5hbWUgYXMgZ3JvdXAgbmFtZSwgaWYgZW1wdHkgKi9cclxuICAgICAgICBuYW1lIHx8PSBwcm9wZXJ0eUtleTtcclxuXHJcbiAgICAgICAgLyogR2V0IGZyb20gZ3JvdXBzICovXHJcbiAgICAgICAgdmFyIGdyb3VwcyA9IGdldEZvcm1Hcm91cHMoUmVmbGVjdC5jb25zdHJ1Y3QodHlwZSwgW10pKTtcclxuXHJcbiAgICAgICAgLyogR2V0IGFsbCBmaWVsZHMgKi9cclxuICAgICAgICB2YXIgZmllbGRzID0gZ3JvdXBzLm1hcCh4ID0+IHguZmllbGRzKS5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdldCBleGlzdGluZyB0YWJsZSBncm91cHMgKi9cclxuICAgICAgICBsZXQgZm9ybUZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cFtdID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCB0YXJnZXQpIHx8IFtdO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGdyb3VwICovXHJcbiAgICAgICAgdmFyIGdyb3VwID0gZm9ybUZpZWxkR3JvdXBzLmZpbHRlcih4ID0+IHgubmFtZT8udHJpbSgpID09IG5hbWU/LnRyaW0oKSlbMF07XHJcblxyXG4gICAgICAgIC8qIFRoZSBncm91cCBhbHJlYWR5IGV4aXN0LCBhZGQgdGhlIGZpZWxkcyB0byBpdCAqL1xyXG4gICAgICAgIGlmIChncm91cCkge1xyXG4gICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCh4ID0+IHguZ3JvdXBOYW1lID0gbmFtZSk7XHJcbiAgICAgICAgICAgIGdyb3VwLmZpZWxkcy5wdXNoKC4uLmZpZWxkcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGhlIG5ldyBncm91cCAqL1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBncm91cCA9IG5ldyBGb3JtRmllbGRHcm91cCh7IG5hbWU6IG5hbWUsIGhlYWRlcjogaGVhZGVyLCBmaWVsZHM6IGZpZWxkcyB9KTtcclxuICAgICAgICAgICAgZm9ybUZpZWxkR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU29ydCB0aGUgZmllbGRzIGJ5IHJvdyAqL1xyXG4gICAgICAgIGdyb3VwLmZpZWxkcyA9IGdyb3VwPy5maWVsZHM/LnNvcnQoKGEsIGIpID0+IChhLnJvdyB8fCAwID4gYi5yb3cgfHwgMCkgPyAxIDogKChiLnJvdyB8fCAwID4gYS5yb3cgfHwgMCkgPyAtMSA6IDApKSB8fCBbXTtcclxuXHJcbiAgICAgICAgLyogR3JvdXAgdGhlIGZpZWxkcyAqL1xyXG4gICAgICAgIGdyb3VwLmdyb3VwcyA9IE9iamVjdC52YWx1ZXMoKGdyb3VwLmZpZWxkcykucmVkdWNlKGZ1bmN0aW9uIChyLCBhKSB7XHJcbiAgICAgICAgICAgIHJbYS5yb3ddID0gclthLnJvd10gfHwgW107XHJcbiAgICAgICAgICAgIHJbYS5yb3ddLnB1c2goYSk7XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpKSBhcyBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXTtcclxuXHJcbiAgICAgICAgLyogQWRkIG5ldyB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIGZvcm1GaWVsZEdyb3VwcywgdGFyZ2V0KTtcclxuICAgIH07XHJcbn0iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2Z1bmN0aW9ucy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWtDO0lBQzNELE9BQU8sVUFBVSxNQUFXLEVBQUUsV0FBbUI7UUFDN0MsdUJBQXVCO1FBQ3ZCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDO1FBRTVDLHVCQUF1QjtRQUN2QixJQUFJLFlBQVksR0FBVyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBRXpGLHlCQUF5QjtRQUN6QixJQUFJLFNBQVMsR0FBRyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUF1QjtZQUM3RSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxJQUFJLFlBQVk7WUFDbEcsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN4RyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9FLENBQUMsQ0FBQyxDQUFDO1FBRUosZUFBZTtRQUNmLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUNwQixTQUFTLENBQUMsSUFBSSxLQUFkLFNBQVMsQ0FBQyxJQUFJLEdBQUssYUFBYSxDQUFDLElBQUksRUFBQztTQUN6QztRQUVELG1CQUFtQjthQUNkLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUN6QixTQUFTLENBQUMsSUFBSSxLQUFkLFNBQVMsQ0FBQyxJQUFJLEdBQUssYUFBYSxDQUFDLFFBQVEsRUFBQztTQUM3QztRQUVELGlCQUFpQjthQUNaLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUN4QixTQUFTLENBQUMsSUFBSSxLQUFkLFNBQVMsQ0FBQyxJQUFJLEdBQUssYUFBYSxDQUFDLE1BQU0sRUFBQztTQUMzQztRQUVELG1CQUFtQjthQUNkLElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtZQUNyQixTQUFTLENBQUMsSUFBSSxLQUFkLFNBQVMsQ0FBQyxJQUFJLEdBQUssYUFBYSxDQUFDLFFBQVEsRUFBQztTQUM3QztRQUVELGVBQWU7YUFDVixJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDekIsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUM7U0FDekM7UUFFRCxpQkFBaUI7YUFDWjtZQUNELFFBQVEsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNoQyxLQUFLLFFBQVE7b0JBQ1QsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUM7b0JBQ3RDLFNBQVMsQ0FBQyxTQUFTLEtBQW5CLFNBQVMsQ0FBQyxTQUFTLEdBQUssUUFBUSxFQUFDO29CQUNqQyxNQUFNO2dCQUVWLEtBQUssTUFBTTtvQkFDUCxTQUFTLENBQUMsSUFBSSxLQUFkLFNBQVMsQ0FBQyxJQUFJLEdBQUssYUFBYSxDQUFDLElBQUksRUFBQztvQkFDdEMsTUFBTTtnQkFFVixLQUFLLFNBQVM7b0JBQ1YsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUM7b0JBQzFDLE1BQU07Z0JBRVY7b0JBQ0ksU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUM7b0JBQ3RDLE1BQU07YUFDYjtTQUNKO1FBRUQsK0JBQStCO1FBQy9CLElBQUksZUFBZSxHQUErQixPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvRyxtQkFBbUI7UUFDbkIsSUFBSSxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFGLHNEQUFzRDtRQUN0RCxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsd0JBQXdCO2FBQ25CO1lBQ0QsS0FBSyxHQUFHLElBQUksd0JBQXdCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0I7UUFFRCw0QkFBNEI7UUFDNUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhILHNCQUFzQjtRQUN0QixLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFFcEQsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFrQztJQUN4RCxPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CO1FBQzdDLHVCQUF1QjtRQUN2QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQztRQUU1Qyx1QkFBdUI7UUFDdkIsSUFBSSxZQUFZLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUV6Rix5QkFBeUI7UUFDekIsSUFBSSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBdUI7WUFDN0UsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVztZQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxZQUFZO1lBQ2xHLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEcsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvRSxDQUFDLENBQUMsQ0FBQztRQUVKLGVBQWU7UUFDZixJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDcEIsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUM7U0FDekM7UUFFRCxtQkFBbUI7YUFDZCxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDekIsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUM7U0FDN0M7UUFFRCxpQkFBaUI7YUFDWixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDeEIsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxNQUFNLEVBQUM7U0FDM0M7UUFFRCxtQkFBbUI7YUFDZCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDckIsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUM7U0FDN0M7UUFFRCxlQUFlO2FBQ1YsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3pCLFNBQVMsQ0FBQyxJQUFJLEtBQWQsU0FBUyxDQUFDLElBQUksR0FBSyxhQUFhLENBQUMsSUFBSSxFQUFDO1NBQ3pDO1FBRUQsaUJBQWlCO2FBQ1o7WUFDRCxRQUFRLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDaEMsS0FBSyxRQUFRO29CQUNULFNBQVMsQ0FBQyxJQUFJLEtBQWQsU0FBUyxDQUFDLElBQUksR0FBSyxhQUFhLENBQUMsSUFBSSxFQUFDO29CQUN0QyxTQUFTLENBQUMsU0FBUyxLQUFuQixTQUFTLENBQUMsU0FBUyxHQUFLLFFBQVEsRUFBQztvQkFDakMsTUFBTTtnQkFFVixLQUFLLE1BQU07b0JBQ1AsU0FBUyxDQUFDLElBQUksS0FBZCxTQUFTLENBQUMsSUFBSSxHQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUM7b0JBQ3RDLE1BQU07Z0JBRVYsS0FBSyxTQUFTO29CQUNWLFNBQVMsQ0FBQyxJQUFJLEtBQWQsU0FBUyxDQUFDLElBQUksR0FBSyxhQUFhLENBQUMsUUFBUSxFQUFDO29CQUMxQyxNQUFNO2dCQUVWO29CQUNJLFNBQVMsQ0FBQyxJQUFJLEtBQWQsU0FBUyxDQUFDLElBQUksR0FBSyxhQUFhLENBQUMsSUFBSSxFQUFDO29CQUN0QyxNQUFNO2FBQ2I7U0FDSjtRQUVELHlCQUF5QjtRQUN6QixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbEYsaUNBQWlDO1FBQ2pDLElBQUksVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNGLHlDQUF5QztRQUN6QyxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBSSxJQUFhLEVBQUUsTUFBYyxFQUFFLElBQVE7SUFDckUsT0FBTyxVQUFVLE1BQVcsRUFBRSxXQUFtQjtRQUM3Qyw0Q0FBNEM7UUFDNUMsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFM0MscUJBQXFCO1FBQ3JCLElBQUksTUFBTSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyQyx5QkFBeUI7UUFDekIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWxGLG9DQUFvQztRQUNwQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQyw2Q0FBNkM7WUFDN0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDVixDQUFDLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQTtZQUM1QyxDQUFDLENBQUMsQ0FBQztZQUVILHlFQUF5RTtZQUN6RSxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkgsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGhlYWRlck1ldGFkYXRhS2V5IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2Zvcm0tZmllbGQtdHlwZVwiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgZ2V0Rm9ybUdyb3VwcyB9IGZyb20gXCIuL2Z1bmN0aW9uc1wiO1xyXG5cclxuLyoqXHJcbiAqIFByb3BlcnR5IGRlY29yYXRvciB0byBjcmVhdGUgZm9ybSBmaWVsZHNcclxuICogQHBhcmFtIGFyZ3MgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1GaWVsZE9sZChhcmdzOiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb24+KTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSBuYW1lICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleTtcclxuXHJcbiAgICAgICAgLyogR2V0IHByb3BlcnR5IHR5cGUgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlUeXBlOiBzdHJpbmcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk/Lm5hbWU7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICB2YXIgZm9ybUZpZWxkID0gbmV3IEZvcm1GaWVsZERlZmluaXRpb24oT2JqZWN0LmFzc2lnbihhcmdzLCA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XHJcbiAgICAgICAgICAgIG5hbWU6IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgaGVhZGVyOiBhcmdzLmhlYWRlciB8fCBSZWZsZWN0LmdldE1ldGFkYXRhKGhlYWRlck1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB8fCBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZVRlbXBsYXRlOiBhcmdzLmF1dG9jb21wbGV0ZVRlbXBsYXRlIHx8ICgob3B0aW9uOiBhbnkpID0+IG9wdGlvbltmb3JtRmllbGQuYXV0b2NvbXBsZXRlVGV4dF0pLFxyXG4gICAgICAgICAgICBjaGlwVGVtcGxhdGU6IGFyZ3MuY2hpcFRlbXBsYXRlIHx8ICgoY2hpcDogYW55KSA9PiBjaGlwW2Zvcm1GaWVsZC5jaGlwVGV4dF0pXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAvKiBUeXBlIGVudW0gKi9cclxuICAgICAgICBpZiAoZm9ybUZpZWxkLmVudW1UeXBlKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkVudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFZkU2VsZWN0ICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlZkU2VsZWN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBTZWxlY3QgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQub3B0aW9ucykge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5TZWxlY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFRleHRBcmVhICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLnJvd3MpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dEFyZWE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIEZpbGUgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmlsZVBhdGgpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRmlsZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE90aGVyIHR5cGVzICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuaW5wdXRUeXBlIHx8PSAnbnVtYmVyJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5EYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkNoZWNrYm94O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGV4aXN0aW5nIHRhYmxlIGdyb3VwcyAqL1xyXG4gICAgICAgIGxldCBmb3JtRmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCB0YXJnZXQpIHx8IFtdO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGdyb3VwICovXHJcbiAgICAgICAgdmFyIGdyb3VwID0gZm9ybUZpZWxkR3JvdXBzLmZpbHRlcih4ID0+IHgubmFtZT8udHJpbSgpID09IGZvcm1GaWVsZC5ncm91cE5hbWU/LnRyaW0oKSlbMF07XHJcblxyXG4gICAgICAgIC8qIFRoZSBncm91cCBhbHJlYWR5IGV4aXN0cywgYWRkIHRoZSBuZXcgZm9ybSBmaWVsZCAqL1xyXG4gICAgICAgIGlmIChncm91cCkge1xyXG4gICAgICAgICAgICBncm91cC5maWVsZHMucHVzaChmb3JtRmllbGQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIGEgbmV3IGdyb3VwICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdyb3VwID0gbmV3IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbih7IG5hbWU6IGZvcm1GaWVsZC5ncm91cE5hbWUgfHwgbnVsbCwgaGVhZGVyOiBmb3JtRmllbGQuZ3JvdXBIZWFkZXIsIGZpZWxkczogW2Zvcm1GaWVsZF0gfSk7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZEdyb3Vwcy5wdXNoKGdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFNvcnQgdGhlIGZpZWxkcyBieSByb3cgKi9cclxuICAgICAgICBncm91cC5maWVsZHMgPSBncm91cC5maWVsZHM/LnNvcnQoKGEsIGIpID0+IChhLnJvdyB8fCAwID4gYi5yb3cgfHwgMCkgPyAxIDogKChiLnJvdyB8fCAwID4gYS5yb3cgfHwgMCkgPyAtMSA6IDApKSB8fCBbXTtcclxuXHJcbiAgICAgICAgLyogR3JvdXAgdGhlIGZpZWxkcyAqL1xyXG4gICAgICAgIGdyb3VwLmdyb3VwcyA9IE9iamVjdC52YWx1ZXMoKGdyb3VwLmZpZWxkcykucmVkdWNlKGZ1bmN0aW9uIChyLCBhKSB7XHJcbiAgICAgICAgICAgIHJbYS5yb3ddID0gclthLnJvd10gfHwgW107XHJcbiAgICAgICAgICAgIHJbYS5yb3ddLnB1c2goYSk7XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpKSBhcyBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXTtcclxuXHJcbiAgICAgICAgLyogQWRkIG5ldyB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIGZvcm1GaWVsZEdyb3VwcywgdGFyZ2V0KTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcm9wZXJ0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGZvcm0gZmllbGRzXHJcbiAqIEBwYXJhbSBhcmdzIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtRmllbGQoYXJnczogUGFydGlhbDxGb3JtRmllbGREZWZpbml0aW9uPik6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBHZXQgcHJvcGVydHkgbmFtZSAqL1xyXG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBhcmdzLm5hbWUgfHwgcHJvcGVydHlLZXk7XHJcblxyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSB0eXBlICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5VHlwZTogc3RyaW5nID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIHRhcmdldCwgcHJvcGVydHlLZXkpPy5uYW1lO1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgdmFyIGZvcm1GaWVsZCA9IG5ldyBGb3JtRmllbGREZWZpbml0aW9uKE9iamVjdC5hc3NpZ24oYXJncywgPEZvcm1GaWVsZERlZmluaXRpb24+e1xyXG4gICAgICAgICAgICBuYW1lOiBhcmdzLm5hbWUgfHwgcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIGhlYWRlcjogYXJncy5oZWFkZXIgfHwgUmVmbGVjdC5nZXRNZXRhZGF0YShoZWFkZXJNZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkgfHwgcHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgICBhdXRvY29tcGxldGVUZW1wbGF0ZTogYXJncy5hdXRvY29tcGxldGVUZW1wbGF0ZSB8fCAoKG9wdGlvbjogYW55KSA9PiBvcHRpb25bZm9ybUZpZWxkLmF1dG9jb21wbGV0ZVRleHRdKSxcclxuICAgICAgICAgICAgY2hpcFRlbXBsYXRlOiBhcmdzLmNoaXBUZW1wbGF0ZSB8fCAoKGNoaXA6IGFueSkgPT4gY2hpcFtmb3JtRmllbGQuY2hpcFRleHRdKVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgLyogVHlwZSBlbnVtICovXHJcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5lbnVtVHlwZSkge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5FbnVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBWZFNlbGVjdCAqL1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5lbmRwb2ludCkge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5WZFNlbGVjdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFR5cGUgU2VsZWN0ICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuU2VsZWN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBUZXh0QXJlYSAqL1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5yb3dzKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlRleHRBcmVhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBGaWxlICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpbGVQYXRoKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkZpbGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBPdGhlciB0eXBlcyAqL1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5VHlwZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLmlucHV0VHlwZSB8fD0gJ251bWJlcic7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5DaGVja2JveDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEdldCBvbGQgZm9ybSBmaWVsZHMgKi9cclxuICAgICAgICBjb25zdCBwcmV2aW91c0Zvcm1GaWVsZHMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIHRhcmdldCk7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSBhIGNvcHkgb2YgdGhlIHJlc3VsdCAqL1xyXG4gICAgICAgIGxldCBmb3JtRmllbGRzID0gcHJldmlvdXNGb3JtRmllbGRzID8gcHJldmlvdXNGb3JtRmllbGRzLmNvbmNhdChbZm9ybUZpZWxkXSkgOiBbZm9ybUZpZWxkXTtcclxuXHJcbiAgICAgICAgLyogT3ZlcnJpZGUgdGhlIHJlc3VsdCBpbiB0aGUgbWV0YWRhdGEgKi9cclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIGZvcm1GaWVsZHMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUHJvcGVydHkgZGVjb3JhdG9yIHRvIGNyZWF0ZSBmb3JtIGZpZWxkc1xyXG4gKiBAcGFyYW0gdHlwZSBcclxuICogQHBhcmFtIGhlYWRlciBcclxuICogQHBhcmFtIGluaXQgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1GaWVsZEdyb3VwPFQ+KHR5cGU6IFR5cGU8VD4sIGhlYWRlcjogc3RyaW5nLCBpbml0PzogVCk6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGdyb3VwIG9iamVjdCAqL1xyXG4gICAgICAgIHZhciBpbnN0YW5jZSA9IFJlZmxlY3QuY29uc3RydWN0KHR5cGUsIFtdKTtcclxuXHJcbiAgICAgICAgLyogR2V0IGZyb20gZ3JvdXBzICovXHJcbiAgICAgICAgdmFyIGdyb3VwcyA9IGdldEZvcm1Hcm91cHMoaW5zdGFuY2UpO1xyXG5cclxuICAgICAgICAvKiBHZXQgb2xkIGZvcm0gZmllbGRzICovXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNGb3JtRmllbGRzID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCB0YXJnZXQpO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGZpZWxkcyBmcm9tIHRoZSBncm91cHMgKi9cclxuICAgICAgICBncm91cHM/Lm1hcCh4ID0+IHguZmllbGRzKT8uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgLyogU2V0IHRoZSBuYW1lIG9mIHRoZSBncm91cCBpbiB0aGUgZmllbGRzICovXHJcbiAgICAgICAgICAgIHguZm9yRWFjaCh5ID0+IHtcclxuICAgICAgICAgICAgICAgIHkuZ3JvdXBOYW1lID0gcHJvcGVydHlLZXk7XHJcbiAgICAgICAgICAgICAgICB5Lmdyb3VwSGVhZGVyID0gaGVhZGVyO1xyXG4gICAgICAgICAgICAgICAgeS5ncm91cE9iamVjdFR5cGUgPSB0eXBlO1xyXG4gICAgICAgICAgICAgICAgeS5ncm91cE9iamVjdEluc3RhbmNlID0gaW5pdCB8fCBpbnN0YW5jZVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8qIENyZWF0ZSBhIGNvcHkgb2YgdGhlIHJlc3VsdCBhbmQgb3ZlcnJpZGUgdGhlIHJlc3VsdCBpbiB0aGUgbWV0YWRhdGEgKi9cclxuICAgICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCAocHJldmlvdXNGb3JtRmllbGRzID8gcHJldmlvdXNGb3JtRmllbGRzLmNvbmNhdCh4KSA6IHgpLCB0YXJnZXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxufSJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Utils } from "../../common/functions/utils";
2
2
  import { formFieldGroupMetadataKey } from "../constants/constants";
3
- import { FormFieldGroup } from "../models/form-field-group";
3
+ import { FormFieldGroupDefinition } from "../models/form-field-group-definition";
4
4
  /**
5
5
  * Gets poperties decoarated with @FormField grouped by row
6
6
  * @param origin
@@ -17,17 +17,23 @@ export function getFormGroupsOld(origin) {
17
17
  */
18
18
  export function getFormGroups(origin) {
19
19
  const grouped = Utils.groupArrayBy(Reflect.getMetadata(formFieldGroupMetadataKey, origin), x => x.groupName);
20
- return Array.from(grouped).map(([_, value]) => new FormFieldGroup({
20
+ return Array.from(grouped).map(([_, value]) => new FormFieldGroupDefinition({
21
21
  name: value[0].groupName || null,
22
22
  header: value[0].groupHeader,
23
23
  fields: value,
24
+ type: value[0].groupObjectType,
25
+ instance: value[0].groupObjectInstance,
24
26
  groups: Object.values((value).reduce(function (r, a) {
25
27
  r[a.row] = (r[a.row] || []);
26
28
  r[a.row].push(a);
27
- r[a.row].forEach((x, i) => x.index = x.index || i);
29
+ r[a.row].forEach((x, i) => {
30
+ x.index = x.index || i;
31
+ delete x.groupObjectType;
32
+ delete x.groupObjectInstance;
33
+ });
28
34
  Utils.sortArray(r[a.row], 'index');
29
35
  return r;
30
36
  }, Object.create(null)))
31
37
  }));
32
38
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQWM7SUFDM0MsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBcUIsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBYztJQUN4QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUEwQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RJLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUM7UUFDOUQsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSTtRQUNoQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDNUIsTUFBTSxFQUFFLEtBQUs7UUFDYixNQUFNLEVBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQTBCLEVBQUUsQ0FBc0I7WUFDOUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBNkI7S0FDdkQsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlsc1wiO1xyXG5pbXBvcnQgeyBmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5IH0gZnJvbSBcIi4uL2NvbnN0YW50cy9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS1maWVsZC1kZWZpbml0aW9uXCI7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwXCI7XHJcblxyXG4vKipcclxuICogR2V0cyBwb3BlcnRpZXMgZGVjb2FyYXRlZCB3aXRoIEBGb3JtRmllbGQgZ3JvdXBlZCBieSByb3dcclxuICogQHBhcmFtIG9yaWdpbiBcclxuICogQHJldHVybnMgXHJcbiAqIEBkZXByZWNhdGVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUdyb3Vwc09sZChvcmlnaW46IG9iamVjdCk6IEZvcm1GaWVsZEdyb3VwW10ge1xyXG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgb3JpZ2luKSBhcyBGb3JtRmllbGRHcm91cFtdO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyBwb3BlcnRpZXMgZGVjb2FyYXRlZCB3aXRoIEBGb3JtRmllbGQgZ3JvdXBlZCBieSByb3dcclxuICogQHBhcmFtIG9yaWdpbiBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUdyb3VwcyhvcmlnaW46IG9iamVjdCk6IEZvcm1GaWVsZEdyb3VwW10ge1xyXG4gICAgY29uc3QgZ3JvdXBlZCA9IFV0aWxzLmdyb3VwQXJyYXlCeShSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIG9yaWdpbikgYXMgRm9ybUZpZWxkRGVmaW5pdGlvbltdLCB4ID0+IHguZ3JvdXBOYW1lKTtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWQpLm1hcCgoW18sIHZhbHVlXSkgPT4gbmV3IEZvcm1GaWVsZEdyb3VwKHtcclxuICAgICAgICBuYW1lOiB2YWx1ZVswXS5ncm91cE5hbWUgfHwgbnVsbCxcclxuICAgICAgICBoZWFkZXI6IHZhbHVlWzBdLmdyb3VwSGVhZGVyLFxyXG4gICAgICAgIGZpZWxkczogdmFsdWUsXHJcbiAgICAgICAgZ3JvdXBzOiAoT2JqZWN0LnZhbHVlcygodmFsdWUpLnJlZHVjZShmdW5jdGlvbiAocjogW0Zvcm1GaWVsZERlZmluaXRpb25bXV0sIGE6IEZvcm1GaWVsZERlZmluaXRpb24pIHtcclxuICAgICAgICAgICAgclthLnJvd10gPSAoclthLnJvd10gfHwgW10pO1xyXG4gICAgICAgICAgICByW2Eucm93XS5wdXNoKGEpO1xyXG4gICAgICAgICAgICByW2Eucm93XS5mb3JFYWNoKCh4LCBpKSA9PiB4LmluZGV4ID0geC5pbmRleCB8fCBpKTtcclxuICAgICAgICAgICAgVXRpbHMuc29ydEFycmF5KHJbYS5yb3ddLCAnaW5kZXgnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSkpIGFzIFtGb3JtRmllbGREZWZpbml0aW9uW11dKVxyXG4gICAgfSkpO1xyXG59Il19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBYztJQUMzQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUErQixDQUFDO0FBQ2hHLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxNQUFjO0lBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQTBCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHdCQUF3QixDQUFDO1FBQ3hFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUk7UUFDaEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQzVCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlO1FBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1FBQ3RDLE1BQU0sRUFBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBMEIsRUFBRSxDQUFzQjtZQUM5RixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDO2dCQUN6QixPQUFPLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQTZCO0tBQ3ZELENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWxzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHNcIjtcclxuaW1wb3J0IHsgZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvblwiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cERlZmluaXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXAtZGVmaW5pdGlvblwiO1xyXG5cclxuLyoqXHJcbiAqIEdldHMgcG9wZXJ0aWVzIGRlY29hcmF0ZWQgd2l0aCBARm9ybUZpZWxkIGdyb3VwZWQgYnkgcm93XHJcbiAqIEBwYXJhbSBvcmlnaW4gXHJcbiAqIEByZXR1cm5zIFxyXG4gKiBAZGVwcmVjYXRlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1Hcm91cHNPbGQob3JpZ2luOiBvYmplY3QpOiBGb3JtRmllbGRHcm91cERlZmluaXRpb25bXSB7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBvcmlnaW4pIGFzIEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyBwb3BlcnRpZXMgZGVjb2FyYXRlZCB3aXRoIEBGb3JtRmllbGQgZ3JvdXBlZCBieSByb3dcclxuICogQHBhcmFtIG9yaWdpbiBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUdyb3VwczxUPihvcmlnaW46IG9iamVjdCk6IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdIHtcclxuICAgIGNvbnN0IGdyb3VwZWQgPSBVdGlscy5ncm91cEFycmF5QnkoUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBvcmlnaW4pIGFzIEZvcm1GaWVsZERlZmluaXRpb25bXSwgeCA9PiB4Lmdyb3VwTmFtZSk7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShncm91cGVkKS5tYXAoKFtfLCB2YWx1ZV0pID0+IG5ldyBGb3JtRmllbGRHcm91cERlZmluaXRpb24oe1xyXG4gICAgICAgIG5hbWU6IHZhbHVlWzBdLmdyb3VwTmFtZSB8fCBudWxsLFxyXG4gICAgICAgIGhlYWRlcjogdmFsdWVbMF0uZ3JvdXBIZWFkZXIsXHJcbiAgICAgICAgZmllbGRzOiB2YWx1ZSxcclxuICAgICAgICB0eXBlOiB2YWx1ZVswXS5ncm91cE9iamVjdFR5cGUsXHJcbiAgICAgICAgaW5zdGFuY2U6IHZhbHVlWzBdLmdyb3VwT2JqZWN0SW5zdGFuY2UsXHJcbiAgICAgICAgZ3JvdXBzOiAoT2JqZWN0LnZhbHVlcygodmFsdWUpLnJlZHVjZShmdW5jdGlvbiAocjogW0Zvcm1GaWVsZERlZmluaXRpb25bXV0sIGE6IEZvcm1GaWVsZERlZmluaXRpb24pIHtcclxuICAgICAgICAgICAgclthLnJvd10gPSAoclthLnJvd10gfHwgW10pO1xyXG4gICAgICAgICAgICByW2Eucm93XS5wdXNoKGEpO1xyXG4gICAgICAgICAgICByW2Eucm93XS5mb3JFYWNoKCh4LCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB4LmluZGV4ID0geC5pbmRleCB8fCBpO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHguZ3JvdXBPYmplY3RUeXBlO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHguZ3JvdXBPYmplY3RJbnN0YW5jZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFV0aWxzLnNvcnRBcnJheShyW2Eucm93XSwgJ2luZGV4Jyk7XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpKSBhcyBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXSlcclxuICAgIH0pKTtcclxufSJdfQ==
@@ -16,4 +16,4 @@ export class FormFieldDefinition {
16
16
  Object.assign(this, init);
17
17
  }
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sbUJBQW1CO0lBMkM1Qjs7O09BR0c7SUFDSCxZQUFtQixJQUFtQztRQTNDL0MsZ0JBQVcsR0FBWSxTQUFTLENBQUEsb0JBQW9CLENBQUM7UUFLckQsY0FBUyxHQUFZLE1BQU0sQ0FBQztRQUk1QixnQkFBVyxHQUFjLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6RCxnQkFBVyxHQUFZLFFBQVEsQ0FBQztRQUdoQyxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBWSxNQUFNLENBQUM7UUFRN0IsYUFBUSxHQUFZLE1BQU0sQ0FBQztRQUUzQixxQkFBZ0IsR0FBWSxNQUFNLENBQUM7UUFtQnRDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1ZmZpeEJ1dHRvbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3N1ZmZpeC1idXR0b25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZSB9IGZyb20gXCIuLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGREZWZpbml0aW9uIHtcclxuICAgIHB1YmxpYyByb3c6IG51bWJlcjtcclxuICAgIHB1YmxpYyBpbmRleD86IG51bWJlcjtcclxuICAgIHB1YmxpYyBncm91cE5hbWU/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZ3JvdXBIZWFkZXI/OiBzdHJpbmcgPSAkbG9jYWxpemVgOkBAZGV0YWlsczpEZXRhaWxzYDtcclxuICAgIHB1YmxpYyBuYW1lPzogc3RyaW5nO1xyXG4gICAgcHVibGljIGhlYWRlcj86IHN0cmluZztcclxuICAgIHB1YmxpYyBoaW50Pzogc3RyaW5nO1xyXG4gICAgcHVibGljIHR5cGU/OiBGb3JtRmllbGRUeXBlO1xyXG4gICAgcHVibGljIGlucHV0VHlwZT86IHN0cmluZyA9ICd0ZXh0JztcclxuICAgIHB1YmxpYyBlbnVtVHlwZT86IGFueTtcclxuICAgIHB1YmxpYyBlbmRwb2ludD86IHN0cmluZztcclxuICAgIHB1YmxpYyBtYXBwZXI/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyBjb21wYXJlV2l0aD86IEZ1bmN0aW9uID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuICAgIHB1YmxpYyBzZWFyY2hGaWVsZD86IHN0cmluZyA9ICdzZWFyY2gnO1xyXG4gICAgcHVibGljIHByb2plY3Rpb24/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcGFyYW1zPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgbXVsdGlwbGU/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgb3B0aW9uVmFsdWU/OiBzdHJpbmcgPSAnaWQnO1xyXG4gICAgcHVibGljIG9wdGlvblRleHQ/OiBzdHJpbmcgPSAnbmFtZSc7XHJcbiAgICBwdWJsaWMgb3B0aW9uVGVtcGxhdGU/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyB0cmlnZ2VyVGVtcGxhdGU/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyBzZWxlY3Q/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyBpdGVtU2VsZWN0PzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY2hhbmdlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgaXRlbUNoYW5nZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIGNsZWFyPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY2hpcFRleHQ/OiBzdHJpbmcgPSAnbmFtZSc7XHJcbiAgICBwdWJsaWMgY2hpcFRlbXBsYXRlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVGV4dD86IHN0cmluZyA9ICduYW1lJztcclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVUZW1wbGF0ZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIG9wdGlvbnM/OiB7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W107XHJcbiAgICBwdWJsaWMgZmlsZVBhdGg/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaXNQdWJsaWNGaWxlPzogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBmaWxlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIGZsZXg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcm93cz86IG51bWJlcjtcclxuICAgIHB1YmxpYyBtaW5MZW5ndGg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgcHVibGljIHJlYWRvbmx5PzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgaGlkZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIHN1ZmZpeEJ1dHRvbnM/OiBTdWZmaXhCdXR0b25bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gaW5pdCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGluaXQ/OiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb24+KSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcclxuICAgIH1cclxufSJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sbUJBQW1CO0lBNkM1Qjs7O09BR0c7SUFDSCxZQUFtQixJQUFtQztRQTdDL0MsZ0JBQVcsR0FBWSxTQUFTLENBQUEsb0JBQW9CLENBQUM7UUFPckQsY0FBUyxHQUFZLE1BQU0sQ0FBQztRQUk1QixnQkFBVyxHQUFjLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6RCxnQkFBVyxHQUFZLFFBQVEsQ0FBQztRQUdoQyxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBWSxNQUFNLENBQUM7UUFRN0IsYUFBUSxHQUFZLE1BQU0sQ0FBQztRQUUzQixxQkFBZ0IsR0FBWSxNQUFNLENBQUM7UUFtQnRDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1ZmZpeEJ1dHRvbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3N1ZmZpeC1idXR0b25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZSB9IGZyb20gXCIuLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGREZWZpbml0aW9uIHtcclxuICAgIHB1YmxpYyByb3c6IG51bWJlcjtcclxuICAgIHB1YmxpYyBpbmRleD86IG51bWJlcjtcclxuICAgIHB1YmxpYyBncm91cE5hbWU/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZ3JvdXBIZWFkZXI/OiBzdHJpbmcgPSAkbG9jYWxpemVgOkBAZGV0YWlsczpEZXRhaWxzYDtcclxuICAgIHB1YmxpYyBncm91cE9iamVjdFR5cGU/OiBhbnk7XHJcbiAgICBwdWJsaWMgZ3JvdXBPYmplY3RJbnN0YW5jZT86IG9iamVjdDtcclxuICAgIHB1YmxpYyBuYW1lPzogc3RyaW5nO1xyXG4gICAgcHVibGljIGhlYWRlcj86IHN0cmluZztcclxuICAgIHB1YmxpYyBoaW50Pzogc3RyaW5nO1xyXG4gICAgcHVibGljIHR5cGU/OiBGb3JtRmllbGRUeXBlO1xyXG4gICAgcHVibGljIGlucHV0VHlwZT86IHN0cmluZyA9ICd0ZXh0JztcclxuICAgIHB1YmxpYyBlbnVtVHlwZT86IGFueTtcclxuICAgIHB1YmxpYyBlbmRwb2ludD86IHN0cmluZztcclxuICAgIHB1YmxpYyBtYXBwZXI/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyBjb21wYXJlV2l0aD86IEZ1bmN0aW9uID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuICAgIHB1YmxpYyBzZWFyY2hGaWVsZD86IHN0cmluZyA9ICdzZWFyY2gnO1xyXG4gICAgcHVibGljIHByb2plY3Rpb24/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcGFyYW1zPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgbXVsdGlwbGU/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgb3B0aW9uVmFsdWU/OiBzdHJpbmcgPSAnaWQnO1xyXG4gICAgcHVibGljIG9wdGlvblRleHQ/OiBzdHJpbmcgPSAnbmFtZSc7XHJcbiAgICBwdWJsaWMgb3B0aW9uVGVtcGxhdGU/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyB0cmlnZ2VyVGVtcGxhdGU/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyBzZWxlY3Q/OiBGdW5jdGlvbjtcclxuICAgIHB1YmxpYyBpdGVtU2VsZWN0PzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY2hhbmdlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgaXRlbUNoYW5nZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIGNsZWFyPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY2hpcFRleHQ/OiBzdHJpbmcgPSAnbmFtZSc7XHJcbiAgICBwdWJsaWMgY2hpcFRlbXBsYXRlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVGV4dD86IHN0cmluZyA9ICduYW1lJztcclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVUZW1wbGF0ZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIG9wdGlvbnM/OiB7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W107XHJcbiAgICBwdWJsaWMgZmlsZVBhdGg/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaXNQdWJsaWNGaWxlPzogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBmaWxlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIGZsZXg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcm93cz86IG51bWJlcjtcclxuICAgIHB1YmxpYyBtaW5MZW5ndGg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgcHVibGljIHJlYWRvbmx5PzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgaGlkZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIHN1ZmZpeEJ1dHRvbnM/OiBTdWZmaXhCdXR0b25bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gaW5pdCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGluaXQ/OiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb24+KSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,12 @@
1
+ export class FormFieldGroupDefinition {
2
+ /**
3
+ * constructor
4
+ * @param init
5
+ */
6
+ constructor(init) {
7
+ this.name = 'details';
8
+ this.fields = [];
9
+ Object.assign(this, init);
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1ncm91cC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXAtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sd0JBQXdCO0lBUWpDOzs7T0FHRztJQUNILFlBQW1CLElBQXdDO1FBWHBELFNBQUksR0FBVyxTQUFTLENBQUM7UUFFekIsV0FBTSxHQUEwQixFQUFFLENBQUM7UUFVdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tIFwiLi9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRHcm91cERlZmluaXRpb24ge1xyXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9ICdkZXRhaWxzJztcclxuICAgIHB1YmxpYyBoZWFkZXI/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZmllbGRzOiBGb3JtRmllbGREZWZpbml0aW9uW10gPSBbXTtcclxuICAgIHB1YmxpYyBncm91cHM6IFtGb3JtRmllbGREZWZpbml0aW9uW11dO1xyXG4gICAgcHVibGljIHR5cGU/OiBUeXBlPGFueT47XHJcbiAgICBwdWJsaWMgaW5zdGFuY2U/OiBvYmplY3Q7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluaXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxGb3JtRmllbGRHcm91cERlZmluaXRpb24+KSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcclxuICAgIH1cclxufSJdfQ==
@@ -5,7 +5,7 @@ import { HttpParams, HttpClient, HttpRequest, HttpHeaders, HttpEventType, HttpRe
5
5
  import * as i0 from '@angular/core';
6
6
  import { Directive, Input, Pipe, HostListener, Component, NgModule, Injectable, Injector, ViewEncapsulation, COMPILER_OPTIONS, CompilerFactory, Compiler, ContentChildren, Optional, SkipSelf, NgZone, ElementRef, ViewChildren, ViewChild, forwardRef, ContentChild, EventEmitter, ViewContainerRef, Output, LOCALE_ID, Inject, HostBinding, Self, Attribute, SecurityContext } from '@angular/core';
7
7
  import * as i1 from '@angular/forms';
8
- import { FormControlName, FormControlDirective, FormGroup as FormGroup$1, NG_VALUE_ACCESSOR, FormArray, FormControl, NG_ASYNC_VALIDATORS, NG_VALIDATORS, AbstractControl, FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
8
+ import { FormControlName, FormControlDirective, FormGroup, NG_VALUE_ACCESSOR, FormArray, FormControl, NG_ASYNC_VALIDATORS, NG_VALIDATORS, AbstractControl, FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
9
  import * as i1$2 from '@angular/material/dialog';
10
10
  import { MatDialogConfig, MatDialog, MatDialogModule } from '@angular/material/dialog';
11
11
  import { MatExpansionPanel } from '@angular/material/expansion';
@@ -3136,7 +3136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
3136
3136
 
3137
3137
  const formFieldGroupMetadataKey = Symbol('vdFormFieldGroup');
3138
3138
 
3139
- class FormFieldGroup {
3139
+ class FormFieldGroupDefinition {
3140
3140
  /**
3141
3141
  * constructor
3142
3142
  * @param init
@@ -3164,14 +3164,20 @@ function getFormGroupsOld(origin) {
3164
3164
  */
3165
3165
  function getFormGroups(origin) {
3166
3166
  const grouped = Utils.groupArrayBy(Reflect.getMetadata(formFieldGroupMetadataKey, origin), x => x.groupName);
3167
- return Array.from(grouped).map(([_, value]) => new FormFieldGroup({
3167
+ return Array.from(grouped).map(([_, value]) => new FormFieldGroupDefinition({
3168
3168
  name: value[0].groupName || null,
3169
3169
  header: value[0].groupHeader,
3170
3170
  fields: value,
3171
+ type: value[0].groupObjectType,
3172
+ instance: value[0].groupObjectInstance,
3171
3173
  groups: Object.values((value).reduce(function (r, a) {
3172
3174
  r[a.row] = (r[a.row] || []);
3173
3175
  r[a.row].push(a);
3174
- r[a.row].forEach((x, i) => x.index = x.index || i);
3176
+ r[a.row].forEach((x, i) => {
3177
+ x.index = x.index || i;
3178
+ delete x.groupObjectType;
3179
+ delete x.groupObjectInstance;
3180
+ });
3175
3181
  Utils.sortArray(r[a.row], 'index');
3176
3182
  return r;
3177
3183
  }, Object.create(null)))
@@ -3478,12 +3484,14 @@ class GenericFormBaseComponent extends BaseComponent {
3478
3484
  validateForm(form = null) {
3479
3485
  var form = form || this.form;
3480
3486
  /* Set the form as submitted */
3481
- if (form && form instanceof FormGroup$1) {
3487
+ if (form && form instanceof FormGroup) {
3482
3488
  /* Set form as submitted */
3483
3489
  form['submitted'] = true;
3484
3490
  /* Update value and validity */
3485
3491
  form.updateValueAndValidity();
3486
3492
  }
3493
+ /* Print some debug information */
3494
+ this.debugForm(form);
3487
3495
  }
3488
3496
  /**
3489
3497
  * Validates the form
@@ -3491,9 +3499,7 @@ class GenericFormBaseComponent extends BaseComponent {
3491
3499
  */
3492
3500
  isFormValid(form = null) {
3493
3501
  /* Print some debug information */
3494
- if (this.debug) {
3495
- this.debugForm(form);
3496
- }
3502
+ this.debugForm(form);
3497
3503
  /* If the form ist not valid.. */
3498
3504
  if (!form.valid) {
3499
3505
  /* Mark invalid controls as dirtty and touched */
@@ -3568,15 +3574,17 @@ class GenericFormBaseComponent extends BaseComponent {
3568
3574
  * @param form
3569
3575
  */
3570
3576
  debugForm(form = null) {
3571
- console.log('Form:', form);
3572
- Object.keys(form.controls).forEach(key => {
3573
- const controlErrors = form.controls[key].errors;
3574
- if (controlErrors != null) {
3575
- Object.keys(controlErrors).forEach(keyError => {
3576
- console.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);
3577
- });
3578
- }
3579
- });
3577
+ if (this.debug) {
3578
+ console.log('Form:', form);
3579
+ Object.keys(form.controls).forEach(key => {
3580
+ const controlErrors = form.controls[key].errors;
3581
+ if (controlErrors != null) {
3582
+ Object.keys(controlErrors).forEach(keyError => {
3583
+ console.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);
3584
+ });
3585
+ }
3586
+ });
3587
+ }
3580
3588
  }
3581
3589
  /**
3582
3590
  * Add toolbar menu items
@@ -7012,10 +7020,10 @@ function isResetControl(controlName, control, options) {
7012
7020
  isReset = control instanceof FormControl;
7013
7021
  break;
7014
7022
  case ResetFormType.ControlsAndFormGroupsOnly:
7015
- isReset = control instanceof FormControl || control instanceof FormGroup$1;
7023
+ isReset = control instanceof FormControl || control instanceof FormGroup;
7016
7024
  break;
7017
7025
  case ResetFormType.FormGroupsOnly:
7018
- isReset = control instanceof FormGroup$1;
7026
+ isReset = control instanceof FormGroup;
7019
7027
  break;
7020
7028
  case ResetFormType.FormArraysOnly:
7021
7029
  isReset = control instanceof FormArray;
@@ -7056,7 +7064,7 @@ function getNestedOptions(controlName, options) {
7056
7064
  return undefined;
7057
7065
  }
7058
7066
 
7059
- class RxFormGroup extends FormGroup$1 {
7067
+ class RxFormGroup extends FormGroup {
7060
7068
  constructor(model, entityObject, controls, validatorOrOpts, asyncValidator) {
7061
7069
  super(controls, validatorOrOpts, asyncValidator);
7062
7070
  this.model = model;
@@ -7123,7 +7131,7 @@ class RxFormGroup extends FormGroup$1 {
7123
7131
  let isDirty = false;
7124
7132
  for (let name in this.value) {
7125
7133
  let currentValue = this.modelInstance[name];
7126
- if (!(this.controls[name] instanceof FormGroup$1 || this.controls[name] instanceof FormArray)) {
7134
+ if (!(this.controls[name] instanceof FormGroup || this.controls[name] instanceof FormArray)) {
7127
7135
  isDirty = ApplicationUtil.notEqualTo(this.baseObject[name], currentValue);
7128
7136
  }
7129
7137
  else if (this.controls[name] instanceof RxFormGroup)
@@ -7142,7 +7150,7 @@ class RxFormGroup extends FormGroup$1 {
7142
7150
  resetForm(options) {
7143
7151
  for (let name in this.controls) {
7144
7152
  if (isResetControl(name, this.controls[name], options)) {
7145
- if (this.controls[name] instanceof FormGroup$1)
7153
+ if (this.controls[name] instanceof FormGroup)
7146
7154
  this.controls[name].resetForm(getNestedOptions(name, options));
7147
7155
  else if (this.controls[name] instanceof FormArray) {
7148
7156
  this.controls[name].resetForm(options && options.value ? options.value[name] : undefined);
@@ -7158,7 +7166,7 @@ class RxFormGroup extends FormGroup$1 {
7158
7166
  }
7159
7167
  commit() {
7160
7168
  for (let name in this.controls) {
7161
- if (this.controls[name] instanceof FormGroup$1)
7169
+ if (this.controls[name] instanceof FormGroup)
7162
7170
  this.controls[name].commit();
7163
7171
  else if (this.controls[name] instanceof FormArray) {
7164
7172
  this.controls[name].commit();
@@ -7189,7 +7197,7 @@ class RxFormGroup extends FormGroup$1 {
7189
7197
  getErrorSummary(onlyMessage) {
7190
7198
  let jObject = {};
7191
7199
  Object.keys(this.controls).forEach(columnName => {
7192
- if (this.controls[columnName] instanceof FormGroup$1) {
7200
+ if (this.controls[columnName] instanceof FormGroup) {
7193
7201
  let error = this.controls[columnName].getErrorSummary(false);
7194
7202
  if (Object.keys(error).length > 0)
7195
7203
  jObject[columnName] = error;
@@ -7222,7 +7230,7 @@ class RxFormGroup extends FormGroup$1 {
7222
7230
  }
7223
7231
  valueChangedSync() {
7224
7232
  Object.keys(this.controls).forEach(columnName => {
7225
- if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup$1 || this.controls[columnName] instanceof RxFormGroup) && !(this.entityObject[columnName] instanceof FormControl || this.entityObject[columnName] instanceof RxFormControl) && this.controls[columnName].getControlValue && ApplicationUtil.notEqualTo(this.controls[columnName].getControlValue(), this.entityObject[columnName])) {
7233
+ if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup) && !(this.entityObject[columnName] instanceof FormControl || this.entityObject[columnName] instanceof RxFormControl) && this.controls[columnName].getControlValue && ApplicationUtil.notEqualTo(this.controls[columnName].getControlValue(), this.entityObject[columnName])) {
7226
7234
  this.controls[columnName].setValue(this.entityObject[columnName], { updateChanged: true });
7227
7235
  }
7228
7236
  else if ((this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray)) {
@@ -7237,7 +7245,7 @@ class RxFormGroup extends FormGroup$1 {
7237
7245
  }
7238
7246
  refreshDisable() {
7239
7247
  Object.keys(this.controls).forEach(columnName => {
7240
- if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup$1 || this.controls[columnName] instanceof RxFormGroup)) {
7248
+ if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup)) {
7241
7249
  this.controls[columnName].refresh();
7242
7250
  }
7243
7251
  else if ((this.controls[columnName] instanceof RxFormGroup)) {
@@ -7247,7 +7255,7 @@ class RxFormGroup extends FormGroup$1 {
7247
7255
  }
7248
7256
  bindErrorMessages() {
7249
7257
  Object.keys(this.controls).forEach(columnName => {
7250
- if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup$1 || this.controls[columnName] instanceof RxFormGroup)) {
7258
+ if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup)) {
7251
7259
  this.controls[columnName].bindError();
7252
7260
  }
7253
7261
  else if ((this.controls[columnName] instanceof RxFormGroup)) {
@@ -7266,7 +7274,7 @@ class RxFormGroup extends FormGroup$1 {
7266
7274
  for (let formGroup of formArray.controls)
7267
7275
  formGroup.submitted = value;
7268
7276
  }
7269
- else if (this.controls[columnName] instanceof FormGroup$1) {
7277
+ else if (this.controls[columnName] instanceof FormGroup) {
7270
7278
  this.controls[columnName].submitted = value;
7271
7279
  }
7272
7280
  else
@@ -7303,7 +7311,7 @@ class RxFormGroup extends FormGroup$1 {
7303
7311
  setBackEndErrors(errors) {
7304
7312
  Object.keys(errors).forEach(controlName => {
7305
7313
  if (this.controls[controlName]) {
7306
- if (this.controls[controlName] instanceof FormGroup$1)
7314
+ if (this.controls[controlName] instanceof FormGroup)
7307
7315
  this.controls[controlName].setBackEndErrors(errors[controlName]);
7308
7316
  else
7309
7317
  this.controls[controlName].setBackEndErrors(errors[controlName]);
@@ -7314,7 +7322,7 @@ class RxFormGroup extends FormGroup$1 {
7314
7322
  let clearErrors = errors ? Object.keys(errors) : Object.keys(this.controls);
7315
7323
  clearErrors.forEach(controlName => {
7316
7324
  if (this.controls[controlName]) {
7317
- if (this.controls[controlName] instanceof FormGroup$1)
7325
+ if (this.controls[controlName] instanceof FormGroup)
7318
7326
  errors ? this.controls[controlName].clearBackEndErrors(errors[controlName]) : this.controls[controlName].clearBackEndErrors();
7319
7327
  else
7320
7328
  errors ? this.controls[controlName].clearBackEndErrors(errors[controlName]) : this.controls[controlName].clearBackEndErrors();
@@ -9504,7 +9512,7 @@ class RxwebFormDirective extends BaseDirective {
9504
9512
  }
9505
9513
  updateValueAndValidity(controls) {
9506
9514
  Object.keys(controls).forEach(key => {
9507
- if (controls[key] instanceof FormGroup$1)
9515
+ if (controls[key] instanceof FormGroup)
9508
9516
  this.updateValueAndValidity(controls[key].controls);
9509
9517
  else if (controls[key] instanceof FormArray)
9510
9518
  this.updateValueAndValidity(controls[key].controls);
@@ -9541,7 +9549,7 @@ class RxwebFormDirective extends BaseDirective {
9541
9549
  }
9542
9550
  });
9543
9551
  }
9544
- else if (formControl instanceof FormGroup$1) {
9552
+ else if (formControl instanceof FormGroup) {
9545
9553
  this.expressionProcessor(formControl.controls, `${fieldName}.`);
9546
9554
  }
9547
9555
  else if (formControl instanceof FormArray) {
@@ -9558,7 +9566,7 @@ class RxwebFormDirective extends BaseDirective {
9558
9566
  if (this.validationRule.conditionalValidationProps && this.validationRule.conditionalValidationProps[fieldName]) {
9559
9567
  controls[fieldName][CONDITIONAL_VALIDATOR] = conditionalChangeValidator(this.validationRule.conditionalValidationProps[fieldName]);
9560
9568
  }
9561
- else if (controls[fieldName] instanceof FormGroup$1 && this.validationRule.conditionalObjectProps) {
9569
+ else if (controls[fieldName] instanceof FormGroup && this.validationRule.conditionalObjectProps) {
9562
9570
  var fields = this.validationRule.conditionalObjectProps.filter(t => t.objectPropName == fieldName);
9563
9571
  let nestedFormGroup = controls[fieldName];
9564
9572
  let propWiseConditionalControls = {};
@@ -11025,10 +11033,10 @@ class RxFormBuilder extends BaseFormBuilder {
11025
11033
  }
11026
11034
  else if (typeof prop == OBJECT_STRING && !(prop instanceof FormControl || prop instanceof RxFormControl)) {
11027
11035
  let formGroup = (prop instanceof FormArray) ? prop.controls[0] : prop;
11028
- if (!formGroup.model && (prop instanceof FormGroup$1 || prop instanceof RxFormGroup)) {
11036
+ if (!formGroup.model && (prop instanceof FormGroup || prop instanceof RxFormGroup)) {
11029
11037
  formGroup = this.group(formGroup.controls);
11030
11038
  }
11031
- if (prop instanceof FormGroup$1 || prop instanceof RxFormGroup) {
11039
+ if (prop instanceof FormGroup || prop instanceof RxFormGroup) {
11032
11040
  entityObject[propName] = prop;
11033
11041
  defaultContainer.initPropertyObject(propName, OBJECT_PROPERTY, formGroup.model, modelInstance);
11034
11042
  }
@@ -11169,7 +11177,7 @@ class RxFormBuilder extends BaseFormBuilder {
11169
11177
  break;
11170
11178
  case OBJECT_PROPERTY:
11171
11179
  let objectValue = entityObject[property.name];
11172
- if (objectValue && objectValue instanceof Object && !(objectValue instanceof FormGroup$1 || objectValue instanceof RxFormGroup)) {
11180
+ if (objectValue && objectValue instanceof Object && !(objectValue instanceof FormGroup || objectValue instanceof RxFormGroup)) {
11173
11181
  this.isNestedBinding = this.isNested = true;
11174
11182
  if (instanceContainer && instanceContainer.conditionalObjectProps)
11175
11183
  this.conditionalObjectProps = instanceContainer.conditionalObjectProps.filter(t => t.objectPropName == property.name);
@@ -11184,7 +11192,7 @@ class RxFormBuilder extends BaseFormBuilder {
11184
11192
  this.builderConfigurationConditionalObjectProps = [];
11185
11193
  this.isNestedBinding = this.isNested = false;
11186
11194
  }
11187
- else if (objectValue instanceof FormGroup$1 || objectValue instanceof RxFormGroup)
11195
+ else if (objectValue instanceof FormGroup || objectValue instanceof RxFormGroup)
11188
11196
  formGroupObject[property.name] = objectValue;
11189
11197
  break;
11190
11198
  case ARRAY_PROPERTY:
@@ -14604,7 +14612,7 @@ function FormFieldOld(args) {
14604
14612
  }
14605
14613
  /* Create a new group */
14606
14614
  else {
14607
- group = new FormFieldGroup({ name: formField.groupName || null, header: formField.groupHeader, fields: [formField] });
14615
+ group = new FormFieldGroupDefinition({ name: formField.groupName || null, header: formField.groupHeader, fields: [formField] });
14608
14616
  formFieldGroups.push(group);
14609
14617
  }
14610
14618
  /* Sort the fields by row */
@@ -14686,42 +14694,32 @@ function FormField(args) {
14686
14694
  }
14687
14695
  /**
14688
14696
  * Property decorator to create form fields
14689
- * @param args
14697
+ * @param type
14698
+ * @param header
14699
+ * @param init
14690
14700
  * @returns
14691
14701
  */
14692
- function FormGroup(type, header, name) {
14702
+ function FormFieldGroup(type, header, init) {
14693
14703
  return function (target, propertyKey) {
14694
14704
  var _a;
14695
- /* Set proprety name as group name, if empty */
14696
- name || (name = propertyKey);
14705
+ /* Create an instance of the group object */
14706
+ var instance = Reflect.construct(type, []);
14697
14707
  /* Get from groups */
14698
- var groups = getFormGroups(Reflect.construct(type, []));
14699
- /* Get all fields */
14700
- var fields = groups.map(x => x.fields).reduce((a, b) => a.concat(b), []) || [];
14701
- /* Get existing table groups */
14702
- let formFieldGroups = Reflect.getMetadata(formFieldGroupMetadataKey, target) || [];
14703
- /* Get the group */
14704
- var group = formFieldGroups.filter(x => { var _a; return ((_a = x.name) === null || _a === void 0 ? void 0 : _a.trim()) == (name === null || name === void 0 ? void 0 : name.trim()); })[0];
14705
- /* The group already exist, add the fields to it */
14706
- if (group) {
14707
- fields.forEach(x => x.groupName = name);
14708
- group.fields.push(...fields);
14709
- }
14710
- /* Create the new group */
14711
- else {
14712
- group = new FormFieldGroup({ name: name, header: header, fields: fields });
14713
- formFieldGroups.push(group);
14714
- }
14715
- /* Sort the fields by row */
14716
- group.fields = ((_a = group === null || group === void 0 ? void 0 : group.fields) === null || _a === void 0 ? void 0 : _a.sort((a, b) => (a.row || 0 > b.row || 0) ? 1 : ((b.row || 0 > a.row || 0) ? -1 : 0))) || [];
14717
- /* Group the fields */
14718
- group.groups = Object.values((group.fields).reduce(function (r, a) {
14719
- r[a.row] = r[a.row] || [];
14720
- r[a.row].push(a);
14721
- return r;
14722
- }, Object.create(null)));
14723
- /* Add new table column */
14724
- Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);
14708
+ var groups = getFormGroups(instance);
14709
+ /* Get old form fields */
14710
+ const previousFormFields = Reflect.getMetadata(formFieldGroupMetadataKey, target);
14711
+ /* Get the fields from the groups */
14712
+ (_a = groups === null || groups === void 0 ? void 0 : groups.map(x => x.fields)) === null || _a === void 0 ? void 0 : _a.forEach(x => {
14713
+ /* Set the name of the group in the fields */
14714
+ x.forEach(y => {
14715
+ y.groupName = propertyKey;
14716
+ y.groupHeader = header;
14717
+ y.groupObjectType = type;
14718
+ y.groupObjectInstance = init || instance;
14719
+ });
14720
+ /* Create a copy of the result and override the result in the metadata */
14721
+ Reflect.defineMetadata(formFieldGroupMetadataKey, (previousFormFields ? previousFormFields.concat(x) : x), target);
14722
+ });
14725
14723
  };
14726
14724
  }
14727
14725
 
@@ -16954,5 +16952,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
16954
16952
  * Generated bundle index. Do not edit.
16955
16953
  */
16956
16954
 
16957
- export { AbstractMatFormField, ActionMenuItem, Api, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DisableControlDirective, Display, DynamicBuilder, DynamicComponentCompiler, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterPipe, FilterSelectComponent, FirstLetterPipe, FormBuilderConfiguration, FormField, FormFieldDefinition, FormFieldGroup, FormFieldType, FormGroup, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, HtmlControlTemplateDirective, IAbstractControl, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, Menu, MenuItem, MenuItemService, MenuResolve, MenuScope, MenuService, MessageType, MonthNamePipe, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnType, TableDataSource, TableDefinition, TableMenuItem, TableStaticDataSource, TimePipe, TitleCase, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicTableComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormToolbarComponent, VdFormToolbarMenuComponent, VdFormsModule, VdGenericFormComponent, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListToolbarComponent, VdListToolbarMenuComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchBoxComponent, VdSearchInputComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, upperCase, url, urlAsync, whitelist };
16955
+ export { AbstractMatFormField, ActionMenuItem, Api, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DisableControlDirective, Display, DynamicBuilder, DynamicComponentCompiler, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterPipe, FilterSelectComponent, FirstLetterPipe, FormBuilderConfiguration, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, HtmlControlTemplateDirective, IAbstractControl, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, Menu, MenuItem, MenuItemService, MenuResolve, MenuScope, MenuService, MessageType, MonthNamePipe, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnType, TableDataSource, TableDefinition, TableMenuItem, TableStaticDataSource, TimePipe, TitleCase, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicTableComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormToolbarComponent, VdFormToolbarMenuComponent, VdFormsModule, VdGenericFormComponent, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListToolbarComponent, VdListToolbarMenuComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchBoxComponent, VdSearchInputComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, upperCase, url, urlAsync, whitelist };
16958
16956
  //# sourceMappingURL=messaia-cdk.mjs.map