ng-prime-tools 1.0.63 → 1.0.64

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,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1zdHlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL3RleHQtc3R5bGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVGV4dFN0eWxlIHtcbiAgdGV4dDogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZm9udFNpemU/OiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1zdHlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL3RleHQtc3R5bGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVGV4dFN0eWxlIHtcbiAgdGV4dDogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZm9udFNpemU/OiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ/OiBzdHJpbmc7XG4gIHBvc2l0aW9uPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xufVxuIl19
@@ -14,19 +14,20 @@ export class PTMetricCardComponent {
14
14
  static { this.DEFAULT_ADDITIONAL_INFO_SIZE = '14px'; }
15
15
  static { this.DEFAULT_BACKGROUND_COLOR = '#fff'; }
16
16
  isIconObject() {
17
- return typeof this.cardData.icon === 'object';
17
+ return (typeof this.cardData.icon === 'object' && this.cardData.icon !== null);
18
18
  }
19
19
  isTitleObject() {
20
- return typeof this.cardData.title === 'object';
20
+ return (typeof this.cardData.title === 'object' && this.cardData.title !== null);
21
21
  }
22
22
  isValueObject() {
23
- return typeof this.cardData.value === 'object';
23
+ return (typeof this.cardData.value === 'object' && this.cardData.value !== null);
24
24
  }
25
25
  isLabelObject(label) {
26
- return typeof label === 'object';
26
+ return typeof label === 'object' && label !== null;
27
27
  }
28
28
  isAdditionalInfoObject() {
29
- return typeof this.cardData.additionalInfo === 'object';
29
+ return (typeof this.cardData.additionalInfo === 'object' &&
30
+ this.cardData.additionalInfo !== null);
30
31
  }
31
32
  getIconText() {
32
33
  return this.isIconObject()
@@ -36,35 +37,34 @@ export class PTMetricCardComponent {
36
37
  getTitleText() {
37
38
  return this.isTitleObject()
38
39
  ? this.cardData.title.text
39
- : this.cardData.title;
40
+ : this.cardData.title || '';
40
41
  }
41
42
  getValueText() {
42
43
  return this.isValueObject()
43
44
  ? this.cardData.value.text
44
- : this.cardData.value;
45
+ : this.cardData.value || '';
45
46
  }
46
47
  getLabelText() {
47
48
  const label = this.cardData.value?.label;
48
49
  return this.isLabelObject(label)
49
50
  ? label.text
50
- : label;
51
+ : label || '';
51
52
  }
52
53
  getAdditionalInfoText() {
53
54
  return this.isAdditionalInfoObject()
54
55
  ? this.cardData.additionalInfo.text
55
- : this.cardData.additionalInfo;
56
+ : this.cardData.additionalInfo || '';
56
57
  }
57
58
  getIconStyles() {
58
59
  if (this.isIconObject()) {
59
60
  const icon = this.cardData.icon;
60
- const shape = icon.shape || 'circular'; // Default to 'circular' if not specified
61
- // Determine border radius based on shape
61
+ const shape = icon.shape || 'circular';
62
62
  const borderRadius = shape === 'circular' ? '50%' : '8px';
63
63
  return {
64
64
  color: icon.color || PTMetricCardComponent.DEFAULT_ICON_COLOR,
65
65
  fontSize: icon.fontSize || PTMetricCardComponent.DEFAULT_ICON_SIZE,
66
- 'background-color': icon.backgroundColor || 'transparent',
67
- 'border-radius': borderRadius,
66
+ backgroundColor: icon.backgroundColor || 'transparent',
67
+ borderRadius,
68
68
  padding: '6px',
69
69
  display: 'inline-block',
70
70
  };
@@ -85,19 +85,43 @@ export class PTMetricCardComponent {
85
85
  getValueStyles() {
86
86
  if (this.isValueObject()) {
87
87
  const value = this.cardData.value;
88
+ const position = value.position || 'left';
88
89
  return {
89
90
  color: value.color || PTMetricCardComponent.DEFAULT_VALUE_COLOR,
90
91
  fontSize: value.fontSize || PTMetricCardComponent.DEFAULT_VALUE_SIZE,
91
92
  fontWeight: value.fontWeight || 'bold',
93
+ textAlign: position,
94
+ width: '100%',
95
+ display: 'flex',
96
+ justifyContent: position === 'center'
97
+ ? 'center'
98
+ : position === 'right'
99
+ ? 'flex-end'
100
+ : 'flex-start',
101
+ alignItems: 'center',
92
102
  };
93
103
  }
94
- else {
104
+ return {
105
+ color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,
106
+ fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,
107
+ fontWeight: 'bold',
108
+ textAlign: 'left',
109
+ width: '100%',
110
+ display: 'flex',
111
+ justifyContent: 'flex-start',
112
+ alignItems: 'center',
113
+ };
114
+ }
115
+ getValueTextStyles() {
116
+ if (this.isValueObject()) {
117
+ const value = this.cardData.value;
95
118
  return {
96
- color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,
97
- fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,
98
- fontWeight: 'bold',
119
+ textAlign: value.position || 'left',
99
120
  };
100
121
  }
122
+ return {
123
+ textAlign: 'left',
124
+ };
101
125
  }
102
126
  getLabelStyles(position) {
103
127
  const label = this.cardData.value?.label;
@@ -111,13 +135,11 @@ export class PTMetricCardComponent {
111
135
  fontWeight: label.fontWeight || 'normal',
112
136
  };
113
137
  }
114
- else {
115
- return {
116
- color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,
117
- fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,
118
- fontWeight: 'normal',
119
- };
120
- }
138
+ return {
139
+ color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,
140
+ fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,
141
+ fontWeight: 'normal',
142
+ };
121
143
  }
122
144
  getAdditionalInfoStyles() {
123
145
  if (this.isAdditionalInfoObject()) {
@@ -130,13 +152,11 @@ export class PTMetricCardComponent {
130
152
  fontWeight: additionalInfo.fontWeight || 'normal',
131
153
  };
132
154
  }
133
- else {
134
- return {
135
- color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,
136
- fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,
137
- fontWeight: 'normal',
138
- };
139
- }
155
+ return {
156
+ color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,
157
+ fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,
158
+ fontWeight: 'normal',
159
+ };
140
160
  }
141
161
  isLabelOnLeft() {
142
162
  const label = this.cardData.value?.label;
@@ -148,27 +168,27 @@ export class PTMetricCardComponent {
148
168
  }
149
169
  getMetricCardContainerStyle() {
150
170
  return {
151
- 'min-width': this.cardData.size?.minWidth || '100%',
152
- 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',
171
+ minWidth: this.cardData.size?.minWidth || '100%',
172
+ maxWidth: this.cardData.size?.maxWidth || 'calc(25% - 16px)',
153
173
  width: this.cardData.size?.fixedWidth || 'auto',
154
174
  };
155
175
  }
156
176
  getMetricCardStyle() {
157
177
  return {
158
- 'background-color': this.cardData.appearance?.backgroundColor ||
178
+ backgroundColor: this.cardData.appearance?.backgroundColor ||
159
179
  PTMetricCardComponent.DEFAULT_BACKGROUND_COLOR,
160
- 'min-width': this.cardData.size?.minWidth || '100%',
161
- 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',
180
+ minWidth: this.cardData.size?.minWidth || '100%',
181
+ maxWidth: this.cardData.size?.maxWidth || 'calc(25% - 16px)',
162
182
  width: this.cardData.size?.fixedWidth || 'auto',
163
183
  };
164
184
  }
165
185
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMetricCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
166
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMetricCardComponent, selector: "pt-metric-card", inputs: { cardData: "cardData" }, ngImport: i0, template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8'\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between}.metric-number{font-weight:700}.metric-label{margin-left:8px}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}.metric-card-header-text{margin-left:6px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMetricCardComponent, selector: "pt-metric-card", inputs: { cardData: "cardData" }, ngImport: i0, template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8',\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span class=\"metric-value-text\" [ngStyle]=\"getValueTextStyles()\">\n {{ getValueText() }}\n </span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0;width:100%}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-header-text{margin-left:6px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between;width:100%;flex:1}.metric-value{width:100%;display:flex;align-items:center;gap:6px;box-sizing:border-box}.metric-value-text{display:inline-block;width:100%;line-height:1.2}.metric-number{font-weight:700}.metric-label,.value-label{margin-left:8px;white-space:nowrap}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
167
187
  }
168
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMetricCardComponent, decorators: [{
169
189
  type: Component,
170
- args: [{ selector: 'pt-metric-card', template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8'\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between}.metric-number{font-weight:700}.metric-label{margin-left:8px}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}.metric-card-header-text{margin-left:6px}\n"] }]
190
+ args: [{ selector: 'pt-metric-card', template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8',\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span class=\"metric-value-text\" [ngStyle]=\"getValueTextStyles()\">\n {{ getValueText() }}\n </span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0;width:100%}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-header-text{margin-left:6px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between;width:100%;flex:1}.metric-value{width:100%;display:flex;align-items:center;gap:6px;box-sizing:border-box}.metric-value-text{display:inline-block;width:100%;line-height:1.2}.metric-number{font-weight:700}.metric-label,.value-label{margin-left:8px;white-space:nowrap}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}\n"] }]
171
191
  }], propDecorators: { cardData: [{
172
192
  type: Input
173
193
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWV0cmljLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9wdC1tZXRyaWMtY2FyZC9wdC1tZXRyaWMtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1ldHJpYy1jYXJkL3B0LW1ldHJpYy1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFjakQsTUFBTSxPQUFPLHFCQUFxQjthQUNSLHVCQUFrQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQy9CLHNCQUFpQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzNCLHdCQUFtQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQ2hDLHVCQUFrQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzVCLHdCQUFtQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQ2hDLHVCQUFrQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzVCLHdCQUFtQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQ2hDLHVCQUFrQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzVCLGtDQUE2QixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQ3ZDLGlDQUE0QixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQ3RDLDZCQUF3QixHQUFHLE1BQU0sQUFBVCxDQUFVO0lBSTFELFlBQVk7UUFDVixPQUFPLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQztJQUNqRCxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sT0FB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QUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksTUFBTTtZQUNuRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQjtZQUMvRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLE1BQU07U0FDaEQsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTztZQUNMLGtCQUFrQixFQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxlQUFlO2dCQUN6QyxxQkFBcUIsQ0FBQyx3QkFBd0I7WUFDaEQsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxNQUFNO1lBQ25ELFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCO1lBQy9ELEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksTUFBTTtTQUNoRCxDQUFDO0lBQ0osQ0FBQzsrR0EvTFUscUJBQXFCO21HQUFyQixxQkFBcUIsd0ZDZGxDLGlsRUEwRUE7OzRGRDVEYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQWlCakIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIExhYmVsU2V0dGluZyxcbiAgTWV0cmljQ2FyZERhdGEsXG4gIFZhbHVlU2V0dGluZyxcbiAgSWNvblN0eWxlLFxuICBUZXh0U3R5bGUsXG59IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LW1ldHJpYy1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LW1ldHJpYy1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbWV0cmljLWNhcmQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVE1ldHJpY0NhcmRDb21wb25lbnQge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzVhNjdkOCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9TSVpFID0gJzI0cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RJVExFX0NPTE9SID0gJyM1YTY3ZDgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RJVExFX1NJWkUgPSAnMTZweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVkFMVUVfQ09MT1IgPSAnIzJkMzc0OCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVkFMVUVfU0laRSA9ICczMnB4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MQUJFTF9DT0xPUiA9ICcjNzE4MDk2JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MQUJFTF9TSVpFID0gJzE0cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0FERElUSU9OQUxfSU5GT19DT0xPUiA9ICdncmF5JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BRERJVElPTkFMX0lORk9fU0laRSA9ICcxNHB4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyNmZmYnO1xuXG4gIEBJbnB1dCgpIGNhcmREYXRhITogTWV0cmljQ2FyZERhdGE7XG5cbiAgaXNJY29uT2JqZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5jYXJkRGF0YS5pY29uID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIGlzVGl0bGVPYmplY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmNhcmREYXRhLnRpdGxlID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIGlzVmFsdWVPYmplY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmNhcmREYXRhLnZhbHVlID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIGlzTGFiZWxPYmplY3QobGFiZWw6IExhYmVsU2V0dGluZyB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdvYmplY3QnO1xuICB9XG5cbiAgaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuY2FyZERhdGEuYWRkaXRpb25hbEluZm8gPT09ICdvYmplY3QnO1xuICB9XG5cbiAgZ2V0SWNvblRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ljb25PYmplY3QoKVxuICAgICAgPyAodGhpcy5jYXJkRGF0YS5pY29uIGFzIEljb25TdHlsZSkuY29kZVxuICAgICAgOiAodGhpcy5jYXJkRGF0YS5pY29uIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRUaXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1RpdGxlT2JqZWN0KClcbiAgICAgID8gKHRoaXMuY2FyZERhdGEudGl0bGUgYXMgVGV4dFN0eWxlKS50ZXh0XG4gICAgICA6ICh0aGlzLmNhcmREYXRhLnRpdGxlIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRWYWx1ZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbHVlT2JqZWN0KClcbiAgICAgID8gKHRoaXMuY2FyZERhdGEudmFsdWUgYXMgVmFsdWVTZXR0aW5nKS50ZXh0XG4gICAgICA6ICh0aGlzLmNhcmREYXRhLnZhbHVlIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRMYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYWJlbCA9ICh0aGlzLmNhcmREYXRhLnZhbHVlIGFzIFZhbHVlU2V0dGluZyk/LmxhYmVsO1xuICAgIHJldHVybiB0aGlzLmlzTGFiZWxPYmplY3QobGFiZWwpXG4gICAgICA/IChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLnRleHRcbiAgICAgIDogKGxhYmVsIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRBZGRpdGlvbmFsSW5mb1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0FkZGl0aW9uYWxJbmZvT2JqZWN0KClcbiAgICAgID8gKHRoaXMuY2FyZERhdGEuYWRkaXRpb25hbEluZm8gYXMgVGV4dFN0eWxlKS50ZXh0XG4gICAgICA6ICh0aGlzLmNhcmREYXRhLmFkZGl0aW9uYWxJbmZvIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRJY29uU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzSWNvbk9iamVjdCgpKSB7XG4gICAgICBjb25zdCBpY29uID0gdGhpcy5jYXJkRGF0YS5pY29uIGFzIEljb25TdHlsZTtcbiAgICAgIGNvbnN0IHNoYXBlID0gaWNvbi5zaGFwZSB8fCAnY2lyY3VsYXInOyAvLyBEZWZhdWx0IHRvICdjaXJjdWxhcicgaWYgbm90IHNwZWNpZmllZFxuXG4gICAgICAvLyBEZXRlcm1pbmUgYm9yZGVyIHJhZGl1cyBiYXNlZCBvbiBzaGFwZVxuICAgICAgY29uc3QgYm9yZGVyUmFkaXVzID0gc2hhcGUgPT09ICdjaXJjdWxhcicgPyAnNTAlJyA6ICc4cHgnO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogaWNvbi5jb2xvciB8fCBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTogaWNvbi5mb250U2l6ZSB8fCBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9JQ09OX1NJWkUsXG4gICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogaWNvbi5iYWNrZ3JvdW5kQ29sb3IgfHwgJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiBib3JkZXJSYWRpdXMsXG4gICAgICAgIHBhZGRpbmc6ICc2cHgnLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGdldFRpdGxlU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzVGl0bGVPYmplY3QoKSkge1xuICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmNhcmREYXRhLnRpdGxlIGFzIFRleHRTdHlsZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiB0aXRsZS5jb2xvciB8fCBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9USVRMRV9DT0xPUixcbiAgICAgICAgZm9udFNpemU6IHRpdGxlLmZvbnRTaXplIHx8IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX1RJVExFX1NJWkUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRpdGxlLmZvbnRXZWlnaHQgfHwgJ25vcm1hbCcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBnZXRWYWx1ZVN0eWxlcygpIHtcbiAgICBpZiAodGhpcy5pc1ZhbHVlT2JqZWN0KCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jYXJkRGF0YS52YWx1ZSBhcyBWYWx1ZVNldHRpbmc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogdmFsdWUuY29sb3IgfHwgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfVkFMVUVfQ09MT1IsXG4gICAgICAgIGZvbnRTaXplOiB2YWx1ZS5mb250U2l6ZSB8fCBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9WQUxVRV9TSVpFLFxuICAgICAgICBmb250V2VpZ2h0OiB2YWx1ZS5mb250V2VpZ2h0IHx8ICdib2xkJyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9WQUxVRV9DT0xPUixcbiAgICAgICAgZm9udFNpemU6IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX1ZBTFVFX1NJWkUsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgZ2V0TGFiZWxTdHlsZXMocG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcpIHtcbiAgICBjb25zdCBsYWJlbCA9ICh0aGlzLmNhcmREYXRhLnZhbHVlIGFzIFZhbHVlU2V0dGluZyk/LmxhYmVsO1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNMYWJlbE9iamVjdChsYWJlbCkgJiZcbiAgICAgIChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLnBvc2l0aW9uID09PSBwb3NpdGlvblxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6XG4gICAgICAgICAgKGxhYmVsIGFzIExhYmVsU2V0dGluZykuY29sb3IgfHxcbiAgICAgICAgICBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9MQUJFTF9DT0xPUixcbiAgICAgICAgZm9udFNpemU6XG4gICAgICAgICAgKGxhYmVsIGFzIExhYmVsU2V0dGluZykuZm9udFNpemUgfHxcbiAgICAgICAgICBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9MQUJFTF9TSVpFLFxuICAgICAgICBmb250V2VpZ2h0OiAobGFiZWwgYXMgTGFiZWxTZXR0aW5nKS5mb250V2VpZ2h0IHx8ICdub3JtYWwnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX0xBQkVMX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTogUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfTEFCRUxfU0laRSxcbiAgICAgICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGdldEFkZGl0aW9uYWxJbmZvU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzQWRkaXRpb25hbEluZm9PYmplY3QoKSkge1xuICAgICAgY29uc3QgYWRkaXRpb25hbEluZm8gPSB0aGlzLmNhcmREYXRhLmFkZGl0aW9uYWxJbmZvIGFzIFRleHRTdHlsZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOlxuICAgICAgICAgIGFkZGl0aW9uYWxJbmZvLmNvbG9yIHx8XG4gICAgICAgICAgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfQURESVRJT05BTF9JTkZPX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTpcbiAgICAgICAgICBhZGRpdGlvbmFsSW5mby5mb250U2l6ZSB8fFxuICAgICAgICAgIFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX0FERElUSU9OQUxfSU5GT19TSVpFLFxuICAgICAgICBmb250V2VpZ2h0OiBhZGRpdGlvbmFsSW5mby5mb250V2VpZ2h0IHx8ICdub3JtYWwnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX0FERElUSU9OQUxfSU5GT19DT0xPUixcbiAgICAgICAgZm9udFNpemU6IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX0FERElUSU9OQUxfSU5GT19TSVpFLFxuICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgaXNMYWJlbE9uTGVmdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYWJlbCA9ICh0aGlzLmNhcmREYXRhLnZhbHVlIGFzIFZhbHVlU2V0dGluZyk/LmxhYmVsO1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzTGFiZWxPYmplY3QobGFiZWwpICYmIChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLnBvc2l0aW9uID09PSAnbGVmdCdcbiAgICApO1xuICB9XG5cbiAgaXNMYWJlbE9uUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFiZWwgPSAodGhpcy5jYXJkRGF0YS52YWx1ZSBhcyBWYWx1ZVNldHRpbmcpPy5sYWJlbDtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0xhYmVsT2JqZWN0KGxhYmVsKSAmJiAobGFiZWwgYXMgTGFiZWxTZXR0aW5nKS5wb3NpdGlvbiA9PT0gJ3JpZ2h0J1xuICAgICk7XG4gIH1cblxuICBnZXRNZXRyaWNDYXJkQ29udGFpbmVyU3R5bGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdtaW4td2lkdGgnOiB0aGlzLmNhcmREYXRhLnNpemU/Lm1pbldpZHRoIHx8ICcxMDAlJyxcbiAgICAgICdtYXgtd2lkdGgnOiB0aGlzLmNhcmREYXRhLnNpemU/Lm1heFdpZHRoIHx8ICdjYWxjKDI1JSAtIDE2cHgpJyxcbiAgICAgIHdpZHRoOiB0aGlzLmNhcmREYXRhLnNpemU/LmZpeGVkV2lkdGggfHwgJ2F1dG8nLFxuICAgIH07XG4gIH1cblxuICBnZXRNZXRyaWNDYXJkU3R5bGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzpcbiAgICAgICAgdGhpcy5jYXJkRGF0YS5hcHBlYXJhbmNlPy5iYWNrZ3JvdW5kQ29sb3IgfHxcbiAgICAgICAgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfQkFDS0dST1VORF9DT0xPUixcbiAgICAgICdtaW4td2lkdGgnOiB0aGlzLmNhcmREYXRhLnNpemU/Lm1pbldpZHRoIHx8ICcxMDAlJyxcbiAgICAgICdtYXgtd2lkdGgnOiB0aGlzLmNhcmREYXRhLnNpemU/Lm1heFdpZHRoIHx8ICdjYWxjKDI1JSAtIDE2cHgpJyxcbiAgICAgIHdpZHRoOiB0aGlzLmNhcmREYXRhLnNpemU/LmZpeGVkV2lkdGggfHwgJ2F1dG8nLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZC1jb250YWluZXJcIiBbbmdTdHlsZV09XCJnZXRNZXRyaWNDYXJkQ29udGFpbmVyU3R5bGUoKVwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJjYXJkRGF0YS52ZXJ0aWNhbExpbmU/LnNob3dcIlxuICAgIGNsYXNzPVwidmVydGljYWwtbGluZVwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBjYXJkRGF0YS52ZXJ0aWNhbExpbmU/LmNvbG9yIHx8ICcjNWE2N2Q4J1xuICAgIH1cIlxuICA+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCIgW25nU3R5bGVdPVwiZ2V0TWV0cmljQ2FyZFN0eWxlKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmQtaGVhZGVyXCI+XG4gICAgICA8aVxuICAgICAgICAqbmdJZj1cImlzSWNvbk9iamVjdCgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SWNvblRleHQoKVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldEljb25TdHlsZXMoKVwiXG4gICAgICA+PC9pPlxuICAgICAgPGkgKm5nSWY9XCIhaXNJY29uT2JqZWN0KClcIiBbbmdDbGFzc109XCJjYXJkRGF0YS5pY29uXCI+PC9pPlxuXG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cImlzVGl0bGVPYmplY3QoKVwiXG4gICAgICAgIGNsYXNzPVwibWV0cmljLWNhcmQtaGVhZGVyLXRleHRcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRUaXRsZVN0eWxlcygpXCJcbiAgICAgID5cbiAgICAgICAge3sgZ2V0VGl0bGVUZXh0KCkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWlzVGl0bGVPYmplY3QoKVwiIGNsYXNzPVwibWV0cmljLWNhcmQtaGVhZGVyLXRleHRcIj5cbiAgICAgICAge3sgY2FyZERhdGEudGl0bGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCIgW25nU3R5bGVdPVwiZ2V0VmFsdWVTdHlsZXMoKVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiaXNMYWJlbE9uTGVmdCgpXCJcbiAgICAgICAgICBjbGFzcz1cInZhbHVlLWxhYmVsXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlcygnbGVmdCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldExhYmVsVGV4dCgpIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJnZXRWYWx1ZVN0eWxlcygpXCI+e3sgZ2V0VmFsdWVUZXh0KCkgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImlzTGFiZWxPblJpZ2h0KClcIlxuICAgICAgICAgIGNsYXNzPVwidmFsdWUtbGFiZWxcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGVzKCdyaWdodCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldExhYmVsVGV4dCgpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY2FyZERhdGEuZGl2aWRlcj8uc2hvd1wiXG4gICAgICAgIGNsYXNzPVwibWV0cmljLWRpdmlkZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogY2FyZERhdGEuZGl2aWRlcj8uY29sb3IgfHwgJyNlMmU4ZjAnIH1cIlxuICAgICAgPjwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpXCJcbiAgICAgICAgY2xhc3M9XCJtZXRyaWMtYWRkaXRpb25hbC1pbmZvXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0QWRkaXRpb25hbEluZm9TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGdldEFkZGl0aW9uYWxJbmZvVGV4dCgpIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpXCJcbiAgICAgICAgY2xhc3M9XCJtZXRyaWMtYWRkaXRpb25hbC1pbmZvXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0QWRkaXRpb25hbEluZm9TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGNhcmREYXRhLmFkZGl0aW9uYWxJbmZvIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWV0cmljLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9wdC1tZXRyaWMtY2FyZC9wdC1tZXRyaWMtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1ldHJpYy1jYXJkL3B0LW1ldHJpYy1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFjakQsTUFBTSxPQUFPLHFCQUFxQjthQUNSLHVCQUFrQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQy9CLHNCQUFpQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzNCLHdCQUFtQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQ2hDLHVCQUFrQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzVCLHdCQUFtQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQ2hDLHVCQUFrQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzVCLHdCQUFtQixHQUFHLFNBQVMsQUFBWixDQUFhO2FBQ2hDLHVCQUFrQixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQzVCLGtDQUE2QixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQ3ZDLGlDQUE0QixHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQ3RDLDZCQUF3QixHQUFHLE1BQU0sQUFBVCxDQUFVO0lBSTFELFlBQVk7UUFDVixPQUFPLENBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFD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QVUsSUFBSSxNQUFNO1NBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU87WUFDTCxlQUFlLEVBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZUFBZTtnQkFDekMscUJBQXFCLENBQUMsd0JBQXdCO1lBQ2hELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksTUFBTTtZQUNoRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQjtZQUM1RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLE1BQU07U0FDaEQsQ0FBQztJQUNKLENBQUM7K0dBNU9VLHFCQUFxQjttR0FBckIscUJBQXFCLHdGQ2RsQyx3b0VBNEVBOzs0RkQ5RGEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjs4QkFpQmpCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBMYWJlbFNldHRpbmcsXG4gIE1ldHJpY0NhcmREYXRhLFxuICBWYWx1ZVNldHRpbmcsXG4gIEljb25TdHlsZSxcbiAgVGV4dFN0eWxlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1tZXRyaWMtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1tZXRyaWMtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LW1ldHJpYy1jYXJkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFRNZXRyaWNDYXJkQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9JQ09OX0NPTE9SID0gJyM1YTY3ZDgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fU0laRSA9ICcyNHB4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9USVRMRV9DT0xPUiA9ICcjNWE2N2Q4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9USVRMRV9TSVpFID0gJzE2cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1ZBTFVFX0NPTE9SID0gJyMyZDM3NDgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1ZBTFVFX1NJWkUgPSAnMzJweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTEFCRUxfQ09MT1IgPSAnIzcxODA5Nic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTEFCRUxfU0laRSA9ICcxNHB4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BRERJVElPTkFMX0lORk9fQ09MT1IgPSAnZ3JheSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQURESVRJT05BTF9JTkZPX1NJWkUgPSAnMTRweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQkFDS0dST1VORF9DT0xPUiA9ICcjZmZmJztcblxuICBASW5wdXQoKSBjYXJkRGF0YSE6IE1ldHJpY0NhcmREYXRhO1xuXG4gIGlzSWNvbk9iamVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHRoaXMuY2FyZERhdGEuaWNvbiA9PT0gJ29iamVjdCcgJiYgdGhpcy5jYXJkRGF0YS5pY29uICE9PSBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGlzVGl0bGVPYmplY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB0aGlzLmNhcmREYXRhLnRpdGxlID09PSAnb2JqZWN0JyAmJiB0aGlzLmNhcmREYXRhLnRpdGxlICE9PSBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGlzVmFsdWVPYmplY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB0aGlzLmNhcmREYXRhLnZhbHVlID09PSAnb2JqZWN0JyAmJiB0aGlzLmNhcmREYXRhLnZhbHVlICE9PSBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGlzTGFiZWxPYmplY3QobGFiZWw6IExhYmVsU2V0dGluZyB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdvYmplY3QnICYmIGxhYmVsICE9PSBudWxsO1xuICB9XG5cbiAgaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHRoaXMuY2FyZERhdGEuYWRkaXRpb25hbEluZm8gPT09ICdvYmplY3QnICYmXG4gICAgICB0aGlzLmNhcmREYXRhLmFkZGl0aW9uYWxJbmZvICE9PSBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGdldEljb25UZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNJY29uT2JqZWN0KClcbiAgICAgID8gKHRoaXMuY2FyZERhdGEuaWNvbiBhcyBJY29uU3R5bGUpLmNvZGVcbiAgICAgIDogKHRoaXMuY2FyZERhdGEuaWNvbiBhcyBzdHJpbmcpO1xuICB9XG5cbiAgZ2V0VGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUaXRsZU9iamVjdCgpXG4gICAgICA/ICh0aGlzLmNhcmREYXRhLnRpdGxlIGFzIFRleHRTdHlsZSkudGV4dFxuICAgICAgOiAodGhpcy5jYXJkRGF0YS50aXRsZSBhcyBzdHJpbmcpIHx8ICcnO1xuICB9XG5cbiAgZ2V0VmFsdWVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWx1ZU9iamVjdCgpXG4gICAgICA/ICh0aGlzLmNhcmREYXRhLnZhbHVlIGFzIFZhbHVlU2V0dGluZykudGV4dFxuICAgICAgOiAodGhpcy5jYXJkRGF0YS52YWx1ZSBhcyBzdHJpbmcpIHx8ICcnO1xuICB9XG5cbiAgZ2V0TGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFiZWwgPSAodGhpcy5jYXJkRGF0YS52YWx1ZSBhcyBWYWx1ZVNldHRpbmcpPy5sYWJlbDtcbiAgICByZXR1cm4gdGhpcy5pc0xhYmVsT2JqZWN0KGxhYmVsKVxuICAgICAgPyAobGFiZWwgYXMgTGFiZWxTZXR0aW5nKS50ZXh0XG4gICAgICA6IChsYWJlbCBhcyBzdHJpbmcpIHx8ICcnO1xuICB9XG5cbiAgZ2V0QWRkaXRpb25hbEluZm9UZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpXG4gICAgICA/ICh0aGlzLmNhcmREYXRhLmFkZGl0aW9uYWxJbmZvIGFzIFRleHRTdHlsZSkudGV4dFxuICAgICAgOiAodGhpcy5jYXJkRGF0YS5hZGRpdGlvbmFsSW5mbyBhcyBzdHJpbmcpIHx8ICcnO1xuICB9XG5cbiAgZ2V0SWNvblN0eWxlcygpIHtcbiAgICBpZiAodGhpcy5pc0ljb25PYmplY3QoKSkge1xuICAgICAgY29uc3QgaWNvbiA9IHRoaXMuY2FyZERhdGEuaWNvbiBhcyBJY29uU3R5bGU7XG4gICAgICBjb25zdCBzaGFwZSA9IGljb24uc2hhcGUgfHwgJ2NpcmN1bGFyJztcbiAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IHNoYXBlID09PSAnY2lyY3VsYXInID8gJzUwJScgOiAnOHB4JztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IGljb24uY29sb3IgfHwgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgICAgZm9udFNpemU6IGljb24uZm9udFNpemUgfHwgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfSUNPTl9TSVpFLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGljb24uYmFja2dyb3VuZENvbG9yIHx8ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgcGFkZGluZzogJzZweCcsXG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBnZXRUaXRsZVN0eWxlcygpIHtcbiAgICBpZiAodGhpcy5pc1RpdGxlT2JqZWN0KCkpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5jYXJkRGF0YS50aXRsZSBhcyBUZXh0U3R5bGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiB0aXRsZS5jb2xvciB8fCBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9USVRMRV9DT0xPUixcbiAgICAgICAgZm9udFNpemU6IHRpdGxlLmZvbnRTaXplIHx8IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX1RJVExFX1NJWkUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRpdGxlLmZvbnRXZWlnaHQgfHwgJ25vcm1hbCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGdldFZhbHVlU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzVmFsdWVPYmplY3QoKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNhcmREYXRhLnZhbHVlIGFzIFZhbHVlU2V0dGluZztcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdmFsdWUucG9zaXRpb24gfHwgJ2xlZnQnO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogdmFsdWUuY29sb3IgfHwgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfVkFMVUVfQ09MT1IsXG4gICAgICAgIGZvbnRTaXplOiB2YWx1ZS5mb250U2l6ZSB8fCBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9WQUxVRV9TSVpFLFxuICAgICAgICBmb250V2VpZ2h0OiB2YWx1ZS5mb250V2VpZ2h0IHx8ICdib2xkJyxcbiAgICAgICAgdGV4dEFsaWduOiBwb3NpdGlvbixcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDpcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gJ2NlbnRlcidcbiAgICAgICAgICAgIDogcG9zaXRpb24gPT09ICdyaWdodCdcbiAgICAgICAgICAgICAgPyAnZmxleC1lbmQnXG4gICAgICAgICAgICAgIDogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9WQUxVRV9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9WQUxVRV9TSVpFLFxuICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LXN0YXJ0JyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIH07XG4gIH1cblxuICBnZXRWYWx1ZVRleHRTdHlsZXMoKSB7XG4gICAgaWYgKHRoaXMuaXNWYWx1ZU9iamVjdCgpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY2FyZERhdGEudmFsdWUgYXMgVmFsdWVTZXR0aW5nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0QWxpZ246IHZhbHVlLnBvc2l0aW9uIHx8ICdsZWZ0JyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgIH07XG4gIH1cblxuICBnZXRMYWJlbFN0eWxlcyhwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0Jykge1xuICAgIGNvbnN0IGxhYmVsID0gKHRoaXMuY2FyZERhdGEudmFsdWUgYXMgVmFsdWVTZXR0aW5nKT8ubGFiZWw7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmlzTGFiZWxPYmplY3QobGFiZWwpICYmXG4gICAgICAobGFiZWwgYXMgTGFiZWxTZXR0aW5nKS5wb3NpdGlvbiA9PT0gcG9zaXRpb25cbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOlxuICAgICAgICAgIChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLmNvbG9yIHx8XG4gICAgICAgICAgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfTEFCRUxfQ09MT1IsXG4gICAgICAgIGZvbnRTaXplOlxuICAgICAgICAgIChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLmZvbnRTaXplIHx8XG4gICAgICAgICAgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfTEFCRUxfU0laRSxcbiAgICAgICAgZm9udFdlaWdodDogKGxhYmVsIGFzIExhYmVsU2V0dGluZykuZm9udFdlaWdodCB8fCAnbm9ybWFsJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9MQUJFTF9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9MQUJFTF9TSVpFLFxuICAgICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgfTtcbiAgfVxuXG4gIGdldEFkZGl0aW9uYWxJbmZvU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzQWRkaXRpb25hbEluZm9PYmplY3QoKSkge1xuICAgICAgY29uc3QgYWRkaXRpb25hbEluZm8gPSB0aGlzLmNhcmREYXRhLmFkZGl0aW9uYWxJbmZvIGFzIFRleHRTdHlsZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6XG4gICAgICAgICAgYWRkaXRpb25hbEluZm8uY29sb3IgfHxcbiAgICAgICAgICBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9BRERJVElPTkFMX0lORk9fQ09MT1IsXG4gICAgICAgIGZvbnRTaXplOlxuICAgICAgICAgIGFkZGl0aW9uYWxJbmZvLmZvbnRTaXplIHx8XG4gICAgICAgICAgUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfQURESVRJT05BTF9JTkZPX1NJWkUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IGFkZGl0aW9uYWxJbmZvLmZvbnRXZWlnaHQgfHwgJ25vcm1hbCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogUFRNZXRyaWNDYXJkQ29tcG9uZW50LkRFRkFVTFRfQURESVRJT05BTF9JTkZPX0NPTE9SLFxuICAgICAgZm9udFNpemU6IFBUTWV0cmljQ2FyZENvbXBvbmVudC5ERUZBVUxUX0FERElUSU9OQUxfSU5GT19TSVpFLFxuICAgICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgfTtcbiAgfVxuXG4gIGlzTGFiZWxPbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFiZWwgPSAodGhpcy5jYXJkRGF0YS52YWx1ZSBhcyBWYWx1ZVNldHRpbmcpPy5sYWJlbDtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzTGFiZWxPYmplY3QobGFiZWwpICYmIChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLnBvc2l0aW9uID09PSAnbGVmdCdcbiAgICApO1xuICB9XG5cbiAgaXNMYWJlbE9uUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFiZWwgPSAodGhpcy5jYXJkRGF0YS52YWx1ZSBhcyBWYWx1ZVNldHRpbmcpPy5sYWJlbDtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzTGFiZWxPYmplY3QobGFiZWwpICYmIChsYWJlbCBhcyBMYWJlbFNldHRpbmcpLnBvc2l0aW9uID09PSAncmlnaHQnXG4gICAgKTtcbiAgfVxuXG4gIGdldE1ldHJpY0NhcmRDb250YWluZXJTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWluV2lkdGg6IHRoaXMuY2FyZERhdGEuc2l6ZT8ubWluV2lkdGggfHwgJzEwMCUnLFxuICAgICAgbWF4V2lkdGg6IHRoaXMuY2FyZERhdGEuc2l6ZT8ubWF4V2lkdGggfHwgJ2NhbGMoMjUlIC0gMTZweCknLFxuICAgICAgd2lkdGg6IHRoaXMuY2FyZERhdGEuc2l6ZT8uZml4ZWRXaWR0aCB8fCAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1ldHJpY0NhcmRTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmFja2dyb3VuZENvbG9yOlxuICAgICAgICB0aGlzLmNhcmREYXRhLmFwcGVhcmFuY2U/LmJhY2tncm91bmRDb2xvciB8fFxuICAgICAgICBQVE1ldHJpY0NhcmRDb21wb25lbnQuREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SLFxuICAgICAgbWluV2lkdGg6IHRoaXMuY2FyZERhdGEuc2l6ZT8ubWluV2lkdGggfHwgJzEwMCUnLFxuICAgICAgbWF4V2lkdGg6IHRoaXMuY2FyZERhdGEuc2l6ZT8ubWF4V2lkdGggfHwgJ2NhbGMoMjUlIC0gMTZweCknLFxuICAgICAgd2lkdGg6IHRoaXMuY2FyZERhdGEuc2l6ZT8uZml4ZWRXaWR0aCB8fCAnYXV0bycsXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cImdldE1ldHJpY0NhcmRDb250YWluZXJTdHlsZSgpXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cImNhcmREYXRhLnZlcnRpY2FsTGluZT8uc2hvd1wiXG4gICAgY2xhc3M9XCJ2ZXJ0aWNhbC1saW5lXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGNhcmREYXRhLnZlcnRpY2FsTGluZT8uY29sb3IgfHwgJyM1YTY3ZDgnLFxuICAgIH1cIlxuICA+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCIgW25nU3R5bGVdPVwiZ2V0TWV0cmljQ2FyZFN0eWxlKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmQtaGVhZGVyXCI+XG4gICAgICA8aVxuICAgICAgICAqbmdJZj1cImlzSWNvbk9iamVjdCgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SWNvblRleHQoKVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldEljb25TdHlsZXMoKVwiXG4gICAgICA+PC9pPlxuICAgICAgPGkgKm5nSWY9XCIhaXNJY29uT2JqZWN0KClcIiBbbmdDbGFzc109XCJjYXJkRGF0YS5pY29uXCI+PC9pPlxuXG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cImlzVGl0bGVPYmplY3QoKVwiXG4gICAgICAgIGNsYXNzPVwibWV0cmljLWNhcmQtaGVhZGVyLXRleHRcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRUaXRsZVN0eWxlcygpXCJcbiAgICAgID5cbiAgICAgICAge3sgZ2V0VGl0bGVUZXh0KCkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWlzVGl0bGVPYmplY3QoKVwiIGNsYXNzPVwibWV0cmljLWNhcmQtaGVhZGVyLXRleHRcIj5cbiAgICAgICAge3sgY2FyZERhdGEudGl0bGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCIgW25nU3R5bGVdPVwiZ2V0VmFsdWVTdHlsZXMoKVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiaXNMYWJlbE9uTGVmdCgpXCJcbiAgICAgICAgICBjbGFzcz1cInZhbHVlLWxhYmVsXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlcygnbGVmdCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldExhYmVsVGV4dCgpIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy12YWx1ZS10ZXh0XCIgW25nU3R5bGVdPVwiZ2V0VmFsdWVUZXh0U3R5bGVzKClcIj5cbiAgICAgICAgICB7eyBnZXRWYWx1ZVRleHQoKSB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImlzTGFiZWxPblJpZ2h0KClcIlxuICAgICAgICAgIGNsYXNzPVwidmFsdWUtbGFiZWxcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGVzKCdyaWdodCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldExhYmVsVGV4dCgpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY2FyZERhdGEuZGl2aWRlcj8uc2hvd1wiXG4gICAgICAgIGNsYXNzPVwibWV0cmljLWRpdmlkZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogY2FyZERhdGEuZGl2aWRlcj8uY29sb3IgfHwgJyNlMmU4ZjAnIH1cIlxuICAgICAgPjwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpXCJcbiAgICAgICAgY2xhc3M9XCJtZXRyaWMtYWRkaXRpb25hbC1pbmZvXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0QWRkaXRpb25hbEluZm9TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGdldEFkZGl0aW9uYWxJbmZvVGV4dCgpIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaXNBZGRpdGlvbmFsSW5mb09iamVjdCgpXCJcbiAgICAgICAgY2xhc3M9XCJtZXRyaWMtYWRkaXRpb25hbC1pbmZvXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0QWRkaXRpb25hbEluZm9TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGNhcmREYXRhLmFkZGl0aW9uYWxJbmZvIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2808,19 +2808,20 @@ class PTMetricCardComponent {
2808
2808
  static { this.DEFAULT_ADDITIONAL_INFO_SIZE = '14px'; }
2809
2809
  static { this.DEFAULT_BACKGROUND_COLOR = '#fff'; }
2810
2810
  isIconObject() {
2811
- return typeof this.cardData.icon === 'object';
2811
+ return (typeof this.cardData.icon === 'object' && this.cardData.icon !== null);
2812
2812
  }
2813
2813
  isTitleObject() {
2814
- return typeof this.cardData.title === 'object';
2814
+ return (typeof this.cardData.title === 'object' && this.cardData.title !== null);
2815
2815
  }
2816
2816
  isValueObject() {
2817
- return typeof this.cardData.value === 'object';
2817
+ return (typeof this.cardData.value === 'object' && this.cardData.value !== null);
2818
2818
  }
2819
2819
  isLabelObject(label) {
2820
- return typeof label === 'object';
2820
+ return typeof label === 'object' && label !== null;
2821
2821
  }
2822
2822
  isAdditionalInfoObject() {
2823
- return typeof this.cardData.additionalInfo === 'object';
2823
+ return (typeof this.cardData.additionalInfo === 'object' &&
2824
+ this.cardData.additionalInfo !== null);
2824
2825
  }
2825
2826
  getIconText() {
2826
2827
  return this.isIconObject()
@@ -2830,35 +2831,34 @@ class PTMetricCardComponent {
2830
2831
  getTitleText() {
2831
2832
  return this.isTitleObject()
2832
2833
  ? this.cardData.title.text
2833
- : this.cardData.title;
2834
+ : this.cardData.title || '';
2834
2835
  }
2835
2836
  getValueText() {
2836
2837
  return this.isValueObject()
2837
2838
  ? this.cardData.value.text
2838
- : this.cardData.value;
2839
+ : this.cardData.value || '';
2839
2840
  }
2840
2841
  getLabelText() {
2841
2842
  const label = this.cardData.value?.label;
2842
2843
  return this.isLabelObject(label)
2843
2844
  ? label.text
2844
- : label;
2845
+ : label || '';
2845
2846
  }
2846
2847
  getAdditionalInfoText() {
2847
2848
  return this.isAdditionalInfoObject()
2848
2849
  ? this.cardData.additionalInfo.text
2849
- : this.cardData.additionalInfo;
2850
+ : this.cardData.additionalInfo || '';
2850
2851
  }
2851
2852
  getIconStyles() {
2852
2853
  if (this.isIconObject()) {
2853
2854
  const icon = this.cardData.icon;
2854
- const shape = icon.shape || 'circular'; // Default to 'circular' if not specified
2855
- // Determine border radius based on shape
2855
+ const shape = icon.shape || 'circular';
2856
2856
  const borderRadius = shape === 'circular' ? '50%' : '8px';
2857
2857
  return {
2858
2858
  color: icon.color || PTMetricCardComponent.DEFAULT_ICON_COLOR,
2859
2859
  fontSize: icon.fontSize || PTMetricCardComponent.DEFAULT_ICON_SIZE,
2860
- 'background-color': icon.backgroundColor || 'transparent',
2861
- 'border-radius': borderRadius,
2860
+ backgroundColor: icon.backgroundColor || 'transparent',
2861
+ borderRadius,
2862
2862
  padding: '6px',
2863
2863
  display: 'inline-block',
2864
2864
  };
@@ -2879,19 +2879,43 @@ class PTMetricCardComponent {
2879
2879
  getValueStyles() {
2880
2880
  if (this.isValueObject()) {
2881
2881
  const value = this.cardData.value;
2882
+ const position = value.position || 'left';
2882
2883
  return {
2883
2884
  color: value.color || PTMetricCardComponent.DEFAULT_VALUE_COLOR,
2884
2885
  fontSize: value.fontSize || PTMetricCardComponent.DEFAULT_VALUE_SIZE,
2885
2886
  fontWeight: value.fontWeight || 'bold',
2887
+ textAlign: position,
2888
+ width: '100%',
2889
+ display: 'flex',
2890
+ justifyContent: position === 'center'
2891
+ ? 'center'
2892
+ : position === 'right'
2893
+ ? 'flex-end'
2894
+ : 'flex-start',
2895
+ alignItems: 'center',
2886
2896
  };
2887
2897
  }
2888
- else {
2898
+ return {
2899
+ color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,
2900
+ fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,
2901
+ fontWeight: 'bold',
2902
+ textAlign: 'left',
2903
+ width: '100%',
2904
+ display: 'flex',
2905
+ justifyContent: 'flex-start',
2906
+ alignItems: 'center',
2907
+ };
2908
+ }
2909
+ getValueTextStyles() {
2910
+ if (this.isValueObject()) {
2911
+ const value = this.cardData.value;
2889
2912
  return {
2890
- color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,
2891
- fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,
2892
- fontWeight: 'bold',
2913
+ textAlign: value.position || 'left',
2893
2914
  };
2894
2915
  }
2916
+ return {
2917
+ textAlign: 'left',
2918
+ };
2895
2919
  }
2896
2920
  getLabelStyles(position) {
2897
2921
  const label = this.cardData.value?.label;
@@ -2905,13 +2929,11 @@ class PTMetricCardComponent {
2905
2929
  fontWeight: label.fontWeight || 'normal',
2906
2930
  };
2907
2931
  }
2908
- else {
2909
- return {
2910
- color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,
2911
- fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,
2912
- fontWeight: 'normal',
2913
- };
2914
- }
2932
+ return {
2933
+ color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,
2934
+ fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,
2935
+ fontWeight: 'normal',
2936
+ };
2915
2937
  }
2916
2938
  getAdditionalInfoStyles() {
2917
2939
  if (this.isAdditionalInfoObject()) {
@@ -2924,13 +2946,11 @@ class PTMetricCardComponent {
2924
2946
  fontWeight: additionalInfo.fontWeight || 'normal',
2925
2947
  };
2926
2948
  }
2927
- else {
2928
- return {
2929
- color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,
2930
- fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,
2931
- fontWeight: 'normal',
2932
- };
2933
- }
2949
+ return {
2950
+ color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,
2951
+ fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,
2952
+ fontWeight: 'normal',
2953
+ };
2934
2954
  }
2935
2955
  isLabelOnLeft() {
2936
2956
  const label = this.cardData.value?.label;
@@ -2942,26 +2962,26 @@ class PTMetricCardComponent {
2942
2962
  }
2943
2963
  getMetricCardContainerStyle() {
2944
2964
  return {
2945
- 'min-width': this.cardData.size?.minWidth || '100%',
2946
- 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',
2965
+ minWidth: this.cardData.size?.minWidth || '100%',
2966
+ maxWidth: this.cardData.size?.maxWidth || 'calc(25% - 16px)',
2947
2967
  width: this.cardData.size?.fixedWidth || 'auto',
2948
2968
  };
2949
2969
  }
2950
2970
  getMetricCardStyle() {
2951
2971
  return {
2952
- 'background-color': this.cardData.appearance?.backgroundColor ||
2972
+ backgroundColor: this.cardData.appearance?.backgroundColor ||
2953
2973
  PTMetricCardComponent.DEFAULT_BACKGROUND_COLOR,
2954
- 'min-width': this.cardData.size?.minWidth || '100%',
2955
- 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',
2974
+ minWidth: this.cardData.size?.minWidth || '100%',
2975
+ maxWidth: this.cardData.size?.maxWidth || 'calc(25% - 16px)',
2956
2976
  width: this.cardData.size?.fixedWidth || 'auto',
2957
2977
  };
2958
2978
  }
2959
2979
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMetricCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2960
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMetricCardComponent, selector: "pt-metric-card", inputs: { cardData: "cardData" }, ngImport: i0, template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8'\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between}.metric-number{font-weight:700}.metric-label{margin-left:8px}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}.metric-card-header-text{margin-left:6px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2980
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMetricCardComponent, selector: "pt-metric-card", inputs: { cardData: "cardData" }, ngImport: i0, template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8',\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span class=\"metric-value-text\" [ngStyle]=\"getValueTextStyles()\">\n {{ getValueText() }}\n </span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0;width:100%}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-header-text{margin-left:6px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between;width:100%;flex:1}.metric-value{width:100%;display:flex;align-items:center;gap:6px;box-sizing:border-box}.metric-value-text{display:inline-block;width:100%;line-height:1.2}.metric-number{font-weight:700}.metric-label,.value-label{margin-left:8px;white-space:nowrap}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2961
2981
  }
2962
2982
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMetricCardComponent, decorators: [{
2963
2983
  type: Component,
2964
- args: [{ selector: 'pt-metric-card', template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8'\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between}.metric-number{font-weight:700}.metric-label{margin-left:8px}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}.metric-card-header-text{margin-left:6px}\n"] }]
2984
+ args: [{ selector: 'pt-metric-card', template: "<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8',\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span class=\"metric-value-text\" [ngStyle]=\"getValueTextStyles()\">\n {{ getValueText() }}\n </span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".metric-card-container{display:flex;align-items:stretch;box-sizing:border-box}.vertical-line{width:4px;border-radius:8px 0 0 8px;margin-right:-4px;z-index:2}.metric-card{background-color:#fff;border-radius:5px;box-shadow:0 1px 3px #0000001a;padding:16px;display:flex;flex-direction:column;box-sizing:border-box;margin-left:0;width:100%}.metric-card-header{display:flex;align-items:center;margin-bottom:16px}.metric-card-header i.icon-text{margin-right:8px}.metric-card-header-text{margin-left:6px}.metric-card-content{display:flex;flex-direction:column;justify-content:space-between;width:100%;flex:1}.metric-value{width:100%;display:flex;align-items:center;gap:6px;box-sizing:border-box}.metric-value-text{display:inline-block;width:100%;line-height:1.2}.metric-number{font-weight:700}.metric-label,.value-label{margin-left:8px;white-space:nowrap}.metric-divider{width:100%;height:1px;margin:16px 0}.metric-additional-info{margin-top:8px}\n"] }]
2965
2985
  }], propDecorators: { cardData: [{
2966
2986
  type: Input
2967
2987
  }] } });