@messaia/cdk 13.3.3-rc05 → 13.3.3-rc06

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.
@@ -61,6 +61,31 @@ export class Utils {
61
61
  let sortDir = reverse === true ? -1 : 1;
62
62
  return array = (array?.sort((a, b) => (a[property] > b[property]) ? sortDir : ((b[property] > a[property]) ? (sortDir * -1) : 0)) || []);
63
63
  }
64
+ /**
65
+ * @description
66
+ * Takes an Array<V>, and a grouping function,
67
+ * and returns a Map of the array grouped by the grouping function.
68
+ *
69
+ * @param list An array of type V.
70
+ * @param keyGetter A Function that takes the the Array type V as an input, and returns a value of type K.
71
+ * K is generally intended to be a property key of V.
72
+ *
73
+ * @returns Map of the array grouped by the grouping function.
74
+ */
75
+ static groupArrayBy(list, keyGetter) {
76
+ const map = new Map();
77
+ list?.forEach((item) => {
78
+ const key = keyGetter(item);
79
+ const collection = map.get(key);
80
+ if (!collection) {
81
+ map.set(key, [item]);
82
+ }
83
+ else {
84
+ collection.push(item);
85
+ }
86
+ });
87
+ return map;
88
+ }
64
89
  /**
65
90
  * Truncates a text
66
91
  * @param text
@@ -158,4 +183,4 @@ Utils.germanMonthNames = [
158
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: Utils, decorators: [{
159
184
  type: Directive
160
185
  }] });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vZnVuY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFPLEtBQUs7SUFvQmQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxJQUFZO1FBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDcEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVUsRUFBRSxXQUFX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QUMsRUFBRTtJQUN4QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN0QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN2QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN6QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUM1QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUMzQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM1QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtDQUM5QixDQUFBO3dJQWxCTyxLQUFLOzRIQUFMLEtBQUs7MkZBQUwsS0FBSztrQkFEakIsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy9AZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vbnRoIG5hbWVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2VybWFuTW9udGhOYW1lczogeyBuYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfVtdID0gW1xyXG4gICAgICAgIHsgbmFtZTogJ0phbnVhcicsIGlkOiAxIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnRmVicnVhcicsIGlkOiAyIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnTcOkcnonLCBpZDogMyB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0FwcmlsJywgaWQ6IDQgfSxcclxuICAgICAgICB7IG5hbWU6ICdNYWknLCBpZDogNSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0p1bmknLCBpZDogNiB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0p1bGknLCBpZDogNyB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0F1Z3VzdCcsIGlkOiA4IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnU2VwdGVtYmVyJywgaWQ6IDkgfSxcclxuICAgICAgICB7IG5hbWU6ICdPa3RvYmVyJywgaWQ6IDEwIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnTm92ZW1iZXInLCBpZDogMTEgfSxcclxuICAgICAgICB7IG5hbWU6ICdEZXplbWJlcicsIGlkOiAxMiB9XHJcbiAgICBdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHJhbmdlXHJcbiAgICAgKiBAcGFyYW0gc2l6ZSBcclxuICAgICAqIEBwYXJhbSBzdGFydEF0IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJhbmdlKHN0YXJ0OiBudW1iZXIsIHN0b3A6IG51bWJlciwgc3RlcDogbnVtYmVyKTogUmVhZG9ubHlBcnJheTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogKHN0b3AgLSBzdGFydCkgLyBzdGVwICsgMSB9LCAoXywgaSkgPT4gc3RhcnQgKyAoaSAqIHN0ZXApKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBlbXB0eSB2YWx1ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIG9iamVjdFxyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVFbXB0eVZhbHVlcyhvYmo6IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iailcclxuICAgICAgICAgICAgLmZpbHRlcigoW18sIHZdKSA9PiB2ICE9IG51bGwpXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgW2ssIHZdKSA9PiAoeyAuLi5hY2MsIFtrXTogdiB9KSwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBudW1iZXIgb2YgZGF5cyBsZWZ0IGluIHRoZSBzcGVjaWZpZWQgbW9udGhcclxuICAgICAqIEBwYXJhbSBkYXRlIFxyXG4gICAgICogQHBhcmFtIG1vbnRoT2Zmc2V0IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGRheXNMZWZ0SW5Nb250aChkYXRlOiBEYXRlLCBtb250aE9mZnNldCA9IDApOiBudW1iZXIge1xyXG4gICAgICAgIHZhciB0aW1lID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgICAgIHRpbWUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbW9udGhPZmZzZXQpO1xyXG4gICAgICAgIHRpbWUuc2V0RGF0ZSgwKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGltZS5nZXREYXRlKCkgPiBkYXRlLmdldERhdGUoKSA/IHRpbWUuZ2V0RGF0ZSgpIC0gZGF0ZS5nZXREYXRlKCkgOiAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZlZCBvYmplY3QgYW5kIHByb3BlcnR5XHJcbiAgICAgKiBAcGFyYW0gb2JqZWN0IFxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5IFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvcGVydHlWYWx1ZShvYmplY3Q6IE9iamVjdCwgcHJvcGVydHk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgLyogUHJvcGVydHkgbm90IGZvdW5kICovXHJcbiAgICAgICAgaWYgKCFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCA9PT0gJ3VuZGVmaW5lZCcgfHwgIXByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogSW5kZXggb2YgbmV4dCBwcm9wZXJ0eSBzcGxpdCAqL1xyXG4gICAgICAgIHZhciBpbmRleCA9IHByb3BlcnR5LmluZGV4T2YoJy4nKVxyXG5cclxuICAgICAgICAvKiBQcm9wZXJ0eSBzcGxpdCBmb3VuZDsgcmVjdXJzaXZlIGNhbGwgKi9cclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKG9iamVjdFtwcm9wZXJ0eS5zdWJzdHJpbmcoMCwgaW5kZXgpXSwgcHJvcGVydHkuc3Vic3RyKGluZGV4ICsgMSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogTm8gc3BsaXQ7IGdldCBwcm9wZXJ0eSAqL1xyXG4gICAgICAgIHJldHVybiBvYmplY3RbcHJvcGVydHldO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU29ydHMgYW4gYXJyYXkgb2Ygb2JqZWN0IGJ5IHRoZSBzcGVjaWZpZWQgcHJvcGVydHlcclxuICAgICAqIEBwYXJhbSBhcnJheSBcclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNvcnRBcnJheTxUPihhcnJheTogVFtdLCBwcm9wZXJ0eTogc3RyaW5nLCByZXZlcnNlPzogYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBzb3J0RGlyID0gcmV2ZXJzZSA9PT0gdHJ1ZSA/IC0xIDogMTtcclxuICAgICAgICByZXR1cm4gYXJyYXkgPSAoYXJyYXk/LnNvcnQoKGE6IFQsIGI6IFQpID0+IChhW3Byb3BlcnR5XSA+IGJbcHJvcGVydHldKSA/IHNvcnREaXIgOiAoKGJbcHJvcGVydHldID4gYVtwcm9wZXJ0eV0pID8gKHNvcnREaXIgKiAtMSkgOiAwKSkgfHwgW10pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJ1bmNhdGVzIGEgdGV4dFxyXG4gICAgICogQHBhcmFtIHRleHQgXHJcbiAgICAgKiBAcGFyYW0gbGVuZ3RoIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUZXh0KHRleHQ6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIC8qIElmIHRleHQgaXMgbm90IGEgc3RyaW5nLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nICovXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZW1vdmUgaHRtbCB0YWdzICovXHJcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xyXG5cclxuICAgICAgICAvKiBUcnVuY2F0ZSB0aGUgc3RyaW5nICovXHJcbiAgICAgICAgbGV0IHRydW5jYXRlZFRleHQ6IHN0cmluZyA9IHRleHQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcblxyXG4gICAgICAgIC8qIEFkZCBlbGxpcHNpcyB0byB0aGUgdGV4dCAqL1xyXG4gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IGxlbmd0aCkge1xyXG4gICAgICAgICAgICB0cnVuY2F0ZWRUZXh0ID0gYCR7dHJ1bmNhdGVkVGV4dC50cmltKCl9Li4uYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVuY2F0ZWRUZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydCBPYmplY3QgdG8gSHR0cFBhcmFtc1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHRvSHR0cFBhcmFtcyhib2R5OiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICBpZiAoIWJvZHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKChrZXkpID0+IChib2R5W2tleV0gPT0gbnVsbCB8fCBib2R5W2tleV0gPT0gJycgfHwgYm9keVtrZXldID09ICd1bmRlZmluZWQnKSAmJiBib2R5W2tleV0gIT0gMCAmJiBkZWxldGUgYm9keVtrZXldKTtcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoeyBmcm9tT2JqZWN0OiBib2R5IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xlYW5zIHRoZSBvYmplY3RzXHJcbiAgICAgKiBSZW1vdmVzIGVtcHR5IHByb3BlcnRpZXNcclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY2xlYW5PYmplY3Qob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIG9iaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkIHx8IG9ialtwcm9wTmFtZV0gPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW3Byb3BOYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHF1ZXJ5IHBhcmFtcyBhbmQgdGhlIGhhc2ggZnJvbSB0aGUgc3BlY2lmaWVkIHVybFxyXG4gICAgICogQHBhcmFtIHVybCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFVybFBhcnRzKHVybDogc3RyaW5nKTogeyB1cmw6IHN0cmluZywgcGFyYW1zOiBPYmplY3QsIGhhc2g6IHN0cmluZyB9IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvKiBHZXQgdXJscyBwYXJ0cyAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsSGFzaFBhcnRzID0gdXJsPy5zcGxpdCgnIycpID8/IFtdO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IGhhc2ggKi9cclxuICAgICAgICAgICAgdmFyIHVybEhhc2ggPSB1cmxIYXNoUGFydHNbMV0gPz8gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCBxdWVyeSBwYXJ0cyAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsUXVlcnlQYXJ0cyA9IHVybEhhc2hQYXJ0c1swXT8uc3BsaXQoJz8nKTtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCBxdWVyeSBwYXJhbXMgYXMgb2JqZWN0ICovXHJcbiAgICAgICAgICAgIHZhciB1cmxQYXJhbXM6IE9iamVjdCA9IHVybFF1ZXJ5UGFydHNbMV0/LnNwbGl0KFwiJlwiKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gY3Vyci5zcGxpdChcIj1cIik7XHJcbiAgICAgICAgICAgICAgICBwcmV2W2RlY29kZVVSSUNvbXBvbmVudChwWzBdKV0gPSBkZWNvZGVVUklDb21wb25lbnQocFsxXSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcclxuICAgICAgICAgICAgfSwge30pID8/IG51bGw7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IHVybFF1ZXJ5UGFydHNbMF0sIHBhcmFtczogdXJsUGFyYW1zLCBoYXNoOiB1cmxIYXNoIH07XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiB1cmwsIHBhcmFtczogbnVsbCwgaGFzaDogbnVsbCB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vZnVuY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFPLEtBQUs7SUFvQmQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxJQUFZO1FBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDcEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVUsRUFBRSxXQUFX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LEtBQUs7a0JBRGpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlscyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb250aCBuYW1lc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdlcm1hbk1vbnRoTmFtZXM6IHsgbmFtZTogc3RyaW5nLCBpZDogbnVtYmVyIH1bXSA9IFtcclxuICAgICAgICB7IG5hbWU6ICdKYW51YXInLCBpZDogMSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0ZlYnJ1YXInLCBpZDogMiB9LFxyXG4gICAgICAgIHsgbmFtZTogJ03DpHJ6JywgaWQ6IDMgfSxcclxuICAgICAgICB7IG5hbWU6ICdBcHJpbCcsIGlkOiA0IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnTWFpJywgaWQ6IDUgfSxcclxuICAgICAgICB7IG5hbWU6ICdKdW5pJywgaWQ6IDYgfSxcclxuICAgICAgICB7IG5hbWU6ICdKdWxpJywgaWQ6IDcgfSxcclxuICAgICAgICB7IG5hbWU6ICdBdWd1c3QnLCBpZDogOCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ1NlcHRlbWJlcicsIGlkOiA5IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnT2t0b2JlcicsIGlkOiAxMCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ05vdmVtYmVyJywgaWQ6IDExIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnRGV6ZW1iZXInLCBpZDogMTIgfVxyXG4gICAgXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSByYW5nZVxyXG4gICAgICogQHBhcmFtIHNpemUgXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRBdCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBzdG9wOiBudW1iZXIsIHN0ZXA6IG51bWJlcik6IFJlYWRvbmx5QXJyYXk8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IChzdG9wIC0gc3RhcnQpIC8gc3RlcCArIDEgfSwgKF8sIGkpID0+IHN0YXJ0ICsgKGkgKiBzdGVwKSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgdmFsdWVzIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RcclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlRW1wdHlWYWx1ZXMob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2XSkgPT4gdiAhPSBudWxsKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIFtrLCB2XSkgPT4gKHsgLi4uYWNjLCBba106IHYgfSksIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbnVtYmVyIG9mIGRheXMgbGVmdCBpbiB0aGUgc3BlY2lmaWVkIG1vbnRoXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEBwYXJhbSBtb250aE9mZnNldCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBkYXlzTGVmdEluTW9udGgoZGF0ZTogRGF0ZSwgbW9udGhPZmZzZXQgPSAwKTogbnVtYmVyIHtcclxuICAgICAgICB2YXIgdGltZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcclxuICAgICAgICB0aW1lLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRoT2Zmc2V0KTtcclxuICAgICAgICB0aW1lLnNldERhdGUoMCk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRpbWUuZ2V0RGF0ZSgpID4gZGF0ZS5nZXREYXRlKCkgPyB0aW1lLmdldERhdGUoKSAtIGRhdGUuZ2V0RGF0ZSgpIDogMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmZWQgb2JqZWN0IGFuZCBwcm9wZXJ0eVxyXG4gICAgICogQHBhcmFtIG9iamVjdCBcclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5VmFsdWUob2JqZWN0OiBPYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIC8qIFByb3BlcnR5IG5vdCBmb3VuZCAqL1xyXG4gICAgICAgIGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnIHx8ICFwcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEluZGV4IG9mIG5leHQgcHJvcGVydHkgc3BsaXQgKi9cclxuICAgICAgICB2YXIgaW5kZXggPSBwcm9wZXJ0eS5pbmRleE9mKCcuJylcclxuXHJcbiAgICAgICAgLyogUHJvcGVydHkgc3BsaXQgZm91bmQ7IHJlY3Vyc2l2ZSBjYWxsICovXHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShvYmplY3RbcHJvcGVydHkuc3Vic3RyaW5nKDAsIGluZGV4KV0sIHByb3BlcnR5LnN1YnN0cihpbmRleCArIDEpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE5vIHNwbGl0OyBnZXQgcHJvcGVydHkgKi9cclxuICAgICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNvcnRzIGFuIGFycmF5IG9mIG9iamVjdCBieSB0aGUgc3BlY2lmaWVkIHByb3BlcnR5XHJcbiAgICAgKiBAcGFyYW0gYXJyYXkgXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzb3J0QXJyYXk8VD4oYXJyYXk6IFRbXSwgcHJvcGVydHk6IHN0cmluZywgcmV2ZXJzZT86IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgc29ydERpciA9IHJldmVyc2UgPT09IHRydWUgPyAtMSA6IDE7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5ID0gKGFycmF5Py5zb3J0KChhOiBULCBiOiBUKSA9PiAoYVtwcm9wZXJ0eV0gPiBiW3Byb3BlcnR5XSkgPyBzb3J0RGlyIDogKChiW3Byb3BlcnR5XSA+IGFbcHJvcGVydHldKSA/IChzb3J0RGlyICogLTEpIDogMCkpIHx8IFtdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogVGFrZXMgYW4gQXJyYXk8Vj4sIGFuZCBhIGdyb3VwaW5nIGZ1bmN0aW9uLFxyXG4gICAgICogYW5kIHJldHVybnMgYSBNYXAgb2YgdGhlIGFycmF5IGdyb3VwZWQgYnkgdGhlIGdyb3VwaW5nIGZ1bmN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBsaXN0IEFuIGFycmF5IG9mIHR5cGUgVi5cclxuICAgICAqIEBwYXJhbSBrZXlHZXR0ZXIgQSBGdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0aGUgQXJyYXkgdHlwZSBWIGFzIGFuIGlucHV0LCBhbmQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgSy5cclxuICAgICAqICAgICAgICAgICAgICAgICAgSyBpcyBnZW5lcmFsbHkgaW50ZW5kZWQgdG8gYmUgYSBwcm9wZXJ0eSBrZXkgb2YgVi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBNYXAgb2YgdGhlIGFycmF5IGdyb3VwZWQgYnkgdGhlIGdyb3VwaW5nIGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdyb3VwQXJyYXlCeTxLLCBWPihsaXN0OiBBcnJheTxWPiwga2V5R2V0dGVyOiAoaW5wdXQ6IFYpID0+IEspOiBNYXA8SywgQXJyYXk8Vj4+IHtcclxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPEssIEFycmF5PFY+PigpO1xyXG4gICAgICAgIGxpc3Q/LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5R2V0dGVyKGl0ZW0pO1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbWFwLmdldChrZXkpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBbaXRlbV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcnVuY2F0ZXMgYSB0ZXh0XHJcbiAgICAgKiBAcGFyYW0gdGV4dCBcclxuICAgICAqIEBwYXJhbSBsZW5ndGggXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyB0cnVuY2F0ZVRleHQodGV4dDogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgLyogSWYgdGV4dCBpcyBub3QgYSBzdHJpbmcsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgKi9cclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJlbW92ZSBodG1sIHRhZ3MgKi9cclxuICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgXCJcIik7XHJcblxyXG4gICAgICAgIC8qIFRydW5jYXRlIHRoZSBzdHJpbmcgKi9cclxuICAgICAgICBsZXQgdHJ1bmNhdGVkVGV4dDogc3RyaW5nID0gdGV4dC5zdWJzdHIoMCwgbGVuZ3RoKTtcclxuXHJcbiAgICAgICAgLyogQWRkIGVsbGlwc2lzIHRvIHRoZSB0ZXh0ICovXHJcbiAgICAgICAgaWYgKHRleHQubGVuZ3RoID4gbGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRydW5jYXRlZFRleHQgPSBgJHt0cnVuY2F0ZWRUZXh0LnRyaW0oKX0uLi5gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydW5jYXRlZFRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwUGFyYW1zXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBib2R5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdG9IdHRwUGFyYW1zKGJvZHk6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2goKGtleSkgPT4gKGJvZHlba2V5XSA9PSBudWxsIHx8IGJvZHlba2V5XSA9PSAnJyB8fCBib2R5W2tleV0gPT0gJ3VuZGVmaW5lZCcpICYmIGJvZHlba2V5XSAhPSAwICYmIGRlbGV0ZSBib2R5W2tleV0pO1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGJvZHkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhbnMgdGhlIG9iamVjdHNcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgcHJvcGVydGllc1xyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjbGVhbk9iamVjdChvYmo6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqW3Byb3BOYW1lXSA9PT0gbnVsbCB8fCBvYmpbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgfHwgb2JqW3Byb3BOYW1lXSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbcHJvcE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcXVlcnkgcGFyYW1zIGFuZCB0aGUgaGFzaCBmcm9tIHRoZSBzcGVjaWZpZWQgdXJsXHJcbiAgICAgKiBAcGFyYW0gdXJsIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VXJsUGFydHModXJsOiBzdHJpbmcpOiB7IHVybDogc3RyaW5nLCBwYXJhbXM6IE9iamVjdCwgaGFzaDogc3RyaW5nIH0ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8qIEdldCB1cmxzIHBhcnRzICovXHJcbiAgICAgICAgICAgIHZhciB1cmxIYXNoUGFydHMgPSB1cmw/LnNwbGl0KCcjJykgPz8gW107XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgaGFzaCAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsSGFzaCA9IHVybEhhc2hQYXJ0c1sxXSA/PyBudWxsO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHF1ZXJ5IHBhcnRzICovXHJcbiAgICAgICAgICAgIHZhciB1cmxRdWVyeVBhcnRzID0gdXJsSGFzaFBhcnRzWzBdPy5zcGxpdCgnPycpO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHF1ZXJ5IHBhcmFtcyBhcyBvYmplY3QgKi9cclxuICAgICAgICAgICAgdmFyIHVybFBhcmFtczogT2JqZWN0ID0gdXJsUXVlcnlQYXJ0c1sxXT8uc3BsaXQoXCImXCIpLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIHAgPSBjdXJyLnNwbGl0KFwiPVwiKTtcclxuICAgICAgICAgICAgICAgIHByZXZbZGVjb2RlVVJJQ29tcG9uZW50KHBbMF0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChwWzFdKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xyXG4gICAgICAgICAgICB9LCB7fSkgPz8gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsUXVlcnlQYXJ0c1swXSwgcGFyYW1zOiB1cmxQYXJhbXMsIGhhc2g6IHVybEhhc2ggfTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IHVybCwgcGFyYW1zOiBudWxsLCBoYXNoOiBudWxsIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -9,7 +9,7 @@ import { getFormGroups } from "./functions";
9
9
  * @param args
10
10
  * @returns
11
11
  */
