@seniorsistemas/angular-components 15.0.2 → 15.0.4

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.
@@ -1,8 +1,7 @@
1
1
  import { __assign, __decorate, __param } from "tslib";
2
- import { Inject, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from "@angular/core";
3
- import { Component, Input, ViewChild } from "@angular/core";
4
- import { TranslateService } from "@ngx-translate/core";
5
2
  import * as moment from "moment";
3
+ import { Inject, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef, Component, Input, ViewChild } from "@angular/core";
4
+ import { TranslateService } from "@ngx-translate/core";
6
5
  import { applyMask } from "@seniorsistemas/ng2-currency-mask";
7
6
  import BigNumber from "bignumber.js";
8
7
  import { HostProjectConfigsInjectionToken } from "../../../angular-components.module";
@@ -20,12 +19,15 @@ var TableColumnsComponent = /** @class */ (function () {
20
19
  };
21
20
  TableColumnsComponent.prototype.validateComponentAttributes = function (changes) {
22
21
  var _a, _b, _c;
23
- if (!((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue))
22
+ if (!((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue)) {
24
23
  throw new Error("The 'columns' attribute must be informed!");
25
- if (!((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue))
24
+ }
25
+ if (!((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue)) {
26
26
  throw new Error("The 'rowValue' attribute must be informed!");
27
- if (!((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue))
27
+ }
28
+ if (!((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue)) {
28
29
  throw new Error("The 'locale' attribute must be informed!");
30
+ }
29
31
  };
30
32
  TableColumnsComponent.prototype.createColumnsTemplate = function (changes) {
31
33
  var _this = this;
@@ -36,14 +38,61 @@ var TableColumnsComponent = /** @class */ (function () {
36
38
  columns.forEach(function (column) { return _this.formattedColumns.push(_this.getColumnValue(column, rowValue, locale)); });
37
39
  this.viewContainerRef.createEmbeddedView(this.columnsTemplate);
38
40
  };
41
+ TableColumnsComponent.prototype.getColumnSeparator = function (column) {
42
+ return column.separator ? column.separator : " - ";
43
+ };
44
+ TableColumnsComponent.prototype.getTranslationPrefix = function (column) {
45
+ return column.prefix ? column.prefix : this.hostProjectConfigs.domain + "." + this.hostProjectConfigs.service + ".";
46
+ };
47
+ TableColumnsComponent.prototype.isAttributeValueInvalid = function (attributeValue) {
48
+ return attributeValue === null || attributeValue === undefined || (this.isArray(attributeValue) && !attributeValue.length);
49
+ };
50
+ TableColumnsComponent.prototype.getFormattedColumnValue = function (column, columnValue, unifiedColumnValues, uninformedText, uninformedNumber) {
51
+ if (uninformedNumber === column.attributes.length) {
52
+ return uninformedText;
53
+ }
54
+ if (column.type === EnumColumnFieldType.TOKENS) {
55
+ return [].concat.apply([], columnValue.filter(function (values) { return values !== uninformedText; }));
56
+ }
57
+ return unifiedColumnValues;
58
+ };
59
+ TableColumnsComponent.prototype.getAttributeValue = function (attribute, rowValue) {
60
+ var attributeValue;
61
+ attribute
62
+ .split("/")
63
+ .forEach(function (value) {
64
+ if (!attributeValue) {
65
+ value
66
+ .split(".")
67
+ .forEach(function (val, i) {
68
+ if (!rowValue) {
69
+ return;
70
+ }
71
+ if (i === 0) {
72
+ attributeValue = rowValue[val];
73
+ }
74
+ else {
75
+ if (attributeValue) {
76
+ attributeValue = attributeValue[val];
77
+ }
78
+ }
79
+ });
80
+ }
81
+ });
82
+ return attributeValue;
83
+ };
84
+ TableColumnsComponent.prototype.getNumberConfigs = function (column, locale) {
85
+ return __assign(__assign({}, locale.number), { scale: column.scale !== null && column.scale !== undefined
86
+ ? this.getColumnScale(column.scale)
87
+ : locale.number.scale, prefix: locale.number.currencySymbol + " " });
88
+ };
89
+ TableColumnsComponent.prototype.getDateFormat = function (column, locale) {
90
+ return column.dateFormat ? column.dateFormat : locale.calendar.dateFormat;
91
+ };
39
92
  TableColumnsComponent.prototype.getColumnValue = function (column, rowValue, locale) {
40
93
  var _this = this;
41
- var prefix = column.prefix
42
- ? column.prefix
43
- : this.hostProjectConfigs.domain + "." + this.hostProjectConfigs.service + ".";
44
- var separator = column.separator
45
- ? column.separator
46
- : " - ";
94
+ var prefix = this.getTranslationPrefix(column);
95
+ var separator = this.getColumnSeparator(column);
47
96
  var uninformed = this.translate.instant(prefix + "empty_label");
48
97
  var style = column.style;
49
98
  var badgeClass = {
@@ -51,69 +100,40 @@ var TableColumnsComponent = /** @class */ (function () {
51
100
  };
52
101
  var columnValue = column.attributes
53
102
  .map(function (attribute) {
54
- var attributeValue;
55
- attribute
56
- .split("/")
57
- .forEach(function (value) {
58
- if (!attributeValue) {
59
- value
60
- .split(".")
61
- .forEach(function (val, i) {
62
- if (rowValue) {
63
- if (i === 0) {
64
- attributeValue = rowValue[val];
65
- }
66
- else if (attributeValue) {
67
- attributeValue = attributeValue[val];
68
- }
69
- }
70
- });
71
- }
72
- });
73
- if (attributeValue === null || attributeValue === undefined || (_this.isArray(attributeValue) && !attributeValue.length)) {
103
+ var _a;
104
+ var attributeValue = _this.getAttributeValue(attribute, rowValue);
105
+ if (_this.isAttributeValueInvalid(attributeValue)) {
74
106
  return uninformed;
75
107
  }
76
- else {
77
- var numberConfigs = __assign(__assign({}, locale.number), { scale: column.scale ? _this.getColumnScale(column.scale) : locale.number.scale, prefix: locale.number.currencySymbol + " " });
78
- switch (column.type) {
79
- case EnumColumnFieldType.ENUM:
80
- if (column.badgeConfigs && column.badgeConfigs.length) {
81
- badgeClass = _this.getBadgeClass(attributeValue, column.badgeConfigs);
82
- }
83
- return _this.translate.instant(column.enumPrefix + attributeValue.toString().toLowerCase());
84
- case EnumColumnFieldType.CURRENCY:
85
- return applyMask(attributeValue, numberConfigs, _this.isNumber(attributeValue));
86
- case EnumColumnFieldType.DATE:
87
- var dateFormat = column.dateFormat ? column.dateFormat : locale.calendar.dateFormat;
88
- return moment(attributeValue).format(dateFormat);
89
- case EnumColumnFieldType.BOOLEAN:
90
- var value = attributeValue ? "yes" : "no";
91
- return _this.translate.instant(prefix + value);
92
- case EnumColumnFieldType.LINK:
93
- case EnumColumnFieldType.STRING:
94
- return attributeValue;
95
- case EnumColumnFieldType.NUMBER:
96
- numberConfigs.prefix = "";
97
- return applyMask(attributeValue, numberConfigs, _this.isNumber(attributeValue));
98
- case EnumColumnFieldType.TOKENS:
99
- return _this.getTokens(attributeValue);
100
- }
108
+ var numberConfigs = _this.getNumberConfigs(column, locale);
109
+ switch (column.type) {
110
+ case EnumColumnFieldType.ENUM:
111
+ if ((_a = column.badgeConfigs) === null || _a === void 0 ? void 0 : _a.length) {
112
+ badgeClass = _this.getBadgeClass(attributeValue, column.badgeConfigs);
113
+ }
114
+ return _this.translate.instant(column.enumPrefix + attributeValue.toString().toLowerCase());
115
+ case EnumColumnFieldType.CURRENCY:
116
+ return applyMask(attributeValue, numberConfigs, _this.isNumber(attributeValue));
117
+ case EnumColumnFieldType.DATE:
118
+ var dateFormat = _this.getDateFormat(column, locale);
119
+ return moment(attributeValue).format(dateFormat);
120
+ case EnumColumnFieldType.BOOLEAN:
121
+ var value = attributeValue ? "yes" : "no";
122
+ return _this.translate.instant(prefix + value);
123
+ case EnumColumnFieldType.NUMBER:
124
+ numberConfigs.prefix = "";
125
+ return applyMask(attributeValue, numberConfigs, _this.isNumber(attributeValue));
126
+ case EnumColumnFieldType.TOKENS:
127
+ return _this.getTokens(attributeValue);
128
+ default:
129
+ return attributeValue;
101
130
  }
102
131
  });
103
132
  var unifiedColumnValues = columnValue.join(separator);
104
133
  var uninformedNumber = unifiedColumnValues
105
134
  .split(separator)
106
135
  .filter(function (value) { return value === uninformed; }).length;
107
- var formattedColumnValue;
108
- if (uninformedNumber === column.attributes.length) {
109
- formattedColumnValue = uninformed;
110
- }
111
- else if (column.type === EnumColumnFieldType.TOKENS) {
112
- formattedColumnValue = [].concat.apply([], columnValue.filter(function (values) { return values !== uninformed; }));
113
- }
114
- else {
115
- formattedColumnValue = unifiedColumnValues;
116
- }
136
+ var formattedColumnValue = this.getFormattedColumnValue(column, columnValue, unifiedColumnValues, uninformed, uninformedNumber);
117
137
  return {
118
138
  style: style,
119
139
  columnValue: formattedColumnValue,
@@ -148,18 +168,21 @@ var TableColumnsComponent = /** @class */ (function () {
148
168
  }
149
169
  return tooltip;
150
170
  }
171
+ return "";
151
172
  };
152
173
  TableColumnsComponent.prototype.isNumber = function (value) {
153
174
  return !(new BigNumber(value).isNaN());
154
175
  };
155
176
  TableColumnsComponent.prototype.getTokens = function (values) {
156
- if (!this.isArray(values))
177
+ if (!this.isArray(values)) {
157
178
  throw new Error("To use tokens an array must be informed");
158
- // tslint:disable-next-line: max-line-length
159
- if (!this.isValidTokenArray(values))
160
- throw new Error("Not a valid token array. Token array must be a primitive values array or an objects with label attribute array");
161
- if (this.isLabelObjectArray(values))
179
+ }
180
+ if (!this.isValidTokenArray(values)) {
181
+ throw new Error("Not a valid token array. Must be a primitive values array or an objects with label attribute array");
182
+ }
183
+ if (this.isLabelObjectArray(values)) {
162
184
  return values;
185
+ }
163
186
  return values
164
187
  .filter(function (value) { return value !== undefined && value !== null; })
165
188
  .map(function (value) {
@@ -194,6 +217,7 @@ var TableColumnsComponent = /** @class */ (function () {
194
217
  };
195
218
  });
196
219
  }
220
+ return null;
197
221
  };
198
222
  TableColumnsComponent.ctorParameters = function () { return [
199
223
  { type: ViewContainerRef },
@@ -223,4 +247,4 @@ var TableColumnsComponent = /** @class */ (function () {
223
247
  return TableColumnsComponent;
224
248
  }());
225
249
  export { TableColumnsComponent };
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFFckMsT0FBTyxFQUVILGdDQUFnQyxFQUNuQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE9BQU8sRUFLSCxtQkFBbUIsRUFFdEIsTUFBTSxVQUFVLENBQUM7QUFPbEI7SUFVSSwrQkFDWSxnQkFBa0MsRUFDbEMsU0FBMkIsRUFDZSxrQkFBc0M7UUFGaEYscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNlLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFMckYscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQU0xQyxDQUFDO0lBRUosMkNBQVcsR0FBWCxVQUFZLE9BQXNCO1FBQzlCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLDJEQUEy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b0JBQ0gsS0FBSyxFQUFFLE1BQU07b0JBQ2IsWUFBWSxFQUFFLE1BQU0sS0FBSyxVQUFVO29CQUNuQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtpQkFDM0MsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDOztnQkE5TTZCLGdCQUFnQjtnQkFDdkIsZ0JBQWdCO2dEQUNsQyxNQUFNLFNBQUMsZ0NBQWdDOztJQVhJO1FBQS9DLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztrRUFBbUM7SUFFekU7UUFBUixLQUFLLEVBQUU7MERBQW9CO0lBQ25CO1FBQVIsS0FBSyxFQUFFOzJEQUFnQjtJQUNmO1FBQVIsS0FBSyxFQUFFO3lEQUFtQztJQU5sQyxxQkFBcUI7UUFMakMsU0FBUyxDQUFDO1lBQ1AsbTZDQUE2QztZQUU3QyxRQUFRLEVBQUUsaUJBQWlCOztTQUM5QixDQUFDO1FBY08sV0FBQSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtPQWJwQyxxQkFBcUIsQ0EyTmpDO0lBQUQsNEJBQUM7Q0FBQSxBQTNORCxJQTJOQztTQTNOWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IGFwcGx5TWFzaywgTWFza0NvbmZpZyB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvbmcyLWN1cnJlbmN5LW1hc2tcIjtcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSBcImJpZ251bWJlci5qc1wiO1xuXG5pbXBvcnQge1xuICAgIEhvc3RQcm9qZWN0Q29uZmlncyxcbiAgICBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlblxufSBmcm9tIFwiLi4vLi4vLi4vYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7XG4gICAgQmFkZ2VDb2x1bW4sXG4gICAgQmFkZ2VDb25maWdzLFxuICAgIENvbHVtbixcbiAgICBDb2x1bW5WYWx1ZXMsXG4gICAgRW51bUNvbHVtbkZpZWxkVHlwZSxcbiAgICBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnNcbn0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS1jb2x1bW5zLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHNlbGVjdG9yOiBcInMtdGFibGUtY29sdW1uc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gICAgQFZpZXdDaGlsZChcImNvbHVtbnNUZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb2x1bW5zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zITogQ29sdW1uW107XG4gICAgQElucHV0KCkgcm93VmFsdWUhOiBhbnk7XG4gICAgQElucHV0KCkgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuXG4gICAgcHVibGljIGZvcm1hdHRlZENvbHVtbnM6IENvbHVtblZhbHVlc1tdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQEluamVjdChIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbikgcHJpdmF0ZSBob3N0UHJvamVjdENvbmZpZ3M6IEhvc3RQcm9qZWN0Q29uZmlnc1xuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlcyk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1uc1RlbXBsYXRlKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnRBdHRyaWJ1dGVzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSkgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdjb2x1bW5zJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIGlmICghY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgJ3Jvd1ZhbHVlJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIGlmICghY2hhbmdlcy5sb2NhbGU/LmN1cnJlbnRWYWx1ZSkgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdsb2NhbGUnIGF0dHJpYnV0ZSBtdXN0IGJlIGluZm9ybWVkIVwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgY29uc3Qgcm93VmFsdWU6IG9iamVjdCA9IGNoYW5nZXMucm93VmFsdWUuY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zdCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IGNoYW5nZXMubG9jYWxlLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gdGhpcy5mb3JtYXR0ZWRDb2x1bW5zLnB1c2godGhpcy5nZXRDb2x1bW5WYWx1ZShjb2x1bW4sIHJvd1ZhbHVlLCBsb2NhbGUpKSk7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jb2x1bW5zVGVtcGxhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVmFsdWUoY29sdW1uOiBDb2x1bW4sIHJvd1ZhbHVlOiBvYmplY3QsIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKTogQ29sdW1uVmFsdWVzIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gY29sdW1uLnByZWZpeFxuICAgICAgICAgICAgPyBjb2x1bW4ucHJlZml4XG4gICAgICAgICAgICA6IGAke3RoaXMuaG9zdFByb2plY3RDb25maWdzLmRvbWFpbn0uJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5zZXJ2aWNlfS5gO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBjb2x1bW4uc2VwYXJhdG9yXG4gICAgICAgICAgICA/IGNvbHVtbi5zZXBhcmF0b3JcbiAgICAgICAgICAgIDogXCIgLSBcIjtcbiAgICAgICAgY29uc3QgdW5pbmZvcm1lZDogc3RyaW5nID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyBcImVtcHR5X2xhYmVsXCIpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IGNvbHVtbi5zdHlsZTtcbiAgICAgICAgbGV0IGJhZGdlQ2xhc3M6IEJhZGdlQ29sdW1uID0ge1xuICAgICAgICAgICAgXCJzZHMtYmFkZ2VcIjogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZTogYW55W10gPSBjb2x1bW4uYXR0cmlidXRlc1xuICAgICAgICAgICAgLm1hcCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYXR0cmlidXRlVmFsdWUhOiBhbnk7XG5cbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKHZhbDogc3RyaW5nLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHJvd1ZhbHVlW3ZhbF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlW3ZhbF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PT0gbnVsbCB8fCBhdHRyaWJ1dGVWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICh0aGlzLmlzQXJyYXkoYXR0cmlidXRlVmFsdWUpICYmICFhdHRyaWJ1dGVWYWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmluZm9ybWVkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckNvbmZpZ3M6IE1hc2tDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5sb2NhbGUubnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IGNvbHVtbi5zY2FsZSA/IHRoaXMuZ2V0Q29sdW1uU2NhbGUoY29sdW1uLnNjYWxlKSA6IGxvY2FsZS5udW1iZXIuc2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IGAke2xvY2FsZS5udW1iZXIuY3VycmVuY3lTeW1ib2x9IGBcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhZGdlQ29uZmlncyAmJiBjb2x1bW4uYmFkZ2VDb25maWdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZUNsYXNzID0gdGhpcy5nZXRCYWRnZUNsYXNzKGF0dHJpYnV0ZVZhbHVlLCBjb2x1bW4uYmFkZ2VDb25maWdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoY29sdW1uLmVudW1QcmVmaXggKyBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQ1VSUkVOQ1k6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGx5TWFzayhhdHRyaWJ1dGVWYWx1ZSwgbnVtYmVyQ29uZmlncywgdGhpcy5pc051bWJlcihhdHRyaWJ1dGVWYWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuREFURTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gY29sdW1uLmRhdGVGb3JtYXQgPyBjb2x1bW4uZGF0ZUZvcm1hdCA6IGxvY2FsZS5jYWxlbmRhci5kYXRlRm9ybWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQoYXR0cmlidXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZSA/IFwieWVzXCIgOiBcIm5vXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQocHJlZml4ICsgdmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuTElOSzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckNvbmZpZ3MucHJlZml4ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5zKGF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHVuaWZpZWRDb2x1bW5WYWx1ZXMgPSBjb2x1bW5WYWx1ZS5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWROdW1iZXIgPSB1bmlmaWVkQ29sdW1uVmFsdWVzXG4gICAgICAgICAgICAuc3BsaXQoc2VwYXJhdG9yKVxuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSA9PT0gdW5pbmZvcm1lZCkubGVuZ3RoO1xuXG4gICAgICAgIGxldCBmb3JtYXR0ZWRDb2x1bW5WYWx1ZTogc3RyaW5nIHwgSVRva2VuW107XG4gICAgICAgIGlmICh1bmluZm9ybWVkTnVtYmVyID09PSBjb2x1bW4uYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZENvbHVtblZhbHVlID0gdW5pbmZvcm1lZDtcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlMpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZENvbHVtblZhbHVlID0gW10uY29uY2F0LmFwcGx5KFtdLCBjb2x1bW5WYWx1ZS5maWx0ZXIodmFsdWVzID0+IHZhbHVlcyAhPT0gdW5pbmZvcm1lZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0dGVkQ29sdW1uVmFsdWUgPSB1bmlmaWVkQ29sdW1uVmFsdWVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgY29sdW1uVmFsdWU6IGZvcm1hdHRlZENvbHVtblZhbHVlLFxuICAgICAgICAgICAgYmFkZ2VDbGFzcyxcbiAgICAgICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgICAgIHVuaW5mb3JtZWQsXG4gICAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0Q29sdW1uVG9vbHRpcChjb2x1bW4udG9vbHRpcCksXG4gICAgICAgICAgICBvbkxpbmtDbGljazogY29sdW1uLm9uTGlua0NsaWNrLFxuICAgICAgICAgICAgb25Db2x1bW5DbGljazogY29sdW1uLm9uQ29sdW1uQ2xpY2tcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJhZGdlQ2xhc3ModmFsdWU6IHN0cmluZywgYmFkZ2VDb25maWdzOiBCYWRnZUNvbmZpZ3NbXSk6IEJhZGdlQ29sdW1uIHtcbiAgICAgICAgY29uc3QgYmFkZ2VDb2x1bW4gPSB7XG4gICAgICAgICAgICBcInNkcy1iYWRnZVwiOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNvbG9yID0gIGJhZGdlQ29uZmlncy5maW5kKGJhZGdlQ29uZmlnID0+IGJhZGdlQ29uZmlnLmVudW1WYWx1ZSA9PT0gdmFsdWUpPy5jb2xvci52YWx1ZU9mKCk7XG4gICAgICAgIGJhZGdlQ29sdW1uW2NvbG9yXSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGJhZGdlQ29sdW1uO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2NhbGUoc2NhbGU6IG51bWJlciB8ICgocm93VmFsdWU6IGFueSkgPT4gbnVtYmVyKSk6IG51bWJlciB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NhbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYWxlKHRoaXMucm93VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblRvb2x0aXAodG9vbHRpcDogc3RyaW5nIHwgKChyb3dWYWx1ZTogYW55KSA9PiBzdHJpbmcpKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRvb2x0aXAgIT09IHVuZGVmaW5lZCAmJiB0b29sdGlwICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRvb2x0aXAgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b29sdGlwKHRoaXMucm93VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEobmV3IEJpZ051bWJlcih2YWx1ZSkuaXNOYU4oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUb2tlbnModmFsdWVzOiBhbnkpOiBJVG9rZW5bXSB7XG4gICAgICAgIGlmICghdGhpcy5pc0FycmF5KHZhbHVlcykpIHRocm93IG5ldyBFcnJvcihcIlRvIHVzZSB0b2tlbnMgYW4gYXJyYXkgbXVzdCBiZSBpbmZvcm1lZFwiKTtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRUb2tlbkFycmF5KHZhbHVlcykpIHRocm93IG5ldyBFcnJvcihcIk5vdCBhIHZhbGlkIHRva2VuIGFycmF5LiBUb2tlbiBhcnJheSBtdXN0IGJlIGEgcHJpbWl0aXZlIHZhbHVlcyBhcnJheSBvciBhbiBvYmplY3RzIHdpdGggbGFiZWwgYXR0cmlidXRlIGFycmF5XCIpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXMpKSByZXR1cm4gdmFsdWVzO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgdmFsdWUgPT09IFwic3ltYm9sXCIgPyB2YWx1ZS50b1N0cmluZygpIDogYCR7dmFsdWV9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRUb2tlbkFycmF5KHZhbHVlczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNQcmltaXRpdmVWYWx1ZXNBcnJheSh2YWx1ZXMpIHx8IHRoaXMuaXNMYWJlbE9iamVjdEFycmF5KHZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ByaW1pdGl2ZVZhbHVlc0FycmF5KHZhbHVlczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IE9iamVjdCh2YWx1ZSkpLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHZhbHVlPy5sYWJlbCAhPT0gbnVsbCAmJiB2YWx1ZT8ubGFiZWwgIT09IHVuZGVmaW5lZCkubGVuZ3RoID09PSB2YWx1ZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTcGxpdHRlZFN0cmluZyhjb2x1bW46IENvbHVtblZhbHVlcyk6IHsgdmFsdWU6IHN0cmluZywgaXNVbmluZm9ybWVkOiBib29sZWFuLCBzZXBhcmF0b3I6IHN0cmluZyB9W10ge1xuICAgICAgICBjb25zdCB7IGNvbHVtblZhbHVlLCBzZXBhcmF0b3IsIHVuaW5mb3JtZWQgfSA9IGNvbHVtbjtcbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5WYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRTdHJpbmcgPSBjb2x1bW5WYWx1ZS5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICAgICAgcmV0dXJuIHNwbGl0dGVkU3RyaW5nLm1hcCgoc3RyaW5nLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTGFzdEluZGV4ID0gc3BsaXR0ZWRTdHJpbmcubGVuZ3RoIC0gMSA9PT0gaW5kZXg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgaXNVbmluZm9ybWVkOiBzdHJpbmcgPT09IHVuaW5mb3JtZWQsXG4gICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcjogIWlzTGFzdEluZGV4ID8gc2VwYXJhdG9yIDogXCJcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxPQUFPLEVBRUgsZ0NBQWdDLEVBQ25DLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUtILG1CQUFtQixFQUV0QixNQUFNLFVBQVUsQ0FBQztBQU9sQjtJQVVJLCtCQUNxQixnQkFBa0MsRUFDbEMsU0FBMkIsRUFDZSxrQkFBc0M7UUFGaEYscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNlLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFMOUYscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQU0xQyxDQUFDO0lBRUosMkNBQVcsR0FBWCxVQUFZLE9BQXNCO1FBQzlCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLDJEQUEyQixHQUFuQyxVQUFvQyxPQUFzQjs7UUFDdEQsSUFB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QUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O2dCQTlQc0MsZ0JBQWdCO2dCQUN2QixnQkFBZ0I7Z0RBQzNDLE1BQU0sU0FBQyxnQ0FBZ0M7O0lBWEk7UUFBL0MsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO2tFQUFtQztJQUV6RTtRQUFSLEtBQUssRUFBRTswREFBb0I7SUFDbkI7UUFBUixLQUFLLEVBQUU7MkRBQWdCO0lBQ2Y7UUFBUixLQUFLLEVBQUU7eURBQW1DO0lBTmxDLHFCQUFxQjtRQUxqQyxTQUFTLENBQUM7WUFDUCxtNkNBQTZDO1lBRTdDLFFBQVEsRUFBRSxpQkFBaUI7O1NBQzlCLENBQUM7UUFjTyxXQUFBLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO09BYnBDLHFCQUFxQixDQTBRakM7SUFBRCw0QkFBQztDQUFBLEFBMVFELElBMFFDO1NBMVFZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBJbmplY3QsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IGFwcGx5TWFzaywgTWFza0NvbmZpZyB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvbmcyLWN1cnJlbmN5LW1hc2tcIjtcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSBcImJpZ251bWJlci5qc1wiO1xuXG5pbXBvcnQge1xuICAgIEhvc3RQcm9qZWN0Q29uZmlncyxcbiAgICBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlblxufSBmcm9tIFwiLi4vLi4vLi4vYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7XG4gICAgQmFkZ2VDb2x1bW4sXG4gICAgQmFkZ2VDb25maWdzLFxuICAgIENvbHVtbixcbiAgICBDb2x1bW5WYWx1ZXMsXG4gICAgRW51bUNvbHVtbkZpZWxkVHlwZSxcbiAgICBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnNcbn0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS1jb2x1bW5zLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHNlbGVjdG9yOiBcInMtdGFibGUtY29sdW1uc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gICAgQFZpZXdDaGlsZChcImNvbHVtbnNUZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb2x1bW5zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zITogQ29sdW1uW107XG4gICAgQElucHV0KCkgcm93VmFsdWUhOiBhbnk7XG4gICAgQElucHV0KCkgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuXG4gICAgcHVibGljIGZvcm1hdHRlZENvbHVtbnM6IENvbHVtblZhbHVlc1tdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQEluamVjdChIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbikgcHJpdmF0ZSByZWFkb25seSBob3N0UHJvamVjdENvbmZpZ3M6IEhvc3RQcm9qZWN0Q29uZmlnc1xuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlcyk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1uc1RlbXBsYXRlKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnRBdHRyaWJ1dGVzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdjb2x1bW5zJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGFuZ2VzLnJvd1ZhbHVlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAncm93VmFsdWUnIGF0dHJpYnV0ZSBtdXN0IGJlIGluZm9ybWVkIVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoYW5nZXMubG9jYWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnbG9jYWxlJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgY29uc3Qgcm93VmFsdWU6IG9iamVjdCA9IGNoYW5nZXMucm93VmFsdWUuY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zdCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IGNoYW5nZXMubG9jYWxlLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gdGhpcy5mb3JtYXR0ZWRDb2x1bW5zLnB1c2godGhpcy5nZXRDb2x1bW5WYWx1ZShjb2x1bW4sIHJvd1ZhbHVlLCBsb2NhbGUpKSk7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jb2x1bW5zVGVtcGxhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbjogQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc2VwYXJhdG9yID8gY29sdW1uLnNlcGFyYXRvciA6IFwiIC0gXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvblByZWZpeChjb2x1bW46IENvbHVtbikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnByZWZpeCA/IGNvbHVtbi5wcmVmaXggOiBgJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5kb21haW59LiR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3Muc2VydmljZX0uYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVJbnZhbGlkKGF0dHJpYnV0ZVZhbHVlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlID09PSBudWxsIHx8IGF0dHJpYnV0ZVZhbHVlID09PSB1bmRlZmluZWQgfHwgKHRoaXMuaXNBcnJheShhdHRyaWJ1dGVWYWx1ZSkgJiYgIWF0dHJpYnV0ZVZhbHVlLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRDb2x1bW5WYWx1ZShjb2x1bW46IENvbHVtbiwgY29sdW1uVmFsdWU6IGFueVtdLCB1bmlmaWVkQ29sdW1uVmFsdWVzOiBzdHJpbmcsXG4gICAgICAgIHVuaW5mb3JtZWRUZXh0OiBzdHJpbmcsIHVuaW5mb3JtZWROdW1iZXI6IG51bWJlcikge1xuXG4gICAgICAgIGlmICh1bmluZm9ybWVkTnVtYmVyID09PSBjb2x1bW4uYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmluZm9ybWVkVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGNvbHVtblZhbHVlLmZpbHRlcih2YWx1ZXMgPT4gdmFsdWVzICE9PSB1bmluZm9ybWVkVGV4dCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuaWZpZWRDb2x1bW5WYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGU6IHN0cmluZywgcm93VmFsdWU6IG9iamVjdCkge1xuICAgICAgICBsZXQgYXR0cmlidXRlVmFsdWUhOiBhbnk7XG5cbiAgICAgICAgYXR0cmlidXRlXG4gICAgICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgICAgICAuZm9yRWFjaCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKCh2YWw6IHN0cmluZywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcm93VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gcm93VmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TnVtYmVyQ29uZmlncyhjb2x1bW46IENvbHVtbiwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmxvY2FsZS5udW1iZXIsXG4gICAgICAgICAgICBzY2FsZTogY29sdW1uLnNjYWxlICE9PSBudWxsICYmIGNvbHVtbi5zY2FsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldENvbHVtblNjYWxlKGNvbHVtbi5zY2FsZSlcbiAgICAgICAgICAgICAgICA6IGxvY2FsZS5udW1iZXIuc2NhbGUsXG4gICAgICAgICAgICBwcmVmaXg6IGAke2xvY2FsZS5udW1iZXIuY3VycmVuY3lTeW1ib2x9IGBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVGb3JtYXQoY29sdW1uOiBDb2x1bW4sIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uZGF0ZUZvcm1hdCA/IGNvbHVtbi5kYXRlRm9ybWF0IDogbG9jYWxlLmNhbGVuZGFyLmRhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5WYWx1ZShjb2x1bW46IENvbHVtbiwgcm93VmFsdWU6IG9iamVjdCwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpOiBDb2x1bW5WYWx1ZXMge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFRyYW5zbGF0aW9uUHJlZml4KGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIFwiZW1wdHlfbGFiZWxcIik7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gY29sdW1uLnN0eWxlO1xuICAgICAgICBsZXQgYmFkZ2VDbGFzczogQmFkZ2VDb2x1bW4gPSB7XG4gICAgICAgICAgICBcInNkcy1iYWRnZVwiOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlOiBhbnlbXSA9IGNvbHVtbi5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAubWFwKChhdHRyaWJ1dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5nZXRBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHJvd1ZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXR0cmlidXRlVmFsdWVJbnZhbGlkKGF0dHJpYnV0ZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5pbmZvcm1lZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJDb25maWdzID0gdGhpcy5nZXROdW1iZXJDb25maWdzKGNvbHVtbiwgbG9jYWxlKTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU06XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhZGdlQ29uZmlncz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2VDbGFzcyA9IHRoaXMuZ2V0QmFkZ2VDbGFzcyhhdHRyaWJ1dGVWYWx1ZSwgY29sdW1uLmJhZGdlQ29uZmlncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChjb2x1bW4uZW51bVByZWZpeCArIGF0dHJpYnV0ZVZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGx5TWFzayhhdHRyaWJ1dGVWYWx1ZSwgbnVtYmVyQ29uZmlncywgdGhpcy5pc051bWJlcihhdHRyaWJ1dGVWYWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRoaXMuZ2V0RGF0ZUZvcm1hdChjb2x1bW4sIGxvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50KGF0dHJpYnV0ZVZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlID8gXCJ5ZXNcIiA6IFwibm9cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIHZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyQ29uZmlncy5wcmVmaXggPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGx5TWFzayhhdHRyaWJ1dGVWYWx1ZSwgbnVtYmVyQ29uZmlncywgdGhpcy5pc051bWJlcihhdHRyaWJ1dGVWYWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUb2tlbnMoYXR0cmlidXRlVmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdW5pZmllZENvbHVtblZhbHVlcyA9IGNvbHVtblZhbHVlLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgdW5pbmZvcm1lZE51bWJlciA9IHVuaWZpZWRDb2x1bW5WYWx1ZXNcbiAgICAgICAgICAgIC5zcGxpdChzZXBhcmF0b3IpXG4gICAgICAgICAgICAuZmlsdGVyKHZhbHVlID0+IHZhbHVlID09PSB1bmluZm9ybWVkKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZENvbHVtblZhbHVlID0gdGhpcy5nZXRGb3JtYXR0ZWRDb2x1bW5WYWx1ZShjb2x1bW4sIGNvbHVtblZhbHVlLCB1bmlmaWVkQ29sdW1uVmFsdWVzLCB1bmluZm9ybWVkLCB1bmluZm9ybWVkTnVtYmVyKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgICBjb2x1bW5WYWx1ZTogZm9ybWF0dGVkQ29sdW1uVmFsdWUsXG4gICAgICAgICAgICBiYWRnZUNsYXNzLFxuICAgICAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICAgICAgdW5pbmZvcm1lZCxcbiAgICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxuICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5Ub29sdGlwKGNvbHVtbi50b29sdGlwKSxcbiAgICAgICAgICAgIG9uTGlua0NsaWNrOiBjb2x1bW4ub25MaW5rQ2xpY2ssXG4gICAgICAgICAgICBvbkNvbHVtbkNsaWNrOiBjb2x1bW4ub25Db2x1bW5DbGlja1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmFkZ2VDbGFzcyh2YWx1ZTogc3RyaW5nLCBiYWRnZUNvbmZpZ3M6IEJhZGdlQ29uZmlnc1tdKTogQmFkZ2VDb2x1bW4ge1xuICAgICAgICBjb25zdCBiYWRnZUNvbHVtbiA9IHtcbiAgICAgICAgICAgIFwic2RzLWJhZGdlXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29sb3IgPSAgYmFkZ2VDb25maWdzLmZpbmQoYmFkZ2VDb25maWcgPT4gYmFkZ2VDb25maWcuZW51bVZhbHVlID09PSB2YWx1ZSk/LmNvbG9yLnZhbHVlT2YoKTtcbiAgICAgICAgYmFkZ2VDb2x1bW5bY29sb3JdID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gYmFkZ2VDb2x1bW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5TY2FsZShzY2FsZTogbnVtYmVyIHwgKChyb3dWYWx1ZTogYW55KSA9PiBudW1iZXIpKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzY2FsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhbGUodGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjYWxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVG9vbHRpcCh0b29sdGlwOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAodG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIHRvb2x0aXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdG9vbHRpcCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXAodGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdG9vbHRpcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEobmV3IEJpZ051bWJlcih2YWx1ZSkuaXNOYU4oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUb2tlbnModmFsdWVzOiBhbnkpOiBJVG9rZW5bXSB7XG4gICAgICAgIGlmICghdGhpcy5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvIHVzZSB0b2tlbnMgYW4gYXJyYXkgbXVzdCBiZSBpbmZvcm1lZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkVG9rZW5BcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgYSB2YWxpZCB0b2tlbiBhcnJheS4gTXVzdCBiZSBhIHByaW1pdGl2ZSB2YWx1ZXMgYXJyYXkgb3IgYW4gb2JqZWN0cyB3aXRoIGxhYmVsIGF0dHJpYnV0ZSBhcnJheVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlc1xuICAgICAgICAgICAgLmZpbHRlcigodmFsdWU6IGFueSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzeW1ib2xcIiA/IHZhbHVlLnRvU3RyaW5nKCkgOiBgJHt2YWx1ZX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFRva2VuQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ByaW1pdGl2ZVZhbHVlc0FycmF5KHZhbHVlcykgfHwgdGhpcy5pc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gT2JqZWN0KHZhbHVlKSkubGVuZ3RoID09PSB2YWx1ZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNMYWJlbE9iamVjdEFycmF5KHZhbHVlczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWU/LmxhYmVsICE9PSBudWxsICYmIHZhbHVlPy5sYWJlbCAhPT0gdW5kZWZpbmVkKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNwbGl0dGVkU3RyaW5nKGNvbHVtbjogQ29sdW1uVmFsdWVzKTogeyB2YWx1ZTogc3RyaW5nLCBpc1VuaW5mb3JtZWQ6IGJvb2xlYW4sIHNlcGFyYXRvcjogc3RyaW5nIH1bXSB7XG4gICAgICAgIGNvbnN0IHsgY29sdW1uVmFsdWUsIHNlcGFyYXRvciwgdW5pbmZvcm1lZCB9ID0gY29sdW1uO1xuICAgICAgICBpZiAodHlwZW9mIGNvbHVtblZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZFN0cmluZyA9IGNvbHVtblZhbHVlLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgICAgICAgICByZXR1cm4gc3BsaXR0ZWRTdHJpbmcubWFwKChzdHJpbmcsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0SW5kZXggPSBzcGxpdHRlZFN0cmluZy5sZW5ndGggLSAxID09PSBpbmRleDtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBpc1VuaW5mb3JtZWQ6IHN0cmluZyA9PT0gdW5pbmZvcm1lZCxcbiAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yOiAhaXNMYXN0SW5kZXggPyBzZXBhcmF0b3IgOiBcIlwiXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIl19
@@ -15,11 +15,11 @@ var TimelineIconItemComponent = /** @class */ (function () {
15
15
  TimelineIconItemComponent = __decorate([
16
16
  Component({
17
17
  selector: "s-timeline-icon-item",
18
- template: "<ng-container *ngIf=\"item\">\n <div\n class=\"timeline__icon-item\"\n [ngClass]=\"{\n 'timeline__icon-item--small': item.testSize('small'),\n 'timeline__icon-item--normal': item.testSize('normal'),\n 'timeline__icon-item--warning': item.testSeverity('warning'),\n 'timeline__icon-item--error': item.testSeverity('error'),\n 'timeline__icon-item--completed': isComplete,\n 'timeline__icon-item--active': isActive\n }\">\n <div\n class=\"timeline__icon-item__icon\"\n [pTooltip]=\"item.tooltip\"\n tooltipPosition=\"top\">\n <ng-content *ngIf=\"item.icon; then icon_content; else label_text_content\"></ng-content>\n <ng-template #icon_content>\n <span\n class=\"fas\"\n [ngClass]=\"item.icon\">\n </span>\n </ng-template>\n <ng-template #label_text_content>\n <span class=\"timeline__icon-item__icon__label\">\n {{ item.label }}\n </span>\n </ng-template>\n </div>\n </div>\n</ng-container>\n",
18
+ template: "<ng-container *ngIf=\"item\">\n <div\n class=\"timeline__icon-item\"\n [ngClass]=\"{\n 'timeline__icon-item--small': item.testSize('small'),\n 'timeline__icon-item--normal': item.testSize('normal'),\n 'timeline__icon-item--warning': item.testSeverity('warning'),\n 'timeline__icon-item--error': item.testSeverity('error'),\n 'timeline__icon-item--completed': isComplete,\n 'timeline__icon-item--active': isActive\n }\">\n <div\n class=\"timeline__icon-item__icon\"\n [pTooltip]=\"item.tooltip\"\n tooltipPosition=\"top\">\n <ng-content *ngIf=\"item.icon; then icon_content; else label_text_content\"></ng-content>\n <ng-template #icon_content>\n <span [ngClass]=\"item.icon\"></span>\n </ng-template>\n <ng-template #label_text_content>\n <span class=\"timeline__icon-item__icon__label\">\n {{ item.label }}\n </span>\n </ng-template>\n </div>\n </div>\n</ng-container>\n",
19
19
  styles: [".timeline__icon-item .timeline__icon-item__icon{-ms-flex-align:center;align-items:center;background-color:#697882;border-radius:50%;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin:4px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.timeline__icon-item .timeline__icon-item__icon .timeline__icon-item__icon__label{font-family:\"Open Sans\",sans-serif}.timeline__icon-item.timeline__icon-item--small .timeline__icon-item__icon{font-size:0;height:16px;width:16px}.timeline__icon-item.timeline__icon-item--normal .timeline__icon-item__icon{font-size:10px;height:24px;padding:8px;width:24px}.timeline__icon-item.timeline__icon-item--normal .timeline__icon-item__icon .timeline__icon-item__icon__label{font-size:14px}.timeline__icon-item.timeline__icon-item--active .timeline__icon-item__icon{font-size:20px;height:40px;padding:10px;width:40px}.timeline__icon-item.timeline__icon-item--active .timeline__icon-item__icon .timeline__icon-item__icon__label{font-size:22px}.timeline__icon-item.timeline__icon-item--active .timeline__icon-item__icon,.timeline__icon-item.timeline__icon-item--completed .timeline__icon-item__icon{background-color:#0c9348}.timeline__icon-item.timeline__icon-item--warning.timeline__icon-item--active .timeline__icon-item__icon{background-color:#fcbf10;color:#333}.timeline__icon-item.timeline__icon-item--danger.timeline__icon-item--active .timeline__icon-item__icon{background-color:#f8931f;color:#333}.timeline__icon-item.timeline__icon-item--error.timeline__icon-item--active .timeline__icon-item__icon{background-color:#c13018}"]
20
20
  })
21
21
  ], TimelineIconItemComponent);
22
22
  return TimelineIconItemComponent;
23
23
  }());
24
24
  export { TimelineIconItemComponent };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaWNvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RpbWVsaW5lL2NvbXBvbmVudHMvdGltZWxpbmUtaWNvbi1pdGVtL3RpbWVsaW5lLWljb24taXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBU2pEO0lBQUE7SUFTQSxDQUFDO0lBUEU7UUFEQyxLQUFLLEVBQUU7MkRBQ2tCO0lBRzFCO1FBREMsS0FBSyxFQUFFOytEQUNpQjtJQUd6QjtRQURDLEtBQUssRUFBRTtpRUFDbUI7SUFSakIseUJBQXlCO1FBTHJDLFNBQVMsQ0FBQztZQUNSLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsMm1DQUFrRDs7U0FFcEQsQ0FBQztPQUNXLHlCQUF5QixDQVNyQztJQUFELGdDQUFDO0NBQUEsQUFURCxJQVNDO1NBVFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gXCIuLi8uLi9tb2RlbHNcIjtcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogXCJzLXRpbWVsaW5lLWljb24taXRlbVwiLFxuICAgdGVtcGxhdGVVcmw6IFwiLi90aW1lbGluZS1pY29uLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi90aW1lbGluZS1pY29uLWl0ZW0uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lSWNvbkl0ZW1Db21wb25lbnQge1xuICAgQElucHV0KClcbiAgIHB1YmxpYyBpdGVtOiBUaW1lbGluZUl0ZW07XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgaXNBY3RpdmU6IGJvb2xlYW47XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgaXNDb21wbGV0ZTogYm9vbGVhbjtcbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaWNvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RpbWVsaW5lL2NvbXBvbmVudHMvdGltZWxpbmUtaWNvbi1pdGVtL3RpbWVsaW5lLWljb24taXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBU2pEO0lBQUE7SUFTQSxDQUFDO0lBUEU7UUFEQyxLQUFLLEVBQUU7MkRBQ2tCO0lBRzFCO1FBREMsS0FBSyxFQUFFOytEQUNpQjtJQUd6QjtRQURDLEtBQUssRUFBRTtpRUFDbUI7SUFSakIseUJBQXlCO1FBTHJDLFNBQVMsQ0FBQztZQUNSLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsK2lDQUFrRDs7U0FFcEQsQ0FBQztPQUNXLHlCQUF5QixDQVNyQztJQUFELGdDQUFDO0NBQUEsQUFURCxJQVNDO1NBVFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gXCIuLi8uLi9tb2RlbHNcIjtcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogXCJzLXRpbWVsaW5lLWljb24taXRlbVwiLFxuICAgdGVtcGxhdGVVcmw6IFwiLi90aW1lbGluZS1pY29uLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi90aW1lbGluZS1pY29uLWl0ZW0uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lSWNvbkl0ZW1Db21wb25lbnQge1xuICAgQElucHV0KClcbiAgIHB1YmxpYyBpdGVtOiBUaW1lbGluZUl0ZW07XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgaXNBY3RpdmU6IGJvb2xlYW47XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgaXNDb21wbGV0ZTogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -3809,12 +3809,15 @@ let TableColumnsComponent = class TableColumnsComponent {
3809
3809
  }
3810
3810
  validateComponentAttributes(changes) {
3811
3811
  var _a, _b, _c;
3812
- if (!((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue))
3812
+ if (!((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue)) {
3813
3813
  throw new Error("The 'columns' attribute must be informed!");
3814
- if (!((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue))
3814
+ }
3815
+ if (!((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue)) {
3815
3816
  throw new Error("The 'rowValue' attribute must be informed!");
3816
- if (!((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue))
3817
+ }
3818
+ if (!((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue)) {
3817
3819
  throw new Error("The 'locale' attribute must be informed!");
3820
+ }
3818
3821
  }
3819
3822
  createColumnsTemplate(changes) {
3820
3823
  this.viewContainerRef.clear();
@@ -3824,13 +3827,60 @@ let TableColumnsComponent = class TableColumnsComponent {
3824
3827
  columns.forEach((column) => this.formattedColumns.push(this.getColumnValue(column, rowValue, locale)));
3825
3828
  this.viewContainerRef.createEmbeddedView(this.columnsTemplate);
3826
3829
  }
3830
+ getColumnSeparator(column) {
3831
+ return column.separator ? column.separator : " - ";
3832
+ }
3833
+ getTranslationPrefix(column) {
3834
+ return column.prefix ? column.prefix : `${this.hostProjectConfigs.domain}.${this.hostProjectConfigs.service}.`;
3835
+ }
3836
+ isAttributeValueInvalid(attributeValue) {
3837
+ return attributeValue === null || attributeValue === undefined || (this.isArray(attributeValue) && !attributeValue.length);
3838
+ }
3839
+ getFormattedColumnValue(column, columnValue, unifiedColumnValues, uninformedText, uninformedNumber) {
3840
+ if (uninformedNumber === column.attributes.length) {
3841
+ return uninformedText;
3842
+ }
3843
+ if (column.type === EnumColumnFieldType.TOKENS) {
3844
+ return [].concat.apply([], columnValue.filter(values => values !== uninformedText));
3845
+ }
3846
+ return unifiedColumnValues;
3847
+ }
3848
+ getAttributeValue(attribute, rowValue) {
3849
+ let attributeValue;
3850
+ attribute
3851
+ .split("/")
3852
+ .forEach((value) => {
3853
+ if (!attributeValue) {
3854
+ value
3855
+ .split(".")
3856
+ .forEach((val, i) => {
3857
+ if (!rowValue) {
3858
+ return;
3859
+ }
3860
+ if (i === 0) {
3861
+ attributeValue = rowValue[val];
3862
+ }
3863
+ else {
3864
+ if (attributeValue) {
3865
+ attributeValue = attributeValue[val];
3866
+ }
3867
+ }
3868
+ });
3869
+ }
3870
+ });
3871
+ return attributeValue;
3872
+ }
3873
+ getNumberConfigs(column, locale) {
3874
+ return Object.assign(Object.assign({}, locale.number), { scale: column.scale !== null && column.scale !== undefined
3875
+ ? this.getColumnScale(column.scale)
3876
+ : locale.number.scale, prefix: `${locale.number.currencySymbol} ` });
3877
+ }
3878
+ getDateFormat(column, locale) {
3879
+ return column.dateFormat ? column.dateFormat : locale.calendar.dateFormat;
3880
+ }
3827
3881
  getColumnValue(column, rowValue, locale) {
3828
- const prefix = column.prefix
3829
- ? column.prefix
3830
- : `${this.hostProjectConfigs.domain}.${this.hostProjectConfigs.service}.`;
3831
- const separator = column.separator
3832
- ? column.separator
3833
- : " - ";
3882
+ const prefix = this.getTranslationPrefix(column);
3883
+ const separator = this.getColumnSeparator(column);
3834
3884
  const uninformed = this.translate.instant(prefix + "empty_label");
3835
3885
  const style = column.style;
3836
3886
  let badgeClass = {
@@ -3838,69 +3888,40 @@ let TableColumnsComponent = class TableColumnsComponent {
3838
3888
  };
3839
3889
  const columnValue = column.attributes
3840
3890
  .map((attribute) => {
3841
- let attributeValue;
3842
- attribute
3843
- .split("/")
3844
- .forEach((value) => {
3845
- if (!attributeValue) {
3846
- value
3847
- .split(".")
3848
- .forEach((val, i) => {
3849
- if (rowValue) {
3850
- if (i === 0) {
3851
- attributeValue = rowValue[val];
3852
- }
3853
- else if (attributeValue) {
3854
- attributeValue = attributeValue[val];
3855
- }
3856
- }
3857
- });
3858
- }
3859
- });
3860
- if (attributeValue === null || attributeValue === undefined || (this.isArray(attributeValue) && !attributeValue.length)) {
3891
+ var _a;
3892
+ const attributeValue = this.getAttributeValue(attribute, rowValue);
3893
+ if (this.isAttributeValueInvalid(attributeValue)) {
3861
3894
  return uninformed;
3862
3895
  }
3863
- else {
3864
- const numberConfigs = Object.assign(Object.assign({}, locale.number), { scale: column.scale ? this.getColumnScale(column.scale) : locale.number.scale, prefix: `${locale.number.currencySymbol} ` });
3865
- switch (column.type) {
3866
- case EnumColumnFieldType.ENUM:
3867
- if (column.badgeConfigs && column.badgeConfigs.length) {
3868
- badgeClass = this.getBadgeClass(attributeValue, column.badgeConfigs);
3869
- }
3870
- return this.translate.instant(column.enumPrefix + attributeValue.toString().toLowerCase());
3871
- case EnumColumnFieldType.CURRENCY:
3872
- return applyMask(attributeValue, numberConfigs, this.isNumber(attributeValue));
3873
- case EnumColumnFieldType.DATE:
3874
- const dateFormat = column.dateFormat ? column.dateFormat : locale.calendar.dateFormat;
3875
- return moment_(attributeValue).format(dateFormat);
3876
- case EnumColumnFieldType.BOOLEAN:
3877
- const value = attributeValue ? "yes" : "no";
3878
- return this.translate.instant(prefix + value);
3879
- case EnumColumnFieldType.LINK:
3880
- case EnumColumnFieldType.STRING:
3881
- return attributeValue;
3882
- case EnumColumnFieldType.NUMBER:
3883
- numberConfigs.prefix = "";
3884
- return applyMask(attributeValue, numberConfigs, this.isNumber(attributeValue));
3885
- case EnumColumnFieldType.TOKENS:
3886
- return this.getTokens(attributeValue);
3887
- }
3896
+ const numberConfigs = this.getNumberConfigs(column, locale);
3897
+ switch (column.type) {
3898
+ case EnumColumnFieldType.ENUM:
3899
+ if ((_a = column.badgeConfigs) === null || _a === void 0 ? void 0 : _a.length) {
3900
+ badgeClass = this.getBadgeClass(attributeValue, column.badgeConfigs);
3901
+ }
3902
+ return this.translate.instant(column.enumPrefix + attributeValue.toString().toLowerCase());
3903
+ case EnumColumnFieldType.CURRENCY:
3904
+ return applyMask(attributeValue, numberConfigs, this.isNumber(attributeValue));
3905
+ case EnumColumnFieldType.DATE:
3906
+ const dateFormat = this.getDateFormat(column, locale);
3907
+ return moment_(attributeValue).format(dateFormat);
3908
+ case EnumColumnFieldType.BOOLEAN:
3909
+ const value = attributeValue ? "yes" : "no";
3910
+ return this.translate.instant(prefix + value);
3911
+ case EnumColumnFieldType.NUMBER:
3912
+ numberConfigs.prefix = "";
3913
+ return applyMask(attributeValue, numberConfigs, this.isNumber(attributeValue));
3914
+ case EnumColumnFieldType.TOKENS:
3915
+ return this.getTokens(attributeValue);
3916
+ default:
3917
+ return attributeValue;
3888
3918
  }
3889
3919
  });
3890
3920
  const unifiedColumnValues = columnValue.join(separator);
3891
3921
  const uninformedNumber = unifiedColumnValues
3892
3922
  .split(separator)
3893
3923
  .filter(value => value === uninformed).length;
3894
- let formattedColumnValue;
3895
- if (uninformedNumber === column.attributes.length) {
3896
- formattedColumnValue = uninformed;
3897
- }
3898
- else if (column.type === EnumColumnFieldType.TOKENS) {
3899
- formattedColumnValue = [].concat.apply([], columnValue.filter(values => values !== uninformed));
3900
- }
3901
- else {
3902
- formattedColumnValue = unifiedColumnValues;
3903
- }
3924
+ const formattedColumnValue = this.getFormattedColumnValue(column, columnValue, unifiedColumnValues, uninformed, uninformedNumber);
3904
3925
  return {
3905
3926
  style,
3906
3927
  columnValue: formattedColumnValue,
@@ -3935,18 +3956,21 @@ let TableColumnsComponent = class TableColumnsComponent {
3935
3956
  }
3936
3957
  return tooltip;
3937
3958
  }
3959
+ return "";
3938
3960
  }
3939
3961
  isNumber(value) {
3940
3962
  return !(new BigNumber(value).isNaN());
3941
3963
  }
3942
3964
  getTokens(values) {
3943
- if (!this.isArray(values))
3965
+ if (!this.isArray(values)) {
3944
3966
  throw new Error("To use tokens an array must be informed");
3945
- // tslint:disable-next-line: max-line-length
3946
- if (!this.isValidTokenArray(values))
3947
- throw new Error("Not a valid token array. Token array must be a primitive values array or an objects with label attribute array");
3948
- if (this.isLabelObjectArray(values))
3967
+ }
3968
+ if (!this.isValidTokenArray(values)) {
3969
+ throw new Error("Not a valid token array. Must be a primitive values array or an objects with label attribute array");
3970
+ }
3971
+ if (this.isLabelObjectArray(values)) {
3949
3972
  return values;
3973
+ }
3950
3974
  return values
3951
3975
  .filter((value) => value !== undefined && value !== null)
3952
3976
  .map((value) => {
@@ -3981,6 +4005,7 @@ let TableColumnsComponent = class TableColumnsComponent {
3981
4005
  };
3982
4006
  });
3983
4007
  }
4008
+ return null;
3984
4009
  }
3985
4010
  };
3986
4011
  TableColumnsComponent.ctorParameters = () => [
@@ -6904,7 +6929,7 @@ __decorate([
6904
6929
  TimelineIconItemComponent = __decorate([
6905
6930
  Component({
6906
6931
  selector: "s-timeline-icon-item",
6907
- template: "<ng-container *ngIf=\"item\">\n <div\n class=\"timeline__icon-item\"\n [ngClass]=\"{\n 'timeline__icon-item--small': item.testSize('small'),\n 'timeline__icon-item--normal': item.testSize('normal'),\n 'timeline__icon-item--warning': item.testSeverity('warning'),\n 'timeline__icon-item--error': item.testSeverity('error'),\n 'timeline__icon-item--completed': isComplete,\n 'timeline__icon-item--active': isActive\n }\">\n <div\n class=\"timeline__icon-item__icon\"\n [pTooltip]=\"item.tooltip\"\n tooltipPosition=\"top\">\n <ng-content *ngIf=\"item.icon; then icon_content; else label_text_content\"></ng-content>\n <ng-template #icon_content>\n <span\n class=\"fas\"\n [ngClass]=\"item.icon\">\n </span>\n </ng-template>\n <ng-template #label_text_content>\n <span class=\"timeline__icon-item__icon__label\">\n {{ item.label }}\n </span>\n </ng-template>\n </div>\n </div>\n</ng-container>\n",
6932
+ template: "<ng-container *ngIf=\"item\">\n <div\n class=\"timeline__icon-item\"\n [ngClass]=\"{\n 'timeline__icon-item--small': item.testSize('small'),\n 'timeline__icon-item--normal': item.testSize('normal'),\n 'timeline__icon-item--warning': item.testSeverity('warning'),\n 'timeline__icon-item--error': item.testSeverity('error'),\n 'timeline__icon-item--completed': isComplete,\n 'timeline__icon-item--active': isActive\n }\">\n <div\n class=\"timeline__icon-item__icon\"\n [pTooltip]=\"item.tooltip\"\n tooltipPosition=\"top\">\n <ng-content *ngIf=\"item.icon; then icon_content; else label_text_content\"></ng-content>\n <ng-template #icon_content>\n <span [ngClass]=\"item.icon\"></span>\n </ng-template>\n <ng-template #label_text_content>\n <span class=\"timeline__icon-item__icon__label\">\n {{ item.label }}\n </span>\n </ng-template>\n </div>\n </div>\n</ng-container>\n",
6908
6933
  styles: [".timeline__icon-item .timeline__icon-item__icon{-ms-flex-align:center;align-items:center;background-color:#697882;border-radius:50%;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin:4px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.timeline__icon-item .timeline__icon-item__icon .timeline__icon-item__icon__label{font-family:\"Open Sans\",sans-serif}.timeline__icon-item.timeline__icon-item--small .timeline__icon-item__icon{font-size:0;height:16px;width:16px}.timeline__icon-item.timeline__icon-item--normal .timeline__icon-item__icon{font-size:10px;height:24px;padding:8px;width:24px}.timeline__icon-item.timeline__icon-item--normal .timeline__icon-item__icon .timeline__icon-item__icon__label{font-size:14px}.timeline__icon-item.timeline__icon-item--active .timeline__icon-item__icon{font-size:20px;height:40px;padding:10px;width:40px}.timeline__icon-item.timeline__icon-item--active .timeline__icon-item__icon .timeline__icon-item__icon__label{font-size:22px}.timeline__icon-item.timeline__icon-item--active .timeline__icon-item__icon,.timeline__icon-item.timeline__icon-item--completed .timeline__icon-item__icon{background-color:#0c9348}.timeline__icon-item.timeline__icon-item--warning.timeline__icon-item--active .timeline__icon-item__icon{background-color:#fcbf10;color:#333}.timeline__icon-item.timeline__icon-item--danger.timeline__icon-item--active .timeline__icon-item__icon{background-color:#f8931f;color:#333}.timeline__icon-item.timeline__icon-item--error.timeline__icon-item--active .timeline__icon-item__icon{background-color:#c13018}"]
6909
6934
  })
6910
6935
  ], TimelineIconItemComponent);