12
- export function FormField(args) {
12
+ export function FormFieldOld(args) {
13
13
  return function (target, propertyKey) {
14
14
  /* Get property name */
15
15
  var propertyName = args.name || propertyKey;
@@ -85,6 +85,72 @@ export function FormField(args) {
85
85
  Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);
86
86
  };
87
87
  }
88
+ /**
89
+ * Property decorator to create form fields
90
+ * @param args
91
+ * @returns
92
+ */
93
+ export function FormField(args) {
94
+ return function (target, propertyKey) {
95
+ /* Get property name */
96
+ var propertyName = args.name || propertyKey;
97
+ /* Get property type */
98
+ var propertyType = Reflect.getMetadata("design:type", target, propertyKey)?.name;
99
+ /* Create table column */
100
+ var formField = new FormFieldDefinition(Object.assign(args, {
101
+ name: args.name || propertyKey,
102
+ header: args.header || Reflect.getMetadata(headerMetadataKey, target, propertyKey) || propertyName,
103
+ autocompleteTemplate: args.autocompleteTemplate || ((option) => option[formField.autocompleteText]),
104
+ chipTemplate: args.chipTemplate || ((chip) => chip[formField.chipText])
105
+ }));
106
+ /* Type enum */
107
+ if (formField.enumType) {
108
+ formField.type || (formField.type = FormFieldType.Enum);
109
+ }
110
+ /* Type VdSelect */
111
+ else if (formField.endpoint) {
112
+ formField.type || (formField.type = FormFieldType.VdSelect);
113
+ }
114
+ /* Type Select */
115
+ else if (formField.options) {
116
+ formField.type || (formField.type = FormFieldType.Select);
117
+ }
118
+ /* Type TextArea */
119
+ else if (formField.rows) {
120
+ formField.type || (formField.type = FormFieldType.TextArea);
121
+ }
122
+ /* Type File */
123
+ else if (formField.filePath) {
124
+ formField.type || (formField.type = FormFieldType.File);
125
+ }
126
+ /* Other types */
127
+ else {
128
+ switch (propertyType.toLowerCase()) {
129
+ case 'number':
130
+ formField.type || (formField.type = FormFieldType.Text);
131
+ formField.inputType || (formField.inputType = 'number');
132
+ break;
133
+ case 'date':
134
+ formField.type || (formField.type = FormFieldType.Date);
135
+ break;
136
+ case 'boolean':
137
+ formField.type || (formField.type = FormFieldType.Checkbox);
138
+ break;
139
+ default:
140
+ formField.type || (formField.type = FormFieldType.Text);
141
+ break;
142
+ }
143
+ }
144
+ /* Get old form fields */
145
+ const previousFormFields = Reflect.getMetadata(formFieldGroupMetadataKey, target);
146
+ /* Create a copy of the result */
147
+ let formFields = previousFormFields ?
148
+ previousFormFields.concat([formField])?.sort((a, b) => (a.row || 0 > b.row || 0) ? 1 : ((b.row || 0 > a.row || 0) ? -1 : 0)) || [] :
149
+ [formField];
150
+ /* Override the result in the metadata */
151
+ Reflect.defineMetadata(formFieldGroupMetadataKey, formFields, target);
152
+ };
153
+ }
88
154
  /**
89
155
  * Property decorator to create form fields
90
156
  * @param args
@@ -124,4 +190,4 @@ export function FormGroup(type, header, name) {
124
190
  Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);
125
191
  };
126
192
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2Z1bmN0aW9ucy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFrQztJQUN4RCxPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CO1FBQzdDLHVCQUF1QjtRQUN2QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQztRQUU1Qyx1QkFBdUI7UUFDdkIsSUFBSSxZQUFZLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUV6Rix5QkFBeUI7UUFDekIsSUFBSSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBdUI7WUFDN0UsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVztZQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxZQUFZO1lBQ2xHLG9CQUFvQixFQUFFLElB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b3JlXCI7XHJcbmltcG9ydCB7IGhlYWRlck1ldGFkYXRhS2V5IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2Zvcm0tZmllbGQtdHlwZVwiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXBcIjtcclxuaW1wb3J0IHsgZ2V0Rm9ybUdyb3VwcyB9IGZyb20gXCIuL2Z1bmN0aW9uc1wiO1xyXG5cclxuLyoqXHJcbiAqIFByb3BlcnR5IGRlY29yYXRvciB0byBjcmVhdGUgZm9ybSBmaWVsZHNcclxuICogQHBhcmFtIGFyZ3MgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1GaWVsZChhcmdzOiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb24+KTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSBuYW1lICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleTtcclxuXHJcbiAgICAgICAgLyogR2V0IHByb3BlcnR5IHR5cGUgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlUeXBlOiBzdHJpbmcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk/Lm5hbWU7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICB2YXIgZm9ybUZpZWxkID0gbmV3IEZvcm1GaWVsZERlZmluaXRpb24oT2JqZWN0LmFzc2lnbihhcmdzLCA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XHJcbiAgICAgICAgICAgIG5hbWU6IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgaGVhZGVyOiBhcmdzLmhlYWRlciB8fCBSZWZsZWN0LmdldE1ldGFkYXRhKGhlYWRlck1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB8fCBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZVRlbXBsYXRlOiBhcmdzLmF1dG9jb21wbGV0ZVRlbXBsYXRlIHx8ICgob3B0aW9uOiBhbnkpID0+IG9wdGlvbltmb3JtRmllbGQuYXV0b2NvbXBsZXRlVGV4dF0pLFxyXG4gICAgICAgICAgICBjaGlwVGVtcGxhdGU6IGFyZ3MuY2hpcFRlbXBsYXRlIHx8ICgoY2hpcDogYW55KSA9PiBjaGlwW2Zvcm1GaWVsZC5jaGlwVGV4dF0pXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAvKiBUeXBlIGVudW0gKi9cclxuICAgICAgICBpZiAoZm9ybUZpZWxkLmVudW1UeXBlKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkVudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFZkU2VsZWN0ICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlZkU2VsZWN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBTZWxlY3QgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQub3B0aW9ucykge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5TZWxlY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFRleHRBcmVhICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLnJvd3MpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dEFyZWE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIEZpbGUgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmlsZVBhdGgpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRmlsZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE90aGVyIHR5cGVzICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuaW5wdXRUeXBlIHx8PSAnbnVtYmVyJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5EYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkNoZWNrYm94O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGV4aXN0aW5nIHRhYmxlIGdyb3VwcyAqL1xyXG4gICAgICAgIGxldCBmb3JtRmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW10gPSBSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIHRhcmdldCkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgZ3JvdXAgKi9cclxuICAgICAgICB2YXIgZ3JvdXAgPSBmb3JtRmllbGRHcm91cHMuZmlsdGVyKHggPT4geC5uYW1lPy50cmltKCkgPT0gZm9ybUZpZWxkLmdyb3VwTmFtZT8udHJpbSgpKVswXTtcclxuXHJcbiAgICAgICAgLyogVGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzLCBhZGQgdGhlIG5ldyBmb3JtIGZpZWxkICovXHJcbiAgICAgICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgICAgICAgIGdyb3VwLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBDcmVhdGUgYSBuZXcgZ3JvdXAgKi9cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXAgPSBuZXcgRm9ybUZpZWxkR3JvdXAoeyBuYW1lOiBmb3JtRmllbGQuZ3JvdXBOYW1lIHx8IG51bGwsIGhlYWRlcjogZm9ybUZpZWxkLmdyb3VwSGVhZGVyLCBmaWVsZHM6IFtmb3JtRmllbGRdIH0pO1xyXG4gICAgICAgICAgICBmb3JtRmllbGRHcm91cHMucHVzaChncm91cCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTb3J0IHRoZSBmaWVsZHMgYnkgcm93ICovXHJcbiAgICAgICAgZ3JvdXAuZmllbGRzID0gZ3JvdXAuZmllbGRzPy5zb3J0KChhLCBiKSA9PiAoYS5yb3cgfHwgMCA+IGIucm93IHx8IDApID8gMSA6ICgoYi5yb3cgfHwgMCA+IGEucm93IHx8IDApID8gLTEgOiAwKSkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdyb3VwIHRoZSBmaWVsZHMgKi9cclxuICAgICAgICBncm91cC5ncm91cHMgPSBPYmplY3QudmFsdWVzKChncm91cC5maWVsZHMpLnJlZHVjZShmdW5jdGlvbiAociwgYSkge1xyXG4gICAgICAgICAgICByW2Eucm93XSA9IHJbYS5yb3ddIHx8IFtdO1xyXG4gICAgICAgICAgICByW2Eucm93XS5wdXNoKGEpO1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKSkgYXMgW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgICAgIC8qIEFkZCBuZXcgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBmb3JtRmllbGRHcm91cHMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUHJvcGVydHkgZGVjb3JhdG9yIHRvIGNyZWF0ZSBmb3JtIGZpZWxkc1xyXG4gKiBAcGFyYW0gYXJncyBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUdyb3VwPFQ+KHR5cGU6IFR5cGU8VD4sIGhlYWRlcjogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFNldCBwcm9wcmV0eSBuYW1lIGFzIGdyb3VwIG5hbWUsIGlmIGVtcHR5ICovXHJcbiAgICAgICAgbmFtZSB8fD0gcHJvcGVydHlLZXk7XHJcblxyXG4gICAgICAgIC8qIEdldCBmcm9tIGdyb3VwcyAqL1xyXG4gICAgICAgIHZhciBncm91cHMgPSBnZXRGb3JtR3JvdXBzKFJlZmxlY3QuY29uc3RydWN0KHR5cGUsIFtdKSk7XHJcblxyXG4gICAgICAgIC8qIEdldCBhbGwgZmllbGRzICovXHJcbiAgICAgICAgdmFyIGZpZWxkcyA9IGdyb3Vwcy5tYXAoeCA9PiB4LmZpZWxkcykucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pIHx8IFtdO1xyXG5cclxuICAgICAgICAvKiBHZXQgZXhpc3RpbmcgdGFibGUgZ3JvdXBzICovXHJcbiAgICAgICAgbGV0IGZvcm1GaWVsZEdyb3VwczogRm9ybUZpZWxkR3JvdXBbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgdGFyZ2V0KSB8fCBbXTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSBncm91cCAqL1xyXG4gICAgICAgIHZhciBncm91cCA9IGZvcm1GaWVsZEdyb3Vwcy5maWx0ZXIoeCA9PiB4Lm5hbWU/LnRyaW0oKSA9PSBuYW1lPy50cmltKCkpWzBdO1xyXG5cclxuICAgICAgICAvKiBUaGUgZ3JvdXAgYWxyZWFkeSBleGlzdCwgYWRkIHRoZSBmaWVsZHMgdG8gaXQgKi9cclxuICAgICAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgZmllbGRzLmZvckVhY2goeCA9PiB4Lmdyb3VwTmFtZSA9IG5hbWUpO1xyXG4gICAgICAgICAgICBncm91cC5maWVsZHMucHVzaCguLi5maWVsZHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIHRoZSBuZXcgZ3JvdXAgKi9cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXAgPSBuZXcgRm9ybUZpZWxkR3JvdXAoeyBuYW1lOiBuYW1lLCBoZWFkZXI6IGhlYWRlciwgZmllbGRzOiBmaWVsZHMgfSk7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZEdyb3Vwcy5wdXNoKGdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFNvcnQgdGhlIGZpZWxkcyBieSByb3cgKi9cclxuICAgICAgICBncm91cC5maWVsZHMgPSBncm91cD8uZmllbGRzPy5zb3J0KChhLCBiKSA9PiAoYS5yb3cgfHwgMCA+IGIucm93IHx8IDApID8gMSA6ICgoYi5yb3cgfHwgMCA+IGEucm93IHx8IDApID8gLTEgOiAwKSkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdyb3VwIHRoZSBmaWVsZHMgKi9cclxuICAgICAgICBncm91cC5ncm91cHMgPSBPYmplY3QudmFsdWVzKChncm91cC5maWVsZHMpLnJlZHVjZShmdW5jdGlvbiAociwgYSkge1xyXG4gICAgICAgICAgICByW2Eucm93XSA9IHJbYS5yb3ddIHx8IFtdO1xyXG4gICAgICAgICAgICByW2Eucm93XS5wdXNoKGEpO1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKSkgYXMgW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgICAgIC8qIEFkZCBuZXcgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBmb3JtRmllbGRHcm91cHMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59Il19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2Z1bmN0aW9ucy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFrQztJQUMzRCxPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CO1FBQzdDLHVCQUF1QjtRQUN2QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQztRQUU1Qyx1QkFBdUI7UUFDdkIsSUFBSSxZQUFZLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUV6Rix5QkFBeUI7UUFDekIsSUFBSSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBdUI7WUFDN0UsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVztZQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxZQUFZO1lBQ2xHLG9CQUFvQixFQUFFLElB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6SCxzQkFBc0I7UUFDdEIsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE0QixDQUFDO1FBRXBELDBCQUEwQjtRQUMxQixPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGhlYWRlck1ldGFkYXRhS2V5IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2Zvcm0tZmllbGQtdHlwZVwiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXBcIjtcclxuaW1wb3J0IHsgZ2V0Rm9ybUdyb3VwcyB9IGZyb20gXCIuL2Z1bmN0aW9uc1wiO1xyXG5cclxuLyoqXHJcbiAqIFByb3BlcnR5IGRlY29yYXRvciB0byBjcmVhdGUgZm9ybSBmaWVsZHNcclxuICogQHBhcmFtIGFyZ3MgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1GaWVsZE9sZChhcmdzOiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb24+KTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSBuYW1lICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleTtcclxuXHJcbiAgICAgICAgLyogR2V0IHByb3BlcnR5IHR5cGUgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlUeXBlOiBzdHJpbmcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk/Lm5hbWU7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICB2YXIgZm9ybUZpZWxkID0gbmV3IEZvcm1GaWVsZERlZmluaXRpb24oT2JqZWN0LmFzc2lnbihhcmdzLCA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XHJcbiAgICAgICAgICAgIG5hbWU6IGFyZ3MubmFtZSB8fCBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgaGVhZGVyOiBhcmdzLmhlYWRlciB8fCBSZWZsZWN0LmdldE1ldGFkYXRhKGhlYWRlck1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB8fCBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZVRlbXBsYXRlOiBhcmdzLmF1dG9jb21wbGV0ZVRlbXBsYXRlIHx8ICgob3B0aW9uOiBhbnkpID0+IG9wdGlvbltmb3JtRmllbGQuYXV0b2NvbXBsZXRlVGV4dF0pLFxyXG4gICAgICAgICAgICBjaGlwVGVtcGxhdGU6IGFyZ3MuY2hpcFRlbXBsYXRlIHx8ICgoY2hpcDogYW55KSA9PiBjaGlwW2Zvcm1GaWVsZC5jaGlwVGV4dF0pXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAvKiBUeXBlIGVudW0gKi9cclxuICAgICAgICBpZiAoZm9ybUZpZWxkLmVudW1UeXBlKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkVudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFZkU2VsZWN0ICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlZkU2VsZWN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogVHlwZSBTZWxlY3QgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQub3B0aW9ucykge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5TZWxlY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFRleHRBcmVhICovXHJcbiAgICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLnJvd3MpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dEFyZWE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIEZpbGUgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmlsZVBhdGgpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRmlsZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE90aGVyIHR5cGVzICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuaW5wdXRUeXBlIHx8PSAnbnVtYmVyJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5EYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkNoZWNrYm94O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGV4aXN0aW5nIHRhYmxlIGdyb3VwcyAqL1xyXG4gICAgICAgIGxldCBmb3JtRmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW10gPSBSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIHRhcmdldCkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgZ3JvdXAgKi9cclxuICAgICAgICB2YXIgZ3JvdXAgPSBmb3JtRmllbGRHcm91cHMuZmlsdGVyKHggPT4geC5uYW1lPy50cmltKCkgPT0gZm9ybUZpZWxkLmdyb3VwTmFtZT8udHJpbSgpKVswXTtcclxuXHJcbiAgICAgICAgLyogVGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzLCBhZGQgdGhlIG5ldyBmb3JtIGZpZWxkICovXHJcbiAgICAgICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgICAgICAgIGdyb3VwLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBDcmVhdGUgYSBuZXcgZ3JvdXAgKi9cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXAgPSBuZXcgRm9ybUZpZWxkR3JvdXAoeyBuYW1lOiBmb3JtRmllbGQuZ3JvdXBOYW1lIHx8IG51bGwsIGhlYWRlcjogZm9ybUZpZWxkLmdyb3VwSGVhZGVyLCBmaWVsZHM6IFtmb3JtRmllbGRdIH0pO1xyXG4gICAgICAgICAgICBmb3JtRmllbGRHcm91cHMucHVzaChncm91cCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTb3J0IHRoZSBmaWVsZHMgYnkgcm93ICovXHJcbiAgICAgICAgZ3JvdXAuZmllbGRzID0gZ3JvdXAuZmllbGRzPy5zb3J0KChhLCBiKSA9PiAoYS5yb3cgfHwgMCA+IGIucm93IHx8IDApID8gMSA6ICgoYi5yb3cgfHwgMCA+IGEucm93IHx8IDApID8gLTEgOiAwKSkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdyb3VwIHRoZSBmaWVsZHMgKi9cclxuICAgICAgICBncm91cC5ncm91cHMgPSBPYmplY3QudmFsdWVzKChncm91cC5maWVsZHMpLnJlZHVjZShmdW5jdGlvbiAociwgYSkge1xyXG4gICAgICAgICAgICByW2Eucm93XSA9IHJbYS5yb3ddIHx8IFtdO1xyXG4gICAgICAgICAgICByW2Eucm93XS5wdXNoKGEpO1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKSkgYXMgW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgICAgIC8qIEFkZCBuZXcgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBmb3JtRmllbGRHcm91cHMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUHJvcGVydHkgZGVjb3JhdG9yIHRvIGNyZWF0ZSBmb3JtIGZpZWxkc1xyXG4gKiBAcGFyYW0gYXJncyBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUZpZWxkKGFyZ3M6IFBhcnRpYWw8Rm9ybUZpZWxkRGVmaW5pdGlvbj4pOiBGdW5jdGlvbiB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogR2V0IHByb3BlcnR5IG5hbWUgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gYXJncy5uYW1lIHx8IHByb3BlcnR5S2V5O1xyXG5cclxuICAgICAgICAvKiBHZXQgcHJvcGVydHkgdHlwZSAqL1xyXG4gICAgICAgIHZhciBwcm9wZXJ0eVR5cGU6IHN0cmluZyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCB0YXJnZXQsIHByb3BlcnR5S2V5KT8ubmFtZTtcclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIHRhYmxlIGNvbHVtbiAqL1xyXG4gICAgICAgIHZhciBmb3JtRmllbGQgPSBuZXcgRm9ybUZpZWxkRGVmaW5pdGlvbihPYmplY3QuYXNzaWduKGFyZ3MsIDxGb3JtRmllbGREZWZpbml0aW9uPntcclxuICAgICAgICAgICAgbmFtZTogYXJncy5uYW1lIHx8IHByb3BlcnR5S2V5LFxyXG4gICAgICAgICAgICBoZWFkZXI6IGFyZ3MuaGVhZGVyIHx8IFJlZmxlY3QuZ2V0TWV0YWRhdGEoaGVhZGVyTWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHx8IHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlVGVtcGxhdGU6IGFyZ3MuYXV0b2NvbXBsZXRlVGVtcGxhdGUgfHwgKChvcHRpb246IGFueSkgPT4gb3B0aW9uW2Zvcm1GaWVsZC5hdXRvY29tcGxldGVUZXh0XSksXHJcbiAgICAgICAgICAgIGNoaXBUZW1wbGF0ZTogYXJncy5jaGlwVGVtcGxhdGUgfHwgKChjaGlwOiBhbnkpID0+IGNoaXBbZm9ybUZpZWxkLmNoaXBUZXh0XSlcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIC8qIFR5cGUgZW51bSAqL1xyXG4gICAgICAgIGlmIChmb3JtRmllbGQuZW51bVR5cGUpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuRW51bTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFR5cGUgVmRTZWxlY3QgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQuZW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuVmRTZWxlY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUeXBlIFNlbGVjdCAqL1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLlNlbGVjdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFR5cGUgVGV4dEFyZWEgKi9cclxuICAgICAgICBlbHNlIGlmIChmb3JtRmllbGQucm93cykge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5UZXh0QXJlYTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFR5cGUgRmlsZSAqL1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWxlUGF0aCkge1xyXG4gICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5GaWxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogT3RoZXIgdHlwZXMgKi9cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eVR5cGUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5pbnB1dFR5cGUgfHw9ICdudW1iZXInO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC50eXBlIHx8PSBGb3JtRmllbGRUeXBlLkRhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkLnR5cGUgfHw9IEZvcm1GaWVsZFR5cGUuQ2hlY2tib3g7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQudHlwZSB8fD0gRm9ybUZpZWxkVHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgb2xkIGZvcm0gZmllbGRzICovXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNGb3JtRmllbGRzID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCB0YXJnZXQpO1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgYSBjb3B5IG9mIHRoZSByZXN1bHQgKi9cclxuICAgICAgICBsZXQgZm9ybUZpZWxkcyA9IHByZXZpb3VzRm9ybUZpZWxkcyA/XHJcbiAgICAgICAgICAgIHByZXZpb3VzRm9ybUZpZWxkcy5jb25jYXQoW2Zvcm1GaWVsZF0pPy5zb3J0KChhLCBiKSA9PiAoYS5yb3cgfHwgMCA+IGIucm93IHx8IDApID8gMSA6ICgoYi5yb3cgfHwgMCA+IGEucm93IHx8IDApID8gLTEgOiAwKSkgfHwgW10gOlxyXG4gICAgICAgICAgICBbZm9ybUZpZWxkXTtcclxuXHJcbiAgICAgICAgLyogT3ZlcnJpZGUgdGhlIHJlc3VsdCBpbiB0aGUgbWV0YWRhdGEgKi9cclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIGZvcm1GaWVsZHMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUHJvcGVydHkgZGVjb3JhdG9yIHRvIGNyZWF0ZSBmb3JtIGZpZWxkc1xyXG4gKiBAcGFyYW0gYXJncyBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUdyb3VwPFQ+KHR5cGU6IFR5cGU8VD4sIGhlYWRlcjogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFNldCBwcm9wcmV0eSBuYW1lIGFzIGdyb3VwIG5hbWUsIGlmIGVtcHR5ICovXHJcbiAgICAgICAgbmFtZSB8fD0gcHJvcGVydHlLZXk7XHJcblxyXG4gICAgICAgIC8qIEdldCBmcm9tIGdyb3VwcyAqL1xyXG4gICAgICAgIHZhciBncm91cHMgPSBnZXRGb3JtR3JvdXBzKFJlZmxlY3QuY29uc3RydWN0KHR5cGUsIFtdKSk7XHJcblxyXG4gICAgICAgIC8qIEdldCBhbGwgZmllbGRzICovXHJcbiAgICAgICAgdmFyIGZpZWxkcyA9IGdyb3Vwcy5tYXAoeCA9PiB4LmZpZWxkcykucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pIHx8IFtdO1xyXG5cclxuICAgICAgICAvKiBHZXQgZXhpc3RpbmcgdGFibGUgZ3JvdXBzICovXHJcbiAgICAgICAgbGV0IGZvcm1GaWVsZEdyb3VwczogRm9ybUZpZWxkR3JvdXBbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgdGFyZ2V0KSB8fCBbXTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSBncm91cCAqL1xyXG4gICAgICAgIHZhciBncm91cCA9IGZvcm1GaWVsZEdyb3Vwcy5maWx0ZXIoeCA9PiB4Lm5hbWU/LnRyaW0oKSA9PSBuYW1lPy50cmltKCkpWzBdO1xyXG5cclxuICAgICAgICAvKiBUaGUgZ3JvdXAgYWxyZWFkeSBleGlzdCwgYWRkIHRoZSBmaWVsZHMgdG8gaXQgKi9cclxuICAgICAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgZmllbGRzLmZvckVhY2goeCA9PiB4Lmdyb3VwTmFtZSA9IG5hbWUpO1xyXG4gICAgICAgICAgICBncm91cC5maWVsZHMucHVzaCguLi5maWVsZHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIHRoZSBuZXcgZ3JvdXAgKi9cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXAgPSBuZXcgRm9ybUZpZWxkR3JvdXAoeyBuYW1lOiBuYW1lLCBoZWFkZXI6IGhlYWRlciwgZmllbGRzOiBmaWVsZHMgfSk7XHJcbiAgICAgICAgICAgIGZvcm1GaWVsZEdyb3Vwcy5wdXNoKGdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFNvcnQgdGhlIGZpZWxkcyBieSByb3cgKi9cclxuICAgICAgICBncm91cC5maWVsZHMgPSBncm91cD8uZmllbGRzPy5zb3J0KChhLCBiKSA9PiAoYS5yb3cgfHwgMCA+IGIucm93IHx8IDApID8gMSA6ICgoYi5yb3cgfHwgMCA+IGEucm93IHx8IDApID8gLTEgOiAwKSkgfHwgW107XHJcblxyXG4gICAgICAgIC8qIEdyb3VwIHRoZSBmaWVsZHMgKi9cclxuICAgICAgICBncm91cC5ncm91cHMgPSBPYmplY3QudmFsdWVzKChncm91cC5maWVsZHMpLnJlZHVjZShmdW5jdGlvbiAociwgYSkge1xyXG4gICAgICAgICAgICByW2Eucm93XSA9IHJbYS5yb3ddIHx8IFtdO1xyXG4gICAgICAgICAgICByW2Eucm93XS5wdXNoKGEpO1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKSkgYXMgW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgICAgIC8qIEFkZCBuZXcgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBmb3JtRmllbGRHcm91cHMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59Il19
@@ -1,10 +1,31 @@
1
+ import { Utils } from "../../common/functions/utils";
1
2
  import { formFieldGroupMetadataKey } from "../constants/constants";
3
+ import { FormFieldGroup } from "../models/form-field-group";
2
4
  /**
3
5
  * Gets poperties decoarated with @FormField grouped by row
4
6
  * @param origin
5
7
  * @returns
8
+ * @deprecated
6
9
  */
7
- export function getFormGroups(origin) {
10
+ export function getFormGroupsOld(origin) {
8
11
  return Reflect.getMetadata(formFieldGroupMetadataKey, origin);
9
12
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUduRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFjO0lBQ3hDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQXFCLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS1maWVsZC1ncm91cFwiO1xyXG5cclxuLyoqXHJcbiAqIEdldHMgcG9wZXJ0aWVzIGRlY29hcmF0ZWQgd2l0aCBARm9ybUZpZWxkIGdyb3VwZWQgYnkgcm93XHJcbiAqIEBwYXJhbSBvcmlnaW4gXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1Hcm91cHMob3JpZ2luOiBvYmplY3QpOiBGb3JtRmllbGRHcm91cFtdIHtcclxuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXksIG9yaWdpbikgYXMgRm9ybUZpZWxkR3JvdXBbXTtcclxufSJdfQ==
13
+ /**
14
+ * Gets poperties decoarated with @FormField grouped by row
15
+ * @param origin
16
+ * @returns
17
+ */
18
+ export function getFormGroups(origin) {
19
+ const grouped = Utils.groupArrayBy(Reflect.getMetadata(formFieldGroupMetadataKey, origin), x => x.groupName);
20
+ return Array.from(grouped).map(([_, value]) => new FormFieldGroup({
21
+ name: value[0].groupName || null,
22
+ header: value[0].groupHeader,
23
+ fields: value,
24
+ groups: Object.values((value).reduce(function (r, a) {
25
+ r[a.row] = r[a.row] || [];
26
+ r[a.row].push(a);
27
+ return r;
28
+ }, Object.create(null)))
29
+ }));
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQWM7SUFDM0MsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBcUIsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBYztJQUN4QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUEwQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RJLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUM7UUFDOUQsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSTtRQUNoQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDNUIsTUFBTSxFQUFFLEtBQUs7UUFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE0QjtLQUN0RCxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlscyB9IGZyb20gXCIuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzXCI7XHJcbmltcG9ydCB7IGZvcm1GaWVsZEdyb3VwTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXBcIjtcclxuXHJcbi8qKlxyXG4gKiBHZXRzIHBvcGVydGllcyBkZWNvYXJhdGVkIHdpdGggQEZvcm1GaWVsZCBncm91cGVkIGJ5IHJvd1xyXG4gKiBAcGFyYW0gb3JpZ2luIFxyXG4gKiBAcmV0dXJucyBcclxuICogQGRlcHJlY2F0ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtR3JvdXBzT2xkKG9yaWdpbjogb2JqZWN0KTogRm9ybUZpZWxkR3JvdXBbXSB7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cE1ldGFkYXRhS2V5LCBvcmlnaW4pIGFzIEZvcm1GaWVsZEdyb3VwW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHBvcGVydGllcyBkZWNvYXJhdGVkIHdpdGggQEZvcm1GaWVsZCBncm91cGVkIGJ5IHJvd1xyXG4gKiBAcGFyYW0gb3JpZ2luIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtR3JvdXBzKG9yaWdpbjogb2JqZWN0KTogRm9ybUZpZWxkR3JvdXBbXSB7XHJcbiAgICBjb25zdCBncm91cGVkID0gVXRpbHMuZ3JvdXBBcnJheUJ5KFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybUZpZWxkR3JvdXBNZXRhZGF0YUtleSwgb3JpZ2luKSBhcyBGb3JtRmllbGREZWZpbml0aW9uW10sIHggPT4geC5ncm91cE5hbWUpO1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZCkubWFwKChbXywgdmFsdWVdKSA9PiBuZXcgRm9ybUZpZWxkR3JvdXAoe1xyXG4gICAgICAgIG5hbWU6IHZhbHVlWzBdLmdyb3VwTmFtZSB8fCBudWxsLFxyXG4gICAgICAgIGhlYWRlcjogdmFsdWVbMF0uZ3JvdXBIZWFkZXIsXHJcbiAgICAgICAgZmllbGRzOiB2YWx1ZSxcclxuICAgICAgICBncm91cHM6IE9iamVjdC52YWx1ZXMoKHZhbHVlKS5yZWR1Y2UoZnVuY3Rpb24gKHIsIGEpIHtcclxuICAgICAgICAgICAgclthLnJvd10gPSByW2Eucm93XSB8fCBbXTtcclxuICAgICAgICAgICAgclthLnJvd10ucHVzaChhKTtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSkpIGFzIFtGb3JtRmllbGREZWZpbml0aW9uW11dXHJcbiAgICB9KSk7XHJcbn0iXX0=
@@ -4,8 +4,9 @@ export class FormFieldGroup {
4
4
  * @param init
5
5
  */
6
6
  constructor(init) {
7
+ this.name = 'details';
7
8
  this.fields = [];
8
9
  Object.assign(this, init);
9
10
  }
10
11
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxjQUFjO0lBTXZCOzs7T0FHRztJQUNILFlBQW1CLElBQThCO1FBUDFDLFdBQU0sR0FBMEIsRUFBRSxDQUFDO1FBUXRDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tIFwiLi9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRHcm91cCB7XHJcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG4gICAgcHVibGljIGhlYWRlcj86IHN0cmluZztcclxuICAgIHB1YmxpYyBmaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgcHVibGljIGdyb3VwczogW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluaXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxGb3JtRmllbGRHcm91cD4pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxjQUFjO0lBTXZCOzs7T0FHRztJQUNILFlBQW1CLElBQThCO1FBVDFDLFNBQUksR0FBVyxTQUFTLENBQUM7UUFFekIsV0FBTSxHQUEwQixFQUFFLENBQUM7UUFRdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gXCIuL2Zvcm0tZmllbGQtZGVmaW5pdGlvblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEdyb3VwIHtcclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnZGV0YWlscyc7XHJcbiAgICBwdWJsaWMgaGVhZGVyPzogc3RyaW5nO1xyXG4gICAgcHVibGljIGZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbltdID0gW107XHJcbiAgICBwdWJsaWMgZ3JvdXBzOiBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gaW5pdCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGluaXQ/OiBQYXJ0aWFsPEZvcm1GaWVsZEdyb3VwPikge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -638,6 +638,31 @@ class Utils {
638
638
  let sortDir = reverse === true ? -1 : 1;
639
639
  return array = ((array === null || array === void 0 ? void 0 : array.sort((a, b) => (a[property] > b[property]) ? sortDir : ((b[property] > a[property]) ? (sortDir * -1) : 0))) || []);
640
640
  }
641
+ /**
642
+ * @description
643
+ * Takes an Array<V>, and a grouping function,
644
+ * and returns a Map of the array grouped by the grouping function.
645
+ *
646
+ * @param list An array of type V.
647
+ * @param keyGetter A Function that takes the the Array type V as an input, and returns a value of type K.
648
+ * K is generally intended to be a property key of V.
649
+ *
650
+ * @returns Map of the array grouped by the grouping function.
651
+ */
652
+ static groupArrayBy(list, keyGetter) {
653
+ const map = new Map();
654
+ list === null || list === void 0 ? void 0 : list.forEach((item) => {
655
+ const key = keyGetter(item);
656
+ const collection = map.get(key);
657
+ if (!collection) {
658
+ map.set(key, [item]);
659
+ }
660
+ else {
661
+ collection.push(item);
662
+ }
663
+ });
664
+ return map;
665
+ }
641
666
  /**
642
667
  * Truncates a text
643
668
  * @param text
@@ -14261,6 +14286,7 @@ class FormFieldGroup {
14261
14286
  * @param init
14262
14287
  */
14263
14288
  constructor(init) {
14289
+ this.name = 'details';
14264
14290
  this.fields = [];
14265
14291
  Object.assign(this, init);
14266
14292
  }
@@ -14270,9 +14296,28 @@ class FormFieldGroup {
14270
14296
  * Gets poperties decoarated with @FormField grouped by row
14271
14297
  * @param origin
14272
14298
  * @returns
14299
+ * @deprecated
14273
14300
  */
14274
- function getFormGroups(origin) {
14301
+ function getFormGroupsOld(origin) {
14275
14302
  return Reflect.getMetadata(formFieldGroupMetadataKey, origin);
14303
+ }
14304
+ /**
14305
+ * Gets poperties decoarated with @FormField grouped by row
14306
+ * @param origin
14307
+ * @returns
14308
+ */
14309
+ function getFormGroups(origin) {
14310
+ const grouped = Utils.groupArrayBy(Reflect.getMetadata(formFieldGroupMetadataKey, origin), x => x.groupName);
14311
+ return Array.from(grouped).map(([_, value]) => new FormFieldGroup({
14312
+ name: value[0].groupName || null,
14313
+ header: value[0].groupHeader,
14314
+ fields: value,
14315
+ groups: Object.values((value).reduce(function (r, a) {
14316
+ r[a.row] = r[a.row] || [];
14317
+ r[a.row].push(a);
14318
+ return r;
14319
+ }, Object.create(null)))
14320
+ }));
14276
14321
  }
14277
14322
 
14278
14323
  /**
@@ -14280,7 +14325,7 @@ function getFormGroups(origin) {
14280
14325
  * @param args
14281
14326
  * @returns
14282
14327
  */
14283
- function FormField(args) {
14328
+ function FormFieldOld(args) {
14284
14329
  return function (target, propertyKey) {
14285
14330
  var _a, _b;
14286
14331
  /* Get property name */
@@ -14357,6 +14402,73 @@ function FormField(args) {
14357
14402
  Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);
14358
14403
  };
14359
14404
  }
14405
+ /**
14406
+ * Property decorator to create form fields
14407
+ * @param args
14408
+ * @returns
14409
+ */
14410
+ function FormField(args) {
14411
+ return function (target, propertyKey) {
14412
+ var _a, _b;
14413
+ /* Get property name */
14414
+ var propertyName = args.name || propertyKey;
14415
+ /* Get property type */
14416
+ var propertyType = (_a = Reflect.getMetadata("design:type", target, propertyKey)) === null || _a === void 0 ? void 0 : _a.name;
14417
+ /* Create table column */
14418
+ var formField = new FormFieldDefinition(Object.assign(args, {
14419
+ name: args.name || propertyKey,
14420
+ header: args.header || Reflect.getMetadata(headerMetadataKey, target, propertyKey) || propertyName,
14421
+ autocompleteTemplate: args.autocompleteTemplate || ((option) => option[formField.autocompleteText]),
14422
+ chipTemplate: args.chipTemplate || ((chip) => chip[formField.chipText])
14423
+ }));
14424
+ /* Type enum */
14425
+ if (formField.enumType) {
14426
+ formField.type || (formField.type = FormFieldType.Enum);
14427
+ }
14428
+ /* Type VdSelect */
14429
+ else if (formField.endpoint) {
14430
+ formField.type || (formField.type = FormFieldType.VdSelect);
14431
+ }
14432
+ /* Type Select */
14433
+ else if (formField.options) {
14434
+ formField.type || (formField.type = FormFieldType.Select);
14435
+ }
14436
+ /* Type TextArea */
14437
+ else if (formField.rows) {
14438
+ formField.type || (formField.type = FormFieldType.TextArea);
14439
+ }
14440
+ /* Type File */
14441
+ else if (formField.filePath) {
14442
+ formField.type || (formField.type = FormFieldType.File);
14443
+ }
14444
+ /* Other types */
14445
+ else {
14446
+ switch (propertyType.toLowerCase()) {
14447
+ case 'number':
14448
+ formField.type || (formField.type = FormFieldType.Text);
14449
+ formField.inputType || (formField.inputType = 'number');
14450
+ break;
14451
+ case 'date':
14452
+ formField.type || (formField.type = FormFieldType.Date);
14453
+ break;
14454
+ case 'boolean':
14455
+ formField.type || (formField.type = FormFieldType.Checkbox);
14456
+ break;
14457
+ default:
14458
+ formField.type || (formField.type = FormFieldType.Text);
14459
+ break;
14460
+ }
14461
+ }
14462
+ /* Get old form fields */
14463
+ const previousFormFields = Reflect.getMetadata(formFieldGroupMetadataKey, target);
14464
+ /* Create a copy of the result */
14465
+ let formFields = previousFormFields ?
14466
+ ((_b = previousFormFields.concat([formField])) === null || _b === void 0 ? void 0 : _b.sort((a, b) => (a.row || 0 > b.row || 0) ? 1 : ((b.row || 0 > a.row || 0) ? -1 : 0))) || [] :
14467
+ [formField];
14468
+ /* Override the result in the metadata */
14469
+ Reflect.defineMetadata(formFieldGroupMetadataKey, formFields, target);
14470
+ };
14471
+ }
14360
14472
  /**
14361
14473
  * Property decorator to create form fields
14362
14474
  * @param args